Cours langage C les tableaux statiques et les pointeurs
GENERALITES
Historique
Un langage multi-niveaux
Création d’un programme
Structure d’un programme C
Principales caractéristiques
I – ELEMENTS DE BASE
I – Commentaires
II – Les variables
II.1 – Déclaration de variables
II.2 – Initialisation de variables
II.3 – Conversion de type
III – Les constantes
III.1 – Les constantes entières
III.2 – Les constantes flottantes
III.3 – Les constantes caractères
III.4 – Les constantes chaînes de caractères
III.5 – Les constantes nommées
IV – Les opérateurs
IV.1 – Les opérateurs arithmétiques
IV.2 – Les opérateurs logiques
IV.3 – Les opérateurs de traitement binaire
IV.4 – Les opérateurs d’affectation
IV.5 – L’opérateur conditionnel
IV.6 – L’opérateur de taille
IV.7 – Priorités des opérateurs
V – Les entrées – sorties standards
II – STRUCTURES DE CONTROLE
I – Les instructions conditionnelles
I.1 – L’instruction if else
I.2 – L’instruction switch – case
II – Les instructions itératives
II.1- La boucle tant que (while)
II.2- La boucle faire …. tant que (do while)
II.3- La boucle pour (for)
II.4- Ruptures de séquence
III – LES TABLEAUX STATIQUES
I – Tableau statique unidimensionnel
I.1 – Déclaration d’un tableau unidimensionnel
I.2 – Accès aux éléments du tableau
I.3 – Initialisation d’un tableau unidimensionnel
I.4 – Affichage des éléments d’un tableau unidimensionnel
I.5 – détermination automatique de la taille d’un tableau unidimensionnel
II – Tableau statique multidimensionnel
III – Chaînes de caractères
III.1 – Déclaration d’une chaîne de caractères
III.2 – Initialisation de la chaîne de caractères
III.4 – Fonctions permettant la manipulation des chaînes
IV – LES POINTEURS
I – Définition et déclaration
II – Utilisation d’un pointeur
III – Pointeurs et tableaux
III.1 – Tableau unidimensionnel
III.2 – Tableau multidimensionnel – tableau de pointeurs
III.3 – Pointeurs de tableau
III.4 – Pointeurs de fonction
V – ALLOCATION DYNAMIQUE
allocation d’un élément de taille définie – fonction malloc
allocation de plusieurs éléments consécutifs – fonction calloc
changement de taille d’un tableau alloué dynamiquement – fonction realloc
libération de l’espace mémoire – fonction free
VI – LES FONCTIONS
I – Introduction
II – Déclaration d’une fonction – Prototypes
III – Définition d’une fonction
IV – Appel d’une fonction
V – Passage des paramètres
VI – Portée des variables
VII – Bibliothèque de fonctions
VIII – Pointeurs de fonctions
VII – LES STRUCTURES ET LES UNIONS
I – Introduction
II – Déclaration
III – Utilisation de typedef
IV – Utilisation d’une structure
V – Initialisation d’une structure
VI – Transmission d’une structure en argument de fonction
VII – Pointeur de structure VIII – Tableaux de structures
IX – Portée d’une structure
X – Les unions
VIII – LES FICHIERS
I – Introduction
II – Fichier texte – fichier binaire
IV – Ouverture d’un fichier
V – Fermeture d’un fichier
VI – Gestion des erreurs
VII – Accès en lecture
VIII – Accès en écriture
IX – Action sur le pointeur de fichier
X – Complément sur les unités standards d’entrée-sortie
GENERALITES
Historique
o Développé dans les années 1970 par Kernighan et Ritchie aux laboratoires Bell d’AT &T.
o Conçu pour réécrire en langage évolué le système d’exploitation UNIX (1er système d’exploitation) de manière à assurer sa portabilité.
o Actuellement utilisé pour développé des systèmes d’exploitation et pour écrire aussi bien des applications de calcul scientifique que de gestion.
o Le 1er langage à être quasiment disponible sur tout système programmable (PC, station, microcontrôleur …).
o Syntaxe utilisée par plusieurs langage de programmation comme Java par exemple.
o Extension au C++ en 1985 permettant la programmation objet.
Un langage multi-niveaux
C’est un langage très utilisé dans l’industrie car il cumule les avantages d’un langage de haut-niveau (portabilité, modularité, etc…) et ceux des langages assembleurs proches du matériel.
o Langage de haut niveau Programmation structurée (conçu pour traiter les tâches d’un programme en les mettant dans des blocs).
Programmation sous forme de fonctions (sous-programmes).
o Langage de bas-niveau (niveau matériel)
Conçu pour être facilement traduit en langage machine.
Gestion de la mémoire « à la main ».
Création d’un programme
o Edition du programme : écriture du programme source sous un éditeur de texte soit quelconque, soit spécialisé (l’éditeur généralement associé à l’environnement C utilisé) création d’un ou de plusieurs fichiers source avec une extension « .c ».
o Compilation du programme : traduction du programme source en langage machine ou code objet interprété par le processeur. Cette compilation s’effectue en deux étapes :
Le préprocesseur : cette phase examine toutes les lignes commençant par le caractère # et réalise des manipulations sur le code source du programme (substitution de texte, inclusion de fichiers, compilation conditionnelle).
Le compilateur : cette étape est effectuée par le compilateur qui réalise en fait une vérification syntaxique du code source et s’il n’y a pas d’erreur, il crée un fichier avec une extension « .obj ». Le fichier objet est incomplet pour être exécuter car il contient par exemple des appels de fonctions ou des références à des variables qui ne sont pas définies dans le même fichier.
o Edition des liens : cette étape est effectuée par le linkeur qui réalise les liens entre différents programmes objets pour obtenir un programme exécutable. Plusieurs fichiers objets sont mis ensemble pour se compléter mutuellement pour produire un seul fichier exécutable (extension .exe).
Structure d’un programme C
Afin d’écrire des programmes en langage C bien lisibles, il est important de respecter un certain nombre de règles de présentation qui sont :
o ne jamais placer plusieurs instructions sur une même ligne
o utiliser des identificateurs significatifs
o laisser une ligne blanche entre la dernière ligne des déclarations de variables et la première ligne
des instructions
o une accolade fermante est seule sur une ligne et fait référence, par sa position horizontale, au début du bloc qu’elle ferme
o aérer les lignes de programme en entourant par exemple les opérateurs avec des espaces
o commenter judicieusement les programmes
Principales caractéristiques
o Programmation modulaire multi-fichiers : un ensemble de programmes déjà mis au point pourra être réuni pour constituer une librairie.
o Langage déclaratif c’est-à-dire que tout objet (variables, fonctions) doit être déclaré avant d’être utilisé.
o Langage transportable c’est-à-dire séparation entre ce qui est algorithmique (déclarations, instructions) et tout ce qui est en interaction avec le système (allocation mémoire, entrées-sorties).
o Jeu d’opérateurs très riche.