Vous êtes sur la page 1sur 84

ALGORITHME ET PROGRAMMATION

2022 – 2023

Par Jeannet NOUO VOUDZA


Ingénieur Informaticien
Chargé de cours
PLAN DU COURS

Chap I : Ordinateur, Programme et Langage


Chap II : Variables et instruction d'affectation
Chap III : Les structures de choix
Chap IV: Les structures de répétition
Chap V : Les fonctions et procédures
Chap VI : Algorithmes de tri quadratiques
Chap VII : Les tableaux
Chap VIII : Introduction au langage de programmation C
Chap IX : Les structures de données

2
DEROULE DU COURS
Début : 22 Février 2023
Fin : 17 Mars 2023
Chap I : Ordinateur, Programme et Langage
Chap II : Variables et instruction d'affectation
Chap III : Les structures de choix
Chap IV: Les structures de répétition
Chap V : Introduction au langage de programmation(C, Pascal,Java,…)
Chap VI : Algorithmes de tri quadratiques
Chap VII : Les tableaux
Chap VIII : Les fonctions et procédures
Chap IX : Les structures de données
Travaux Dirigés (xx h)
Travaux Pratiques : (xx h)
Evaluation : 17/03/2023 3
Chapitre 0
Discipline Informatique

4
4
Chapitre 0 : Discipline Informatique

ENIAC, 1945 En 2021 - Metaverse


30 tonnes, 160 m² au sol,
5000 additions par seconde

5
5
Chapitre I
Ordinateur, Programme et Langage

6
6
Chapitre I : Ordinateur, Programme et Langage
L’ordinateur

Il traite l’information grâce à un programme qu’il mémorise. Il communique et archive des


informations.
✓ Mémoire centrale: Programme et infos temporaires
✓ Unité de traitement: Chargée de prélever une à une les instructions du programme et
de les exécuter. Il y a deux types d’instructions :
• Opérations internes (addition, soustraction, …)
• Opérations de communication (affichage, archivage, …)
✓ Périphériques: d’entrée, de sortie, d’entrée/sortie
7
7
Chapitre I : Ordinateur, Programme et Langage
L’ordinateur

1. Prélèvement d’une instruction

2. Exécution de l’instruction avec possibilité d’échange avec la MC

3. Exécution d’une instruction d’échange avec un périphérique


8
8
Chapitre I : Ordinateur, Programme et Langage
L’ordinateur

ORGANISATION DE LA MÉMOIRE CENTRALE

✓ C’est une grille où chaque case peut prendre la valeur 0 ou 1 (bit)

✓ On ne manipule pas des cases mais des ensembles de case qu’on


appelle mots

✓ Généralement un mot correspond à un octet (8 bits)

✓ Chaque mot a une adresse.

9
9
Chapitre I : Ordinateur, Programme et Langage
L’ordinateur
UNITE DE TRAITEMENT

✓ Sait exécuter des opérations très simples:

• Addition, soustraction, comparaison, …

✓ Chaque instruction du programme doit préciser

• La nature de l’opération (son code binaire)

• La ou les adresses sur lesquelles porte l’opération

✓ Les instructions sont exécutées l’une à la suite de l’autre

• Sauf si on rencontre une opération de branchement


10
10
Chapitre I : Ordinateur, Programme et Langage
L’ordinateur

NOTION DE SYSTÈME D’EXPLOITATION

✓ Logiciel de base d’un ordinateur (Windows, Unix, OS/400, Android,


IOS, Mac OS, etc…)

✓ Fait le lien entre les utilisateurs et les logiciels applicatifs

✓ Gère les différents accès aux ressources des logiciels

11
11
Chapitre I : Ordinateur, Programme et Langage
Programme

Lire les Ecrire les


Effectuer les
données en données en
calculs
entrée sortie

✓ L’ordinateur ne comprend que le binaire, est ce pour autant qu’on


doive écrire des programmes en binaire ?

✓ Il existe des langages de programmation dits « évolués » (proches


du langage courant, généralement de l’anglais)

✓ Pour chaque langage, il existe un programme « qui le traduit » en


binaire
12
12
Chapitre I : Ordinateur, Programme et Langage
Programme

Il existe essentiellement deux modes de traduction :

✓ Compilation: la traduction se fait une fois pour toute

✓ Interprétation: a chaque fois qu’on veut exécuter le programme,


l’interprète traduit une instruction à la fois. Une fois que celle-ci est
exécutée, il passe à l’instruction suivante

13
13
Chapitre I : Ordinateur, Programme et Langage
Langage

✓ A priori, écriture de programmes dans un langage de programmation


(C, Java, Pascal, Visual Basic, Fortran, Python, Perl, …)

✓ Or il y a plusieurs langages, est ce que cela veut dire qu’il existe


plusieurs sortes de programmation?

✓ En réalité, la plupart des langages utilisent les mêmes concepts


dans le cours, on utilisera une notation particulière: Notation
algorithmique.

14
14
Chapitre I : Ordinateur, Programme et Langage
Programmation

Elle s’effectue en 2 étapes:

✓ Analyse du problème et recherche du moyen d’aboutir au résultat


à partir des données dont on dispose, écriture d’un algorithme,

✓ Traduction de l’algorithme dans un langage de programmation

15
15
Chapitre I : Ordinateur, Programme et Langage
Algorithme

✓ Une description des différentes étapes permettant de résoudre un


problème quelconque.

✓ Ex: Résolution d’une équation du 2nd degré


1. Connaître les valeurs de a, b et c
2. Calculer le discriminant D=b2 –4ac
3. Si D < 0 alors pas de solution
Sinon Si D = 0 alors solution double = b/2a
Sinon (donc D > 0) alors deux solutions

16
16
Conclusion
Étapes de conception d'un programme informatique

1 – Identifier le problème : quelle(s) donnée(s), quel(s) résultat(s) ?


2 – Organiser les actions : écrire l'algorithme (pseudo-code, organigramme)
- Réfléchir aux informations à manipuler
- Analyser le problème et le décomposer éventuellement en sous-
problèmes
- Rendre l'algorithme compréhensible et efficace
- Penser à l'utilisateur
3 – Traduire cet algorithme en langage de programmation
4 – Compiler le programme pour qu'il puisse être exécutable

17
17
Chapitre II
Variables et instruction d'affectation

18
18
Chapitre II : Variables et instruction d'affectation
Notion de Variable
✓ Les variables servent à « nommer » des emplacements ou adresses de
la mémoire;
✓ Une variable est un espace mémoire nommé de taille fixe, prenant au
cours du déroulement de l’algorithme un nombre indéfini de valeurs
différentes;
✓ Permettent de manipuler des valeurs sans connaître leurs emplacements
exactes;
Coté machine Coté Programmeur

001 A
010 B
011 Montant

19
Mémoire Centrale 19
Chapitre II : Variables et instruction d'affectation
Type d’une Variable
✓ Le type d’une variable permet
– De savoir quel est l’espace mémoire occupé par une variable
– Quelles sont les opérations autorisées sur la variable
✓ Les types de base:
- Entiers
Une variable de type entier peut prendre comme valeur
l'ensemble des nombres entiers signés. Les opérations associées sont
les opérations usuelles +,-,*,/.
- Réels
Une variable de type réél peut prendre comme valeur
l'ensemble des nombres réels. Les opérations associées sont les
opérations usuelles +,-,*,/.

20
20
Chapitre II : Variables et instruction d'affectation
Type d’une Variable
- Caractères
Une variable de type car peut prendre comme valeur l'ensemble des
caractères imprimables.
On notera les valeurs entre guillemets. On considère souvent que les
caractères sont ordonnés dans l'ordre alphabétique.
Les valeurs :
o "1" qui est un caractère,
o 1 qui est un entier,
o 1. qui est un réel
sont différentes et ne seront pas codés de la même manière dans la mémoire
de la machine.

- Booléens
Une variable de type booléen prend comme valeur VRAI ou FAUX.
Les opérations usuelles sont ET, OU et NON qui sont données dans les
tables qui suivent.
21
21
Chapitre II : Variables et instruction d'affectation

Déclaration d’une Variable

Remarque: Toutes les opérations exécutées par un ordinateur son des


Instructions et elles se terminent par un point virgule(;).

✓ Déclaration d’une variable dans un algorithme obéit à la syntaxe :


– Variable nom_de_variable : Type
– Ex:
• Variable Note: Réel;
• Variable Coefficient: Entier ;

22
22
Chapitre II : Variables et instruction d'affectation
Affectation d’une Variable
➢ Rôle :
Instruction de MODIFICATION de la valeur d’une variable à partir d’une
expression. Elle est notée par ←.

➢ Syntaxe : < identificateur de variable > ← < expression >;


❖ Exemples :
Interet ← (somme * TAUX) / 100;
Somme ← somme + interet;

❖ < expression > c’est :


✓ Une constante
✓ Une variable
✓ Le résultat d’un calcul fait à partir de constantes et de variables
➢ Mécanisme :
1. Evaluation de l’expression qui se trouve à droite de la flèche
2. Rangement de ce résultat dans la variable dont l’identificateur est à
gauche de la flèche. 23
23
Chapitre II : Variables et instruction d'affectation
Affectation d’une Variable
➢ Etat des variables avant l’exécution de l’affectation
Si Somme= 1636 et Interet=73.62 alors Somme ← Somme + Interet

➢ Etat des variables après l’exécution de l’affectation


Somme=1709.62 et Interet=73.62

➢ Conséquence : s’il y avait une valeur dans la variable, elle est perdue
(écrasée par la nouvelle valeur)
➢ Important : le type du résultat de l’expression doit être compatible avec le type
de la variable.

24
24
Chapitre II : Variables et instruction d'affectation
Instruction de lecture
➢ Rôle :
Instruction d’ENTREE qui permet l’interactivité avec l’utilisateur. Utilise un
périphérique d’entrée.
➢ Syntaxe : Lire(< identificateur de variable1>, [<identificateur de variable2>, …]);
✓ Exemples :
Lire(Taux);
➢ Mécanisme :
1. Interruption du déroulement de l’algorithme
2. Attente d’une entrée de l’utilisateur
3. Rangement de la valeur entrée dans la variable dont l’identificateur suit le
mot réservé lire
➢ Conséquence : s’il y avait une valeur dans la variable, elle est perdue (écrasée
par la nouvelle valeur)
➢ Important : le type de la valeur entrée doit être compatible avec le type de la
variable.
25
25
Chapitre II : Variables et instruction d'affectation
Instruction d’Ecriture
➢ Rôle :
Instruction de SORTIE qui permet l’interactivité avec l’utilisateur. Utilise un
périphérique de sortie.

➢ Syntaxe : Ecrire( <expression_1>, [<expression_2>, …] >);

➢ Mécanisme :
Prend les expressions les unes après les autres et envoie leur valeur en sortie
(écran).

Exemple :
Soit x une variable qui contient la valeur entière 13. L’instruction Ecrire("le
successeur de ", x, " est ", x+1) envoie à l’écran le résultat de 4 expressions
; on pourra lire : “ le successeur de 13 est 14 ”.
26
26
Chapitre II : Variables et instruction d'affectation
Expression
➢ Définition : Une expression simple est :
✓ Une valeur (constante explicite) ex: 13, 21.73, ‘t’
✓ L’identificateur d’une variable (c'est à dire l'accès à sa valeur) : nb, g ou
lettre
✓ La combinaison de valeurs et/ou identificateurs de variables et d'opérateurs
( et d’appels de fonctions qui seront abordés ultérieurement) :
ex : nb + 10 où nb et 10 sont les opérandes et + l’opérateur
✓ Dans les expressions complexes, les opérandes peuvent être eux mêmes
des expressions :
ex: (nb + 10 ) * G

➢ Type d’une expression C’est le type de son résultat :


✓ nb + 10 est de type entier
✓ (nb + 10 ) * G est de type réel
✓ ‘lettre’ est de type caractère 27
27
Chapitre II : Variables et instruction d'affectation
Expression
➢ Expressions numériques

Soit l’expression “ a op b ” où a, b sont les opérandes et op l’opérateur.

Les opérateurs div et mod sont ceux de la division euclidienne :


a = b * q + r avec r < b
q = a div b , quotient entier dans la division entière de a par b
r = a mod b, reste dans la division entière de a par b

ex : 32 div 5 vaut 6 et 32 mod 5 vaut 2

Priorité : les opérateurs {* / div mod,} sont prioritaires sur les opérateurs {+ -}
28
28
Chapitre II : Variables et instruction d'affectation
Expression
➢ Expressions booléennes(1/2)

✓ deux valeurs portées par les symboles vrai et faux.


✓ on peut déclarer des variables de type booléen.
exemples :
• possible : booléen
• trouve : booléen
• possible ← vrai

Attention : vrai est un symbole et non pas un identificateur de variable


✓ Une expression booléenne peut être réduite à une variable booléenne,
exemple : possible ← trouve
✓ Une expression booléenne peut être construite à partir d’entiers et de réels
(plus tard à partir de caractères et de chaînes) avec les opérateurs :
< <= > >= = <> 29
29
Chapitre II : Variables et instruction d'affectation
Expression
➢ Expressions booléennes(2/2)
exemples :

46 > 100 est une expression booléenne dont la valeur est faux
Si x est une variable réelle contenant la valeur 5.45, x < 10 est une
expression booléenne dont la valeur est vrai.

✓ Une expression booléenne peut aussi être construite à partir d’autres


expressions booléennes et des opérateurs : non , et, ou.
✓ Priorité : non est prioritaire sur et qui est prioritaire sur ou.

30
30
Chapitre II : Variables et instruction d'affectation
Expression

➢ Expressions caractères et chaînes de caractères

✓ type caractère : un seul caractère


✓ type chaîne : suite de caractères (éventuellement un seul)
nom : chaîne de caractère;
nom ← ‘Arthur’;
Ecrire(‘Son nom est : ‘, nom); Affichera à l’écran: Son nom est Arthur

Attention : Comme les identificateurs sont constitués de caractères, il y a


ambiguïté entre un identificateur et une chaîne de caractères. Pour lever
cette ambiguïté, toutes les valeurs de type caractère ou chaîne sont
encadrées par des séparateurs.

31
31
Chapitre II : Variables et instruction d'affectation
Structure d’un algorithme

Algorithme Carre;
Constante Pi=3,14; g=10;
Type T1; T2;
Fonction F1;
Procedure P1;

Var a,b,c : Réel;

Début
Instructions;
Fin.

32
32
Chapitre III
Les structures de contrôle

33
33
Chapitre III : Les structures de contrôle
Il y a trois structures principale de contrôle qui permettent de
construire des algorithmes
✓ Bloc d'instruction
Début
instruction1
instruction2
.............
Fin
Ex: Algorithme Carre;
Var a,b,c, D: Réel;
Début
a ←Lire(); // Est équivalent à Lire(a);
b ←Lire();
c ←Lire();
D←b*b-4*a*c;
Ecrire(‘’La valeur de D est :’’, D);
Fin.
34
34
Chapitre III : Les structures de contrôle
✓ Alternative
Alternative simple

Si ExpressionBooléenne alors
BlocInstruction1
Sinon
BlocInstruction2
Finsi;
Ex:
Si (D>0) alors
Ecrire(‘’ll y a deux solutions’’)
Sinon Si (D=0) alors
Ecrire(‘’ll y a une solution double’’)
Sinon
Ecrire(‘’ll n’y a pas de solution dans IR’’)
Finsi
Finsi;
35
35
Chapitre III : Les structures de contrôle

Alternative multiple

Selon que D
cas cas1 : BlocInstruction1
cas cas2 : BlocInstruction2
.............
autrement : BlocInstruction
Finselonque

Ex:
Selon que abréviation
"M" : Ecrire(" Monsieur " );
"Mme" : Ecrire(" Madame " );
"Mlle" : Ecrire(" Mademoiselle " );
Autres : Ecrire(" Monsieur, Madame " );
FinSelonque

36
36
CHAPITRES
I, II et III

TRAVAUX DIRIGES

37
37
Chapitre IV
Les structures de répétition

38
38
Chapitre IV : Les structures de répétition

Une boucle permet d’effectuer un traitement à plusieurs reprises(Répétition).


Il existe plusieurs types de boucles :
- la boucle TANT QUE
- la boucle REPETER (ou boucle JUSQU’À CE QUE)
- la boucle POUR (extension de la boucle TANT QUE)

✓ Principe de la boucle TANT QUE

TANT QUE la condition est vraie :


- on effectue l’instruction (ou le bloc d’instructions)
- on revient au début de la boucle Lorsque la condition est fausse, on
passe à l’instruction suivante.

Tant que <condition> Faire


<instruction>
FinTantque
39
39
Chapitre IV : Les structures de répétition
✓ Principe de la boucle TANT QUE

TANT QUE la condition est vraie :


- on effectue l’instruction (ou le bloc d’instructions)
- on revient au début de la boucle lorsque la condition est fausse,
on passe à l’instruction suivante.
Tant que <condition> Faire
<instruction>
FinTantque
✓ Exemple: L’algorithme ci-dessous calcule 10 !
Début
i ← 1;
Fac ← 1;
Tant que (i<=10)Faire
Fac ← Fac*i;
i←i+1;
FinTantque
Afficher(Fac); 40
Fin; 40
Chapitre IV : Les structures de répétition
✓ Principe de la boucle Répéter

• La condition doit finir par devenir vraie (on répète le traitement jusqu’à
ce que la condition soit vraie, i.e. tant que la condition est fausse)
• Le traitement est réalisé au moins une fois, car le test est effectué
après.
Répéter
<instruction>
Jusqu’à <condition>
✓ Exemple: L’algorithme ci-dessous calcule 10 !
Début
i ← 1;
Fac ← 1;
Répéter
Fac ← Fac*i;
i←i+1;
Jusqu’à (i >10);
Afficher(Fac); 41
Fin; 41
Chapitre IV : Les structures de répétition
✓ Principe de la boucle Pour
La boucle POUR permet d’effectuer un traitement à plusieurs reprises en
incrémentant ou décrémentant automatiquement une variable entière.

Pour <var> ← valInit à valfin [par <pas>] faire


traitement {suite d’instructions}
Finpour

✓ Exemple: L’algorithme ci-dessous calcule 10 !


Début
Fac ← 1;
Pour i← 1 à 10 Faire
Fac ← Fac*i;
Finpour
Afficher(Fac);
Fin;
42
42
Chapitre IV : Les structures de répétition

L’instruction Pour:
• Initialise une variable de boucle (le compteur)
• Incrémente cette variable de la valeur de « pas »
• Vérifie que cette variable ne dépasse pas la borne supérieure

Attention :
• le traitement ne doit pas modifier la variable de boucle

Pour cpt ← 1 à MAX Faire


si (Condition) alors
cpt ← MAX;
Finpour

43
43
Chapitre IV : Les structures de répétition

✓ Comparaison des boucles POUR et TANT QUE


Pour cpt _1à nbVal Faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurs_totalValeurs+ valeur {cumul}
Finpour

Est équivalent à

cpt ← 0;
Tant que cpt <nbVal Faire
Afficher("Donnez une valeur :");
Saisir(valeur);
totalValeurs ← totalValeurs+ valeur;
cpt ← cpt + 1;
FinTantQue

44
44
Chapitre IV : Les structures de répétition

▪ Implicitement, l’instruction Pour:


• initialise un compteur
• incrémente le compteur à chaque pas
• vérifie que le compteur ne dépasse pas la borne
Supérieure

▪ Explicitement, l’instruction Tant que doit :


• initialiser un compteur {amorçage}
• incrémenter le compteur à chaque pas {relance}
• vérifier que le compteur ne dépasse pas la borne
supérieure {test de boucle}
45
45
Chapitre IV : Les structures de répétition

▪ Quand choisir POUR ou TANT QUE?

➢ Si le nombre d’itération connu à l’avance : POUR


• Parcours de tableaux
• Test sur un nombre donné de valeurs
➢ Si la boucle s’arrête sur événement particulier : TANT QUE
• Itération avec arrêt décidé par saisie utilisateur

46
46
Chapitre IV : Les structures de répétition

✓ Comparaison des boucles Répéter et TANT QUE


Répéter
Afficher("Donnez une valeur positive paire :");
Saisir(valeur);
Jusqu’à (valeur < 0);

Est équivalent à

Afficher("Donnez une valeur positive paire :") ;


Saisir(valeur);
Tant que(valeur < 0) Faire
Afficher("Donnez une valeur positive paire:");
Saisir(valeur);
FinTantQue

47
47
Chapitre IV : Les structures de répétition

▪ Pour la boucle Tant que


• condition vérifiée avant chaque exécution du traitement
• le traitement peut donc ne pas être exécuté
• de plus : la condition porte surtout sur la saisie de nouvelles
variables (relance)

▪ Pour la boucle Répéter … Jusqu’à


• condition vérifiée après chaque exécution du traitement
=>le traitement est exécuté au moins une fois
• de plus: la condition porte surtout sur le résultat du traitement

48
48
CHAPITRE
IV

TRAVAUX DIRIGES

49
49
Chapitre V
Les Fonctions et Procédures

50
50
Chapitre V : Les Fonctions et Procédures
▪ Les fonctions
Une fonction est une section d'algorithme qui a un objectif
bien défini et un nom. Elle possède des variables locales qui ne sont
pas visibles à l'extérieur de la fonction.
Une fonction retourne une valeur par l'instruction simple
retourne (Expression).
Syntaxe:
fonction NomDeFonction (ListeParamètres) : TypeRésultat;
//déclarations des variables ou fonctions locales
début
// partie instruction qui contient l'appel à retourne
finFonction
Exemple:
Fonction exemple(val n:entier;ref m: entier):Entier;
Var Tot:Entier;
début
Tot ← n*m;
Retourne(Tot);
finFonction 51
51
Chapitre V : Les Fonctions et Procédures
▪ Les Procédures
Une procédure est une section d'algorithme qui a un objectif
bien défini et un nom. Elle possède des variables locales qui ne sont
pas visibles à l'extérieur de la fonction.
A l’opposé de la fonction, elle ne retourne pas une valeur et
n’a pas de type de résultat.
Syntaxe:
Procedure NomDeFonction (ListeParamètres);
//déclarations des variables ou fonctions locales
début
// partie instruction
finProcedure
Exemple:
Procedure exemple(val n:entier;ref m: entier);
Var Tot:Entier;
début
Tot ← n*m;
m ← 23*Tot+n*Tot;
finProcedure
52
52
Chapitre V : Les Fonctions et Procédures

▪ Les variables globales


Une variable globale est accessible à l’ensemble des sous
programmes d’un programme.
▪ Les variables locales
Une variable locale n’est accessible que dans le sous programme dans
lequel elle est déclaré.

▪ Le passage de variables par adresse


Dans ce cas, les paramètres d’une fonction/procédure sont des
adresses mémoires modifiables dans le sous programmes.

▪ Le passage de variables par valeur


Dans ce cas, les paramètres d’une fonction/procedure conservent leurs
valeurs à la fin du sous programmes.

53
53
PausoLogique

Définition : Nom féminin. Pause de cinq (5) minutes visant


à résoudre une question de logique qui rapporte 0,5 point
pour le contrôle.

Question :

Qui suis-je?

J’ai quatre dents mais je ne mords pas. Quand j’attrape


quelque chose, elle m’est aussitôt enlevée.

54
54
Chapitre VI
Les types de données personnalisées
Les Enregistrements et les Tableaux

55
55
VI.1- Les Enregistrements
✓ Définition
Un enregistrement est un type de données défini par
l'utilisateur et qui permet de grouper un nombre fini d'éléments (ou
champs) de types éventuellement différents(hétérogène).
✓ Déclaration
Nom_type = Enregistrement
champ 1 : Type 1
----
champ n : Type n
Fin Nom_Type

VAR identificateur_objet : Nom_type ;

✓ Exemple
Fiche = Enregistrement
nom, prénom : Chaîne;
sexe : Caractère;
numéro : Entier non signé;
moyenne : Réel;
Fin Fiche 56
56
VI.1- Les Enregistrements
✓ Exemple (Ecriture)
Var Etudiant : Fiche ;

Etudiant.nom ← ‘’Charles’’ ;
Etudiant.prenom ← ‘’NGUEMA’’ ;
Etudiant.sexe ← ‘’M’’ ;
Etudiant.numero ← 25;
Etudiant.moyenne ← 14.25;
Autrement
Avec Etudiant Faire
nom ← ‘’Charles’’ ;
prenom ← ‘’NGUEMA’’ ;
sexe ← ‘’M’’ ;
numero ← 25;
moyenne ← 14.25;
Fin Avec
✓ Exemple (Lecture)
Var Moyenne : Entier non signé;

Moyenne ← Etudiant.moyenne; 57
57
VI.1- Les Enregistrements
✓ Exemple (Pascal)
Fiche = Record
nom, prenom : String;
sexe : Char;
numéro : Integer;
moyenne : Real;
End;

VAR Etudiant : Fiche ;

➢ Affectation des valeurs à cette variable :

Etudiant.nom := ‘’Charles’’ ;
Etudiant.prénom :=‘’NGUEMA’’ ;
Etudiant.sexe :=‘’M’’;
Etudiant.numéro := 25;
Etudiant.moyenne := 14.25;

58
58
VI.2- Les Tableaux
✓ Définition
Un tableau est un vecteur ou un regroupement d’éléments
de même type.
✓ Déclaration
Nom_type_tableau = Tableau de[1..Max] de Nom_type ;

✓ Exemple
Fiche = Enregistrement
nom, prénom : Chaîne;
sexe : Caractère;
numéro : Entier non signé;
moyenne : Réel;
Fin Fiche

Tab1=Tableau de [1…Max] de réel;

Tab =Tableau de [1…Max] de Fiche;

59
59
VI.2- Les Tableaux
✓ Exemple
Fiche = Enregistrement
nom, prénom : Chaîne;
sexe : Caractère;
numéro : Entier non signé;
moyenne : Réel;
Fin Fiche

Tab=Tableau de [1..Max] de Fiche;

Var Liste_Etudiants : Tab;

0 1 2 3 4 5 6 …. Max
Liste_Etudiants

nom := ‘’Charles’’ ; nom := ‘’André’’ ;


prénom :=‘’NGUEMA’’ ; prénom :=‘’’MOUSSAVOU’’ ;
sexe :=‘’M’’; sexe :=‘’M’’;
numéro := 25; numéro := 29;
moyenne := 14.25; moyenne := 10.25;

60
60
VI.2- Les Tableaux

✓ Exmple d’un tableau

Type Tab: Tableau [1…Max] de reel;


Var T:Tab;
A:reel;

➢ En Ecriture
Lire(A);
T[i] ←A;

➢ En Lecture
Ecrire(T[i]) ;

0 1 2 3 4 5 6 …. Max
T

61
61
VI.2- Les Tableaux
✓ Parcours d’un tableau
Var T: Tableau [1…Max] de Fiche;
➢ En Ecriture
Pour i ← 0 à Max Faire
Lire(T[i]. Nom);
Lire(T[i]. Prénom);
FinPour

➢ En Lecture
Pour i ← 0 à N Faire
Ecrire(T[i]. Nom) ;
Ecrire(T[i]. Prénom) ;
FinPour

0 1 2 3 4 5 6 …. Max
T

nom := ‘’Charles’’ ; nom := ‘’André’’ ;


prénom :=‘’NGUEMA’’ ; prénom :=‘’’MOUSSAVOU’’ ;
62
62
VI.2- Les Tableaux
➢ Les tableaux à deux dimension
C’est une matrice M x N ou un regroupement d’éléments de
même type.
✓ Déclaration
Nom_type_tableau2 = Tableau de [1..Max1] [1..Max2] de Nom_type ;
VAR identificateur_objet : Nom_type_tableau2 ;
✓ Exemple
Matrice=Tableau de [1..Max1] [1..Max2] d’entiers.
Var Liste_Pions: Matrice;

✓ Parcours d’un tableau à deux dimensions


Var T: Matrice;
➢ En lecture / En Ecriture
Pour i ← 0 à Max Faire
Pour i ← 0 à Max Faire
Lire(T[i,j]);
Ecrire((T[i,j]);
FinPour
FinPour 63
63
VI.2- Les Tableaux
➢ Les algorithmes de tri
Permettent de donner un ordre aux éléments d’un tableau ou
d’une liste.
✓ Tri par sélection
Procédure Tri_Selection(Var T:Tableau)
var i, j, posmini : entier;
temp : Type_des_élements_tableau
Debut
Pour i ← 0 à Max Faire
posmini ← i
Pour j ← (i + 1) à Max Faire
Si (T[j] < T[posmini]) Alors
posmini ← j
Finsi
FinPour
temp ← T[posmini];
T[posmini] ← T[i] ;
T[i] ← temp;
FinPour
Fin;

64
64
VI.3- Les Applications
Exercice 1:

Un produit quelconque peut être représenté par les informations ci-


dessous :

- La désignation du produit

- La référence du produit
- Sa quantité en stock

- Son prix unitaire

Proposer une structure pouvant permettre de gérer les produits.

Exercice 2:
Proposer une structure pouvant permettre la manipulation des nombres
complexes (Ensemble ℂ).
65
65
VI.3- Les Applications

Exercice 3:
Soit un tableau T de nombre de taille Max initialisé à 0. Proposer des
algorithmes qui permettent de :

1- Permuter deux éléments en position i et j de ce tableau;

2- Supprimer un élément en position i du tableau;


3- Insérer un élément en position i du tableau;

4- Trier par ordre croissant les éléments du tableau.

Exercice 4:
Ecrire un algorithme qui déclare un tableau de 9 notes, dont on fait ensuite
saisir les valeurs par l’utilisateur.
66
66
VI.3- Les Applications
Exercice 5:

Un médecin enregistre sur ordinateur les fiches de ses Patients. Une


fiche a la structure suivante :

- un nom (chaîne de 30 caractères maximum) ;

- un numéro (entier) ;
- un numéro de téléphone (10 caractères maximum) ;

- un code d'assurance (entier non signé).

1/ Ecrire les algorithmes des différents modules d'un programme


nommé Fiche, qui permet la saisie et l'affichage de l'enregistrement
d'un Patient.
2/ Traduire ce programme en C.

67
67
PausoLogique

Définition : Nom féminin. Pause de cinq (5) minutes visant


à résoudre une question de logique qui rapporte 0,5 point
pour le contrôle.

Question :

Qui suis-je?

On y entre par un trou et on en sort par deux.

68
68
Chapitre VII
Les types de données avancées
Les Fichiers et Les Pointeurs

69
69
VII.1- Les Fichiers

A-Définition
B-Accès à un fichier
C-Manipulation de fichiers
D-Exemple en Pascal

70
VII.1- Les Fichiers
A-Définition:

Un fichier est une séquence d'enregistrements (fiches) du même type


(entier, réel, caractère, …) rangée sur une mémoire secondaire (disque,
disquette, …).

B-Accès à un fichier :

Il existe 2 types accès à un fichier :

➢ accès séquentiel ;

o On ne peut accéder qu’à la donnée suivant celle qu’on vient de lire.

o On ne peut donc accéder à une information qu'en ayant au


préalable examinée celle qui la précède.

o Dans le cas d'un fichier texte, cela signifie qu'on lit le fichier ligne
par ligne (enregistrement par enregistrement).

71
71
VII.1 : Les Fichiers

➢ accès direct;

o On peut accéder directement à l’enregistrement de son choix, en


précisant le numéro de cet enregistrement.

C-Manipulation de fichiers :

o Définition du type fichier : F: Fichier de Type_données_fichier;


o Création d'un fichier : Créer(nom_fichier, F) ;
o Désignation d'un fichier : Assigner(nom_fichier, F) ;
o Ouverture d'un fichier : Ouvrir(F,mode);
mode::= lecture | écriture | lecture/écriture

o Fermeture d'un fichier : Fermer(F); 72


72
VII.1- Les Fichiers
C-Manipulation de fichiers :

o Ouverture d'un fichier : Ouvrir(F,mode) ;


mode::= lecture | écriture | lecture/écriture

o Fermeture d'un fichier : Fermer(F);


o Écriture dans un fichier : Ecrire(F,données) ;
o Lecture d'un fichier : Lire(F, variable);
Remarque : Après chaque écriture/lecture, le pointeur (curseur) du fichier est
automatiquement avancé.

Accès direct :
o Décaler(F, position, décalage) ;
position::= Début_fichier | Fin_fichier | Position_courante

o Fin d'un fichier : Fin(F);

73
73
VII.1- Les Fichiers
D-Exemple en Pascal: Ouverture et fermeture des fichiers

ASSIGN(F1,’CLIENT.DAT’) ;
REWRITE(F1) ; {création et ouverture du fichier F1 en
écriture}
………
{ initialisation du fichier avec READ/WRITE}
………
CLOSE(F1) ; {Fermeture du fichier}
RESET(F1); {Ouverture du fichier en lecture/écriture}
………
………
{Manipulation du fichier READ,WRITE,SEEK etc… }
………
………
CLOSE(F1) ; {fermeture du fichier}

74
74
VII.2: Les Pointeurs

1-Définition
2-Liste Linéaire
3-Déclaration
4-Primitives
5-Quelques Algorithmes
6-Listes doublement chainées

75
VII.2: Les Pointeurs
1-Définition:
Un pointeur est une variable dont la valeur est une adresse mémoire.
Un pointeur, noté P, pointe sur une variable dynamique notée P^.
Le type de base est le type de la variable pointée. Le type du
pointeur est l'ensemble des adresses des variables pointées du type
de base. Il est représenté par le symbole ^ suivi de l'identificateur du
type de base.

La variable pointeur P pointe sur l'espace mémoire P^ d'adresse 3.


Cette cellule mémoire contient la valeur "Essai" dans le champ Info et
la valeur spéciale Nil dans le champ Suivant.
76
76
VII.2: Les Pointeurs

2-Liste Linéaire Chainée :


Une liste linéaire chaînée (LLC) est un ensemble de maillons, alloués
dynamiquement, chaînés entre eux. Schématiquement, on peut la
représenter comme suit : abcdef

Les listes chaînées entraînent l'utilisation de procédures d'allocation et de


libération dynamiques de la mémoire.
✓ Allouer(P) : réserve un espace mémoire P^ et donne pour valeur à
P l'adresse de cet espace mémoire.
✓ Désallouer(P) : libère l'espace mémoire qui était occupé par
l'élément à supprimer P^ sur lequel pointe P.

77
77
VII.2: Les Pointeurs
3-Déclaration :
Soit l’exemple ci-dessous basé sur la liste vue plus haut:
Type Cellule= Structure
Info : Chaîne;
Suivant : Liste;
Fin Structure;

- Définition le type du pointeur : Type Liste = ^Cellule;


- Déclaration d’une variable pointeur : Var P : Liste;
- Allocation d’une cellule mémoire qui réserve un espace en mémoire et donne
à P la valeur de l'adresse de l'espace mémoire P^ : Allouer(P);
- Affectation des valeurs à l'espace mémoire P^ : P^.Info ← "Essai" ;
P^.Suivant ← Nil;

NB: Quand P = Nil alors P ne pointe sur rien


78
78
VII.2: Les Pointeurs
4-Primitives :
Les principaux traitements qui peuvent être effectué sur des listes sont les suivants :
✓ Créer une liste.
✓ Ajouter un élément.
✓ Supprimer un élément.
✓ Modifier un élément.
✓ Parcourir une liste.
✓ Rechercher une valeur dans une liste.

Afin de développer des algorithmes sur les listes linéaires chainées, on construit une
machine abstraite avec les opérations suivantes :
• Allouer(P) : Allocation d’un espace de taille spécifiée par le type de P.
• Libérer(P) : Libération de l’espace pointé par P.
• Valeur(P) : Consultation du champ Valeur du maillon pointé par P.
• Suivant(P) : Consultation du champ Suivant du maillon pointé par P.
• Aff_Adr(P, Q) : Dans le champ Suivant du maillon pointé par P, on range
l’adresse Q.
• Aff_Val(P,Val) : Dans le champ Valeur du maillon pointé par P, on range la
valeur Val.
79
79
VII.2: Les Pointeurs
5-Quelques Algorithmes :
Déclarations des types pour la liste :
Type Liste = ^Element
Type Element = Structure
Info : chaîne de caractères;
Suivant : Liste;
Fin Structure

Algorithme CréationListe2Elements;
Var Tete, P : Liste
NombreElt : entier
DEBUT
Tete ← Nil; /* pour l'instant la liste est vide*/
Allouer(P) ; /* réserve un espace mémoire pour le premier élément */
Lire(P^.Info); /* stocke dans l'Info de l'élément pointé par P la valeur saisie */
P^.Suivant ← Nil; /* il n'y a pas d'élément suivant */
Tete ← P; /* le pointeur Tete pointe maintenant sur P */
/* Il faut maintenant ajouter le 2e élément, ce qui revient à insérer un élément en tête de liste */
Allouer(P); /* réserve un espace mémoire pour le second élément */
Lire(P^.Info); /* stocke dans l'Info de l'élément pointé par P la valeur saisie */
P^.Suivant ← Tete; /* élément inséré en tête de liste */
Tete ← P;
FIN
80
80
VII.2: Les Pointeurs
5-Quelques Algorithmes :
Algorithme CréationListeNombreConnu;
Var Tete, P : Liste;
NombreElt : entier;
Compteur : entier;
Debut
Lire(NombreElt);
Tete ←Nil;
Pour Compteur de 1 à NombreElt Faire
Allouer(P); /* réserve un espace mémoire pour l’élément à ajouter */
Lire(P^.Info); /* stocke dans l'Info de l'élément pointé par P la valeur saisie */
P^.Suivant ←Tete; /* élément inséré en tête de liste */
Tete ← P; /* le pointeur Tete pointe maintenant sur P */
Fin Pour
Fin

Exercices d’applications:
Proposer pour chaque point ci-dessous un algorithme qui :
1- Crée une liste chaînée contenant un nombre indéterminé d'éléments,
2- Affiche tous les éléments d’une liste,
3- Recherche un élément dans une liste,
4- Supprime un élément d’une liste
5- Insère un élément à une position donnée.
81
81
VII.2: Les Pointeurs
6-Listes Doublement chainées :
✓ Il existe aussi des liste chaînées, dites bidirectionnelles, qui peuvent être parcourues dans
les deux sens, du 1er élément au dernier et inversement.

Déclarations des types pour la liste :


Type ListeDC = ^Element;
Type Element = Structure
Precedent : ListeDC;
Info : Variant;
Suivant : ListeDC;
Fin Structure;

Exercices d’applications:
Proposer pour chaque point ci-dessous un algorithme qui, pour une liste doublement chaînée :
1- Crée une liste contenant un nombre indéterminé d'éléments,
2- Affiche tous les éléments,
3- Recherche un élément dans une liste,
4- Supprime un élément d’une liste,
5- Insère un élément à une position donnée d’une liste.
82
82
PausoLogique

Définition : Nom féminin. Pause de cinq (5) minutes visant


à résoudre une question de logique qui rapporte 1 point
pour le contrôle.

Question :

Qui suis-je?

Je suis plus puissant que Dieu et je suis plus méchant que le


diable. Le pauvre en possède et le riche en manque. Si vous
me mangez, vous mourrez.
83
83
MERCI DE VOTRE
ATTENTION

Vous aimerez peut-être aussi