Travaux pratiques en Pascal
Prise en main, affichages et boucles
Dans cette séance, on se familiarise avec l'environnement : l'éditeur de texte où l'on tape les programmes, l'enregistrement des programmes, les commandes de compilation et d'exécution.
On écrit notre premier programme, lequel se réduit à une instruction d'affichage, writeln. Puis, on y ajoute une variable et on compte jusqu'à 100 avec la boucle tant que. On recommence avec les boucles répéter et pour.
On teste ensuite jusqu'à combien Pascal sait compter en integer, on en déduit le codage utilisé pour les entiers.
Enfin, on imbrique deux boucles pour, en vue de produire des figures géométriques et des tables de multiplication.
Fichier Pascal reprenant ces différents exercices.
Procédures
On apprend à écrire des procédures et à les appeler dans le programme principal : les procédures sont nécessairement définies avant.
Les procédures peuvent posséder des paramètres, c'est-à-dire des variables qui sont utilisées dans la procédure mais auxquelles on donnera une valeur au moment où l'on utilisera cette procédure. Ces paramètres sont déclarés après le nom de la procédure entre parenthèses.
Par ailleurs, la procédure peut avoir des variables internes ; celles-ci sont déclarées juste avant le begin de la procédure. Ces variables sont entièrement gérées à l'intérieur de la procédure et n'ont aucun lien avec l'extérieur, en particulier avec le programme principal.
On utilise les procédures pour dessiner des formes géométriques : carrés et triangles, pleins ou creux.
Fichier Pascal contenant les procédures qui dessinent des figures.
Conjecture de Syracuse et HTML
Explications
Ce problème est apparu pour la première fois dans les années 30. Puis, à nouveau, à l'université de Syracuse (New York) dans les années 50. Aucune solution n'étant trouvée, le problème s'est propagé aux autres universités américaines. Dans le contexte de la guerre froide, on évoque (comme une plaisanterie ?) une manoeuvre russe pour paralyser la recherche américaine.
L'énoncé de ce problème est le suivant. On part d'un entier n auquel on fait subir une transformation :
- si n est pair, on le divise par deux ;
- si n est impair, on le multiplie par 3, et ajoute 1.
Puis, on recommence sur le résultat. Par exemple, en partant de n=10, on obtient :
Conjecture : quel que soit l'entier n, on finit par retomber sur 1.
Déroulement de la séance
On écrit le code qui permet de tester la conjecture pour un entier donné ; on calcule en même temps sa durée de vol, c'est-à-dire le nombre d'entiers rencontrés avant de trouver 1.
On généralise ce programme pour tester tous les entiers dans un intervalle d'entiers. Dans cet intervalle, on repère l'entier qui a la plus grande durée de vol.
Plutôt que de faire défiler les résultats à l'écran, on souhaite ensuite écrire ces résultats dans un fichier. Finalement, on ajoute du code HTML pour le document produit soit visible dans un navigateur.
Fichier Pascal qui teste la conjecture pour un intervalle d'entiers et qui produit une page HTML des résultats.
Fichier HTML, résultat de l'exécution de ce programme.
Productions de tableaux HTML
On commence par produire, à l'écran, un tableau qui comprend une liste d'entiers et la valeur de leurs carrés. Puis, on produit un document HTML présentant cette table des carrés. Pour cela, on utilise des procédures : l'une produisant l'en-tête d'un fichier HTML, l'autre la fin d'un fichier HTML.
On réutilise ces procédures pour produire un nouveau document HTML contenant cette fois une table de multiplication.
Enfin, on génère une page HTML montrant le dessin d'un carré creux, d'abord constitué d'étoiles, puis en utilisant cette image : .
Fichier Pascal qui produit des pages HTML et en particulier des tableaux.
Fichiers HTML résultat : table des carrés, table de multiplication, dessin d'un carré creux.
Tours de Hanoï
Fichier Pascal qui produit la solution au problème des tours de Hanoï.
Tableaux et enregistrement
Application aux promotions d'étudiants
Fichier Pascal avec des procédures qui travaillent sur un tableau de notes.
Fichier Pascal qui produit une page HTML par étudiant et une page d'index.
Application au cinéma
Fichier Pascal qui produit une page HTML par film et par acteur.