Chapitre 0 Introduction
| 0.1 Objectifs et méthode
|
L'objectif de ce cours est de vous apprendre à programmer. Le cours est écrit de sorte que :
-
vous n'ayez rien besoin de savoir pour arriver à tout faire,
- vous puissiez travailler de manière entièrement autonome,
- vous progressiez aussi vite que possible.
Le langage de programmation que l'on utilise ici est Objective Caml (OCAML). Lorsque vous maîtriserez ce langage, il vous sera assez facile d'en apprendre d'autres. En effet, les concepts de la programmation sont quasiment les mêmes pour tous les langages.
Ce cours :
-
est facile et accessible quelque soit votre niveau :
-
aucune connaissance préalable en programmation n'est requise,
- un niveau de collège en mathématiques est suffisant,
- tout est expliqué en détails, il n'y a rien à deviner;
- est fait pour que vous appreniez effectivement à programmer :
-
des exemples accompagnent toujours les explications,
- des exercices mettent systématiquement en pratique les notions évoquées,
- les concepts abordés sont traités dans tous les détails;
- est conçu pour que vous progressiez rapidement :
-
le texte est clair et concis autant que possible,
- les messages d'erreurs que vous obtiendrez tôt ou tard sont décortiqués,
- des résumés des chapitres vous aide à retrouver rapidement un détail oublié.
Conseils de lecture :
-
lisez tous les paragraphes, et faites tous les exercices, sans exception;
- si vous bloquez sur un exercice, cherchez au moins 10 minutes avant de regarder la correction, mais ne passez jamais plus de 20 minutes sur un petit exercice (regardez votre montre);
- lorsque vous avez fini un exercice, retenez bien la solution, elle servira presque sûrement dans la suite;
- essayez de présenter vos programmes de la même manière que dans le cours;
- évitez de faire du copier-coller de code, car c'est en écrivant du code que l'on apprend.
|
|
| 0.2 Qu'est-ce que programmer
|
Le but de ce cours est d'apprendre à programmer, c'est-à-dire être capable de contrôler la machine.
Ecrire un programme, c'est donc expliquer à la machine ce qu'on veut qu'elle fasse.
Malheureusement, la machine n'est pas très intelligente, et elle ne comprend qu'un langage extrêmement limité. Et il est très pénible pour un humain d'écrire dans ce langage machine.
Pour parler à la machine, on va donc se faire assister par un traducteur, capable de traduire un langage évolué, dit langage de programmation, en langage machine. Un tel traducteur s'appelle un compilateur.
Le langage de programmation que nous allons utiliser s'appelle OCaml, on dira souvent Caml. Le compilateur traduit donc du code Caml en code machine.
Récapitulons les trois phases de la production d'un programme :
-
on écrit le code source du programme, c'est-à-dire le texte en Caml;
- on demande au compilateur de le traduire en code machine : c'est la compilation du programme;
- on demande à la machine d'effectuer le code machine : c'est l'exécution du programme.
|
|
| 0.3 Comment programmer
|
Dans un programme de base, il y a deux fichiers :
-
un fichier contenant le code Caml : c'est le source du programme.
- un fichier contenant le code machine : c'est l'exécutable.
Par exemple, si on choisit d'appeler "monsource.ml" le source et "monprog.exe" l'exécutable, les trois phases de production du programme seront :
-
éditer le fichier "monsource.ml" pour y écrire le source Caml
- effectuer la traduction à l'aide de la commande "ocamlc -o monprog.exe monsource.ml"
- exécuter le programme; pour cela, on tape simplement son nom : "monprog.exe"
Petite explication : le nom du compilateur est ocamlc, le petit -o signifie output, et permet de choisir le nom du programme qui va être généré.
|
|
| 0.4 Dialoguer avec un programme
|
Que peut faire un programme lorsqu'il est exécuté ? A peu près ce qu'il veut, tant que ce n'est pas interdit par le système. Pour faire quelque chose d'intéressant, le programme doit communiquer. S'il reste isolé, il ne pourra pas produire quoi que ce soit. Voici les trois moyens de communication qu'a un programme :
-
communiquer avec l'utilisateur,
- communiquer avec des fichiers,
- communiquer avec d'autres programmes.
Nous nous intéresserons surtout à la première partie. On verra à la fin comment lire et écrire des fichiers. On ne s'occupera pas de la communication entre les programmes, car c'est un peu technique et que ça dépend du système d'exploitation.
Pour communiquer avec l'utilisateur, il y a deux interfaces possibles.
-
On peut utiliser une interface graphique avec des menus, des boutons, des fenêtres, des boîtes de dialogues, etc... mais c'est assez pénible à programmer, et ça n'est intéressant que pour des logiciels destinés à être utilisé par beaucoup de gens.
- On peut utiliser une interface texte. Dans ce cas, le programme ouvre une fenêtre destinée à contenir du texte.
-
Le programme peut afficher du texte dans la fenêtre. On dit alors que le programme écrit sur la sortie standard, et que l'utilisateur lit sur cette sortie standard.
- L'utilisateur peut taper du texte dans la fenêtre et valider avec la touche entrée, et envoyer ainsi ce texte au programme. On dit alors que l'utilisateur écrit sur l'entrée standard, et que le programme lit sur cette entrée standard.
|
|
| 0.5 Interface de développement
|
Les trois phases du développement sont, on le rappelle, éditer le source, compiler le programme, et enfin l'exécuter.
Une interface de développement intégré (IDE) est un environnement qui permet de travailler sur ces trois phases de manière efficace. Pour ce cours de programmation, vous avez le choix entre deux types d'IDE.
A) Vous pouvez utiliser un logiciel spécialisé qui fonctionne de la manière suivante :
-
C'est un véritable éditeur de fichiers texte, numérotant les lignes, capable de mettre en couleur les mots clés du langage, permettant d'annuler ou de rétablir des modifications, possédant des fonctions de recherche et de remplacement, avec des dizaines d'outils configurables, etc... bref, tout ce dont vous pourrez avoir besoin.
- Vous pouvez compiler le programme avec la combinaison des touches "Contrôle" et "1" (on note CTRL+1). Les messages données par le compilateur sont alors affichés dans une zone prévu à cette effet, ce qui permet d'avoir en parallèle le source et la liste des erreurs trouvées dans ce source.
- Vous pouvez exécuter le programme avec la combinaison des touches "Contrôle" et "2" (CTRL+2). Une fenêtre s'ouvre alors pour dialoguer avec le programme. Lorsque le programme se termine, on retourne immédiatement à l'éditeur.
Un tel logiciel s'avère indispensable dès que l'on veut faire de la programmation un peu
sérieusement. Notez qu'il faut que Objective Caml soit installé en plus du logiciel. Un document
disponible sur le site de France-IOI explique comment installer et configurer correctement ces
outils.
B) Vous pouvez utiliser l'interface Web-IDE : il s'agit d'un IDE directement intégré dans la version Web de ce cours de programmation. Dans ce cas, il n'y a rien besoin d'installer sur votre machine, tout peut se faire via votre navigateur internet, sur le site de France-IOI.
-
Une zone de texte vous permet de saisir votre source. Il s'agit donc d'un éditeur relativement sommaire, mais suffisant pour écrire ses premiers programmes.
- Vous pouvez tester votre programme en appuyant sur un bouton. Si le source ne compile pas correctement, les erreurs sont affichées, sinon, le programme est compilé puis exécuté.
- Du fait que l'exécution se déroule à distance, il faut impérativement fournir les données à envoyer sur l'entrée standard à l'avance. Cela veut dire que vous devez taper à l'avance tout le texte que vous voulez fournir à votre programme durant son exécution. Cela peut poser des problèmes avec des programmes où vous souhaitez justement fournir à votre programme du texte différent selon les informations qu'il vous affiche. En bref, certains problèmes ne pourront pas être testé convenablement avec le Web-IDE.
- Le Web-IDE dispose d'un bouton permettant de sauvegarder le source sur lequel vous travaillez, et d'un autre permettant de récupérer la dernière sauvegarde effectuée. Sauvegarder régulièrement vous permet d'éviter de perdre des données à cause d'une erreur de manipulation sur votre navigateur.
Le Web-IDE est donc une solution pratique pour débuter, puisqu'il permet de réaliser ses premiers programmes sans avoir besoin d'installer ou de configurer des logiciels.
|
|
| 0.6 Correction automatique
|
Qu'elle que soit l'interface de développement que vous choisissez d'utiliser, vous pouvez faire corriger vos programme en ligne avec la version Web de ce cours.
-
Copiez le source de votre programme dans la zone d'édition de l'exercice que vous souhaitez faire corriger.
- Appuyez sur le bouton de soumission pour lancer l'évaluation du source.
- Après quelques instants, le résultat de l'évaluation s'affiche.
- Si vous avez réussi, la correction de l'exercice est affiché en même temps.
- Si vous n'avez pas réussi, il vous est affiché les détails d'un exemple sur lequel votre programme n'a pas réagit comme il aurait du.
- Si vous n'arrivez pas à résoudre le problème, un bouton vous permet d'obtenir la correction.
- Vous pouvez récupérer par la suite le source et le résultat de la dernière évaluation faîte pour un exercice.
Le fonctionnement du correcteur automatique est très simple. On donne à votre programme et au programme de la correction la même entrée, et on regarde s'ils donnent tous les deux la même sortie. Si les sorties sont différentes, cela veut dire que votre programme ne fait pas exactement ce qui est demandé par l'exercice. Ce système est peu tolérant : une majuscule à la place d'une minuscule suffit à faire rejeter votre solution. C'est fait exprès, car pour programmer bien, il faut s'entraîner à être rigoureux.
Attention, le correcteur n'est pas toujours parfait. En particulier :
-
le correcteur automatique ne corrige pas certains exercices; dans ce cas, l'exercice est considéré comme résolu dès que vous effectuez une soumission.
- c'est assez rare, mais il peut arriver que le correcteur automatique juge votre programme faux juste parce que vous ne présentez pas la sortie comme le programme de correction; il ne faut pas insister si vous estimez que votre programme est correct.
Globalement, le correcteur automatique permet une évaluation correcte d'une très grande majorité des exercices.
|
|
|
|