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 (x_{i})_{i=1...n}; à la fin ces entiers sont remplacés par n entiers (y_{i})_{i=1...n} tels que

∀i = 1...n, y_{i} = ∑_{j=1}^{i} x_{j}

.

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.