Vous êtes sur la page 1sur 40

Université de BOUIRA

Faculté des sciences et des sciences appliquées

Support du cours
Pour 1 ère Année License

Informatique II
Elaboré par :
R. HAMID
r_hamid@esi.dz

-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021


CHAPITRE I
 LANGAGE PASCAL
 INSTRUCTIONS À STRUCTURE RÉPÉTITIVE
 ET LES TABLEAUX A UNE DIMENSION

-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021


Instructions à structure répétitive
Écrire un algorithme permettant d’afficher 300 fois le message :
‘‘ bonjour tout le monde’’.
Solution Classique :

Begin
Writeln (' Bonjour tout le monde ') ; 1
Writeln(' Bonjour tout le monde ') ; 2
.
.
Writeln (' Bonjour tout le monde ') ; 300
End.

La solution classique n’est pas pratique pour des tells


instructions qui se répètent peut être 100 fois , 100000 fois , 1
million fois ou plus
3
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive

Boucle « While ……..Do »


L’instruction Tant que :
On utilise cette instruction pour exécuter des actions
tant qu’une condition est réalisée.
Syntaxe :
<initialisation>
While Condition do
Begin

<bloc de traitement> Action


<bloc de contrôle>
end;
4
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « WHILE ……DO »
Sémantique : Si condition = T

 Tant que Valeur(T)=Vrai le bloc d'instructions R sera


exécuté.
 Si valeur(T)=Faux on passe à l'instruction suivante.
 Avec While le test est fait à PRIORI.
 Il se peut que l'on ne rentre jamais dans la
boucle.
 La boucle n'est pas INCONDITIONNELLE. On
ne connaît pas à l’avance le nombre d'itérations.

5
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « While do »

Solution de l’exercice précédent :

6
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « While ….. do »
Exercice : Afficher tous les multiples de 9 inférieurs à 485

7
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « While ….. do »
Exercice : Programme calculant la somme des nombres de 1
a 100.
PROGRAM Somme;
VAR s, k : integer;
BEGIN
s := 0; k := 1;
while k <= 100 do
begin
s := s + k;
k := k + 1;
end;
writeln (s);
END.
8
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « repeat I; until B; »
L’instruction repeat I; until B; :
B est une expression booléenne. I est exécutée, puis B est évaluée.
Si B est vraie, alors on s‘ arrête, sinon on recommence depuis ().
Autrement dit On utilise cette instruction pour exécuter des actions
jusqu'à ce que une condition soit remplie.
Syntaxe :
<Initialisation>
Repeat
<bloc de traitement>
Action
<bloc de progression >
Unitil Condition
9
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « repeat I; until B; »

Sémantique :
Si valeur(B)= Faux la boucle est à nouveau exécutée.
 Si Valeur(B)=Vrai, on passe à l'instruction suivante.
Avec repeat I; until B; le test est fait à POSTERIORI.
• Il y aura un passage dans la boucle. Le bloc ’instructions
sera exécuté au moins une fois.
• La boucle n’est pas INCONDITIONNELLE. On ne connaît
pas à l’avance le nombre d’itérations.

10
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive

Boucle « repeat I; until B; »


Exercice : Programme calculant la somme des nombres de 1
a 100.
PROGRAM Somme;
VAR s, k : integer;
BEGIN
s := 0; k := 1;
repeat
s := s + k;
k := k + 1;
until k > 100;
Writeln (s);
END.
11
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive

Boucle « repeat I; until B; »

Exercice :

Écrire un Programme Pascal permettant de calculer,


pour un entier n > 0, la somme :
SN = 1 + 3+ 5 + …… + (2n+1) ;

12
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « repeat I; until B; »
Solution :

13
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « repeat I; until B; »
Exercice : Écrire un Programme Pascal permettant de
calculer la somme : Sn = 1 + 1/2 + 1/3 + …… + 1/n;

14
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « for »
L’instruction for :
La spécification de cette instruction c’est qu’elle limite le nombre
de fois où doit se répéter le bloc action
Syntaxe :
La boucle est
Inconditionnelle
<Initialisation> On connaît à priori le
nombre d'itérations
For variable := valeur1 to valeur2 do

<Bloc de traitement> Action

15
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « for »
for vriable := valeur 1 to valeur Z do I;
• Variable est le compteur de boucle, valeur 1 et valeur2 sont les
bornes inferieures et supérieures.

•valeur1 et valeur 2 sont des expressions ordinales, du même type


que la variable k.

• Valeur 1 et valeur 2 sont d'abord évaluées, puis variable prend


la valeur 1. Si k <= valeur 2, alors I est exécutée, puis variable est
incrémentée de 1, et on recommence depuis .

• Pour avoir une boucle décroissante, on ecrit


for variable := Evaleur 2 downto valeur 1 do I;
16
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « for »
Exercice : Écrire un algorithme permettant le calcul du factoriel
d’un entier N > 0 donné : N !

17
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « Pour »

Exercice :

Écrire un programme Pascal permettant de


calculer la moyenne des notes de N étudiants

18
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Solution :

19
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Boucle « Pour »
Exercice Écrire un programme Pascal permettant d’afficher
les lettres de l’alphabet.
Solution :

20
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive
Quelle répétition ou Boucle choisir ?

Si nombre d'itérations connu Alors


Boucle for
Sinon
Si itération exécutée au moins une fois Alors
Boucle repeat
Sinon
Boucle While

21
-Université de BOUIRA - Département des sciences techniqes -L1-L1
et technologie 2019/2020
2020/2021
Instructions à structure répétitive
Boucle « for »
Exercice:

Écrire un Programme pascal permettant de déterminer


la somme de N termes d’une suite numérique
connaissant son premier terme et ses coefficients a et b
et tels que:
Un = a * Un-1 + b ∀ 1 ≤ n ≤N

22
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
Instructions à structure répétitive (22)
Boucle « for »
Exercices:

23
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
LES TABLEAUX A UNE
DIMENSION
LES TABLEAUX A UNE DIMENSION

Pour comprendre l’utilité et le besoin des tableaux, prenons


l’algorithme de calcule de moyenne du module INF II pour une
classe qui contient 20 étudiants.

LES TABLEAUX

Un tableau est une structure de données permettant de regrouper


sous un même nom plusieurs valeurs de même type. Il y a deux
types de tableaux :
- les tableaux à une dimension appelés également Vecteurs,
- les tableaux à deux dimensions appelés également Matrices.

25
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
LES TABLEAUX A UNE DIMENSION
Tableau à une dimension (vecteur)
Un tableau à une dimension est caractérisé par :
• Son nom : un identificateur unique pour tous les éléments
• Sa taille : le nombre d’éléments (cases du tableau) qui est
constant et doit être connu à l’avance.
• Son indice : l’accès à un élément du tableau se fait à l’aide d’un
indice (N° de case).

Exemple :

Nom du tableau : Moy


Taille du tableau : 20
Indice du tableau : 1, 2, 3, ….20
26
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
LES TABLEAUX A UNE DIMENSION
Déclaration d’une variable Tableau :
Var Nom_tableau : array [Début.. Fin] of <Type_élément> ;
Indice : integer ;
Nom_tableau : un identificateur choisi par le programmeur.
Début et Fin : entiers ou caractères, Début est généralement égal à 1 et Fin à la
taille du tableau.
Type_élément : le type des valeurs du tableau (elles ont toutes le même type)
Réel, Entier, Caractère, Chaine de caractères, Booléen.
Exemple :
On veut déclarer un tableau de moyennes Variables Moy
Var : Moy [1..20] of real ;
i : integer ;
En mémoire, on va avoir une variable Moy comportant 20 cases et dans chacune on placera
une moyenne qui est de type réel.
27
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
LES TABLEAUX A UNE DIMENSION
Soit l’ensemble des cases mémoires MOY

Le premier élément de Moy contient la valeur 10.5 ; on note Moy [1] =10.5
• Le deuxième élément de Moy contient la valeur 08.2 ; on note Moy [2] =08.2
• D’une manière générale, le ième élément de Moy est noté Moy[i] et contient une
valeur de type réel. Moy[i] désigne également le contenu de la ième case du tableau
Moy.
• Moy[8] ← 15, veut dire affecter la valeur 15 au 8ème élément.
• Moy [1] ← Moy [3], veut dire affecter la valeur du 3ème élément au 1er élément,
donc Moy [1] =09.7.

-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021


LES TABLEAUX A UNE DIMENSION
Opérations de base sur un tableau
Pour représenter ces différentes opérations, on va utiliser un tableau T d’entiers
Initialiser un Tableau Program Ini_Tab;
Const N=20;
Var T: Array [1..N] of Integer;
i: integer;
Begin
For i: =1 to N do T[i]:= 0;
End.
Lire (Remplir) un Tableau
Program Lec _Tab;
Const N=20;
Var T: Array [1..N] of Integer;
I : integer;
Begin
For i: =1 to N do Readln (T[i]);
End.

Remarque : Lire(T [i]) consiste à entrer une valeur à partir du clavier et la mémoriser dans la
ième case du tableau T.
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
LES TABLEAUX A UNE DIMENSION
Afficher un Tableau
Program AFF _Tab;
Const N=20;
Var T: Array [1..N] of Integer;
i: integer;
Begin
For i: =1 to N do Readln (T[i]);
For i: =1 to N do If T[i] > 0 Then Writeln (T[i]);
End.

Additionner les éléments de deux tableaux


On dispose de deux tableaux T1 et T2 et on veut réaliser la somme.
Ça consiste à additionner les éléments de même indice et les
mémoriser dans un tableau T3.
Condition nécessaire : T1 et T2 de même taille et leurs éléments de
même type
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
LES TABLEAUX A UNE DIMENSION

Program Add_Tab ;
Const N = 20 ;
Var T1,T2,T3 : array [1..20]of integer ;
i : integer :
Begin
For i := 1 to N do readln (‘Introduire les elmenet de T1) ;
For i := 1 to N do readln (T1[i]) ;
For i := 1 to N do readln (‘Introduire les elmenet de T2) ;
For i :=1 to N do readln (T2[i]) ;
For i :=1 to N do T3[i]: =T1 [i] + T2 [i] ;
For i :=1 to N do writeln (T3[i]) ;
End.

-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021


LES TABLEAUX A UNE DIMENSION
La recherche séquentielle dans un tableau
Problème 1 : On veut rechercher une valeur lue à partir du clavier si
elle existe dans un tableau et afficher sa position.
Exemple :
On veut rechercher si la valeur 7 se trouve dans le tableau et afficher
sa position

• Le nombre 7 existe dans le tableau à la position 3.


• Le nombre 7 existe dans le tableau à la position 6.

-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021


LES TABLEAUX A UNE DIMENSION
Problème 2 :
Supposant maintenant que le nombre recherché est 13, on va
parcourir le tableau du début jusqu’à la fin inutilement puisque le
nombre 13 se trouve juste dans la première position.

On veut réécrire l’algorithme de recherche pour qu’il s’arrête dès


qu’il trouve le nombre recherché et affiche un message d’existence
avec la première position trouvée. Pour le faire, on doit utiliser une
variable booléenne ‘Trouvé’ qui sera initialisée à faux et devient vrai
dès qu’on trouve le nombre recherché

-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021


LES TABLEAUX A UNE DIMENSION
Le tri simple d’un tableau
Il s’agit de représenter les éléments d’un tableau T dans un ordre
croissant ou décroissant.

Le principe est le suivant :


1) Parcourir le tableau du premier élément jusqu’à l’avant
dernier élément
2) Pour chaque élément i du tableau recherché depuis l’élément
i +1 la première valeur plus petite et les permuter, notez que
pour permuter deux éléments on a besoin d’une variable
temporaire :

Temp :=T[i];
T[i] :=T[j] ;
T[j] := Temp
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021
LES TABLEAUX A UNE DIMENSION

3) Refaire la même procédure avec les autres éléments jusqu’à N,


automatiquement la valeur la plus petite se retrouve au début
du tableau

4) Passer à l’élément i + 1 et rechercher la première valeur plus


petite depuis i + 2 jusqu’à N et ainsi de suite jusqu’à l’élément
N-1

Exemple : On veut trier le Tableau T de taille 5 par ordre croissant.


On suppose que le tableau en question est déjà rempli.
LES TABLEAUX A UNE DIMENSION

-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021


LES TABLEAUX A UNE DIMENSION

-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021


LES TABLEAUX A UNE DIMENSION

-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021


LES TABLEAUX A UNE DIMENSION

-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021


LES TABLEAUX A UNE DIMENSION
Program Tri ;
Const N=20 ;
Var T : array [1..N] of integer ;
i, j, Temp : integer ;
Begin
(* Lire les données*)
Writeln (‘Introduire les elements de T’);
For i := 1 to N do readln (T [i]) ;

(* trier le tableau*)
For i :=1 to n do
For j := i+1 to N do
If T[i]>T[j] then
Temp :=T[i] ;
T[i] :=T[j] ;
T[j] :=Temp ;

(*Afficher le tableau trier *)


For i :=1 to N do writeln (T [i]) ;
END.
-Université de BOUIRA - Département des sciences et technologie -L1 2020/2021

Vous aimerez peut-être aussi