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.

  1. 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.

  2. 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.

  1. Ecrire en français un algorithme de décalage circulaire du tableau t de k cases.

  2. Ecrire le programme correspondant. Vous devrez absolument respecter les conditions suivantes.

    1. 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.

    2. 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.

      1. n sera déclaré en constante égale à 10 ;

      2. le programme débutera par la lecture de t exactement comme suit. for i := 1 to n do read(t[i]);

      3. il terminera exactement par for i := 1 to n do write (t[i], ' '); writeln;

    3. 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

  1. 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
    

  2. 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.

    1. Qui peut faire quoi sur ce fichier ?

    2. 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.

  1. 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

  2. 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.