Correspondances Notations Ada-Algo
Transcription
Correspondances Notations Ada-Algo
Mémento de traduction langage Ada — langage Algorithmique Types simples disponibles type en ada pour les algorithmes integer float boolean character string entier réel booléen caractère chaîne de caractères entier réel booléen caractère chaîne Déclaration de variable en ada dans un algorithme nom : string(1..15); nom, prénom : string(1..15); an_naiss : integer; trouvé : boolean; nom : chaîne ; nom, prénom : chaîne ; an_naiss : entier ; trouvé : booléen ; Initialisation de variable par affectation en ada i:=3; nom:="Dupont trouvé:=true; "; --15 caractères dans un algorithme commentaire si i est un entier si nom est une chaîne si trouvé est un booléen i:=3; nom:="Dupont" trouvé:=vrai; Initialisation de variable par lecture en ada lire(nom_de_variable); dans un algorithme litexte(nom_de_variable); Attention en Ada ne pas oublier la clause with P_ESiut; use P_ESiut; pour pouvoir utiliser la procédure lire(). Affichage du contenu d’une variable en ada ecrire(nom_de_variable); dans un algorithme écritexte(nom_de_variable); Attention en Ada ne pas oublier la clause with P_ESiut; use P_ESiut; pour pouvoir utiliser la procédure ecrire(). Affichage et le symbole & En ada Le symbole & permet la concaténation de caractères ou chaînes de caractères uniquement Nom : String (1 .. 6) := "Dupont"; --dans la partie déclaration de variable Ecrire ("Votre nom est : " & Nom); --comme instruction d’une fonction ou procédure écrit à lʼécran Votre nom est : Dupont En algorithmique Le symbole & permet la concaténation de valeurs de tous les types de données compteur := 6; {instruction d’initialisation} écritexte("Le compteur vaut : " & compteur) {utilisatation de & non autorisée en Ada} écrit à lʼécran Le compteur vaut : 6 Page 1/4 Opérateurs arithmétiques sur les entiers Opération en ada dans un algorithme + − * / mod addition soustraction multiplication division entière reste de la division + − * ou div mod Rappel : n = p * ( n div p ) + ( n mod p ) Opérateurs de comparaison Opération égalité non égalité infériorité stricte (large) supériorité stricte (large) en ada dans un algorithme = /= < (<=) > (>=) = ≠ < (≤) > (≥) Opérateurs booléens en ada and or and then or else not dans un algorithme et ou et alors ou sinon non Définition des types articles ou enregistrement en ada type <nom du type> is record <liste de composants ou attributs> end record; Dans un algorithme type <nom du type> = structure <liste de composants ou attributs> fin; Entête de fonctions et procédures en langage algorithmique Une procédure sans paramètre procédure bonjour1; spécification { } {le message de bonjour à l'utilisateur a été affiché} Une procédure avec paramètre procédure bonjour3(d année : entier) ; spécification { } {le bonjour à l'utilisateur et son age ont été affichés} Une fonction avec paramètres qui retourne une chaîne de caractères fonction titre(d sexe, marié : car) : chaîne ; spécification {(sexe='M' ou sexe='F') et (marié='O' ou marié='N')} {résultat = titre correspondant à l'étatcivil défini par sexe et marié } Corps d’algorithmes Procédure Fonction déclaration des variables debproc liste d’instructions finproc; déclaration des variables debfonc liste d’instructions finfonc; Page 2/4 Types de paramètres valeur initiale valeur finale paramètre effectif contrainte d in donnée r out résultat dr in out donnée-résutat doit être définie quelconque doit être définie identique à la valeur initiale expression ou variable initialisée jamais modifié définie (affectée dans l’algo.) définie (affectée dans l’algo.) variable variable initialisée jamais consulté aucune Fonction : seulement des paramètres d Procédure : des paramètres d, r, dr Instruction d’itération (while, tantque) en ada while condition loop instruction1; instruction2; … end loop; dans un algorithme tantque condition faire instruction1 ; instruction2 ; … finfaire; Tant que la condition (expression booléenne) est vraie, la séquence dʼinstructions est exécutée Instruction d’itération (for, pour) Voir les transparents Instruction conditionnelle Forme générale en ada dans un algorithme if condition1 then seq_instructions ; 1 {elsif condition2..n then seq_instructions2..n;} [else seq_instructionsn+1;] end if; si condition1 alors séquence d'instructions1 ; {sinonsi condition2..n alors séquence d'instructions2..n ;} [sinon séquence d'instructionsn+1;] finsi ; Notes {} indique que la section elsif peut se répéter 0, 1 ou plusieurs fois [] indique de la partie else est optionnelle Formes simples en ada dans un algorithme if condition1 then seq_instructions ; 1 else --si condition1 fause seq_instructions2; end if; if condition1 then seq_instructions ; end if; Page 3/4 1 si condition1 alors séquence d'instructions1 ; sinon {si condition1 fausse} séquence d'instructions2 ; finsi ; si condition1 alors séquence d'instructions1 ; finsi ; Exemples de traduction Ada — Algo Fonction ada function majeur4(âge : in integer) return boolean is begin return(age >= 18) ; end majeur4; algorithme fonction majeur4 (d âge : entier) : booléen ; debfonc retour age ≥ 18 ; finfonc ; Procédure avec paramètre résultat ada procedure interrogatoire (nom : out string ; sexe, marié : out character) is begin ecrire("Comment vous appelez-vous ?"); lire(nom); ecrire("Quel est votre sexe (M ou F) ?"); lire(sexe); ecrire('Etes-vous marié(e) (O ou N) ?"); lire(marié); end interrogatoire; algorithme procédure interrogatoire ( r nom : chaîne ; r sexe, marié : caractère) ; debproc écritexte ("Comment vous appelez-vous ?") ; litexte (nom) ; écritexte ("Quel est votre sexe (M ou F) ?") ; litexte (sexe) ; écritexte ("Etes-vous marié (O ou N) ?") ; litexte (marié) ; finproc ; Procédure avec paramètre donnée‐résultat ada procedure permut (a , b : in out integer) is --spécification {a=x , b=y} {a=y , b=x} c : integer; begin -- a = x , b = y c := a ; -- c = x a := b ; -- a = y b := c ; -- b = x -- a = y , b = x end permut; Page 4/4 algorithme procédure permut (dr a , b : entier) ; spécification { a = x , b = y } { a = y , b = x } c : entier ; debproc {a=x,b=y} c := a ; {c=x} a := b ; {a=y} b := c ; {b=x} {a=y,b=x} finproc ;