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 ;