Auris Solutions : Cabinet de Conseil en Stratégie Numérique

Cours d’algorithmique – Programmation en Turbo Pascal – VIII) Les exercices

VIII.1. Exercices sur le premier cours

*Écrire un petit programme qui gère les 3 notes de 4 élèves. Ces notes seront demandées à l’utilisateur du programme. Pour chaque élève, calculer la moyenne des trois notes. Afficher cette moyenne arrondie (comparer les fonctions ROUND(x) et TRUNC(x)). Calculer la moyenne des notes, la moyenne des moyennes et la moyenne des moyennes arrondies.

Récrire le programme de façon à avoir le moins de variables possibles.

* Écrire un programme dont une variable contient les lettres de l’alphabet (en minuscule). Interroger l’utilisateur pour qu’il entre un nombre n et afficher le message suivant :

‘La ‘n’ième lettre de l’alphabet est’ ?

* Écrire un programme qui demande à l’utilisateur une lettre et qui renvoie la place de cette lettre dans l’alphabet (on utilisera pour cela la fonction ord qui renvoie la valeur ASCII d’un caractère).

Si x est une variable caractère, que fait CHR(ORD(x)) ?

VIII.2. Exercices sur les IF THEN ELSE

Correction du III.1.g. sur tri de 3 nombres N1, N2, N3.

IF N1>N2

THEN

BEGIN

IF N2>N3

THEN N1>N2>N3

ELSE BEGIN

IF N1>N3

THEN N1>N3>N2

ELSE N3>N1>N2

END

END
ELSE

BEGIN

IF N1>N3

THEN N2>N1>N3

ELSE

BEGIN

IF N2>N3

THEN N2>N3>N1

ELSE N3>N2>N1

END

END
VIII.3. Programme pile_face_menteur

program pile_face_menteur ;

var

HCapital, OCapital,Odiff: integer;

HReponse,HControle,OChoix: char;

begin

randomize;

HCapital:=10; OCapital:=10;

repeat

if random(2)=0 then OChoix:=’p’ {0 ou1}

else OChoix:=’f’;

write (‘Ai-je choisi pile, ou face (p/f) ? ‘) readln(HReponse);

if (HReponseOChoix) or (random(3)=0) then

begin                                {pas trouvé ou ordinateur triche}

writeln(‘… c »est faux !’);

write(‘… contrôlez-vous (o/n) ? ‘) ; readln(HControle);

if (HControle=’o’) then

begin                         {ordinateur a triché}

if (HReponse=OChoix) then

begin

writeln (‘… J »avais menti… Je vous donne deux points.’);

Odiff:=-2

end

else

begin                   { ordinateur a triché }

writeln (‘… J »étais sincère… Je vous prends deux points.’);

Odiff:=2

end
end

else

begin                            { utilisateur ne vérifie pas }

writeln(‘… C »est plus prudent… Je vous prends donc un point…’);

Odiff:=1

end
end

else

begin

writeln(‘…Vous avez raison… Je vous donne un point.’);

Odiff:=1

end;

OCapital:=OCapital+Odiff; HCapital:=HCapital-Odiff;

writeln(‘… Il vous en reste ‘,HCapital, ‘… J »en ai ‘,OCapital, ‘.’),
until OCapital*HCapital0) then writeln(‘J »ai gagné!’);

else writeln(‘Mais rira bien qui rira le dernier !’);

end.

VIII.4. Exercice sur les tableaux

* Tri bulle

Soit « l’algorithme » de tri suivant :

Répéter jusqu’à ce que l’on n’ait fait aucune permutation dans le tableau.

Comparer deux éléments consécutifs du tableau en partant du début et si le second est plus petit que le premier alors les inverser.

Incrémenter d’un indice vers la fin du tableau et recommencer la comparaison.

Fin.

Exemple :

1 5 0 2

10 on permute, ce qui donne

1 0 5 2

5
On recommence

1>0 on permute, ce qui donne

0 1 2 5

1
Ce qui peut s’écrire :

variable

T : tableau ;

i : entier ;

Fini : booléen ;

Début

Fini := Vrai ;

Répéter

Pour i:=début_tableau à fin_tableau faire

Si (T[i] > T[i+1] Alors

inverser T[i] et T[i+1] ;

Fini:= Faux ;

Fsi

Fait
Jusqu’à Fini=Vrai

Afficher T ;
Fin.
Écrireun programme Pascal réalisant ce tri.

*Tri par section

Pour tous les indices du tableau à partir de l’indice 2 Faire sauvegarder T[indice_courant] dans une variable x ;

initialiser un second indice j à indice_courant – 1 ;

Tant que (x0) Faire

Aucun commentaire jusqu'à présent.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *


_____________


Avant d'être uberisé,
apprenez à décoder les

17 règles de l'économie numérique


Catégories

Nous respectons la RGPD