INSA Toulouse 1A Algorithme ADA Cours 2-2

Embed Size (px)

Citation preview

  • 8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 2-2

    1/3

    Algorithmique UV2Cours 2

    Didier Le Botlan

    [email protected]

    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