Вы находитесь на странице: 1из 15

Algorithmique

et

Programmation

3me de lenseignement Secondaire

Section : Sciences de lInformatique

Professeur
Mohamed TRABELSI

Plan du Cours
Rappel
Chapitre 1 : Les structures de donnes et les structures simples
Chapitre 2 : Les structures algorithmiques de contrle
Chapitre 3 : Les sous-programmes
3 SI
Chapitre 4 : Algorithmes de tri et de recherche
Chapitre 5 : Algorithmes rcurrents
Chapitre 6 : Algorithmes arithmtiques
Chapitre 7 : Algorithmes d'approximation

Professeur : Mohamed TRABELSI

Exercice de rvision
Objectif : rappeler la dmarche de rsolution adopte pour rsoudre un problme et aboutir
un programme. Application page 10 livre algorithmique 3me SI.

Enonc :
On se propose de calculer lallongement L dun ressort de raideur K auquel est accroch une
masse m. Sachant que m * g = K * L.
Prsenter la spcification de ce problme
Dduisez lalgorithme
Traduisez la solution en Pascal et lexcutez pour m = 150 et K = 10.

a. Analyse
Rsultat : Afficher l'allongement L
Traitement :
Lm*g/K
m = donne
K = donne
g est une constante de valeur 9,8

b. Algorithme
0)
1)
2)
3)
4)
5)

Dbut allongement
Lire (K)
Lire (m)
L m*g/K
Ecrire (L)
Fin allongement

T.D.O
Objet
K, m, l
g

Type
Rel
Constante = 9,8

Rle
K : raideur, m : masse, l : allongement
pesanteur

c. Pascal (voir fichier : allonge.pas)


Version 2 : Tester la valeur de K qui doit tre > 0. Deux solutions

Faire une saisie contrle de K.


Tester la valeur K avant deffectuer le calcul.

Algorithme
0) Dbut allongement
1) Rpter
crire (" Donner la valeur de la raideur du ressort : "), lire (K)
Jusqu' K > 0
2)
3)
4)
5)

crire (" Donner la valeur de la masse : "), lire (m)


L m*g/K
Ecrire (L)
Fin allongement

http://web-tic.net

3 / 15

Professeur : Mohamed TRABELSI

Chapitre 1

Structures de donnes
et structures simples
Dure : 12 Heures
Type : Thorique / Pratique

I. Les constantes et les variables


I.1. Les constantes

Une constante est caractrise par un nom et une valeur inchangeable.

Exemple voir exercice rvision (calcul allongement).

Dclaration :

Ct analyse :

Ct T.D.O :

nom_contante est une constante de valeur valeur_constante

Objet
nom_contante

Type
Constante = valeur_constante

Rle

Ct Pascal :
CONST nom_contante = valeur_constante;

I.2. Les variables


Une variable est une zone mmoire rserve pour contenir une valeur d'un type bien
dtermin. Cette valeur pourra changer tout au long du programme.

Caractristiques :
Voir livre page 11.

Application 1 :
Calculer et afficher la distance entre deux points M et N dont les coordonnes sont des
entiers donnes. (Par rapport un repre gradu)
M (a, b)

et

N (c, d)

a. Analyse
Rsultat : Afficher la distance DT
Traitement :
DT SQRT (SQR (a c) + SQR (b d) )
(a, b) = Donnes
(c, d) = Donnes

http://web-tic.net

4 / 15

CH1 : Strs de donnes & Strs simples

Professeur : Mohamed TRABELSI

b. Algorithme
0) Dbut distance
1) Lire (a, b)
2) Lire (c, d)
3) DT SQRT (SQR (a c) + SQR (b d) )
4) crire (DT)
5) Fin distance
T.D.O
Objet
a, b
c, d
DT

Type
entier
entier
Rel

Rle
Coordonnes de M
Coordonnes de N
Distance entre M et N

c. Pascal (voir fichier : distance.pas)


II. Les types standards
II.1 Le type entier

Le type entier permet de manipuler des valeurs de l'ensemble Z.

Domaine de dfinition et oprateurs : Voir tableau page 14.

Activit 1 :
Dclarer une variable qui servira stocker l'ge d'une personne.
Dclarer une variable qui servira stocker des factoriels avec 1 < n < 20.
Quels sont les types de donnes que vous allez choisir pour ces 2 variables ?

Ouvrir Pascal et voir le help (clic droit sur integer)

Sous types du type entier


o Non signs :
Type

En pascal

Domaine de valeur

Taille

Octet

byte

0 255

1 octet

Mot

word

0 65535

2 octets

o Signs :
Type

En pascal

Domaine de valeur

Taille

Entier court

shortint

-128 127

1 octet

Entier

Integer

-32768 32767

2 octets

Entier long

Longint

-2147483648 .. 2147483647

4 octets

http://web-tic.net

5 / 15

CH1 : Strs de donnes & Strs simples

Professeur : Mohamed TRABELSI

Reprsentation d'une valeur de type Entier en mmoire centrale :


Elle s'effectue sur 2 octet 16 bits avec un bit rserv au signe 1 si < 0 ; 0 si >= 0.

16

15

14

13

12

11

10

Bit de signe
-32768

0
215 = 32768 possibilits

32767
32768

II.2 Le type rel (real)


En stockant des nombres rels dans des structures de donnes on se retrouve face 2
limites :
1. La limite de grandeur
2. La limite de la prcision (nombre de chiffre aprs la virgule)
Le traitement et l'affichage des donnes de ce type se font en virgule flottante, dans une
notation dite scientifique base 10.

Domaine de dfinition et oprateurs : Voir tableau page 17.

Activit 2 :
Ecrire un programme en Pascal qui permet de saisir un rel et de le
rafficher.
Procder la srie de tests suivants :

Valeur 1 : 5.223

Valeur 2 : 13251.33

Valeur 3 : 0.0999
Que pouvez-vous en dduire ?
Voir dans le help les sous types du type rel

Les fonctions arithmtiques standards : voir livre page 19.

Activit 3 :
Ecrire un programme en Pascal qui permet de saisir un rel x et d'afficher le
rsultat de toutes les fonctions arithmtiques standard.

http://web-tic.net

6 / 15

CH1 : Strs de donnes & Strs simples

Professeur : Mohamed TRABELSI

II.3 Le type boolen (boolean)

Domaine de dfinition et oprateurs logiques : voir tableau page 21.

Activit 4 :

Faire l'activit 12, page 21

Evaluez l'expression logique suivante sachant que : a = 4, b = 5, c = 1 et d = 0


(a < b) OU (c d = a) ET Non (a b)

Rgles de priorit entre les oprateurs : Non, ET, OU et OUex

II.4 Le type caractre (char)


Une variable de type caractre occupe un octet en mmoire. A chaque caractre
correspond un code ASCII qui est un entier entre 0 et 255. (Voir table ASCII page 229)

Domaine de dfinition et oprateurs relationnels : Voir tableau page 23.

Les fonctions prdfinies sur les caractres : Voir livre page 23.
Activit 5 :
Ecrire un programme en Pascal qui permet de saisir un caractre c et de
changer sa casse.
Exemple : c = "A"
"a"
c = "a"
"A"

a. Analyse
Rsultat : Afficher le caractre c modifi
Traitement :
Si c est majuscule alors
c Chr (Ord (c) + 32)
sinon
c Upcase (c)
Fin si

c = donne ("Donner un caractre : ")

b. Algorithme
0) Dbut min_maj
1) Ecrire ("Donner un caractre : "), (Lire (c)
2) Si c dans ["A".."Z"] alors
c Chr (Ord (c) + 32)
Sinon
c Upcase (c)
Fin si
3) crire (c)
4) Fin min_maj

c. Pascal (voir fichier : min_maj.pas)


http://web-tic.net

7 / 15

CH1 : Strs de donnes & Strs simples

Professeur : Mohamed TRABELSI

II.5 Le type chane de caractres (string)


Une variable chane de caractre est une suite de n caractre, n compris entre 0 et 255.
On peut accder au ime caractre d'une chane CH grce la notation CH[i].

Dclaration : Lors de la dclaration d'une chane on peut prciser la taille voulue.


Objet
nom_chane

Type
Chane [longeur_chane]

Rle

Affectation :
o Ct analyse et algorithmique : exemple CH "Sciences informatiques"
o Ct Pascal : exemple CH := 'Sciences informatiques'

Les fonctions et les procdures prdfinies sur les chanes : Voir livre page 26.

Activit 14 page 27 et applications.

III. Les structures simples

Dfinition : Voir livre page 28.

III.1 L'opration d'entre (La saisie)


a. En analyse :
Objet = donne ("commentaire sur la variable")

b. En algorithmique :
Ecrire ("commentaire sur la variable")
Lire (Objet)

c. En Pascal :
writeln (' commentaire sur la variable');
readln (Objet);

III.2 L'opration de sortie


En analyse et algorithmique :
Ecrire (Objet)
Ecrire ("message ", Objet)
Ecrire ("message 1 ", Objet 1, "message 2 ", Objet 2)

En Pascal :
writeln (Objet);
writeln ('message' , Objet);
writeln ('msg 1 ' , Objet 1, 'msg 2 ' , Objet 2);

http://web-tic.net

8 / 15

CH1 : Strs de donnes & Strs simples

Professeur : Mohamed TRABELSI

III.3 L'opration d'affectation


En analyse et algorithmique :

Rappel sur la notion de permutation :


Avec variable intermdiaire
Sans variable intermdiaire
Voir livre page 31

En Pascal :

:=

L'affectation :
Soit la squence d'affectation suivante :
1)
2)
3)
4)

R 10
S pi * R * R
R1
S carr (ABS(R))

Remplir le tableau d'excution de cette squence d'affectation.


Valeur des variables
R
S

N instruction
1
2
3
4

IV. Les types utilisateurs


IV.1 Les types numrs
Exemples :
Jours_de_la_semaine = (Dimanche, Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi)
Couleurs = (Rouge, Bleu, Jaune)

a. Dfinition
Les types numrs permettent de reprsenter des valeurs en les numrant au
moyen de leurs noms. Un type numr est constitu d'un nombre limit de valeurs.
(Maximum 256 en Pascal). Ces valeurs ne doivent pas appartenir un autre type de
donnes.

b. Dclaration
Type
nom_type = (val1, val2,, valn)
Objet
nom_variable
http://web-tic.net

Type
nom_type

En algorithmique
Rle
Rle
9 / 15

CH1 : Strs de donnes & Strs simples

Professeur : Mohamed TRABELSI

Type nom_type = (val1, val2,, valn);

En Pascal

Var nom_variable : nom_type;

c. Oprateurs relationnels
= <= >= <> <
>
Exemple : Lundi < Mardi

(par rapport au type jours_de_la_semaine).

d. Les fonctions prdfinies sur les types numrs


Remarque : A chaque valeur numr correspond un numro d'ordre. La
numrotation commence partir de 0.

Voir livre page 37

Voir fichier (enumere1.pas) dmonstration.

IV.2 Le type intervalle


Le type intervalle permet de limiter les valeurs d'un type comme le type entier,
caractre, boolen ou numr. L'intervalle s'exprime au moyen de valeurs limites selon
la forme suivante :
Binf .. Bsup
Exemples :
Type
age = 0 .. 150;
majuscule = 'A' .. 'Z';

{par rapport au type byte}


{par rapport au type char}

Var
JDT = Lundi .. Vendredi ;

V. Les tableaux

{Dclaration du type directement dans la partie var


par rapport au type jours_de_la_semaine}

V.1 Les tableaux une dimension (vecteurs)


Activit 6 :
Faire l'analyse d'un programme qui permet de calculer la paye hebdomadaire d'un ouvrier.

La solution doit nous permettre de :


o Saisir le nombre d'heures travailles par jour. (Jours ouvrables : Du lundi au
Vendredi)
o Saisir la valeur du taux horaire de payement

Puis de calculer le nombre total d'heures travailles de la semaine et d'afficher le


montant de la paye.

http://web-tic.net

10 / 15

CH1 : Strs de donnes & Strs simples

Professeur : Mohamed TRABELSI

a. Dfinition (voir livre page 40)


b. Dclaration
Pour dclarer un tableau on peut procder de deux manires :

Crer directement le tableau dans la zone de dclaration des variables.

Crer un type tableau puis un tableau de ce type.

(Voir livre page 40, 41)

c. Correction de lactivit
Version 1

1. Analyse
Rsultat : crire ("La paye de la semaine est: ", MP, " DT")
Traitements :
MP total * THP
Pour saisir le tableau des horaires H et au mme temps calculer la somme des
horaires stocks dedans il faut :
i.

Initialiser total 0

ii.

Utiliser une boucle Pour qui permet de saisir la case H[i] puis de
cumuler cette valeur dans S.

THP = donne ("Prcisez la valeur du taux horaire : ")

2. Algorithme
0) Dbut paye_semaine
1) total 0
Pour i de 1 5 faire
crire ("Entrez le nombre d'heure du jour ", i, " : "), lire (H[i])
total total + H[i]
Fin pour
2) Ecrire ("Prcisez la valeur du taux horaire : "), lire (THP)
3) MP total * THP
4) crire ("La paye de la semaine est: ", MP, " DT")
5) Fin paye_semaine

Type
Paye = tableau de 5 octet

http://web-tic.net

11 / 15

CH1 : Strs de donnes & Strs simples

Professeur : Mohamed TRABELSI

T.D.O
Objet
i
total
THP
MP
H

Type
octet
octet
Rel
Rel
paye

Rle
Compteur
Total heures de la semaine
Taux horaire de payement
Paye de la semaine
Tableau des heures travailles par jour

3. Pascal (voir fichier : paye_sm1.pas)


Version 2

Algorithme
0) Dbut paye_semaine2
1) total 0
Pour j de lundi vendredi faire
crire ("Entrez le nombre d'heure du jour ", ord(j) +1, " : "), lire (H[j])
total total + H[j]
Fin pour
2) Ecrire ("Prcisez la valeur du taux horaire : "), lire (THP)
3) MP total * THP
4) crire ("La paye de la semaine est : ", MP, " DT")
5) Fin paye_semaine2

Type
jours = (dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi)
jours_de_travail = lundi ..vendredi
Paye = tableau de 5 octet
T.D.O
Objet
j

Type
jour_de_travail

Rle
Reprsente le jour en cours

total

octet

Total heures de la semaine

THP

Rel

Taux horaire de payement

MP

Rel

Paye de la semaine

paye

Tableau des heures travailles par jour

a. Pascal (voir fichier : paye_sm2.pas)

http://web-tic.net

12 / 15

CH1 : Strs de donnes & Strs simples

Professeur : Mohamed TRABELSI

V.2 Les tableaux deux dimensions


Activit 7 :
Faire l'analyse d'un programme qui permet de calculer la paye hebdomadaire
de n ouvrier sachant que (1 n 5).

La solution doit nous permettre de saisir :


o Le nombre d'ouvrier (n)
o Le nombre d'heures travailles par jour.
o La valeur du taux horaire de payement

Puis de calculer le nombre total d'heures travailles de la semaine et

d'afficher
simultanment
le montant
de la
paye
pour chaque
ouvrier.
* Discussion
des ventuels
changements
ncessaire
pour
l'activit
7

a. Dfinition
Un tableau deux dimensions a la forme d'une matrice compose de lignes et de
colonnes. Toutes les cases de ce tableau auront le mme type. L'accs une case de ce
tableau s'effectue par consquent grce deux indices comme suit :

M [ i , j ] o i reprsente l'indice de la ligne et j celui de la colonne.


b. Dclaration

Cration d'un type tableau deux dimensions.

Type
nom_type = tableau de [intervale1, intervale2] de Type
En algorithmique
Objet
nom_tableau

Type
nom_type

Rle
Rle

Type nom_type = array [intervale1, intervale2] of Type;

En Pascal

Var nom_ tableau : nom_type;


Activit 8 :
Faire l'analyse d'un programme qui permet de saisir les tempratures de n villes
pendant une semaine. (1 n 10)

Afficher ce tableau tout en prcisant la moyenne des tempratures par ville.

Afficher aussi l'cart type des tempratures par ville.

http://web-tic.net

13 / 15

CH1 : Strs de donnes & Strs simples

Professeur : Mohamed TRABELSI

Exemple :
Villes

Dim

Lun

Mar

Mer

Jeu

Ven

Sam

Moyenne

Ecart
type

Tunis

20

23

21

22

26

27

23

23,14

Gabes

22

23

24

24

25

28

27

24,71

Moyenne = ( Mi ) / n

cart type =

i 1

( Mi Moy )
i 1

a. Analyse du problme
Rsultat : Affichage
Traitements :

Prvoir deux boucles imbriques ayant comme indice respectif i et j permettant


d'afficher les tempratures de la matrice MT et leurs moyennes par ville partir du
tableau Moyenne.

Prvoir deux boucles imbriques ayant comme indice respectif i et j permettant de


saisir les tempratures de la matrice MT, de calculer au fur et mesure le cumul des
tempratures par villes, de calculer la moyenne et de la stocker dans le tableau
Moyenne.
n = Donne ("Donner le nombre de ville : ")

b. Algorithme
0) Dbut temperature_ville
1) crire ("Donner le nombre de ville : "), lire (n)
2) Pour i de 1 n faire
cumul 0
Pour j de 1 7 faire
crire ("Donner la temprature : "), lire (MT [ i , j ])
cumul cumul + MT [ i , j ]
fin pour
moyenne [i] cumul / 7
Fin pour
3) Pour i de 1 n faire
Pour j de 1 7 rpter
Ecrire (MT [ i , j ], " ")
Fin pour
Ecrire (moyenne [i])
Fin pour
4) Fin temperature_ville
http://web-tic.net

14 / 15

CH1 : Strs de donnes & Strs simples

Professeur : Mohamed TRABELSI

Type
T_moyenne = tableau de 10 rels
T_temprature = tableau [1..10, 1..7] de rels
T.D.O
Objet
i, j
n
MT
moyenne
cumul

Type
octet
octet
T_temprature
T_moyenne
rel

Rle
Compteurs
Nombre des villes
Matrice des tempratures
Tableau des moyennes des tempratures
La somme des tempratures

c. Pascal (voir fichier : tempvile.pas)


a. Analyse

(Version 2)

Rsultat : Affichage
Traitements :

Prvoir deux boucles imbriques ayant comme indice respectif i et j permettant de


saisir les tempratures de la matrice MT, de calculer au fur et mesure le cumul des
tempratures par villes, de calculer la moyenne et de lafficher sur cran.
n = Donne ("Donner le nombre de ville : ")

b. Algorithme
0) Dbut temperature_ville2
1) crire ("Donner le nombre de ville : "), lire (n)
2) Pour i de 1 n faire
cumul 0
Pour j de 1 7 faire
crire ("Donner la temprature : "), lire (MT [ i , j ])
cumul cumul + MT [ i , j ]
fin pour
crire (cumul / 7)
Fin pour
3) Fin temperature_ville2

Type
T_temprature = tableau [1..10, 1..7] de rels
T.D.O
Objet
i, j
n
MT
cumul

http://web-tic.net

Type
octet
octet
T_temprature
rel

Rle
Compteurs
Nombre des villes
Matrice des tempratures
La somme des tempratures

15 / 15

Вам также может понравиться