LES LANGAGES Apprentissage du langage "C" Version 2.0 Edition février 2013 Fréd
LES LANGAGES Apprentissage du langage "C" Version 2.0 Edition février 2013 Frédéric Lang (fr.lang@free.fr) 1/124 APPRENTISSAGE DU LANGAGE "C" LES LANGAGES Apprentissage du langage "C" Version 2.0 Edition février 2013 Frédéric Lang (fr.lang@free.fr) 2/124 Licence de ce document Permission est accordée de copier, distribuer et/ou modifier ce document selon les termes de la "Licence de Documentation Libre GNU" (GNU Free Documentation License), version 1.1 ou toute version ultérieure publiée par la Free Software Foundation. En particulier le verbe "modifier" autorise tout lecteur éventuel à apporter au document ses propres contributions ou à corriger d'éventuelles erreurs et lui permet d'ajouter son propre copyright dans la page "Registre des éditions" mais lui interdit d'enlever les copyrights déjà présents et lui interdit de modifier les termes de cette licence. Ce document ne peut être cédé, déposé ou distribué d'une autre manière que l'autorise la "Licence de Documentation Libre GNU" et toute tentative de ce type annule automatiquement les droits d'utiliser ce document sous cette licence. Toutefois, des tiers ayant reçu des copies de ce document ont le droit d'utiliser ces copies et continueront à bénéficier de ce droit tant qu'ils respecteront pleinement les conditions de la licence. La version actuelle de ce document est la 2.0 et sa version la plus récente est disponible en téléchargement à l'adresse http://fr.lang.free.fr Copyright © 2005 Frédéric Lang (fr.lang@free.fr) LES LANGAGES Apprentissage du langage "C" Version 2.0 Edition février 2013 Frédéric Lang (fr.lang@free.fr) 3/124 Registre des éditions Version Date Description des modifications Auteur des modifications 1.0 2000 Création du document Frédéric Lang (fr.lang@free.fr) 1.1 6 février 2004 Modification de l'exercice "Triangle de Pascal" Refonte du chapitre sur les pointeurs Ajout du registre des éditions Ajout de la licence de ce document Ajout d'exemples et exercices Frédéric Lang (fr.lang@free.fr) 1.2 20 février 2004 Corrections mineures dans l'exercice "Triangle de Pascal" Ajout de la fonction "strerror()" Corrections mineures (fautes d'othographes, etc.) Frédéric Lang (fr.lang@free.fr) 1.3 27 avril 2004 Ajout des fonctions "truncate()" et "ftruncate()" Modification des en-têtes Frédéric Lang (fr.lang@free.fr) 1.4 30 juillet 2004 Modification de petits détails sur les structures et sur les options de compilation Frédéric Lang (fr.lang@free.fr) 1.5 26 août 2004 Ajout des types "long long" et "long double" Ajout des fonctions "getline()" et "getdelim()" Ajout des fonctions "fpurge()" et "__fpurge()" Modifications de mise en page Frédéric Lang (fr.lang@free.fr) 1.6 16 mars 2005 Rajout des notions "stdin", "stdout" et "stderr" Rajout des fonctions "getc()" et "putc()" Rajout des fonctions "getchar()" et "putchar()" Rajout des fonctions "gets()" et "puts()" Correction de la fonction "fflush" Corrections mineures Frédéric Lang (fr.lang@free.fr) 2.0 5 avril 2005 Modification du titre du document Rajout de la notation constante en "float" Rajout du type des fonctions "main" dans les exemples et exercices Frédéric Lang (fr.lang@free.fr) LES LANGAGES Apprentissage du langage "C" Version 2.0 Edition février 2013 Frédéric Lang (fr.lang@free.fr) 4/124 SOMMAIRE I) GENERALITES _______________________________________________________________ 7 1) INTRODUCTION – HISTORIQUE ____________________________________________________ 7 2) NOTIONS DE FONCTIONS ET DE BLOCS_______________________________________________ 8 3) LE COMPILATEUR C SOUS "UNIX" __________________________________________________ 9 4) LA DOCUMENTATION C SOUS "UNIX" ________________________________________________ 10 II) ELEMENTS DE BASE DU LANGAGE _____________________________________________ 11 1) LES IDENTIFICATEURS __________________________________________________________ 11 2) LES MOTS RESERVES ___________________________________________________________ 11 3) LES SEPARATEURS_____________________________________________________________ 12 4) LES COMMENTAIRES____________________________________________________________ 12 5) LES VARIABLES _______________________________________________________________ 13 III) ÉLEMENTS DE BASE POUR DEBUTER___________________________________________ 14 1) LES TYPES DE BASE ____________________________________________________________ 14 a) Les entiers _______________________________________________________________ 14 b) Les réels _________________________________________________________________ 14 c) Les booléens _____________________________________________________________ 14 2) LES CONSTANTES _____________________________________________________________ 15 3) LES INSTRUCTIONS_____________________________________________________________ 16 4) LES OPERATEURS _____________________________________________________________ 17 a) Opérateurs binaires ________________________________________________________ 17 b) Opérateurs d'opération avec affectation_________________________________________ 17 c) Opérateurs unaires _________________________________________________________ 18 d) Opérateurs ternaire_________________________________________________________ 18 e) Valeur et renvoi d'instruction _________________________________________________ 18 f) Opérateur de concaténation __________________________________________________ 18 g) Exercices ________________________________________________________________ 18 5) L'AFFICHAGE – LA SAISIE ________________________________________________________ 19 6) LA CONVERSION DE TYPE (CASTING) ________________________________________________ 20 a) Généralités _______________________________________________________________ 20 b) Conversions de type explicites ________________________________________________ 20 c) Conversions de type implicites ________________________________________________ 20 IV) LES TYPES DERIVES__________________________________________________________ 21 1) LES TABLEAUX ________________________________________________________________ 21 2) EXERCICE ___________________________________________________________________ 22 3) LES CHAINES DE CARACTERES ____________________________________________________ 23 4) LA CREATION DE NOUVEAU TYPE___________________________________________________ 24 V) LES INSTRUCTIONS DE CONTROLES____________________________________________ 25 1) L'INSTRUCTION "IF ()… ELSE" _____________________________________________________ 25 2) L'INSTRUCTION "WHILE ()"________________________________________________________ 26 3) L'INSTRUCTION "DO… WHILE ()" ___________________________________________________ 27 4) L'INSTRUCTION "FOR ()" _________________________________________________________ 28 5) LES INSTRUCTIONS "BREAK" ET "CONTINUE" __________________________________________ 29 6) L'INSTRUCTION "GOTO"__________________________________________________________ 30 7) L'INSTRUCTION "SWITCH ()… CASE" ________________________________________________ 31 8) L'INSTRUCTION "EXIT ()" _________________________________________________________ 32 9) EXERCICES __________________________________________________________________ 33 VI) LES FONCTIONS _____________________________________________________________ 36 1) DEFINITION DE FONCTION ________________________________________________________ 36 2) PROTOTYPE DES FONCTIONS _____________________________________________________ 37 3) APPEL D'UNE FONCTION _________________________________________________________ 37 4) PASSAGE DE PARAMETRES_______________________________________________________ 38 5) RETOUR DU RESULTAT __________________________________________________________ 38 6) LA FONCTION "MAIN" ___________________________________________________________ 38 LES LANGAGES Apprentissage du langage "C" Version 2.0 Edition février 2013 Frédéric Lang (fr.lang@free.fr) 5/124 7) EXERCICE ___________________________________________________________________ 39 8) CAS PARTICULIER : FONCTION RECEVANT UN TABLEAU EN PARAMETRE_______________________ 40 9) CAS PARTICULIER : FONCTION DEVANT RENVOYER UN TABLEAU ____________________________ 40 VII) LA RECURSIVITE _____________________________________________________________ 41 1) RECURSIVITE SIMPLE ___________________________________________________________ 41 2) RECURSIVITE DOUBLE __________________________________________________________ 41 3) RECURSIVITE CROISEE__________________________________________________________ 42 4) CONCLUSION _________________________________________________________________ 42 5) EXERCICE – CHANGEMENT DE BASE ________________________________________________ 43 VIII) ETUDE DE CAS : LE TRIANGLE DE PASCAL – ETUDE DES DIFFERENTS SOLUTIONS___ 44 1) PRINCIPE DES DIFFERENTES SOLUTIONS _____________________________________________ 44 2) SOLUTION : UTILISATION DE LA FACTORIELLE POUR CALCULER LES COMBINAISONS ______________ 45 3) SOLUTION : METHODE PAR ADDITION DES VALEURS DE LA LIGNE PRECEDENTE _________________ 47 4) SOLUTION : CONSERVATION DES COMBINAISONS DEJA CALCULEES__________________________ 49 5) SOLUTION : CALCUL DE LA COMBINAISON PAR SIMPLIFICATION DE LA FRACTION_________________ 51 6) CONCLUSION _________________________________________________________________ 52 IX) LA VISIBILITE DES VARIABLES - LES CLASSES D'ALLOCATION DES VARIABLES _____ 53 1) VISIBILITE DES VARIABLES _______________________________________________________ 53 a) Variable locale ____________________________________________________________ 53 b) Variable globale ___________________________________________________________ 54 2) CLASSES D'ALLOCATION DES VARIABLES _____________________________________________ 55 a) Classe automatique (mot-clef "auto") ___________________________________________ 55 b) Classe registre (mot-clef "register") ____________________________________________ 55 c) Classe statique (mot-clef "static")______________________________________________ 55 d) Classe externe (mot-clef "extern") _____________________________________________ 56 3) RESUME VISIBILITE/DUREE DE VIE __________________________________________________ 57 4) LES EXCEPTIONS "CONST" ET "VOLATILE" ____________________________________________ 57 X) LES POINTEURS______________________________________________________________ 58 1) GENERALITES ________________________________________________________________ 58 2) PREMIER ESSAI DE POINTEUR _____________________________________________________ 59 a) Premier pointeur – Le pointeur simple __________________________________________ 59 b) Second pointeur – Le pointeur sur un pointeur ou double pointeur ____________________ 61 3) POINTEURS ET TABLEAUX________________________________________________________ 64 4) OPERATION SUR LES POINTEURS __________________________________________________ 65 5) OU LA LOGIQUE DEMONTRE L'IMPOSSIBLE ____________________________________________ 66 6) DANGER DU POINTEUR __________________________________________________________ 66 7) TABLEAUX DE POINTEURS________________________________________________________ 67 8) FONCTIONS, PARAMETRES ET POINTEURS ____________________________________________ 69 a) Modification d'une variable passée à une fonction_________________________________ 69 b) Doit-on mettre "&" ou "*" ? ___________________________________________________ 70 c) Fonction renvoyant un pointeur _______________________________________________ 70 9) POINTEUR SUR RIEN – POINTEUR SUR TOUT __________________________________________ 71 10) EXERCICES __________________________________________________________________ 72 11) POINTEUR SUR FONCTION________________________________________________________ 76 a) Généralités _______________________________________________________________ 76 b) A quoi ça sert _____________________________________________________________ 76 c) Exemple _________________________________________________________________ 77 d) Exercice _________________________________________________________________ 78 XI) LES TYPES DERIVES__________________________________________________________ 79 1) LES STRUCTURES _____________________________________________________________ 79 a) Généralités _______________________________________________________________ 79 b) Définition d'une structure ____________________________________________________ 79 c) L'accès aux membres d'une structure __________________________________________ 81 2) LES UNIONS__________________________________________________________________ 82 a) Généralités _______________________________________________________________ 82 b) Définition d'une union _______________________________________________________ 82 c) L'accès aux membres_______________________________________________________ 82 LES LANGAGES Apprentissage du langage "C" Version 2.0 Edition février 2013 Frédéric Lang (fr.lang@free.fr) 6/124 3) LES ENUMERATIONS____________________________________________________________ 83 XII) LE PRE PROCESSEUR ________________________________________________________ 84 1) LA DIRECTIVE "#DEFINE"_________________________________________________________ 84 a) Utilisation ________________________________________________________________ 84 b) Les dangers - Les précautions à prendre________________________________________ 85 c) Les macro définitions internes ________________________________________________ 86 d) Création et suppression de macro définitions lors de la compilation ___________________ 86 2) LA COMPILATION CONDITIONNELLE _________________________________________________ 87 3) L'INCLUSION DES FICHIERS _______________________________________________________ 88 a) Utilisation ________________________________________________________________ 88 b) Les dangers - Les précautions à prendre________________________________________ 89 4) LA GESTION DES CHAINES________________________________________________________ 90 5) LES AUTRES DIRECTIVES ________________________________________________________ 90 XIII) LES PARAMETRES DE "MAIN()" ________________________________________________ 91 1) EXPLICATION _________________________________________________________________ 91 2) SCHEMA ____________________________________________________________________ 92 3) EXEMPLE____________________________________________________________________ 93 XIV) LA BIBLIOTHEQUE STANDARD _________________________________________________ 94 1) GESTION DE LA MEMOIRE ________________________________________________________ 94 a) Fonctions de réservation et de libération de zones mémoires________________________ 94 b) Fonctions de manipulation de zones mémoires ___________________________________ 95 c) Exemple _________________________________________________________________ 96 2) GESTION DES CARACTERES ______________________________________________________ 98 a) Fonctions de vérification de la catégorie du caractère ______________________________ 98 b) Fonctions de modification de la catégorie de caractère_____________________________ 98 c) Dangers _________________________________________________________________ 98 3) GESTION DES CHAINES DE CARACTERES _____________________________________________ 99 4) GESTION DES FICHIERS MODE BUFFER ______________________________________________ 103 a) Fonctions d'ouverture et de fermeture de fichiers _________________________________ 103 b) Fonctions de lecture et d'écriture ______________________________________________ 104 c) Autres fonctions ___________________________________________________________ 107 d) Exercice _________________________________________________________________ 110 5) GESTION DES EXCEPTIONS_______________________________________________________ 113 a) La variable "extern int errno" _________________________________________________ 113 b) La variable "extern const char* const sys_errlist[]"_________________________________ 114 c) La variable "extern int sys_nerr"_______________________________________________ 114 d) La fonction "strerror" ________________________________________________________ 115 e) Fonction "perror()" _________________________________________________________ 116 6) FONCTIONS MATHEMATIQUES _____________________________________________________ 117 XV) ANNEXES ___________________________________________________________________ 118 1) PRIORITES DES OPERATEURS (PAR ORDRE DECROISSANT) ________________________________ 118 2) OPTIONS DE "PRINTF" ET "SCANF"__________________________________________________ 119 3) LES PROBLEMES LES PLUS FREQUENTS______________________________________________ 120 a) Mes affichages ne se font pas au bon moment ___________________________________ 120 b) uploads/Litterature/ langage-c-apprentissage-v2-0.pdf
Documents similaires










-
28
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 26, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.6131MB