Ecole Informatique d'Orsay --- Pascal (module 101) --- 1995/96 ---
IUP1
Partiel
10 janvier 1996
3 pages --
Responsable : Emmanuel Waller --
Durée 2h20 --
Aucun document autorisé
Répondez aux questions sans aucun commentaire (sinon des
points seront retirés).
Le travail non demandé ne sera pas pris en compte (et
éventuellement des points seront retirés).
Le partiel se déroule en 2 parties : Exercices 1 à 5 sur table (2h, de 9h a
11h) ; puis interruption de 30 mn environ et Exercice 6 en salle
machines (20mn).
Les Exercices 1 et 2 sont obligatoires, c'est-à-dire que les
autres (3 à 5) ne seront pris en compte que si les Exercices 1 et 2
sont terminés (même s'ils ne sont pas corrects).
A la fin de la partie sur table, les copies seront ramassées et
l'Exercice 2.2 sera photocopié par l'enseignant
responsable. Vous utiliserez cette photocopie pour faire l'Exercice
6. Celui-ci sera ultérieurement testé automatiquement sur une
cinquantaine de tests par les enseignants.
Les points seront comptabilisés en fonction des tests passés
avec succès, et l'Exercice 2.2 n'apportera aucun point.
Exercice 1
Soit n > 0 un entier impair et soit t un tableau pascal de type
array [1..n] of a, où a est integer,
real ou boolean. On dit que t contient un palindrome si
pour tout i tel que 1 <= i <= (n - 1) / 2 on a t[i] =
t[n-1-i]. Exemples : 1 2 3 4 3 2 2 n'est pas un palindrome
(t[1] différent t[7]) ; true false true false true est un
palindrome.
Soit n > 0 un entier impair fixe et soit le type tab = array
[1..n] of boolean. On se propose dans cet exercice d'écrire un
programme utilisant une fonction testant si un tableau de type tab
contient un palindrome.
-
Ecrire une fonction prenant en entrée un tableau de type tab
et renvoyant un booléen : true si le tableau contient un
palindrome, false sinon.
-
Ecrire un programme complet qui remplira un tableau de type tab,
et utilisera la fonction pour afficher oui
s'il contient un palindrome et non sinon.
On supposera lors de la lecture que l'utilisateur ne fait pas d'erreur
et on ne fera donc aucune vérification ; la lecture devra être
faite dans le corps du programme principal et pas dans une
procédure.
Exercice 2
Soit n > 0 un entier, t un tableau de type array
[1..n] of integer, et k un entier, 0 < k < n. Le but de cet
exercice est de décaler t circulairement de k cases.
Exemples :
n = 5, t = 1 2 3 4 5, k =1 ; on obtient t = 5 1 2 3 4.
n = 5, t = 1 2 3 4 5, k =4 ; on obtient t = 2 3 4 5 1.
-
Ecrire en français un algorithme de décalage circulaire du
tableau t de k cases.
-
Ecrire le programme correspondant.
Vous devrez absolument respecter les conditions suivantes.
-
Vous utiliserez une seule variable tableau : t, et au total au plus 5
variables entières, dont k et i pour la lecture et
l'écriture.
-
Pour les besoins du test votre programme satisfera les points
suivants. Le non-respect de cette interface entraînera l'échec des
tests automatiques et par conséquent zéro à cette question.
-
n sera déclaré en constante égale à 10 ;
-
le programme débutera par la lecture de t exactement comme
suit.
for i := 1 to n do read(t[i]);
-
il terminera exactement par
for i := 1 to n do write (t[i], ' ');
writeln;
-
On supposera que l'utilisateur entre des données correctes et donc
aucune vérification ne sera faite.
Exercice 3
On suppose qu'on est déjà en train de travailler par l'éditeur
vi dans un fichier. Donner les commandes vi permettant de
se positionner respectivement en début et fin de ce fichier.
Exercice 4
-
On considère l'arborescence Unix suivante.
Donner les références relatives à partir de c4 de
(a) c1, (b) c2, (c) f2.
c1
/ \
c2 c3
/ \ / \
f1 f2 c4 f5
/ \
f3 f4
-
On considère les groupes Unix d'utilisateurs g1 = { Jules, Jim }
et g2 = { Jeanne }. La commande ls -l sur le fichier f
de Jim donne rw---xr-x.
- Qui peut faire quoi sur ce fichier ?
- Donner la commande que doit taper Jim pour autoriser les
utilisateurs de son groupe à écrire dans f.
Exercice 5
On se propose de déterminer ce qu'écrit le programme
suivant en fonction de a et b.
-
Donner ce qu'il écrit pour
(a) b = -1 et a quelconque ;
b = -2 et (b) a=1, (c) a=0, (d) a=-1 ;
b = -3 et (e) a=1, (f) a=0, (g) a=-1
-
Donner le cas général en fonction de a et b.
program x;
var a, b, i : integer;
begin
readln(a,b);
for i:= -2 downto b do
begin
write(a);
repeat
a := a-b;
write(a);
until b-a <= 0;
end;
write(a);
end.
Exercice 6
Taper sur machine à l'aide de l'éditeur vi obligatoirement
le programme de l'Exercice 2.2 exactement comme
sur votre copie.
Toute différence (même un point-virgule par exemple) aura pour
conséquence immédiate zéro.
La première ligne devra comporter en commentaires vos nom et
prénom.
A l'heure indiquée par l'enseignant responsable, envoyer a waller le fichier contenant votre programme. Seul le premier fichier
reçu sera pris en compte.