Le langage Pascal(2)

Transcription

Le langage Pascal(2)
Plan
Structures
Types
Plan
Structures
Types
Les structures de contrôle
La conditionnelle
La boucle for
La boucle while
La boucle repeat
Les types en Pascal
Les types prédéfinis
Les types définis par l’utilisateur
Le type intervalle
Le type tableau
Le langage Pascal(2)
Nour-Eddine Oussous
S3H – Programmation
22 septembre 2009
Le langage Pascal(2)
Plan
S3H – Programmation
Structures
Types
La conditionnelle
Plan
S3H – Programmation
Structures
Types
La conditionnelle
Exercices
1. Écrire un programme réalisant la facturation d’un article livré
en un ou plusieurs exemplaires. On fournira en données le
nombre d’articles et leur prix unitaire hors-taxe. Le taux de
TVA sera toujours de 19.6%. Si le montant TTC dépasse
1000 euros, on établira une remise de 5%.
2. Écrire un programme qui, étant donnés les nombres réels a, b
et c, résout l’équation ax 2 + bx + c = 0 dans C.
Le langage Pascal(2)
Le langage Pascal(2)
S3H – Programmation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
program facturation ;
const
taux_tva = 19.6 ;
seuil = 1000;
var
nb_articles : Word ;
prix_unitaire , total_ht , total_ttc , remise , net_a_payer : Real ;
begin
write ( ’ Nombre d ’ ’ articles : ’) ;
readln ( nb_articles ) ;
write ( ’ Prix unitaire hors taxe : ’) ;
readln ( prix_unitaire ) ;
total_ht := nb_articles * prix_unitaire ;
total_ttc := total_ht *(100+ taux_tva ) /100 ;
if total_ttc > seuil then remise := total_ttc * 5 / 100
else remise := 0 ;
net_a_payer := total_ttc - remise ;
writeln ( ’ Montant TTC : ’, total_ttc :1:2) ;
writeln ( ’ Remise : ’, remise :1:2) ;
writeln ( ’ Net a payer : ’, net_a_payer :1:2) ;
readln
end .
Le langage Pascal(2)
S3H – Programmation
Plan
Structures
Types
Plan
Structures
La boucle for
La boucle for
La boucle for : syntaxe
La boucle for : syntaxe
Le for (1)
Le for (2)
1 for i := vi to vf do
2
{ bloc d ’ instructions }
I i
1 for i := vf downto vi do
2
{ bloc d ’ instructions }
prend successivement les valeurs
I
pour chaque valeur de
fois.
I
la boucle se termine quand
i
vi, succ(vi),. . .
I i
le bloc d’instructions est exécuté une
i
devient égal à
Le langage Pascal(2)
Plan
succ(vf)
S3H – Programmation
Structures
Types
prend successivement les valeurs
I
pour chaque valeur de
fois.
I
la boucle se termine quand
i
vf, pred(vf),. . .
le bloc d’instructions est exécuté une
i
devient égal à
pred(vi)
Le langage Pascal(2)
S3H – Programmation
Plan
Structures
La boucle for
La boucle while
La boucle for : exemple
La boucle while : syntaxe
Types
Le while
Calcul de x n
Données : deux entiers x 6= 0 et n > 0
Résultat : x n
1 while condition do
2
{ bloc d ’ instructions }
1 puissance := 1 ;
2 for i := 1 to n do begin
3
puissance := puissance * x ;
4
{ puissance = x i }
5 end ; // for
I
la condition condition est évaluée une première fois
I
I
I
Le langage Pascal(2)
Types
S3H – Programmation
si elle est vraie, le bloc d’instructions est exécuté une fois
la condition est ré-évaluée
la boucle se termine quand la condition condition devient
fausse
Le langage Pascal(2)
S3H – Programmation
Plan
Structures
Types
La boucle while
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2. Écrire un programme qui calcule le nombre M tel que
M
X
1
> N pour un entier N > 1 donné.
k
k=1
Le langage Pascal(2)
S3H – Programmation
Structures
Types
La boucle while
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Structures
Types
La boucle while
Exercices
1. Deux joueurs lancent chacun un dé. Le joueur qui a le plus
grand résultat marque un point. Le jeu s’arrête quand un des
joueurs atteint un total de 11 points. Écrire un programme qui
simule ce jeu.
Plan
Plan
program jeu_de ;
const max = 11 ;
function lancer : Byte ; // 0..255
begin
lancer := 1 + random (6) ;
end ; // lancer
var joueur1 , joueur2 , tir1 , tir2 : Byte ;
begin
randomize ; // on initialise le générateur
joueur1 := 0 ; joueur2 := 0 ;
while ( joueur1 < max ) and ( joueur2 < max ) do begin
tir1 := lancer ; tir2 := lancer ;
if tir1 > tir2 then joueur1 := joueur1 + 1
else
if tir2 > tir1 then joueur2 := joueur2 + 1 ;
end ; // while
if joueur1 >= max then writeln ( ’ Le joueur 1 gagne ! ’)
else writeln ( ’ Le joueur 2 gagne ! ’) ;
readln
end .
Le langage Pascal(2)
S3H – Programmation
Plan
Types
Structures
La boucle repeat
program harmonic ;
La boucle repeat : syntaxe
var k , N : Integer ;
Somme : Real ;
Le repeat
begin
write ( ’N = ’) ; readln ( N ) ;
k := 0 ;
Somme := 0 ;
while somme <= N do begin
k := k + 1 ;
Somme := Somme + 1/ k ;
end ; // while
writeln ( ’ Somme = ’, Somme :1:2) ;
writeln ( ’k = ’,k :2) ;
readln
end .
1 repeat
2
{ bloc d ’ instructions }
3 until condition ;
I
I
le bloc d’instructions est exécuté une fois
la condition condition est évaluée
I
I
I
Le langage Pascal(2)
S3H – Programmation
si elle est fausse, on réexécute le bloc d’instructions
et la condition est évaluée à nouveau
la boucle se termine quand la condition condition devient
vraie
Le langage Pascal(2)
S3H – Programmation
Plan
Structures
Types
Plan
Structures
Les types prédéfinis
Les types définis par l’utilisateur
Les types prédéfinis
Les types définis par l’utilisateur
Type
Shortint
Byte
Integer
Word
LongInt
Real
Double
Extended
Char
String
Boolean
Etendue
Entier compris entre −127 et 128
Entier compris entre 0 et 255
Entier compris entre −32768 et 32767
Entier compris entre 0 et 65535
Entier compris entre −2147483648 et 2147483647
Réel compris entre 2.9 × 10−39 et 1.7 × 1038 avec 11 décimales
Réel compris entre 5.0 × 10−324 et 1.7 × 10308 avec 15 décimales
Réel compris entre 3.6 × 10−4951 et 1.1 × 104932 avec 15 décimales
Caractères alphanumériques
Chaı̂ne de caractères
Valeurs logiques : {false, true}
Le langage Pascal(2)
S3H – Programmation
Plan
Structures
Types
I
Il est possible de définir ses propres types
I
I
I
Types
à partir des types prédéfinis
avec de nouvelles valeurs
Intérêt ?
I
I
I
une meilleure lisibilité du programme
un contrôle des valeurs qui seront affectées aux variables de ce
type
un gain de place mémoire
Le langage Pascal(2)
Plan
S3H – Programmation
Structures
Les types définis par l’utilisateur
Les types définis par l’utilisateur
Les types énumérés : syntaxe
Les types énumérés : exemple
Types
Jour et Mois
1 type Jour = ( lundi , mardi , mercredi , jeudi ,
2
vendredi , samedi , dimanche ) ;
3
Mois = ( janvier , fevrier , mars , avril , mai ,
4
juin , juillet , aout , septembre ,
5
octobre , novembre , decembre ) ;
Le type énuméré
On énumère la liste de ses valeurs :
1 type nom_du_type = ( id_1 , id_2 ,... , id_n ) ;
I nom_du_type
I id_i
Le langage Pascal(2)
est le nom que l’on donne au nouveau type
sont les valeurs possibles de ce type
Remarque
Le type Boolean est défini par
1 type Boolean = ( False , True ) ;
S3H – Programmation
Le langage Pascal(2)
S3H – Programmation
Plan
Structures
Types
Plan
Structures
Le type intervalle
Le type intervalle
Le type intervalle
Le type intervalle
Remarques
Le type intervalle
1 type nom_du_type = borne_inf .. borne_sup ;
borne_inf
et
borne_sup
Types
I
Le type intervalle hérite du type hôte (celui des bornes)
I
toutes les opérations sur le type hôte sont valables sur le type
intervalle
I
Attention ! Une opération peut donner un résultat qui n’est
plus dans l’intervalle !
appartiennent à un type scalaire discret.
Exemples
1 type jours_ouv = lundi .. vendredi ;
2
week_end = samedi .. dimanche ;
3
heures
= 0 .. 23 ;
4
minutes = 0 .. 59 ;
5
secondes = 0 .. 59 ;
Le langage Pascal(2)
Plan
Exemples
1 var m , n , m1 , m2 : minutes ;
2
3 m1 := 12 ; m2 := 5 ;
4 m := m1 + m2 ; n := m1 * m2 ;
S3H – Programmation
Structures
Types
Le langage Pascal(2)
Plan
S3H – Programmation
Structures
Le type tableau
Le type tableau
Le type tableau
Le type tableau
Types
Exemples
Le tableau
I C’est une structure de données permettant de manipuler
plusieurs objets de même type.
I
Les objets sont directement accessibles grâce à un (ou
plusieurs) indice
I
Il possède des attributs :
low, high, length
Remarque
1. TJ[janvier] donne accès au nombre de jours de
2. On affecte une valeur par TC[’A’]:=’Bonjour’
1 type nom_du_type = array [ intervalle ] of type_elt ;
Le langage Pascal(2)
1 type nb_jours = 1 .. 31 ;
2
T_Nb_Jours = array [ janvier .. decembre ] of nb_jours ;
3
Lettres = ’A ’ .. ’Z ’ ;
4
T_Chaines = array [ Lettres ] of String ;
5
6 var TJ : T_nb_Jours ;
7
TC : T_Chaines ;
S3H – Programmation
Le langage Pascal(2)
janvier
S3H – Programmation
Plan
Structures
Types
Le type tableau
Structures
Types
Le type tableau
Le type tableau
Exercice
Remplir un tableau d’entiers avec des nombres aléatoires, puis calculer le
maximum et le minimum de ce tableau.
Le langage Pascal(2)
Plan
S3H – Programmation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
program tabalea ;
const max = 10 ;
type T_Tableau = array [1.. max ] of Integer ;
var
T : T_Tableau ;
maxi , mini : Integer ;
i : Cardinal ;
begin
randomize ; // on initialise le générateur
for i := 1 to max do T [ i ] := random (100) ;
for i := 1 to max do write ( T [ i ] , ’ ’) ;
writeln ;
maxi := T [1] ;
mini := T [1] ;
for i := 2 to max do begin
if T [ i ] > maxi then maxi := T [ i ]
else
if T [ i ] < mini then mini := T [ i ]
end ; // for
writeln ( ’ Maximum = ’, maxi :3) ;
writeln ( ’ Minimum = ’, mini :3) ;
readln ;
end .
Le langage Pascal(2)
S3H – Programmation