1 Introduction
1.1 Programmation en langage compile
1.2 Historique du C
1.3 Interets du C
1.4 Généralités
1.5 Exemple de programme C avec une seule fonction
1.6 Structure générale d’un programme C
1.7 Exemple de programme C avec deux fonctions
1.8 Compilation
1.9 Compilateur
2 Types des variables
2.1 Types de base
2.2 Declaration et affectation des variables
2.2.1 Syntaxe et exemples
2.2.2 Valeurs
2.3 Domaine et representation machine des entiers
2.3.1 Domaine des entiers non-signes et signes
2.3.2 Representation machine des entiers
2.3.3 Structure simplifiee de la RAM : declaration de deux entiers
2.3.4 Structure simplifiee de la RAM : affectation de deux entiers
2.4 Valeurs maximales des entiers en C
2.4.1 Valeurs maximales des entiers en C : machine 32 bits
2.4.2 Valeurs maximales des entiers en C : machine 64 bits
2.5 Domaine et precision des flottants
2.5.1 Codage des flottants
2.5.2 Domaine et precision des flottants
2.6 Constantes
2.6.1 Syntaxe
2.6.2 Exemples d’attribut consten C
2.6.3 Exemples d’utilisation de #define
3 Operateurs
3.1 Operateur d’affectation
3.2 Operateurs algebriques
3.3 Operateurs de comparaison
3.4 Operateurs logiques
3.5 Incrementation et decrementation en C
3.6 Operateurs d’affectation composee en C
3.7 Operateur d’alternative en C
3.8 Operateurs agissant sur les bits
3.9 Operateur sizeof en C
3.10 Operateur sequentiel , en C
3.11 Operateurs & et * en C
3.12 Priorites des operateurs en C
4 Entrees et sorties standard elementaires
4.1 Generalites
4.2 Formats d’affichage en C
4.3 Gabarits d’affichage en C
4.3.1 Cas des entiers
4.3.2 Cas des flottants
5 Structures de controle
5.1 Structure if
5.1.1 Exemple de if
5.2 Structure switch
5.2.1 Exemples de switch-case
5.3 Structures it eratives ou boucles
5.3.1 Boucle d efinie (for)
5.3.2 Exemple de boucle for
5.3.3 Boucle ind efinie (while et do.while)
5.3.4 Exemple de boucle while
5.4 Branchements
5.4.1 Exemple de continue
5.4.2 Exemple de break
6 Introduction aux pointeurs
6.1 Interet des pointeurs
6.2 Declaration et affectation
6.2.1 Declaration d’une variable ordinaire (rappel)
6.2.2 Affectation d’une variable ordinaire (rappel)
6.2.3 Declaration d’un pointeur
6.2.4 Affectation d’un pointeur
6.3 Indirection (operateur)
6.4 Initialisation des pointeurs et dissociation
6.5 Bilan concernant la syntaxe des pointeurs
6.6 Tailles des types de base et adresses en C
7 Fonctions en C
7.1 Generalites
7.2 Definition d’une fonction
7.2.1 Exemples de fonctions renvoyant une valeur
7.2.2 Exemple d’une fonction sans retour
7.2.3 Exemple d’une fonction sans argument
7.3 Appel d’une fonction
7.3.1 Appel d’une fonction avec retour
7.3.2 Appel d’une fonction sans retour
7.3.3 Appel d’une fonction sans argument
7.4 Declaration d’une fonction
7.4.1 Declaration au moyen d’un prototype (methode conseillee)
7.4.2 Exemple de declaration et d’appel d’une fonction
7.4.3 Declaration au moyen de la definition (methode deconseillee)
7.5 Quelques fonctions (standards) du C
7.5.1 La fonction principale : main
7.5.2 La fonction exit
7.5.3 Les fonctions printf et scanf
7.5.4 Les fonctions mathematiques (pow, fabs,)
7.5.5 Exemple d’un programme utilisant math.h
7.5.6 Liste des fonctions mathematiques standards
7.6 La portee des variables
7.6.1 Variables globales
7.6.2 Variables locales
7.6.3 Exemple d’un programme utilisant une variable globale
7.7 Passage de parametres dans une fonction
7.7.1 Exemple de passage par valeur : le faux echange
7.7.2 Le faux echange : visualisation de la RAM a l’execution
7.7.3 Exemple de passage par adresse : le vrai echange
7.7.4 Le vrai echange : visualisation de la RAM a l’execution
7.7.5 Bilan sur le passage de parametres
7.8 Retour sur printf/scanf
7.9 Complement sur les fonctions : la recursivite
7.9.1 Exemple de fonction recursive : factorielle
8 Tableaux
8.1 Definition et usage
8.1.1 Exemples de programmes el ementaires utilisant des tableaux 1D
8.1.2 Exemples de programmes el ementaires utilisant des tableaux 2D
8.2 Tableaux de taille fixe
8.2.1 Declaration d’un tableau de taille fixe
8.2.2 Indexation et reference a un element d’un tableau
8.2.3 Declaration d’un tableau 1D : visualisation de la RAM
8.2.4 Affectation d’un tableau
8.2.5 Affectation d’un tableau 1D : visualisation de la RAM
8.2.6 Affectation d’un tableau 2D : visualisation de la RAM
8.2.7 Ordre des elements de tableaux 2D en C
8.3 Inconvenients des tableaux de taille fixe
8.3.1 Directive preprocesseur (ancienne methode)
8.3.2 Declaration tardive et tableau automatique (methode conseillee)
8.3.3 Exemple de programme utilisant un tableau automatique
8.4 Tableaux et pointeurs en C
8.4.1 Notions de base
8.4.2 Arithmetique des pointeurs
8.4.3 Retour sur l’ordre des elements de tableaux 2D en C
8.4.4 Sous-tableau 1D avec un pointeur
8.4.5 Tableaux 2D et pointeurs
8.4.6 Utilisation de typedef
8.5 Fonctions et tableaux
8.5.1 Passage de tableaux de taille fixe (pour le compilateur)
8.5.2 Exemple de passage d’un tableau 1D de taille fixe
8.5.3 Exemple de passage d’un tableau 2D de taille fixe
8.5.4 Passage de tableau de taille inconnue a la compilation
8.5.5 Exemple de passage d’un tableau 1D de taille variable
8.5.6 Exemple de passage d’un tableau 2D de taille variable
8.5.7 Limite des tableaux automatiques
9 Allocation dynamique (sur le tas)
9.1 Motivation
9.2 Allocation dynamique avec malloc ou calloc
9.3 Liberation de la memoire allouee avec free
9.4 Attention aux fuites de memoire
9.5 Exemple d’allocation dynamique d’un tableau 1D
9.6 Exemple d’allocation dynamique d’un tableau 2D
9.7 La bibliotheque libmnitab
9.7.1 Exemple de passage d’un tableau dynamique 1D
9.7.2 Exemple de passage d’un tableau dynamique 2D
9.8 Bilan sur l’allocation de memoire
1 Introduction
1.1 Programmation en langage compile
Conception, ecriture et execution d’instructions destinees a etre traitees de manière automatique par un appareil informatique
– conception : definir l’objectif du programme et la methode a utiliser ) algorithmique
– codage : ecrire le programme suivant la syntaxe d’un langage de haut niveau,portable et utilisant des bibliotheques : C, fortran, …) code source : fichier texte avec instructions commentees comprehensibles pour le concepteur… et les autres
– compilation : transformer le code source en un code machine ) code objet puis code executable : fichiers binaires comprehensibles par la machine (le processeur)
– execution : tester le bon fonctionnement du programme ) exploitation des capacit es de l’appareil informatique et production de resultats
1.2 Historique du C
– langage concu dans les annees 1970
– 1978 : parution de The C Programing Langage de B. KERNIGHAN et D. RICHIE
– developpement li e a la diffusion du systeme UNIX
– 1988–90 : normalisation C89 ANSI–ISO (bibliotheque standard du C)
Deuxieme edition du KERNIGHAN et RICHIE norme ANSI
– 1999 : norme C99 en cours d’implementation :
http://gcc.gnu.org/c99status.html
Ajout de nouveaux types (booleen, complexe, entiers de diverses tailles (prise en compte des processeurs 64 bits), caracteres etendus (unicode), …).
Méthodes numériques et informatiques – langage C (832 KO) (Cours PDF)