Documente Academic
Documente Profesional
Documente Cultură
M. Nassar
q Découvrir le langage C
q Eléments de programmation
q Structures de contrôle
q Les tableaux
q Les structures
q Gestion dynamique de la mémoire
q Programmation modulaire : les fonctions
q Le préprocesseur et la compilation
conditionnelle
q La compilation séparée
2
Section 1
Découvrir le langage C
Présentation du langage C
Forme Générale d'un programme
Compilation d'un programme
Types de données de base
3
Découvrir le langage C Présentation du langage C
Introduction
4
Découvrir le langage C Présentation du langage C
Eléments de base
⇒ Procédures
⇒ Fonctions
⇒ Blocs
⇒ Constantes et Variables
⇒ Structures de contrôle
⇒ …
5
Découvrir le langage C Forme générale d ’un programme
Exemple
Bonjour.c
#include <stdio.h>
main()
{
printf (ʺ″ LANGAGE C \nBonjour… ! ʺ″ );
}
6
Forme générale d ’un programme
Structure d ’un programme
⇒ Fonctions
⇒ Fichiers #include
⇒ Bloc d ’instructions
⇒ Macro-instruction
7
Découvrir le langage C Forme générale d ’un programme
Structure d ’un programme /
Fichiers #include
8
Forme générale d ’un programme
Découvrir le langage C
Structure d ’un programme / Fonction
9
Découvrir le langage C Forme générale d ’un programme
Structure d ’un programme / Bloc d ’instruction
10
Découvrir le langage C Forma générale d ’un programme
Instruction / Macro-instruction
12
Section 2
Eléments de programmation
Constantes et Variables
Fonction printf, Fonction scanf
Expressions, Opérateurs
Conversion de types
13
Eléments de programmation Mots réservés
14
Eléments de programmation Constantes
Constantes entières
Constantes entières
16
Eléments de programmation Constantes
Constantes caractères
17
Eléments de programmation Constantes
Séquences d ’échappement
Séquence………………Effet
\t………………………..tabulation horizontale
\v……………………….tabulation verticale
18
Eléments de programmation Constantes
Séquences d ’échappement
\’’………………………affiche un guillemet
Variable :
• emplacement mémoire contenant une donnée modifiable,
• caractérisée par un nom identificateur et un type.
Syntaxe :
type nomvar1, nomvar2, nomvar3,… ;
• type représente un type de donnée tel que char, int, short, long,
float ou double
Char L ;
int A, B, iNbre_1 ;
float X, Y, fNbre1 ;
21
Eléments de programmation Variables
Affectation
Opérateur d’affectation =
L’instruction
a = 16 ;
permet d’affecter la valeur entière 16 à la valeur a déjà
définie
#include <stdio.h>
23
Eléments de programmation
Entrées/sorties
Fonction de sortie printf : syntaxe
Syntaxe
printf(" chaîne de formatage ", [argument1, argument2,…]) ;
24
Eléments de programmation
Entrées/sorties
Fonction printf : codes de formats
%c…………………….…Caractère ASCII
25
Eléments de programmation
Entrées/sorties
Fonction printf : codes de formats
%s………………Chaîne de caractères
26
Eléments de programmation Entrées/sorties
Fonction printf : Exemple
#include<stdio.h>
main()
{
printf(" Génie ") ;
printf(" Logiciel\n " ) ;
printf(" Formation Langage C\n\n " ) ;
printf(" Les caractères %c et %c ont les codes ASCII :%d et %d \n\n ”,
'A', 'a', 'A', 'a') ;
printf(" %f est un nombre réel \n\ n" , 1.234) ;
printf (" Réels en notation exponentielle :%e %e %e \n " , 123.4,
0.00123, 0.01234e5, 123.40e-6) ;
printf (" %s " , " Fin des exemples " );
}
27
Eléments de programmation
Entrées/sorties
Fonction d ’entrée scanf :syntaxe
Syntaxe :
scanf (" codes formats ", [ adresse1, adresse 2, adresse3,….]) ;
28
Eléments de programmation
Entrées/sorties
Fonction scanf :exemple
#include<stdio.h>
main()
{
char lettre ;
int Nbre1, Nbre2 ;
float Nbre3 ;
29
Eléments de programmation
Entrées/sorties
Fonctions getchar/putchar
30
Eléments de programmation
Expressions
Généralités
Une expression peut être utilisée en tant que valeur dans une instruction
ou autre expression.
int val=6 ;
/* les instructions suivantes sont équivalentes */
printf(" %d ", val=6) ;
printf(" %d ", val) ;
printf(" %d ", 6) ;
31
Eléments de programmation
Expressions
Expressions d ’affectation
if (expression)
instruction
else
instruction
34
Structures de contrôle
Instruction if
Syntaxe et définition
début
faux
expression if (i>0)
printf("Positif\n");
vrai
Instruction i
...
Instruction n
fin
35
Structures de contrôle
Instruction if-else
Syntaxe et définition
début
fin
36
Structures de contrôle
Instruction if-else
Exemples
main()
{
int i, j;
printf("i et j ?\n");
scanf("%d&d ",&i, &j);
if (i>j)
printf( "i est plus grand que j \n");
else
printf("i est plus petit ou égal à j\n");
if (i>j)
{
printf( "i est plus grand ");
printf(" que j \n ");
}
else
printf("i est plus petit ou égal à j\n");
}
37
Structures de contrôle Instruction if-else
Exemples
main()
{
int i, j;
printf("i et j ?\n");
scanf("%d %d ",&i, &j);
if (i>j)
{
printf( "i est plus grand ");
printf(" que j \n ");
}
else
{
printf("i est plus petit ");
printf("ou égal à j\n");
}
}
38
Structures de contrôle
Instruction if-else
Exercices
Exercice 1 :
Écrire un programme C demandant à l ’utilisateur de deviner une lettre.
Ce programme devra indiquer si la réponse donnée est correcte ou non.
La bonne réponse est ‘ a ’ ou ‘ A ’.
Exercice 2 :
Écrire un programme C où l ’utilisateur saisit un caractère, le programme teste
s ’il s ’agit d ’une lettre majuscule, si oui il renvoie cette lettre en minuscule,
sinon il renvoie un message d ’erreur.
39
Structures de contrôle
Instruction switch
Syntaxe et définition
switch (expression)
{
case expression1: instructions
case expression2: instructions
…
default : instructions
}
40
Structures de contrôle Instruction switch
Syntaxe et définition
début
Variable
fin
41
Structures de contrôle
Instruction switch
instruction break
42
Structures de contrôle
Instruction switch
Exemples
main()
{
int i;
printf("i ?\n");
scanf(%d,&i);
switch(i)
{
case 0: printf("la valeur est 0\n");
case 1:
case 2: printf ("la valeur est 1 ou 2\n");
break;
case 3: break;
default: printf ("autre valeur\n");
}
}
43
Structures de contrôle
Instruction switch
Exercice
Exercice1 :
Même exercice que celui de if-else, en utilisant cette fois-ci l’instruction
switch.
44
Structures de contrôle
Boucle while
Syntaxe et définition
while (expression)
instruction
45
Structures de contrôle
Boucle while
Syntaxe et définition
Suite du programme
46
Structures de contrôle
Boucle while
Exemple
main() main()
{ {
int i = 2, j = 7; int i = 2, j = 3;
47
Structures de contrôle
Boucle while
Exercice
Exercice 1 :
Reprendre l ’exercice des devinettes (if-else, switch), sauf que cette fois-
ci, l ’utilisateur a le droit d ’essayer jusqu ’à ce que sa réponse soit
correcte.
Exercice 2 :
Saisir une suite de caractères, compter et afficher le nombre de lettres e et
d’espaces.
48
Structures de contrôle
Boucle do ...while
Syntaxe et définition
do
instructions
while (condition);
49
Structures de contrôle
Boucle do ...while
Syntaxe et définition
Suite du programme
50
Structures de contrôle
Boucle do ...while
Exemples
main()
{
int i = 2, j = 0;
do
{
printf("i :%d et j: %d\n", i,j);
i++;
j--;
}
while (i<j);
}
51
Structures de contrôle
Boucle do ...while
Exercice
Exercice 1 :
Même exercice1 que while, en utilisant cette fois la boucle do-
while.
Exercice 2 :
Écrire un programme affichant les multiples de 2. La sortie se fait
soit par la fonction kbhit, ou par une temporisation (de valeur égale
à 5000).
La fonction kbhit appartient à la bibliothèque conio.h. Cette
fonction teste si un caractère a été frappé au clavier. Tant que ce
n ’est pas vrai kbhit renvoie 0 (ceci signifie que la valeur de la
fonction kbhit est 0)
52
Structures de contrôle
Boucle for
Syntaxe et définition
expr1: initialisation
expr2: la boucle est effectuée tant que cette condition est vraie
expr3: ce qu ’il faut faire à chaque fin de boucle (la mise à jour)
expr1
Bloc d’instructions
Suite du programme
expr3
54
Structures de contrôle
Boucle for
Exemples
main() main()
{ {
int i,j; int i;
for (i=2, j=4; i<5 && j>2; i++, j--) for (i=2; i<5; i++)
printf("i:%d et j:%d\n",i,j); printf("i:%d \n",i);
} }
expr1;
while (expr2)
For (expr1; expr2; expr3) équivalent {
instructions instructions
expr3;
}
55
Structures de contrôle
Boucle for
Exercice
Exercice 1 :
Même exercice que pour while et do-while, cette fois-ci l ’utilisateur n ’a droit
qu ’à 3 essais.
Exercice 2 :
Écrire un programme C où l ’utilisateur saisit un entier n. Le programme devra
calculer et afficher n!.
56
Structures de contrôle
break et continue
Syntaxe et définition
break
instruction permettant de sortir directement d ’une
boucle for, while ou do … while
continue
instruction permettant de passer directement à
l ’itération suivante de la boucle
57
Structures de contrôle
break et continue
Exemples
58
Section 4
Les tableaux
59
Les tableaux Tableaux à une dimension
Déclaration du tableau /syntaxe
Type Nom_Tableau[Nombre_éléments];
60
Les tableaux Tableaux à une dimension
Déclaration du tableau /exemple
tab
Indices 0 1 2 3 4 5
61
Les tableaux Tableaux à une dimension
Accés aux éléments du tableau / Syntaxe
Nom_Tableau[indice_tableau]
62
Les tableaux Tableaux à une dimension
Accés aux éléments du tableau / Exemple
Exercice 1
Écrire un programme qui compte les fréquences des voyelles dans une
saisie.
Le caractère de fin de saisie EOF est produit par une combinaison de
touches : CTRL+Z
65
Section 5
Structures
66
Types de données complexes
Structures
Déclaration/exemple
struct Nom_Structure
{
type_champs1 Champs1,
type_champs1 Champs1,
...
type_champs1 Champs1,
67
Types de données complexes
Structures
Déclaration/exemple
Mot réservé
68
Types de données complexes
Structures
Accès aux données des structures/ syntaxe
nom_variable.nom_membre
ou
nom_pointeur->nom_membre
69
Types de données complexes
Structures
Exemple d’accès direct
main()
{
struct signe{ int jour, mois,
char zodiac[10] ;
}; /*aucune variable*/
struct signe d1, d2 ;
/*2 variables ayant la description signe */
d1.jour = 14 ;
strcpy(d1.zodiac, " bélier ") ;
d2.mois = 11 ;
d2.jour = d1. jour +1 ;
}
70
Types de données complexes Structures
Exemple d’accès via un pointeur
main()
{
struct signe { int jour, mois ;
char zodiac[10] ;
};
struct signe d3, /* variable de struct signe*/
*p1 ; /*pointeur vers var de struct signe */
72
Section 6
Les fonctions
Modularité et Utilisation de fonctions
Types et nombre d'arguments
73
Les fonctions Généralités
Notions de fonctions
74
Les fonctions Généralités
Syntaxe
{
[Définition de variables locales]
[Définitions de variables externes]
[Déclarations de fonctions supplémentaires]
[Instructions]
[Résultats retournés]
}
75
Les fonctions Généralités
Exemple de Déclaration d’une fonction
main()
{
int i, j ; /* variable appartenant uniquement à main */
i=2;
j = triple(i) ; /* appel de la fonction appelée triple */
j = triple(4) ; /* nouvel appel de la fonction */
} /* fin de main */
76
Les fonctions Généralités
Appel d’une fonction
où
i : argument de la fonction (si plusieurs arguments, ils doivent
être séparés par les virgules). un argument peut être une
expression
77
Les fonctions Généralités
Types et nombre d ’arguments
main()
{
float x ;
x = moitie() ; /* ! ! erreur sur nombre d’arguments ! !* /
x = moiti(2, 5) ; /* ! ! erreur sur nombre d’arguments ! ! */
x = moitie(7) ; /* bon */
x = moitie(x) ; /* ! ! erreur sur type d’arguments ! ! */
}
78
Les fonctions Généralités
Types et nombre d ’arguments (suite)
main()
{
float x ;
79
Les fonctions Utilisation des fonctions
main ()
{
int i, j ; /* i, j, x et st ne peuvent être utilisés que dans main*/
char st[10] ;
float x, func3(int) ; /* func3 est une fonction prototype */
func2(char *s)
{
int i, k ;
…
return ; /* sortie de func2 sans valeur retoutnée */
…
}
81
Les fonctions Utilisation des fonctions
func4()
{
printf(" func4 \n ") ; /* pas de return explicite, on quitte la fonction
après la dernière instruction */
}
82
Les fonctions
Les fonctions Utilisation des fonctions
Exercice
83
Les fonctions
Les fonctions Passage d ’arguments par adresse
Définition
84
Les fonctions
Passage d ’arguments par adresse
Exemple
main()
{
int i = 4 ;
triple_val(i) ;
printf("passage argument par valeur : %d\n", i) ;
triple_adr(&i) ;
printf(" passage argument par adresse : %d\n", i) ;
}
{ {
nb = nb*3 ; *nb = (*nb)*3 ;
} }
85