Introduction à l'algorithmique
Le routard galactique deDouglas Adams
Gilles Dowek
Les 4 mots à retenir :
1. Algorithme : suite d’opérations non ambiguës qui résout un problème (~ 4000 ans)
2. Machine : (~70 ans)
3. Langage : - impératif / procéduraux (C, Pascal, ADA, Maple, Python) fonctionnels ((OCA)ML) orienté objet (Java, C++)
4. Information : compression sans perte / avec perte
Variable/affectation : a := 5, a prend la valeur 5 b := 3.1 Le séparateur est le point (=virgule) ! a := b a := 5+8 a := b+1 a := a + 1 a est une variable et a est une valeur a,b := b,a pour inverser les variables
Condition (pour Maple): x := 5 : // les : permettent de faire le calcul mais de ne pas afficher le résultat if x > 0 //soit vrai, soit faux (booléen) then printf(« La variable est strictement positive ») ; else printf (« La variable est négative ou nulle ») ; end if ;
Boucle :
La boucle pour for i from 1 to 10 do print(i) end do
La boucle tant que i := 1 while (i= x^2 f(5) 25 f’(x) 2x
Version itérative : etoiles1 := proc(n) \\n est le même dans les deux cas for i from 1 to n do print (“*”) end do end proc
etoile1(5) \\paramètre effectif
Paramètre formels : f(x)dx=f(t)dt
Version récursive : etoile2 := proc(n) if n > 0 then printf(« * ») etoille2(n-1) end if end proc
etoile2(3) println() //passe à la ligne printf(« \n »)
Exemples : carre(n) triangle (n) triangle2(n) croix pour n pair i=colonne et j=ligne
*** * *** * *
*** ** ** *
*** *** * * *
Il faut mettre deux points après end do :
carre := proc(n) for i from 1 to n do for j from 1 to n do printf( “*” ) end do: println() end do: end proc:
2ème méthode :
carre2 := proc(n) for i from 1 to n do