Académique Documents
Professionnel Documents
Culture Documents
Vue d’ensemble
Ce chapitre détaille la première partie d’un algorithme : la déclaration des variables. Il
apporte des réponses aux questions suivantes : C’est quoi une variable ? Pourquoi on a
besoin des variables ? Comment déclarer une variable ?
Pour ceci, il présente les différents types que peut avoir une variable et les opérations qu’on
peut effectuer sur ces dernières. Tout ceci dans le but de faire comprendre la démarche de
programmation.
La deuxième partie de ce chapitre est consacrée à une notion importante en algorithmique :
les traitements ou instructions (affectation, lecture, écriture).
Objectifs spécifiques
A la fin de ce chapitre, les étudiants auront les connaissances nécessaires pour :
Connaître l’utilité des variables,
Déclarer les variables avec les types adéquats,
Connaitre les opérations possibles sur les variables.
Affecter les bonnes valeurs aux variables déclarées.
Tracer l’exécution d’un algorithme donné.
Utiliser les instructions simples d’écriture et de lecture.
Ecrire des petits algorithmes.
Pré-requis
Néant
Volume horaire
4.5 heures
Eléments du contenu
Utilité des variables,
Déclaration des variables,
Types et opérations en algorithmique,
Types et opérations en C,
L’instruction d’affectation,
L’instruction de lecture,
L’instruction d’écriture,
Applications.
Début
Partie corps de
{Séquence d’actions} l’algorithme
Fin
Comme vu dans le chapitre précédent, la déclaration des variables se fait au tout début de
l’algorithme (partie déclarative), avant les instructions (partie corps de l’algorithme).
Lorsqu’on déclare une variable, on doit penser à ce que l’on va mettre dedans (type de
données), car de cela dépendent la taille de l’emplacement mémoire et le type de codage
utilisé.
Syntaxe en algorithmique
Var
nom_de_variable1 : type_de_variable1
nom_de_variable2 : type_de_variable2
…
nom_de_variableN : type_de_variableN
Avec :
nom_de_variable : le nom qu’on donne à la variable. Il doit être en français et il
ne doit pas contenir des caractères spéciaux tel que , : . Espace.
type_de_variable : le type parmi les types qu’on va définir ultérieurement.
Exemple
Var
v : entier
x, y : réel
Syntaxe en C
Type1 nom_de_variable1 ;
Type2 nom_de_variable2 ;
……
TypeN nom_de_variableN ;
Avec :
type : le type parmi les types qu’on va définir ultérieurement.
nom_de_variable : le nom qu’on donne à la variable. Il doit être en français et il
ne doit pas contenir des caractères spéciaux tel que , : . Espace.
Exemple
int v ;
float x, y ;
3. Les constantes
Une constante, comme son nom l’indique, est un objet ayant un contenu non modifiable.
Syntaxe en algorithmique
Const
nom_de_la_constante = valeur
Exemple
Const
pi=3.14
Syntaxe en C
Const type nom_de_la_constante = valeur ;
Exemple
Const float pi=3.14 ;
Si l’on réserve un octet pour coder un nombre, qu’on ne pourra coder que 2 8 = 256 valeurs
différentes. Cela peut signifier par exemple les nombres entiers de 1 à 256, ou de 0 à 255, ou
de –127 à +128… Si l’on réserve deux octets, on a droit à 65 536 valeurs ; avec trois octets,
16 777 216, etc.
Le type de codage (autrement dit, le type de variable) choisi pour un nombre va déterminer :
les valeurs maximales et minimales des nombres pouvant être stockés dans la
variable.
La précision de ces nombres.
Ce jeu de caractère est codé sur 8 bits (un octet) dont les 128 premiers caractères
correspondent au code ASCII, les 128 derniers étant utilisés pour coder les caractères
spécifiques (accentués, de la langue arabe, etc.).
Il existe des caractères non imprimables: caractères de changement de ligne (\n), tabulation
(\t), etc
Il existe une conversion systématique de char en int. Une valeur de type caractère peut être
considérée:
Comme le caractère concerné (a, z, \n)
Comme le code de ce caractère: ex: 1000001 => 65 => caractère A (en ASCII)
Exemple :
#include<stdio.h>
void main()
{
char x = ‘A’;
printf(“ %c “, x);
}
Ce programme affiche le caractère A
Remarque :
Le langage C ne fournit pas de type booléen. On travaille dans ce cas avec des entiers en
utilisant la convention suivante : la valeur nulle représente la constante booléenne faux (ou
false), toute autre valeur sera assimilée à la constante vrai (ou true).
Un nombre réel sera représenté en flottant. Le C prévoit trois types de flottants: float, double
et long double
Les constantes flottantes peuvent s’écrire indifféremment suivant l’une des deux notations:
Décimale
Exponentielle
Remarque :
Une comparaison peut porter sur deux caractères :
c1==c2 est vrai si c1 et c2 contiennent le même caractère
c1==‘e’ est vrai si c1 contient le caractère ‘e’ (code de c1 est égal au code de ‘e’)
c1<c2 est vrai si le code de c1 a une valeur inférieure au code de c2 (le résultat de
cette comparaison varie selon le codage employé)
Exemple:
#include <stdio.h>
void main()
{
char c1=’1’, c2=’a’;
if(c1< c2) printf(“ inf ”);
else printf (“ sup ”);
}
Ce programme affiche inf
L’ordre alphabétique est respecté pour les minuscules et majuscules ‘a’ < ‘b’
Les chiffres sont classés par ordre naturel ‘2’<‘ 3’
1. L’affectation
C’est l’action de charger une valeur dans une variable. Cette valeur peut elle-même être une
variable, le résultat d’une expression arithmétique ou logique ou une constante.
Syntaxe en algorithmique
Identificateur_var <expression>
Syntaxe en C
Identificateur_var = <expression>
Remarque
Une constante ne peut jamais figurer à gauche d’une affectation.
Après une affectation, l’ancien contenu est perdu pour être substitué par le nouveau
contenu.
Une action d’affectation doit se faire entre deux types compatibles.
Exemple 2
A 3
B S+2
C B
D C+5
Remarque: on ne peut pas écrire A+B 4
Exemple 3
Algorithme exemple_3
Var X, Y : entier
Début
X12
Y X+4
X 3
Fin
Valeur de X Valeur de Y
Instruction 1 : 12 ---
Instruction 2 : 12 16
Instruction 3 :3 16
Exercice
Soient 3 variables A, B, et C. Ecrire une séquence d’instructions permettant de faire une
permutation circulaire de sorte que la valeur de A passe dans B, celle de B passe dans A. On
utilisera une seule variable supplémentaire.
Solution :
X C
C B
B A
A X
Remarque :
i=i+1 ; equivalent à i++ ; equivalent à ++i ;
i=i-1 ; equivalent à i--; equivalent à --i ;
Exemple:
void main()
{
int n, i=5;
n= ++i -5 ;
printf("i: %d et n: %d",i,n); /* affichage i:6 et n: 1*/
i=5;
n= i++ -5 ;
printf("\n i: %d et n : %d",i,n); /*affichage i:6 et n: 0*/
}
2. La lecture
C’est une opération d’entrée.
L'ordre LIRE permet à l'ordinateur d’acquérir des données à partir de l’utilisateur, dans des
cases mémoire bien définies (qui sont les variables déclarées). On rappelle que les variables
sont des cases mémoire, supposées contenir un type de données, nommées par le nom de
variable.
Syntaxe en algorithmique
LIRE (variable 1, variable 2, …, variable N)
Equivalente à
LIRE (variable 1)
LIRE (variable 2)
………
LIRE (variable N)
Exemple :
Lire(A) : lit une valeur à partir du périphérique d’entrée et la range dans la case mémoire
associée à A.
Remarques
La saisie se fait uniquement dans des variables. Ce sont les cases (cellules) qui pourront
accueillir les données correspondantes.
La donnée à introduire doit être de même type que la variable réceptrice.
Syntaxe
getchar () ;
Cette fonction lit le prochain caractère du clavier. En général, getchar est utilisé dans une
affectation:
char x;
x = getchar();
Exemple :
#include <stdio.h>
void main()
{
char x;
x=getchar();
putchar(x);
}
exécution si on saisit la lettre f : f
Avec :
"format" : format de lecture des données
adresse_variable1, … : adresses des variables auxquelles les données seront
attribuées
La fonction scanf reçoit ses données à partir du fichier d'entrée standard stdin (par défaut le
clavier).
La chaîne de format détermine comment les données reçues doivent être interprétées.
Les données reçues correctement sont mémorisées successivement aux adresses indiquées par
adresse_variable1, ….
L'adresse d'une variable est indiquée par le nom de la variable précédé du signe &.
Exemple 1 :
#include<stdio.h>
void main()
{
int n ;
printf(« saisir un entier ») ;
scanf(« %d »,&n) ;
printf(« l’entier est %d », n) ;
}
exécution : saisir un entier 5
l’entier est 5
Exemple 2 :
#include<stdio.h>
void main()
{
int n ;
float m ;
printf(« saisir un réel et un entier ») ;
scanf(« %f%d », &m,&n) ;
printf(« les valeurs sont %d et %f», n, m) ;
printf(« les valeurs sont %f et %d », m, n) ;
}
exécution : saisir un réel et un entier 3.6
7
Remarque :
Pour tous les spécificateurs, nous pouvons indiquer la largeur maximale du champ à évaluer
pour une donnée. Les chiffres qui passent au-delà du champ défini sont attribués à la
prochaine variable qui sera lue.
Exemple :
Soient les instructions:
int A,B;
scanf("%4d%2d", &A, &B);
Remarque :
putchar(x); équivalent à printf(« %c »,x);
x=getchar(); équivalent à scanf(« %c »,&x) ;
3. L’écriture
C’est une opération de sortie.
Elle permet d’afficher des résultats sur un périphérique de sortie (écran). Ce résultat peut être:
Une chaîne de caractères délimitée par des " ".
La valeur d’une variable dont le nom est spécifié
La valeur d’une expression
.Syntaxe en algorithmique
Ecrire (var) {afficher sur l’écran la valeur contenue dans la variable var.}
Ecrire (" message ") {afficher à l’écran la chaîne message}.
Ecrire (" message ", var) {afficher à l’écran le message puis la valeur contenue
dans la variable var}.
Ecrire (" message ", expression) {afficher à l’écran le message puis le
résultat de l’expression}.
Exemple 1
Ecrire (" La valeur est égale à : ", 3*2)
Message Expression
Ecrire (" La moyenne est = ", MOY)
Message Variable
Exemple 2
Lire (somme)
Lire(Nbre)
Ecrire ("La moyenne est : ", somme / Nbre)
Si l’utilisateur introduit 120 pour somme et 10 pour Nbre alors l’affichage sera : La moyenne
est 12.
Elle permet de convertir des arguments en chaînes de caractères relativement à des spécifications
de conversion.
Syntaxe
printf (format, liste d’expressions)
Avec
format : chaine entre « »
liste d’expressions : variables et expressions séparées par des virgules d’un
type en accord avec le format correspondant.
La partie « format » est en fait une chaîne de caractères qui peut contenir:
du texte
des séquences d'échappement
Les spécificateurs de format qui indiquent la manière dont les valeurs des
expressions <Expr1.. N> sont imprimées.
La partie "<format>" contient exactement un spécificateur de format pour chaque
expression <Expr1.. N>.
Les spécificateurs de format commencent toujours par le symbole % et se terminent
par un ou deux caractères qui indiquent le format d'impression.
Les spécificateurs de format impliquent une conversion d'un nombre en chaîne de
caractères. Ils sont encore appelés symboles de conversion.
Exemple 1:
#include<stdio.h>
void main()
{
printf(“ informatique appliquée “);
}
Exécution : informatique appliquée
Exemple 2 :
#include<stdio.h>
void main()
{
int n=5 ;
printf(“ la valeur de n est %d “, n );
}
Exécution : la valeur de n est 5
Exemple 3 :
#include<stdio.h>
void main()
{
int n=5 ;
float m=2.6 ;
printf(“ la valeur de n est %d et celle de m est %f “, n, m );
printf(“ la valeur de m est %f et celle de n est %d “, m, n );
}
Exécution : la valeur de n est 5 et celle de m est 2.6
la valeur de m est 2.6 et celle de n est 5
Exemple 1:
#include<stdio.h>
void main()
{
int i=3;
printf("%d%d%d",i,i,i);
}
exécution : 333
Exemple 2:
#include<stdio.h>
void main()
{
int i=3;
printf("%3d%3d%3d",i,i,i);
}
exécution : 3 3 3
Exemple 3:
#include<stdio.h>
void main()
{
int i=12345;
printf("%2d %2d %2d",i,i,i);
}
exécution : 12345 12345 12345
Exemple 4:
#include<stdio.h>
void main()
{
float x=12.5;
printf("%f %f",x,x);
}
exécution : 12.500000 12.500000
Exemple 5:
#include<stdio.h>
void main()
{
float x=12.5;
printf("%5.2f %5.2f",x,x);
}
exécution : 12.50 12.50
4. Applications
4.1. Application 1
Quel résultat produit le programme suivant ?
Algorithme valeur
Var
val, double : réel
Début
val231
doubleval*2
ecrire (" la valeur de val est : ", val)
ecrire (" la valeur de double est : ", double)
Fin
Correction
La valeur de val est : 231
La valeur de double est : 462
4.2. Application 2
Ecrire un algorithme qui demande un nombre à l’utilisateur puis qui calcule et affiche le
carré de ce nombre.
Correction
Algorithme carré
Var n, c : entier
Début
Ecrire (" donner un entier n ")
Lire (n)
cn*n
ecrire (" le carré est : ", c)
Fin
4.3. Application 3
Ecrire un algorithme qui lit le prix d’un article, le nombre d’articles et le taux de TVA et
qui fournit le prix total TTC correspondant sachant que :
Prix total TTC = prix unitaire * nbre*(1+TVA)
Correction
Algorithme calcul
Var Prix, TVA, nbr, TTC : réel
Début
Ecrire (" donner prix unitaire ")
Lire (Prix)
Ecrire (" donner TVA ")
Lire (TVA)
Ecrire (" donner le nombre d’articles ")
Lire (nbr)
TTCPrix * nbr*(1+TVA)
Ecrire (" le prix totale TTC est : ", TTC)
Fin