TS IRIS – LYCEE DIDEROT – 1995/2006 Cours et TP Langage C BTS IRIS – Cours et T

TS IRIS – LYCEE DIDEROT – 1995/2006 Cours et TP Langage C BTS IRIS – Cours et Travaux Pratiques Programmation C A. Lebret, TSIRIS, © Lycée Diderot, 1995/06 en conformité avec le référentiel du BTS IRIS Activité Codage et Réalisation Tâches T3.3, T3.4 et T3.5 Temps nécessaire 64h 1 TS IRIS – LYCEE DIDEROT – 1995/2006 Cours et TP Langage C Table des matières Au sujet des séances de travaux pratiques ...........................................................................................8 1. Présentation du langage C................................................................................................................ 9 1.1. Historique .................................................................................................................................9 1.2. Un premier programme ............................................................................................................9 1.3. Mise en oeuvre ......................................................................................................................10 1.4. Remarques.............................................................................................................................. 11 2. Variables et types fondamentaux....................................................................................................13 2.1. Déclarer une variable pour pouvoir l'utiliser.......................................................................... 13 2.2. Types fondamentaux...............................................................................................................14 2.2.1. Les variables de type caractère uniquement....................................................................14 2.2.1.1. Déclaration et initialisation de variables caractères ............................................ 14 2.2.1.2. Utilisation de l'équivalence entre les caractères et leur représentation ASCII........15 2.2.1.3. Séquences dites d'échappement. .............................................................................16 2.2.2. Les trois types de variables entières................................................................................17 2.2.2.1. Les entiers représentés avec 16 bits (2 octets)........................................................ 17 a) Le type short ou signed short.......................................................................................17 b) Le type unsigned short ............................................................................................... 19 2.2.2.2. Les entiers représentés avec 32 bits et plus (4 octets).............................................20 a) Le type int ou signed int ............................................................................................ 20 b) Le type unsigned int ................................................................................................... 20 c) Le type long ou signed long ...................................................................................... 20 d) Le type unsigned long ................................................................................................ 20 2.2.2.3. Quelques erreurs à éviter avec les entiers............................................................... 20 2.2.2.4. Les notations hexadécimales et octales .......................................................21 2.2.3. Les variables réelles........................................................................................................21 2.2.3.1. Pourquoi les machines calculent-elles toujours faux ?............................................21 2.2.3.2. Les deux types de variables réelles : float, double..................................................23 a) Conditions aux limites des domaines de définition.....................................................23 b) Le type float................................................................................................................ 23 c) Le type double............................................................................................................ 24 2.2.4. Mélange de variables entières et réelles dans une même expression..............................24 3. Opérateurs ......................................................................................................................................26 3.1. L'opérateur d'affectation =......................................................................................................26 3.2. Les opérateurs arithmétiques.................................................................................................. 26 3.2.1. Les opérateurs dits « unaires » .......................................................................................26 3.2.2. Les opérateurs « binaires » ..............................................................................................27 3.2.3. Les opérateurs de manipulation de bits...........................................................................28 3.2.3.1. L'opérateur unaire d'inversion bit à bit : ~ [Alt] 126...............................................28 3.2.3.2. Opérateurs logiques binaires bit à bit : & , | , ^ .............................................. 28 3.2.3.3. Les opérateurs de décalage binaire vers la droite et vers la gauche ......................29 3.2.4. Les opérateurs logiques...................................................................................................30 3.2.4.1. Les opérateurs de comparaison (<, >, <=, >=, !=, ==)...........................................30 3.2.4.2. Les opérateurs logiques (&& , || , !) ........................................................ 30 3.2.5. Les opérateurs spéciaux.................................................................................................. 31 3.2.5.1. L'opérateur ternaire conditionnel ?:.........................................................................31 2 TS IRIS – LYCEE DIDEROT – 1995/2006 Cours et TP Langage C 3.2.5.2. L'opérateur séquentiel ,........................................................................................... 32 3.2.5.3. L'opérateur de transtypage ()...................................................................................33 3.2.5.4. L'opérateur sizeof()................................................................................................. 33 3.2.5.5. Les opérateurs unaires d'adresse et d'indirection & et *..........................................34 3.2.6. Ordre de priorité des opérateurs en C............................................................................. 36 4. Saisir et afficher des données ........................................................................................................ 38 4.1. Lecture et écriture de caractères isolés avec getchar et putchar............................................. 38 4.2. E/S de chaînes de caractères avec gets, fgets et puts..............................................................39 4.3. Afficher avec la fonction printf()............................................................................................39 4.4. Lire avec la fonction scanf()................................................................................................... 42 4.4.1. Saisie de valeurs numériques.......................................................................................... 42 4.4.2. Saisie de caractères ou de chaînes...................................................................................43 4.4.3. Qu'est-ce que ce « tampon » ? .........................................................................................44 4.4.4. Quelques règles de sécurité.............................................................................................45 4.5. Quelques compléments utiles................................................................................................. 45 4.5.1. Vider le tampon après un appel à scanf()........................................................................45 4.5.2. Saisie de chaînes où figurent des espaces....................................................................... 45 4.5.3. Limitation du nombre de caractères saisis par scanf()....................................................47 5. Structures de contrôle.....................................................................................................................48 5.1. Branchements conditionnels...................................................................................................48 5.1.1. La structure de contrôle if .............................................................................................. 48 5.1.2. La structure de contrôle if...else......................................................................................48 5.1.3. La structure de contrôle switch....................................................................................... 49 5.2. Les répétitions.........................................................................................................................49 5.2.1. La boucle while...............................................................................................................49 5.2.2. La boucle for .................................................................................................................. 50 5.2.3. La boucle do...while .......................................................................................................50 5.2.4. Les instructions break et continue ..................................................................................50 5.2.5. Comment faire n fois quelque chose ..............................................................................51 5.2.6. Les pièges infernaux des boucles ...................................................................................51 6. Les fonctions.................................................................................................................................. 53 6.1. Qu'est-ce qu'une fonction ? ...................................................................................................53 6.2. Prototype d'une fonction .......................................................................................................53 6.3. Définition d'une fonction....................................................................................................... 53 6.4. Visibilité des variables dans un programme ..........................................................................54 6.5. Quelques exemples de fonctions ...........................................................................................55 6.6. Déclaration d'une fonction ....................................................................................................55 6.7. Comprendre le passage par valeur ........................................................................................55 6.8. Comprendre la notion de valeur retournée ........................................................................... 56 6.9. Erreurs courantes .................................................................................................................. 57 6.10. Récursivité............................................................................................................................ 57 7. Les tableaux....................................................................................................................................59 7.1. Déclaration et initialisation ....................................................................................................59 7.2. Affectation ............................................................................................................................. 59 7.3. Les débordements .................................................................................................................. 60 7.4. Passage en argument de fonctions ......................................................................................... 60 7.5. Les tableaux à plusieurs dimensions .....................................................................................60 8. Chaînes de caractères..................................................................................................................... 62 3 TS IRIS – LYCEE DIDEROT – 1995/2006 Cours et TP Langage C 8.1. Définition ...............................................................................................................................62 8.2. Fonctions de manipulation de chaînes ..................................................................................62 8.2.1. Afficher une chaîne........................................................................................................62 8.2.2. Saisir une chaîne............................................................................................................. 62 8.2.3. Copier, comparer et mesurer..........................................................................................62 9. Les pointeurs................................................................................................................................. 64 9.1. Définition ..............................................................................................................................64 9.2. Déclaration ............................................................................................................................64 9.3. Les opérateurs & et * ............................................................................................................64 9.4. Manipulation de pointeurs .................................................................................................... 64 9.5. Pointeurs, tableaux et chaînes littérales ................................................................................ 65 9.6. Pointeurs génériques ..............................................................................................................65 9.7. Une utilisation des pointeurs : le passage par adresse ........................................................... 65 9.8. Utilisation avancée ................................................................................................................66 10. Passer des arguments à un programme.........................................................................................67 11. Types de données composés et types dérivés...............................................................................68 11.1. Structures ............................................................................................................................ 68 11.1.1. Créer de nouveaux types de données........................................................................... 68 11.1.2. Des représentations plus proches de la réalité : un code plus clair et un premier pas avant la programmation objet................................................................................................... 68 11.1.3. Déclarer une structure.................................................................................................. 68 11.1.4. Affectation et manipulation des structures...................................................................69 11.1.5. Les champs de bits....................................................................................................... 70 11.1.6. Pointeurs de structures.................................................................................................. 70 11.2. Les énumérations ................................................................................................................. 70 11.3. La directive typedef ............................................................................................................ 71 11.4. Les unions ............................................................................................................................71 11.5. Les structures chaînées........................................................................................................ 75 12. Les champs binaires..................................................................................................................... 78 12.1. Le masquage......................................................................................................................... 78 12.1.1. Exemples de masquages................................................................................................78 12.1.2. Exemples de décalages .................................................................................................81 12.2. Les champs binaires..............................................................................................................82 12.2.1. Définition...................................................................................................................... 83 12.2.2. Déclaration et initialisation........................................................................................... 83 12.2.3. Utilisation......................................................................................................................86 13. Les fonctions de manipulation de fichiers....................................................................................88 13.1. Fichiers bufferisés.................................................................................................................88 13.1.1. Ouverture et fermeture d'un fichier ..............................................................................88 13.1.2. Lecture d'un fichier....................................................................................................... 89 13.1.3. Écriture d'un fichier.......................................................................................................89 13.1.4. Autres fonctions............................................................................................................ 89 13.2. Fichiers « bruts » ...................................................................................................................91 13.2.1. Ouverture et fermeture d'un fichier ..............................................................................91 13.2.2. Lecture d'un fichier....................................................................................................... 92 13.2.3. Écriture d'un fichier.......................................................................................................93 13.2.4. Autres fonctions............................................................................................................ 93 13.3. Fonctions propres au VFS (Virtual File System) de Linux.................................................. 94 4 TS IRIS – LYCEE DIDEROT – 1995/2006 Cours et TP Langage C 13.3.1. Fonctions de gestion des fichiers.................................................................................. 94 13.3.1.1. Modification du nom du fichier.............................................................................94 13.3.1.2. Modification des droits d'accès à un fichier..........................................................94 13.3.1.3. Modification du propriétaire d'un fichier.............................................................. 94 13.3.2. Fonctions de gestion des répertoires............................................................................. 95 13.3.2.1. Création d'un répertoire.........................................................................................95 13.3.2.2. Destruction d'un répertoire....................................................................................95 13.3.2.3. Exploration d'un répertoire....................................................................................95 14. Le préprocesseur...........................................................................................................................97 15. Allocations dynamiques............................................................................................................... 98 15.1. Implantation des variables en mémoire................................................................................ 98 15.2. Allocation dynamique de mémoire.......................................................................................99 15.2.1. Les fonctions malloc() et free().....................................................................................99 15.2.1.1. La fonction malloc()..............................................................................................99 15.2.1.2. La fonction free()...................................................................................................99 15.2.1.3. La fonction calloc()............................................................................................. 102 15.2.1.4. La fonction realloc()............................................................................................102 16. Débogage / debug à l'aide de gdb...............................................................................................104 16.1. Commandes principales .....................................................................................................104 16.1.1. La pose de points d'arrêt..............................................................................................104 16.1.2. Exécution du programme............................................................................................104 16.1.3. Examen des données................................................................................................... 104 17. Programmation système sous Linux...........................................................................................105 17.1. Gestion des processus ........................................................................................................ 105 17.1.1. Les processus ............................................................................................................. 105 17.1.2. Les fonctions d'identification des processus .............................................................. 105 17.1.3. La création de processus ............................................................................................ 106 17.1.4. L'appel système wait() ............................................................................................... 107 17.2. Recouvrement de processus ...............................................................................................108 17.2.1. Le recouvrement de processus ................................................................................... 108 17.2.2. Les appels système de recouvrement de processus ....................................................108 17.2.3. Les signaux ................................................................................................................ 109 17.2.3.1. Introduction ........................................................................................................ 109 17.2.3.2. Liste et signification des différents signaux .......................................................110 17.2.3.3. Envoi d'un signal ................................................................................................ 111 a) Depuis un interpréteur de commandes ..................................................................... 111 b) Depuis un programme en C ......................................................................................111 17.2.3.4. Interface de programmation ............................................................................... 111 a) La fonction sigaction() ............................................................................................. 111 b) La fonction signal() .................................................................................................. 113 17.2.3.5. Conclusion ..........................................................................................................114 17.2.4. Les tuyaux ..................................................................................................................114 17.2.4.1. Introduction ........................................................................................................ 114 17.2.4.2. L'appel système pipe() ........................................................................................115 17.2.4.3. Mise en place d'un tuyau .................................................................................... 115 17.2.4.4. Utilisation des fonctions d'entrées / sorties standard avec les tuyaux ................116 17.2.4.5. Redirection des entrée et sorties standard .......................................................... 119 17.2.4.6. Synchronisation de deux processus au moyen d'un tuyau ..................................120 5 TS IRIS – LYCEE DIDEROT – 1995/2006 Cours et TP Langage C 17.2.4.7. Le signal SIGPIPE ..............................................................................................121 17.2.4.8. Autres moyens de communication entre processus ............................................122 17.2.4.9. Les tuyaux nommés ............................................................................................122 17.2.5. Les sockets ................................................................................................................. 123 17.2.5.1. Introduction ........................................................................................................ 123 17.2.5.2. Les RFC ..............................................................................................................123 17.2.5.3. Technologies de communication réseau .............................................................123 a) La commutation de circuits ...................................................................................... 123 b) La commutation de paquets ......................................................................................124 17.2.5.4. Le protocole IP ................................................................................................... 124 17.2.5.5. Le protocole UDP ...............................................................................................125 17.2.5.6. Le protocole TCP ............................................................................................... 126 17.2.5.7. Interface de programmation ............................................................................... 126 a) La fonction socket() ..................................................................................................126 b) Exemple de client TCP .............................................................................................127 c) Exemple de serveur TCP ..........................................................................................131 17.3. Les interfaces parallèle IEEE 1284 et série RS-232...........................................................135 17.3.1. L'interface parallèle IEEE 1284.................................................................................. 136 17.3.1.1. Structure de l'interface IEEE 1284......................................................................136 17.3.1.2. Les modes de l'interface IEEE 1284................................................................... 137 17.3.1.3. Exemple de connexion avec l'extérieur...............................................................138 17.3.1.4. Programmation de l'interface IEEE 1284............................................................139 a) Accès direct à l'interface parallèle ............................................................................139 b) Accès via le pseudo-fichier /dev/port........................................................................139 c) Accès via l'interface ppdev........................................................................................140 17.3.2. L'interface série RS-232 .............................................................................................141 17.3.2.1. La nécessité d'une transmission série..................................................................141 17.3.2.2. Principe de la transmission série asynchrone......................................................142 17.3.2.3. Normes RS-232 et V24....................................................................................... 143 17.3.2.4. Contrôle de flux...................................................................................................144 a) Matériel (CTS/RTS).................................................................................................. 144 b) Logiciel (XON/XOFF)..............................................................................................145 17.3.2.5. Câble NULL-MODEM....................................................................................... 145 17.3.2.6. Autres interfaces séries........................................................................................145 17.3.2.7. Programmation de l'interface série RS-232.........................................................146 a) Accès direct uploads/Ingenierie_Lourd/ cours-tp-langagec.pdf

  • 14
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager