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