Vous êtes sur la page 1sur 3

Échauffement

Quizz

Algorithmique UV2 procedure Mission1 is


X, Y : Integer ;
Cours 2
begin
X := 0 ;
Didier Le Botlan Y := 2 ∗ X ;
while Y < 10 loop
INSA
contact.lebotlan@insa-toulouse.fr X := X + 1 ;
end loop ;
2nd semestre 2009–2010 end Mission1 ;

Que vaut Y quand le programme s’arrête ?


http://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.html
Le programme ne s’arrête pas car Y ne change pas de valeur.

1 / 13 2 / 13

Échauffement Échauffement

Pour cela, on crée une procédure associée :


Écrire une fonction
Test_Bissextile
Annee : Integer Est_Bissextile Boolean
OU (selon ce qui est le plus utile)

with GAda. Text_IO ; Annee_Test : Integer Test_Bissextile


procedure Mission2 is
package Txt renames GAda. Text_IO ; procedure Test_Bissextile (Annee_Test : Integer ) is
begin
function Est_Bissextile (Annee : Integer ) return Boolean is
i f Est_Bissextile (Annee_Test) then
begin
Txt . Put_Line( Integer ’Image(Annee_Test) &
return ( ( (Annee mod 4 = 0) and (Annee mod 100 /= 0))
or (Annee mod 400 = 0)) ;
" est bissextile." ) ;
else
end Est_Bissextile ;
Txt . Put_Line( Integer ’Image(Annee_Test) &
" n’est pas bissextile." ) ;
Il faut tester chaque fonction ou procédure. end i f ;
end Test_Bissextile ;

3 / 13 4 / 13
Échauffement Création d’un tableau

Un tableau sera associé à une variable.


Mais avant cela, il faut définir un type tableau .
Pour vérifier que la fonction est correcte, il suffit d’appeler la
procédure de test dans le corps du programme :
Définition d’un type tableau (avant le begin)
begin type Des_Foos is array (Integer range <>) of Integer ;
Test_Bissextile(2000) ;
Test_Bissextile(2001) ; Pour l’instant, aucun tableau n’a été créé en mémoire
Test_Bissextile(2002) ; (le nombre de case n’a pas été donné).
Test_Bissextile(2004) ; + Des_Foos n’est pas une variable.
Test_Bissextile(2100) ;
Test_Bissextile(2400) ; Création de plusieurs tableaux (avant le begin)
end Mission2 ; Premier_Tableau : Des_Foos(1..200) ;
Second_Tableau : Des_Foos(1..200) ;

+ Les deux tableaux ont-ils le même contenu ? non

5 / 13 6 / 13

Remplissage du tableau Matrices

L’accès à une case s’écrit Premier_Tableau(indice) .


Une matrice a plusieurs colonnes.
Une case se comporte comme une variable (lecture, affectation).
Définition d’un type matrice (avant le begin)
Si on veut remplir toutes les cases dans l’ordre, on utilise type Des_Barz is array (Integer range <>, Integer range <>) of Integer ;
naturellement une boucle for :

Premier_Tableau (1) = 42 ; Aucune matrice n’existe en mémoire tant qu’on n’a pas déclaré de
for N in 2..Premier_Tableau’Last loop variable de ce type :
Premier_Tableau (N) := 4 * Premier_Tableau (N-1) - 5 ; Création de plusieurs matrices (avant le begin)
end loop ;
Premiere_Mat : Des_Barz (1..200, 1..5) ;
Seconde_Mat : Des_Barz (1..10, 1..20) ;
⇔ Suite Un = 4Un−1 − 5 avec 2 6 n 6 200 et U1 = 42

7 / 13 8 / 13
Remplissage de la matrice Attributs

’Range, ’First, etc. s’appellent des attributs.


L’accès à une case s’écrit
Premiere_Mat(indice_ligne, indice_colonne) . Attribut Signification
’First Indice de la première case d’un tableau
Si on veut remplir toutes les cases, on utilise naturellement deux ’Last Indice de la dernière case d’un tableau
boucles for : ’Length Nombre de cases d’un tableau

for L in Premiere_Mat’Range(1) loop ’First(1) Indice de la première ligne d’une matrice


for C in Premiere_Mat’Range(2) loop marche aussi pour ’Last(1) et ’Length(1)
Premiere_Mat(L, C) := L + C ;
’First(2) Indice de la première colonne d’une matrice
end loop ;
end loop ; marche aussi pour ’Last(2) et ’Length(2)

’Range ’First .. ’Last


(Dessin de l’exécution)
’Range(1) ’First(1) .. ’Last(1)
’Range(2) ’First(2) .. ’Last(2)

9 / 13 10 / 13

Encore des questions La CNIL

Loi du 6 janvier 1978 , “informatique et libertés”


sur les données nominatives
+ Peut-on faire un tableau contenant autre chose que des entiers ?
www.cnil.fr
type Des_Moos is array (Integer range <>) of Float ;
Le droit à l’information
type Des_Moos is array (Integer range <>) of un_type_quelconque ;
Le droit d’opposition
Le droit d’accès
+ L’indice du tableau (Integer range <>) peut-il être un réel ? Le droit de rectification
Non, ça doit être un entier (ou au moins un intervalle énumérable fini)
En cas de non-respect, la loi (code pénal) prévoit jusqu’à 5 ans
d’emprisonnement et 300 000 e d’amende

11 / 13 12 / 13

Vous aimerez peut-être aussi