14
TD3 2 IMACS [email protected] Romaric GUILLERM Algo-Prog en Ada

TD3 2 IMACS [email protected] Romaric GUILLERM Algo-Prog en Ada

Embed Size (px)

Citation preview

Page 1: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD32 IMACS

[email protected]

Romaric GUILLERM

Algo-Progen Ada

Page 2: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3 - Récursivité

Page 3: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3

Arbre d’appel pour n=3 et p=2 :

Combinaison(3,2)

Combinaison(2,2)Combinaison(2,1)

Combinaison(1,1)Combinaison(1,0)

Resu=1

Resu=1

Resu=1

Resu=2

Resu=3

Page 4: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

Somme( )

TD3

8 4 5

8 + Somme( )

4 5

4 + Somme( )

5

5 + Somme()

5

9

17

0

17

Page 5: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3

Rappel sur le type « String » :

C’est un tableau non-contraint de caractères

Type String is array(Positive range <>) of Character;

On a accès aux attributs : first, last, length, …

Page 6: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3

Version itérative :

Si le mot a une longueur de 0 ou 1 alors on retourne « true »

Sinon : On calcul la demi longueur du mot : demi Pour i de 0 à demi-1

Si les caractères aux positions mot’first+i et mot’last-i sont différents alors on retourne « false »

Fin du si Fin de la boucle pour On retourne « true » si on n’a encore rien

retourné Fin du si

Page 7: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3

Version itérative :

Page 8: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3

Version récursive :

Si le mot a un longueur de 0 ou 1 alors on retourne « true »

Sinon : Si les caractères en début et en fin du mot sont

différents alors on retourne « false » Sinon :

On retourne le résultat de la détermination de palindrome sur le mot privé de ses premier et dernier caractères

Fin du si Fin du si

Page 9: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3

Version récursive :

Page 10: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3 Palindrome :

Écrire un programme qui saisit un mot fourni par l'utilisateur et affiche s'il s'agit ou pas d'un palindrome.

Page 11: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3

Page 12: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3 L’idée :

H H H H

H . . H

H . H H

H . H H

*

H H H H

H . H

H . H H

H . H H

* *

1

2

3

4

1

H H H H

H H

H . H H

H . H H

**

1

false 2

false

H H H H

H H

H . H H

H . H H

**

H H H H

H H

H . H H

H . H H

**

3

false4

false

H H H H

H H

H . H H

H . H H

**

false

2true

H H H H

H . H

H . H H

H . H H

**

1

false

H H H H

H . H

H H H

H . H H**

2

true

H H H H

H . H

H H H

H . H H**

*

true

A afficher !

Page 13: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3 Algorithme :

Si la position donnée est différente de " . " alors : on retourne « false »

Sinon si la position donnée se trouve sur un bord du labyrinthe alors : on marque cette position de " * " on affiche le labyrinthe on retourne « true »

Sinon on marque la position courrante P avec " * " on cherche la sortie à partir de la case située à l’est de P Si on n’a pas trouver de sortie alors :

on cherche la sortie à partir de la case située au sud de P Si on n’a pas trouver de sortie alors :

on cherche la sortie à partir de la case située à l’ouest de P Si on n’a pas trouver de sortie alors :

on chercher la sortie à partie de la case située au nord de P Fin du si

Fin du si Fin du si on retourne le résultat de notre recherche dans les différentes directions

Fin du si

Page 14: TD3 2 IMACS guillerm@laas.fr Romaric GUILLERM Algo-Prog en Ada

TD3