principe et mÚthode de programmation v5

Upload: claudeberte

Post on 11-Oct-2015

7 views

Category:

Documents


0 download

TRANSCRIPT

  • 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