200 likes | 350 Views
GEF 243B Programmation informatique appliquée. Structure de base des programmes en C §2.1 - 2.2 §Apx H. Synopsis. Outils requis pour programmer en C main() Programme simple en C Arguments de la ligne de commande (argc, argv) Commentaires Conventions de nommage.
E N D
GEF 243BProgrammation informatique appliquée Structure de base des programmes en C §2.1 - 2.2 §Apx H
Synopsis • Outils requis pour programmer en C • main() • Programme simple en C • Arguments de la ligne de commande (argc, argv) • Commentaires • Conventions de nommage JGA Beaulieu
Outils pour programmer en C • Vous avez besoin d’un éditeur de texte pour créer et modifier votre code • Ici vous créez/modifiez des fichiers *.c et *.h • Vous avez besoin d’un compilateur, qui est dépendant de votre plateforme • Intel/Win, Sun SPARC/Unix… • Ici vous produisez des fichiers *.obj • Vous avez besoin d’un éditeur de liens (linker) • Ici vous produisez des fichiers *.exe (ou .lx) • Un environnement pour exécuter vos programmes • Dans les labos on se sert de CodeWarrior et de MicroC/OS-II JGA Beaulieu
Étapes pour produire un programme en C Figure 1-9 JGA Beaulieu
Structure d’un programme en C • Tout les programmes en C doivent contenir au moins une fonction • Cette fonction est la fonction main() • Il peut seulement y avoir une fonction qui s’appel main() • Contrairement à Java où chaque classe peut avoir un main JGA Beaulieu
Structure d’un programme en C • Tout les programmes en C sont écrits avec une structure bien définit: /*Directives de pré processeur*/ /*Déclaration des variables Globales*/ void main(void) { /*Déclaration des variables locales*/ /*Énoncés*/ } JGA Beaulieu
Structure d’un programme en C /*Directives de pré processeur */ #include <stdio.h> void main(void) { int x,y,z; /*Déclaration variables locales */ x = 2; /*Énoncés*/ y = 3; z = x * y; printf(“Voici la valeur de z: %d”, z); } JGA Beaulieu
Arguments de la ligne de commande • Comme nous avons vue dans le programme échantillon, nous pouvons figer les valeurs dans le code (hardcode) en prédéfinissant des valeurs. • Ceci n’est pas très flexible, nous pourrions utiliser des entrées de l’utilisateur • Nous pouvons aussi passer des arguments au programme. • Ces arguments qui sont passés au programme au départ seront passé comme paramètres à la fonction main(). JGA Beaulieu
Arguments de la ligne de commande • Un programme en C peut avoir aucun arguments • void main (void) • Ou exactement deux arguments • void main (int argc, char *argv[]) • int argc est un entier (integer) qui indique le nombre d’éléments (compteur) dans le vecteur d’arguments (argv) JGA Beaulieu
Arguments de la ligne de commande Nom du programme /0 /0 /0 6 /0 argc /0 /0 argv JGA Beaulieu
Arguments de la ligne de commande • Donc même si un programme en C a seulement deux arguments, il en a beaucoup plus!!! • Regardons maintenant un exemple de Forouzan et Gilbert JGA Beaulieu
Arguments de la ligne de commande #include <stdio.h> #include <string.h> #include <stdlib.h> int main (int argc, char *argv[]) { /* Définitions locales */ int i; /* Énoncés */ printf ("Le nombre d’éléments de l’utilisateur: %d\n", argc); printf ("Le nom du programme: %s\n", argv[0]); for ( i = 1 ; i < argc ; i++ ) printf ("Valeur de l’utilisateur No. %d: %s\n", i, argv[i]); return 0; } Comme nous avons vue deux arguments argc est définit par l’entrée sur la ligne argc peut être utilisé pour contrôler les boucles JGA Beaulieu
Arguments de la ligne de commande #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { /* Définitions locales */ int i; /* Énoncés */ printf ("Le nombre d’éléments de l’utilisateur: %d\n", argc); printf ("Le nom du programme: %s\n", argv[0]); for ( i = 1 ; i < argc ; i++ ) printf ("Valeur de l’utilisateur No. %d: %s\n", i, argv[i]); system("PAUSE"); return 0; } argv est un tableau d’éléments JGA Beaulieu
Arguments de la ligne de commande • En regardant le segment de code la ligne d’entrée va produire la sortie correspondante : • C:\cmdline Bozo Le nombre d’éléments de l’utilisateur: 2 Le nom du programme: CMDLINE Valeur de l’utilisateur No. 1: Bozo JGA Beaulieu
Arguments de la ligne de commande • Deuxième exemple avec une string: • C:\cmdline Bozo “the clown” Le nombre d’éléments de l’utilisateur: 3 Le nom du programme: CMDLINE Valeur de l’utilisateur No. 1: Bozo Valeur de l’utilisateur No. 2: the clown JGA Beaulieu
Commentaires • Pendant les travaux pratiques, vous allez souvent avoir du code qui contient des commentaires. • Vous devez commenter le nouveau code que vous produisez et tout changements que vous faite au code qui existe déjà. • Les commentaires doivent décrire l’intention d’un énoncé ou bloque d’énoncés. • Ne mettez pas des commentaires inutiles comme: X = 5; /* ici X est mit à 5*/ • Faites des commentaires comme: X = 5; /*Ici X est initialisé au nombre maximum d’éléments*/ JGA Beaulieu
Commentaires • Chaque programme ou fonction doit avoir un entête qui ressemble à cela: /************************************************************************* * * Fichier: MonProgramme.c * * Auteur: Maj Beaulieu (avec l’aide du code de Forouzan) * * Description: Ce programme va écrire Bonjour le monde sur l’unité de contrôle du robot * LEGO Mindstorms. * * Historique de révision: Créé 1 janvier 2005 * Modifié 10 jan 2005 par Elof Tremblay pour lab 1 * Elof Meilleur m’a aidé avec la deuxième partie * ************************************************************************/ JGA Beaulieu
Convention de nommage • Tout les identificateurs (constantes, variables et noms de fonction) devraient avoir des noms qui veulent dire quelque chose. • A..Z, a..z, 0..9 et le soulignement (_) sont des caractères valides • Ne commencez pas avec un chiffre ou un soulignement • ANSI/ISO C a 31 caractères par identificateurs; le reste est ignoré. • Donc si vous avez deux identificateurs qui ont 32 caractères et que seulement le dernier diffère, les deux identificateurs sont égaux!!! JGA Beaulieu
Convention de nommage • Toutes les constantes doivent être en majuscules #define GRANDMAXSTRG 20 /*Grandeur maximum d’une string*/ • Variables doivent commencer avec une lettre minuscule et chaque nouveau mot commence avec une majuscule char *nomDuClient; /*Nom du client ou contact*/ • Les noms de fonctions commencent avec une lettre majuscule et chaque nouveau mot commence avec une majuscule int MultiplieDeuxInt (int premierInt, int deuxiemeInt) {…} JGA Beaulieu
Quiz Time • Quelles sont les quatre outils que vous avez besoin pour créer un programme? JGA Beaulieu