Sommaire: Cours langage C – La programmation en C
1. PREMIÈRE PARTIE :INTRODUCTION – DE L’APPLICATIF À L’IMPÉRATIF
1.1. LES LANGAGES DE PROGRAMMATION.
1.1.1. LES LANGAGES FONCTIONNELS
1.1.2. LES LANGAGES IMPÉRATIFS
1.1.3. LES DIFFÉRENCES ENTRE LANGAGES IMPÉRATIFS ET APPLICATIFS
1.2. LANGAGE C
1.2.1. HISTORIQUE
1.2.2. PROGRAMME N°1
1.2.3. UN EXEMPLE DE PROGRAMMATION FONCTIONNELLE EN C
1.2.4. PROGRAMME N°2
1.2.5. LES BOUCLES : PROGRAMME N°3
1.2.6. AFFICHAGE SUR L’ÉCRAN
1.2.7. LECTURE AU CLAVIER
1.2.8. LES TABLEAUX : PROGRAMME N°4
1.2.9. LES BOOLEÉNS : PROGRAMME N°5
1.2.10. TABLEAUX À DEUX DIMENSIONS : PROGRAMME N°6
1.2.11. AFFECTATION
1.2.12. LES STRUCTURES : PROGRAMME N°7
1.2.13. STRUCTURE GÉNÉRALE D’UN PROGRAMME EN C – ORDRE DES DÉCLARATIONS
1.2.14. UNE CARACTÉRISTIQUE DU C: LES CARACTÈRES
1.2.15. EXEMPLE TYPIQUE DE TRAITEMENT DE CARACTÈRES EN C
2. DEUXIÈME PARTIE :TYPES FONDAMENTAUX DU C
2.1. LES ENTIERS
2.1.1. LES CARACTÈRES
2.1.2. LES AUTRES ENTIERS
2.2. LES RÉELS
2.3. LES CONSTANTES
2.3.1. CONSTANTES DE TYPE CHAR
2.3.2. CONSTANTES DE TYPE ENTIÈRES
2.3.3. CONSTANTES DE TYPE LOGIQUE
2.3.4. CONSTANTES DE TYPE RÉEL
2.3.5. CONSTANTES CHAINE DE CARACTÈRES
3. TROISIÈME PARTIE : EXPRESSIONS & OPÉRATEURS
3.1. EXPRESSIONS ET OPÉRATEURS
3.1.1. LES OPÉRATEURS ARITHMÉTIQUES
3.1.2. LES OPÉRATEURS RELATIONNELS
3.1.3. LES OPÉRATEURS LOGIQUES
3.1.4. PRIORITÉS DES OPÉRATEURS
3.1.5. PRIORITÉ DES OPÉRATEURS : EXEMPLES
3.2. AUTRES OPÉRATEURS
3.2.1. OPÉRATEURS BINAIRES
3.2.2. OPÉRATEUR D’AFFECTATION
3.2.3. OPÉRATEUR CONDITIONNEL ET OPÉRATEUR DE SÉQUENCE
3.2.4. OPÉRATEUR D’APPEL DE FONCTIONS ()
3.2.5. OPÉRATEUR SIZEOF
3.2.6. OPÉRATEUR DE CAST (T) A
3.3. CONVERSIONS NUMÉRIQUES
4. QUATRIÈME PARTIE : LES PRINCIPALES INSTRUCTIONS
4.1. IF
4.2. IF … ELSE
4.3. WHILE
4.4. FOR
4.5. DO … WHILE
4.6. BREAK
4.7. CONTINUE
4.8. RETURN;
4.9. RETURN EXPRESSION;
4.10. GOTO ÉTIQUETTE ;
4.11. SWITCH
5. CINQUIÈME PARTIE : LA PROGRAMMATION EN C
5.1. LES FONCTIONS
5.1.1. PRÉSENTATION GÉNÉRALE
5.1.2. DÉFINITION DE FONCTION
5.1.3. DÉCLARATION DE FONCTION
5.1.4. UN PROGRAMME COMPLET EN C
5.1.5. RÉCURSIVITÉ
5.2. STRUCTURE DES PROGRAMMES
5.2.1. CLASSE DE MÉMORISATION
5.2.2. VARIABLES DE CLASSE AUTOMATIQUE
5.2.3. VARIABLES DE CLASSE EXTERNE
5.2.4. VARIABLES DE CLASSE STATIQUE DES PROGRAMMES MONOFICHIERS
5.3. COMMUNICATION ENTRE MODULES
5.3.1. RÈGLES DE COMMUNICATION
5.4. UTILISATION DE MAKE
5.4.1. LA SYNTAXE DU MAKEFILE
6. SIXIÈME PARTIE : LES POINTEURS ET LES TABLEAUX
6.1. POINTEURS ET ADRESSES
6.2. OPÉRATIONS SUR LES POINTEURS
6.3. COMPARAISON DE POINTEURS
6.4. SOUSTRACTION DE POINTEURS
6.5. AFFECTATION DE CHAÎNES DE CARACTÈRES
6.6. POINTEURS ET TABLEAUX
6.7. PASSAGE DES PARAMÈTRES
6.8. POINTEURS ET TABLEAUX MULTIDIMENSIONNELS
6.9. REPRISE DES PREMIERS EXERCICES DE TD.
6.10. TABLEAUX DE POINTEURS
6.11. POINTEURS DE FONCTIONS
6.12. ALLOCATION DYNAMIQUE
7. SEPTIÈME PARTIE :STRUCTURES ET UNIONS
7.1. DÉCLARATION DE STRUCTURE
7.2. INITIALISATION DE STRUCTURE
7.3. ACCÈS À UN CHAMP
7.4. UTILISATION DES STRUCTURES
7.5. TABLEAUX DE STRUCTURES
7.6. STRUCTURES ET POINTEURS
7.7. PASSAGE DE STRUCTURES COMME ARGUMENTS DE FONCTIONS
7.8. STRUCTURES RÉCURSIVES
7.9. LES UNIONS
7.10. SCHÉMAS D’IMPLANTATION
8. HUITIÈME PARTIE :ENTRÉES / SORTIES
8.1. LES E/S FORMATÉES : PRINTF
8.2. LES E/S FORMATÉES : SCANF
8.3. LES E/S : LES FICHIERS
8.4. E/S FICHIERS :LES FONCTIONS DE NIVEAUX 1
8.5. E/S FICHIERS :LES FONCTIONS DE NIVEAUX 2
8.6. LES E/SFORMATÉES
9. NEUVIÈME PARTIE :COMPLÉMENTS
9.1. COMPLÉMENTS 1 : LE PRÉPROCESSEUR
9.1.1. PREMIÈRE UTILISATION : SUBSTITUTION DE SYMBOLES
9.1.2. DEUXIÈME UTILISATION : MACRO-INSTRUCTIONS
9.1.3. TROISIÈME UTILISATION : INCLUSION DE FICHIER
9.1.4. QUATRIÈME UTILISATION : COMPILATION CONDITIONNELLE
9.1.5. LE PRÉPROCESSEUR : OPÉRATEUR #
9.1.6. LE PRÉPROCESSEUR : OPÉRATEUR ##
9.1.7. EXEMPLE DE FICHIER HEADER : DEF.H
9.2. COMPLÉMENTS 2 : ARGUMENTS DE LA LIGNE DE COMMANDE
10. DIXIÈME PARTIE:TYPES DE DONNÉES ABSTRAITS
10.1. LES TYPES DE DONNÉES ABSTRAITS
10.1.1. DÉFINITION 1 :
10.1.2. DÉFINITION 2 :
10.1.3. DÉFINITION 3: INCARNATION D’UN TDA
10.1.4. AVANTAGES DES TDA
10.1.5. INCONVÉNIENTS DES TDA
10.2. LE TDA LISTE
10.2.1. DÉFINITIONS:
10.2.2. HYPOTHÈSES
10.2.3. SIGNATURE DU TDA LISTE
10.2.4. OPÉRATIONS CLASSIQUES SUR LES LISTES
10.2.5. LISTEPRECEDENT
10.2.6. LISTELOCALISER
10.2.7. ALGORITHMES ABSTRAITS SUR LE TDA LISTE
10.3. RÉALISATIONS DU TDA LISTE
10.3.1. MISE EN ŒUVRE DES LISTES PAR CELLULES CONTIGUËS
10.3.2. MISE EN ŒUVRE DES LISTES PAR CELLULES CHAÎNÉES
10.3.3. LISTES SIMPLEMENT CHAÎNÉES SANS EN-TÊTE
10.3.4. LISTES SIMPLEMENT CHAÎNÉES AVEC EN-TÊTE
10.3.5. LISTES SIMPLEMENT CHAÎNÉES CIRCULAIRES
10.3.6. LISTES DOUBLEMENT CHAÎNÉES
10.3.7. MISE EN ŒUVRE DES LISTES PAR CURSEURS (FAUX-POINTEURS)
10.4. COMPARAISON DES RÉALISATIONS
10.5. CONCLUSION
10.6. LISTING DE LA RÉALISATION DU TDA LISTE PAR CELLULES CONTIGÜES
10.7. LISTING DE LA RÉALISATION DU TDA LISTE PAR CELLULE CHAÎNÉE SANS ENTÊTE
11. ONZIÈME PARTIE -SUJETS DE TD ET SOLUTIONS
12. DOUZIÈME PARTIE : SUJETS DE TP
Extrait du cours langage C – La programmation en C
1.1.3. Les Différences entre langages Impératifs et Applicatifs
· La plus importante différence provient du concept d’affectation: il est constitutif des langages impératifs alors qu’il n’existe pas dans un langage purement fonctionnel.
· L’application d’une fonction a pour effet de renvoyer une nouvelle valeur, alors que l’affectation provoque une modification de la valeur d’un objet existant.
· Le problème de l’affectation est que, quand elle est utilisée dans des sous-programmes avec des paramètres passés par référence ou avec des variables non locales, elle peut induire des effets secondaires ou effets de bords.
1.2. Langage C
1.2.1. Historique
- Naissance :1970
- Père :Dennis RITCHIE (Bell AT&T) surPDP 11
- Objectif :Réécritured’UNIX (Ken THOMPSON) écrit jusqu’alors en assembleur et langage B (langage non typé).
- Conséquences :Lesuccès d’Unix, notamment dans les universités américaine a fortement contribué à la popularité du langage C.
- Aujourd’hui C est le langage de programmation sous UNIX
- Réputation : C est un langage d’assemblage portable de haut niveau.
- Attention : Ce qui précède dépend du programmeur et du type d’application que l’on réalise avec C.
- Conclusion : C est un langage évolué permissif, capable de traiter de manière standard des informations de bas niveau très proches de la structure matérielle des ordinateurs (mots,adresses, registres, octets, bits …)
- Définition du langage C :
· Kernighan & Ritchie : le langage C – 1978
· Norme Ansi – 1982
- Bibliographie :
· Le langage C norme Ansi (2ème édition) Kernighan & Ritchie (masson)
· Langage C norme ansi objet » Drix(masson)
· Programmation en C Gottfried (Schaum)
· Le Langage C++ (2ième édition) Stroustrup (Addison Wesley)
1.2.3. Un exemple de programmation fonctionnelle en C
int max (int a, int b)
{
if (a > b)
return a;
else return b;
}
int min (int a, int b)
{
if (a < b)
return a;
else return b;
}
int difference (int a, int b, int c)
{
return (max (a, max(b,c)) – min (a, min (b, c)));
}
int main ()
{ printf (« %d », difference (10, 4, 7)); }
1.2.4. Programme N°2
/* Second Programme en C : Calcul de l’epsilon machine */
void main ()
{
float eps;
float min=0.0, max=1.0;
const int N=30;
int i=0;
while (i<N) {
eps=(min+max)/2.0;
if (1.0 + eps > 1.0)
/* eps est trop grand */
max=eps;
else
/* eps est trop petit */
min=eps;
i=i+1;
}
printf (« On a trouvé %g comme valeur finale\n »,eps);
}
- Ligne 2 : {est placée avant les déclarations
- Ligne 3 : Les variables sont déclarées par le nom du type suivi par les noms de variables. Il n’y a pas d’ordre imposé pour les déclarations.
- Lignes 4&6 : Les variables peuvent être initialisées au moment de leur
- Ligne 7 : La condition d’un whileest entre ()
- Ligne 8 : L’affectation est =
1.2.5. Les boucles : Programme N°3
- On pourrait réécrire la boucle avec un for, ce qui donnerait :
en C
for (i=0 ; i<N ; i++) {
eps=(min+max)/2.0 ;
if (eps+1.0)>1.0
max=eps ;
else
min=eps;
}
- Le bouclage foren C se décompose en trois parties :
· i=0 : initialisation du contrôle
· i < N : condition de bouclage
· i++ : instruction à exécuter avant le rebouclage.
1.2.6. Affichage sur l’écran
- Forme générale de printf printf(« ….format…. », e1, e2, ….);
- Le premier argument est obligatoirement une chaîne de caractères constituée de caractères imprimables, de contrôles (\), et de codes formats (%)
- Exemples de codesformats
· %d, %o, %x pour les entiers
· %f, %e, %g pour les réels
1.2.7. Lecture au clavier
- Lecture par appel de la fonction de la bibliothèque standard, scanf qui fonctionne de façon analogue à printf.scanf(« format »,&v1,&v2,…);
- le format étant constitué ici uniquement de codes formats. Pour lire un entier on utilisera par exemple le code format %d.
- le & signifie que la variable v1 doit être passée par adresse et non par valeur.
………
Cours langage C – La programmation en C (396 KO) (Cours PDF)