Download - Principe Et MÚthode de Programmation V5
-
Professeur : Francis Leclercq ([email protected]) 95
Les sous programmes
Les procdures
Programme dexemple
Les fonctions
-
Professeur : Francis Leclercq ([email protected]) 94
-
Professeur : Francis Leclercq ([email protected]) 93
Donner moins bon le CA pour le trimestre X pour le magasin X
Exercice : Carr Magique
Construire un carr magique dordre impair.
On place le 1 sur la dernire ligne et sur la colonne du milieu pour commencer, puis le chiffre suivant
dans la colonne suivante sur la ligne suivante. Si on se trouve sur la dernire ligne (ou colonne), on
retourne la premire. Si la case est occupe par un chiffre, on se place sur la case suprieure au
chiffre prcdent
-
Professeur : Francis Leclercq ([email protected]) 92
Exercices : 3 magasins
On veut enregistrer les chiffres de ventes trimestrielles de 3 magasins :
On doit faire les totaux / trimestre
On doit faire les comptes annuels de chaque magasin
On introduit 12 chiffres de vente : 4 trimestres et 3magasins
Donner meilleur le CA pour le trimestre X pour le magasin Y
-
Professeur : Francis Leclercq ([email protected]) 91
Exercice :
Triangle de Pascal
Il fut trs tt utilis pour dvelopper des expressions de la forme
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
-
Professeur : Francis Leclercq ([email protected]) 90
-
Professeur : Francis Leclercq ([email protected]) 89
Pour parcourir lensemble dun tableau 2 dimensions, il faudra 2 boucles imbriques
Une pour les lignes et lautre pour les colonnes
Exercice :
Ecrire un programme qui permet de lire les lments de 2 tableaux de 2 lignes et 3 colonnes (une
matrice) et afficher la somme des 2 matrices.
2 5 1 6 1 4 8 6 5
3 8 4 9 10 12 12 18 16
-
Professeur : Francis Leclercq ([email protected]) 88
Tableau a plusieurs dimensions
Les coordonnes dune case sont donnes en fonction du systme daxes orthogonaux reprsent ci
dessous :
1 2 3 4 5 6 7 j colonnes
1 (1,1) (1,2) (1,3) (1,4) (1,7)
2 (2,1) (2,2)
3 (3,1) (3,2) (3,3) (3,4)
4 (4,1)
5
(5,5)
6 (6,7)
i lignes
Dans lexemple ci-dessus, les cases ont t remplies avec les indices (coordonnes) qui
correspondent chacune des cases.
Laxe des i donne lindice des lignes, compt de haut en bas dans le sens positif ;
Laxe des j donne lindice des colonnes, compt de gauche droite dans le sens positif.
Plusieurs commence 2 on commence a 2 dimensions
Exemple : Var t1, t2 : array [ 1..3,1..4] of real
Tableau doublement indic et on spare les indices par une virgules
Ceci donne T1 [ 2 , 3 ] := 6.5
1 2 3 4
1
2 6.5
3
Const maxcol :4 ;
Const maxlig =3 ;
Var t :array [1..maxlig,1..maxcol] of real;
-
Professeur : Francis Leclercq ([email protected]) 87
-
Professeur : Francis Leclercq ([email protected]) 86
Ordinogramme du tri de tableau en bulle
-
Professeur : Francis Leclercq ([email protected]) 85
1 2 3 4 5
Tri de tableau en bulle
On remplit un tableau avec des nombres. On prend les nombres par couple et on les permute sils ne
sont pas dans lordre.
1 2 3 4 5 6 7 8 9 10 11
5 18 3 146 25 47 21 163 54 121 99
fin
5 et 18 puis 18 et 3, etc
1 2 3 4 5 6 7 8 9 10 11
5 3 18 25 47 21 146 54 121 99 163
fin
1 2 3 4 5 6 7 8 9 10 11
fin
1 2 3 4 5 6 7 8 9 10 11
fin
1 2 3 4 5 6 7 8 9 10 11
fin
Avec cette mthode, je suis oblig de passer dans tout le tableau. Il y a moyen de faire un contrle
pour ne pas passer dans le tableau sil ny a plus rien trier.
On utilise alors un Boolean (FLAG) : Lors du premier passage, on ne fait aucune permutation.
Quand on effectue une permutation, on lve le drapeau. Au passage suivant on rinitialise le flag
pour que sil y a permutation il change dtat. Quand le tableau sera tri le drapeau ne changera plus
dtat et on pourra sortir de la boucle.
-
Professeur : Francis Leclercq ([email protected]) 84
Le tri par slection
Il consiste en la recherche soit du plus grand lment (ou le plus petit) que l'on va replacer sa
position finale c'est--dire en dernire position (ou en premire), puis on recherche le second plus
grand lment (ou le second plus petit) que l'on va replacer galement sa position finale c'est--
dire en avant-dernire position (ou en seconde), etc., jusqu' ce que le tableau soit entirement tri.
Considrons un tableau T de N nombres (indics de 1 N).
Le principe est le suivant:
Placer dans l'lment d'indice 1 du tableau T la plus petite valeur prsente dans le tableau ;
pour cela, on recherche la plus petite valeur dans T et on la place dans T[1] ; la valeur qui se
trouvait auparavant dans T[1] est mise sa place.
Placer dans l'lment d'indice 2 de T la plus petite valeur prsente dans la tranche de tableau
T[2..N]
Placer dans l'lment d'indice 3 de T la plus petite valeur prsente dans la tranche de tableau
T[3..N]
et ainsi de suite jusqu' l'tape N-1
Par exemple, avec le tableau d'entiers suivants:
5 3 1 2 4
La premire tape consiste identifier la plus petite valeur de l'intevalle T[1..5] et de faire l'change
avec la valeur de la case d'indice 1 :
5 3 1 2 4
on fait l'change :
1 3 5 2 4
La 2 tape consiste mettre la plus petite valeur de l'intervalle T[2..5] dans la case 2:
1 3 5 2 4
on fait l'change :
1 2 5 3 4
La 3 tape consiste mettre la plus petite valeur de l'intervalle T[3..5] dans la case 3:
1 2 5 3 4
on fait l'change :
1 2 3 5 4
La 4 et dernire tape consiste mettre la plus petite valeur de l'intervalle T[4..5] dans la case 4:
1 2 3 5 4
on fait l'change :
1 2 3 4 5
Et voil, on obtient le tableau tri :
-
Professeur : Francis Leclercq ([email protected]) 83
Exercice : Simuler la distribution de 52 cartes entre 4 joueurs.
Avec un CASE OF assigner les cartes aux diffrentes couleurs
Dans cet exercice, il faut faire 2 cases : Pour la valeur et lautre pour la couleur :
MOD 13 retrouve la valeur de la carte
MOD 4 retrouve la couleur de la carte
-
Professeur : Francis Leclercq ([email protected]) 82
Comment permuter 2 cases dans un tableau :
Il faut utiliser une variable temporaire tmp par exemple et il faut procder en 3 affectations :
Exemple : permuter t [i] et t [j]
Tmp t [i]
T [t] t [j]
T [j] tmp
-
Professeur : Francis Leclercq ([email protected]) 81
-
Professeur : Francis Leclercq ([email protected]) 80
Ou une autre version avec un boolen ( mthode du DRAPEAU)
-
Professeur : Francis Leclercq ([email protected]) 79
-
Professeur : Francis Leclercq ([email protected]) 78
Simuler le tirage du lotto. Attention Quand 1 nombre est tir, il nest jamais tir 2 fois. 7 nombres
tirs
-
Professeur : Francis Leclercq ([email protected]) 77
Simule le tirage du joker. On dispose de 7 urnes de 10 boules. Cest boules numrots sont
numroter de 0 a 9. Il faut tirer une boule par urne et on gnre donc un nombre de 7 chiffres.
-
Professeur : Francis Leclercq ([email protected]) 76
A laide dun gnrateur de nombre, on remplit un tableau. Il faut trouver et afficher la plus grande
et la plus petites des valeurs des 10 nombres.
-
Professeur : Francis Leclercq ([email protected]) 75
program aleatoire2;
uses wincrt;
CONST ETENDUE = 10 ;
VAR X : REAL ;
I : INTEGER;
BEGIN
RANDOMIZE ;
FOR I := 1 to 10 do
Begin
X := RANDOM * ETENDUE ;
Writeln (X:8:4) ;
END;
END.
Exercices sur le tri de nombres :
On introduit les 10 nombres au clavier. Il faut trouver et afficher la plus grande et la plus petites des
valeurs des 10 nombres.
-
Professeur : Francis Leclercq ([email protected]) 74
Comment fonctionne un gnrateur :
1. Il faut linitialiser (de manire le plus alatoire possible) Instruction : RANDOMIZE
2. on utilise ensuite la fonction random ou random( VALEUR)
program aleatoire1;
uses wincrt;
VAR I, ALEA : INTEGER ;
BEGIN
RANDOMIZE ;
FOR I := 1 to 20 do
Begin
Alea := RANDOM ( 100 ) + 1 { random gnre un chiffre entre 0 et 1}
Write (ALEA : 8) ;
END
END.
Alea := RANDOM ( 100 ) + 1 on met dans les parenthses le nombre de valeurs diffrentes que
lon veut engendrer en sachant que la premire valeur est toujours 0
Donc 100 est le nombre de valeurs que lon veut simuler, le 1 est la premire valeur gnre
RANDOM (6) + 1 ;
RANDOM (52) + 1 ; Jeux de cartes qui a 52 cartes
RANDOM (42) + 1 ; Jeux lotto avec 42 boules
RANDON( 201) 100 le RANDOM fonctionnement normalement entre 0 et 1.
Si on veut aller de -100 100 on doit multiplie la plage de 0 1 par 200. Mais si on crit RANDOM 201
on ira de 0 200. Il faut crire RANDOM 201 -100 : -100 sera la premire valeur du RANDOM et
comme la plage est de 201 on ira jusque 100.
-
Professeur : Francis Leclercq ([email protected]) 73
SOM := 0;
FOR I := 1 to nbmax DO
SOM := SOM + T[ i];
WRITELN (La somme=,SOM);
WRITELN (La moyenne=, SOM / NBMAX);
END.
Si je dclare un tableau de 50 cases, il va tourner, mais il va prendre longtemps car il va falloir
encoder les 50 donnes. Cest mieux que le tableau se remplisse avec des nombres alatoires.
On va gnrer des valeurs qui se trouvent entre 2 bornes. En principe avec un ordinateur ce nest pas
de lalatoire on parle de gnrateurs de nombres pseudo alatoires, car ils sont gnrs a laide
dune formule mathmatique bien dfinie issue de rgles de statique.
-
Professeur : Francis Leclercq ([email protected]) 72
Ici on fait augmenter lindice de case. I dsigne mon indice t[i] dsigne llment que je mets
lintrieur
Program moyenne ;
Uses wincrt ;
CONST NBMAX =10 ;
VAR T : ARRAY [1..NBMAX] of real ; on a un tableau avec 10 case de 1 10
I : INTEGER ;
SOM : REAL ;
BEGIN
FOR I:= 1 to NBMAX do
BEGIN
Write (nbre,I,:); readln (T [I]);
End;
-
Professeur : Francis Leclercq ([email protected]) 71
VAR T6: ARRAY [ INDICE] of
Les diffrents types de llment dun tableau
Les lments dun tableau peuvent tre de nimporte quel type : scalaire ou structur ( sauf fichier)
INTEGER
REAL
LONGINT
CHAR
Exemple :
VAR T1 : ARRAY [ 0..9] of INTEGER ;
Tableau unidimensionnel
Exemple a une dimension ou tableau unidimensionnel
Ecrire un programme qui permet de lire 10 nombres rels et den calculer la moyenne.
-
Professeur : Francis Leclercq ([email protected]) 70
Les Tableaux
Un tableau et une juxtaposition dun nombre fini dlments du mme type
Dans chaque case du tableau on retrouvera toujours le mme type dobjet.
La dclaration se fait via le mot rserv ARRAY
Diagramme syntaxique :
Exemple : un tableau de 10 entiers
VAR TAB1 : ARRAY [ 1..10] of INTEGER
1 2 3 4 5 6 7 8 9 10
8 -2
TAB 1 [ 3 ] := 8 ;
TAB 1 [ 5 ] := -2 ;
Dans cet exemple le nom du tableau est TAB1 la donne qui ce trouve dans la case 3 du tableau
TAB1 est le 8 et la donne qui se trouve dans la case 5 du tableau TAB1 est le -2
Les diffrents types dindices pour un tableau
Les diffrents types dindices sont des scalaires quelconques except des rels et le type entier. On
peut utiliser des intervalles dentiers.
VAR T1 : ARRAY [ 0..9] of
VAR T2 : ARRAY [-5..5] of
VAR T3 : ARRAY [ CHAR] of Type Char va de 0 255 cases dans le tableau
VAR T4 : ARRAY [ A.. Z] of
VAR T5 : ARRAY [ BOOLEAN] of
On peut aussi faire:
Type INDICE = A..z
-
Professeur : Francis Leclercq ([email protected]) 69
case mot [i] of
'1' : write ('Dix-') ;
'2' : write ('Vingt-');
'3' : write ('Trente ');
'4' : write ('Quarante ');
'5' : write ('Cinquante ');
'6' : write ('Soixante ');
'7' : write ('Septante ');
'8' : write ('Quatre-vingt ');
'9' : write ('Nonante ');
end;
for i := 2 to 2 do
case mot [i] of
'1' : write ('et un ') ;
'2' : write ('deux ');
'3' : write ('trois ');
'4' : write ('quatre ');
'5' : write ('cinq ');
'6' : write ('six ');
'7' : write ('sept ');
'8' : write ('huit ');
'9' : write ('neuf ');
end;
end;
end;
end.
-
Professeur : Francis Leclercq ([email protected]) 68
program conversion_chiffres_nombres;
uses wincrt;
var i, nombre : integer;
mot : string;
begin
repeat
write ('Introduisez un nombre entier : '); readln (nombre);
until (nombre >= 0) AND (nombre
-
Professeur : Francis Leclercq ([email protected]) 67
485 MOD 10 donne 5 donc on isole le 5
485 DIV 100 donne 4 donc on isole le 400
-
Professeur : Francis Leclercq ([email protected]) 66
16,17,18 : WRITELN (TRES BIEN) ;
19..20 : BEGIN
WRITELN (BRAVO) ;
WRITELN ( PAS TRICHE ? ) ;
END
END { fin du case }
END.
Le slecteur est une expression dun type scalaire prdfini ou dfini par lutilisateur.
La valeur ordinale du slecteur ne peut jamais dpasser 255
Attention:
Aucune Constante ne peut se retrouver plusieurs endroits au niveau des tiquettes
La valeur ordinale du slecteur doit tre comprise entre 0 et 255
Diagramme syntaxique
EEAD :
1. On lit un nombre entre 0 et 9 et on lcrit en toutes lettres
2. On lit un nombre entier et on crit chacun de ses chiffres en lettres
Exemple 49873 donne QUATTRE NEUF HUIT SEPT TROIS
3. Le nombre introduit est crit en toutes lettres .
Attention aux chiffres spciaux : 11 16 , 101, 81 sont des exceptions
Pour isoler les chiffres, il faut utiliser un modulo :
-
Professeur : Francis Leclercq ([email protected]) 65
Linstruction CASE Linstruction CASE est une instruction de choix. Elle permet dexcuter telle ou telle instruction en
fonction dun slecteur.
PROGRAM PGMCASE ;
USES WINCRT ;
VAR POINTS : INTEGER ;
BEGIN
CASE POINTS OF slecteur
0..8 : WRITELN (COTE INSUFFISANTE) ;
9 ,10 : WRITELN (UN AUTRE TEST SIMPOSE) ;
11..13 : WRITELN (JUSTE SUFFISANT) ;
14,15 : WRITELN (BIEN) ;
Boucle de test des valeurs encodes au clavier
REPEAT WRITE (une cote entre 1 et 20 :) ; READLN (POINTS) ;
UNTIL ( POINTS >=0) AND POINTS ( POINST
-
Professeur : Francis Leclercq ([email protected]) 64
Exemple de programme qui affiche les chiffres de 2 12 :
CONST MAX = 10 ;
VAR I , J : INTEGER ;
BEGIN
J := 5 ;
FOR I := J -3 TO MAX +2 DO WRITE (I );
END.
Permet dafficher les lettres et leurs code ASCII depuis 32 200 en utilisant une boucle
for
-
Professeur : Francis Leclercq ([email protected]) 63
La boucle FOR
Lordinogramme de la boucle For est identique a celui de la boucle While Do
Exemple de boucle while do Exemple de boucle For
Begin
Cpt := 1 ;
While cpt
-
Professeur : Francis Leclercq ([email protected]) 62
Type intervalle
Diagramme syntaxique
TYPE PETIT_NOMBRE = 0..100;
LETTRE = A..Z ;
VAR AGE : PETIT_NOMBRE ;
Exemple fautif :
TYPE ENVERS = 10..1 Il faut suivre lordre
PROGRAM 1 ;
USES WINCRT ;
CONST MAX = 100;
TYPE PETIT_NOMBRE = 0..MAX;
BEGIN
-
Professeur : Francis Leclercq ([email protected]) 61
On ne peut pas crire :
TYPE IMPAIR = (1,3,5,7) ;
TYPE VOYELLE = ( A , E, I, O, U) ;
Relation et Fonction dordre
0 < 1 < 2 < 3 < . Lordre du type CHAR est en fonction du code ASCII
0 < 1 < .. < 9 <
-
Professeur : Francis Leclercq ([email protected]) 60
Les types de variables dfinis par lutilisateur
On a dj vu les types prdclars tels que INTEGER, LONGINT, REAL, CHAR et BOOLEAN
Ces diffrents types dfinissent des variables simples cd non structures.
On peut crer ses propres variables.
La dclaration dun type doit se faire dans la section type de la partie dclarative.
Diagramme syntaxique :
Type numr
On numre des valeurs qui appartiennent ce type. Ces valeurs sont des identificateurs uniques
Diagramme Syntaxique
PROGRAM ENUM_1 ;
USES WINCRT ;
TYPE COULEURS = (ROUGE, VERT, BLEU, VIOLET, ORANGE) ;
VAR TEINTE : COULEURS ;
BEGIN
TEINTE := VERT ;
IF TEINTE = BLEU THEN .
VAR TEINTE : (ROUGE, VERT, BLEU, VIOLET, ORANGE) ;
Ces variables ne sont pas destines tre affiches ni lues, juste destines au fonctionnement du
programme. (usage interne)
-
Professeur : Francis Leclercq ([email protected]) 59
-
Professeur : Francis Leclercq ([email protected]) 58
-
Professeur : Francis Leclercq ([email protected]) 57
Contrle janvier partie 2
Le nombre mystre
-
Professeur : Francis Leclercq ([email protected]) 56
Exercice : lhorloge digitale
-
Professeur : Francis Leclercq ([email protected]) 55
Exercice : Factorielle
Notion de factorielle :
0 ! = 1
N ! = N ( N 1 )
4 ! = 4 * 3 !
= 4 * 3 * 2 !
= 4 * 3 * 2 *1!
= 4 * 3 * 2 * 1 = 16
5 ! = 120
6 ! = 720
-
Professeur : Francis Leclercq ([email protected]) 54
TANT QUE FAIRE
On se pose dabord la question.
Si on rpond oui on rpte le traitement jusqu
ce que le gardien devienne faux
La diffrence entre les deux structures est en fait la ngation du test :
Si on sort de la boucle quand le test est vrai -> rpter jusqu' ce que
Si on sort de la boucle quand le test est faux -> tant que faire
En Pascal, le tant que faire est le WHILE DO
Diagramme syntaxique de linstruction While Do
-
Professeur : Francis Leclercq ([email protected]) 53
-
Professeur : Francis Leclercq ([email protected]) 52
Exercice : Jeu de la pile de pices
On dispose dune pile de 19 pices. Le jeu se droule entre 2 joueurs, Il faut alternativement retirer
de 1 4 pices. Il faut vrifier que le joueur ne triche pas. Il doit tirer au moins 1 pice et 4
maximum. Mais sil en reste 3, il ne peut pas en tirer 4. Le joueur qui tire la dernire pice a perdu. Il
faut afficher le numro du joueur gagnant.
-
Professeur : Francis Leclercq ([email protected]) 51
-
Professeur : Francis Leclercq ([email protected]) 50
Exercice : Dterminer si un nombre donn est un nombre premier
Rappel : Un nombre est premier que sil admet que deux diviseurs distincts. 3 est premier car il est
divisible par 1 et 3
Sil ny a pas de nombre avant la racine carre de ce nombre, il ny en aura plus aprs.
-
Professeur : Francis Leclercq ([email protected]) 49
Exercice : trouver tout les nombres parfaits entre < 10 000
-
Professeur : Francis Leclercq ([email protected]) 48
Exercice : Calculer et
afficher la somme des
diviseurs propres dun
nombre puis dterminer
si ce nombre est
dficiant, abondant ou
parfait.
Som
-
Professeur : Francis Leclercq ([email protected]) 47
-
Professeur : Francis Leclercq ([email protected]) 46
Exercice : Affiche les diviseurs dun nombre
Version 1
-
Professeur : Francis Leclercq ([email protected]) 45
Diagramme syntaxique de linstruction REPEAT. UNTIL
USES WINCRT ;
VAR CPT : INTEGER ;
BEGIN
CPT := 1 ;
REPEAT
WRITELN ( CPT) ;
CPT := CPT +1
UNTIL CPT > 10 ;
END.
-
Professeur : Francis Leclercq ([email protected]) 44
Exercices
Afficher la table de multiplication dun nombre donn
-
Professeur : Francis Leclercq ([email protected]) 43
Structure Rptitive
Rpter jusqu ce que -> REPEAT . UNTIL
Ce traitement rptitif sappelle une boucle.
Le test que lon fait pour sortir de la boucle sappelle le
gardien de la boucle. (toujours en fin de traitement dans le
rpter jusqu ce que)
On sort de la boucle uniquement si le gardien est vrai.
3 rgles vrifier pour sassurer que la boucle est correctement crite :
1. Dbut : Linitialisation de la variable a t correctement faite (gardien)
2. Milieu : En cours de traitement est-ce que la boucle va correctement progresser pour quau
passage suivant de la boucle tout se passera correctement ( tape N vers tape N+1)
3. Fin : Est-ce que je marrte au bon moment et est-ce que mon gardien a t correctement
crit
-
Professeur : Francis Leclercq ([email protected]) 42
-
Professeur : Francis Leclercq ([email protected]) 41
Contrle de la communication structure dun virement (VCS)
-
Professeur : Francis Leclercq ([email protected]) 40
Version 2 :
-
Professeur : Francis Leclercq ([email protected]) 39
Exercices :
On introduit une date sous la forme Jours, mois, anne en 3 nombres
Date 1 : J1 M1 A1
Date2 : J2 M2 A2
On suppose que ces dates sont des dates de naissance, on doit dterminer le plus g.
Version 1 :
-
Professeur : Francis Leclercq ([email protected]) 38
Linstruction continuelle
Diagramme syntaxique
Exemple : Le plus grand de 2 nombres
-
Professeur : Francis Leclercq ([email protected]) 37
Les diagrammes syntaxiques
Le diagramme syntaxique permet de reprsenter la syntaxe du Pascal.
3 lments :
1. Les symboles terminaux (quon ne peut plus dcortiquer) :
2. Les symboles non terminaux :
3. Les flches : (indique les cheminements possibles)
En tte du programme :
Identificateur :
Le premier caractre doit tre une lettre
Les caractres suivants peuvent tre une lettre, un chiffre ou un underscore _
-
Professeur : Francis Leclercq ([email protected]) 36
VAR TEST : BOOLEAN ;
I , J : INTEGER ;
BEGIN
I:= 5; J:=10
TEST := (I >=5) OR ( J 2 comparaison, on a donc 2 tests qui sont relis par un ET (AND)
VAR MIN, MAX: INTEGER;
N: INTEGER
TEST := ( MIN < N ) AND ( N< MAX )
ATTENTION : les parenthses sont obligatoires ( cf. prcdence)
Linstruction compose ou Bloc dinstructions
Une instruction compose est une suite dinstructions commenant par le mot rserv BEGIN et
termine par le mot rserv END
I >=5 est gale TRUE
( J
-
Professeur : Francis Leclercq ([email protected]) 35
Oprateurs logiques ou conjonctions logiques
NEGATION : NOT
A NOT A
F T
T F
OU : OR ( est un OU inclusif)
A B A OR B
F F F
F T T
T F T
T T T
ET : AND
A B A AND B
F F F
F T F
T F F
T T T
Prcdence des oprateurs
NOT
*, DIV , / , MOD , AND
+ , - , OR
= , < , > , , = , IN
-
Professeur : Francis Leclercq ([email protected]) 34
Type boolen (Boole) : BOOLEAN
Ce type de variable ne peut prendre que 2 valeurs : FALSE et TRUE
Declaration, affectation:
VAR TEST : BOOLEAN ;
I : INTEGER ;
BEGIN
TEST := FALSE ;
READLN (I) ;
TEST := I > 5 ;
WRITELN (TEST) ;
Oprateurs de comparaison
> Plus grand que
< Plus petit que
>= Plus grand ou gale que
Est diffrent de
Dans une variable, on place le rsultat
dune comparaison entre 2 objets
-
Professeur : Francis Leclercq ([email protected]) 33
Programme : Test bissextile V4 (cfr algorithme page 27)
-
Professeur : Francis Leclercq ([email protected]) 32
Programme : Test bissextile V1 (cfr algorithme page 26)
Programme : Test bissextile V2 (cfr algorithme page 27)
Programme : Test bissextile V3 (cfr algorithme page 27)
-
Professeur : Francis Leclercq ([email protected]) 31
Ordinogramme version 2
Ordinogramme version 3
Ordinogramme version 4
-
Professeur : Francis Leclercq ([email protected]) 30
Exercice : Une anne est-elle bissextile ?
Une anne est bissextile si :
elle est divisible par 4 et par 400
elle est divisible par 4 ou par 100.
1900 -> non 2000 -> oui 1997 -> non
1900 / 4 = 475 2000 / 4 = 500 1997 / 4 = 499,25
1900 / 400 = 4,75 2000 / 400 = 50 1997 / 400 = 4,9925
1900 / 100 = 19 2000 / 100 = 20 1997 / 100 = 199,70
1900 MOD 4 = 0 2000 MOD 4 = 0 1997 MOD 4 = 1
1900 MOD 400 = 300 2000 MOD 400 = 0 1997 MOD 400 = 397
1900 MOD 100 = 0 2000 MOD 100 = 0 1997 MOD 100 = 97
Si une anne est divisible par 400, elle est aussi divisible par 4
Si une anne est divisible par 100, elle est aussi divisible par 4
Ordinogramme version 1
-
Professeur : Francis Leclercq ([email protected]) 29
Exercice : Trouver le plus grand nombre de 4 nombres version 2 :
-
Professeur : Francis Leclercq ([email protected]) 28
Exercice : Trouver le plus grand nombre de 4 nombres version 1 :
-
Professeur : Francis Leclercq ([email protected]) 27
Exemple dordinogramme avec la structure Alternative :
On affiche le plus grand de 2 nombres sans test dgalit :
On affiche le plus grand de 2 nombres et on teste lgalit :
-
Professeur : Francis Leclercq ([email protected]) 26
Les Structures Alternatives
Une structure alternative est une structure qui a une seule entre et une seule sortie.
Les traitements 1 et 2 peuvent tre simples ou complexes.
Voici une version simplifie de la structure alternative
En gnral dans cette structure, on se pose une question laquelle on rpond par oui ou non, on fait
des comparaisons telles que des comparaisons ou leurs ngations:
Comparaison Ngation de la comparaison
A > B A = B A < B
A < B A >= B
A B
A = B A =/ B
A =/ B A = B
Remarque : Dans cette structure, on doit sefforcer deffectuer une action quand on rpond oui au
test effectu
-
Professeur : Francis Leclercq ([email protected]) 25
-
Professeur : Francis Leclercq ([email protected]) 24
Programme de la caissire (cfr algorithme page 12) :
-
Professeur : Francis Leclercq ([email protected]) 23
Exercice : Programme daddition de 2 temps (cfr algorithme page 8) :
-
Professeur : Francis Leclercq ([email protected]) 22
Exercice : Programme daddition de 2 temps Version 2 (cfr algorithme page 7) :
-
Professeur : Francis Leclercq ([email protected]) 21
Exercice : Programme daddition de 2 temps Version 1 (cfr algorithme page 7) :
-
Professeur : Francis Leclercq ([email protected]) 20
Les oprateurs arithmtiques sur les rels :
Laddition => +
La soustraction => -
La multiplication => *
La division entire => /
I := 3
Y := I / 5
Y = 0.6
Comptabilit entre les entiers et les rels
VAR I, J : INTEGER;
X,Y : REAL;
BEGIN
I := 5 ; X := 10.5 ;
Y := I + X ; Si on additionne 1 entier et un rel, le rsultat sera un rel
Y := I * 10 ; Sur certain compilateur, on devra crire Y := I * 10.0
Corps du programme: Cest le programme proprement dit. (partie excutable)
Diffrentes instructions du corps de programme :
WRITE Ecrit. Il reprend une suite dinstruction. Ex. : WRITE=AFFICHE
WRITELN Idem que WRITE et passe la ligne
READLN Il lit la valeur et va la ligne
:= Est le signe daffectation qui est reprsent en algorithmique par la flche
; Le point virgule est un SEPARATEUR dinstructions.
TRUNC Tronque la valeur relle en valeur entire Ex. : 3,4 TRUNC = 3 = Plancher
FRAC Renvoie la partie fractionnaire de largument
INT Renvoie la partie entire de largument
{ xxx } Zone de commentaire
-
Professeur : Francis Leclercq ([email protected]) 19
Les oprateurs arithmtiques sur les entiers :
Laddition => +
La soustraction => -
La multiplication => *
La division entire => DIV (Correspond au plancher dans un algorithme)
Le modulo => MOD ( reste de la division par )
Lentier est cod sur un complment 2 sur 2 octets :
De -215
+215
-1 ou de -32 768 + 32 767 (16 bits) ou De -231
+231
-1 (32 bits)
Prcdences des oprateurs :
1. *, DIV, MOD
2. +, -
Donc si on a :
I := 20
J := 5 * I 3 + I MOD 2 * 5 ;
1. 5 *I = 100
2. I MOD 2 = 0
3. I MOD 2 *5 = 0
4. 5 *I -3 = 97
5. 5 *I -3 I MOD 2 * 5 =97
Type rel : REAL
Dclaration : VAR X, Y : REAL ;
Il est compris de -1038.7
1038.7
Ecriture des constantes relles :
Doit toujours comporter une partie entire, un point et une partie fractionnaire.
Exemple :
8.5
-2.8
.5 -> 0.5
3 -> 3.0
3. -> 3.0
-
Professeur : Francis Leclercq ([email protected]) 18
I := 10 ; (Ce lit I prend la valeur de 10 )
J := I + 5 ;
-
Professeur : Francis Leclercq ([email protected]) 17
Dclaration du programme
Identificateur du programme :
Commence toujours par une lettre
Les autres caractres sont des lettres ou des chiffres lexclusion de tout autre caractre
Ne contient pas de ponctuation
La partie dclarative :
On dfinit le type de USES utilis. En gnral WINCRT (WINCRT : Gestion de lcran sous
Windows en turbo pascal) ou crt en LAZARUS
On y dclare les variables VAR ( mais aussi les constantes, types et sous-programmes )
Les variables :
Sont toujours uniques (unicit de lidentificateur)
Se dclarent au dbut du programme
Deux grandes classes de variables :
1. Variable Scalaire : variable simple telle un nombre
2. Variable structures : variables constitues dune combinaisons de grandeurs scalaires
1. Variables simples :
a. Types existants (prdfinis) : Entier, Rel, Caractre et Boolen (peut prendre 2
valeurs : vrai ou faux)
b. Type dfini par lutilisateur : Enumr, Intervalle
Type Entier : INTERGER
PROGRAM EXEMPLE ;
USES WINCRT ;
VAR I , J : INTERGER ;
BEGIN
-
Professeur : Francis Leclercq ([email protected]) 16
-
Professeur : Francis Leclercq ([email protected]) 15
Programmation
Langage : Pascal
Compilateur :
Turbo Pascal -> Windows ou LAZARUS ( Applications en mode console )
Free Pascal -> Linux ou LAZARUS ( Applications en mode console )
Un langage compil est diffrent du langage interprt (Excute ligne par ligne).
Dans le langage compil, on a le code source qui est transform en un excutable via le compilateur.
Le compilateur analyse le code source avec 3 rgles :
Rgles lexicales
Rgles syntaxiques
Rgles smantiques
Exemple de programme en Pascal et explication de son contenu
PROGRAM EXEMPLE_1; Dclaration du programme
Identifiant du programme
USES WINCRT ; Utilise une gestion dcran pour Windows (pour turbo Pasc
VAR NB1 ;NB2 : INTEGER ; Partie dclarative
SOMME : INTERGER ;
BEGIN
WRITE (UN NOMBRE :) ;
READLN (NB 1) ;
WRITE (UN SECOND :) ; Corps du programme
READLN (NB 2);
Writeln (La somme de , NB1 , et de , NB2, est de , SOMME ) ;
END. Se termine toujours par un point
Les mots en rouge sont des mots rservs
-
Professeur : Francis Leclercq ([email protected]) 14
Dans cet exercice, on ne peut pas utiliser le modulo car on ne peut faire un modulo que sur des
nombres entiers.
Ordinogramme :
-
Professeur : Francis Leclercq ([email protected]) 13
Exercice : La caissire
On prsente une somme dargent suprieure ou gale au montant payer la caissire et celle-ci
doit savoir le montant rendre. Il faut ensuite dcomposer ce montant dans les diffrentes
coupures.
Le total des achats : 121,23
Montant prsent : 200
Somme rendre : 200 121,23 = 78,77
Nbr Billets ou
Nbr Pices
Type Billets ou
Type Pices
Reste rendre
1 Billet de 50 28,77
1 Billet de 20 8,77
0 Billet de 10 8,77
1 Billet de 5 3,77
1 Pice de 2 1,77
1 Pice de 1 0,77 ou 77 cents
1 Pice de 50 cents 0,27 ou 27 cents
1 Pice de 20 cents 0,07 ou 7 cents
0 Pice de 10 cents 0,07 ou 7 cents
1 Pice de 5 cents 0,02 ou 2 cents
1 Pice de 2 cents 0 ou 0 cents
0 Pice de 1 cents 0 ou 0 cents
INPUT :
MAP : Montant payer
SP : Somme prsente
OUTPUT :
MAR : Montant rendre
Diffrentes coupures
-
Professeur : Francis Leclercq ([email protected]) 12
-
Professeur : Francis Leclercq ([email protected]) 11
Exercice : La pointeuse
Ecrire lordinogramme qui calcule un temps prest. On a 2 temps exprims en Heures, Minutes et
Secondes quil faut additionner pour donner le temps prest en Heures, Minutes et Secondes.
Heure darrive : 07 Heures 56 Minutes 28 Secondes
Heure dpart : 12 Heures 08 Minutes 15 Secondes
Temps prest : 04 Heures 11 Minutes 47 Secondes
Pour effectuer les calculs, il est plus facile de transformer le tout en secondes et de soustraire lheure
dpart lheure darrive.
Formule de transformation dun temps exprim en Heures, Minutes et Secondes vers des
secondes :
( Heures * 3600 ) + ( Minutes * 60 ) + Secondes
(Heures *60 + Minutes ) *60 + Secondes
H. darriv (HA): (7 * 3600) + (56*60) + 28 = (7 * 60 + 56) * 60 + 28 = 28588 secondes
H. de dpart (HD): (12*3600) + (08*60) + 15 = (12* 60 +8) * 60 + 15 = 43695 secondes
Temps prest (TP) = HD - HA = 43695 28588 = 15107 secondes
Formules de transformation des secondes en en Heures, Minutes et Secondes :
Heures = Secondes /3600
Report = Secondes MOD 3600
Minutes = report / 60
Secondes = report MOD 60
Heures = 15107 / 3600 = 4
Report =15107 MOD 3600 = 707
Minutes = 707/60 = 11
Secondes= 707 MOD 60 = 47
Le temps prest est de 04 Heures 11 Minutes 47 Secondes
-
Professeur : Francis Leclercq ([email protected]) 10
Mme exercice, mais avec la conversion en secondes
T1= (H1*3600) + (M1*60) + S1
T2= (H2*3600) + (M2*60) + S2
T1 : 07h 53M 27S 28407 Sec
T2 : 08h 26M 40S 30400 Sec
58807 Sec
58807 3600
57600 16 Heures
1207 60
1200 20 Minutes
7 Secondes
HT
-
Professeur : Francis Leclercq ([email protected]) 9
-
Professeur : Francis Leclercq ([email protected]) 8
7 est le reste de la division de 67 par 60
67 MOD 60 = 7
Le modulo seffectue toujours sur des nombres entiers
REP Si 80/60=1,3333 donc | 80/68 |= 1
Exemple :
NB1 NB2 NB1/NB2 Plancher de
NB1/NB2
Plafond de
NB1/NB2
10 2 5 5 5
5 2 2 ,5 2 2
80 60 1 ,333 1 2
Ordinogramme du laddition de 2 temps exprims en Heures, Minutes, Secondes
MT
-
Professeur : Francis Leclercq ([email protected]) 7
Ordinogramme :
Exercice :
On voudrait calculer la somme de 2 temps exprims en heures, minutes, secondes
INPUT
T1 -> H1, M1, S1
T2 -> H2, M2, S2
OUTPUT
Temps Total = TT -> HT, MT, ST = ?
Il faut faire attention en choisissant un exemple. Dans ce cas ci, il peut y avoir un report
7 Heures 53 Minutes 27 Secondes
8 Heures 26 Minutes 40 Secondes
16 Heures 20 Minutes 67 Secondes
7H 53 M 27S
8H 26M 27S Report
80 60 67 60
60 1 60 1
20 Min 7 secondes
Les secondes ne vont que jusque 59, il faut donc reporter une minute.
S , TI
-
Professeur : Francis Leclercq ([email protected]) 6
VA= S + VI = 1000+20 = 1020
Ordinogramme :
Dans cette expression la est
le signe daffectation. A droite du signe, on a une opration et le rsultat est une opration. Ce
rsultat est plac dans ce quon appelle une variable.
Exemple :
Calculer lintrt est la valeur de lintrt acquis par une somme place pendant x annes an un
certain taux dintrt.
INPUT
La somme place -> S = 1000
Taux dintrt en % -> TI = 2%
Nbr danne -> T = 3 ans
1 an :
OUTPUT
Valeur de lintrt -> VI = ?
Valeur Acquise -> VA = ?
VI = S *TI/100 = 1000 *2/100 = 20 -> VA = S + VI = 1020
2 ans
VI = S *TI/100 = 1020 *2/100 = 20,4 -> VA = S + VI = 1040,4
3 ans
VI = S *TI/100 = 1040,4 *2/100 = 20,81 -> VA = S + VI = 1061,21
Formule :
2 ans : S * (1+ TI/100)2
3 ans : S * (1+ TI/100)3
T ans : S * (1+ TI/100)T
D
VI S * TI / 100
VA S + VI
VA ; VI
F
S , TI
-
Professeur : Francis Leclercq ([email protected]) 5
Les diffrentes figures :
Les Structures Simples
La squence :
Elle nutilise que les figures de type 2
Nutilise pas la prise de dcision
Exemple :
Calculer lintrt et la valeur de lintrt acquis par une somme place pendant 1 an un certain taux
dintrt.
INPUT
La somme place -> S = 1000
Taux dintrt en % -> TI = 2%
OUTPUT
Valeur de lintrt -> VI = ?
Valeur Acquise -> VA = ?
VI = S *TI/100 = 1000 *2/100 = 20
-
Professeur : Francis Leclercq ([email protected]) 4
Algorithmique
Dfinition :
Mthode qui reprsente le processus logique pour rsoudre un problme.
Suite finie de rgles qui sexcutent dans un ordre donn.
Un algorithme doit tre indpendant dun systme de programmation.
Procdure :
1. Comprendre le problme pos.
2. Prciser les donnes fournies : INPUT
3. Dfinir le rsultat : OUTPUT
4. Dfinir le processus de transformation
Les ordinogrammes
Dfinition :
Cest un schma qui permet de reprsenter de manire claire un algorithme. Il est compos
de figures relies entre elles par des flches et organis en structures bien dfinies.
-
Professeur : Francis Leclercq ([email protected]) 3
Exercices : ...................................................................................................................................... 39
Structure Rptitive ...................................................................................................................... 43
Rpter jusqu ce que -> REPEAT . UNTIL ..................................................... 43
TANT QUE FAIRE............................................................................................................ 54
Les types de variables dfinis par lutilisateur ................................................................................. 60
Type numr ............................................................................................................................... 60
Diagramme Syntaxique ................................................................................................................. 60
Relations et Fonctions dordre ...................................................................................................... 61
Fonctions dordre en Pascal .......................................................................................................... 61
Type dintervalle............................................................................................................................ 62
La boucle FOR........................................................................................................................................ 63
Diagramme Syntaxique ................................................................................................................. 63
Linstruction CASE.................................................................................................................................. 65
Diagramme syntaxique.................................................................................................................. 66
Les Tableaux .......................................................................................................................................... 70
Diagramme syntaxique :.................................................................................................................... 70
Les diffrents types dindices pour un tableau ................................................................................. 70
Les diffrents types de llment dun tableau................................................................................. 71
Tableau unidimensionnel .................................................................................................................. 71
Exercices sur le tri de nombres : ............................................................................................... 75
Le tri par slection................................................................................................................................. 84
Tri en bulle......................................................................................................................................... 85
Tableau a plusieurs dimensions ........................................................................................................ 88
-
Professeur : Francis Leclercq ([email protected]) 2
Contenu Algorithmique.......................................................................................................................................... 4
Les ordinogrammes............................................................................................................................. 4
Dfinition :....................................................................................................................................... 4
Les diffrentes figures : ................................................................................................................... 5
Les Structures Simples..................................................................................................................... 5
Exercice : La pointeuse .............................................................................................................. 11
Exercice : La caissire ................................................................................................................ 13
Programmation ..................................................................................................................................... 15
Exemple de programme en Pascal et explication de son contenu ................................................... 15
Dclaration du programme ........................................................................................................... 17
La partie dclarative : .................................................................................................................... 17
Type Entier ou un nombre entier : INTERGER........................................................................... 17
Type rels: REAL ........................................................................................................................ 19
Corps du programme: ................................................................................................................... 20
Exercice : Programme daddition de 2 temps Version 1 (cfr algorithme page 7) : ................... 21
Exercice : Programme daddition de 2 temps Version 2 (cfr algorithme page 7) : ................... 22
Exercice : Programme daddition de 2 temps (cfr algorithme page 8) : ................................... 23
Les Structures Alternatives............................................................................................................ 26
Exemple dordinogramme avec la structure Alternative : ........................................................ 27
Exercice : Trouver le plus grand nombre de 4 nombres version 1 :.......................................... 28
Exercice : Trouver le plus grand nombre de 4 nombres version 2 :.......................................... 29
Exercice : Une anne est-elle bissextile ?.................................................................................. 30
Programme : Test bissextile V2 (cfr algorithme page 27) ......................................................... 32
Programme : Test bissextile V3 (cfr algorithme page 27) ......................................................... 32
Type boolens (Boole) : BOOLEAN.................................................................................................... 34
Declaration, affectation:................................................................................................................ 34
Oprateurs de comparaison.......................................................................................................... 34
Oprateurs logiques ou conjonction logique ................................................................................ 35
Prcdence des oprateurs........................................................................................................... 35
Les diagrammes syntaxiques............................................................................................................. 37
3 lments : ................................................................................................................................... 37
Linstruction conditionnelle............................................................................................................... 38
Diagramme syntaxique.................................................................................................................. 38
-
IEPSCF Peruwelz
Principe et Mthode de
Programmation Bachelier en Informatique de gestion