Interrogation écrite

1

Que vaut l'expression booléenne ci-dessous ? Justifiez votre réponse.

( (0<1) OR False ) AND (True OR (9-3=3) )

2

Qu'affiche à l'écran le programme ci-dessous ? Attention à l'alignement des caractères.

PROGRAM Mystère;
CONST N = 4;
VAR i, j : INTEGER;
BEGIN
    FOR i := N DOWNTO 0 DO  Write('-');
    WriteLn;
    FOR i := N DOWNTO 0 DO
    BEGIN
        FOR j :=  i TO N DO Write(' ');
        FOR j := -i TO i DO Write('*');
        WriteLn;
    END;
END.

3

Qu'affiche à l'écran le programme ci-dessous ?

PROGRAM Message;
VAR Mot : STRING;
    n, i : INTEGER;
    t : CHAR;
BEGIN
    Mot := 'message';
    n := Length(Mot);
    FOR i := 1 TO n DIV 2 DO
    BEGIN
      t := Mot[n+1-i];
      Mot[n+1-i] := Mot[i];
      Mot[i] := t;
    END;
    WriteLn(Mot);
END.

4

Faire un programme qui calcule la somme des chiffres d'un nombre entier positif fourni par l'utilisateur. Utilisez pour cela les opérations DIV et MOD.


5

Faire une procédure qui modifie un tableau d'entiers pour y mettre les sommes partielles. Avant l'exécution de la procédure, ce tableau contient n entiers (xi)i=1...n ; à la fin ces entiers sont remplacés par n entiers (yi)i=1...n tels que

displaymath37

Cette procédure sera du type :

PROCEDURE SommesPartielles
    (VAR Suite : ARRAY[1..N] OF INTEGER);

6

Remplacez la boucle WHILE par une boucle FOR. On utilisera l'opération DIV. Le programme ne doit pas dépendre de la valeur de Max.

PROGRAMME Exemple;
CONST Max = 10;
VAR s, i : INTEGER;
BEGIN
    s := 0;
    i := 0;
    WHILE i <= Max DO
    BEGIN
        s := s + i*i;
        i := i + 3;
    END
END.

Vous pouvez aussi voir la version DVI.

Louis Granboulan
Fri Nov 22 11:45:21 MET 1996