Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
LEGHLID Hamid
Table des matières
Introduction ........................................................................................... 3
L’ordinateur et le programmeur ......................................................... 4
Les déclarations ................................................................................... 5
Les Traitements ................................................................................. 10
Structures de contrôle ................................................................... 13
Structures de contrôle conditionnelles .................................... 13
Pour ce faire, nous n’allons pas répéter les mêmes cours mais
nous essayerons de vulgariser le module comme si nous tentons
de diluer un liquide concentré.
Par suite, cet ouvrage se voit comme un support d’aide qui doit
être accompagné des cours que vous avez déjà suivis en
algorithmique à savoir la déclaration des variables mémoires, les
actions élémentaires, les vecteurs, les matrices et les pointeurs.
3
Homaloga@gmail.com
L’ordinateur et le programmeur
L’ordinateur
Il Sait effectuer des additions, des soustractions, etc… Et
faire des comparaisons (<, >, =). Il connait seulement quelques
mots comme :
Le programmeur
Est le maitre de l’ordinateur.
Exemple
4
Homaloga@gmail.com
Les déclarations
Vulgarisation
5
Homaloga@gmail.com
En algorithmique, on peut utiliser ces boites individuellement
ou bien sous forme de vecteur ou de matrice.
Dans une boite postale, on peut trouver plus d’un objet (lettres et
quittance par exemple), par contre en algorithmique, on ne peut
garder qu’un seul objet à la fois ; le nouvel objet écrasera
automatiquement l’ancien.
Exemple
Var
a, b, c: integer;
Nom, adresse: string;
V: array [0...6] of integer
Exemple
8
Homaloga@gmail.com
VAR
9
Homaloga@gmail.com
Les Traitements
10
Homaloga@gmail.com
L’image ci-dessus montre que l’on est, soit en train d’introduire
une donnée, soit en train de ranger un résultat.
Cette image montre que l’on est en train de ranger le résultat dans
la variable mémoire PER.
11
Homaloga@gmail.com
Cette image montre que l’on est en train d’introduire une donnée
qui représente la longueur dans la variable mémoire LNG
12
Homaloga@gmail.com
Structures de contrôle
Exemple 1
Instruction 1
Instruction 2
Instruction 3
SI ….ALORS…….
…….
………
……….
FINSI
Instruction 5
Instruction 6
………
Exemple 2
13
Homaloga@gmail.com
VAR
a, b, c, X1, X2, Delta: Real;
DEBUT
LIRE (a, b, c) ;
Delta <- b*b -4*a*c ;
SI delta < 0 ALORS Ecrire (‘Pas de solutions’)
SINON
SI delta = 0 ALORS
Debut
X1<- -b /2*a ;
ECRIRE (‘solution Double’, X1)
Fin
SINON
Debut
X1<- (-b –sqrt(delta)/2*a);
X2<- (-b +sqrt(delta)/2*a);
Ecrire (‘ Deux solutions ‘, X1, X2)
Fin
FINSI
FINSI
FIN.
14
Homaloga@gmail.com
Evaluation de la condition
15
Homaloga@gmail.com
Exemple
« delta < 0 » est une proposition qui peut être vraie ou fausse
selon les valeurs de a, b et c.
Exemple 1
…………
…………
SI (a<2) ET (b>=5) ALORS ………
SINON
……………..
…………….
16
Homaloga@gmail.com
Déroulons pour a = 10 et b = 13
Exemple 2
………
= 25 – 16 = 9
Delta >0, par suite les instructions à exécuter sont celles qui
suivent le deuxième « SINON »
17
Homaloga@gmail.com
Structures répétitives (les boucles)
Exemple
VAR
i : entier ;
DEBUT
POUR i ALLANT DE 1 A 10 Faire
ECRIRE (‘*’)
FINPOUR
FIN.
18
Homaloga@gmail.com
Lorsque le nombre de répétitions n’est pas connu au préalable, il
faut utiliser la boucle TANTQUE/FINTANT ou bien la boucle
REPETER/JUSQU’A.
Important
Exemple 1
Var
i :Entier ;
DEBUT
i <- 1 ;
TANT QUE i < = 10 FAIRE
ECRIRE(‘*’) ;
i <- i+1
FINTANT
FIN.
19
Homaloga@gmail.com
(incrémenter) le contenu de la variable mémoire « i » pour
atteindre 10.
Exemple 2
Var
i :Entier ;
DEBUT
i <- 1 ;
REPETER
ECRIRE(‘*’) ;
i <- i+1
JUSQU’A i > 10
FIN.
20
Homaloga@gmail.com
Les vecteurs
Cette image nous montre vraiment que l’on ne peut pas écrire
LIRE(V) ou bien ECRIRE (V) ou bien V<- … car V est
composé de plusieurs boites ( ici 7 boites numérotées de 0 à 6).
Exemple
21
Homaloga@gmail.com
Le premier élément s’écrit V[0]
Le second élément s’écrit V[1]
……
Le septième élément s’écrit V[6]
LIRE V[0] ; LIRE V[1] ; LIRE V[2] ; LIRE V[3] ; LIRE V[4] ;
LIRE V[5] ; LIRE V[6] ;
On peut écrire une seule action LIRE V[ i ] dont l’exécution est
répétée grâce à la boucle POUR/FINPOUR puisqu’on connait la
limite.
22
Homaloga@gmail.com
Var
V :TABLEAU [0..6] De Entier ;
I :entier ;
DEBUT
Pour i ALLANT DE 0 A 6 FAIRE
LIRE (V[ i ] )
FINPOUR
FIN.
Exemple
Bien sûr, rien que par voir ce vecteur vous direz que l’élément le
plus grand du vecteur est V[3] c’est-à-dire 33.
Mais nous avons souligné ci-dessus que pendant que vous écrivez
vos algorithmes comportez-vous comme un CPU , donc vous
n’avez aucun organe de sens ( ni vision, ni odorat, ni ……)
23
Homaloga@gmail.com
Pour ce faire, on stocke alors le premier élément dans une
variable mémoire qu’on identifie par exemple « m » puis à partir
du second élément, on répétera l’exécution de l’instruction de
comparaison de l’élément encours avec le contenu de « m »
VAR
V : TABLEAU [0..6] De Entier ;
i, m : entier,
Début
m<- V[0] ;
POUR i ALLANT de 1 A 6 FAIRE
SI V[ i ] > = m ALORS m<- V[ i ]
FINSI
FINPOUR
ECRIRE (m)
Fin.
24
Homaloga@gmail.com
VRAI, donc on remplace le contenu du « m » par 26 et FINSI
passe la main à FINPOUR
25
Homaloga@gmail.com
Les matrices
Autrement dit, ce qui a été dit sur les vecteurs reste valable pour
les matrices ; seulement dans ce cas, on a besoin de deux indices ;
l’un pour les ligne et l’autre pour les colonnes.
26
Homaloga@gmail.com
Exemple
Exemple
LIRE (M[0 ,0]) ; LIRE (M[0 ,1]), LIRE (M[0 ,2]) ; LIRE
(M[0 ,3]) ; LIRE (M[0 ,4]) ; LIRE (M[0 ,5]) ; LIRE (M[1 ,0]) ;
LIRE (M[1 ,1]) ; LIRE (M[1,2]) ; LIRE (M[1,3]) ; LIRE
(M[1,4])
27
Homaloga@gmail.com
On peut écrire une seule action LIRE M[ i, j ] dont l’exécution est
répétée grâce à la boucle POUR/FINPOUR puisqu’on connait les
limites des lignes ( 0 à 1) et les colonnes (0 à 4)
Var
M : TABLEAU [0..1 , 0..4] De Entier ;
i, j :Entier ;
DEBUT
POUR i ALLANT DE 0 A 1 FAIRE
POUR j ALLANT de 0 A 4 FAIRE
LIRE (M[i, j])
FINPOUR
FINPOUR
FIN.
Exemple 2
28
Homaloga@gmail.com
En tant qu’être humain, rien que par voir la matrice, on aura le
résultat suivant :
Var
M : TABLEAU [0..1 , 0..4] De Entier ;
i, j ; Entier ;
DEBUT
POUR i ALLANT DE 0 A 1 FAIRE
POUR j ALLANT DE 0 A 4 FAIRE
SI M[i,j] >=5 ALORS M[i,j] <-0
FINSI
FINPOUR
FINPOUR
FIN.
La boucle « i » se déclenche :
29
Homaloga@gmail.com
La boucle « j » se déclenche :
M[i, j] = M[0, 0] = 12
M[0, 0] >=5 ?
M[0,1] >=5 ?
M[0,2] >=5 ?
M[0,3] >=5 ?
30
Homaloga@gmail.com
M[0,4] >=5 ?
M[i, j] = M[1, 0] = 1
M[1, 0] >=5 ?
M[1,1] >=5 ?
M[1,2] >=5 ?
M[1,4] >=5 ?
32
Homaloga@gmail.com
Les pointeurs
33
Homaloga@gmail.com
1-Si la largeur du bus d’adresse est 12 bits, de combien de mots
mémoires est composée la MC ? comment sont ils numérotés ? et
que représentent ces numéros ?
Réponse
Soit 2 Mo
34
Homaloga@gmail.com
Ce rappel de cours nous montre alors que les fameuses boites
postales, c’est-à-dire les variables mémoires que nous avons sus
citées sont en fait des mots mémoires dans la MC.
Mais dans la MC, chaque mots mémoire est identifié par son
adresse mémoire et non par les identifiants que nous déclarons.
Exemple :
35
Homaloga@gmail.com
Note : La prochaine exécution de ce programme se verra d’autres
adresses libres qui lui seront allouées.
Une variable non statique est dite dynamique. Son avantage est
que nous pouvons récupérer l’espace qu’elle occupe avant la fin
de l’exécution du programme.
Exemple 1
Var
P : ^Entier ;
36
Homaloga@gmail.com
Si le pointeur ne pointe vers aucune variable dynamique, on écrit
p<- NIL
Exemple 2
Var
P, Q : ^Entier
DEBUT
Allouer (P)
Allouer(Q)
LIRE(P^)
LIRE(Q^)
P^<- P^ + Q^
Ecrire (P^)
Désallouer(P)
Désallouer(Q)
FIN.
Remarquez que pour utiliser les pointeurs, il faut faire appel à des
programmes spéciaux (primitives) que le langage vous offre.
37
Homaloga@gmail.com
En algorithmique, on se limite simplement à Allouer ou
Désallouer le pointeur.
Exemple d’exécution
38
Homaloga@gmail.com
Exemple3
TYPE
Vecteur = TABLEAU [0..4] De caractères
Var
P : ^vecteur
I : ^entier
Mot : Texte
DEBUT
Allouer (P)
Allouer(i)
Mot <- ‘’
POUR i ALLANT de 0 A 4 FAIRE
LIRE(P^[i] )
FINPOUR
39
Homaloga@gmail.com
Programme Turbo Pascal
uses crt;
type
vecteur = ARRAY [0..4] of char;
Var
p :^vecteur;
i :^integer;
mot:string;
begin
new(p);
new(i);
mot :='';
i^:=0;
while i^ <= 4 do
begin
readln(p^ [i^]);
i^:= i^+1
end;
i^:= 0;
while i^ <=4 do
begin
mot := mot + p^[i^];
i^:= i^+1
end;
dispose(p);
dispose(i);
writeln (mot);
repeat until keypressed;
end.
40
Homaloga@gmail.com
Exemple d’exécution
41
Homaloga@gmail.com
Conclusion
42
Homaloga@gmail.com