retour sommaire des sujets logo ULP IUP 2 Formation Continue
Examen d’informatique
Première session 2004

Durée : 2h. Notes de cours personnelles (manuscrites, sorties imprimante ou polys), TD et TP autorisés. Calculatrices autorisées. Autres documents (dont livres) interdits. Ce document comporte deux pages.

Remarques : En cas d’informations insuffisantes, vous pouvez faire toute supposition qui vous arrange, à condition qu’elle ne contredise ni ce que j’ai imposé dans le sujet, ni le bon sens. Les questions sont indépendantes. Si vous n'arrivez pas à retrouver la syntaxe exacte d'une fonctionnalité du C, expliquez en français ce que vous voulez faire.

On dispose d'un panneau lumineux rectangulaire composé de petits voyants lumineux régulièrement répartis sous forme de 20 lignes de 200 voyants. On peut, sur ce panneau, afficher des messages (textes) avec divers effets (question 5), en particulier faire défiler le texte (question 4). On peut aussi afficher des icônes ou faire de petits dessins (questions 2 et 3). Le panneau est relié à n'importe quel ordinateur via son port série. Vous allez donner un coup de main à l'équipe de développement du logiciel. Ils ont déjà écrit trois fonctions de commande de base des voyants. Vous les supposerez déjà connues par votre système, vous pourrez vous en servir (les appeler) où bon vous semble.

On donne en argument à ces fonctions un numéro de ligne (entre 0 et 19) et un numéro de colonne (entre 0 et 199) désignant un voyant. La première allume ce voyant, la seconde l'éteint, la troisième retourne 1 si le voyant est allumé, 0 s'il est éteint. Voyez ci-après leurs entêtes :

	void allume(int ligne, int colonne)
	void éteint(int ligne, int colonne)
	int teste(int ligne, int colonne)

Vous allez créer d'autres fonctions qui seront utilisées dans le programme définitif (mais n'avez pas besoin d'écrire le programme principal). Si vous avez du mal à écrire des fonctions, écrivez simplement les instructions qui effectuent la tâche demandée.

Question 1 : Ecrivez un sous-programme qui éteint tout l'afficheur. (rappel : un sous-programme est une fonction ne retournant rien).

Question 2 : Ecrivez un sous-programme qui reçoive en argument trois entiers nommés L,C1 et C2, et qui allume la ligne (horizontale) à la hauteur L, à partir de la colonne C1 (comprise) jusqu'à la colonne C2 (comprise).

Question 3 : Pour allumer une ligne inclinée, le problème est un peu plus complexe. Nommons L1,C1 les coordonnées du point de départ, et L2,C2 celles du point final. Notons DL la différence L2-L1 et DC la différence C2-C1. On se place dans le cas où DL et DC sont positifs, non nuls et DL<DC (vous n'avez pas besoin de comprendre pourquoi). Soit N l'entier le plus proche de DC/DL, pour tracer la ligne inclinée il suffit d'allumer horizontalement N voyants à partir du point de départ (L1,C1), puis d'en allumer N sur la ligne suivante, etc... jusqu'à ce qu'on arrive en colonne C2. Ecrivez un sous-programme (recevant en arguments 4 entiers) permettant de tracer une telle ligne inclinée.

Question 4 : Ecrivez un sous-programme qui reçoive en argument un entier entre 0 et 19 correspondant à un numéro de ligne, et qui décale tous les voyants de cette ligne d'un cran (le premier prend l'état du second, de second prend l'état du 3ème, etc..., l'avant dernier l'état du dernier, et pour finir le dernier prend l'état du premier). Ecrivez un second sous-programme qui décale toutes les lignes lignes du panneau lumineux.

Question 5 : Pour tracer des lettres ou petites icônes de hauteur 20 voyants et de largeur 10, on a prévu d'utiliser un tableau de 20 entiers par caractère. Chaque entier représente en binaire l'état (allumé ou éteint) d'une ligne de 10 voyants. On désire pouvoir retourner les lettres. Il suffit pour cela d'échanger le premier et le dernier entier, le second et l'avant-dernier,etc..

Définissez le type « lettre » qui est correspond à ce tableau. Puis écrivez une fonction qui reçoive en argument une lettre, et la retourne.


pour retourner au sommaire des sujets d'examen, cliquez ici

Patrick TRAU, ULP - IPST juin 04