Vous êtes sur la page 1sur 126

Cours

Algorithmique
Ecole Supérieure de Technologie – Guelmim
Université Ibn Zohr –Agadir-

Prof. EL BALMANY Chawki


chawki. elbalmany@gmail.com

2019/2020
Plan du Cours
Chapitre I : Initiation à la programmation
I. Ordinateur
II. Programme & Langage de programmation
III. Information &Traitement de l'information.
Chapitre II : Algorithmique et Programmation
I. Structure générale d’un algorithme.
II. Les variables et les constantes.
III. Les instructions de base.
IV. Les commentaires.
Chapitre III : Structures alternatives et répétitives
I. Structures alternatives.
II. Structures répétitives.

2
Plan du Cours

Chapitre IV : Tableaux et Pointeurs


I. Tableau à une dimension
II. Tableau à deux dimensions
III. Pointeurs

3
Chapitre I : Initiation à la programmation

I. Informatique et Ordinateur
II. Architecture des ordinateurs
1) Mémoire.
2) Unité Centrale.
3) Périphériques.
III. Programme et Langage de programmation
IV. Information et Traitement de l'information.
V. Conclusion

4
Informatique et Ordinateur
Définition :

L'informatique est la science du traitement autoMATIQUE de l'INFORmation.

Un ordinateur est une machine programmable destinée à traiter automatiquement


des informations qui lui sont fournies en entrée et à retourner en sortie le résultat
de ces traitements.

Entrées ===> Traitements ====> Sorties

Un ordinateur a ainsi la possibilité de mettre en mémoire un programme qu’on lui


fournit, puis de l’exécuter. Chaque ordinateur peut donc effectuer des tâches très
variées.

5
Architecture des ordinateurs

Définition 1 : Un ordinateur est une machine électronique ultra rapide composé


de trois parties principales notées :
 Unité Centrale (UC) qui réalise les traitements.
 Mémoire pour stocker les données à traiter et les programmes exécutés de de
façon temporaire ou bien permanente
 Unités d‘ Entrées et de Sorties (E/S) (ports) pour communiquer avec l'extérieur.

6
Principaux éléments d’un PC
Unité centrale:
 Processeur ou unité centrale de traitement CPU (Central Processing Unit)
 Mémoire centrale
 Disque dur, lecteur disquettes, lecteur CD-ROM
 Cartes spécialisées (cartes vidéo, réseau, ...)
 Interfaces d'entrée-sortie (Ports série/parallèle, …)

Périphériques :
 Moniteur (l'écran), clavier, souris
 Modem, imprimante, scanner, …

7
Microprocesseurs

Les microprocesseurs sont des circuits intégrés à


très haute intégration présents dans des applications
diverses.
C'est un circuit intégré très complexe qui comporte
plusieurs millions de composants.
C'est l'unité centrale de traitement dite C.P.U. qui
effectue, gère et contrôle la totalité des procédures et
des enchaînements.

8
Description matérielle d’un µp

Ensemble de registres
processeur

ULA Bus
interface

Séquenceur de
commande

 Ensemble de registre pour stocker l’information.


 Unité logique & arithmétique ( ULA) pour traiter cette information.
 Interface de bus permet aux informations d’entrer dans le microprocesseur et d’en sortir.
 Tout le fonctionnement du p est commandé par le séquenceur de commande.
9
Microprocesseurs

Le microprocesseur échange des informations avec la mémoire et l’unité


d’E/S, sous forme de mots binaires, au moyen d’un ensemble de connexions
appelé Bus .
p Mémoire Dispositif E/S
(RAM & ROM)

Bus Microprocesseur

Le bus du microprocesseur est décomposé en trois bus distincts :


 Bus d’adresse;
 Bus de donnée;
 Bus de commande

10
Bus informatique

Définition 1: Un bus informatique est un système de communication entre


les composants d’un ordinateur (matériel et/ou logiciel).
 Le bus d'adresse est un bus informatique permettant l’adressage de la
mémoire dans des systèmes.
 Le bus de données véhicule les instructions en provenance ou à
destination du processeur.
Il s'agit d'un bus bidirectionnel.
 Le bus de contrôle, un ensemble de signaux identifiant le type d'action :
lecture ou écriture, taille du message…

11
Organisation de la mémoire centrale

La mémoire = un ensemble de casiers mémoire ;


Chacune des casiers contient une information ;
Cette information peux être une instruction ou une donnée;
Une case mémoire peut être lue ou écrite .
12
Mémoire
L'unité de manipulation d'une mémoire est l'Octet, constitué par 8 bits
contigus .

On distingue deux types de mémoires :

La mémoire vive ou mémoire de travail (Random Access


Memory RAM): elle est accessible en lecture et en écriture. Elle
contient des données et des programmes.

La mémoire morte (Read Only Memory ROM): Son contenu


ne disparaît jamais, mais elle n'est accessible qu'en lecture.

13
Plan du Cours

14
Plan du Cours
Chapitre I : Initiation à la programmation

15
Information et traitement de l’Information
Définition 1 : Une information est un renseignement qui porte sur un
objet (nom d'un étudiant, intitulé d'un module,…).

Définition 2 : Le traitement de l’information c’est toute fonction qui a


pour objectif de :

 Saisir des données (entrées).


 Mémoriser des données.
 Faire des opérations sur les données.
 Faire la restitution (l’analyse) des résultats.
 ….

16
Contenu de cours

Chapitre II : Algorithmique
I. Structure générale d’un algorithme.
II. Les variables et les constantes.
1) Déclaration des variables.
i. Identificateur
ii. Type de données
2) Déclaration des constantes.
III. Les instructions de base.
1) Instruction d’affectation.
2) Instruction d’Entrée.
3) Instruction de sortie.
IV. Les étapes à suivre pour rédiger un algorithme.
V. Les commentaires.
VI. Applications

17
Contenu de cours

Qu’est-ce qu’un algorithme ?

Écrire un algorithme », c’est :


 Analyser et comprendre le problème : étudier les données
fournies et les résultats attendus;
 Résoudre le problème, c’est trouver les structures de données
adaptées ainsi que l’enchaînement des actions à réaliser pour passer
des données aux résultats;
Comment exécuter un algorithme sur un ordinateur ?
Il faut traduire cet algorithme à l’aide d’un langage de programmation
connu par l’ordinateur.
Rq: La réalisation de programmes passe par l’écriture d’un algorithme:
D’où l’intérêt de l’Algorithmique

18
Contenu de cours

Qu’est-ce qu’un algorithme ?

Un algorithme correspond à la description d’un processus logique écrit


en langage naturel décrivant une succession d’opérations à exécuter dans
un certain ordre et sous certaines conditions, pour passer des données de
base aux résultats;

19
Contenu de cours

Qu’est-ce qu’un algorithme ?


Un algorithme décrit un traitement selon une logique et un
formalisme rigoureux;
L’algorithme prépare la programmation:
 L’algorithme est une étape préalable indispensable à la réalisation
d’un bon programme;
 C’est une méthode de découpage d’un traitement en instructions
élémentaires

20
Contenu de cours

Caractéristiques d’un algorithme

Il contient plusieurs séquences à exécuter:


Ensemble d’actions élémentaires;

Les séquences (étapes) se succèdent dans un certain ordre;


Il peut éventuellement exister une répétition (itération) ou une
condition d’exécution ou non de certaines séquences;
Il est caractérisé par un début et une fin.

21
Contenu de cours

Structure générale d’un algorithme

Un algorithme est composé de trois parties principales :


En-tête : Sert à donner un nom à l’algorithme. Elle est
précéder par le mot Algorithme.
Partie de déclaration : On déclare les différents objets que
l’algorithme utilise.
Corps d’algorithme : Cette partie contient les instructions de
l’algorithme. Elle est délimitée par les mots : Début et Fin.

22
Contenu de cours

Structure générale d’un algorithme


Entête : Algoritheme NomAlgorithme;

Partie de constante identificateur= valeur;


déclaration:  Variable identificateur : type;
 Début
Instruction 1;
Corps de 
l’algorithme Instruction 2;


Instruction n;

 Fin
23
Contenu de cours

Déclarations de variables
Une variable est caractérisée par un Nom, un Type, une Valeur et une
Adresse.
 Une adresse est définie une fois pour toute et ne varie pas au cours de
l’algorithme.
 Le contenu de la variable peut être modifié autant de fois que l’on veut,
mais son adresse reste inchangeable.
 Pour déclarer donc une variable, on fait précéder son nom par le nom
variables et suivre par son type avec la syntaxe suivante :
 Variables NomVariable: Type;
 Variables NomVariable1, NomVariable2, NomVariable3, …: Type ;

24
Contenu de cours

Variables

 Un identificateur est le nom donné à une variable. Ce nom doit


obligatoirement commence par une lettre suivie ou pas d’une suite de
lettres ou des chiffres sans avoir d’espace.
 Dans les langages de programmation une variable sert à stocker la
valeur d’une donnée:
 un type (entier, réel, caractère, chaîne de caractères, …)

 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)

 Règle : Les variables doivent être déclarées avant d’être utilisées.

25
Contenu de cours

Types de données (variables)

Définition : Le type d’une variable est l’ensemble des valeurs


qu’elle peut prendre. Les différents types utilisés par un
algorithme sont :
 Type Entier : Sert à manipuler les nombres entiers positifs ou
négatifs.
 Type Réel :Sert à manipuler les nombres à virgule.
 Type Caractère (code ASCII étendu): Permet de manipuler les
caractères alphabétiques et numériques.
 Type Chaîne : Sert à manipuler les chaînes de caractères.
 Type Logique : Utilise les expressions;
 logiques : (Vraie (1) et Faux (0)).
26
Contenu de cours

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 ou caractère (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)

27
Contenu de cours

Types des variables


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", …
Exemples de variables:
Variable n : entier;
Variables a,b,c : entier;
Variables r,s : réel;
Variable Nom_prenom : chaîne;
Variable absent : logique;

28
Contenu de cours

Constante
Une constante (symbolique ou littérale) est une variable dont sa valeur
stockée ne sera jamais modifiée au cours du programme. Elle se déclare
comme suit :
Syntaxe : Constante Nom_de_la_constante=valeur;
Exemple : Constante PI=3.14;
Constante symbolique : identificateur associé à une valeur qui ne
change pas au cours de l’exécution du programme.
Valeur littérale : (ou constante littérale ) en programmation, il s’agit
d’une valeur donnée explicitement dans le code source, par opposition à
une variable ou une constante symbolique, qui sont, elles, représentées par
un identificateur.
29
Contenu de cours

Constante
Remarques:
 Les constantes littérales de type caractères sont entre
apostrophes.
 Les constantes littérales de type chaîne de caractères sont
entre guillemets.
Exemples de Constantes
GENRE1='F';
GENRE2='M';
SALUT="salam";
Rq: une chaine de caractères est un tableau des caractères d’une
seule dimension;
30
Contenu de cours

Codage

En informatique, c’est la base 2 ou binaire qui est retenue car elle


correspond au fonctionnent de l’électronique utilisé dans
l’informatique.
 La plus petite unité de valeur est le Bit (BInary digIT), il ne peut
avoir que deux valeurs (1 ou 0).
 Octet (Byte) est un groupe de 8 bits, il peut avoir 256 valeurs.
 Un fichier est un ensemble de bits.
 Un ensemble de bits forme ce qu'on appelle un mot binaire.

31
Contenu de cours

Codage
Les opérations sur les nombres binaires s’effectuent de la même façon
que sur les nombres décimaux, mais il ne faut pas oublier que les seules
symboles utilisés sont: 1 et 0.

Addition Multiplication
• 0+0=0 • 0*0=0
• 0+1=1 • 0*1=0
• 1 + 1 = 0 et Retenue = 1 • 1*1=1
 Soustraction Division
• 0–0=0 • 0 / 0 = Erreur !!
• 0 – 1 = 1 et Retenue = 1 • 0/1=0
• 1–1=0 • 1 / 0 = Erreur !!
• 1 / 1= 1
32
Contenu de cours

Codage
Pour représenter les nombres on utilise dix symboles différents:
0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9. (Ce système est appelé: Système
Décimal).
Système Binaire (deux),
Système Octal (huit),
Système Hexadécimal (seize).
En fait, on peut utiliser n'importe quel nombre de symboles différents (pas
nécessairement des chiffres).

Dans un système de numération: le nombre de symboles distincts est appelé la


base du système de numération.

33
Contenu de cours

Codage
On utilise dix symboles différents:
{0,1,2,3,4,5,6,7,8,9}
N’importe quelle combinaison des symboles { 0, 1, 2, 3, 4, 5, 6, 7, 8,
9 } nous donne un nombre.

2334567

Poids fort Poids faible


345 , 567
Partie entière Partie fractionnelle

34
Contenu de cours

Codage

Soit le nombre 1978, ce nombre peut être écrit sous la forme suivante :

1978  1000  900  70  8


1978  1*1000  9 *100  7 *10  8 *1
1978  1*103  9 *10 2  7 *101  8 *100

Cette forma s’appelle la forme polynomiale;


 Un nombre réel peut être écrit aussi sous la forme polynomiale

1978,265  1*103  9 *102  7 *101  8 *100  2 *101  6 *102  5 *103

35
Contenu de cours

Codage
Dans le système binaire, pour exprimer n’importe quelle valeur on
utilise uniquement 2 symboles : { 0 , 1}

( 1101)2 La base
Un bit
( 1 1 0 1)2
Le bits du poids forts Le bits du poids faible

 Un nombre dans la base 2 peut être écrit aussi sous la forme polynomial;

(1110) 2  1* 23  1* 22  1* 21  0 * 20  (14)10
(1110,101) 2  1* 23  1* 22  1* 21  0 * 20  1* 21  0 * 22  1* 23  (14,625)10

36
Contenu de cours

Codage
Décimal Hexadécimal

On utilise seize (16) symboles: 0 0

1 1

2 2

3 3

4 4

(17)16  1*161  7 *160 5 5

6 6

(AB)16  A *161  B *160  10 *161  11*1 7 7

8 8

9 9

10 A

11 B

12 C

13 D

14 E

15 F

37
Contenu de cours

Codage

Cette conversion est assez simple puisque il suffit de faire le


développement en polynôme de ce nombre dans la base X , et de
faire la somme par la suite.
(1101) 2  1* 23  1* 2 2  0 * 21  1* 20  (13)10
(1A7)16  1*162  A *161  7 *160  1*162  10 *161  7 *160  256  160  7  (423)10
(1101,101) 2  1* 23  1* 22  0 * 21  1* 20  1* 2 1  0 * 2 2  1* 2 3  (13,625)10
(43,2)5  4 * 51  3 * 50  2 * 51  20  3  0,4  (23,4)10

38
Contenu de cours

Codage
Opérateurs de manipulation de bits

39
Contenu de cours

Opérateurs de comparaison

40
Contenu de cours

Opérateurs logiques

41
Contenu de cours

Lois de Morgan
Soient A et B deux propositions susceptibles d'être vraies ou fausses,
on notons non X la négation de de la proposition X.
On énonce les lois de Morgan :
non (A ou B) = (non A) et (non B)
non (A et B) = (non A) ou (non B)
La table de vérité des lois de Morgan :

A B A et B A ou B non A non B non(A et B) (nonA) ou (nonA) non(A ou B) (nonA) et (nonA)

V V V V F F F F F F
V F F V F V V V F F
F V F V V F V V F F
F F F F V V V V V V

42
Contenu de cours

Exercice
Trouver les résultats d’exécution des instruction suivantes:
1. 8&&9;
2. 8 | 9;
3. Si a=7, b=26, c=12:
1. (a>b && b<c);
2. (a<b || b==c);
3. (!a==b && b<c);
4. !(a<b || b==c);
5. !(!a==!b) && (b<c);
4. a>>3;
5. b<<6;
6. b^c;

43
Contenu de cours

Instructions de base
Instruction d’affectation
L’affectation permet d’affecter une valeur à une variable. Elle est
symbolisée par précise le sens d’affectation.
Syntaxe : Variable Expression;
Expression peut être soit :
 Identificateur;
 Constante;
 Expression arithmétique;
 Expression logique.
Ex pression 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


44
Contenu de cours

Instructions de base
Trouver les résultats d’exécution de l’algorithme suivant:

Algorithme Calcul;
Variables A,B,C,D : entier;
Début
A 15;
B  20;
C  A  B;
D  A * B;
Fin
45
Contenu de cours

Instructions de base
Corriger et trouver les résultats d’exécution de l’algorithme suivant:
Algorithme 1Calcul
Variables A,B,C: entier1;
Début
A 15;
B  20;
C  A  B;
D  A* B;
A  D/ C;
B Dmod C;
Fin
46
Contenu de cours

Instructions de base
Corriger et trouver les résultats d’exécution de l’algorithme suivant:
Algorithme _Calcul
Constante PI  3.14;
Variables A,B,C: entier;
Début
A 15;
B  20;
C  A B;
D  A*B;
A  D/C;
B DmodC;
Fin

47
Contenu de cours

Instructions de base
Trouver les résultats d’exécution de l’algorithme suivant:
Algorithme Logique;
Variables A,B,C: Booléen;
Variables D : entier;
Début
A  1;
B  0;
C  A + B;
D  C + A;
Fin

48
Contenu de cours

Instruction d’entrée

L’instruction d’entrée (instruction de lecture) donne la main à


l’utilisateur pour saisir une donnée au clavier. La valeur saisie sera
affectée à une variable.
Syntaxe : Lire(ident1, ident2, …);
Exemple :
Lire(A);
L’instruction Lire(A); permet à l’utilisateur de saisir une valeur au
clavier et que cette valeur sera affectée à la variable A.

Lire(A,B,C);
L’instruction Lire(A,B,C); permet à l’utilisateur de saisir trois
valeurs au clavier et que ces valeurs seront affectées aux variables A, B
et C respectivement.

49
Contenu de cours

Instruction de sortie
L’instruction de sortie (appelée aussi l’instruction
d’écriture) permet d’afficher des informations à l’écran.
Syntaxe : Ecrire(identificateur);
Exemple 1:
Ecrire(A);
L’instruction Ecrire(A); permet d’afficher à l’écran la valeur de la
variable A.

Exemple 2: A10;
Ecrire(A); : Cette instruction affiche à l’écran la valeur 10.
Ecrire("La valeur de A est =" ,A);
Cette instruction affiche à l’écran : La valeur de A est =10
50
Contenu de cours

Etapes à suivre pour rédiger un algorithme

1) Établir la liste des données en entrée, la liste des données en


sortie et les liens entre elles.
2) Construire un chemin de résolution (Traitement) qui permet
d'obtenir les données en sortie à partir des données en entrée.
3) Décrire le schéma de résolution en termes d'instructions
élémentaires acceptées par ordinateur. C'est l'algorithme.
4) Chaque instruction se termine par un point virgule « ; ».
5) La virgule est un séparateur des variables.
6) On peut avoir plusieurs instructions sur une même ligne
séparées par un point virgule.

51
Contenu de cours

Exemple
Calculer la surface d'un disque:
i. Identification des données d'entrées et de sorties
 Donnée en entrées : rayon, pi;
 Données en sorties: surface;
Relations entre les données : surface= pi*rayon * rayon;
ii. Chemin de résolution (structure de traitement)
 Donner une valeur au rayon (affectation ou une lecture);
 Calculer pi*rayon*rayon;
 Mettre pi*rayon*rayon dans une surface (affectation);
 Afficher la valeur de la surface (Ecrire).
iii.Traduire le chemin en algorithme
52
Contenu de cours

Solution
Algorithme CalculSurface;
Constante PI=3.14;
Variables r, surface : réel;
Début
Ecrire("entrer un nombre réel");
Lire(r);
surface  r * r * PI;
Ecrire(surface);
Fin

53
Contenu de cours

Nature des données

Définition : La nature d'une donnée indique si la donnée


est constante ou variable:

 La donnée constante ne change pas de valeur dans


l'algorithme.
 La donnée variable peut changer de valeur dans
l'algorithme.

54
Contenu de cours

Commentaires

Lorsqu’un algorithme devient long, il est conseillé d’ajouter des


lignes de commentaires dans l’algorithme, c’est-à-dire des lignes qui
ont pour but de donner des indications sur les instructions effectuées.
On a deux manières de définir les commentaires :
//commentaire sur ligne.
/* commentaire sur une ou plusieurs lignes */.
 Un commentaire n’est jamais exécutable et ne perturbe plus
l’exécution du programme.

55
Contenu de cours

Exemple

Variables r, s : réel; Variables r, s : réel;


/*Variables i, j : entier;*/


Début
Début
Lire(r);
// Ecrire("entrer un nombre réel"); surface  r * r * ;
Lire(r); Ecrire(surface);
surface  r * r * ; Fin
Ecrire(surface);
Fin

56
Contenu de cours

Applications
Exemple 1 : Calcul de la somme 1+2+3…n avec n un entier à saisir au
clavier (en suivant les étapes de construction d’un algorithme).
i. Identification des données d'entrées et de sorties
 Donnée en entrée : n.
 Donnée en sortie : somme.
 Relations entre les données : somme= n*(n+1)/2.
ii. Chemin de résolution
 Donner une valeur à n ( lire(n))
 Calculer n*(n+1)/2
 Mettre n*(n+1)/2 dans somme(affectation)
 Afficher la valeur de somme (Ecrire).
iii. Traduire le chemin en algorithme

57
Contenu de cours

Algorithme

Algorithme CalculSomme;
Variables n, somme : entier;
Début
Ecrire("entrer un entier positif");
Lire(n);

somme  n*(n+1)/2;

Ecrire(somme);
//ou bien Ecrire("la somme est:" , somme) ;
Fin

58
Contenu de cours

Exemple

Écrire un algorithme qui lit un nombre réel est affiche son carré.

Algorithme Carre; Algorithme Carre;


Variables x, y : reels; Variables x : reels;
Debut Debut
Lire(x); Ecrire("saisir un nombre réel ");
y  x* x; Lire(x);
Ecrire("le carré de x est", y); Ecrire("le carré de", x,"est",x*x);
Fin Fin
59
Contenu de cours

Algorithme

Chapitre III : Structures alternatives et répétitives


II. Structures alternatives.
1) Structure de contrôle
2) La structure Si … Alors
3) La structure Si … Alors … Sinon … FinSi
4) La structure Si … Alors … SinonSI … Sinon … FinSi
5) Structure à choix multiples : Selon … faire … Sinon …
FinSelon
I. Structures répétitives.
1) La boucle TantQue … Faire
2) La boucle Pour … Faire
3) La boucle Répéter … Jusqu’à

60
Contenu de cours

Organigramme
Un organigramme est une représentation graphique d'un algorithme.
Chaque instruction et chaque structure de contrôle possède une
représentation graphique.

condition

61
Contenu de cours

Structures de contrôles
Une structure de contrôle sert à contrôler l'exécution d'une instruction
ou d'un bloc d'instructions.
Deux types de structures de contrôles:
 Structure conditionnelle (alternative) si l'exécution de l'instruction ou
du bloc dépend d'une condition.
Exemple : Si x est positif alors Calculer la racine carrée de x.
 Structure répétitive (itérative ou boucle) si l'exécution de l'instruction
ou du bloc peut être répétée plusieurs fois, basée sur une condition.
Exemple : On initialise la variable S par 0. Pour tout i allant de 1 jusqu à
100 faire Affecter à S la somme S+i.
Rq: Sans initialisation, cette instruction ne sera pas exécutée.

62
Contenu de cours

Structures alternatives

La structure : Si … Alors … FinSI

Si (condition) Alors
Bloc Instruction;
FinSI

Si la condition est vraie, on exécute le bloc d’instruction. Sinon on


quitte la boucle.

63
Contenu de cours

Organigramme

condition
Vraie
Fausse
Instr ou bloc
d’instruction

64
Contenu de cours

Exemple
Chercher la surface d'un disque de rayon saisi au clavier. Il faut s'assurer tout
d'abord que le rayon soit positif. Puis donner l’organigramme de cet exercice.

Algorithme surfaceDisque; Organigramme


Constantes PI=3.14; Debut
Variables R, S: réels ;
Debut Lire(R)
Lire(R);
Si (R>0 ) alors V
R > 0
S  R*R*PI;
Ecrire(S); F
S  PI*R*R
FinSi
Fin Ecrire(S)

65
Contenu de cours

Structures alternatives
La structure : Si … Alors …SinonSi … FinSI
Si condition Alors Si condition1 Alors
Instruction1; Bloc d’Instructions1;
Sinon SinonSi condition2 Alors
Instruction2; Bloc d’Instructions2;
FinSI Sinon
Bloc d’Instructions3;
FinSI
FinSI
66
Contenu de cours

Organigramme

Condition
Fausse
vraie

Instr 2 ou bloc Instr 1 ou bloc


d’instructions 2 d’instructions 1

Donner l’organigramme de la 2ème cas.


67
Contenu de cours

Exemple

Chercher la surface d'un disque de rayon saisi au clavier. Il faut s'assurer


tout d'abord que le rayon soit positif. Si le rayon saisi est négatif, afficher le
message "Rayon Non Valide".

68
Contenu de cours

Algorithme et Organigramme
Organigramme
Algorithme surfaceDisque;
Debut
Constantes PI=3.14; Variables
R, S: réels ;
Lire(R)
Debut
Lire(R);
R > 0 V
Si (R>0 ) alors F
S  R*R*PI;
S  PI*R*R
Ecrire(S);
Sinon Ecrire(‘’RNV’’) Ecrire(S)
Ecrire("Rayon Non Valide");
FinSi
Fin Fin

69
Contenu de cours

Exemple

Chercher le minimum de deux entiers saisis au clavier.

Dans cet exemple, on donne trois types d’algorithmes permettant la


résolution de cet exemple.

70
Contenu de cours

Algorithme et Organigramme
Organigramme
Algorithme Minimum1 ;
Variab les a , b : En tie rs ;
Debut Debut
L ire (a ,b);
Lire(a,b)

Si (a < b ) a lors F v
Ecrire (a); a < b

Sinon Ecrire(b) Ecrire(a)


Ecrire (b );
Finsi
F in
Fin

71
Contenu de cours

Algorithme et Organigramme
Algorithme minimum 2 ;
Organigramme
Variables a, b , m in :en tiers;
D ebut Debut

Lire(a,b); Lire(a,b)
Si (a< b) alors
F v
m in  a; a < b

Sinon min  b min  a


min b;
Ecrire(min)
Finsi
E crire (m in); Fin

Fin
72
Contenu de cours

Algorithme et Organigramme
Algorithme minimum 3; Organigramme
V ariab les a, b , m in :en tiers; Debut

D ébut Lire(a,b)

Lire(a,b); min  a
m ina;
Si(min > b) alors F v
min > b

minb; min  b

Finsi
Ecrire (m in); Ecrire(min)

Fin.
Fin
73
Contenu de cours

Exemple

Donner la solution de ax+b=0 avec a et b sont deux


réels à saisir.

1. Donner un algorithme qui retourne la solution


sinon «0 ou plusieurs solutions ".
2. Donner un algorithme qui retourne tous les cas
possibles.

74
Contenu de cours

Algorithme et Organigramme
Organigramme
Algorithme equation;
Variables a,b,x :réels;
Debut
Debut
Lire(a,b)
Lire(a,b);
Si (a  0) alors
F v
x  -b/a; a 0

Ecrire("la sol ution est :", x); X  -b/a

Sinon Ecrire(‘’0 ou plus’’)


Ecrire(x)
Ecrire ("il y a 0 ou plusieurs solutions");
Finsi
Fin Fin
75
Contenu de cours

Algorithme et Organigramme
Algorithme equation;
Organigramme
Variables a,b,x :réels; Debut
Debut
Lire(a,b)
Lire(a,b);
Si (a  0) alors
x  -b/a; F V
Ecrire("la sol est :", x);
a 0
SinonSi (b 0) alors V
b 0 X  -b/a
Ecrire("pas de solution");
F
Sinon Ecrire(‘’Pas de Slt’’) Ecrire(x)
Ecrire ("il y plusieurs solutions");
FinSi
FinSi Ecrire(‘’Plrs Slt’’)
Fin
Fin

76
Contenu de cours

Structures conditionnelles : Choix multiple

Syntaxe : Selon(sélecteur)
Cas val1 : liste_instructions1; Quitter;
Cas val2 : liste_instructions2; Quitter;

Cas valn : liste_instructionsn; Quitter;
Sinon
Liste_instructions;
FinSelon

77
Contenu de cours

Fonctionnement de selon

S’il existe une valeur telle que sélecteur=valeur alors


on exécute liste_instructionsi.

Sinon,

on exécute les instructions de Sinon si elles sont


présentes.

78
Contenu de cours

Exemple

Ecrire un algorithme qui lit un opérateur op (+,-,/,*) et


deux entiers a et b puis affiche le nom et le résultat de
l'opération a op b.

Entrées op, a, b;

Sorties: la valeur de a op b et le nom de l'opération.

79
Contenu de cours

Solution
Algorithme Operateur;
Variables op : caractère;
a,b, r : entiers;
Debut
Lire(op); Lire(a,b);
Selon (op)
Cas '+' : r  a+b; Ecrire ("la somme de a et b est:", r); Quitter;
Cas '-' : r  a-b; Ecrire("la différence entre a et b est:", r); Quitter;
Cas '*' : r  a*b; Ecrire("la multiplication de a par b est:", r); Quitter;
Cas '/' : r  a/b; Ecrire ("la division de a par b est:", r); Quitter;
Sinon
Ecrire (op , " : opérateur non valide");
FinSelon
Fin

80
Contenu de cours

Exemple

Écrire un algorithme permettant d’afficher


le mois en toute lettre selon son numéro saisi
au clavier.
Avec numéro [1,12];

81
Contenu de cours

Solution
Algorithme Mois;
Variable N : entier; Debut
Lire(N);
Selon (N)
Cas 1 : Ecrire ("Janvier"); Quitter;
Cas 2 : Ecrire ("Fevrier"); Quitter;
Cas 3 : Ecrire ("Mars"); Quitter;
Cas 4 : Ecrire ("Avril"); Quitter;
Cas 5 : Ecrire ("Mai"); Quitter;
Cas 6 : Ecrire ("Juin"); Quitter;
Cas 7 : Ecrire ("Juillet"); Quitter;
Cas 8 : Ecrire ("Aout"); Quitter;
Cas 9 : Ecrire ("Septembre"); Quitter;
Cas 10 : Ecrire ("Octobre"); Quitter;
Cas 11 : Ecrire ("Novembre"); Quitter;
Cas 12 : Ecrire ("Décembre"); Quitter;
Sinon
Ecrire (" Numéro saisi non valide");
FinSelon
Fin

82
Contenu de cours

Structures répétitives/itératives

Il existe trois façons pour exprimer les itérations ou


répétitions de la même instruction (ou bloc) :

 TantQue (condition) faire

 Faire …tantque(condition)

 Pour compteur  min à max par pas faire

83
Contenu de cours

Structure TantQue

Syntaxe : Organigramme :
TantQue (condition)
faire
Instr1; V
condition

Instr2; F
Bloc d’instr

FintantQue

84
Contenu de cours

Fonctionnement

Le Bloc d’instr1 sera réexécutable tant que la condition


est vraie (jusqu’à cette condition soit fausse).

Si la condition est fausse à l'entrée de la boucle, le


bloc d’instruction ne sera jamais exécuté.

85
Contenu de cours

Exemple

Écrire un algorithme qui calcule la somme


1+2+3+…+n.
n à lire au clavier(en utilisant la boucle
Tanque).
Puis donner l’organigramme de cet
algorithme ;

86
Contenu de cours

Algorithme et Organigramme
Algorithme Somme; Debut
Variables s,n, i : entiers; Lire(n)
Debut
s  0; S  0
i 1;
i  1
Lire(n);
Tantque (i<=n) faire
V
s s+i; i<=n

ii+1; S  S+i
F
FinTantque
Ecrire(s); i  i+1

fin Ecrire(S)

Fin
87
Contenu de cours

Exemple

Écrire un algorithme qui affiche les diviseurs


d'un nombre lu au clavier.
Puis donner l’organigramme de cet
algorithme;

88
Contenu de cours

Algorithme et Organigramme
Debut
Algorithme Diviseurs;
Variables n, i : entiers; Lire(n)

Debut
i  1
Lire(n);
i  1;
V F
Tantque i<=n faire i<=n
Si (n mod i)=0 alors V
F
n mod i==0
Ecrire( i);
Finsi
i  i+1; Ecrire(i)

Fin tantque i  i+1


Fin Fin

89
Contenu de cours

Exemple

Écrire un algorithme qui calcule et affiche la


somme des diviseurs d'un nombre lu au
clavier.
Puis donner l’organigramme de cet
algorithme;

90
Contenu de cours

Algorithme et Organigramme
Debut
Algorithme SomDiviseurs; Lire(n)
Variables n, i,S :entiers;
Debut S 0
Lire(n);
i 1; i 1
S  0;
Tantque (i<=n) faire
V F
Si (n mod i)=0 alors i<=n
S  S +i; V
F
Finsi n mod i==0
i  i+1;
FinTantque Ecrire(S)
S  S+i
Ecrire(S);
Fin i  i+1
Fin
91
Contenu de cours

Structure faire … Tantque(condition)

Organigramme
Syntaxe :

Faire
Bloc d’instrI
Instr1;
Instr2; V
condition
… F
Bloc d’instrI
Tantque (condition);

92
Contenu de cours

Fonctionnement

 On exécute les instructions délimitées par Faire et Tantque ,


puis on vérifie la condition.
 Si la condition est vraie, on réexécute les instrs et on passe à
vérifier la condition de nouveau.
 Si la condition est encore vraie, on réexécute les instrs et ainsi
de suite.
 Ce processus se répète tant que la condition est vraie.
 Une fois la condition est fausse on quitte la structure.

93
Contenu de cours

Exemple

Calculer la somme s=1+2+3..+n. n à lire au


clavier
Puis donner l’organigramme de cet algorithme;

94
Contenu de cours

Algorithme et Organigramme
Debut

i  0
Algorithme Somme;
S  0
Variables s,n, i : entier;
Debut Lire(n)
s  0;
i  0; s  s+i
Lire(n); i  i+1
Faire
s  s+i; V i<=n
i  i+1;
s  s+i F
Tantque (i<=n) ;
Ecrire(s); i  i+1
fin
Ecrire(s)

Fin 95
Contenu de cours

Structure Pour

Syntaxe I:
Pour variable_compteur  début à fin faire i  début
Bloc d’Intsr1;
Finpour V
i<=fin
Bloc d’instr
F
Syntaxe II:
i  i+pas
Pour variable_compteur  début à fin par pas faire
Bloc d’Intsr1;
Finpour

96
Contenu de cours

Fonctionnement

1) On affecte à var_compteur la valeur de début, puis on


exécute les instructions.
2) Ensuite, on incrémente var_compteur (suivant le pas) et on
vérifie si sa valeur est <= de celle de fin.
3) Si var_compteur<=fin, on exécute les instructions
et on passe à 2).
4) On quitte cette boucle lorsque var_compteur devient
supérieur stricte de fin.

97
Contenu de cours

Exemple

Calculer la somme s=1/1+1/2+1/3..+1/n.


n à lire au clavier
Puis donner l’organigramme de cet
algorithme;

98
Contenu de cours

Algorithme et Organigramme
Debut
Algorithme Somme;
Lire(n)
Variable n,i : entiers;
S 0
Variable s: réel;
Debut i 1
Lire(n);
s  0; V
i<=n
pour i  1 à n faire
S s+(réel)(1/i)
s  s+ (réel)(1/i); F
finpour
i  i+1
Ecrire(s);
Ecrire(S)
fin

Fin
99
Contenu de cours

Exemple

Écrire un algorithme qui calcule la factorielle d'un entier saisi au


clavier.
A lgorithme factorie l;
Variables fac t,n ,i : e n tie rs ;
Debut
L ire (n );
fa c t  1 ;
Pour i 1 à nfa ire
fac t  fac t* i;
FinP o u r
E c rire (fac t) ;
F in

10
Contenu de cours

Fonctions Numériques
Fonction Description Type résultat exemple
Abs(x) Valeur absolue numérique a=Abs(-3,4) 3,4

Sqrt(x) Racine carrée numérique a=Sqrt(25)  5

Fix(x) Partie entière entier a=Fix(4,12)  4


a=Fix(-4,21)-4
Int(x) Plus grand entier entier a=Int(4,12) 4
inférieur à x a=Int(-4,21)-5
a=Sgn(3)  1
Sgn(x) Signe de x entier a=Sgn(0)  0
a=Sgn(-3)-1
Rnd() Nombre aléatoire réel x=Rnd  ?
Є[0, 1[
10
Contenu de cours

Fonctions trigonométrique

Fonction Description
Sin(x) Le sinus du angle x
Cos(x) Le cosinus du angle X
Tan(x) La tangente du angle x

10
Contenu de cours

Chapitre IV : Tableaux et Pointeurs

I. Tableau à une dimension


II. Tableau à deux dimensions
III. Pointeurs.
IV. Fonctions.

10
Contenu de cours

Tableau à une dimension


Un tableau est une suite d’éléments de même type. Il définit plusieurs cases
mémoire à l’aide d’un seul nom.
Un ensemble de valeurs portant le même nom de variable et repérées par un
nombre, s’appelle un tableau, ou encore une variable indicée.
Le nombre qui, au sein d’un tableau, sert à repérer chaque valeur s’appelle:
Indice du tableau.
Pour atteindre élément du tableau, on fait figurer le nom du tableau, suivi de
l’indice de l’élément, entre crochets.
La déclaration d’un tableau à une dimension :
Variable identi(s) : tableau[indic_min..indic_max] Type;
Ou bien
Variable identi(s) : tableau[Taille] Type;
10
Contenu de cours

Remarques

Lors de la déclaration d'un tableau, on précise la plus grande valeur


de l'indice ou bien les indices minimal et maximal. Le premier élément
d’un tableau, par défaut, porte l’indice zéro ou un selon les langages
de programmation :
Variable A: tableau[taille] Type;

 La valeur d’un indice doit être un nombre entier.


 La valeur doit être un entier compris entre indic_min et indic_max
si :
Variable A: tableau[indic_min.. indic_max] Type;.

10
Contenu de cours

Exemple

L’instruction suivante déclare un tableau nommé Note de


20 éléments de type réel indexé de 30 à 49:
Variable Note : tableau[30..49] Réel;
L’instruction suivante déclare un tableau nommé Notes
de 20 éléments de type réel indexé de 0 à 19:
Variable Notes : tableau[20] Réel;

10
Contenu de cours

Remplissage d’un tableau

Constante N=20; //Variable T20: entier;


Variable T: tableau[1..20] Type;
Variable T: tableau[1..N] Type;
Remplissage de ce tableau :
Remplissage de ce tableau :
Pour i  1 à 20 faire
Pour i  1 à N faire
Lire T i;
Lire T i;
FinPour
FinPour

Attention : L’entier N (la taille du tableau ) doit être toujours un entier


constant prédéfini. Sinon la déclaration est fausse.

10
Contenu de cours

Stockage dans la mémoire d’un tableau

Adrr0 Adrr1 Adrr19


T val1 val2 … val20 Réel

T 0  val1;

Remplissage d’un tableau: T 1  val2;

T 2  val2;
……
T 19  val20;

10
Contenu de cours

Remplissage d’un tableau


Remplissage d’un tableau unidimensionnel
 Remplissage un par un:
Soit : Variable T: tableau[3] Réel;
T[0]←4; T[1]←40; et T[2]←34;
 Remplissage à la fois:
 Soit : Variable T: tableau[3] Réel;
• T[3]←{4,40,34}; est vraie.
 ou bien T[]←{4,40,34};
• T[3]←{4,40}; est vraie.
• T[3]←{4,40,34,45}; // est fausse car le nombre des éléments est
supérieur strict à la taille.

10
Contenu de cours

Remplissage par la boucle Pour

Soit T un tableau d’une seule dimension :

Variable T: tableau[N] entier;


Pour i←1 à N faire
T[i]←2*i;
FinPour

11
Contenu de cours

chaîne de caractères

Déclarer deux tableaux A et B composé chacun d’eux


de 20 éléments de type chaîne.

Variables A,B : tableau [1..20] Chaine;

Exercice
Écrire un algorithme permettant de saisir 20 notes et
de calculer et afficher leur moyenne.

11
Contenu de cours

Solution
A lg o rith m e TabN o te ;
V ariables N o te : ta b lea u 1..2 0  Ré e l;
V ariables i : en tie rs
s ,moy : rée ls ;
D eb u t
P ou r i 1 à 2 0 faire
L ire  N o te i ;
F inPou r
s  0;
P o u r i 1 à 2 0 faire
s  s+ N o te i ;
F in P o u r
m o y  s / 2 0 ; E crire  m o y  ;
F in
11
Contenu de cours

Tableau à deux dimensions


Un tableau à deux dimensions se présente comme une matrice
ayant un certain nombre de lignes (première dimension) et un certain
nombre de colonnes (seconde dimension).
Syntaxe :
Variable identificateur(s) : tableau[1..nb_ligne, 1..nb_colo] Type;
Ou bien

Variable identificateur(s) : tableau[nb_lignes, nb_colonnes] Type;


Ou bien

Variable identificateur(s) : tableau[nb_lignes][ nb_colonnes] Type;

11
Contenu de cours

Exemple

L’instruction suivante déclare un tableau T composé de


20 lignes et 30 colonnes de type réel.

Variable T: tableau [1..20, 1..30] Réel;

T[i,j] désigne une valeur du tableau T de la ième ligne et de la


jème colonne de T.

11
Contenu de cours

Tableau à deux dimensions

Remplissage :
Pour i  1 à 20 faire
Pour j 1 à 30 faire

 
Lire Ti,j ; // LireT [i][ j] ;

FinPour

FinPour
11
Contenu de cours

Tableau à deux dimensions

Écrire un algorithme T permettant de saisir les notes


de cinq matières d’une classe de 20 étudiants .

11
Contenu de cours

Solutions
Algorithme tabNote;
Algorithme tabNote; Constante N=20; M=5;
Variables T : tableau 1..20,1..5 Réel; Variables T : tableau 1..N,1..M Réel;
Variables i,j : entiers; Variables i,j : entiers;
Debut Debut
Pour i  1 à 20 faire Pour i  1 à N faire
Pour j  1 à 5 faire
Pour j  1 à M faire
LireT i,j; // LireT [i][ j] ;
LireT i,j; // LireT [i][ j] ;
FinPour
FinPour
FinPour
FinPour
Fin
Fin

11
Contenu de cours

Chaines de caractères
Une chaîne de caractères n'est rien d'autre qu'un tableau de type
caractère. Ce tableau devrait contenir un caractère spécial à la fin ‘\0’.
 Chaine constante/ tableaux de caractères. :

 En C, une chaîne de n caractères occupe en mémoire un emplacement

de n+1 octets.
 Ainsi, pour stocker un mot de dix lettres, il fallait déclarer un tableau

de type char et de taille onze tab[11].


 Déclaration et initialisation:

Variable T: Tableau[7] Caractère;


T[] ←{ 'b','o','n','j','o','u','r','\0' } ;

11
Contenu de cours

Remplissage par une chaîne de caractères

 Soit : Variable T: tableau[6] Caractère;


 T[ ]← "jesui"; //est vraie et équivalent à
 T[ ]← {‘j’,’e’,’s’,’u’,’i’,’\0’};
 T[ ]← " jesuisUn"; //est fausse car le nombre des caractères
est supérieur strict à la taille car elle est équivalente à
 T[ ]← {‘j’,’e’,’s’,’u’,’i’,’s’,’U’,’n’,’\0’};
 T[ ]← "jesuis" ; //est fausse car elle est équivalente à
 T[6]← {‘j’,’e’,’s’,’u’,’i’,’s’,’\0’};

11
Contenu de cours

Tableaux
Un tableau de caractères est en fait une chaîne de caractères. Son
remplissage peut se faire de plusieurs façons :
 T[10]={’B’,’o’,’n’,’j’,’o’,’u’,’r’} ; // Remplissage par des caractères;
 T[10]="Bonjour" ; /* Remplissage par une chaîne littérale */
 T[ ]="Bonjour" ; /* p3 aura alors 8 éléments */
 Affichage à l'écran d’une chaîne de caractères:
 On peut utiliser l’adresse pointant sur le premier caractère:
 Ecrire(T);// T est l’adresse du 1er caractère;

 Ou bien, on peux utiliser la boucle Pour:


 Pour i←1 à 6 faire

Ecrire(T[i]); //Affichage caractère par caractère;


FinPour
12
Contenu de cours

Exemple
 Initialisation par affectation:
Algorithme Chaine;
Variable Tchain: tableau[6] Caractère;
Début
Tchain[] ← "bonjour" ;
Ecrire(" votre chaine est: ", Tchain);
Fin
 En utilisant la boucle Pour:
Algorithme Chaine;
Variable Tchain: tableau[6] Caractère;
Début
Ecrire(" Saisir une chaine de caractère de taille inférieure à 6 caractère: ");
 Lire(Tchain);
 Pour i←1 à 6 faire

Ecrire(T[i]);
FinPour
Fin
12
Contenu de cours

Remarques Très Importantes


Soit T un identificateur d’un tableau :
L’identificateur T représente une variable qui retourne l’adresse de ce
tableau : plus précisément l’adresse du premier élément de ce tableau.
Les identificateurs de deux tableaux différents ont des adresses différentes.
La remplissage des éléments d’un tableau par les éléments d’autre tableau
doit:
 Être élément par élément: T[1] ← Tab[2];
 Respecter le type s’il est nécessaire, à condition de respecter la taille de
chaque type:
 remplir un élément de type caractère Tc[] par un élément de type entier
Te[], on doit appliquer la règle: Tc[] ←Te[] mod 256;
 remplir un élément de type entier Te[] par un élément de type réel Te[],
on doit supprimer la partie réelle;
12
Contenu de cours

Égalité de deux tableaux

On dit que deux tableaux sont égaux s’ils ont :


 Même taille pour chaque dimension.
 Même type.
 Les éléments de même indice sont égaux.
Remarque : T==Tab; est fausse si T et Tab désignent
deux tableaux.

12
Contenu de cours

Exemple

Écrire un algorithme permettant, à l’utilisateur de


saisir 20 notes d'une classe. Une fois la saisie
terminée, l’algorithme renvoie le nombre de ces notes
supérieures à la moyenne de la classe.

12
Contenu de cours

Solution
Algorithme NotesSup;
Variables i, Som, Moy, Nbsup : Eniers;
Tableau T : Tableau[20] réel;
Debut Moy ← Som / 20;
Pour i ← 0 à 19 faire NbSup ← 0;
Ecrire ("Entrez la note ", i + 1); Pour i ← 0 à 19 faire
Lire (T[i]); Si (T[i] > Moy) Alors
FinPour NbSup ← NbSup + 1;
Som ← 0; FinSi
Pour i ← 0 à 19 faire FinPour
Som ← Som + T[i]; Ecrire (NbSup, " élèves dépassent la moyenne" );
FinPour Fin

12
The END
12
160
6

Vous aimerez peut-être aussi