Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Cours d’informatique
Programmation C
Filière: MASS S2
1
I. Introduction Langage de programmation
Langage de programmation
Problème
Un langage de programmation est un
La programmation
Programmation
La programmation est l’activité de
2
I. Introduction Langage C
• Le C est un langage compilé. Cela signifie qu'un programme C est décrit par
processeur.
3
Etapes permettant l‘édition, la mise au point,
I. Introduction
l‘exécution d'un programme
Bibliothèques précompilées
Code compilé .OBJ
Stdio.lib
Édition de liens
Stdio.lib
…….
Programme exécutable .EXE
4
Etapes permettant l‘édition, la mise au point,
I. Introduction
l‘exécution d'un programme
a = 10 ; /* affectation* /
b = 50 ; /* affectation */
} 6
I. Introduction Structure d’un programme
[directives au préprocesseur]
[déclarations de variables externes]
[fonctions secondaires]
void main()
{
déclarations de variables internes
instructions
} 7
2. Les variables Les variables
• Les variables sont les données que manipulera le programme lors de son
Syntaxe:
<Type> <NomVar1>,<NomVar2>,...,<NomVarN>;
8
2. Les variables Les types des variables
9
2. Les variables Déclaration des variables
Exemple:
Les trois instructions suivantes sont des « déclarations des variables » :
int i, j, k, l ;
int a1, a2;
float x ;
double x1, x2;
Remarque:
1. Le langage C permet l'initialisation des variables dans la zone des déclarations:
char c = 'A'; int i = 50; float a=3.5;
2. Les noms des variables doivent commencer par une lettre et ne contenir aucun
blanc. Le seul caractère spécial admis est le soulignement ( _ ).
3. Il existe un certain nombre de noms réservés par le langage C à un usage bien
défini et ne peuvent pas être utilisés pour nommer les variables.
10
2. Les variables Déclaration des variables
Exercice:
Lesquels des identificateurs suivants sont acceptés par le langage C ?
1. prix1
2. prix.2
3. 1prix
4. -prix-3
5. prix_2 _prix_3
6. prix_hors_taxe
7. Prix hors taxe
8. deuxième_prix
9. français
11
2. Les variables Définir un nouveau type
Syntaxe:
typedef déclaration;
Exemple:
12
3. Les constantes Déclaration des constantes
En utilisant l'attribut const, nous pouvons indiquer que la valeur d'une variable ne
Syntaxe:
Exemple:
const int X = 200;
const double e = 4.715
Const char a=‘t’
13
3. Les constantes Déclaration des constantes
Constantes entières
2. La notation octale: qui doit commencer par un zéro par exemple 0573
3. Le notation hexadécimale, qui doit commencer par un zéro suivi d'un x (ou
14
3. Les constantes Déclaration des constantes
Constantes réelles
Pour les constantes réelles, on utilise le « . » pour marquer la virgule et le
caractère "e" suivi d'un nombre entier.
Exemple:
-0.38 -.38 4.
• Instruction simple:
Les instructions simples finissent toujours par un ' ;‘
Syntaxe:
Instructions ;
Exemple
a=a+1;
16
4. Les instructions Instructions composées
• Instructions composées
Les instructions composées qui permettent de considérer une succession
d'instructions comme étant une seule instruction. Elles commencent par ‘’ {‘’ et
finissent par ‘’}’’
Syntaxe:
{
Instructions 1 ;
Instruction 2;
……………..
}
Exemple
{
a=a+1;
b=b+2;
}
17
5. Les opérateurs Les opérateurs
4. L’opérateur d’affectation
18
8. L’opérateur sizeof
5. Les opérateurs Les opérateurs arithmétiques
19
5. Les opérateurs Les opérateurs arithmétiques
Remarque:
1. Le résultat d’une opération entre types différents se fait dans le type le plus
haut. Les types sont classés ainsi : char < int < long < float < double
Exemple:
int p1, p2,p3;
float x;
20
5. Les opérateurs Les opérateurs arithmétiques
dans une même expression, les règles sont naturelles et rejoignent celles de
l’algèbre traditionnelle
21
5. Les opérateurs Les opérateurs relationnelles
Remarque:
Le résultat de la comparaison est, non pas une valeur "booléenne" prenant l'une
des deux valeurs vrai ou faux, mais un entier valant :
• 0 si le résultat de la comparaison est faux.
• 1 si le résultat de la comparaison est vrai.
22
5. Les opérateurs Les opérateurs logiques
Exemple:
(a<b) || (c<d)
! (a<b)
23
5. Les opérateurs L’opérateur d’affectation " ="
Exemple:
a =12;
b = 2;
c = a+b;
a = b+c;
a = a+1;
Quelles seront les valeurs des variables a, b et c après exécution des instructions
suivantes ?
24
5. Les opérateurs Les opérateurs d’incrémentation
Exemple:
i++ ; i=i+1
i-- ; i=i-1
25
5. Les opérateurs Les opérateurs d’affectation élargie
Exemple :
j=i++; effectue d’abord j=i et ensuite i=i+1
j=++i ; effectue d’abord i=i+1 et ensuite j=i
i+=5; i=i+5;
i-=3; i=i-3 ;
i*=4; i=i*4;
i/=2; i=i/2 ;
I*=a i=i*a;
26
5. Les opérateurs Les opérateurs de conversion de type
Syntaxe:
(<Type>) <Expression>;
Exemple:
int A=3;
int B=4;
float C, D;
C = (float)A/B;
D= (float)(A/B+A);
27
5. Les opérateurs L’opérateur sizeof
Taille_objet= sizeof(<Type>) ;
Exemple:
Exemple: n = sizeof(char);
Résultat n=1
28
6. Les entrées-sorties La fonction printf ( )
Syntaxe:
printf("chaîne de caractères" ,variables);
Exemple:
printf(" liste des variables: \n");
printf(" variable 1: );
29
Les entrées-sorties La fonction printf ( )
Exemple :
int i=1;
int j=2;
printf ("la somme de i et j est:\n");
printf ("i = %d \t j= %d \n",i,j);
printf ("i +j= %d ”,i+j);
Affichage sur l’écran
la somme de i et j est:
i=1 j=2
i+j=3
Syntaxe:
32
6. Les entrées-sorties La fonction scanf( )
Exemple:
char a;
int i;
float r;
33
6. Les entrées-sorties Impression et lecture de caractères
caractere = getchar();
putchar(caractere);
Exemple:
int C;
C = getchar();
Remarque
Ce sont des instructions qui permettent de faire des tests et des boucles dans un
programme.
1. L’instruction if
2. L’instruction switch
3. L’instruction do …… while
4. L’instruction while
5. L’instruction for
35
7. Les instructions de
L‘instruction if
contrôle
Syntaxe:
if (expression logique)
{ if (expression logique)
bloc d’instructions_1; Instruction_1;
}
else Instruction_2;
{
bloc d’instructions_2;
}
b lo c d '
bloc 1 d' bloc 2 d'
i n s t r u c ti o n s
instructions instructions
s u i te d u p r o g r a m m e
suite du programme
if (expression)
{ if (expression)
bloc 1 d'instructions {
} bloc d’instructions
else }
{ Suite du programme
bloc 2 d'instructions
}
37
Suite du programme
7. Les instructions de
L‘instruction if
contrôle
Exemple:
if (note_module <10)
printf("Attention vous avez un rattrapage");
else
printf("vous avez validé le module");
if (note_module <10)
printf("Attention vous avez un rattrapage");
printf("vous avez validé le module");
38
7. Les instructions de
L‘instruction if imbriquée
contrôle
Syntaxe:
If (expression logique 1 )
instruction 1;
Else if (expression logique 2)
instruction 2;
else
instruction 3;
Exercice:
Écrire un algorithme qui permet de résoudre l’équation du second
degré ax2+bx+c, les trois coefficients a, b et c seront saisis au clavier
avant le traitement.
39
7. Les instructions de
L‘instruction switch
contrôle
Syntaxe:
Exemple:
void main()
Résultat 1
{
donnez un entier : 2
int n ;
deux
printf ("donnez un entier : ") ;
fin
scanf ("%d", &n) ;
_______
switch (n)
{
Résultat 2
case 0 : printf ("nul\n") ;
donnez un entier : 25
break ;
grand
case 1 : printf ("un\n") ;
Fin
break ;
case 2 : printf ("deux\n") ;
break ;
default : printf ("grand\n") ;
}
printf (" fin") ;
}
41
7. Les instructions de
L‘instruction while
contrôle
42
7. Les instructions de
L‘instruction do - while
contrôle
while (expression)
{
oui non
condition bloc d’instructions
}
vraie
bloc d'
instructions Exemple:
int i = 1;
while (i < 10)
{
printf("\n i = %d",i);
i++;
}
43
7. Les instructions de
L‘instruction do - while
contrôle
Syntaxe:
Do
{
<bloc d'instructions>
}
while ( expression );
44
7. Les instructions de
L‘instruction do - while
contrôle
do
bloc d' {
bloc d’instructions
instructions }
while (expression);
non
condition
oui vraie
suite du programme
45
7. Les instructions de
L‘instruction do - while
contrôle
Exemple:
int N;
do
{
printf("Introduisez un nombre entre 1 et 10 :");
scanf(" %d", &N);
}
while (N<1 || N>10);
46
7. Les instructions de
L‘instruction for
contrôle
Exemple
47
7. Les instructions de
L‘instruction for
contrôle
i=0
i<20
non for(i=0 ; i<20; i++)
oui {
bloc d’instructions
}
bloc d'instructions Suite du programme
48
7. Les instructions de
L‘instruction for
contrôle
Remarque
for ( expression_1 ; expression_2 ; expression_3) expression_1 ;
while (expression_2)
Instruction; {
instruction
expression_3 ;
}
Exemple
Exercice
Ecrire un programme qui calcul an
49
7. Les instructions de
Comparaison
contrôle
Nombre
d’itérations
connu?
n Ou
N o i
Boucle for
Traitement exécuté
au moins une fois ?
No
n
ui
O
Boucle while
Boucle do……..while
7. Les instructions de Les instructions de branchement
contrôle inconditionnel
1. break
2. continue
3. goto
51
7. Les instructions de Les instructions de branchement
contrôle inconditionnel
main() Résultat
{
int i; i=0
for (i = 0; i < 5; i++) i=1
{
printf("i = %d\n",i); i=2
if (i == 3) i=3
break;
} valeur de i a la sortie de la
printf("valeur de i a la sortie de la boucle boucle = 3
= %d\n",i);
}
52
7. Les instructions de Les instructions de branchement
contrôle inconditionnel
Syntaxe:
type nom_du_tableau[N]
Remarques:
• un élément du tableau est repéré par son indice.
• l'accès au premier élément du tableau se fait par T[0]
• l'accès au dernier élément du tableau se fait par T[N-1]
Exemples:
int notes[10];
float moy[20];
notes[2] = 5;
moy[i] = 6.789;
printf("%d",notes[4]);
scanf("%f",&moy[i]);
Exercice:
Écrire un programme qui permet de saisir et écrire un tableau T à une
dimension.
56
8. Les tableaux Les tableaux uni-dimensionnel
57
8. Les tableaux Initialisation et réservation automatique
Exemple
int liste[10] = {1,2,4,8,16,32,64,128,256,528};
int A[5] = {10, 20, 30, 40, 50};
float B[4] = {-1.05, 3.33, 87e-5, -12.3E4};
Remarque:
Si la liste ne contient pas assez de valeurs pour toutes les composantes, les
composantes restantes sont initialisées par zéro.
int A[5] = {10, 20} ↔ int A[5] = {10, 20, 0, 0, 0};
A 10 20 0 0 0
A[0] A[1] A[2] A[3] A[4]
58
8. Les tableaux Les tableaux à deux dimensions
Exemples:
A[2][4] = 5;
R[i][j] = 6.789;
printf("%d" ,&A[i][j]);
scanf("%f", &R[i][j]);
59
8. Les tableaux Les tableaux à deux dimensions
Remarques:
• un élément du tableau de deux dimensions est repéré par ses indices T[i][j].
• l'accès au premier élément du tableau se fait par T[0][0].
• l'accès au dernier élément du tableau se fait par T[L-1][C-1] .
Exemple
Le tableau A[C][L]
A[0][0] A[0][1] A[0][2] ... A[0][C-1]
A[1][0] A[1][1] A[1][2] ... A[1][C-1]
A[2][0] A[2][1] A[2][2] ... A[2][C-1]
... ... ... ... ...
A[L-1][0] A[L-1][1] A[L-1][2] ... A[L-1][C-1]
60
8. Les tableaux Initialisation et réservation automatique
Exemples
int A[3][10] = {{ 0,10,20,30,40,50,60,70,80,90},
{10,11,12,13,14,15,16,17,18,19},
{ 1,12,23,34,45,56,67,78,89,90}};
Exercice:
Ecrire un programme qui permet de remplir un tableau de deux dimension T[6]
[10] puis affiche ces éléments. 61
8. Les tableaux Initialisation et réservation automatique
Lors de l'initialisation, les valeurs sont affectées ligne par ligne en passant de
gauche à droite. Nous ne devons pas nécessairement indiquer toutes les
valeurs: Les valeurs manquantes seront initialisées par zéro.
62
8. Les tableaux Les tableaux à plusieurs dimensions
type nom_du_tableau[dim_1][dim_2][dim_3]……[dim_N]
Exemples:
int A[4][5][10]; déclaration d’un tableau de 3 dimensions.
Float R[2][10][4][20]; déclaration d’un tableau de 4 dimensions.
A[0][0][0] = 5;
R[i][j][k][l] = 6.789;
printf("%d" ,&A[i][j][k]);
scanf("%f", &R[i][j][k][l]);
Exercice:
Ecrire un programme qui permet de remplir un tableau de trois dimensions T[6]
[200][100] puis affiche ces éléments. 63
9. Les chaînes de
Déclaration d’une chaîne de caractères
caractères
Ou bien
char *nomVariable;
nom = (char*)malloc(Longueur);
char *nom;
Exemples nom = (char*)malloc(20);
char nom [20];
char *prenom;
char prenom [25]; nom = (char*)malloc(25);
char phrase [30]
char *phrase;
nom = (char*)malloc(30); 64
9. Les chaînes de
Déclaration d’une chaîne de caractères
caractères
Exemple:
char TXT[10] = "BONJOUR !";
65
9. Les chaînes de
Initialisation d’une chaîne de caractère
caractères
Exercice:
Lesquelles des chaînes suivantes sont initialisées correctement ? Corrigez les
déclarations fausses
1. char a[ ] = "un\ndeux\ntrois\n";
2. char b[12] = "un deux trois";
3. char c[] = 'abcdefg';
4. char d[10] = 'x';
5. char e[5] = "cinq";
6. char f[] = "Cette " "phrase" "est coupée";
7. char g[2] = {'a', '\0'};
8. char h[4] = {'a', 'b', 'c'};
66
9. char i[4] = "'o'";
9. Les chaînes de
Lecture et écriture d’une chaîne de caractères
caractères
67
9. Les chaînes de
Lecture et écriture d’une chaîne de caractères
caractères
char texte[10];
scanf("%s",texte);
Une chaîne étant un pointeur, on n'écrit pas le symbole & dans la fonction
scanf.
68
9. Les chaînes de
Lecture et écriture d’une chaîne de caractères
caractères
#include <stdio.h>
main()
{
char nom[20], prenom[20], ville[25] ;
printf ("quelle est votre ville : ") ;
gets (ville) ; // scanf("%s",ville);
printf ("donnez votre nom et votre prénom : ") ;
gets(nom); // scanf ( %s", nom) ;
gets(prenom); // scanf (“%s“, prenom) ;
printf ("bonjour cher %s %s qui habite à %s", prenom, nom, ville) ;
}
Résultat:
quelle est votre ville : casablanca
donnez votre nom et votre prénom : wafae sabbar
69
bonjour cher wafae sabbar qui habites à casablanca
9. Les chaînes de
Lecture et écriture d’une chaîne de caractères
caractères
70
9. Les chaînes de
Application
caractères
#include <stdio.h>
#include <malloc.h>
void main()
{
char *phrase;
int compt_espace = 0, compt_e = 0,i;
phrase=(char*)malloc(20); /* reserve 20 places */
72
9. Les chaînes de
fonctions de manipulation de chaînes.
caractères
Exemple
#include <stdio.h>
#include <string.h> Résultat
main() avant : bonjour
{ après : bonjour monsi
char ch1[50] = "bonjour" ;
char ch2 [20]= " monsieur" ;
printf ("avant : %s\n", ch1) ;
strncat (ch1, ch2, 6) ;
printf ("après : %s", ch1) ;
75
}
9. Les chaînes de
fonctions de manipulation de chaînes.
caractères
76
10. Les fonctions Introduction
Appel fonction 2
Appel fonction 1
Fonction 2
77
10. Les fonctions Déclaration d’une fonction
Syntaxe:
La première ligne de cette définition est l'en-tête de la fonction. Dans cet en-
tête, type désigne le type de la fonction, c'est-à-dire le type de la valeur qu'elle
retourne.
Une fonction qui ne renvoie pas de valeur est une fonction dont le type est
spécifié par le mot-clef void.
78
10. Les fonctions Application
79
10. Les fonctions Fonction de type void
Une fonction ne renvoyant rien au programme est une fonction de type void.
Exemple:
80
9. Les fonctions Appel d'une fonction dans une fonction
81