Vous êtes sur la page 1sur 9

Faculté des Sciences Université Libre de Bruxelles

Année académique 1997-1998

Informatique Exercices: énoncés

E. Kestemont: Informatique - Exercices

Notes rédigées par Eddy Kestemont

- 2 -

7 août 1997

INTRODUCTION

Ce fascicule reprend les énoncés proposés aux séances d'exercices et séminaires ainsi que les sujets qui ont été suggérés dans le passé comme travaux facultatifs. On trouvera également l'ensemble des questions posées aux différents examens écrits depuis que le cours d'Informatique est devenu obligatoire pour la majo- rité des sections de la Faculté des Sciences. Dans une première partie nous donnons tous les énoncés. Les solutions aux problèmes et les réponses aux questions d'examens sont regroupées dans une seconde partie.

Les exercices proprement dits sont ceux repris dans l'application "Le langage Pascal" qui se trouve à disposition sur les ordinateurs Macintosh de la salle de travaux pratiques. Pour ces exercices, nous donnons tout d'abord l'ensemble des énoncés pour permettre aux étudiant(e)s d'y réfléchir, de tenter de les ré- soudre sans être influencés par la lecture des solutions proposées. Toutefois, pour faciliter la lecture, nous redonnons l'énoncé avant chaque solution; celle-ci reprend non seulement l'algorithme mais aussi le programme PASCAL corres- pondant avec éventuellement une ou des variantes et également les données nécessaires à son exécution.

Toutes les solutions proposées ne sont pas commentées autant que nous l'au- rions voulu!

On soumettra toutes les solutions proposées à une critique attentive

pouvant n'être correctes que dans certaines situations, pour des ensembles par- ticuliers de données.

certaines

Nous accueillerons volontiers les remarques, corrections que les lecteurs vou- dront bien formuler.

I. ENONCES

A. Algorithmes et programmes

a. Instructions simples

1. Ecrire un algorithme et le programme correspondant qui écrit 5 et 7

2. Lire deux entiers, écrire leur somme et leur différence.

N.B.: la lecture peut se faire soit à partir du clavier du micro-ordinateur, soit à partir d'un fichier préalablement créé à partir d'un autre logiciel (traitement de

texte, tableur, programme pascal

)

et enregistré sur disque dur ou disquette.

E. Kestemont: Informatique - Exercices

- 3 -

7 août 1997

b. Boucles

3. Lire des nombres entiers un par un, écrire leur valeur absolue jusqu'au

dernier nombre du fichier qui est 0 (valeur sentinelle).

4. Ecrire les dix premiers nombres entiers

5. Ecrire les dix premiers nombres impairs.

6. Idem mais écriture de 20 à 4

7. Ecriture des nombres impairs de 3 à 17

8. Lire un nombre entier qui correspond au nombre d'étudiants qui ont pré-

senté un examen. Lire ensuite une cote (comprise entre 0 et 20) pour chaque étudiant. Calculer la moyenne et l'écart type

remarque: l'écart type est la racine carrée de <x 2 > - <x> 2 valeur moyenne

9. Lire sur un fichier les cotes d'étudiants (comprises entre 0 et 20), calculer la

moyenne et l'écart type. La valeur sentinelle est -1.

représente la

où <

>

10. Ecrire la solution de l'équation du premier degré A x + B = 0 pour toutes

les valeurs de A et de B comprises entre 1 et NA d'une part, 1 et NB d'autre part.

11. Tabulation de la fonction sin(x) pour x compris entre 0 et 2 p .

12. Ecrire un programme qui tabule les fonctions sin(x), cos(x), et la valeur de

1-cos 2 x - sin 2 x pour 1000 valeurs de x allant de 0 à p /2.

c. Alternatives

13. Ecrire un algorithme qui lit deux nombres et écrit la somme s'ils sont tous

les deux positifs et le produit s'ils sont tous les deux négatifs

14. Ecrire un algorithme qui évalue la variable booléenne OK qui prend la

valeur "vrai" si deux nombres lus sont plus grands que 15 et si un troisième nombre lu est positif. L'algorithme écrira la valeur de OK.

15. Ecriture des multiples de 4 jusque 100 sauf 24

16. Lire une suite de nombres. Ecrire la valeur du plus petit et celle du plus

grand. La valeur sentinelle est - .

17. Ecrire le programme Pascal qui lit un nombre réel et l'écrit s'il est positif

18. Ecrire un programme qui lit une cote (entier, sur 20) et écrit "la plus grande distinction" si elle est supérieure ou égale à 18, "grande distinction" si elle est égale à 16 ou 17, "distinction" si elle vaut 14 ou 15, "satisfaction" si elle

E. Kestemont: Informatique - Exercices

- 4 -

7 août 1997

est égale ou supérieure à 10 et inférieure à 14. Si elle est inférieure à 10, le programme écrira "ajourné".

19. Lecture des nombres n1 et n2 et écriture des nombres de n1 à n2, sauf les

multiples de 3 et les multiples de 5.

20. Ecrire la solution de l'équation du premier degré A x + B = 0 pour toutes

les valeurs de A et de B comprises entre 1 et NA d'une part, 1 et NB d'autre part sauf lorsque A est égal à B

21. Lire un code opératoire (qui peut prendre les valeurs 1 à 4) et deux

nombres entiers. Suivant la valeur du code 1, 2, 3 ou 4, effectuer respective- ment l'addition, la soustraction, la multiplication ou la division entière des deux nombres.

Recommencer l'évaluation jusqu'au moment où le code opératoire prend la va- leur 0.

22. Ecrire un algorithme (et le programme) qui lit un nombre d'articles

(entier), le prix unitaire de l'article (réel), calcule le prix total, tenant compte d'un taux de tva de 19,5% et d'une réduction de 20% si le montant hors taxe est supérieur à 10000 francs, une réduction de 5% si le montant hors taxe est compris entre 5000 et 10000 francs; si le montant est compris entre 0 et 5000 francs, il n'y a pas de réduction.

L'algorithme écrira le prix unitaire, le montant hors taxe, le montant toute taxe comprise réduction déduite!

d. Vecteurs

23. Ecrire une procédure qui recherche dans un vecteur de dimension N, l'in-

dice de la composante contenant la valeur X.

Considérer d'abord le cas où l'on est sûr que X se trouve dans le vecteur, puis le cas général.

24. Ecrire un programme qui lit les composantes d'un vecteur, appelle une

procédure évaluant la norme du vecteur et écrit cette norme.

25. On dispose sur un fichier de couples de vecteurs dans un espace tridimen-

sionnel. Les données se présentent sous forme de lignes de 6 valeurs réelles correspondant respectivement aux composantes x, y, z du premier vecteur et des composantes x, y, z du second vecteur.

a. Ecrire une fonction qui calcule le produit scalaire de deux vecteurs.

b. Ecrire une procédure qui calcule le produit vectoriel de deux vecteurs.

c. Ecrire un programme qui lit les données, appelle la fonction et la procé- dure et écrit les résultats.

de la ma-

26. Définissons la relation d'ordre entre vecteurs de dimension N

nière suivante:

V1

<

V2

ssi pour tout i de 1 à N

V1 i < V2 i

V1

=

V2

ssi pour tout i de 1 à N

V1 i = V2 i

V1

> V2

ssi pour tout i de 1 à N

V1 i > V2 i

E. Kestemont: Informatique - Exercices

- 5 -

7 août 1997

Ecrire une fonction à valeur (pluspetit, égal, plusgrand, indéfini) pour tester la relation entre deux vecteurs. La fonction prendra la valeur "indéfini" si aucune des trois relations n'est vérifiée.

e. Récurrences

27. Ecrire la suite des nombres de Fibonacci donnés par la récurrence

T n = T n-2 + T n-1

avec

T 0 = 0

et

T 1 = 1

les nombres écrits seront inférieurs à 100.

28. Lire deux nombres entiers naturels et calculer leur PGCD par la méthode

d'Euclide.

Soit P le plus petit et G le plus grand; remplaçons le couple (P,G) par (P,G-P) et ensuite le plus grand de cette nouvelle paire par sa différence avec le plus petit. On recommence ainsi l'opération jusqu'à ce que les deux nombres de la paire soient égaux: ils fournissent le PGCD.

29. Ecrire un programme qui lit le degré d'un polynôme, puis les coefficients

de celui-ci (polynôme sous la forme a n x n +a n-1 x n-1

Le polynôme sera évalué pour diverses valeurs de la variable, valeurs qui se- ront également lues, jusqu'à une valeur sentinelle égale à -1000.0.

+a 0 ).

f. Caractères

30. Lire un caractère sur un fichier. Lire ensuite successivement des caractères

jusqu'au moment où on retrouve le premier caractère. Ecrire son numéro

d'ordre.

31. Ecrire une fonction dont les paramètres sont un mot et un caractère, fonc-

tion qui prend comme valeur la position du caractère dans le mot.

NB: le dernier caractère du mot est un blanc; le mot est implémenté sous forme d'un vecteur à 20 composantes.

32. Compter le nombre de mots dans une phrase terminée par un point.

33. Ecrire une fonction à valeur entière qui convertit une chaîne de caractères

(string) représentant un nombre entier en un entier. Le string est fourni sous forme de vecteur. La fin du string est un caractère "blanc".

34. Ecrire une fonction à valeur réelle qui convertit une chaîne de caractères

représentant un nombre réel en un réel. Le string est fourni sous forme de vecteur. La fin du string est un caractère "blanc". La chaîne représentant le nombre est donnée sous la forme suivante:

"signe""partie entière"."partie décimale"

E. Kestemont: Informatique - Exercices

- 6 -

7 août 1997

Le signe peut être + ou -, ou peut être absent, la partie entière précède le point décimal (!). Il n'y a pas de blanc dans la chaîne. exemple de donnée: -45.832 Supposer que les données sont correctes. La fonction prendra la valeur corres- pondant à la chaîne.

35. Ecrire une procédure qui transforme une chaîne de caractères représentant

un entier positif en une chaîne de caractères représentant son complément. Nous appellerons complément de 274, l'entier 726!

36. On lit une série de chaînes (strings) se présentant sur un fichier de la ma-

nière suivante:

§chaîne1§chaîne2§texte

"§" est un délimiteur; "chaîne1" est un string de caractères de longueur plus grande ou égale à 1; "chaîne2" est un string de longueur plus grande ou égale à 0; "texte" est un string représentant un texte se terminant par un point. Il s'agit d'écrire une procédure qui remplace dans le "texte", toutes les occur- rences de "chaîne1" par "chaîne2". "chaîne1" et "chaîne2" n'ont pas nécessairement la même longueur. On supposera que le vecteur contenant "texte" initialement est suffisamment grand que pour pouvoir le contenir après transformation.

exemple de donnée:

§est§etait§ce chien est grand et il est laid.

transforme le texte "ce chien est grand et il est laid.", en "ce chien etait grand et il etait laid."

On suppose que, avant l'appel à la procédure, la chaîne de caractères figurant sur le fichier de données a été lue et placée dans trois vecteurs de caractères, respectivement chaîne1 qui contient "chaîne1§", chaîne2 qui contient "chaîne2§" et texte contenant "texte."

g. Tables

37. Ecrire une procédure qui insère une information dans une table non triée.

38. Ecrire une procédure qui tasse une table non triée. Ecrire le programme

Pascal correspondant.

39. Ecrire une procédure qui tasse une table triée. Ecrire le programme Pascal

correspondant.

h. Entités

40. Ecrire une procédure qui tasse une table triée dans le cas où la table est un

annuaire téléphonique défini de la manière suivante:

Type

abonné est entité composée de

E. Kestemont: Informatique - Exercices

- 7 -

7 août 1997

fentité

nom: vecteur 1 à 20 de car

numéro: 1000

adresse: vecteur 1 à 100 de car

9999

annuaire = vecteur 1 à n d'abonné

Variable

table: annuaire

Une information de la table est considérée comme "vide" lorsque le champ "nom" contient une chaîne de 20 caractères blancs ' '.

41. Ecrire des procédures qui permettent d'effectuer les additions et soustrac-

tions de nombres complexes.

procédure addition (x,y:complexe Ø , z: complexe ) procédure soustraction (x,y:complexe Ø , z: complexe )

et la fonction qui calcule le module du nombre complexe z:

fonction module(z: complexe) à valeur réelle

Les nombres complexes seront implémentés sous forme d'entités à deux champs

type

complexe est entité composée de Re, Im: réel

fentité

42. Ecrire des fonctions, de type complexe, réalisant les mêmes opérations

d'addition et de soustraction de nombres complexes!

fonction addition (x,y:complexe): complexe fonction soustraction (x,y:complexe): complexe

i. Listes

Dans les exercices qui suivent, on considère des entités à deux champs et des pointeurs définis de la manière suivante:

pve

élément est entité composée de info: entier ptr: pve fentité.

est pointeur vers élément

43. Ecrire un algorithme qui crée une liste composée de n entités, le nombre n

étant lu sur un fichier. Le champ info contiendra le numéro d'ordre de l'entité multiplié par 10. Ecrire le programme Pascal correspondant.

44. Ecrire une procédure qui détermine la longueur d'une liste

procédure longueur ( tête : pveØ ; l : entier )

E. Kestemont: Informatique - Exercices

- 8 -

7 août 1997

où tête est le pointeur qui donne accès à la liste, et l est la longueur (le nombre d'entités) de la liste.

45. Ecrire une procédure qui insère une information en fin de liste.

46. Ecrire une procédure qui insère une information en tête de liste.

47. Ecrire une procédure qui, à partir d'une suite aléatoire de caractères, crée

une liste triée.

Les entités constituant la liste contiendront un champ "info" reprenant le carac- tère et un champ pointeur vers l'élément suivant de la liste. On définira les types suivants

pva pointeur vers élément élément entité composée de nom: car suivant: pva fentité

48. On désire implémenter un répertoire de noms et de numéros de téléphone

sous forme de listes (car on ne sait pas a priori combien d'informations seront contenues dans le répertoire).

Afin de pouvoir accéder relativement rapidement à un abonné particulier, on crée un vecteur à 26 composantes de pointeurs vers des entités (la première composante donne accès à une liste contenant les noms commençant par la lettre A, la deuxième composante du vecteur donne accès à la liste des noms commençant par la lettre B, etc On suppose que la structure existe, et que dans chaque liste les noms sont triés par ordre alphabétique. On travaille avec des entités et pointeurs définis par

pva pointeur vers abonné

abonné entité composée de

nom: vecteur 1

20 de car

numéro: 1111 9999 suivant: pva fentité Le répertoire est donc

R vecteur 'a'

'z' de pva

La structure peut être visualisée de la manière suivante:

E. Kestemont: Informatique - Exercices

- 9 -

7 août 1997

On demande d'écrire une procédure qui renvoie le numéro de téléphone d'un abonné particulier (s'il

On demande d'écrire une procédure qui renvoie le numéro de téléphone d'un abonné particulier (s'il existe dans le répertoire)

procédure tel ( R: vecteur 'a'

'z' de pvaØ ,

personne: vecteur 1

numéro-de-tél: entier , trouvé: boo-

20 de carØ ,

léen )

49. On demande d'écrire une procédure qui renvoie le numéro de téléphone d'un abonné particulier (s'il existe dans le répertoire)

TABLE DES MATIERES

Introduction 3

I. Enonces

3

A. Algorithmes et programmes

3

a. Instructions simples

3

b. Boucles

4

c. Alternatives

4

d. Vecteurs

5

e. Récurrences 6

f. Caractères

6

g. Tables

7

h. Entités 7

i. Listes 8

E. Kestemont: Informatique - Exercices

- 10 -

7 août 1997