Vous êtes sur la page 1sur 111

Cours : Algorithmique

1
Plan du cours
 Introduction à l’algorithmique
 Les variables
 Lecture et Ecriture
 Les tests
 Encore de la logique
 Les boucles
 Les tableaux
 Tableaux multidimensionnels
 Fichiers
 Procédures et fonctions
2
Introduction à l’algorithmique

 Qu’est-ce que l’algomachin ?

 Faut-il être matheux pour être bon en algorithmique ?

 Algorithmique et programmation

 Avec quelles conventions écrit-on un algorithme ?

3
Introduction à l’algorithmique

 Un algorithme est une procédure de calcul bien définie qui prend en entrée une
valeur, ou un ensemble de valeurs, et qui donne en sortie une valeur, ou un
ensemble de valeurs.

 Un algorithme est donc une séquence d’étapes de calcul qui transforment l’entrée
en sortie.

Un algorithme, c’est une suite d’instructions, qui une


fois exécutée correctement, conduit à un résultat donné.
4
Introduction à l’algorithmique

Un algorithme, c’est une suite d’instructions, qui une


fois exécutée correctement, conduit à un résultat donné.

Pour fonctionner, un algorithme doit donc contenir uniquement des instructions


compréhensibles par celui qui devra l’exécuter.

5
Introduction à l’algorithmique

La maîtrise de l’algorithmique requiert deux qualités, très complémentaires d’ailleurs :

 il faut avoir une certaine inspiration, car aucune recette ne permet de savoir a priori
quelles instructions permettront d’obtenir le résultat voulu. C’est là, si l’on y tient,
qu’intervient la forme « d’intelligence » requise pour l’algorithmique.

 il faut être méthodique et rigoureux. En effet, chaque fois qu’on écrit une série
d’instructions qu’on croit justes, il faut systématiquement se mettre mentalement à la
place de la machine qui va les exécuter, armé d'un papier et d'un crayon, afin de vérifier
si le résultat obtenu est bien celui que l’on voulait.

évitez de sauter les étapes : la vérification méthodique, pas à pas, de chacun de vos
algorithmes représente plus de la moitié du travail à accomplir. 6
Introduction à l’algorithmique

Pourquoi apprendre l’algorithmique pour apprendre à programmer ? En quoi a-t-on


besoin d’un langage spécial, distinct des langages de programmation compréhensibles
par les ordinateurs ?

 Parce que l’algorithmique exprime les instructions résolvant un problème donné


indépendamment des particularités de tel ou tel langage.

 Apprendre l’algorithmique, c’est apprendre à manier la structure logique d’un


programme informatique.

7
Introduction à l’algorithmique
Avec quelles conventions écrit-on un algorithme ?

H istoriquement, plusieurs types de notations ont représenté des algorithmes.

 Il y a eu notamment une représentation graphique, avec des carrés, des losanges,


etc. qu’on appelait des organigrammes. Aujourd’hui, cette représentation est
quasiment abandonnée, pour deux raisons. D ’abord, parce que dès que
l’algorithme commence à grossir un peu, ce n’est plus pratique.

 C’est pourquoi on utilise généralement une série de conventions appelée «


pseudo-code », qui ressemble à un langage de programmation authentique dont
on aurait évacué la plupart des problèmes de syntaxe.

8
Introduction à l’algorithmique

Informations Informations
en entrée
Algorithme informatique en sortie

Un algorithme est une suite finie de règles à appliquer


dans un ordre déterminé à un nombre fini de données,
pour arriver en un nombre fini d’étapes, à un certain
résultat, et cela indépendamment des données.
9
Introduction à l’algorithmique
Algorithme

programmation

Programme en langage évolué

traduction

Programme en langage machine

Interprétation par l’Unité Centrale de traitement

le traitement souhaité est réalisé


10
Introduction à l’algorithmique

Quels sont les aspects et propriétés des algorithmes qu’il est nécessaire d’étudier ?

 La calculabilité des algorithmes (convergence de l’algorithme et existence de l’algo)


la méthode existe t elle ?

 La complexité des algorithmes (nombre d’opérations nécessaires)

 L’efficacité des algorithmes (vitesse des algorithmes: raisonnable) TEM PS


D 'EXÉCUTIO N - M ÉM O IRE O CCUPÉE

11
Introduction à l’algorithmique

Un algorithme doit décrire précisément le traitement qu’il doit exécuter et s’assurer


que tous les cas de figures possible ont bien été prévus.

Exemple :algorithme permettant de calculer la durée d’un voyage à partir du tableau


d’affichage des aéroports

1. Consulter l’heure de départ


2. Consulter l’heure d’arrivé
3. Soustraire l’heure de départ de celle d’arrivée
Problèmes :
Fuseauxhoraires différents
Si unpoint applique l’heure d’Étéet pas l’autre
12
Les Variables

 A quoi servent les variables ?

 D éclaration des variables

 L’instruction d’affectation

 Expressions et opérateurs

13
Les Variables

D ans un programme informatique, on va avoir en permanence besoin de stocker


provisoirement des valeurs. Il peut s’agir de données issues du disque dur, fournies par
l’utilisateur (frappées au clavier), etc.

Il peut aussi s’agir de résultats obtenus par le programme, intermédiaires ou définitifs. Ces
données peuvent être de plusieurs types:elles peuvent être des nombres, du texte, etc.

 Dans les langages de programmation une variable sert à stocker la valeur d’une donnée

 Une variable désigne en fait un emplacement mémoire dont le contenu peut changer
au cours d’un programme (d’où le nom variable)

14
Les Variables
Déclaration des variables

La partie déclarative est placée (généralement) en tête de l'algorithme et regroupe une ou plusieurs indications de la
forme:nom_variable type

Le choix des noms de variables est soumis à quelques règles qui varient selon le langage, mais en général:

 Un nom doit commencer par une lettre alphabétique

exemple valide: A1 exemple invalide: 1A

 doit être constitué uniquement de lettres, de chiffres et du soulignement _ (Eviter les caractères de ponctuation et les
espaces)

valides: inf2018, inf_2018 invalides: inf 2018, inf-2018, inf;2018

 doit être différent des mots réservés du langage (par exemple en Java: int, float, else, sw itch, case, default, for, main,
return,

 La longueur du nom doit être inférieure à la taille maximale spécifiée par le langage utilisé
15
Les Variables

D éclaration des variables

Si l’on réserve un octet pour coder un nombre cela peut signifier par exemple les nombres
entiers de 1 à 256, ou de 0 à 255, ou de –127 à +128… Si l’on réserve deux octets, on a droit à
65 536 valeurs ; avec trois octets, 16 777 216, etc. Et là se pose un autre problème : ce
codage doit-il représenter des nombres décimaux ? des nombres négatifs ?

Bref, le type de codage (autrement dit, le type de variable) choisi pour un nombre va
déterminer :

 les valeurs maximales et minimales des nombres pouvant être stockés dans la variable.
 la précision de ces nombres (dans le cas de nombres décimaux).
16
Les Variables
Types des variables
Le type d’une variable détermine l’ensemble des valeurs qu’elle peut prendre, les types offerts par la
plus part des langages sont:
Type numérique (entier ou réel)
Byte (codé sur 1octet):de 0 à 255
Entier court (codé sur 2 octets):-32 768 à 32 767
Entier long (codé sur 4 ou 8 octets)
Réel simple précision (codé sur 4 octets)
Réel double précision (codé sur 8 octets)
Type logique ou booléen:deux valeurs VRAI ou FAUX

Type caractère:lettres majuscules, minuscules, chiffres, symboles, …


exemples: ’A’, ’a’, ’1’, ’?’, …
Type chaîne de caractère:toute suite de caractères,
exemples: " Nom, Prénom", "code postale: 1000", …

17
Les Variables

Exemples:

Variables i, j, k :entier

x, y :réel

O K:booléen

ch1, ch2 :chaîne de caractères

18
Les Variables

L’instruction d’affectation

 l’affectation consiste à attribuer une valeur à une variable (ça consiste en fait à remplir où à modifier le
contenu d'une zone mémoire)
 En pseudo-code, l'affectation se note avec le signe ←
Var← e:attribue la valeur de e à la variable Var

-e peut être une valeur, une autre variable ou une expression


-Var et e doivent être de même type ou de types compatibles
-l’affectation ne modifie que ce qui est à gauche de la flèche

Ex valides: i← 1 j← i k ← i+j
x ← 10.3 OK ← FAUX ch1 ← "SMI"
ch2 ← ch1 x← 4 x← j
non valides: i ← 10.3 OK ← "SMI" j← x 19
Les Variables

Exercice 1:

Quelles seront les valeurs des variables A et B après exécution des instructions
suivantes ?
Variables A, B en Entier
Début
A← 1
B← A+3
A← 3
Fin

20
Les Variables

Exercice 2:

D onnez les valeurs des variables A, B et C après exécution des instructions suivantes ?

Variables A, B, C:Entier
Début
A← 3
B← 7
A← B
B ← A+5
C← A+B
C← B–A
Fin
21
Les Variables
es Variables
Exercice 3:

D onnez les valeurs des variables A et B après exécution des instructions suivantes ?

Variables A, B:Entier
Début
A← 5
B← A+4
A← A+1
B← A–4
Fin

22
Les Variables

Exercice 4:

D onnez les valeurs des variables A et B après exécution des instructions suivantes ?

Variables A, B :Entier
Début
A← 1
B← 2
A← B
B← A
Fin

Les deux dernières instructions permettent-elles d’échanger les valeurs de A et B ?

23
Les Variables

Exercice 5:

Ecrire un algorithme permettant d’échanger les valeurs de deux variables A et B

24
Les Variables

Exercice 6:

O n dispose de trois variables A, B et C. Ecrivez un algorithme transférant à B la valeur


de A, à C la valeur de B et à A la valeur de C (toujours quels que soient les contenus
préalables de ces variables).

25
Les Variables

Expressions et opérateurs

Une expression peut être une valeur, une variable ou une opération constituée de variables reliées par
des opérateurs exemples: 1, b, a*2, a+ 3*b-c, …

L'évaluation de l'expression fournit une valeur unique qui est le résultat de l'opération

Les opérateurs dépendent du type de l'opération, ils peuvent être :


des opérateurs arithmétiques: +, -, *, /, % (modulo), ^ (puissance)
des opérateurs logiques: NON, OU, ET
des opérateurs relationnels:=, , <, >, <=, >=
des opérateurs sur les chaînes: & (concaténation)

Une expression est évaluée de gauche à droite mais en tenant compte de priorités

26
Les Variables

Priorité des opérateurs

Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de priorité est le suivant (du plus prioritaire au
moins prioritaire) :

 ^ :(élévation à la puissance)
 * , / (multiplication, division)
 % (modulo)
 + , - (addition, soustraction)
exemple: 5+3*7 vaut 26

En cas de besoin (ou de doute), on utilise les parenthèses pour indiquer les opérations à effectuer en
priorité exemple: (5 + 3) * 7 vaut 56

27
Les Variables

Exercice 7:

Que produit l’algorithme suivant ?


Variables A, B, C en Entier
Début
A ← 423
B ← 12
C← A+B
Fin

28
Les Variables

Exercice 8:

Que produit l’algorithme suivant ?


Variables A, B, C en Caractères
Début
A ← "423"
B ← "12"
C← A& B
Fin

29
Les instructions d'entrées-sorties: lecture et écriture

Imaginons que nous ayons fait un programme pour calculer le carré d’un nombre,
mettons 12. Si on a fait au plus simple, on a écrit un truc du genre :

 Ce programme nous donne le carré de 12. C’est très gentil à lui. M ais si l’on veut le
carré d’un autre nombre que 12, il faut réécrire le programme.

 le résultat est indubitablement calculé par la machine. M ais elle le garde


soigneusement pour elle, et le pauvre utilisateur qui fait exécuter ce programme,
lui, ne saura jamais quel est le carré de 12.

30
Les instructions d'entrées-sorties: lecture et écriture

C’est pourquoi, heureusement, il existe des d’instructions pour permettre à la


machine de dialoguer avec l’utilisateur.

 D ans un sens, ces instructions permettent à l’utilisateur de rentrer des valeurs au


clavier pour qu’elles soient utilisées par le programme. Cette opération est la
lecture.

 D ans l’autre sens, d’autres instructions permettent au programme de


communiquer des valeurs à l’utilisateur en les affichant à l’écran. Cette opération
est l’écriture.

31
Les instructions d'entrées-sorties: lecture et écriture

Les instructions de lecture et d'écriture permettent à la machine de communiquer


avec l'utilisateur

 La lecture permet d'entrer des donnés à partir du clavier


En pseudo-code, on note:lire (var)
la machine met la valeur entrée au clavier dans la zone mémoire nommée var

Remarque:Le programme s'arrête lorsqu'il rencontre une instruction Lire et ne se


poursuit qu'après la frappe d’une valeur au clavier et de la touche Entrée

32
Les instructions d'entrées-sorties: lecture et écriture

 L'écriture permet d'afficher des résultats à l'écran (ou de les écrire dans un fichier)

En pseudo-code, on note:écrire (var)


la machine affiche le contenu de la zone mémoire var

Conseil:Avant de lire une variable, il est fortement conseillé d’écrire des messages
à l’écran, afin de prévenir l’utilisateur de ce qu’il doit frapper

33
Les instructions d'entrées-sorties: lecture et écriture

 Exemple

Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui calcule
et affiche le double de ce nombre
Algorithme Calcul_double
variables A, B : entier
Début
écrire("entrer le nombre ")
lire(A)
B ← 2*A
écrire("le double de ", A, "est :", B)
Fin
34
Les instructions d'entrées-sorties: lecture et écriture

 Exercice: 9

Ecrire un algorithme qui vous demande de saisir votre nom puis votre prénom et qui
affiche ensuite votre nom complet

Algorithme AffichageNomComplet
variables Nom, Prenom, Nom_Complet : chaîne de caractères
Début
écrire("entrez votre nom")
lire(Nom)
écrire("entrez votre prénom")
lire(Prenom)
Nom_Complet ← Nom & Prenom
écrire("Votre nom complet est : ", Nom_Complet)
Fin
35
Tests: instructions conditionnelles

-D e quoi s’agit-il ?

-Structure d’un test

-Qu’est ce qu’une condition ?

-Conditions composées

-Tests imbriqués

36
Tests: instructions conditionnelles

 Les instructions conditionnelles servent à n'exécuter une instruction ou une séquence


d'instructions que si une condition est vérifiée

 O n utilisera la forme suivante:Si condition alors


instruction ou suite d'instructions1
Sinon
instruction ou suite d'instructions2
Finsi

 la condition ne peut être que vraie ou fausse


 si la condition est vraie, se sont les instructions1 qui seront exécutées
 si la condition est fausse, se sont les instructions2 qui seront exécutées
 la condition peut être une condition simple ou une condition composée de plusieurs
conditions
37
Tests: instructions conditionnelles

 La partie Sinon n'est pas obligatoire, quand elle n'existe pas et que la condition
est fausse, aucun traitement n'est réalisé

 O n utilisera dans ce cas la forme simplifiée suivante:

Si condition alors
instruction ou suite d'instructions1
Finsi

38
Tests: instructions conditionnelles

Les opérateurs de comparaison sont :


égal à…
différent de…
strictement plus petit que…
strictement plus grand que…
plus petit ou égal à…
plus grand ou égal à…

39
Tests: instructions conditionnelles

 Exemple
Algorithme AffichageValeurAbsolue (version1)
Variable x :réel
Début
Ecrire (" Entrez un réel :“)
Lire (x)
Si (x < 0)alors
Ecrire ("la valeur absolue de ", x, "est:",-x)
Sinon
Ecrire ("la valeur absolue de ", x, "est:",x)
Finsi
Fin
40
Tests: instructions conditionnelles

 Exemple
Algorithme AffichageValeurAbsolue (version2)
Variable x,y :réel
Début
Ecrire (" Entrez un réel :“)
Lire (x)
y← x
Si (x < 0) alors
y ← -x
Finsi
Ecrire ("la valeur absolue de ", x, "est:",y)
Fin
41
Tests: instructions conditionnelles

 Exercice 10
 Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui
teste et affiche s'il est divisible par 3
Algorithme Divsible_par3
Variable n : entier
Début
Ecrire " Entrez un entier :"
Lire (n)
Si (n% 3=0) alors
Ecrire (n," est divisible par 3")
Sinon
Ecrire (n," n'est pas divisible par 3")
Finsi
Fin 42
Tests: instructions conditionnelles

 Conditions composées
 Une condition composée est une condition formée de plusieurs conditions simples
reliées par des opérateurs logiques:
ET, O U, O U exclusif (XO R)et N O N
 Exemples :
x compris entre 2 et 6 :(x > 2)ET (x < 6)

n divisible par 3 ou par 2 :(n% 3=0)O U (n% 2=0)

deux valeurs et deux seulement sont identiques parmi a, b et c :


(a=b)XO R (a=c)XO R (b=c)

 L'évaluation d'une condition composée se fait selon des règles présentées


généralement dans ce qu'on appelle tables de vérité

43
Tests: instructions conditionnelles

 Tables de vérité
C1 C2 C1 ET C2 C1 C2 C1 OU C2
VRAI VRAI VRAI VRAI VRAI VRAI
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX

C1 C2 C1 XOR C2 C1 NON C1
VRAI VRAI FAUX VRAI FAUX
VRAI FAUX VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX

44
Tests: instructions conditionnelles

 Tests imbriqués
Les tests peuvent avoir un degré quelconque d'imbrications
Si condition1 alors
Si condition2 alors
instructionsA
Sinon
instructionsB
Finsi
Sinon
Si condition3 alors
instructionsC
Finsi
Finsi
45
Tests: instructions conditionnelles

 Tests imbriqués:exemple
Variable n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si (n < 0) alors
Ecrire ("Ce nombre est négatif")
Sinon
Si (n = 0) alors
Ecrire ("Ce nombre est nul")
Sinon
Ecrire ("Ce nombre est positif")
Finsi
Finsi
Fin
46
Tests: instructions conditionnelles

 Tests imbriqués:exercice 11

Le prix de photocopies dans une reprographie varie selon le nombre demandé:


0,5 DH la copie pour un nombre de copies inférieur à 10, 0,4DH pour un nombre
compris entre 10 et 20 et 0,3DH au-delà.

Ecrivez un algorithme qui demande à l’utilisateur le nombre de photocopies


effectuées, qui calcule et affiche le prix à payer

47
Tests: instructions conditionnelles

 Tests imbriqués:corrigé de l'exercice

Variables copies : entier


prix : réel
Début
Ecrire ("Nombre de photocopies : ")
Lire (copies)
Si (copies < 10) Alors
prix ← copies*0.5
Sinon Si (copies) < 20
prix ← copies*0.4
Sinon
prix ← copies*0.3
Finsi
Finsi
Ecrire (“Le prix à payer est : ”, prix)
Fin
48
Tests: instructions conditionnelles

Remarque sur les tests imbriqués :


N ous avons fait des économies:
- nous n’avons plus que deux conditions
simples.
- nous avons fait des économies sur le temps
d’exécution de l’ordinateur.

Cette deuxième version n’est donc pas seulement plus simple à écrire et plus lisible,
elle est également plus performante à l’exécution.

49
Tests: instructions conditionnelles

Exercice 12:

Ecrire un algorithme qui demande deux nombres à l’utilisateur et l’informe ensuite si


leur produit est négatif ou positif (on laisse de côté le cas où le produit est nul).
Attention toutefois :on ne doit pas calculer le produit des deux nombres.

50
Tests: instructions conditionnelles

Exercice 13:

Ecrire un algorithme qui demande deux nombres à l’utilisateur et l’informe ensuite si


le produit est négatif ou positif (on inclut le traitement du cas où le produit peut être
nul). Attention toutefois, on ne doit pas calculer le produit !

51
Tests: instructions conditionnelles
La structure Selon…Faire (de choix)
La structure Selon permet de choisir le traitement à effectuer en fonction de la valeur
ou de l'intervalle de valeur d'une variable ou d'une expression. Cette structure permet
de remplacer avantageusement une succession de structures Si… Alors.

52
Tests: instructions conditionnelles
Exemple:
Voilà l'algorithme qui affiche le mois en toute lettre selon son numéro. Le numéro du
mois en mémorisé dans la variable mois.

53
Tests: instructions conditionnelles
Exemple:
Les différents cas possibles sont décrits par des intervalles de valeur (taux de remise
différent selon le montant d'achat)

54
Tests: instructions conditionnelles

Exercice 14:

Ecrire un programme qui demande à l’utilisateur de taper un chiffre et qui l’écrit


ensuite en toute lettre à l’écran.
Par exemple, si l’utilisateur tape le chiffre 9, le programme affichera neuf.

55
Tests: instructions conditionnelles

Exercice 15:Saisie des déplacements du personnage

D ans le cadre de un projet, vous aurez à récupérer les touches tapées par l’utilisateur
pour savoir dans quelle direction déplacer votre personnage. Ecrivez un petit
programme qui demande à l’utilisateur de saisir un nombre puis qui en fonction
du nombre saisi :
 6 :affiche « le personnage va à droite ».
 4 :affiche « le personnage va à gauche ».
 8 :affiche « le personnage va en haut ».
 2 :affiche « le personnage va en bas ».
 D ans le cas d’un autre caractère, affiche :« erreur de saisie, le personnage ne
bouge pas ».
56
Exemples

57
Exemples:

D onner le type et la valeur des expressions suivantes


• 2+3*4
• 2.0 + 3 * 4
• vrai et (faux ou vrai)
• (2 < 3)
• (2 < 3)et (4 > 5)
• faux et (vrai ou vrai)
• (2 < 3)ou (4 > 5)et faux

58
Exemples:

Quelles seront les valeurs des variables a et b après exécution des instructions
suivantes :
a← 5;
b ← (a-3)+ 1 ;
a ← 3-b ;

59
Exemples:

Quelles seront les valeurs des variables a et b après exécution des instructions
suivantes :
a← 5;
b ← 3+ 1 ;
b ← 3-b ;
b ← 3-a ;
a ← 3-b ;

60
Exemples:

Quelles seront les valeurs des variables a et b après exécution des instructions
suivantes :
a← 5;
b ← 3+ 1 ;
b ← a-b ;
b ← b-a ;
a ← -b ;

61
Exemples:

• Écrire un algorithme qui à partir de trois notes d’un étudiant calcule la moyenne.
• Écrire un algorithme qui à partir de trois notes d’un étudiant et de trois coefficients
calcule la moyenne.

62
Exemples:

Écrire un algorithme qui prend en entrée trois entiers et qui les tris par ordre croissant.

63
Exemples:

Écrivez un programme qui vérifie si un nombre donné par l'utilisateur est pair ou
impair.

64
Exemples:

Concevoir un algorithme qui calcule et affiche l'aire d'un rectangle. La longueur et la


largeur du rectangle sont demandées à l'utilisateur.

65
Exemples:

Une automobile est utilisée pour un voyage. Concevoir un algorithme qui prend en
entrée la distance du voyage (en km), la consommation moyenne en
carburant du véhicule (en L/100 km) et le prix du litre de carburant, et fournit en
résultat le coût du carburant pour le voyage.

66
Exemples:

Ecrire un algorithme qui demande deux nombres à l'utilisateur et qui indique si le


produit de ces deux nombres est négatif ou positif (on inclut dans ce dernier cas le
produit nul).
Attention :on impose de ne pas calculer le produit.

67
Exemples:

Ecrire un algorithme qui demande un numéro de mois à l’utilisateur (1 → 12)et qui


indique en retour son nom et le nombre de jours dans ce mois.

68
Les structures répétitives
ou itératives

69
Les structures répétitives ou itératives

L’utilisation d’un ordinateur s’impose lorsque des volumes importants de données


sont manipulées

Exemple 1:Chercher dans une liste de noms et d'adresses, l'adresse d'une personne à
partir de son nom. Le nombre de fois qu'il faudra comparer le nom donné aux noms
de la liste est dans ce cas inconnu

Exemple 2 : Calculer la N ème puissance entière d'un nombre x par multiplications


successives du nombre par lui-même. Ici, le nombre de répétition (N ) de l'instruction
de multiplication est connu.

70
Les structures répétitives: La boucle " pour faire"

Lorsque le nombre d’itération est connu


Exemple de la table de multiplication
Syntaxe :
pour var_de_crt  prem_val à dern_val faire
séquence d'instructions
fpour

71
Les structures répétitives: La boucle " pour faire"

var_de_crt :est la variable de contrôle, qui est initialisée à prem_val


La variable de contrôle est incrémenté automatiquement à chaque
itération
L’itération s’arrête lorsque :
var_de_crt > dern_val
Si prem_val > dern_val la séquence d’instructions n’est jamais exécutée
La variable de contrôle doit être de type énuméré
La valeur de la variable de contrôle ne doit pas être directement modifiée
dans la séquence d’instructions

72
Les structures répétitives: La boucle " pour faire"

Exemple:
Écrire l’algorithme qui affiche la table de multiplication de 6.
afficher la table de multiplication à l’ancienne :
6 fois 1 font 6
6 fois 2 font 12

6 fois 10 font 60
Il serait plus judicieux de faire répéter la ligne d’affichage en faisant varier
le multiplicande
Pour chaque valeur de n variant de 1 à 10 exécuter :
Ecrire « 6 fois », n, « font », 6*n
73
Les structures répétitives: La boucle " pour faire"

Exemple:
Écrire l’algorithme qui affiche la table de multiplication de 6.
entier n
lire n
Pour i  1 à 10 faire
écrire n, « fois », i, « font », n*i
fpour

74
Les structures répétitives: La boucle " pour faire"

Exercice 16:

Ecrire un Algorithme qui renvoie le résultat de la multiplication de deux nombre entier


n et b. (utiliser uniquement l’addition)

Exercice 17:

Ecrire un Algorithme qui calcule puis affiche ( -1). (X réel, n entier)

Exercice 18:

Ecrire un Algorithme qui calcule puis affiche la factorielle N ! = 1*2*3...(N -1)*N d'un
entier naturel N en respectant que 0!=1
75
Les structures répétitives: La boucle " pour faire"

Exercice 19:

Ecrire un Algorithme qui demande un nombre de départ, et qui ensuite affiche les dix
nombres suivant.(par exemple, si l’utilisateur entre le nombre 20 , le programme
affichera les nombres de 21 à 30.

Exercice 20:

Ecrire un Algorithme qui calcule puis affiche (x+( − 1) ). (x réel, n entier)

76
Les structures répétitives: La boucle " Tant que"

Fait répéter une séquence d’instructions aussi longtemps qu’une condition


est VRAI
En LDA :
Tant que condition faire
séquence d’instructions
Ftq

77
Les structures répétitives: La boucle " Tant que"

• Au moment du premier passage dans la boucle la condition est


évaluée;si elle est vérifiée, la séquence d’instructions est exécutée
• A la fin de l’exécution de cette séquence d’instructions, la condition est
de nouveau évaluée et on répète l’exécution de la séquence
d’instructions tant que la condition est vérifiée.
• D ès que la condition devient fausse, l’exécution du programme se
poursuit à partir de la 1ère instruction qui suit immédiatement le mot-
clé ftq.

78
Les structures répétitives: La boucle " Tant que"

Remarques :
• Si au premier passage la condition est évaluée à FAUX, le corps de la
boucle (la séquence d’instructions)n’est jamais exécuté
• Si la séquence d’instructions ne change pas la valeur de la
condition, la séquence d’instructions sera exécutée sans que l’on
passe jamais à la suite :on exécute une boucle infinie
• Les variables qui interviennent dans la condition doivent être
initialiser avant d’aborder la boucle

79
Les structures répétitives: La boucle " Tant que"

Écrire l’algorithme qui affiche la table de multiplication de 6.


entier n
lire n
i 1
tant que i faire
écrire n, « fois », i, « font », n*i
i  i+1
ftq

80
Les structures répétitives: La boucle " Tant que"

Exercice 21:

Ecrire un algorithme qui demande à l’utilisateur un nombre compris entre 2 et 10


jusqu’à ce que la réponse convienne.

Exercice 22:

Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la
réponse convienne. En cas de réponse supérieure à 20, on fera apparaître un message :
« Plus petit ! », et inversement, « Plus grand ! » si le nombre est inférieur à 10.

81
Les structures répétitives: La boucle " Tant que"

Exercice 23:

Écrire un algorithme qui lit un entier et affiche son carré et ne s'arrête que si on entre
la valeur 0.

82
Les structures répétitives: La boucle " Répéter … jusqu’à …"

Répéter
instructions
Jusqu'à condition

• Condition est évaluée après chaque itération


• les instructions entre Répéter et jusqu’à sont exécutées au moins une
fois et leur exécution est répétée jusqu’à ce que condition soit vrai (tant
qu'elle est fausse)

83
Les structures répétitives: La boucle " Répéter … jusqu’à …"

Exemple:
Un algorithme qui détermine le premier nombre entier N tel que la somme de 1
à N dépasse strictement 100
Variables som, i :entier
Debut
som ← 0
i← 0
Répéter
i ← i+1
som ← som+i
Jusqu'à (som > 100)
Ecrire (" La valeur cherchée est N = ", i)
Fin
84
Choix d'un type de boucle

 Si on peut déterminer le nombre d'itérations avant l'exécution de la boucle, il est


plus naturel d'utiliser la boucle Pour

 S'il n'est pas possible de connaître le nombre d'itérations avant l'exécution de la


boucle, on fera appel à l'une des boucles TantQue ou répéter jusqu'à

 Pour le choix entre TantQue et jusqu'à :

 Si on doit tester la condition de contrôle avant de commencer les instructions de la boucle, on


utilisera TantQue

 Si la valeur de la condition de contrôle dépend d'une première exécution des instructions de la


boucle, on utilisera répéter jusqu'à

85
Les structures répétitives: La boucle

Exercice 24:

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
N B :on souhaite afficher uniquement le résultat, pas la décomposition du calcul.

Exercice 25:
Ecrire un algorithme qui demande successivement 20 nombres à l’utilisateur, et qui lui dise
ensuite quel était le plus grand parmi ces 20 nombres :
Entrez le nombre numéro 1 :12
Entrez le nombre numéro 2 :14
etc.
Entrez le nombre numéro 20 :6
Le plus grand de ces nombres est :14
86
Les structures répétitives: La boucle

Exercice 26:

Réécrire l’algorithme précédent, mais cette fois-ci on ne connaît pas d’avance combien
l’utilisateur souhaite saisir de nombres.
La saisie des nombres s’arrête lorsque l’utilisateur entre un zéro.

Exercice 27:

Ecrire un algorithme qui permet de calculer le résultat de la division d’un entier a par
un entier b par soustractions successives.

87
Les structures répétitives: La boucle

Exercice 28:

Ecrire un algorithme qui permet d’essayer de deviner la valeur d’un nombre entier
caché.
Si la valeur saisie est supérieure ou inférieure, la machine affiche respectivement "c’est
moins" ou "c’est plus" jusqu’à soit que le nombre soit trouvé ou que l’utilisateur
abandonne la recherche.
O n suppose que celui qui saisi le nombre caché (qui ne sera pas affiché)n’est pas celui
qui le cherche.

88
Les tableaux

Supposons qu'on veut conserver les notes d'une classe de 30 étudiants pour extraire quelques
informations. Par exemple :calcul du nombre d'étudiants ayant une note supérieure à 10

Le seul moyen dont nous disposons actuellement consiste à déclarer 30 variables, par exemple
N1, …, N30. Après 30 instructions lire, on doit écrire 30 instructions Si pour faire le calcul

nbre ← 0
Si (N1 >10) alors nbre ← nbre+1 FinSi
….
Si (N30>10) alors nbre ← nbre+1 FinSi
c'est lourd à écrire

89
Les tableaux

H eureusement, les langages de programmation offrent la possibilité de


rassembler toutes ces variables dans une seule structure de donnée
appelée tableau
Un tableau est un ensemble d'éléments de même type désignés par un
identificateur unique

90
Les tableaux

Une variable entière nommée indice permet d'indiquer la position d'un élément donné
au sein du tableau et de déterminer sa valeur

La déclaration d'un tableau s'effectue en précisant le type de ses éléments et sa


dimension (le nombre de ses éléments)
En pseudo code :
variable tableau identificateur[dimension] : type
Exemple :
variable tableau notes[30] : réel

O n peut définir des tableaux de tous types :tableaux d'entiers, de réels, de caractères,
de booléens, de chaînes de caractères, …
91
Les tableaux

L'accès à un élément du tableau se fait au moyen de l'indice. Par exemple, notes[i]


donne la valeur de l'élément i du tableau notes

Selon les langages, le premier indice du tableau est soit 0, soit 1. Le plus souvent c'est
0 (c'est ce qu'on va adopter en pseudo-code). D ans ce cas, notes[i] désigne l'élément
i+1 du tableau notes

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

92
Les tableaux

Exemple:Pour le calcul du nombre d'étudiants ayant une note supérieure à 10


avec les tableaux, on peut écrire :

Variables i ,nbre :entier


tableau notes[30]:réel
Début
nbre ← 0
Pour i allant de 0 à 29
Si (notes[i] >10)alors
nbre ← nbre+1
FinSi
FinPour
écrire ("le nombre de notes supérieures à 10 est :", nbre)
Fin
93
Les tableaux

Exemple:
Si la variable k entière a pour valeur 2,
température Nom du tableau alors
Température[k] = 23
Température[k+1] = 36
0 25
Température[k-1] = 30
1 30 Cette case du tableau
M ais attention l’écriture de
2 23 représente la variable Température[-2] ou Température[12] n’ont
Température[2] dont la pas de sens car elles font référence à
3 36
valeur est 23 des éléments inexistants
4 33
5 22
6 27

94
Les tableaux

Exemple:
le calcul de la température moyenne de la semaine se fera de façon très simple :
Entiers somme, k
Réel moyenne
somme  0
Pour k  0 à 6 faire
somme  somme + Température[k]
fpour
moyenne  somme / 7

95
Les tableaux

Exercice 29:

Ecrire un algorithme qui déclare et remplisse un tableau de 7 valeurs numériques en


les mettant toutes à zéro.

Exercice 30:

Ecrire un algorithme qui déclare et remplisse un tableau contenant les six voyelles de
l’alphabet latin.

96
Les tableaux

Exercice 31:

Ecrire un algorithme qui déclare un tableau de 9 notes, dont on fait ensuite saisir les
valeurs par l’utilisateur.

Exercice 32:

Ajoutez le calcul de la moyenne des notes soit effectué et affiché à l’écran.

97
Les tableaux

Exercice 33:

Ecrivez un algorithme permettant à l’utilisateur de saisir un nombre quelconque de


valeurs, qui devront être stockées dans un tableau. L’utilisateur doit donc commencer
par entrer le nombre de valeurs qu’il compte saisir. Il effectuera ensuite cette saisie.
Enfin, une fois la saisie terminée, le programme affichera le nombre de valeurs
négatives et le nombre de valeurs positives.

Exercice 34:

Ecrivez un algorithme calculant la somme des valeurs d’un tableau (on suppose que le
tableau a été préalablement saisi).

98
Tableaux à deux dimensions

Les langages de programmation permettent de déclarer des tableaux dans lesquels les
valeurs sont repérées par deux indices. Ceci est utile par exemple pour représenter des
matrices

En pseudo code, un tableau à deux dimensions se déclare ainsi :

variable tableau identificateur[dimension1] [dimension2] : type

Exemple : une matrice A de 3 lignes et 4 colonnes dont les éléments sont réels
variable tableau A[3][4] : réel

A[i][j] permet d'accéder à l’élément de la matrice qui se trouve à l’intersection de la


ligne i et de la colonne j
99
Tableaux à deux dimensions

Exemple:Algorithme permet de saisir les éléments d'une matrice

Début
Pour i allant de 0 à n-1
écrire ("saisie de la ligne ", i + 1)
Pour jallant de 0 à m-1
écrire ("Entrez l'élément de la ligne ", i + 1, " et de la colonne ", j+1)
lire (A[i][j])
FinPour
FinPour
Fin
100
Tableaux à deux dimensions

Exemple:Algorithme permet d'afficher les éléments d'une matrice


Début
Pour i allant de 0 à n-1
Pour jallant de 0 à m-1
écrire ("A[",i, "][",j,"]=", A[i][j])
FinPour
FinPour
Fin

101
Tableaux à deux dimensions

Exemple:Algorithme qui calcule la somme de deux matrices

Début
Pour i allant de 0 à n-1
Pour jallant de 0 à m-1
C[i][j]← A[i][j]+B[i][j]
FinPour
FinPour
Fin

102
Tableaux à deux dimensions

Exercice 35:

Écrivez un algorithme remplissant un tableau de 6 sur 13, avec des zéros.

Exercice 36:

Soit un tableau T à deux dimensions (12, 8)préalablement rempli de valeurs


numériques.
Écrire un algorithme qui recherche la plus grande valeur au sein de ce tableau.

103
Tableaux à deux dimensions

Exercice 37:

Écrivez un algorithme permet de déterminer et d'afficher le maximum, ainsi que sa


position d'un tableau M (m,n).

Exercice 38:

Écrivez un algorithme permet de saisir une matrice carré (n*n)et d'afficher les
éléments de sa diagonale principale.

104
Tableaux à deux dimensions

Exercice 39:

Écrivez un algorithme permet de transférer une matrice T(M *N )dans un tableau à une
dimension

105
Fonctions et procédures

 Certains problèmes conduisent à des programmes longs, difficiles à


écrire et à comprendre. O n les découpe en des parties appelées sous-
programmes ou modules
 Les fonctions et les procédures sont des modules (groupe
d'instructions)indépendants désignés par un nom. Elles ont plusieurs
intérêts :
 permettent de "factoriser" les programmes, càd de mettre en commun les
parties qui se répètent
 permettent une structuration et une meilleure lisibilité des programmes
 facilitent la maintenance du code (il suffit de modifier une seule fois)
 ces procédures et fonctions peuvent éventuellement être réutilisées dans
d'autres programmes
106
Fonctions et procédures

Fonctions
Le rôle d'une fonction en programmation est similaire à celui d'une fonction en mathématique :elle retourne
un résultat à partir des valeurs des paramètres

Une fonction s'écrit en dehors du programme principal sous la forme :

Fonction nom_fonction (paramètres et leurs types):type_fonction

Instructions constituant le corps de la fonction


retourne …
FinFonction

Pour le choix d'un nom de fonction il faut respecter les mêmes règles que celles pour les noms de variables
type_fonction est le type du résultat retourné
L'instruction retourne sert à retourner la valeur du résultat

107
Fonctions et procédures

Fonctions: exemples
La fonction SommeCarre suivante calcule la somme des carrées de deux réels x et y :
Fonction SommeCarre (x :réel, y:réel ):réel
variable z :réel
z ← x^2+y^2
retourne (z)
FinFonction

La fonction Pair suivante détermine si un nombre est pair :

Fonction Pair (n :entier ):booléen


retourne (n% 2=0)
FinFonction
108
Fonctions et procédures

Utilisation des fonctions


L'utilisation d'une fonction se fera par simple écriture de son nom dans le programme principale. Le
résultat étant une valeur, devra être affecté ou être utilisé dans une expression, une écriture, ...

Exepmle : Algorithme exepmleAppelFonction


variables z :réel, b :booléen
Début
b ← Pair(3)
z ← 5*SommeCarre(7,2)+1
écrire("SommeCarre(3,5)= ", SommeCarre(3,5))
Fin

Lors de l'appel Pair(3)le paramètre formel n est remplacé par le paramètre effectif 3
109
Fonctions et procédures

Procèdures
D ans certains cas, on peut avoir besoin de répéter une tache dans plusieurs endroits du programme, mais que dans
cette tache on ne calcule pas de résultats ou qu'on calcule plusieurs résultats à la fois

D ans ces cas on ne peut pas utiliser une fonction, on utilise une procédure

Une procédure est un sous-programme semblable à une fonction mais qui ne retourne rien

Une procédure s'écrit en dehors du programme principal sous la forme :

Procédure nom_procédure (paramètres et leurs types)

Instructions constituant le corps de la procédure

FinProcédure
Remarque :une procédure peut ne pas avoir de paramètres

110
Fonctions et procédures

Appel d'une procédure


L'appel d'une procédure, se fait dans le programme principale ou dans une autre procédure par une instruction indiquant le
nom de la procédure :

Procédure exemple_proc (… )

FinProcédure

Algorithme exepmleAppelProcédure
Début
exemple_proc (… )

Fin

Remarque :contrairement à l'appel d'une fonction, on ne peut pas affecter la procédure appelée ou l'utiliser dans une
expression. L'appel d'une procédure est une instruction autonome

111

Vous aimerez peut-être aussi