- Version beta - 18/02/2005
Utilisation de l'interface de développement en ligne (Web-IDE) pour le cours de programmation pour débutants
L'intérêt du Web-IDE est expliqué dans l'introduction du cours. Ce document détail les fonctionnalités de l'interface.
Les zones
L'interface est constitué de zones où l'on peut écrire du texte, d'une zone avec les boutons de commandes, et de plusieurs autres zones d'affichage de texte. Présentation rapide des zones de haut en bas et de gauche à droite :
- Titre de l'exercice,
- Description du sujet,
- Zone pour taper le source du programme,
- Zone pour fournir l'entrée du programme,
- Boutons de contrôles,
- Message d'information,
- Parfois : le source complet qui a été compilé,
- Parfois : résultat de l'évaluation,
- Parfois : sortie du programme,
- Parfois : la correction du sujet.
Les couleurs
- Bleu : exercice non résolu - la dernière soumission n'a pas été validée.
- Vert : exercice résolu - la dernière soumission a été validée.
- Rouge : exercice non résolu, affiché avec la correction.
Les boutons
- Tester :
- on prend le source
- on ajoute parfois du code en haut et en bas
- on compile le tout
- s'il y a une erreur de compilation, on affiche le source envoyé ainsi que l'erreur de compilation
- le programme est exécuté
- tout le texte écrit dans la zone d'entrée est donné au programme sur l'entrée standard
- ce que le programme a écrit sur la sortie standard est donné dans la zone de sortie
- Sauvegarder : enregistre le source de la zone source.
- Récupérer : retrouve le dernier source enregistrer, et le place dans la zone source.
- Soumettre :
- on compile le programme comme lorsqu'on veut le tester,
- on dispose de fichiers à donner sur l'entrée standard du programme,
- ainsi que des fichiers de sortie associés contenant ce qu'est censé renvoyer le programme,
- pour chacun de ces fichiers :
- on exécute le programme
- on lui donne le contenu du fichier sur l'entrée standard
- on récupère sa sortie standard
- on compare la sortie stardard au fichier de sortie associé : ils doivent être identiques.
- si toutes les évaluations sont réussis, le programme est validé.
- Dernier résultat : récupère le source donné lors de la dernière soumission, et affiche aussi le résultat de cette soumission.
- Source complet : affiche le source avec le code éventuellement ajouté en haut et en bas du source. Lorsque ce source contient un #1, cela veut dire que les lignes sont numérotés à partir de cette balise.
- Voir correction : pour afficher la correction du sujet.
Les erreurs
Sur le cours de programmation Ocaml :
Echec : erreur de compilation.
=> Votre programme n'a pas compilé
Echec : erreur d'exécution.
=> Votre programme a émis une exception, c'est à dire qu'il a planté. Cas particulier :
Fatal error: exception End_of_file
=> Votre programme a voulu lire des données sur l'entrée standard alors qu'il n'y avait plus rien à lire.
=> Voir le paragraphe suivant pour plus de détails.
Echec : erreur dans le résultat.
=> Votre programme n'a pas renvoyé sur la sortie standard ce qu'il était censé renvoyer. Cas particulier :
Résultat trop gros pour etre affiché
=> La différence entre la sortie de votre programme et la sortie qu'il devait rendre ne peut être affiché car il y aurait trop de données à transmettre.
Echec : Votre programme a dépassé la limite de temps autorisée.
=> Votre programme ne s'est pas terminé tout seul dans un temps raisonnable.
- Si la soumission s'effectue que sur
*.in
=> Les fichiers tests manquent sur le fichiers d'évaluation. Nous contacter.
Lecture sur l'entrée standard - IMPORTANT
Les fonctions prédéfinies de Caml pour lire les données sur l'entrée standard (ce sont les données que l'utilisateur fourni au programme) ne sont pas tout à fait au point. Pour lire un entier, on utilise la fonction read_int, ça marche. Mais pour lire deux entiers, on ne peut pas faire deux fois de suite un appel à read_int lorsqu'on lit sur l'entrée standard. Par exemple, lorsqu'on veut lire l'entrée 45 23, le premier read_int va lire le 45, mais le second va essayer de lire l'espace qui est entre les deux, et pas le 23.
Pour résoudre le problème, on utilise des fonctions avancées de lecture sur l'entrée standard. On va remplacer la fonction prédéfinie read_int par la version améliorée en écrivant :
let read_int () = Scanf.scanf " %d" (fun x -> x);;
De même, avant de lire des nombres réels, on redéfinira la fonction read_float :
let read_float () = Scanf.scanf " %f" (fun x -> x);;
Ce code est à peu près incompréhensible avant la fin du cours, et il faudra donc l'utiliser sans chercher à comprendre, même si c'est totalement contraire aux principes habituels.
Plutôt que de vous laissez taper ces lignes horribles à chaque problème, elles sont ajoutées automatiquement en haut du source avant de le compiler, lorsque c'est nécessaire pour le problème. Appuyez sur le bouton "Source complet" pour voir les lignes ajoutées à un problème.
L'ajout de lignes à un source décale les numéros des lignes. Pour éviter ce problème, on rajoute une ligne contenant l'instruction #1 qui permet de dire que l'on décale la numérotation des lignes, et que la première ligne est désormais la ligne suivant ce symbole.
|