Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23
Les premiers pas Sommaire 1 Les premiers pas 2 Les opérations de bases 3 Les fonctions Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23
Les premiers pas Un peu d histoire Les origines Inventé en 1972 dans les laboratoires de Bell par Dennis Ritchie et Ken Thompson. Même époque que la création d Unix. En 1978 le langage est "stabilisé". Il est décrit en détail dans The C Programming Language ( Dennis Ritchie et Brian Kernighan). Les différentes normalisation du langage 1978 première description complète du langage. 1990 l organisme de normalisation international adopte la norme C90 ou C ISO. 1999 nouvelle version de la norme ISO : C99. Cette nouvelle norme introduit des nouveautés notamment sur les tableaux de taille variable, les déclarations mélangées avec les instructions, les fonctions inline, le support avancé des nombres flottants, la syntaxe des commentaires... 2011 ISO ratifie une nouvelle version la C11. Alexis Lechervy (UNICAEN) Introduction au langage C 2 / 23
Les premiers pas Avantages et défauts du langage C Avantages L un des langages les plus utilisés. Utilise un standard ouvert. Existe depuis longtemps, beaucoup d informaticien le connaisse et l utiliser. Littérature et bibliothèque abondante. Sa syntaxe est reprise dans de nombreux autres langages (C++, Java, PHP). Proche de la machine, permet de tirer partie au mieux des capacités de la machine. Permet l optimisation précise du code (nombre de cycle, consommation, utilisation mémoire...). N est pas contraint par un architecture matérielle. Permet la réalisation de logiciel embarqué. Permet de créer des logiciels autonome, sans support d exécution ou bibliothèque spécifique. Alexis Lechervy (UNICAEN) Introduction au langage C 3 / 23
Les premiers pas Avantages et défauts du langage C Inconvénients Pas de vérification durant l exécution. Détection d erreur n est possible qu à la compilation. Pas ou peu de concept de programmation Objet ou de gestion d exception. Un support limité de la généricité. Programme généralement non portable à une autre architecture. Pas de gestion haut niveau de la mémoire. La gestion de la mémoire est souvent source de bug et nécessite une attention particulière. Alexis Lechervy (UNICAEN) Introduction au langage C 4 / 23
Les premiers pas Les différentes phases d un programme C Écriture du programme Lors de cette étape vous rédigez le code de votre application en respectant la syntaxe du langage C. Vous enregistrez vos fichiers avec une extension de type.c (fichier de code) ou.h (fichier d entête). Alexis Lechervy (UNICAEN) Introduction au langage C 5 / 23
Les premiers pas Les différentes phases d un programme C Compilation Vous transformez votre code en langage "compréhensible" pour la machine. Lors de cette phase, vous créez un fichier exécutable permettant de lancer votre application. Syntaxe Nom de l exécutable par défaut : transforme nom_du_fichier_de_code.c en a.out, gcc nom_du_fichier_de_code.c transforme nom_du_fichier_de_code.c en mon_exe, gcc -o mon_exe nom_du_fichier_de_code.c Alexis Lechervy (UNICAEN) Introduction au langage C 6 / 23
Les premiers pas Les différentes phases d un programme C Exécution Vous pouvez lancer votre programme sur la machine et l utiliser. Alexis Lechervy (UNICAEN) Introduction au langage C 7 / 23
Les premiers pas Notre premier programme Objectif Programme affichant Hello World à l écran. Le code Utilisation/Exécution Alexis Lechervy (UNICAEN) Introduction au langage C 8 / 23
Les opérations de bases Sommaire 1 Les premiers pas 2 Les opérations de bases Les structures de contrôle 3 Les fonctions Alexis Lechervy (UNICAEN) Introduction au langage C 8 / 23
Les opérations de bases Structure d un fichier Alexis Lechervy (UNICAEN) Introduction au langage C 9 / 23
Les opérations de bases Affichage Affichage Affichage d une chaine de caractère avec retour chariot : Affichage d un entier i Affichage d un entier i non signé puts("hello") ; printf("hello \n") ; printf( L entier est %d\n",i) ; printf( L entier est %u\n",i) ; Affichage d un entier cour (short) i non signé Affichage d un réel x printf( L entier est %hu\n",i) ; printf( Le réel est %f\n",x) ; Affichage d un réel x avec quatre chiffres avant la virgule et 2 après printf( Le réel est %4.2f\n",x) ; Alexis Lechervy (UNICAEN) Introduction au langage C 10 / 23
Les opérations de bases Lecture clavier Lecture du clavier Lecture d un caractère Lecture d un entier Lecture d un réel char car ; scanf("%c",&car) ; int car ; scanf("%d",&i) ; float x ; scanf("%f",&x) ; Alexis Lechervy (UNICAEN) Introduction au langage C 11 / 23
Les opérations de bases Typage Les variables Le langage C est un langage typé. Tout les variables ont un type. La déclaration est obligatoire avant toute utilisation. Déclaration et affectation de variable type nom_de_variable ; nom_de_variable = valeur ; Types élémentaires Type caractère : (unsigned, signed) char Type entier : (unsigned, signed) short, int, long Type réel : (unsigned, signed) float, double, long double Pas de type boolean, utiliser 0 pour faux et un valeur non nulle pour vrai. Pas de type chaine de caractère. Alexis Lechervy (UNICAEN) Introduction au langage C 12 / 23
Les opérations de bases Les structures de contrôle Instruction conditionnelle Le if int a =5; if( a >2){ printf ("a >2\ n"); } else { printf ("a <=2\ n"); } Alexis Lechervy (UNICAEN) Introduction au langage C 13 / 23
Les opérations de bases Les structures de contrôle Instruction d aiguillage Le switch int a; scanf ("%d",&a); switch (a){ case 0: printf ("..0..\ n"); case 1: printf ("..1..\ n"); break ; case 2: printf ("..2..\ n"); break ; default : printf (" Autres \n"); } Alexis Lechervy (UNICAEN) Introduction au langage C 14 / 23
Les opérations de bases Les structures de contrôle Instruction d aiguillage Exemple d exécution du switch précédent Alexis Lechervy (UNICAEN) Introduction au langage C 15 / 23
Les opérations de bases Les structures de contrôle Instruction de boucle Le while Le code s exécute tant que la condition est vrai. int i =0; while (i <5){ puts (" Tapez un nombre >= 5"); scanf ("%d",&i); } Exemple d exécution Alexis Lechervy (UNICAEN) Introduction au langage C 16 / 23
Les opérations de bases Les structures de contrôle Instruction de boucle Le do while Pareil que le while mais le code est exécuter une fois avant de faire le test. int i =13; do{ puts (" Tapez un nombre >= 5"); scanf ("%d",&i); } while (i <5); Exemple d exécution Alexis Lechervy (UNICAEN) Introduction au langage C 17 / 23
Les opérations de bases Les structures de contrôle Instruction de boucle Le for Effectue des instructions un nombre de fois donnés. int i; for (i=0 ; i <10 ; i ++){ printf ("%d ",i); } printf ("\n"); Exemple d exécution Alexis Lechervy (UNICAEN) Introduction au langage C 18 / 23
Les opérations de bases Les structures de contrôle Instruction de débranchement break Permet de quitter une boucle avant la réalisation du test de finalité. continue Permet d aller directement à la fin des instructions de la boucle et de passer à l itération suivante. Alexis Lechervy (UNICAEN) Introduction au langage C 19 / 23
Les opérations de bases Les structures de contrôle Opération de base Opération mathématique de base + - * / % ++ - - Opération relationnelle ==!= > < <= >= Opération logique &&! Opération bits à bits» «& Affectation composé += -= *= /= %= «=»= &= = = Alexis Lechervy (UNICAEN) Introduction au langage C 20 / 23
Les fonctions Sommaire 1 Les premiers pas 2 Les opérations de bases 3 Les fonctions Alexis Lechervy (UNICAEN) Introduction au langage C 20 / 23
Les fonctions Les fonctions Prototype de fonction type_de_retour nom_fct ( type_arg1 nom_arg1,...){ instruction ; instruction ;... } Exemple double puissance ( int a,int n){ double r =1; int i; for (i=0 ; i<n ; i ++) r*=a; return r; } Alexis Lechervy (UNICAEN) Introduction au langage C 21 / 23
Les fonctions Les fonctions Remarques sur les fonctions On peut mettre aucun argument d entrée. On peut avoir aucune valeur de retour, le type de retour est alors void. On ne peut pas avoir plus d une valeur de retour. la fonction principale du programme est la fonction int main (int argc, char *argv[]) Portée des variables Une variable est visible uniquement à l intérieur de son bloc d instruction (les dernière accolade). Une variable hors de toute fonction, déclaré avant tout bloc d instruction est globale. On pourra l utiliser depuis n importe quel bloc d instruction. Alexis Lechervy (UNICAEN) Introduction au langage C 22 / 23
Les fonctions Les fichiers d entête Principe Le fichier d entête (.h) contient la déclaration des fonctions. Le fichier.c contient le code est inclue le fichier d entête à l aide de l instruction (#include "nom_du_fichier.h"). Exemple # ifndef FICHIER_ H # define FICHIER_ H void fct1 (); void fct2 ( int a, float b); int fct3 ( float a); # endif Alexis Lechervy (UNICAEN) Introduction au langage C 23 / 23