Vous êtes sur la page 1sur 2

Exercices Dirigs Algorithmique et Programmation A1

Semaine 02 : du 5 au 10 Janvier 2004 Emmanuel Coquery Emmanuel.Coquery@inria.fr

Exercice 1 1. crire une fonction qui prends en argument un tableau dentiers et calcule son plus petit lment. 2. crire une fonction qui prends en argument un tableau dentiers et donne son plus grand et son plus petit lment. Suggestion : utiliser un tableau puis un record pour dnir le type correspondant au rsultat. Tester les fonctions sur des exemples. Exercice 2 1. crire une fonction qui dit si un tableau dentiers est un "sous-tableau" dun autre tableau dentiers . Ex. : (3,5,7) est sous-tableau de (0,1,3,5,7,8). 2. crire une fonction qui calcule la position de dpart dun tableau dans un autre sil est un sous-tableau et donne 0 autrement. Ex. : La position de dpart de (3,5,7) dans (0,1,3,5,7,8) est lindice de la troisime case. Tester les fonctions sur dautres exemples. Exercice 3 On souhaite travailler sur les reprsentations binaires de nombres compris entre 0 et 255. Plus prcisemment, on dnit un type Tab_Bits comme un tableau de 8 bits (indexs de 0 7) et lon souhaite pouvoir convertir un entier compris entre 0 et 255 en un Tab_Bits ainsi que le contraire. On veut de plus pouvoir afcher un tableau Tab_Bits et raliser la somme de deux reprsentations binaires. On utilise les dclarations suivantes : subtype Octet is Integer range 0..255; subtype Bit is Integer range 0..1; type Tab_Bits is array(0..7) of Bit; crire les fonctions suivantes : function Octet_Vers_Bits(Oc: Octet) return Tab_Bits is function Bits_Vers_Octet(T: Tab_Bits) return Octet is function Add_Tab_Bits(T1, T2: Tab_Bits) return Tab_Bits is sachant que : la fonction Octet_Vers_Bits doit convertir un octet en un tableau de bits ; on utilisera le fait que un nombre impair (i.e. X est impair si (X mod 2 = 1) ) a une reprsenation binaire qui se termine par 1 et que diviser un nombre par 2 revient dcaler sa reprsentation binaire dun cran vers la droite. la fonction Bits_Vers_Octet doit convertir un tableau de bits en un octet ; la fonction Add_Tab_Bits doit calculer la somme de deux reprsentations binaires ; on ne traitera pas le cas possible de dbordement.

Exercice 4 On souhaite crire un programme pour grer un carnet dadresse. Un carnet dadresse est un tableau de dentres. Chaque entre correspond un nom, un prnom, une adresse et un numro de tlphone. Le nom et le prnom sont des chanes de caractres dont on xera la longueur. Une adresse est compose dun numro dans la rue, dune description de la rue (qui est une chane de caractres) dun code postal et dun nom de ville (qui est aussi une chane de caractres). Un numro de tlphone est un tableau de 5 entiers compris entre 0 et 99. 1. Ecrire les dclarations de types ncessaires pour pouvoir grer un carnet dadresses. 2. Ecrire une fonction qui compte le nombre de personnes habitant dans une ville donne. 3. Ecrire une fonction qui extrait les numros de tlphone du carnet dadresse. Pour cela, on introduira un type tableau de numeros de telephones. 4. Ecrire une procedure qui afche une adresse. Ecrire ensuite une procedure qui afche toute les adresses dune mme personne (mme nom, mme prnom). 5. Ecrire une fonction qui tant donn un numro de tlphone renvoie le nom et le prnom de la personne correspondant, ou une exception si la personne ne possde ce numro. 6. Ecrire une procdure qui permet de saisir un numro de tlphone, une procedure qui permet de saisir une adresse, une procdure qui permet de saisir une personne et enn une procdure qui permet de saisir un carnet dadresse. 7. Ecrire un programme permettant dutiliser les fonctions ci-dessus pour grer un carnet dadresses.