Académique Documents
Professionnel Documents
Culture Documents
1
Objectif et plan du cours
Objectif:
• Apprendre les concepts de base de l'algorithmique et de la
programmation
Plan:
• Généralités (matériel d’un ordinateur, systèmes d’exploitation, langages
de programmation, …)
• Langage C
2
Informatique?
Techniques du traitement automatique de l’information au
moyen des ordinateurs
Applications
(Word, Excel, Jeux, Maple, etc.)
Langages
(Java,C/C++, Fortran,etc.)
Système d’exploitation
(DOS,Windows, Unix, etc.)
Matériel
(PC, Macintosh, station SUN, etc.)
3
L’ordinateur
1. Ecran
2. Carte mère
3. Processeur
4. Mémoire vive (RAM)
5. Cartes (graphique, son,
réseau, …)
6. Alimentation
7. Lecteur/graveur CD/DVD
8. Disque Dur
9. Souris
10. Clavier
4
Définition et architecture (1)
« Un ordinateur est une machine servant à traiter des données. »
Périphériques Périphériques
d’entrées de sorties
BUS
Mémoire
Processeur
5
Définition et architecture (2)
Le processeur : traite les données en exécutant un
programme.
6
Matériel: Principaux éléments d’un PC
Périphériques
• Moniteur (l'écran), clavier, souris
• Modem, imprimante, scanner, …
7
L’OS
8
Qu’est ce qu’un système d’exploitation?
Ensemble de programmes qui gèrent le matériel et
contrôlent les applications
9
Langages informatiques
Un langage informatique est un outil permettant de
donner des ordres (instructions) à la machine
10
Langage machine
Langage binaire: l’information est exprimée et manipulée sous
forme d’une suite de bits
• Le code ASCII (American Standard Code for Information Interchange) donne les
correspondances entre les caractères alphanumériques et leurs
représentation binaire, Ex. A= 01000001, ?=00111111
11
L'assembleur
Problème: le langage machine est difficile à comprendre par l'humain
ADD A, 4
traducteur langage machine
LOAD B
MOV A, OUT
…
• +: déjà plus accessible que le langage machine
• -: dépend du type de la machine (n’est pas portable)
• -: pas assez efficace pour développer des applications complexes
13
Compilateur/interpréteur
Compilateur: traduire le programme entier une fois pour toutes
Compilateur exécution
exemple.c exemple
fichier source fichier exécutable
• + plus rapide à l’exécution
• + sécurité du code source
• - il faut recompiler à chaque modification
Exemples de langages:
• Fortran, Cobol, Pascal, C, …
• C++, Java, …
15
Etapes de réalisation d’un programme
Enoncé du problème
Spécification
Cahier des charges
Analyse
Algorithme
Traduction en langage
Programme source
Compilation
Programme exécutable
Tests et modifications
Version finale et résultats
Programmation
Bibliothèques de fonctions
Programme(s)
Code fonction i
…
Code fonction j
Compilation
Code objet /
machine
Programme
exécutable
(logiciel) Édition de liens
17
Algorithmique
Le terme algorithme vient du nom du mathématicien arabe
Al-Khawarizmi (820 après J.C.)
19
Algorithmique
20
Notion de variable
Dans les langages de programmation une variable sert à stocker
la valeur d’une donnée
21
Choix des identificateurs (1)
Le choix des noms de variables est soumis à quelques règles qui
varient selon le langage, mais en général:
Un nom doit commencer par une lettre alphabétique
exemple valide: A1 exemple invalide: 1A
22
Choix des identificateurs (2)
Conseil: pour la lisibilité du code choisir des noms significatifs
qui décrivent les données manipulées
exemples: TotalVentes2004, Prix_TTC, Prix_HT
23
Types des variables
Le type d’une variable détermine l’ensemble des valeurs qu’elle peut
prendre, les types offerts par la plus part des langages sont:
Type numérique (entier ou réel)
• Byte (codé sur 1octet): de 0 à 255
• Entier court (codé sur 2 octets) : -32 768 à 32 767
• Entier long (codé sur 4 ou 8 octets)
• Réel simple précision (codé sur 4 octets)
• Réel double précision (codé sur 8 octets)
Type logique ou booléen: deux valeurs VRAI ou FAUX
24
Déclaration des variables
Rappel: toute variable utilisée dans un programme doit avoir
fait l’objet d’une déclaration préalable
En pseudo-code, on va adopter la forme suivante pour la
déclaration de variables
Variables liste d'identificateurs : type
Exemple:
Variables i, j,k : entier
x, y : réel
OK: booléen
ch1, ch2 : chaîne de caractères
Ex valides: i ←1 j ←i k ←i+j
x ←10.3 OK ←FAUX ch1 ←"SMI"
ch2 ←ch1 x ←4 x ←j
(voir la déclaration des variables dans le transparent précédent)
non valides: i ←10.3 OK ←"SMI" j ←x
26
Quelques remarques
Beaucoup de langages de programmation (C/C++, Java, …) utilisent
le signe égal = pour l’affectation ←. Attention aux confusions:
27
Exercices simples sur l'affectation (1)
Donnez les valeurs des variables A, B et C après exécution
des instructions suivantes ?
Variables A, B, C: Entier
Début
A←3
B←7
A←B
B ← A+5
C←A+B
C←B–A
Fin
28
Exercices simples sur l'affectation (2)
Donnez les valeurs des variables A et B après exécution des
instructions suivantes ?
Variables A, B : Entier
Début
A←1
B←2
A←B
B←A
Fin
29
Exercices simples sur l'affectation (3)
30
Expressions et opérateurs
Une expression peut être une valeur, une variable ou une
opération constituée de variables reliées par des opérateurs
exemples: 1, b, a*2, a+ 3*b-c, …
• ^ : (élévation à la puissance)
• * , / (multiplication, division)
• % (modulo)
• + , - (addition, soustraction)
exemple: 2+3*7 vaut 23
32
Les instructions d'entrées-sorties:
lecture et écriture (1)
Les instructions de lecture et d'écriture permettent à la machine de
communiquer avec l'utilisateur
33
Les instructions d'entrées-sorties:
lecture et écriture (2)
34
Exemple (lecture et écriture)
Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis
qui calcule et affiche le double de ce nombre
Algorithme Calcul_double
variables A, B : entier
Début
écrire("entrer le nombre ")
lire(A)
B ← 2*A
écrire("le double de ", A, "est :", B)
Fin
35
Exercice (lecture et écriture)
Ecrire un algorithme qui vous demande de saisir votre nom puis
votre prénom et qui affiche ensuite votre nom complet
Algorithme AffichageNomComplet
variables Nom, Prenom, Nom_Complet : chaîne de caractères
Début
écrire("entrez votre nom")
lire(Nom)
écrire("entrez votre prénom")
lire(Prenom)
Nom_Complet ← Nom & Prenom
écrire("Votre nom complet est : ", Nom_Complet)
Fin
36
Tests: instructions conditionnelles (1)
Les instructions conditionnelles servent à n'exécuter une instruction
ou une séquence d'instructions que si une condition est vérifiée
Si condition alors
instruction ou suite d'instructions1
Finsi
38
Exemple (Si…Alors…Sinon)
Algorithme AffichageValeurAbsolue (version1)
Variable x : réel
Début
Ecrire (" Entrez un réel : “)
Lire (x)
Si (x < 0) alors
Ecrire ("la valeur absolue de ", x, "est:",-x)
Sinon
Ecrire ("la valeur absolue de ", x, "est:",x)
Finsi
Fin
39
Exemple (Si…Alors)
Algorithme AffichageValeurAbsolue (version2)
Variable x,y : réel
Début
Ecrire (" Entrez un réel : “)
Lire (x)
y← x
Si (x < 0) alors
y ← -x
Finsi
Ecrire ("la valeur absolue de ", x, "est:",y)
Fin
40
Exercice (tests)
Ecrire un algorithme qui demande un nombre entier à l'utilisateur,
puis qui teste et affiche s'il est divisible par 3
Algorithme Divsible_par3
Variable n : entier
Début
Ecrire " Entrez un entier : "
Lire (n)
Si (n%3=0) alors
Ecrire (n," est divisible par 3")
Sinon
Ecrire (n," n'est pas divisible par 3")
Finsi
Fin
41
Conditions composées
Une condition composée est une condition formée de plusieurs
conditions simples reliées par des opérateurs logiques:
ET, OU, OU exclusif (XOR) et NON
Exemples :
• x compris entre 2 et 6 : (x > 2) ET (x < 6)
• n divisible par 3 ou par 2 : (n%3=0) OU (n%2=0)
42
Tables de vérité
C1 C2 C1 ET C2 C1 C2 C1 OU C2
VRAI VRAI VRAI VRAI VRAI VRAI
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX
C1 C2 C1 XOR C2 C1 NON C1
VRAI VRAI FAUX VRAI FAUX
VRAI FAUX VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX
43
Tests imbriqués
Les tests peuvent avoir un degré quelconque d'imbrications
Si condition1 alors
Si condition2 alors
instructionsA
Sinon
instructionsB
Finsi
Sinon
Si condition3 alors
instructionsC
Finsi
Finsi
44
Tests imbriqués: exemple (version 1)
Variable n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si (n < 0) alors
Ecrire ("Ce nombre est négatif")
Sinon
Si (n = 0) alors
Ecrire ("Ce nombre est nul")
Sinon
Ecrire ("Ce nombre est positif")
Finsi
Finsi
Fin
45
Tests imbriqués: exemple (version 2)
Variable n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si (n < 0) alors Ecrire ("Ce nombre est négatif")
Finsi
Si (n = 0) alors Ecrire ("Ce nombre est nul")
Finsi
Si (n > 0) alors Ecrire ("Ce nombre est positif")
Finsi
Fin
Remarque : dans la version 2 on fait trois tests systématiquement alors que
dans la version 1, si le nombre est négatif on ne fait qu'un seul test
Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer
d'abord les conditions les plus probables
46
Tests imbriqués: exercice
Le prix de photocopies dans une reprographie varie selon le
nombre demandé: 0,5 DH la copie pour un nombre de copies
inférieur à 10, 0,4DH pour un nombre compris entre 10 et 20 et
0,3DH au-delà.
47
Tests imbriqués: corrigé de l'exercice
Variables copies : entier
prix : réel
Début
Ecrire ("Nombre de photocopies : ")
Lire (copies)
Si (copies < 10) Alors
prix ← copies*0.5
Sinon Si (copies) < 20
prix ← copies*0.4
Sinon
prix ← copies*0.3
Finsi
Finsi
Ecrire (“Le prix à payer est : ”, prix)
Fin
48
Instructions itératives: les boucles
Les boucles servent à répéter l'exécution d'un groupe d'instructions
un certain nombre de fois
FinTantQue Faux
50
Les boucles Tant que : remarques
Le nombre d'itérations dans une boucle TantQue n'est pas connu
au moment d'entrée dans la boucle. Il dépend de l'évolution de la
valeur de condition
Variable C : caractère
Debut
Ecrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z')
Ecrire ("Saisie erronée. Recommencez")
Lire (C)
FinTantQue
Ecrire ("Saisie valable")
Fin
52
Boucle Tant que : exemple2
Un algorithme qui détermine le premier nombre entier N tel que la
somme de 1 à N dépasse strictement 100
version 1
Variables som, i : entier
Debut
i←0
som← 0
TantQue (som <=100)
i ← i+1
som ← som+i
FinTantQue
Ecrire (" La valeur cherchée est N= ", i)
Fin
53
Boucle Tant que : exemple2 (version2)
Un algorithme qui détermine le premier nombre entier N tel que la
somme de 1 à N dépasse strictement 100
instructions
FinPour
i ←initiale
Vrai
i n'a pas atteint finale instructions i ← i + pas
Faux
55
Les boucles Pour
Remarque : le nombre d'itérations dans une boucle Pour est connu
avant le début de la boucle
Compteur est une variable de type entier (ou caractère). Elle doit
être déclarée
Pas est un entier qui peut être positif ou négatif. Pas peut ne pas
être mentionné, car par défaut sa valeur est égal à 1. Dans ce cas, le
nombre d'itérations est égal à finale - initiale+ 1
56
Déroulement des boucles Pour
1) La valeur initiale est affectée à la variable compteur
b) Si compteur est <= à finale dans le cas d'un pas positif (ou si compteur
est >= à finale pour un pas négatif), instructions seront exécutées
57
Boucle Pour : exemple1
Calcul de x à la puissance n où x est un réel non nul et n un
entier positif ou nul
Variables x, puiss : réel
n, i : entier
Debut
Ecrire (" Entrez la valeur de x ")
Lire (x)
Ecrire (" Entrez la valeur de n ")
Lire (n)
puiss ← 1
Pour i allant de 1 à n
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
58
Boucle Pour : exemple1 (version 2)
60
Lien entre Pour et TantQue
La boucle Pour est un cas particulier de Tant Que (cas où le nombre d'itérations
est connu et fixé) . Tout ce qu'on peut écrire avec Pour peut être remplacé
avec TantQue (la réciproque est fausse)
instructions
FinPour
peut être remplacé par : compteur ← initiale
(cas d'un pas positif) TantQue compteur <= finale
instructions
compteur ← compteur+pas
FinTantQue
61
Lien entre Pour et TantQue: exemple
Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou
nul (version avec TantQue)
Variables x, puiss : réel
n, i : entier
Debut
Ecrire (" Entrez la valeur de x ")
Lire (x)
Ecrire (" Entrez la valeur de n ")
Lire (n)
puiss ← 1
i←1
TantQue (i<=n)
puiss← puiss*x
i ← i+1
FinTantQue
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
62
Boucles imbriquées
Les instructions d'une boucle peuvent être des instructions
itératives. Dans ce cas, on aboutit à des boucles imbriquées
Exemple: Exécution
Pour i allant de 1 à 5 OX
Pour j allant de 1 à i OOX
écrire("O") OOOX
FinPour OOOOX
écrire("X") OOOOOX
FinPour
63
Les boucles Répéter … jusqu’à …
Répéter
instructions instructions
Jusqu'à condition
Faux
condition
Vrai
les instructions entre Répéter et jusqu’à sont exécutées au moins une fois et
leur exécution est répétée jusqu’à ce que condition soit vrai (tant qu'elle est
fausse)
64
Boucle Répéter jusqu’à : exemple
Un algorithme qui détermine le premier nombre entier N tel que la somme de 1
à N dépasse strictement 100 (version avec répéter jusqu'à)
65
Choix d'un type de boucle
Si on peut déterminer le nombre d'itérations avant l'exécution de la
boucle, il est plus naturel d'utiliser la boucle Pour
66
Langage C
67
Ecrire un programme
Un programme se constitue :
• D’une fonction principale
• De plusieurs fonctions secondaires
On l’utilise pour :
• Insérer des informations générales :
• nom du programmeur
• date de la dernière modification
• présentation de la tâche accomplie par le programme
• …
• Insérer des explications sur une instruction ou un bloc
d’instructions :
• Quelle est sa fonction ?
• Pourquoi en a-t-on besoin ?
• …
• Neutraliser une instruction ou un bloc d’instructions (phases de
déboguage ou de test)
69
Les commentaires (2)
type nom_de_la_variable ;
72
Les variables
En résumé, il existe 3 types de données de base :
Les caractères
char
ex : ‘A’, ‘b’, ‘0’, ‘é’, ‘!’
73
Les variables
Choix du nom :
• Un nom de variable commence par une lettre.
• Un nom de variable peut se composer :
• de chiffres (09)
• de lettres minuscules (az)
• de lettres majuscules (AZ)
• du symbole ‘_’
• Les lettres accentuées, les espaces et les symboles divers
sont interdits.
• On privilégie les noms significatifs : pi au lieu de p
74
Les variables
Exemples :
int g ; // déclaration simple
float PrixHT, TauxTVA, PrixTTC ; // déclaration multiple
float pi = 3.141593 ; // déclaration et initialisation
75
Les valeurs
Un nombre réel s’écrit avec un point et non avec une
virgule (écriture anglo-saxonne).
76
Mathématique vs C (1)
En mathématique : La variable est une inconnue recouvrant
plusieurs valeurs.
y=3x+2
les variables x et y répondant à cette équation sont une
infinité
ax2 + bx + c = 0
la variable x répondant à cette équation a 0, 1 ou 2 valeurs
77
L’affectation
L’affectation consiste à donner une valeur (à droite) à une variable (à gauche).
Syntaxes :
nom_de_variable = valeur ;
78
L’affectation
La valeur affectée doit être du même type que la
variable.
Exemples :
int i ;
i = 423.97 ; // Valeur affectée en pratique : 423
float j ;
j = 32 ; // Valeur affectée en pratique : 32.0
79
Mathématique vs C (2)
En mathématique : Le symbole = indique l’égalité entre 2 termes.
En C : Le symbole = sert à affecter une valeur à une variable.
Exemple 1 :
Soit A = B et B = A :
• En mathématique, les deux propositions sont équivalentes.
• En C, ce n’est pas le cas car ça revient à affecter la valeur de B à A et
à affecter la valeur de A à B : ce sont deux choses bien différentes.
Exemple 2 :
Soit A = A + 1 :
• En mathématique, c’est une équation sans solution.
• En C, c’est une opération courante consistant à incrémenter la
variable.
Exemple 1 : Exemple 2 :
int A ; int A ;
A = 34 ; A = 12 ;
A = 12 ; A = 34 ;
Valeur de A à la fin de
12 34
cette séquence :
81
Opérateurs
Un opérateur est un signe (symbole) qui relie deux valeurs pour produire
un résultat :
• opération mathématique,
• opération logique,
• comparaison
• …
Syntaxe usuelle* :
[terme_1] [opérateur] [terme_2]
Les types des valeurs liées par un opérateur doivent être identiques.
82
Opérations mathématiques
Opérateurs numériques ou mathématiques :
• Addition : +
• Soustraction : –
• Multiplication : *
• Division : /
• Reste de la division entière : % (modulo)
83
Opérations mathématiques
Règle : Si toutes les valeurs et/ou variables d’une
opération sont de type entier alors le résultat est
de type entier et doit être affecté (stocké) dans
une variable de type entier.
Dans le cas de la division « entière » :
int x ;
x = 17 / 5 ; // x vaut 3
x = 4 / 5 ; // x vaut 0
Règle : même chose avec le type réel.
Dans le cas de la division « réelle » :
float x ;
x = 17.0 / 5.0 ; // x vaut 3.4
x = 4.0 / 5.0 ; // x vaut 0.8
84
Opérations mathématiques
Pourquoi ne pas utiliser uniquement le
type float ?
85
La conversion de type (cast)
C’est une conversion de type ponctuel.
Exemple d’utilisation :
• Soit les variables :
int nb_gateau ; // nombre de gâteaux
int nb_enfant ; // nombre d’enfants
float parts ; // portions à manger
• On veut calculer le nombre de parts en divisant le nombre
de gâteaux par le nombre d’enfants.
• Solution : parts = (float) nb_gateau / (float) nb_enfant ;
86
Opérations mathématiques
• Modulo % : Puisque le résultat d’une division entre deux entiers
est un entier, il existe une cinquième opération mathématique qui
permet de calculer le reste d’une telle division le modulo est
une opération entre deux entiers uniquement.
int quotient, reste ;
quotient = 17 / 5 ;
reste = 17 % 5 ;
Numérateur Dénominateur
ou dividende ou diviseur
17 5 Variable Valeur
2 3 quotient 3
Reste Quotient reste 2
87
Opérateurs ++ et --
Incrémentation (++) et décrémentation (--)
• Forme préfixée (++i , --i) : la variable i est
incrémentée/décrémentée avant que sa valeur ne soit
estimée.
Ex : n = 5; x = ++n; // x vaut 6
• Formes équivalentes :
i++; i=i+1; i+=1;
i--; i=i-1; i-=1;
88
Lecture / Ecriture
Consignes Lecture des
consignes
Utilisateur Programme
Ecriture des
Résultats résultats
89
Lecture / Ecriture
Lecture des données fournies par l’utilisateur : scanf ( )
• Données saisies au clavier
• Nécessite de déclarer le fichier d’en-tête : stdio.h
• Exemple : saisie d’un entier
90
Lecture / Ecriture
• Saisie d’un réel : scanf( " %f " , &tauxTVA ) ;
• Saisie d’un caractère : scanf( " %c " , &reponseQCM )
;
• Saisie de plusieurs données de même types :
scanf ( " %d %d " , &nb_gateau , &nb_enfant ) ;
• Saisie de plusieurs données de types différents :
scanf ( " %d %f " , &nb_produit , &prixTTC ) ;
91
Lecture / Ecriture
Ecriture de résultats du programme ou d’autres informations :
printf ( )
• Affichage à l’écran
• Nécessite de déclarer le fichier d’en-tête : stdio.h
• Exemple : affichage d’un réel
92
Lecture / Ecriture
93
La fonction principale
Syntaxe :
int main (int argc, char *argv[ ])
{
/* on écrit le programme ici */
return 0;
}
94
Les tests
Définition
• 2 mots-clés : if et else
95
Les tests
Syntaxes :
if ( condition )
{ if ( condition1 )
[liste d’instructions] {
} [liste d’instructions 1]
}
else if ( condition2 )
{
if ( condition ) [liste d’instructions 2]
{ }
[liste d’instructions 1] …
} else
else {
{ [liste d’instructions n]
[liste d’instructions 2] }
}
96
Les tests
Si la condition est vérifiée (valeur différente de 0), le programme
exécute la liste d’instructions qui suit.
97
Les tests
Opérateurs de comparaison
• Egalité : ==
• Différence : !=
• Supérieur : >
• Supérieur ou égal : >=
• Inférieur : <
• Inférieur ou égal : <=
Opérateurs logiques
• ET : &&
• OU : ||
• Négation : ! (ou opérateur unaire)
98
Les tests
Exemple :
99
Les tests
Un tel test implique 2 conditions reliées par l’opérateur logique && (ET).
101
Les tests
Soit :
int Temp;
printf("Entrez la température de l’eau :"); scanf("%d",&Temp);
if ( Temp <= 0 )
{
printf("C’est de la glace !");
}
if ( (Temp > 0) && (Temp < 100) ) • 3 tests successifs (perte
de temps possible)
{
printf("C’est du liquide !"); • 3 conditions similaires
}
dont 1 composée
if ( (Temp >= 100) )
{
printf("C’est de la vapeur !");
}
102
Les tests
On peut réécrire le code précédent en imbriquant les tests :
int Temp ;
printf("Entrez la température de l’eau :"); scanf("%d",&Temp);
if ( Temp <= 0 )
{
printf("C’est de la glace !");
}
else
{ • 2 tests imbriqués (gain
if ( Temp < 100 ) de temps possible)
{ • 2 conditions simples
printf("C’est du liquide !");
}
else
{
printf("C’est de la vapeur !");
}
}
103
Les tests
On peut également utiliser else if :
int Temp;
printf("Entrez la température de l’eau :");
scanf("%d",&Temp);
if ( Temp <= 0 )
{
printf("C’est de la glace !");
}
else if ( Temp < 100 )
{
printf("C’est du liquide !");
}
else
{
printf("C’est de la vapeur !");
}
104
Les boucles
105
Les boucles
106
Les boucles
Syntaxe et exemple de la boucle for :
107
Les boucles
Syntaxe et exemple de la boucle while :
• while ( condition ) { … }
char choix ;
printf("Voulez vous un café ? (O/N)") ;
scanf("%c",&choix) ;
while ( (choix != 'O') && (choix != 'N') )
{
printf("Réponse non valide ; recommencez :");
scanf("%c",&choix) ;
}
108
Les boucles
char choix ;
printf("Voulez vous un café ? (O/N)") ;
scanf("%c",&choix) ;
while ( (choix != 'O') && (choix != 'N') )
{
printf("Réponse non valide ; recommencez :");
scanf("%c",&choix) ;
}
109
Les boucles
111
Les boucles
char choix='X' ;
scanf("%c",&choix) ; while ( (choix!='O') && (choix!= 'N') )
while ( (choix!='O') && (choix!= 'N') ) {
{ scanf("%c",&Rep) ;
scanf("%c",&choix) ; }
}
do
{
scanf("%c",&choix) ;
}
while ( (choix!='O') && (choix!= 'N') );
On peut ne pas exécuter la boucle.
112
Les boucles
Les deux erreurs à ne pas faire :
choix = 'O';
while ( ( choix != 'O' ) && ( choix != 'N' ) )
{…}
float N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,m;
printf("Entrez 12 valeurs :");
scanf("%f%f%f%f%f%f%f%f%f%f%f%f ",&N1,&N2,&N3,&N4,&N5,&N6,&N7,&N8,&N9,&N10,&N11,&N12);
m = (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12)/12.0;
114
Les tableaux
Il faut une solution qui :
• ne nécessite pas autant de variables que de valeurs à saisir ;
• permette de stocker toutes les valeurs saisies.
Cette solution est le tableau de valeurs :
• une seule variable pouvant contenir plusieurs valeurs ;
• chaque valeur est accessible via un indice de position.
int i;
Exemple : float val[12],m=0.0;
printf("Entrez les 12 valeurs :");
for(i=0;i<12;i++)
{
scanf("%f ",&val[i]);
m = m + val[i];
}
m = m / 12.0;
115
Les tableaux
Définitions :
• Un ensemble de valeurs portant le même nom de
variable et repérées par un indice, s’appelle un tableau,
ou encore une variable indicée.
• La déclaration d’un tableau est similaire à celle d’une
variable avec la taille précisée entre crochets en plus (à
répéter autant de fois que de dimensions).
• En dehors de la déclaration du tableau, le nombre entier
qui sert à repérer chaque valeur s’appelle l’indice.
• Chaque fois que l’on doit désigner un élément du
tableau, on fait figurer le nom du tableau, suivi de l’indice
de l’élément entre crochets.
116
Les tableaux
Déclaration :
117
Les tableaux
Un tableau est facile à manipuler grâce aux boucles.
118
Les tableaux
Erreurs à ne pas faire :
119
Les fonctions prédéfinies
122
Les fonctions
parenthèses obligatoires
Syntaxe : même si pas d’arguments
123
Les fonctions
Exemples :
• Fonction calculant la distance euclidienne entre 2 points :
125
Les fonctions
Exemples d’appel de fonction :
• res = euclide(a,b,c,d);
• printf("%d" , f() );
• res2 = f() + 3 + euclide(0,0,1,1);
float euclide (float x1, float y1, float x2, float y2)
{…}
126
Fonctions récursives
Programmation récursive : le programme qui se
rappelait lui-même !
127
Structure d’un programme en C
128
Ecrire un programme en C
#include<stdio.h>
129