Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 3/Solution/fr: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Basic Pascal Tutorial/Chapter 3/Solution/fr

OldNewLine
1+[[Basic Pascal Tutorial/fr|Tutoriel de Pascal Objet]] : Structures de contrôle / **Solutions des exercices**
2+
3+### Suite de Fibonacci
4+
5+``` pascal
6+(* Auteur: Tao Yue
7+ Date: 19 July 1997
8+ Description:
9+ Trouver les dix premiers nombres de Fibonacci
10+ Version:
11+ 1.0 - version originale
12+*)
13+
14+program Fibonacci;
15+
16+var
17+ Fibonacci1, Fibonacci2 : integer;
18+ temp : integer;
19+ count : integer;
20+
21+begin (* Main *)
22+ writeln ('Les 10 premiers nombres de Fibonacci sont:');
23+ count := 0;
24+ Fibonacci1 := 0;
25+ Fibonacci2 := 1;
26+ repeat
27+ write (Fibonacci2:7);
28+ temp := Fibonacci2;
29+ Fibonacci2 := Fibonacci1 + Fibonacci2;
30+ Fibonacci1 := Temp;
31+ count := count + 1
32+ until count = 10;
33+ writeln;
34+
35+ (* Bien sûr, vous pouvez utiliser une boucle FOR ou une boucle WHILE
36+ pour résoudre le problème. *)
37+
38+end. (* Main *)
39+```
40+
41+### Puissances de deux
42+
43+``` pascal
44+(* Auteur: Tao Yue
45+ Date: 13 July 2000
46+ Description:
47+ Affiche toutes les puissances de deux jusqu'à 20000, 5 par ligne
48+ Version:
49+ 1.0 - version originale
50+*)
51+
52+program PowersofTwo;
53+
54+const
55+ numperline = 5;
56+ maxnum = 20000;
57+ base = 2;
58+
59+var
60+ number : longint;
61+ linecount : integer;
62+
63+begin (* Main *)
64+ writeln ('Puissances de ', base, ', 1 <= x <= ', maxnum, ':');
65+ (* initialisation de la boucle *)
66+ number := 1;
67+ linecount := 0;
68+ (* Boucle *)
69+ while number <= maxnum do
70+ begin
71+ linecount := linecount + 1;
72+ (* Imprime une virgule et un caractère d'espace sauf pour le premier
73+ nombre de la ligne *)
74+ if linecount > 1 then
75+ write (', ');
76+ (* Affiche le nombre *)
77+ write (number);
78+ (* Imprime une virgule et va à la prochaine ligne si c'est
79+ le dernier nombre de la ligne sauf si c'est le dernier
80+ de la série *)
81+ if (linecount = numperline) and not (number * base > maxnum) then
82+ begin
83+ writeln (',');
84+ linecount := 0
85+ end;
86+ (* Incrémente le nombre *)
87+ number := number * base;
88+ end; (* while *)
89+ writeln;
90+
91+ (* Ce programme peut aussi être écrit avec une boucle REPEAT..UNTIL. *)
92+
93+end. (* Main *)
94+```
95+
96+Observez que j'ai utilisé trois constantes : la base, le nombre de puissances à afficher sur chaque ligne et la borne supérieure. Cela garantit que le programme sera facilement adaptable dans le futur.
97+
98+Utiliser des constantes plutôt que des littéraux est une bonne habitude de programmation. Quand vous écrivez des programmes vraiment longs, vous ferez référence à certains nombres des milliers de fois. Si vous les codez en dur, vous aurez à les rechercher tous. Mais vous pouvez utiliser la même valeur dans un contexte différent, donc vous ne pouvez pas rechercher/remplacer globalement. L'emploi de constantes rend donc plus simple l'extension du programme.
99+
100+Notez aussi que j'ai employé des types `longint` pour la variable *number*. C'est parce que pour faire échouer les tests `number <= 20000`, `number` doit atteindre `32768`, la prochaine puissance de deux après `16384`. Cela dépasse la plage du type entier : `-32768` to `32767` (essayez sans `longint` et regardez ce qui se passe).
101+
102+---
103+*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 3/Solution/fr", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history