Laurent Cousot, Patrick Cousot, Radhia Cousot et Thibault Cousot

Premières leçons de programmation en Turbo-Pascal.

.ps.gz (11.2 Mb), .pdf (25.5 Mb)

McGraw-Hill, Paris, 1991 ;
EDISCIENCE International, Paris, 1994. 297 p.

ISBN : 2-84074-073-7
ISSN : 0-992-5880
(publié précédemment par McGraw-Hill, Inc., Paris. ISBN : 2-7042-1239-2)


Maquette de couverture : Françoise Rojare


4ème de couverture (extrait)

Les auteurs de cet ouvrage utilisent le dessin comme support intuitif pour présenter sous une forme simple et originale les notions de base de la programmation en PASCAL (structuration des programmes en procédures, itérations bornées (for), expressions entières, déclarations de constantes, de paramètres (passés par valeur), tests (if, case), expressions booléennes, itérations non bornées (while, repeat), codages de l'information, expressions réelles, récursivité, déclarations de variables de types simples et affectations).

Du pilotage d'un robot qui se déplace sur l'écran pour exécuter des dessins stylisés jusqu'à la manipulation de concepts plus abstraits comme la récursivité, chacun, de l'écolier à l'adulte débutant pourra progresser à son propre rythme jusqu'à développer des applications personnelles.


Programmes et applications du robot Robot


Résumé des commandes du robot Robot
CMDrobot.pdf CMDrobot.ps.gz


Exemples de dessins réalisés avec le robot Robot

Stégosaure Numération égyptienne
Stégosaure Numération égyptienne
Spirale de Baravelle Courbe de Peano
Spirale de Baravelle Courbe de Peano


Introduction

L'usage de l'ordinateur se généralise dans tous les domaines de l'activité économique. La plupart des utilisateurs emploient des logiciels d'application pour accomplir une ou plusieurs tâches spécifiques : édition de texte, comptabilité, jeux, etc. Par désir de tirer tout le parti de la puissance de la machine, par plaisir ludique ou par simple envie de comprendre le principe de fonctionnement des ordinateurs, de nombreux informaticiens en herbe ont envie d'apprendre, parfois seuls, la programmation. La tâche se révèle souvent longue, difficile voire rébarbative. Nous voudrions en faire une activité créatrice, formatrice pour l'esprit et passionnante.

De nombreuses introductions à la programmation reposent sur la connaissance préalable de l'architecture des ordinateurs ou utilisent des notions mathématiques qui ne sont pas à la portée des enfants ou des adultes n'ayant pas une formation scientifique [9]1. (Les petits chiffres surélevés renvoient à une note de bas de page expliquant le mot qui précède. Par exemple, la note qui se trouve en bas de cette page explique l'usage des chiffres entre crochets comme [9].) Nous proposons de procéder autrement.

Nous utilisons le dessin, qui est à la portée de tous. Cette approche est relativement nouvelle dans l'apprentissage de l'informatique, les progrès saisissants de la technologie qui ont permis de mettre à la portée du grand public des micro-ordinateurs dotés d'écrans graphiques très performants ne datant que des années 1980. Il est plaisant de noter que les origines de notre activité graphique remontent à la préhistoire (plus précisément à la période de l'art pariétal2 entre 22000 et 13000 ans av. J.-C.). L'informatique graphique qui a 10 ans va donc nous permettre à 20000 ans d'intervalle de dessiner avec le même plaisir que nos lointains ancêtres.

Ce livre s'adresse à tous. Les enfants des classes maternelles sont capables de faire des dessins stylisés à la main et avec un peu d'imagination, de les reproduire sur l'écran de l'ordinateur en utilisant un programme de dessin interactif (chapitres 1 et 2). Les enfants des classes primaires peuvent écrire des programmes pour réaliser des dessins figuratifs (chapitres 3 à 5). Très vite ils découvriront la facilité avec laquelle ils peuvent programmer l'ordinateur pour faire des dessins géométriques simples basés sur des motifs répétitifs qu'ils n'auraient pas la patience ni la minutie d'exécuter à la main (chapitres 6 et 7). Les collégiens mettront en œuvre leurs connaissances rudimentaires d'algèbre et de géométrie analytique pour écrire des programmes de dessin utilisant des calculs élémentaires et des repères cartésiens (chapitres 8 à 17). Ils trouveront une base intuitive pour mettre en œuvre des concepts qui peuvent paraître abstraits. Les lycéens sont à même d'assimiler des notions plus informatiques comme le codage, voire des notions moins élémentaires comme la récursivité, qui deviennent évidentes par le dessin (chapitres 17 à 22). Les étudiants trouveront du plaisir à comprendre simplement la programmation qui paraît parfois obscure quand elle est présentée trop rapidement en premier cycle universitaire.

Les langages de programmation n'offrant pas les possibilités graphiques souhaitables, nous avons ajouté une bibliothèque à PASCAL3 qui nous permet d'obtenir de façon simple des effets simples (comme les arcs de cercles) ou spectaculaires (comme la peinture) sans être liés à la technologie des écrans graphiques actuels et sans faire appel à des notions avancées de programmation comme les structures de données. Cette bibliothèque ainsi que tous les exemples et programmes solutions des exercices proposés dans le livre sont fournis sur disquette4. Elle offre de nombreuses possibilités qui ne sont pas explorées dans le livre, comme par exemple pour les spécialistes, de créer des programmes interactifs d'apprentissage comme ceux qui sont proposés pour l'addition, les coordonnées cartésiennes et la translation.

Ce livre devrait être lu par étapes successives, en prenant le temps et le plaisir de faire de nombreuses expériences personnelles sur ordinateur, en résolvant des exercices, en modifiant les programmes proposés en solution et en recherchant de nouveaux thèmes de dessin.


Addenda

Nous donnons en addenda à la fin de chaque chapitre des notes additionnelles destinées aux lecteurs déjà familiers de l'informatique.

Nous introduisons dans ce livre les activités de base de la programmation comme la saisie du texte, l'interprétation, la compilation, l'exécution et la mise au point de programmes. Les notions de programmation sont présentées en PASCAL : structuration des programmes en procédures, itérations bornées, expressions entières, déclarations de constantes, paramètres (passés par valeur), tests, expressions booléennes, itérations non bornées, codages de l'information, expressions rationnelles (réelles), récursivité, variables de types simples et affectations. Notre approche basée sur le dessin permet de donner une intuition graphique à ces notions et évite les problèmes plus complexes de spécification et de correction des programmes (qui sont des évidences visuelles). Les structures de données (tableaux, enregistrements et pointeurs en PASCAL) sont volontairement laissées pour des apprentissages ultérieurs plus élaborés.

L'apprentissage de la programmation à un niveau très élémentaire comme celui qui est proposé dans ce livre permet d'acquérir le sens du passage du concret à l'abstrait, l'intuition des structures formelles, le raisonnement inductif et la capacité à formaliser qui sont à la base de la programmation mais également le point de départ de toute démarche scientifique.


Notes de bas de page :

1 Les scientifiques ont l'habitude de `citer leurs sources' en donnant les références aux articles de revues scientifiques et aux livres des auteurs dont ils utilisent les idées. La méthode moderne pour citer les sources est d'utiliser un numéro placé entre crochets (comme par exemple [9]) qui renvoie à une liste de références, placée à la fin du livre, que l'on appelle bibliographie (voir page 281).

2 Peinture sur les parois d'une grotte.

3 Nous utiliserons les compilateurs Turbo Pascal 5.5 ou 6.0 de Borland sur les ordinateurs compatibles IBM PC et le compilateur Turbo Pascal 1.1 de Borland sur les Macintosh.

4 Un bon de commande de la disquette d'accompagnement se trouve à la fin du livre. Pour apprendre à l'utiliser, l'insérer dans un lecteur puis, sur compatible IBM PC taper LisezMoi ou sur Macintosh cliquer deux fois rapidement avec la souris sur l'icône LisezMoi.


Table des matières

   Introduction   1
Spécification   5
Interaction   13
     2.1  Le robot   13
     2.2  Pilotage du robot   15
        15 2.2.1  Position initiale du robot   15
         2.2.2  Manœuvrer le crayon du robot   16
         2.2.3  Faire pivoter le robot sur place d'un quart de tour   17
         2.2.4  Faire pivoter le robot sur place d'un huitième de tour   18
         2.2.5  Faire avancer le robot   18
         2.2.6  Faire virer le robot   19
         2.2.7  Impossibilité de sortir du cadre   20
         2.2.8  Corriger les erreurs de pilotage   20
         2.2.9  Terminer et reproduire le dessin   20
         2.2.10  Dessiner un point, une croix, la grille des points d'arrêt du robot   21
         2.2.11  Dessiner en couleur   21
         2.2.12  Déplacer rapidement le robot avec la souris ou les flèches de défilement   21
Programmation   27
Écriture, compilation et exécution de programmes   33
     4.1  Structure des programmes   33
     4.2  Commentaires   37
     4.3  Compilation des programmes   38
     4.4  Erreurs syntaxiques   39
     4.5  Exécution des programmes   40
     4.6  Erreurs logiques   42
     4.7  Comment localiser les erreurs logiques dans le programme   44
Procédures   51
     5.1  Recopie de texte   51
     5.2  Exemples de procédures   54
     5.3  Déclaration de procédures   56
     5.4  Identificateurs   57
     5.5  Appel de procédures   57
     5.6  Commandes du robot définies par des procédures   58
Sauts du robot au bord et au centre du cadre   63
Boucles ``for''   67
     7.1  Répétitions   67
     7.2  Déclarations de variables entières   69
     7.3  La boucle ``for''   69
     7.4  Utilisation de la boucle ``for'' dans une procédure   70
     7.5  Boucles ``for'' imbriquées (indépendantes)   72
     7.6  Boucles ``for'' imbriquées (dépendantes)   74
     7.7  Invariants de boucles ``for''   75
Expressions entières   89103
Appel de procédures avec paramètres   103
     9.1  Faire avancer et reculer le robot   103
     9.2  Épaisseur du crayon   105
     9.3  Vitesse du robot   106
10  Grille de déplacement du robot   11
     10.1  Grille carrée   11
     10.2  Grille rectangulaire   112
11  Constantes   125
12  Peinture   131
     12.1  Noir et blanc   131
     12.2  Couleur   132
13  Déclarations de procédures avec paramètres   143
14  Repère cartésien   151
15  Test ``if''   161
16  Expressions booléennes   171
     16.1  Parité   171
     16.2  Comparaison d'entiers   172
     16.3  Négation, conjonction et disjonction   174
     16.4  Expressions booléennes   176
17  Boucles ``while''   187
     17.1  Le robot est-il au bord du cadre ?   187
     17.2  Boucle ``while''   187
18  Codage   197
     18.1  Code Morse   197
     18.2  Numération   198
     18.3  Codage binaire   200
         18.3.1  Entiers naturels   200
         18.3.2  Caractères (code ascii)   200
         18.3.3  Texte   200
         18.3.4  Chaînes de caractères   201
     18.4  Musique   202
         18.4.1  Figures de notes   204
         18.4.2  Mouvement   206
         18.4.3  Notes   206
         18.4.4  Silences   207
         18.4.5  Nuances   207
19  Expressions rationnelles   217
     19.1  Nombres rationnels   217
     19.2  Paramètres et variables de type ``real''   218
     19.3  Expressions rationnelles   218
     19.4  Erreurs d'arrondi   219
20  Rotations et translations   223
     20.1  Dimensions de la grille de déplacement du robot en coordonnées polaires   223
     20.2  Rotations   224
     20.3  Translations   227
21  Récursivité   243
     21.1  Récursivité simple   243
     21.2  Invariants   248
     21.3  Non-terminaison   250
     21.4  Récursivité mutuelle   250
22  Variables   269
     22.1  Variables et affectation   269
     22.2  Sauvegarde de l'état du robot   270
     22.3  Compter   271
     22.4  Entrée d'une valeur d'une variable   272
     22.5  Affichage de la valeur d'une expression   273
   Bibliographie   281
   Résumé des commandes du robot   285
   Index   295
   Bon de commande   297
Retour à / back to: Index, Institutions, Enseignement / Teaching, Recherche / Research, Services
Email: cousot@di.ens.fr, cousotp@acm.org
Dernière mise à jour / Last modified : Wednesday, 04-Jun-2003 12:29:51 CEST