Programmation en langage C - Inria de Paris
1983, l’ANSI (American National Standards Institute) d´ecida de normaliser le langage; ce travail s’acheva en 1989 par la d´efinition de la norme ANSI C Celle-ci fut reprise telle quelle par l’ISO (International Standards Organization) en 1990 C’est ce standard, ANSI C, qui est d´ecrit dans le pr´esent document 1 2 La compilation
C++ Master 1 IM - unicefr
ce langage fut dailleurs« C with classes » Ce fut en 1998 que le C++ fut normalisé pour la première fois Une autre norme corrigée fut adoptée en 2003 Une mise à jour importante fut C++11, suivie de C++14, ajoutant de nombreuses fonctionnalités au langage Toutes ces normes permettent une écriture indépendante du compilateur Le C++
Cours de C++ - LSV
Cours de C++ Franc¸ois Laroussinie Dept d’Informatique, ENS de Cachan 2 novembre 2005
Informatique Théorique : Théorie des Langages, Analyse
Ce cours se propose d’étudier en détail la notion de langage formel, initialement introduite par Noam Chomsky et son équipe dans le but de formaliser les langues naturelles Si l’application aux langues naturelles a révolutionné leur étude, le but ultime consistant à automatiser le traitement de
Langage UML - projeteuorg
Le langage de modélisation unifié, de l'anglais Unified Modeling Language (UML), est un langage de modélisation graphique à base de pictogrammes conçu pour fournir une méthode normalisée pour visualiser la conception d'un système Il est couramment utilisé en développement logiciel et en conception orientée objet 3-UML odt 3
Les bases de la programmation orientée objet avec Java
Java: un langage et une plateforme Dans la technologie Java, on a donc besoin Du langage de programmation et du compilateur Et plein de commandes bien utiles: jar, javap, javadoc, etc De la JVM et des APIs (Application Programming Interfaces) regroupées dans une « plateforme »:
4 Initiation à lassembleur
A au complet (32 bits), on utilise le nom EAX Pour désigner les 16 bits de poids faible, on utilise AX Pour désigner les 8 bits de poids faible, on utilise AL On utilise AH pour désigner les bits 8 à 15 du registre A Il en va de même pour les trois autres registres de données, B, C et D
[PDF] livre langage c pdf
[PDF] table de division pdf
[PDF] table de multiplication de 12 ? imprimer
[PDF] langage c pdf exercices corrigés
[PDF] cours langage c++ pour débutants pdf
[PDF] cours langage c pdf pour debutant
[PDF] tp corrigé langage c
[PDF] langage c++ cours pdf
[PDF] apprendre le latin livre
[PDF] apprendre latin autodidacte
[PDF] aprender latin pdf
[PDF] cours de francais pour etranger bordeaux gratuit
[PDF] cours de francais pour etranger metz
[PDF] cours de français gratuit vaud
Programmation en langage C
Anne CANTEAUT
INRIA - projet CODES
B.P. 105
78153 Le Chesnay Cedex
Anne.Canteaut@inria.fr
C 2Table des mati`eres3
Table des mati`eres
1 Les bases de la programmation en C 9
1.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 La compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Les composants ´el´ementaires du C . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.1 Les identificateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.2 Les mots-clefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.3 Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Structure d"un programme C . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Les types pr´ed´efinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.1 Le type caract`ere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.2 Les types entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.5.3 Les types flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.6 Les constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.6.1 Les constantes enti`eres . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.6.2 Les constantes r´eelles . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.6.3 Les constantes caract`eres . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6.4 Les constantes chaˆınes de caract`eres . . . . . . . . . . . . . . . . . . . 19
1.7 Les op´erateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.7.1 L"affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.7.2 Les op´erateurs arithm´etiques . . . . . . . . . . . . . . . . . . . . . . . 20
1.7.3 Les op´erateurs relationnels . . . . . . . . . . . . . . . . . . . . . . . . 21
1.7.4 Les op´erateurs logiques bool´eens . . . . . . . . . . . . . . . . . . . . . 21
1.7.5 Les op´erateurs logiques bit `a bit . . . . . . . . . . . . . . . . . . . . . 22
1.7.6 Les op´erateurs d"affectation compos´ee . . . . . . . . . . . . . . . . . . 22
1.7.7 Les op´erateurs d"incr´ementation et de d´ecr´ementation . . . . . . . . . 23
1.7.8 L"op´erateur virgule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.7.9 L"op´erateur conditionnel ternaire . . . . . . . . . . . . . . . . . . . . . 23
1.7.10 L"op´erateur de conversion de type . . . . . . . . . . . . . . . . . . . . 24
1.7.11 L"op´erateur adresse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.7.12 R`egles de priorit´e des op´erateurs . . . . . . . . . . . . . . . . . . . . . 24
1.8 Les instructions de branchement conditionnel . . . . . . . . . . . . . . . . . . 25
1.8.1 Branchement conditionnelif---else. . . . . . . . . . . . . . . . . . 25
1.8.2 Branchement multipleswitch. . . . . . . . . . . . . . . . . . . . . . . 25
1.9 Les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.9.1 Bouclewhile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.9.2 Boucledo---while. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4Table des mati`eres
1.9.3 Bouclefor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.10 Les instructions de branchement non conditionnel . . . . . . . . . . . . . . . . 28
1.10.1 Branchement non conditionnelbreak. . . . . . . . . . . . . . . . . . 28
1.10.2 Branchement non conditionnelcontinue. . . . . . . . . . . . . . . . 28
1.10.3 Branchement non conditionnelgoto. . . . . . . . . . . . . . . . . . . 29
1.11 Les fonctions d"entr´ees-sorties classiques . . . . . . . . . . . . . . . . . . . . . 29
1.11.1 La fonction d"´ecritureprintf. . . . . . . . . . . . . . . . . . . . . . . 29
1.11.2 La fonction de saisiescanf. . . . . . . . . . . . . . . . . . . . . . . . 31
1.11.3 Impression et lecture de caract`eres . . . . . . . . . . . . . . . . . . . . 32
1.12 Les conventions d"´ecriture d"un programme C . . . . . . . . . . . . . . . . . . 33
2 Les types compos´es 35
2.1 Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2 Les structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3 Les champs de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4 Les unions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.5 Les ´enum´erations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.6 D´efinition de types compos´es avectypedef. . . . . . . . . . . . . . . . . . . 41
3 Les pointeurs 43
3.1 Adresse et valeur d"un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.2 Notion de pointeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3 Arithm´etique des pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4 Allocation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.5 Pointeurs et tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.5.1 Pointeurs et tableaux `a une dimension . . . . . . . . . . . . . . . . . . 50
3.5.2 Pointeurs et tableaux `a plusieurs dimensions . . . . . . . . . . . . . . 52
3.5.3 Pointeurs et chaˆınes de caract`eres . . . . . . . . . . . . . . . . . . . . 53
3.6 Pointeurs et structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.6.1 Pointeur sur une structure . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.6.2 Structures auto-r´ef´erenc´ees . . . . . . . . . . . . . . . . . . . . . . . . 56
4 Les fonctions 59
4.1 D´efinition d"une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2 Appel d"une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.3 D´eclaration d"une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.4 Dur´ee de vie des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4.1 Variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.4.2 Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.5 Transmission des param`etres d"une fonction . . . . . . . . . . . . . . . . . . . 64
4.6 Les qualificateurs de typeconstetvolatile. . . . . . . . . . . . . . . . . . 66
4.7 La fonctionmain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.8 Pointeur sur une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.9 Fonctions avec un nombre variable de param`etres . . . . . . . . . . . . . . . . 74
Table des mati`eres5
5 Les directives au pr´eprocesseur 77
5.1 La directive#include. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.2 La directive#define. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.2.1 D´efinition de constantes symboliques . . . . . . . . . . . . . . . . . . . 78
5.2.2 D´efinition de macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.3 La compilation conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3.1 Condition li´ee `a la valeur d"une expression . . . . . . . . . . . . . . . . 79
5.3.2 Condition li´ee `a l"existence d"un symbole . . . . . . . . . . . . . . . . 80
6 La gestion des fichiers 81
6.1 Ouverture et fermeture d"un fichier . . . . . . . . . . . . . . . . . . . . . . . . 81
6.1.1 La fonctionfopen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.1.2 La fonctionfclose. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.2 Les entr´ees-sorties format´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.2.1 La fonction d"´ecriturefprintf. . . . . . . . . . . . . . . . . . . . . . 83
6.2.2 La fonction de saisiefscanf. . . . . . . . . . . . . . . . . . . . . . . . 83
6.3 Impression et lecture de caract`eres . . . . . . . . . . . . . . . . . . . . . . . . 83
6.4 Relecture d"un caract`ere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.5 Les entr´ees-sorties binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.6 Positionnement dans un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7 La programmation modulaire 89
7.1 Principes ´el´ementaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.2 La compilation s´epar´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.2.1 Fichier en-tˆete d"un fichier source . . . . . . . . . . . . . . . . . . . . . 91
7.2.2 Variables partag´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.3 L"utilitairemake. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.3.1 Principe de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.3.2 Cr´eation d"unMakefile. . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.3.3 Macros et abbr´eviations . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.3.4 R`egles g´en´erales de compilation . . . . . . . . . . . . . . . . . . . . . . 97
A La librairie standard 99
A.1 Entr´ees-sorties6Table des mati`eres
A.6 Date et heureB Le d´ebogueur GDB 107
B.1 D´emarrergdb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 B.2 Quittergdb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 B.3 Ex´ecuter un programme sousgdb. . . . . . . . . . . . . . . . . . . . . . . . . 108 B.4 Terminaison anormale du programme . . . . . . . . . . . . . . . . . . . . . . 109 B.5 Afficher les donn´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 B.6 Appeler des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 B.7 Modifier des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 B.8 Se d´eplacer dans la pile des appels . . . . . . . . . . . . . . . . . . . . . . . . 113 B.9 Poser des points d"arrˆet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114B.10 G´erer les points d"arrˆet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
B.11 Les points d"arrˆet conditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . 116 B.12 Ex´ecuter un programme pas `a pas . . . . . . . . . . . . . . . . . . . . . . . . 117 B.13 Afficher la valeur d"une expression `a chaque point d"arrˆet . . . . . . . . . . . 119 B.14 Ex´ecuter automatiquement des commandes aux points d"arrˆet . . . . . . . . . 120 B.15 Les raccourcis des noms de commande . . . . . . . . . . . . . . . . . . . . . . 123 B.16 Utiliser l"historique des commandes . . . . . . . . . . . . . . . . . . . . . . . . 123 B.17 Interface avec le shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 B.18 R´esum´e des principales commandes . . . . . . . . . . . . . . . . . . . . . . . . 124