algorithmique cours 3 - centre de recherche en ...koriche/algorithmique-2012-partie3.pdf · un code...
TRANSCRIPT
![Page 1: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/1.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
AlgorithmiqueCours 3
IUT Informatique de Lens, 1ère AnnéeUniversité d’Artois
Frédéric [email protected] - Semestre 1
![Page 2: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/2.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Sommaire
L’objectif de ce cours est d’étudier le langage C++ pour les types dedonnées simples et les principales instructions.
1 Compilation
2 Données
3 Opérateurs
4 Instructions Simples
5 Instructions Composées
![Page 3: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/3.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Sommaire
L’objectif de ce cours est d’étudier le langage C++ pour les types dedonnées simples et les principales instructions.
1 Compilation
2 Données
3 Opérateurs
4 Instructions Simples
5 Instructions Composées
![Page 4: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/4.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Compilateur
Un compilateur est un programme informatique qui transforme
un code source écrit dans un langage de programmation compréhensible par l’humain
en un code assembleur ou code machine compréhensible seulement par la machine
![Page 5: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/5.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Compilateur
Un compilateur est un programme informatique qui transforme
un code source écrit dans un langage de programmation compréhensible par l’humain
en un code assembleur ou code machine compréhensible seulement par la machine
Un algorithme est (théoriquement) portable sur toute machine. Le compilateur permet detraduire le code source de l’algorithme en un code assembleur propre à chaque machine.
![Page 6: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/6.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Compilateur
Les phases d’un compilateur C ou C++comprennent
le prétraitement qui inclut les fichiersen-tête (.h) au code source (.cpp), prenden charge les macros et gère lacompilation conditionnelle.
l’analyse (lexicale, syntaxique etsémantique) qui transforme le codesource en code intermédiaire (avec unetable des symboles)
l’optimisation et la génération quitransforment le code intermédiaire encode objet (.o)
l’édition de liens qui intègre au codeobjet les librairies (.lib) afin de produire lecode assembleur (.bin ou .exe) final.
Prétraitement
Analyse
Optimisationet Génération
Editionde liens
![Page 7: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/7.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Données (rappel)
Toute donnée est spécifiée par :
son nom : désigne la donnée dans le programme.
son type : décrit le domaine de valeurs que peut prendre la donnée.
sa nature : variable (la valeur peut changer) ou constante (la valeur est fixe).
Codage des données
L’informatique utilise plusieurs codages de données, dont les principaux sont :
Décimal : en mathématiques, les données sont généralement codées en base 10.
Binaire : dans une mémoire électronique, les données sont codées en base 2.
Hexadécimal : codage en base 16 (24), utilisé pour interpréter les données binaires.
![Page 8: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/8.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Données (rappel)
Toute donnée est spécifiée par :
son nom : désigne la donnée dans le programme.
son type : décrit le domaine de valeurs que peut prendre la donnée.
sa nature : variable (la valeur peut changer) ou constante (la valeur est fixe).
Codage des données
L’informatique utilise plusieurs codages de données, dont les principaux sont :
Décimal : en mathématiques, les données sont généralement codées en base 10.
Binaire : dans une mémoire électronique, les données sont codées en base 2.
Hexadécimal : codage en base 16 (24), utilisé pour interpréter les données binaires.
![Page 9: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/9.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Codage décimal
Tout entier positif x est codé par un tableau x =< x1, · · · ,xn >comprenant n = blog10 x +1c cases (ou chiffres),
chacun ayant une valeur de 0 à 9,
et tel que :
x =n∑
i=010i xi
Exemple
Considérons le nombre entier x “un million cent mille neuf cent vingt quatre”. En base 10 il estcodé par le tableau :
1 1 0 0 9 2 4
106 105 104 103 102 101 100
On a bien 1,100,924= 106 ·1 + 105 ·1 + 104 ·0 + 103 ·0 + 102 ·9 + 101 ·2 + 100 ·4
![Page 10: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/10.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Codage décimal
Tout entier positif x est codé par un tableau x =< x1, · · · ,xn >comprenant n = blog10 x +1c cases (ou chiffres),
chacun ayant une valeur de 0 à 9,
et tel que :
x =n∑
i=010i xi
Exemple
Considérons le nombre entier x “un million cent mille neuf cent vingt quatre”. En base 10 il estcodé par le tableau :
1 1 0 0 9 2 4
106 105 104 103 102 101 100
On a bien 1,100,924= 106 ·1 + 105 ·1 + 104 ·0 + 103 ·0 + 102 ·9 + 101 ·2 + 100 ·4
![Page 11: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/11.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Codage binaire
Tout entier positif x est codé par un tableau x =< x1, · · · ,xn >comprenant n = blog2 x +1c cases (ou chiffres),
chaque case ayant la valeur 0 ou 1,
et vérifiant l’égalité :
x =n∑
i=02i xi
![Page 12: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/12.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Codage binaire
Tout entier positif x est codé par un tableau x =< x1, · · · ,xn >comprenant n = blog2 x +1c cases (ou chiffres),
chaque case ayant la valeur 0 ou 1,
et vérifiant l’égalité :
x =n∑
i=02i xi
Exemple : Conversion décimale → binaire
Considérons le nombre entier x “soixante quinze”. En base 2 il est codé par le tableau :
1 0 0 1 0 1 1
26 25 24 23 22 21 20
On a bien : 75= 64 ·1 + 32 ·0 + 16 ·0 + 8 ·1 + 4 ·0 + 2 ·1 + 1 ·1
![Page 13: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/13.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Codage binaire
Tout entier positif x est codé par un tableau x =< x1, · · · ,xn >comprenant n = blog2 x +1c cases (ou chiffres),
chaque case ayant la valeur 0 ou 1,
et vérifiant l’égalité :
x =n∑
i=02i xi
Exemple : Conversion binaire → décimale
Considérons le nombre binaire représenté par le tableau :
1 1 0 0 0 1 1
26 25 24 23 22 21 20
Sa conversion décimale est 64 ·1 + 32 ·1 + 16 ·0 + 8 ·0 + 4 ·0 + 2 ·1 + 1 ·1= 99
![Page 14: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/14.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Codage hexadécimal
Tout entier positif x est codé par un tableau x =< x1, · · · ,xn >comprenant n = blog16 x +1c cases (ou chiffres),
chaque case ayant une valeur dans {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E ,F }
et vérifiant l’égalité :
x =n∑
i=016i xi
Exemple : Conversion binaire → hexadécimale
Chaque paquet de 4 bits est regroupé et codé par un chiffre hexadécimal.
![Page 15: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/15.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Codage hexadécimal
Tout entier positif x est codé par un tableau x =< x1, · · · ,xn >comprenant n = blog16 x +1c cases (ou chiffres),
chaque case ayant une valeur dans {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E ,F }
et vérifiant l’égalité :
x =n∑
i=016i xi
Exemple : Conversion binaire → hexadécimale
Chaque paquet de 4 bits est regroupé et codé par un chiffre hexadécimal.
0 1 0 0 1 0 1 1
![Page 16: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/16.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Codage hexadécimal
Tout entier positif x est codé par un tableau x =< x1, · · · ,xn >comprenant n = blog16 x +1c cases (ou chiffres),
chaque case ayant une valeur dans {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E ,F }
et vérifiant l’égalité :
x =n∑
i=016i xi
Exemple : Conversion binaire → hexadécimale
Chaque paquet de 4 bits est regroupé et codé par un chiffre hexadécimal.
0 1 0 0 1 0 1 1
B
![Page 17: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/17.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Codage hexadécimal
Tout entier positif x est codé par un tableau x =< x1, · · · ,xn >comprenant n = blog16 x +1c cases (ou chiffres),
chaque case ayant une valeur dans {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E ,F }
et vérifiant l’égalité :
x =n∑
i=016i xi
Exemple : Conversion binaire → hexadécimale
Chaque paquet de 4 bits est regroupé et codé par un chiffre hexadécimal.
0 1 0 0 1 0 1 1
B8
![Page 18: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/18.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Codage hexadécimal
Tout entier positif x est codé par un tableau x =< x1, · · · ,xn >comprenant n = blog16 x +1c cases (ou chiffres),
chaque case ayant une valeur dans {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E ,F }
et vérifiant l’égalité :
x =n∑
i=016i xi
Exemple : Conversion binaire → hexadécimale
Chaque paquet de 4 bits est regroupé et codé par un chiffre hexadécimal.
0 1 0 0 1 0 1 1
B8
Le nombre décimal 75 correspond bien au nombre hexadécimal 8B.
![Page 19: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/19.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Types de données
Type C++ Longueur Valeurs
Booléen bool 1 octet Valeurs 0 ou 1
Caractère char 1 octet Symboles ascii (0 à 255)
Entier int 4 octets [−2147483648,2147483647]Entier positif unsigned int 4 octets [0,4294967295]
Réel float 4 octets ±3.410±38 (7 décimales)double 8 octets ±1.710±308 (15 décimales)
![Page 20: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/20.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Types de données
Type C++ Longueur Valeurs
Booléen bool 1 octet Valeurs 0 ou 1
Caractère char 1 octet Symboles ascii (0 à 255)
Entier int 4 octets [−2147483648,2147483647]Entier positif unsigned int 4 octets [0,4294967295]
Réel float 4 octets ±3.410±38 (7 décimales)double 8 octets ±1.710±308 (15 décimales)
Entiers relatifsLe codage d’un entier relatif nécessite un bit d’information pour le signe. Par exemple, lecodage binaire du nombre −75 est :
1 1 0 0 1 0 1 1
Signe Mantisse
![Page 21: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/21.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Types de données
Type C++ Longueur Valeurs
Booléen bool 1 octet Valeurs 0 ou 1
Caractère char 1 octet Symboles ascii (0 à 255)
Entier int 4 octets [−2147483648,2147483647]Entier positif unsigned int 4 octets [0,4294967295]
Réel float 4 octets ±3.410±38 (7 décimales)double 8 octets ±1.710±308 (15 décimales)
RéelsLe codage d’un réel nécessite de représenter son exposant, sa mantisse et leur signerespectif.
Signe de lamantisse
MantisseExposant
![Page 22: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/22.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Opérateurs arithmétiques (entiers)
Toutes les entrées sont des entiersLa sortie est un entier
Nom C++addition +soustraction -multiplication *division entière /reste %inversion de signe -
Opérateurs arithmétiques (réels)
Au moins une entrée est un réelLa sortie est un réel
Nom C++addition +soustraction -multiplication *division réelle /inversion de signe -
Opérateurs de comparaison
Les deux entrées sont des entiers, caractèresou réelsLa sortie est un booléen
Nom C++est égal à ==est différent de !=est plus petit que <est plus grand que >est plus petit ou égal à <=est plus grand ou égal à >=
Opérateurs logiques
Les deux entrées sont des booléensLa sortie est un booléen
Nom C++conjonction &&disjonction ||négation !
![Page 23: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/23.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Opérateurs arithmétiques (entiers)
Toutes les entrées sont des entiersLa sortie est un entier
Nom C++addition +soustraction -multiplication *division entière /reste %inversion de signe -
Opérateurs arithmétiques (réels)
Au moins une entrée est un réelLa sortie est un réel
Nom C++addition +soustraction -multiplication *division réelle /inversion de signe -
Opérateurs de comparaison
Les deux entrées sont des entiers, caractèresou réelsLa sortie est un booléen
Nom C++est égal à ==est différent de !=est plus petit que <est plus grand que >est plus petit ou égal à <=est plus grand ou égal à >=
Opérateurs logiques
Les deux entrées sont des booléensLa sortie est un booléen
Nom C++conjonction &&disjonction ||négation !
![Page 24: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/24.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Opérateurs arithmétiques (entiers)
Toutes les entrées sont des entiersLa sortie est un entier
Nom C++addition +soustraction -multiplication *division entière /reste %inversion de signe -
Opérateurs arithmétiques (réels)
Au moins une entrée est un réelLa sortie est un réel
Nom C++addition +soustraction -multiplication *division réelle /inversion de signe -
Opérateurs de comparaison
Les deux entrées sont des entiers, caractèresou réelsLa sortie est un booléen
Nom C++est égal à ==est différent de !=est plus petit que <est plus grand que >est plus petit ou égal à <=est plus grand ou égal à >=
Opérateurs logiques
Les deux entrées sont des booléensLa sortie est un booléen
Nom C++conjonction &&disjonction ||négation !
![Page 25: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/25.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Opérateurs arithmétiques (entiers)
Toutes les entrées sont des entiersLa sortie est un entier
Nom C++addition +soustraction -multiplication *division entière /reste %inversion de signe -
Opérateurs arithmétiques (réels)
Au moins une entrée est un réelLa sortie est un réel
Nom C++addition +soustraction -multiplication *division réelle /inversion de signe -
Opérateurs de comparaison
Les deux entrées sont des entiers, caractèresou réelsLa sortie est un booléen
Nom C++est égal à ==est différent de !=est plus petit que <est plus grand que >est plus petit ou égal à <=est plus grand ou égal à >=
Opérateurs logiques
Les deux entrées sont des booléensLa sortie est un booléen
Nom C++conjonction &&disjonction ||négation !
![Page 26: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/26.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Expression (rappel)
Une expression est une composition d’opérations.
Une expression est bien formée si chaque opération s’applique sur des entrées de typeautorisé
Le type d’une expression est donné par le type de la valeur de sortie
Exemples
Supposons que i , j et k soient des entiers
Pseudo-code C++ Type(i < j) et (j < k) (i < j) && (j < k) booléen(i ≤ j) ou (j ≥ k) (i <= j) || (j >= k) booléen(i + j) mod k (i + j) % k entier
![Page 27: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/27.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Expression (rappel)
Une expression est une composition d’opérations.
Une expression est bien formée si chaque opération s’applique sur des entrées de typeautorisé
Le type d’une expression est donné par le type de la valeur de sortie
Exemples
Supposons que i , j et k soient des entiers
Pseudo-code C++ Type(i < j) et (j < k) (i < j) && (j < k) booléen(i ≤ j) ou (j ≥ k) (i <= j) || (j >= k) booléen(i + j) mod k (i + j) % k entier
![Page 28: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/28.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Structure d’un Programme C++
Le code source d’un programme C++ contient trois éléments essentiels
Commentaires : préfixés par //, ils sont utilisés pour expliquer ce que fait leprogramme
Macros : préfixées par #, elles sont utilisées par le pré-processeur pour manipuler lecode source
Fonction principale : main(), elle est exécutée au démarrage du programme
Exemple
// Bonjour tout le monde#include <iostream>using namespace std;int main(){cout ¿ “Hello World” ¿ endl;return 0;}
helloWorld.cpp
Commentaire expliquant ce que fait ceprogramme
![Page 29: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/29.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Structure d’un Programme C++
Le code source d’un programme C++ contient trois éléments essentiels
Commentaires : préfixés par //, ils sont utilisés pour expliquer ce que fait leprogramme
Macros : préfixées par #, elles sont utilisées par le pré-processeur pour manipuler lecode source
Fonction principale : main(), elle est exécutée au démarrage du programme
Exemple
// Bonjour tout le monde#include <iostream>using namespace std;int main(){cout ¿ “Hello World” ¿ endl;return 0;}
helloWorld.cpp
Indiquer au compilateur d’inclure lesfonctions entrées-sorties
![Page 30: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/30.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Structure d’un Programme C++
Le code source d’un programme C++ contient trois éléments essentiels
Commentaires : préfixés par //, ils sont utilisés pour expliquer ce que fait leprogramme
Macros : préfixées par #, elles sont utilisées par le pré-processeur pour manipuler lecode source
Fonction principale : main(), elle est exécutée au démarrage du programme
Exemple
// Bonjour tout le monde#include <iostream>using namespace std;int main(){cout ¿ “Hello World” ¿ endl;return 0;}
helloWorld.cpp
Indiquer au compilateur que l’espacedes noms utilisés est celui de la biblio-thèque C++ standard
![Page 31: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/31.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Structure d’un Programme C++
Le code source d’un programme C++ contient trois éléments essentiels
Commentaires : préfixés par //, ils sont utilisés pour expliquer ce que fait leprogramme
Macros : préfixées par #, elles sont utilisées par le pré-processeur pour manipuler lecode source
Fonction principale : main(), elle est exécutée au démarrage du programme
Exemple
// Bonjour tout le monde#include <iostream>using namespace std;int main(){cout ¿ “Hello World” ¿ endl;return 0;}
helloWorld.cpp
Fonction principale du programme
![Page 32: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/32.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Structure d’un Programme C++
Le code source d’un programme C++ contient trois éléments essentiels
Commentaires : préfixés par //, ils sont utilisés pour expliquer ce que fait leprogramme
Macros : préfixées par #, elles sont utilisées par le pré-processeur pour manipuler lecode source
Fonction principale : main(), elle est exécutée au démarrage du programme
Exemple
// Bonjour tout le monde#include <iostream>using namespace std;int main(){cout ¿ “Hello World” ¿ endl;return 0;}
helloWorld.cpp
Bloc d’instructions de la fonctionprincipale
![Page 33: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/33.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Structure d’un Programme C++
Le code source d’un programme C++ contient trois éléments essentiels
Commentaires : préfixés par //, ils sont utilisés pour expliquer ce que fait leprogramme
Macros : préfixées par #, elles sont utilisées par le pré-processeur pour manipuler lecode source
Fonction principale : main(), elle est exécutée au démarrage du programme
Exemple
// Bonjour tout le monde#include <iostream>using namespace std;int main(){cout ¿ “Hello World” ¿ endl;return 0;}
helloWorld.cpp
Afficher Hello World avec retourchariot
![Page 34: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/34.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Structure d’un Programme C++
Le code source d’un programme C++ contient trois éléments essentiels
Commentaires : préfixés par //, ils sont utilisés pour expliquer ce que fait leprogramme
Macros : préfixées par #, elles sont utilisées par le pré-processeur pour manipuler lecode source
Fonction principale : main(), elle est exécutée au démarrage du programme
Exemple
// Bonjour tout le monde#include <iostream>using namespace std;int main(){cout ¿ “Hello World” ¿ endl;return 0;}
helloWorld.cpp
Valeur retournée par la fonctionmain. La valeur 0 indique quetout s’est déroulé normalement.
![Page 35: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/35.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
MémoireLa mémoire d’un ordinateur est un tableau d’octets. Donc l’octet est la plus petite plage demémoire que nous pouvons réserver en C++.
1000 1001 1002 1003 1004 1005 1006 1007 1008
Plages
Valeurs
![Page 36: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/36.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Instructions simples (rappel)
Une instruction simple est :
une déclaration ou
une affectation ou
une entrée-sortie
En C++, toute instruction simple se termine par un point virgule.
Déclaration de variable
type variable ;
Déclaration de constante
type constante = valeur ;
![Page 37: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/37.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Instructions simples (rappel)
Une instruction simple est :
une déclaration ou
une affectation ou
une entrée-sortie
En C++, toute instruction simple se termine par un point virgule.
Déclaration de variable
type variable ;
Déclaration de constante
type constante = valeur ;
![Page 38: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/38.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de déclaration de variable
#include <iostream>using namespace std;int main(){char c;float f;return 0;}
Déclaration d’une variable de type caractère
1000 1001 1002 1003 1004 1005 1006 1007 1008
Adresse de la variable c
Valeur de la variable c
![Page 39: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/39.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de déclaration de variable
#include <iostream>using namespace std;int main(){char c;float f;return 0;}
Déclaration d’une variable de type flottant
1000 1001 1002 1006 1007 1008
Adresse de la variable c
Valeur de la variable c
Adresse de la variable f
Valeur de la variable f
![Page 40: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/40.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de déclaration de constante
#include <iostream>using namespace std;int main(){const float pi = 3.141592654;return 0;}
Déclaration d’une constante de type flottant
3.1415926541000 1001 1005 1006 1007 1008
Adresse de la constante pi
Valeur fixe de la constante pi
![Page 41: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/41.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Affectation de valeurDans une instruction de type :
variable = expression ;
l’opérateur = affecte la valeur de l’argument de droite (expression) à l’argument de gauche(variable). L’opérateur d’affectation (=) est différent de l’opérateur d’égalité (==) !
Exemple d’affectation (entier)
#include <iostream>using namespace std;int main(){int x;x = 10;return 0;}
Déclaration d’une variable de type entier
![Page 42: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/42.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Affectation de valeurDans une instruction de type :
variable = expression ;
l’opérateur = affecte la valeur de l’argument de droite (expression) à l’argument de gauche(variable). L’opérateur d’affectation (=) est différent de l’opérateur d’égalité (==) !
Exemple d’affectation (entier)
#include <iostream>using namespace std;int main(){int x;x = 10;return 0;}
Affectation de la valeur 10 à x
![Page 43: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/43.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple d’affectation (caractère)
#include <iostream>using namespace std;int main(){char c;c = ’t’;return 0;}
Déclaration d’une variable de type caractère
1000 1001 1002 1003 1004 1005 1006 1007 1008
Adresse de la variable c
Valeur de la variable c
![Page 44: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/44.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple d’affectation (caractère)
#include <iostream>using namespace std;int main(){char c;c = ’t’;return 0;}
Affectation de la valeur t à c
t1000 1001 1002 1003 1004 1005 1006 1007 1008
Adresse de la variable c
Affectation de valeur à c
![Page 45: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/45.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Affectations combinéesUtilisées pour modifier la valeur d’une variable en effectuant une opération dessus
#include <iostream>using namespace std;int main(){int x = 0;x += 2;return 0;}
Déclaration d’une variable x initialisée à 0
Affectation Equivalencex += y x = x + yx -= y x = x - yx *= y x = x * yx /= y x = x / y
Affectation Equivalencex ++ x = x + 1x -- x = x - 1
![Page 46: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/46.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Affectations combinéesUtilisées pour modifier la valeur d’une variable en effectuant une opération dessus
#include <iostream>using namespace std;int main(){int x = 0;x += 2;return 0;}
La valeur de x est augmentée de 2
Affectation Equivalencex += y x = x + yx -= y x = x - yx *= y x = x * yx /= y x = x / y
Affectation Equivalencex ++ x = x + 1x -- x = x - 1
![Page 47: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/47.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Affectations combinéesUtilisées pour modifier la valeur d’une variable en effectuant une opération dessus
#include <iostream>using namespace std;int main(){int x = 0;x += 2;return 0;}
La valeur de x est augmentée de 2
Affectation Equivalencex += y x = x + yx -= y x = x - yx *= y x = x * yx /= y x = x / y
Affectation Equivalencex ++ x = x + 1x -- x = x - 1
![Page 48: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/48.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Affichage
Dans une instruction de la forme :
flot ¿ données ;
l’opérateur ¿ envoie les données dans l’objet “flot”. Par défaut, la sortie standard d’unordinateur est l’écran et l’objet flot permettant d’y accéder est cout.
Exemple
#include <iostream>using namespace std;int main(){...cout ¿ “Le résultat est: ”;cout ¿ x ;cout ¿ endl;return 0;}
Affichage de la chaîne Le résultat est :
![Page 49: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/49.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Affichage
Dans une instruction de la forme :
flot ¿ données ;
l’opérateur ¿ envoie les données dans l’objet “flot”. Par défaut, la sortie standard d’unordinateur est l’écran et l’objet flot permettant d’y accéder est cout.
Exemple
#include <iostream>using namespace std;int main(){...cout ¿ “Le résultat est: ”;cout ¿ x ;cout ¿ endl;return 0;}
Affichage de la valeur de la variable x
![Page 50: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/50.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Affichage
Dans une instruction de la forme :
flot ¿ données ;
l’opérateur ¿ envoie les données dans l’objet “flot”. Par défaut, la sortie standard d’unordinateur est l’écran et l’objet flot permettant d’y accéder est cout.
Exemple
#include <iostream>using namespace std;int main(){...cout ¿ “Le résultat est: ”;cout ¿ x ;cout ¿ endl;return 0;}
Retour chariot et nettoyage du tampon deflux
![Page 51: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/51.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
LectureDans une instruction de la forme :
flot À données ;
l’opérateur À reçoit les données depuis l’objet “flot”. Par défaut, l’entrée standard d’unordinateur est le clavier et l’objet flot permettant d’y accéder est cin.
Exemple
#include <iostream>using namespace std;int main(){int x;cout ¿ “Entrez un entier : ”;cin À x ;. . .return 0;}
Lecture de la valeur de la variable x
![Page 52: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/52.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Instructions composées (rappel)
Une instruction composée est :
un bloc, ou
un test, ou
une boucle
BlocsUn bloc est un séquence d’instructions rassemblées entre crochets :
{. . .
}
![Page 53: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/53.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Instructions composées (rappel)
Une instruction composée est :
un bloc, ou
un test, ou
une boucle
BlocsUn bloc est un séquence d’instructions rassemblées entre crochets :
{. . .
}
![Page 54: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/54.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Le test “if”
if (condition){. . .}
Bloc du "si"
Si la condition est vraie, alors le bloc du "si" est exécuté. Si la condition est fausse alors leprogramme saute le bloc du "si" et continue après l’accolade }.
Le test “if-else”
if (condition){. . .}
else{. . .}
Bloc du "si"
Bloc du "sinon"
Si la condition est vraie, alors le bloc du "si" est exécuté. Si la condition est fausse, alors lebloc du "sinon" est exécuté.
![Page 55: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/55.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Le test “if”
if (condition){. . .}
Bloc du "si"
Si la condition est vraie, alors le bloc du "si" est exécuté. Si la condition est fausse alors leprogramme saute le bloc du "si" et continue après l’accolade }.
Le test “if-else”
if (condition){. . .}
else{. . .}
Bloc du "si"
Bloc du "sinon"
Si la condition est vraie, alors le bloc du "si" est exécuté. Si la condition est fausse, alors lebloc du "sinon" est exécuté.
![Page 56: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/56.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple d’un test “if-else”
#include <iostream>using namespace std;int main(){float x;cout ¿ “Entrez un reel : ”;cin À x ;if (x >= 0)
cout ¿ "La racine est : " ¿ sqrt(x);else
cout ¿ "Valeur indefinie";return 0;}
RacineCarree.cpp
Supposons que x = 2
![Page 57: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/57.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple d’un test “if-else”
#include <iostream>using namespace std;int main(){float x;cout ¿ “Entrez un reel : ”;cin À x ;if (x >= 0)
cout ¿ "La racine est : " ¿ sqrt(x);else
cout ¿ "Valeur indefinie";return 0;}
RacineCarree.cpp
Supposons que x = 2La condition est vraie
![Page 58: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/58.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple d’un test “if-else”
#include <iostream>using namespace std;int main(){float x;cout ¿ “Entrez un reel : ”;cin À x ;if (x >= 0)
cout ¿ "La racine est : " ¿ sqrt(x);else
cout ¿ "Valeur indefinie";return 0;}
RacineCarree.cpp
Supposons que x = 2La condition est vraieLa valeur 1.414 est affichée
![Page 59: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/59.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple d’un test “if-else”
#include <iostream>using namespace std;int main(){float x;cout ¿ “Entrez un reel : ”;cin À x ;if (x >= 0)
cout ¿ "La racine est : " ¿ sqrt(x);else
cout ¿ "Valeur indefinie";return 0;}
RacineCarree.cpp
Supposons que x =−1
![Page 60: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/60.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple d’un test “if-else”
#include <iostream>using namespace std;int main(){float x;cout ¿ “Entrez un reel : ”;cin À x ;if (x >= 0)
cout ¿ "La racine est : " ¿ sqrt(x);else
cout ¿ "Valeur indefinie";return 0;}
RacineCarree.cpp
Supposons que x =−1La condition est fausse
![Page 61: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/61.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple d’un test “if-else”
#include <iostream>using namespace std;int main(){float x;cout ¿ “Entrez un reel : ”;cin À x ;if (x >= 0)
cout ¿ "La racine est : " ¿ sqrt(x);else
cout ¿ "Valeur indefinie";return 0;}
RacineCarree.cpp
Supposons que x =−1La condition est fausse
Le message Valeur indéfinieest affiché
![Page 62: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/62.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Le test “switch-case”
switch (expression){case constante1:groupe d’instructions 1
...break;
case constante2:groupe d’instructions 2
...break;
...default:groupe d’instructions par défaut
...}
L’expression peut être une simple variable ou une expression arithmétique. Note : le break estutilisé pour faire sortir le programme de l’instruction switch.
![Page 63: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/63.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Le test “switch-case”
switch (expression){case constante1:groupe d’instructions 1
...break;
case constante2:groupe d’instructions 2
...break;
...default:groupe d’instructions par défaut
...}
Le programme évalue l’expression
L’expression peut être une simple variable ou une expression arithmétique. Note : le break estutilisé pour faire sortir le programme de l’instruction switch.
![Page 64: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/64.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Le test “switch-case”
switch (expression){case constante1:groupe d’instructions 1
...break;
case constante2:groupe d’instructions 2
...break;
...default:groupe d’instructions par défaut
...}
si la valeur de l’expression est égaleà constante1
L’expression peut être une simple variable ou une expression arithmétique. Note : le break estutilisé pour faire sortir le programme de l’instruction switch.
![Page 65: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/65.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Le test “switch-case”
switch (expression){case constante1:groupe d’instructions 1
...break;
case constante2:groupe d’instructions 2
...break;
...default:groupe d’instructions par défaut
...}
si la valeur de l’expression est égaleà constante1
le programme exécute la série d’ins-tructions 1 jusqu’à ce qu’il rencontrebreak, et sort alors du test
L’expression peut être une simple variable ou une expression arithmétique. Note : le break estutilisé pour faire sortir le programme de l’instruction switch.
![Page 66: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/66.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Le test “switch-case”
switch (expression){case constante1:groupe d’instructions 1
...break;
case constante2:groupe d’instructions 2
...break;
...default:groupe d’instructions par défaut
...}
si la valeur de l’expression est égaleà constante2
L’expression peut être une simple variable ou une expression arithmétique. Note : le break estutilisé pour faire sortir le programme de l’instruction switch.
![Page 67: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/67.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Le test “switch-case”
switch (expression){case constante1:groupe d’instructions 1
...break;
case constante2:groupe d’instructions 2
...break;
...default:groupe d’instructions par défaut
...}
si la valeur de l’expression est égaleà constante2
le programme exécute la série d’ins-tructions 2 jusqu’à ce qu’il rencontrebreak, et sort alors du test
L’expression peut être une simple variable ou une expression arithmétique. Note : le break estutilisé pour faire sortir le programme de l’instruction switch.
![Page 68: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/68.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Le test “switch-case”
switch (expression){case constante1:groupe d’instructions 1
...break;
case constante2:groupe d’instructions 2
...break;
...default:groupe d’instructions par défaut
...}
si la valeur de l’expression n’estégale à aucune des constantes pré-cédentes
L’expression peut être une simple variable ou une expression arithmétique. Note : le break estutilisé pour faire sortir le programme de l’instruction switch.
![Page 69: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/69.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Le test “switch-case”
switch (expression){case constante1:groupe d’instructions 1
...break;
case constante2:groupe d’instructions 2
...break;
...default:groupe d’instructions par défaut
...}
si la valeur de l’expression n’estégale à aucune des constantes pré-cédentes
le programme exécute les instruc-tions par défaut et sort ensuite dutest
L’expression peut être une simple variable ou une expression arithmétique. Note : le break estutilisé pour faire sortir le programme de l’instruction switch.
![Page 70: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/70.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple d’un test “switch-case”
#include <iostream>using namespace std;int main(){int x;cout ¿ “Entrez un entier : ”;cin À x ;
switch (x){case 1:case 2:case 3:cout ¿ "x vaut 1,2 ou 3";break;
default:cout ¿ "x ne vaut ni 1 ni 2 ni 3";
}
return 0;}
UnDeuxTrois.cpp
Supposons que x = 1
![Page 71: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/71.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple d’un test “switch-case”
#include <iostream>using namespace std;int main(){int x;cout ¿ “Entrez un entier : ”;cin À x ;
switch (x){case 1:case 2:case 3:cout ¿ "x vaut 1,2 ou 3";break;
default:cout ¿ "x ne vaut ni 1 ni 2 ni 3";
}
return 0;}
UnDeuxTrois.cpp
Supposons que x = 1
Le programme se branche au cas 1
![Page 72: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/72.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple d’un test “switch-case”
#include <iostream>using namespace std;int main(){int x;cout ¿ “Entrez un entier : ”;cin À x ;
switch (x){case 1:case 2:case 3:cout ¿ "x vaut 1,2 ou 3";break;
default:cout ¿ "x ne vaut ni 1 ni 2 ni 3";
}
return 0;}
UnDeuxTrois.cpp
Supposons que x = 1
Le programme se branche au cas 1
et exécute la série d’instructionsjusqu’à ce qu’il rencontre break
![Page 73: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/73.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
La boucle “for”
for(initialisation ;condition ;modification){. . .}
La boucle exécute le bloc d’instructions en fonction de l’état du compteur.
L’instruction initialisation affecte une valeur de départ au compteur
L’expression condition teste si le bloc peut être exécuté avec la valeur courante ducompteur
L’instruction modification change la valeur du compteur, une fois le bloc exécuté
![Page 74: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/74.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de boucle “for” (incrémentation)
#include <iostream>using namespace std;int main(){int i,n,s;s = 0;cout ¿ “Entrez un entier : ”;cin À n ;
for (i = 1; i <= n ; i++){s = s + i;}
cout ¿ s;return 0;}
Somme de 1 à n
Supposons que n = 3
![Page 75: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/75.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de boucle “for” (incrémentation)
#include <iostream>using namespace std;int main(){int i,n,s;s = 0;cout ¿ “Entrez un entier : ”;cin À n ;
for (i = 1; i <= n ; i++){s = s + i;}
cout ¿ s;return 0;}
Somme de 1 à n
Supposons que n = 3
Le compteur i est initialisé à 1
![Page 76: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/76.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de boucle “for” (incrémentation)
#include <iostream>using namespace std;int main(){int i,n,s;s = 0;cout ¿ “Entrez un entier : ”;cin À n ;
for (i = 1; i <= n ; i++){s = s + i;}
cout ¿ s;return 0;}
Somme de 1 à n
Supposons que n = 3
Le compteur i est initialisé à 1
La variable s prend la valeur 0+1= 1
![Page 77: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/77.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de boucle “for” (incrémentation)
#include <iostream>using namespace std;int main(){int i,n,s;s = 0;cout ¿ “Entrez un entier : ”;cin À n ;
for (i = 1; i <= n ; i++){s = s + i;}
cout ¿ s;return 0;}
Somme de 1 à n
Supposons que n = 3
Le compteur i passe à 2 ; il est pluspetit ou égal à 3
![Page 78: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/78.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de boucle “for” (incrémentation)
#include <iostream>using namespace std;int main(){int i,n,s;s = 0;cout ¿ “Entrez un entier : ”;cin À n ;
for (i = 1; i <= n ; i++){s = s + i;}
cout ¿ s;return 0;}
Somme de 1 à n
Supposons que n = 3
Le compteur i passe à 2 ; il est pluspetit ou égal à 3
La variable s prend la valeur 1+2= 3
![Page 79: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/79.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de boucle “for” (incrémentation)
#include <iostream>using namespace std;int main(){int i,n,s;s = 0;cout ¿ “Entrez un entier : ”;cin À n ;
for (i = 1; i <= n ; i++){s = s + i;}
cout ¿ s;return 0;}
Somme de 1 à n
Supposons que n = 3
Le compteur i passe à 3 ; il est pluspetit ou égal à 3
![Page 80: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/80.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de boucle “for” (incrémentation)
#include <iostream>using namespace std;int main(){int i,n,s;s = 0;cout ¿ “Entrez un entier : ”;cin À n ;
for (i = 1; i <= n ; i++){s = s + i;}
cout ¿ s;return 0;}
Somme de 1 à n
Supposons que n = 3
Le compteur i passe à 3 ; il est pluspetit ou égal à 3
La variable s prend la valeur 3+3= 6
![Page 81: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/81.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de boucle “for” (incrémentation)
#include <iostream>using namespace std;int main(){int i,n,s;s = 0;cout ¿ “Entrez un entier : ”;cin À n ;
for (i = 1; i <= n ; i++){s = s + i;}
cout ¿ s;return 0;}
Somme de 1 à n
Supposons que n = 3
Le compteur i passe à 4 ; il est plusgrand que 3
![Page 82: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/82.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de boucle “for” (incrémentation)
#include <iostream>using namespace std;int main(){int i,n,s;s = 0;cout ¿ “Entrez un entier : ”;cin À n ;
for (i = 1; i <= n ; i++){s = s + i;}
cout ¿ s;return 0;}
Somme de 1 à n
Supposons que n = 3
Le compteur i passe à 4 ; il est plusgrand que 3
La valeur 6 est affichée
![Page 83: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/83.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de boucle “for” (décrémentation)
#include <iostream>using namespace std;int main(){int i;
for (i = 10; i > 0 ; i--){cout ¿ i ¿ « ", ";}
cout ¿ "feu !" ¿ endl;return 0;}
Compte à rebours
![Page 84: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/84.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
La boucle “while”
while (condition){. . .}
A chaque itération d’une boucle “while”, le programme teste la condition puis exécute le bloc sicette condition est vraie. Le bloc peut donc être exécuté zero fois.
La boucle “do-while”
do{. . .}
while (condition);
A chaque itération d’une boucle “do-while”, le programme exécute le bloc puis vérifie que lacondition reste vraie. Le bloc est donc exécuté au moins une fois.
![Page 85: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/85.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
La boucle “while”
while (condition){. . .}
A chaque itération d’une boucle “while”, le programme teste la condition puis exécute le bloc sicette condition est vraie. Le bloc peut donc être exécuté zero fois.
La boucle “do-while”
do{. . .}
while (condition);
A chaque itération d’une boucle “do-while”, le programme exécute le bloc puis vérifie que lacondition reste vraie. Le bloc est donc exécuté au moins une fois.
![Page 86: Algorithmique Cours 3 - Centre de Recherche en ...koriche/Algorithmique-2012-Partie3.pdf · un code source écrit dans un langage de programmation ... traduire le code source de l’algorithme](https://reader034.vdocuments.pub/reader034/viewer/2022052303/5b9b0aa409d3f22d2a8c8017/html5/thumbnails/86.jpg)
Compilation Données Opérateurs et Expressions Instructions Simples Instructions Composées
Exemple de boucle “do-while”
#include <iostream>#include <cstdlib>#include <ctime>using namespace std;int main(){int iSecret, iDevine;
srand(time(NULL));iSecret = (rand() % 10) + 1;
do{cout ¿ "Donne un nombre de 1 à 10 : ";cin À iDevine;if (iSecret < iDevine);cout ¿ "Plus petit !" « endl;
else if (iSecret > iDevine);cout ¿ "Plus grand !" « endl;
}while (iSecret != iDevine);
cout ¿ "Trouvé !" ¿ endl;return 0;}
Génération d’un nombre aléa-toire entre 1 et 10
La boucle est exécutée jus-qu’à ce l’utilisateur trouve lenombre