Série 2 niveau 0

Transcription

Série 2 niveau 0
Série 2 niveau 0:
Exercice 1.2 : écrire mon premier programme avec Geany
Les codes sources des programmes C sont, à l'instar de la plupart des langages de
programmation, de simples fichiers texte. A priori n'importe quel éditeur de textes permettrait
d'écrire un programme en C, cependant il est tout à fait déconseillé d'utiliser les éditeurs de texte
"bureautique" car ils introduisent des caractères supplémentaires de formatage qui ne sont pas
acceptés par le langage C.
Nous vous proposons d'utiliser Geany, un éditeur open-source. L'un des avantages de Geany est
qu'il adopte certaines conventions communes aux éditeurs de textes bureautiques, comme les
fameuses commandes Ctrl-C pour Copier et Ctrl-V pour Coller, ce qui de nos jours est un must.
De plus il possède un mode C agréable (il présente les programmes avec une mise en page et
une coloration adaptées ; on appelle cela la mise en évidence syntaxique).
Le but de cet exercice est justement de vous apprendre, pas à pas, à



éditer un programme ;
compiler un programme C;
corriger les erreurs de compilation.
Étape 1 : Éditer un programme
Geany offre la coloration syntaxique et la possibilité d'accéder facilement au code à partir des
messages d'erreur (double clic).
Note:


Lorsque vous ouvrez un fichier dont le nom finit par .c, geany passe automatiquement en mode
C, et l'affiche dans la barre horizontale au bas de la fenêtre d'édition.
Geany crée automatiquement les fichiers qu'on lui demande de sauvegarder lorsque ceux-ci
n'existent pas encore
Tapez le programme suivant, à sauvegarder sous le nom helloworld.c :
#include <stdlib.h>
#include <stdio.h>
int main()
{
printf("HelloWorld\n");
return EXIT_SUCCESS;
}
Nous verrons plus tard dans le cours à quoi correspondent exactement toutes ces lignes, mais
pour l'instant considérez cela comme la base minimale pour que votre programme fonctionne.
Constatations :

Certains mots apparaissent en couleur. Il s'agit de mots ayant des fonctions syntaxiques
particulières, et leur couleur peut améliorer la lisibilité des programmes. Si ce n'est pas le cas, votre
nom de fichier n'a probablement pas l'extension .c ; renommez votre fichier correctement.

Si ce n'est pas encore fait, nous vous demandons d'activer Document -> Auto-indentation. La
ligne sur laquelle se trouve le curseur est indentée automatiquement (= décalée), c'est-à-dire que
des espaces sont ajoutés ou supprimés en début de ligne, de façon à rendre le programme plus
lisible. Le nombre d'espaces ajoutés correspond à un certain style d'indentation (cf style
recommandé dans les conventions). Si vous n'utilisez pas le style recommandé parce que vous
êtes habitués à un autre style il n'y a pas de problème ; l'important est de garder le même style pour
tous vos programmes futurs.

Nous vous demandons de toujours utiliser l'indentation automatique car cette option permet de
mieux visualiser la structure du flot de contrôle du programme (bloc conditionnels ou répétés).
L'avantage de geany est de montrer la taille des blocs dans la marge, à droite du numéro de ligne.
On peut aussi réduire un bloc entier à une seule ligne en cliquant sur le symbole "-" à coté de
l'accolade ouvrante. Réciproquement le bloc est restitué en appuyant sur le symbole "+".

Pendant que vous tapez votre code, il y a des messages qui s'affichent automatiquement comme
illustré dans l'exemple ci-dessous:
Geany contient une "auto-completion".
Pendant vous tapez votre code, geany
essaie de deviner quelle fonctions ou
variables vous voulez utiliser et vous
propose une liste avec ces fonctions et
variables. Vous pouvez choisir la
fonction/variable appropriée.
Cela vous permet de gagner du temps et
de diminuer le nombre de fautes de
frappe, sources de nombreuses erreurs
de programmation.
Si vous choisissez une fonction, geany
vous affiche la liste des arguments pour
cette fonction.
Sauvegardez le programme (Ctrl+S ou via le menu File -> Save).
Annexe : structure du programme





La ligne 1 (#include ) ordonne au compilateur de lire (et d'inclure) le contenu de la bibliothèque
stdlib avant de compiler le programme. Cette bibliothèque contient des déclarations de fonctions
(et/ou variables) utilisées dans la suite du programme. Dans notre cas, il s'agit de la définition du
symbole EXIT_SUCCESS.
La ligne 2 (#include ) ordonne au compilateur de lire (et d'inclure) le contenu de la bibliothèque
stdio avant de compiler le programme. Cette bibliothèque contient des déclarations de fonctions
(et/ou variables) utilisées dans la suite du programme. Dans notre cas, il s'agit de la définition de la
fonction printf(...).
La ligne 4 indique le début de la fonction principale du programme. Les instructions comprises entre
l'accolade ouvrante { et l'accolade fermante associée } constituent la définition du programme
principal (la fonction main), c'est-à-dire les instructions qui seront effectivement exécutées au
lancement du programme.
La ligne 6 affiche «HelloWorld» à l'écran, suivi d'un passage à la ligne (\n).
La ligne 8 indique que l'on quitte le programme sans avoir rencontré d'erreur, il a accompli la tâche
demandée.
Étape 2 : compiler le programme
Avant d'être exécuté, un programme C doit être compilé : le fichier texte contenant le code source
doit être traduit en langage machine. On effectue cette opération à l'aide d'une commande de
compilation qui peut être tapée dans une fenêtre Terminal, ou être exécuté depuis geany,
comme nous vous le proposons dans cet exercice.
Avec la souris, cliquez sur Build -> Build (touche F9). Si vous n'avez pas sauvegardé le fichier,
geany vous demande alors l'autorisation de le faire maintenant (appuyez sur y pour confirmer).
Une nouvelle fenêtre s'ouvre en deux, la fenêtre en bas montre les messages de compilation.
Attendez jusqu'à voir apparaître un message indiquant la fin de la compilation.
Si la compilation s'est déroulée sans problème (elle se termine avec le message «Compilation
finished successfully»), testez votre programme :

Soit en utilisant un terminal, déplacez-vous (cd) si besoin est dans le répertoire ~/serie2 et lancez
votre programme en tapant (suivi de Return)
./helloworld
Le message «HelloWorld» devrait alors apparaître.

Soit en cliquant sur le bouton
(« Execute » - touche F5)
Une nouvelle fenêtre devrait alors apparaître:
Remarques:



On peut modifier les paramètres de la compilation/build via le menu Build -> Set Build Commands
Le bouton "Compile" (menu Build -> Compile) produit seulement le code objet sans aller jusqu'à
créer le fichier exécutable. Pour obtenir le code exécutable, il faut toujours faire un "Build -> Build"
(touche F9).
Si vous avez modifié votre code, il faut d'abord faire un « Build » qui va créer le nouvel exécutable,
et ensuite seulement faire « Execute ».
Étape 3 : erreurs de compilation
Nous allons maintenant nous intéresser à la correction des erreurs d'un programme, en tout cas
celles que le compilateur peut détecter.
Cela vous arrivera souvent, et le compilateur C est assez fort pour trouver des erreurs. Apprenez
donc à les comprendre et si vous avez du mal, n'hésitez pas à utiliser le forum !
Il existe divers types d'erreurs (BugCheckList) :

Les erreurs de syntaxe: le programme est mal écrit et le compilateur ne le comprend pas.
Le compilateur signale toujours le problème, en indiquant souvent l'endroit de l'erreur.

les erreurs sémantiques: la syntaxe du programme est correcte (il compile et produit un
exécutable), mais ce qu'il fait est erroné. Voici trois familles d'erreurs sémantiques :
o
o
o
Les erreurs d'implémentation : par exemple une division par zéro se produit, ou
une variable n'a pas été initialisée correctement. Ce type d'erreurs ne se détecte que
lors des tests du programme (soit par un arrêt intempestif (cas de la division par
zéro), soit par des résultats erronés (cas de la mauvaise initialisation).
Les erreurs d'algorithme : l'algorithme implémenté ne fait pas ce que l'on croit (ce
qu'il devrait)
Ce type d'erreur est en fait assez proche du précédent. Cependant, c'est plus la
méthode globale qui est erronée, alors que dans le cas précédent, l'erreur provient le
plus souvent d'une étourderie ou d'un manque de précision dans une des étapes du
codage de l'algorithme.
Les erreurs de conceptions : ici c'est carrément l'approche du problème qui est
erronée, souvent en raison d'hypothèses trop fortes ou d'hypothèse non explicitées.
Ces erreurs relèvent du domaine de l'ingénierie informatique (le «génie logiciel»), on
y reviendra au second semestre.
Nous n'aborderons aujourd’hui que les erreurs de syntaxe.
Les erreurs d'implémentation et d'algorithme seront étudiées plus tard dans le cours, d'un point de
vue pratique avec la mise en oeuvre de procédures de déverminage - i.e. utilisation de débogueur
et de tests logiciels. D'ici là reportez vous au document Bug Check List en cas de fonctionnement
incorrect de votre programme et essayez de retrouver les symptômes correspondant le mieux à
votre problème.
Pour commencer, introduisez volontairement une erreur de syntaxe dans votre programme
(supprimez par exemple la dernière accolade ou le dernier point-virgule).
Relancez ensuite la compilation. Vous devriez obtenir un message indiquant le fichier où se trouve
l'erreur (helloworld.c), la ligne concernée, ainsi que le type d'erreur:
Par exemple, s'il manque la dernière accolade, le compilateur vous indiquera le message suivant :
helloworld.c:8:4: error: expected declaration or statement at end of input
Compilation failed.
Cliquez avec le bouton du gauche de la souris sur le message d'erreur: geany positionne alors
une flèche sur le fichier et la ligne concernés.
Corrigez l'erreur, et relancez la compilation.

Documents pareils