Académique Documents
Professionnel Documents
Culture Documents
Processeur (CPU) : cerveau de l'ordinateur qui exécute les programmes et traite les données
Mémoire vive (RAM) : mémoire de travail de l'ordinateur
Disque dur : mémoire de stockage de l'ordinateur
Cartes spécialisées : carte graphique, carte son, etc.
Interfaces : ports USB, HDMI, VGA, etc.
Périphériques d'entrée/sortie
L'assembleur
Problème : le langage machine est difficile à comprendre et à utiliser.
Idée: trouver un langage compréhensible par l'homme et qui peut être traduit en langage machine. Assembler est un langage de programmation de bas niveau qui permet de
programmer en langage machine à l'aide de mnémoniques (ADD, SUB, JMP, etc.).
Facilité d'utilisation
Indépendance de l'architecture de l'ordinateur
Manipulation de données complexes
Nécessité d'un traducteur (compilateur ou interpréteur) pour traduire le code source en langage machine.
La différence entre un compilateur et un interpréteur est que le compilateur traduit le code source en langage machine en une seule fois, tandis que l'interpréteur traduit le code
source en langage machine ligne par ligne.
Compilateur
Un compilateur est un programme qui traduit le code source en langage machine en une seule fois.
Interpréteur
Un interpréteur est un programme qui traduit le code source en langage machine ligne par ligne.
Un programme
Un programme est une suite d'instructions qui permet de résoudre un problème donné.
Cette méthode de résolution de problème est effectuée par une suite d'instructions appelée algorithme.
Ces instructions sont écrites dans un langage de programmation.
Un programme est un algorithme écrit dans un langage de programmation.
La programmation est l'ensemble des activités qui permettent d'écrire un programme : analyse, conception, codage, test, etc.
Langages de programmation
Types de langages:
La réalisation d'un programme est un processus itératif, qui passe par l'écriture d'algorithmes et de programmes.
Un algorithme est une suite finie et non ambiguë d'instructions permettant de résoudre un problème ou d'obtenir un résultat.
Une bonne pratique consiste à écrire l'algorithme en langage naturel, puis à le traduire dans un langage de programmation.
Le pseudo-code :
Une variable est caractérisée par un nom (identificateur) et un type (entier, réel, caractère, chaine de caractère, ... ).
Conseil : pour la lisibilité du code, il est recommandé de choisir des noms de variables explicites.
Types de variables
Le type d'une variable définit la nature de la valeur qu'elle peut contenir. Les types de variables les plus courants sont :
entier : nombres entiers (positifs ou négatifs)
réel : nombres réels (positifs ou négatifs)
caractère : un seul caractère
chaine de caractères : une suite de caractères
booléen : vrai ou faux
variable x : entier
variable y : réel
variable z : caractère
variable ch : chaine de caractères
variable b : booléen
Instructions d'affectation
L'affectation consiste à stocker une valeur dans une variable.
x <- 5
y <- 3.14
z <- 'a'
ch <- "Bonjour"
b <- vrai
Attention :
beaucoup de langages de programmation utilisent le symbole = pour l'affectation, mais en pseudo-code, on utilise le symbole <-.
Ne pas confondre :
Exercice 1 :
Donner les valeurs des variables A, B et C après exécution des instructions suivantes :
Variables A, B, C : entiers
Début
A <- 3
B <- 7
A <- B (devient 7)
B <- A + 5 (devient 12)
C <- A + B (devient 19)
C <- B - A (devient 5)
Fin
Exercice 2 :
Donner les valeurs des variables A et B après exécution des instructions suivantes :
Variables A, B : entiers
Début
A <- 1
B <- 2
A <- B (devient 2)
B <- A
Fin
Variables A, B : entiers
Début
A <- 1
B <- 2
C <- A
A <- B
B <- C
Fin
Expressions et opérateurs
Une expression est une suite d'opérandes et d'opérateurs qui peut être évaluée en une valeur, une variable ou un booléen. Par exemple, 2+3 est une expression qui peut être
évaluée en 5.
En cas de besoin, on peut utiliser des parenthèses pour modifier la priorité des opérateurs.
La lecture permet de saisir une valeur à partir du clavier et de la stocker dans une variable. En pseudo-code, la lecture se fait de la manière suivante :
lire x
Remarque : Le programme s'arrête lorsqu'il rencontre l'instruction lire. Il attend que l'utilisateur saisisse une valeur à partir du clavier. Lorsque l'utilisateur a terminé, il appuie sur la
touche Entrée. La valeur saisie est alors stockée dans la variable.
L'écriture permet d'afficher une valeur à l'écran. En pseudo-code, l'écriture se fait de la manière suivante :
ecrire x
Conseil : pour améliorer la lisibilité du code, on peut afficher un message avant d'afficher la valeur de la variable.
Ecrire un algorithme qui demande un nombre entier à l'utilisateur et qui affiche ce nombre multiplié par 2.
Variables A, B : entier
Début
ecrire "Saisir un nombre entier : "
lire A
B <- A * 2
ecrire "Le double de ", A, " est ", B"
Fin
Ecrire un algorithme qui vous demande de saisir votre nom et votre prénom, et qui affiche un message de bienvenue.
En pseudo-code, les opérateurs logiques combinés sont représentés par les symboles suivants :
et : ET
ou : OU
ou exclusif : XOR
non : NON
Structures conditionnelles
Instructions conditionnelles
C'est quoi ?
Les instructions conditionnelles permettent d'exécuter des instructions en fonction d'une condition.
La condition est une expression qui peut être évaluée en un booléen (vrai ou faux).
Exemple Si ... Alors ... Sinon Algorithme Affichage de la valeur absolue d'un nombre
Variable x : réel
Début
ecrire "Saisir un nombre : "
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
VARIABLES
X EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Ecrire un nombre entier : "
LIRE X
SI (X % 3 == 0) ALORS
DEBUT_SI
AFFICHER "C'est divisible par 3"
SINON
AFFICHER "C'est pas divisible par 3"
FIN_SI
FIN_ALGORITHME
Si condition1 alors instructions SinonSi condition2 alors instructions SinonSi condition3 alors instructions Sinon instructions finsi
Exemple Si ... Alors ... SinonSi ... Alors ... SinonSi ... Alors ... Sinon Algorithme Affichage de la valeur absolue d'un nombre
Variable n : entier
Début
ecrire "Saisir un nombre : "
lire n
Si n > 0 alors
ecrire "La valeur absolue de ", n, " est ", n
SinonSi n < 0 alors
ecrire "La valeur absolue de ", n, " est ", -n
Sinon
ecrire "La valeur absolue de ", n, " est ", 0
finsi
Fin
Exercice 5
Le prix de photocopies dans une reprographie varie selon le nombre demandé :
Ecrivez un algorithme qui demande à l'utilisateur le nombre de photocopies qu'il souhaite réaliser et qui affiche le prix total.
VARIABLES
nbCopies EST_DU_TYPE NOMBRE
prix EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Combien de photocopies souhaitez-vous ?"
LIRE nbCopies
SINON
DEBUT_SINON
SI (nbCopies >= 10 ET nbCopies < 20) ALORS
DEBUT_SI
prix PREND_LA_VALEUR nbCopies * 0.4
AFFICHER "Le prix total est de "
AFFICHER prix
AFFICHER " euros"
FIN_SI
SINON
DEBUT_SINON
prix PREND_LA_VALEUR nbCopies * 0.3
AFFICHER "Le prix total est de "
AFFICHER prix
AFFICHER " euros"
FIN_SINON
FIN_SINON
FIN_ALGORITHME
Exercice 6
1- Déterminer le montant d'un capital c placé à un taux fixe t pendant un nombre d'années n. On suppose que c, t et n sont lus. Exemple de calcul (le taux est de 4%, soit 0,04) : Cn =
10 000 * (1 + 0,04) ^ 5 = 12 166,40 euros soit un gain de 2 166,40 euros.
VARIABLES
c EST_DU_TYPE NOMBRE
t EST_DU_TYPE NOMBRE
n EST_DU_TYPE NOMBRE
Cn EST_DU_TYPE NOMBRE
x EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Saisir le capital : "
LIRE c
AFFICHER "Saisir le taux : "
LIRE t
t PREND_LA_VALEUR t / 100
AFFICHER "Saisir le nombre d'années : "
LIRE n
x PREND_LA_VALEUR 1+t
Cn PREND_LA_VALEUR c * pow(x,n)
Cn PREND_LA_VALEUR round(Cn)
FIN_ALGORITHME
Exercice 7
Ecrire un algorithme qui demande l'âge d'un enfant à l'utilisateur. Ensuite, il l'informe de sa catégorie pour une licence sportive :
"Baby" de 3 à 6 ans
"Poussin" de 7 à 8 ans
"Pupille" de 9 à 10 ans
"Minime" de 11 à 12 ans
"Cadet" à partir de 13 ans
VARIABLES
age EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Quel est l'âge de l'enfant ?"
LIRE age
SI (age >= 3 ET age <= 6) ALORS
DEBUT_SI
AFFICHER "L'enfant est dans la catégorie Baby"
FIN_SI
SINON
DEBUT_SINON
SI (age >= 7 ET age <= 8) ALORS
DEBUT_SI
AFFICHER "L'enfant est dans la catégorie Poussin"
FIN_SI
SINON
DEBUT_SINON
SI (age >= 9 ET age <= 10) ALORS
DEBUT_SI
AFFICHER "L'enfant est dans la catégorie Pupille"
FIN_SI
SINON
DEBUT_SINON
SI (age >= 11 ET age <= 12) ALORS
DEBUT_SI
AFFICHER "L'enfant est dans la catégorie Minime"
FIN_SI
SINON
DEBUT_SINON
SI (age >= 13) ALORS
DEBUT_SI
AFFICHER "L'enfant est dans la catégorie Cadet"
FIN_SI
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_ALGORITHME
Exercice 8
La figure ci-dessous indique la taille (1, 2 ou 3) d'un vêtement en fonction de la taille d'une personne exprimée en centimètres et de son poids exprimé en kilogrammes. Ecrivez un
programme qui détermine la taille d'un vêtement en fonction de la taille et du poids d'une personne.
Critères :
1. taille 1 : - taille entre 145cm et 171cm et poids entre 43kg et 47kg - taille entre 145cm et 168cm et poids entre 48kg et 53kg - taille entre 145cm et 165cm et poids entre 54kg
et 59kg - taille entre 145cm et 162cm et poids entre 60kg et 65kg
2. taille 2 : - taille entre 169cm et 180cm et poids entre 48kg et 53kg - taille entre 166cm et 177cm et poids entre 54kg et 59kg - taille entre 163cm et 174cm et poids entre 60kg
et 65kg - taille entre 160cm et 171cm et poids entre 66kg et 71kg
3. taille 3 : - taille entre 178cm et 185cm et poids entre 54kg et 59kg - taille entre 175cm et 185cm et poids entre 60kg et 65kg - taille entre 172cm et 185cm et poids entre 66kg
et 71kg - taille entre 163cm et 185cm et poids entre 72kg et 77kg
4. pas de taille dispo : - taille entre 145cm et 159cm et poids entre 66kg et 77kg - taille entre 145cm et 162cm et poids entre 72kg et 77kg - taille entre 172cm et 183cm et poids
entre 43kg et 47kg - taille supérieur ou égale à 183 et poids entre 48kg et 53kg
VARIABLES
taille EST_DU_TYPE NOMBRE
poids EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Quelle est votre taille ?"
LIRE taille
AFFICHER "Quel est votre poids ?"
LIRE poids
SI (taille >= 145 ET taille <= 171 ET poids >= 43 ET poids <= 47) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 1"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 145 ET taille <= 168 ET poids >= 48 ET poids <= 53) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 1"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 145 ET taille <= 165 ET poids >= 54 ET poids <= 59) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 1"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 145 ET taille <= 162 ET poids >= 60 ET poids <= 65) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 1"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 169 ET taille <= 180 ET poids >= 48 ET poids <= 53) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 2"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 166 ET taille <= 177 ET poids >= 54 ET poids <= 59) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 2"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 163 ET taille <= 174 ET poids >= 60 ET poids <= 65) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 2"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 160 ET taille <= 171 ET poids >= 66 ET poids <= 71) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 2"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 178 ET taille <= 185 ET poids >= 54 ET poids <= 59) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 3"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 175 ET taille <= 185 ET poids >= 60 ET poids <= 65) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 3"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 172 ET taille <= 185 ET poids >= 66 ET poids <= 71) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 3"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 163 ET taille <= 185 ET poids >= 72 ET poids <= 77) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 3"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 145 ET taille <= 159 ET poids >= 66 ET poids <= 77) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 4"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 145 ET taille <= 162 ET poids >= 72 ET poids <= 77) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 4"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 172 ET taille <= 183 ET poids >= 43 ET poids <= 47) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 4"
FIN_SI
SINON
DEBUT_SINON
SI (taille >= 183 ET poids >= 48 ET poids <= 53) ALORS
DEBUT_SI
AFFICHER "Vous faites du taille 4"
FIN_SI
SINON
DEBUT_SINON
AFFICHER "Aucune taille disponible"
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_SINON
FIN_ALGORITHME
si la condition est vraie, la boucle est exécutée, puis la condition est à nouveau testée. Si elle est encore vraie, la boucle est à nouveau exécutée, etc.
si la condition est fausse, la boucle n'est pas exécutée et on exécute l'instruction FinTantQue.
Remarques :
Exemple : Contrôle de saisie d'une lettre majuscule jusqu'à ce que la lettre entrée soit valable.
Variable C : caractère
Début
ecrire "Saisir une lettre majuscule : "
lire C
TantQue (C < 'A' ou C > 'Z')
ecrire "Erreur, saisir une lettre majuscule : "
lire C
fTantQue
ecrire "La lettre saisie est ", C
Fin
Exemple : Un algirithme qui détermine le premier nombre entier N tel que la somme 1 à N dépasse strictement 100.
Variable N, S : entiers
Début
N <- 0
S <- 0
TantQue (S <= 100)
N <- N + 1
S <- S + N
fTantQue
ecrire "Le premier nombre entier N tel que la somme 1 à N dépasse strictement 100 est ", N
Fin
Exercice 9
Ecrire un algorithme qui demande à l'utilisateur un nombre compris entre 1 et 3 jusqu'à ce que la réponse convienne.
VARIABLES
nb EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Saisir un nombre entre 1 et 3 : "
LIRE nb
TANT_QUE (nb <= 1 OU nb >= 3) FAIRE
DEBUT_TANT_QUE
AFFICHER "Erreur, saisir un nombre entre 1 et 3 : "
LIRE nb
FIN_TANT_QUE
AFFICHER "Le nombre saisi est OK", nb
FIN_ALGORITHME
Exercice 10
Soit un capital c placé à un taux t. On veut connaître le nombre d'années nécessaires au doublement de ce capital. Exemple de calcul (le taux est de 4%, soit 0,04) : Cn = 10 000 * (1
+ 0,04) ^ 5 = 12 166 euros soit un gain de 2 166 euros.
VARIABLES
c EST_DU_TYPE NOMBRE
t EST_DU_TYPE NOMBRE
n EST_DU_TYPE NOMBRE
Cn EST_DU_TYPE NOMBRE
x EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Saisir le capital : "
LIRE c
AFFICHER "Saisir le taux : "
LIRE t
t PREND_LA_VALEUR t / 100
n PREND_LA_VALEUR 0
x PREND_LA_VALEUR 1+t
Cn PREND_LA_VALEUR c * pow(x,n)
Cn PREND_LA_VALEUR round(Cn)
TANT_QUE (Cn <= 2*c) FAIRE
DEBUT_TANT_QUE
n PREND_LA_VALEUR n + 1
Cn PREND_LA_VALEUR c * pow(x,n)
Cn PREND_LA_VALEUR round(Cn)
FIN_TANT_QUE
AFFICHER "Le nombre d'années nécessaires au doublement du capital est de "
AFFICHER n
FIN_ALGORITHME
Le nombre d'itérations est connu à l'avance. Il dépend de la valeur de départ et de la valeur d'arrivée.
Compteur est une variable qui doit être déclarée avant la boucle.
Pas est un entier qui peut être positif ou négatif. Il permet de faire évoluer le compteur. Pas peut être omis. Dans ce cas, il prend la valeur 1.
Initiale et finale peuvent être des valeurs, des variables ou des expressions.
Pour compteur allant de initiale à finale par pas faire instructions FinPour
Exemple : Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul.
Variable
x, p : réels
n, i : entiers
Début
ecrire "Saisir un réel x : "
lire x
ecrire "Saisir un entier n : "
lire n
p <- 1
Pour i allant de 1 à n faire
p <- p * x
FinPour
ecrire x, " à la puissance ", n, " est égal à ", p
Fin
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 tant que la condition est vraie.
exemple : Pour i allant de 1 à 10 faire Pour j allant de 1 à 10 faire Ecrire ('O') FinPour Ecrire ("X") FinPour
La boucle "pour" est utilisée lorsque le nombre d'itérations est connu à l'avance.
La boucle "répéter jusqu'à" est utilisée lorsque l'on veut que les instructions soient exécutées au moins une fois.
Exercice 11
Ecrire l'algorithme permettant d'afficher la table de multiplication par 9 en utilisant une boucle Pour.
VARIABLES
i EST_DU_TYPE NOMBRE
j EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR i ALLANT_DE 1 A 10
DEBUT_POUR
j PREND_LA_VALEUR 9 * i
AFFICHER "9 * "
AFFICHER i
AFFICHER " = "
AFFICHER* j
FIN_POUR
FIN_ALGORITHME
Exercice 13
Ecrire un algorithme qui demande successivement 6 nombre au hasard à l'utilisateur, et qui lui dit ensuite quel était le plus grand parmi ces 6 nombres. Il faut utiliser une boucle.
VARIABLES
nb
i EST_DU_TYPE NOMBRE
nb EST_DU_TYPE NOMBRE
max EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR i ALLANT_DE 1 A 6
DEBUT_POUR
AFFICHER "Saisir un nombre : "
LIRE nb
SI (nb > max OU i == 1) ALORS
DEBUT_SI
max PREND_LA_VALEUR nb
FIN_SI
FIN_POUR
AFFICHER "Le plus grand nombre est : "
AFFICHER max
FIN_ALGORITHME
Exercice 14
Ecrire un algorithme qui demande un nombre de départ et qui calcule la somme des entiers jusqu'à ce nombre. Par exemple, si l'on entre 5, le programme doit calculer : 1 + 2 + 3 + 4
+ 5 = 15
VARIABLES
i EST_DU_TYPE NOMBRE
nb EST_DU_TYPE NOMBRE
somme EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
FIN_ALGORITHME
Exercice 15
Ecrire un algorithme qui permet d'afficher les tables de multiplication de 1 à 10 d'un seul coup.
VARIABLES
i EST_DU_TYPE NOMBRE
j EST_DU_TYPE NOMBRE
k EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR i ALLANT_DE 1 A 10
DEBUT_POUR
POUR j ALLANT_DE 1 A 10
DEBUT_POUR
k PREND_LA_VALEUR i * j
AFFICHER i
AFFICHER " * "
AFFICHER j
AFFICHER " = "
AFFICHER* k
FIN_POUR
FIN_POUR
FIN_ALGORITHME
Une autre solution serait d'utiliser la structure conditionnelle (si... alors... sinon) pour afficher les tables de multiplication de 1 à 10.
FONCTIONS_UTILISEES
VARIABLES
i EST_DU_TYPE NOMBRE
j EST_DU_TYPE NOMBRE
Table EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
j PREND_LA_VALEUR 1
i PREND_LA_VALEUR 1
POUR Table ALLANT_DE 1 A 100
DEBUT_POUR
AFFICHERCALCUL* i * j
j PREND_LA_VALEUR j + 1
Exercice 15 bis
La ville de Tourcoing a un taux d'accroissement de 0.89 %. Ecrire un algorithme donnant le nombre d'années nécessaires pour atteindre 120 000 habitants. On sait qu'en 2015 la ville
de Tourcoing comptait 96 809 habitants.
VARIABLES
annee EST_DU_TYPE NOMBRE
population EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
annee PREND_LA_VALEUR 2015
population PREND_LA_VALEUR 96809
TANT_QUE (population <= 120000) FAIRE
DEBUT_TANT_QUE
population PREND_LA_VALEUR population * 1.0089
population PREND_LA_VALEUR round(population)
annee PREND_LA_VALEUR annee + 1
FIN_TANT_QUE
AFFICHER "Le nombre d'années nécessaires pour atteindre 120 000 habitants est de "
AFFICHER annee - 2015
FIN_ALGORITHME
Exercice 16
Ecrire un programme qui demande à l'utilisateur de saisir 20 notes d'élèves et qui propose le menu suivant :
DEBUT_ALGORITHME
POUR i ALLANT_DE 1 A 20
DEBUT_POUR
AFFICHER "Saisir une note : "
LIRE note
SI (note < min OU i == 1) ALORS
DEBUT_SI
min PREND_LA_VALEUR note
FIN_SI
SI (note > max OU i == 1) ALORS
DEBUT_SI
max PREND_LA_VALEUR note
FIN_SI
somme PREND_LA_VALEUR somme + note
FIN_POUR
moyenne PREND_LA_VALEUR somme / 20
AFFICHER* "1. Afficher la plus petite note"
AFFICHER* "2. Afficher la plus grande note"
AFFICHER* "3. Afficher la moyenne de la classe"
AFFICHER "Saisir votre choix : "
LIRE choix
SI (choix == 1) ALORS
DEBUT_SI
AFFICHER "La plus petite note est : "
AFFICHER min
FIN_SI
SI (choix == 2) ALORS
DEBUT_SI
AFFICHER "La plus grande note est : "
AFFICHER max
FIN_SI
SI (choix == 3) ALORS
DEBUT_SI
AFFICHER "La moyenne de la classe est : "
AFFICHER moyenne
FIN_SI
FIN_ALGORITHME
Pour ne pas sortir du menu, on peut utiliser une boucle tant que.
VARIABLES
i EST_DU_TYPE NOMBRE
note EST_DU_TYPE NOMBRE
min EST_DU_TYPE NOMBRE
max EST_DU_TYPE NOMBRE
moyenne EST_DU_TYPE NOMBRE
somme EST_DU_TYPE NOMBRE
choix EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR i ALLANT_DE 1 A 20
DEBUT_POUR
AFFICHER "Saisir une note : "
LIRE note
SI (note < min OU i == 1) ALORS
DEBUT_SI
min PREND_LA_VALEUR note
FIN_SI
SI (note > max OU i == 1) ALORS
DEBUT_SI
max PREND_LA_VALEUR note
FIN_SI
somme PREND_LA_VALEUR somme + note
FIN_POUR
moyenne PREND_LA_VALEUR somme / 20
TANT_QUE (choix != 4) FAIRE
DEBUT_TANT_QUE
AFFICHER* "1. Afficher la plus petite note"
AFFICHER* "2. Afficher la plus grande note"
AFFICHER* "3. Afficher la moyenne de la classe"
AFFICHER* "4. Quitter"
AFFICHER "Saisir votre choix : "
LIRE choix
SI (choix == 1) ALORS
DEBUT_SI
AFFICHER "La plus petite note est : "
AFFICHER* min
FIN_SI
SI (choix == 2) ALORS
DEBUT_SI
AFFICHER "La plus grande note est : "
AFFICHER* max
FIN_SI
SI (choix == 3) ALORS
DEBUT_SI
AFFICHER "La moyenne de la classe est : "
AFFICHER* moyenne
FIN_SI
FIN_TANT_QUE
FIN_ALGORITHME
Exercice 17
Ecrire un programme qui demande à l'utilisateur de saisir des notes et qui propose le menu suivant :
DEBUT_ALGORITHME
POUR i ALLANT_DE 1 A 20
DEBUT_POUR
AFFICHER "Saisir une note : "
LIRE note
SI (note < min OU i == 1) ALORS
DEBUT_SI
min PREND_LA_VALEUR note
FIN_SI
SI (note > max OU i == 1) ALORS
DEBUT_SI
max PREND_LA_VALEUR note
FIN_SI
somme PREND_LA_VALEUR somme + note
FIN_POUR
moyenne PREND_LA_VALEUR somme / 20
TANT_QUE (choix != 4) FAIRE
DEBUT_TANT_QUE
AFFICHER* "1. Afficher la plus petite note"
AFFICHER* "2. Afficher la plus grande note"
AFFICHER* "3. Afficher la moyenne de la classe"
AFFICHER* "0. Quitter"
AFFICHER "Saisir votre choix : "
LIRE choix
SI (choix == 1) ALORS
DEBUT_SI
AFFICHER "La plus petite note est : "
AFFICHER* min
FIN_SI
SI (choix == 2) ALORS
DEBUT_SI
AFFICHER "La plus grande note est : "
AFFICHER* max
FIN_SI
SI (choix == 3) ALORS
DEBUT_SI
AFFICHER "La moyenne de la classe est : "
AFFICHER* moyenne
FIN_SI
FIN_TANT_QUE
FIN_ALGORITHME
Nous allons voir un autre type de programmation, la programmation fonctionnelle. C'est ce qu'on appelle une programmation modulaire. C'est un type de programmation qui consiste
à découper un programme en plusieurs parties appelées modules. Chaque module est une partie du programme qui effectue une tâche précise.
A quoi ça sert ?
Les fonctions et les procédures permettent de découper un programme en plusieurs parties. Elles ont plusieurs avantages :
Elles permettent de réutiliser du code.
Elles permettent de rendre le code plus lisible.
Elles permettent de rendre le code plus maintenable.
Elles permettent de rendre le code plus testable.
Variable p : entier;
Debut
p <- perimetre(5, 3);
Ecrire("Le perimètre est:", p);
Fin
Exercice 18
Définir une fonction qui renvoie le plus grand de deux nombres différents.
Ecrire un programme qui demande deux nombres à l'utilisateur et affiche le plus grand des deux.
FONCTIONS_UTILISEES
FONCTION plusGrand(a,b)
VARIABLES_FONCTION
max EST_DU_TYPE NOMBRE
DEBUT_FONCTION
max PREND_LA_VALEUR a
SI (b > a) ALORS
DEBUT_SI
max PREND_LA_VALEUR b
FIN_SI
RENVOYER max
FIN_FONCTION
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
maxi EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
FIN_ALGORITHME
Une procédure est un sous-programme semblable à une fonction mais qui ne retourne pas de valeur.
Procedure nomProcedure(paramètres);
Instructions constituant la procédure
Fin Procedure
afficherMessage("Bonjour");
Remarque : Contrairement à l'appel d'une fonction qui peut être utilisé dans une expression, l'appel d'une procédure ne peut pas être utilisé dans une expression.
Les paramètres d'une procédure servent à échanger des données entre le programme principal et la procédure.
Les paramètres placés dans la décclaration d'une procédure sont appelés paramètres formels. Ces paramètres peuvent prendre toutes les valeurs possibles mais sont
ignorés par le programme principal.
Les paramètres placés dans l'appel d'une procédure sont appelés paramètres effectifs. Ces paramètres doivent être des variables ou des constantes. Ils contiennent les
valeurs qui seront utilisées par la procédure.
Le nombre de paramètres effectifs doit être égal au nombre de paramètres formels. L'ordre et le type des paramètres effectifs doivent correspondre à l'ordre et au type des
paramètres formels.
Transmission des paramètres
Il existe deux modes de transmission de paramètres dans les langages de programmation:
La transmission par valeur : les valeurs des paramètres effectifs sont affectées aux paramètres formels correspondants au moment de l'appel de la procédure. Dans
ce mode le paramètre effectif ne subit aucune modification.
La transmission par adresse (ou par référence) : les adresses des paramètres effectifs sont transmises à la procédure appelante. Dans ce mode, le paramètre effectif
subit les mêmes modifications que le paramètre formel lors de l'exécution de la procédure.
Remarque : les paramètres effectifs doit être une variable (et non une valeur) lorsqu'il s'agit d'une transmission par adresse
Une variable déclarée dans une procédure est appelée variable locale. Elle n'est accessible que dans la procédure où elle est déclarée et existe pendant toute la durée
d'exécution de la procédure.
Exercice
Ecrire un programme qui demande à l'utilisateur de saisir des notes et qui propose le menu suivant :
On arrête quand l'utilisateur saisie la valeur 0. Mettre le menu dans une procédure.
FONCTIONS_UTILISEES
FONCTION afficherMenu ()
VARIABLES_FONCTION
DEBUT_FONCTION
AFFICHER* "1. Afficher la plus petite note"
AFFICHER* "2. Afficher la plus grande note"
AFFICHER* "3. Afficher la moyenne de la classe"
AFFICHER* "0. Quitter"
AFFICHER "Saisir votre choix : "
LIRE choix
SI (choix == 1) ALORS
DEBUT_SI
AFFICHER "La plus petite note est : "
AFFICHER* min
FIN_SI
SI (choix == 2) ALORS
DEBUT_SI
AFFICHER "La plus grande note est : "
AFFICHER* max
FIN_SI
SI (choix == 3) ALORS
DEBUT_SI
AFFICHER "La moyenne de la classe est : "
AFFICHER* moyenne
FIN_SI
FIN_FONCTION
VARIABLES
note EST_DU_TYPE NOMBRE
i EST_DU_TYPE NOMBRE
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
min EST_DU_TYPE NOMBRE
max EST_DU_TYPE NOMBRE
moyenne EST_DU_TYPE NOMBRE
somme EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR i ALLANT_DE 1 A 20
DEBUT_POUR
AFFICHER "Saisir une note : "
LIRE note
FIN_POUR
APPELER_FONCTION afficherMenu()
FIN_ALGORITHME
Les tableaux
Définition
Un tableau est une structure de données qui permet de stocker plusieurs valeurs de même type dans une seule variable.
Le seul moyen de stocker ces notes est d'utiliser 30 variables différentes. C'est fastidieux et peu pratique.
Pour résoudre ce problème, on peut utiliser un tableau. Un tableau est une structure de données qui permet de stocker plusieurs valeurs de même type dans une seule
variable.
Un tableau est un ensemble de valeurs de même type. Chaque valeur est repérée par un indice. L'indice d'un tableau commence à 0.
Une variable entière nommé indice permet de parcourir le tableau. Elle permet d'indiquer la position de la valeur dans le tableau.
La déclaration d'un tableau s'effectue en précisant le type des valeurs qu'il contient et le nombre de valeurs qu'il contient.
En pseudo-code :
Exemple :
On peut définir des tableaux de tous types : tableaux de réels, tableaux de caractères, tableaux de chaînes de caractères, tableaux de booléens, etc.
Remarques :
L'accès à un élément du tableau se fait par son indice. L'indice d'un tableau commence à 0. Il est possible de déclarer un tableau sans préciser au départ sa dimension. Cette
précision est ultérieurment apportée par une instruction de redimensionnement. Un tableau est inutilisable tant qu'il n'a pas été redimensionné. Un grand avantage des
tableaux est qu'on peut traiter les données qui y sont stockées de façon simple en utilisant des boucles.
Exemple : Procédures qui permettent de saisir et d'afficher les éléments d'un tableau :
Exemple d'appel: Algorithme principal où on fait l'appel des procédures SaisieTab et AfficheTab:
Algorithme Tableaux
variable p : entier
Tableau A[10]: réel
Début
p←10 SaisieTab(p, A)
AfficheTab(p,A)
Fin
Exemple : Tableaux : fonction longueur La plupart des langages offrent une fonc'on longueur qui donne la dimension du tableau. Les procédures Saisie et Affiche peuvent être
réécrites comme suit :
Exercice 19
Ecrire un algorithme qui déclare et stocke dans un tableau 10 chiffres, puis qui affiche le 9éme élément de ma liste.
VARIABLES
i EST_DU_TYPE NOMBRE
tab EST_DU_TYPE LISTE
DEBUT_ALGORITHME
POUR i ALLANT_DE 0 A 9
DEBUT_POUR
AFFICHER "Saisir un nombre : "
LIRE tab[i]
FIN_POUR
AFFICHER "Le 9ème élément de la liste est : "
AFFICHER tab[8]
FIN_ALGORITHME
Exercice 20
Écrire un algorithme permeWant de saisir 15 notes et de les afficher.
VARIABLES
i EST_DU_TYPE NOMBRE
tab EST_DU_TYPE LISTE
DEBUT_ALGORITHME
POUR i ALLANT_DE 1 A 15
DEBUT_POUR
AFFICHER "Saisir une note : "
LIRE tab[i]
FIN_POUR
AFFICHER "Les 15 notes sont : "
POUR i ALLANT_DE 1 A 15
DEBUT_POUR
AFFICHER* tab[i]
FIN_POUR
FIN_ALGORITHME
exemple de lecture d’une matrice Procédure qui permet de saisir les éléments d'une matrice :
```bash
Procedure saisirMatrice(var mat : tableau[1..30, 1..30] de réel; n, m : entier);
Variable i, j : entier;
Debut
Pour i allant de 1 à n faire
Pour j allant de 1 à m faire
Ecrire("Saisir un réel : ");
Lire(mat[i, j]);
FinPour
FinPour
Fin
```
```bash
Procedure afficherMatrice(var mat : tableau[1..30, 1..30] de réel; n, m : entier);
Variable i, j : entier;
Debut
Pour i allant de 1 à n faire
Pour j allant de 1 à m faire
Ecrire(mat[i, j], " ");
FinPour
Ecrire();
FinPour
Fin
```
Exemple d'algorithme principal où on fait l'appel des procédures définies précédemment pour la saisie, l'affichage et la somme des ma
```bash
Algorithme Matrices
variables tableauM1[3][4],M2 [3][4],M3 [3][4] : réel
Début
SaisieMatrice(3, 4, M1)
SaisieMatrice(3, 4, M2)
AfficheMatrice(3,4, M1)
AfficheMatrice(3,4, M2)
SommeMatrice(3, 4, M1,M2,M3)
AfficheMatrice(3,4, M3)
Fin
```
Exercice 21
Écrire un algorithme permettant la saisie des notes d'une classe de 15 étudiants pour 3 matières, tel que:
FONCTIONS_UTILISEES
VARIABLES
i EST_DU_TYPE NOMBRE
j EST_DU_TYPE NOMBRE
tab EST_DU_TYPE LISTE
DEBUT_ALGORITHME
POUR i ALLANT_DE 1 A 3
DEBUT_POUR
POUR j ALLANT_DE 1 A 3
DEBUT_POUR
AFFICHER "Saisir une note : "
LIRE tab[i*3 + j]
FIN_POUR
FIN_POUR
AFFICHER "Les notes de la première matière sont : "
POUR j ALLANT_DE 1 A 3
DEBUT_POUR
AFFICHER* tab[1*3 + j]
FIN_POUR
AFFICHER "Les notes de la deuxième matière sont : "
POUR j ALLANT_DE 1 A 3
DEBUT_POUR
AFFICHER* tab[2*3 + j]
FIN_POUR
AFFICHER "Les notes de la troisième matière sont : "
POUR j ALLANT_DE 1 A 3
DEBUT_POUR
AFFICHER* tab[3*3 + j]
FIN_POUR
FIN_ALGORITHME