insa toulouse 1a algorithme ada cours 2-2
TRANSCRIPT
-
8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 2-2
1/3
Algorithmique UV2Cours 2
Didier Le Botlan
2nd semestre 20092010
http://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.html
1 / 13
chauffement
Quizz
procedure Mission1 is
X, Y : I nt eg er ;
begin
X := 0 ;
Y : = 2 X ;
while Y < 10 loop
X : = X + 1 ;
end loop ;
end Mission1 ;
Que vaut Y quand le programme sarrte ?
Le programme ne sarrte pas car Y ne change pas de valeur.
2 / 13
chauffement
crire une fonction
Est_BissextileAnnee : Integer Boolean
with GAda.Text_IO ;
procedure Mission2 is
package Txt renames GAda.Text_IO ;
function Est_Bissextile (Annee : Integer) return Boolean is
begin
return (( (Annee mod 4 = 0) and (Annee mod 100 /= 0))
or (Annee mod 400 = 0)) ;
end Est_Bissextile ;
Il faut tester chaque fonction ou procdure.
3 / 13
chauffement
Pour cela, on cre une procdure associe :
Test_Bissextile
OU (selon ce qui est le plus utile)
Test_BissextileAnnee_Test : Integer
procedure Test_Bissextile (Annee_Test : Integer) isbegin
i f Est_Bissextile(Annee_Test) then
Txt. Put_Line( Integer Image(Annee_Test) &
" est bissextile.") ;
else
Txt. Put_Line( Integer Image(Annee_Test) &
" nest pas bissextile.") ;
end if ;
end Test_Bissextile ;
4 / 13
http://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.htmlhttp://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.html -
8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 2-2
2/3
chauffement
Pour vrifier que la fonction est correcte, il suffit dappeler laprocdure de test dans le corps du programme :
begin
Test_Bissextile(2000) ;
Test_Bissextile(2001) ;Test_Bissextile(2002) ;
Test_Bissextile(2004) ;
Test_Bissextile(2100) ;
Test_Bissextile(2400) ;
end Mission2 ;
5 / 13
Cration dun tableau
Un tableau sera associ une variable.
Mais avant cela, il faut dfinir un type tableau .
Dfinition dun type tableau (avant le begin)
type Des_Foos is array (Integer range ) of Integer ;
Pour linstant, aucun tableau na t cr en mmoire(le nombre de case na pas t donn). Des_Foos nest pas une variable.
Cration de plusieurs tableaux (avant le begin)
Premier_Tableau : Des_Foos(1..200) ;
Second_Tableau : Des_Foos(1..200) ;
Les deux tableaux ont-ils le mme contenu? non
6 / 13
Remplissage du tableau
Laccs une case scrit Premier_Tableau(indice) .Une case se comporte comme une variable (lecture, affectation).
Si on veut remplir toutes les cases dans lordre, on utilisenaturellement une boucle for :
Premier_Tableau (1) = 42 ;
for N in 2..Premier_Tableau Last loop
Premier_Tableau (N) := 4 * Premier_Tableau (N-1) - 5 ;
end loop ;
Suite Un = 4Un1 5 avec 2 n 200 et U1 = 42
7 / 13
Matrices
Une matrice a plusieurs colonnes.
Dfinition dun type matrice (avant le begin)
type Des_Barz is array (Integer range , Integer range ) of Integer ;
Aucune matrice nexiste en mmoire tant quon na pas dclar devariable de ce type :
Cration de plusieurs matrices (avant le begin)
Premiere_Mat : Des_Barz (1..200, 1..5) ;
Seconde_Mat : Des_Barz (1..10, 1..20) ;
8 / 13
-
8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 2-2
3/3
Remplissage de la matrice
Laccs une case scritPremiere_Mat(indice_ligne, indice_colonne) .
Si on veut remplir toutes les cases, on utilise naturellement deuxboucles for :
for L in Premiere_MatRange(1 ) loopfor C in Premiere_MatRange(2) loop
Premiere_Mat(L, C) := L + C ;
end loop ;
end loop ;
(Dessin de lexcution)
9 / 13
Attributs
Range, First, etc. sappellent des attributs.
Attribut SignificationFirst Indice de la premire case dun tableauLast Indice de la dernire case dun tableau
Length Nombre de cases dun tableau
First(1) Indice de la premire ligne dune matricemarche aussi pour Last(1) et Length(1)
First(2) Indice de la premire colonne dune matricemarche aussi pour Last(2) et Length(2)
Range First .. Last
Range(1) First(1) .. Last(1)
Range(2) First(2) .. Last(2)
10 / 13
Encore des questions
Peut-on faire un tableau contenant autre chose que des entiers?
type Des_Moos is array (Integer range ) of Float;
type Des_Moos is array (Integer range ) of un_type_quelconque ;
Lindice du tableau (Integer range ) peut-il tre un rel ?Non, a doit tre un entier (ou au moins un intervalle numrable fini)
11 / 13
La CNIL
Loi du 6 janvier 1978 , informatique et libertssur les donnes nominatives
www.cnil.fr
Le droit linformation
Le droit dopposition
Le droit daccs
Le droit de rectification
En cas de non-respect, la loi (code pnal) prvoit jusqu 5 ansdemprisonnement et 300 000 e damende
12 / 13