Vous êtes sur la page 1sur 37

Année Universitaire

2019 - 2020

Atelier programmation I
Filière: MPI

Enseignants : Majdi JRIBI


Amina JARRAYA
Plan du cours
 Chapitre 1 : Eléments de base du langage c

 Chapitre 2 : Les structures conditionnelles et itératives

 Chapitre 3 : Les tableaux et les chaines de caractères

 Chapitre 4 : Les pointeurs

 Chapitre 5 : Les fonctions

 Chapitre 6 : Les enregistrements

 Chapitre 7 : Les fichiers


2
Chapitre 1 Eléments de base du langage c

3
Chapitre 1
1- Introduction
2- Structure d’un programme en C
3- Manipulation de variables
3.1- Déclaration de variables et types
3.2- Opérateurs de base
3.3- Conversion de type
3.4- Quelques fonctions de la bibliothèque <math.h>

4- Les fonctions d’affichage et de lecture


4.1- Fonction d’affichage
4.2- Fonction de lecture
4.3- Fonction fflush(stdin)

5- Exercice
4
1- Introduction

 Processus de programmation

Code source
édité
Traduction (mon programme)

• Penser à résoudre un problème quelconque


.c
• Conception d’un algorithme
• Préciser ces entrées et les sorties !
• Structures de données utilisées !
• Description d’un ensemble d'actions
• Exécution dans un certain ordre
• …
• Édition d’un brouillon
5
1- Introduction

 Processus de programmation

Spécification Résolution Codage

Problème Enoncé Algorithme Programme

6
1- Introduction

 Processus de programmation
Mon
programme
Code source (Programme.c)
Analyse du programme
et détection des erreurs .c
lexiques et syntaxiques Compilation

Mon
Code objet (Programme.obj) programme
Combiner différents
fichiers
objets pour créer un fichier
.obj
Edition des liens
exécutable

Programme exécutable
Mon
Résultats fournis par le
(Programme.exe) programme
programme et
Détection d’éventuelles Exécution .exe
erreurs logiques

7
2-Structure d’un programme C

 Un programme C se présente de la façon suivante :


Insertion de bibliothèques à utiliser

void main() /* Programme principal */


{ /* Début du programme */
Déclarations de variables; /* Corps du programme */
Instructions ;
} /* Fin du programme */

Remarque :

Chaque programme C doit renfermer une fonction du nom de « main » (Fonction


principale de chaque programme C).

8
2-Structure d’un programme C

Remarques

 Chaque instruction doit obligatoirement se terminer par ; .

 Le langage C possède assez peu d'instructions, il fait appel à des


bibliothèques.

Exemples :
 math.h : bibliothèque de fonctions mathématiques
 stdio.h : bibliothèque d'entrées/sorties standard (Lire, Ecrire)

 Le langage C distingue les minuscules des majuscules. Les mots


réservés du langage C doivent être écrits en minuscules.

9
2-Structure d’un programme C

Inclusion de la bibliothèque
#include <stdio.h> contenant la fonction d’affichage printf

void main() Pointd'entré


Point d'entré du programme
du programme

{
Début du programme

printf("Bonjour!\n"); Première instruction


10

} Fin du programme
8

10
3-Manipulation de variables
3.1- Déclaration de variables et types
 Prototype
 Une variable est une zone mémoire caractérisée par un:
 Nom
 Type

 Type nom_de_la_variable [= valeur] ;

[…]: Facultatif

Les variables doivent être déclarées avant leur utilisation.

11
3-Manipulation de variables
3.1- Déclaration de variables et types
Les noms des variables sont composés de lettres et de chiffres.
 L’ensemble des symboles utilisables:
 Lettres ‘a’, ’b’,………..., ‘z’, ’A’, ’B’,………., ’Z’.
 Chiffres 0, 1, 2,…….’9’.
 Le symbole ‘_’.

 Le nom d’une variable doit obligatoirement commencer par


une lettre ou le symbole ‘_’.

 Le langage C distingue les majuscules et les minuscules.


NOM et nom sont deux variables différentes.

 Les noms de variables ne peuvent pas être des mots


réservés
(do, else, void,…). 12
3-Manipulation de variables
3.1- Déclaration de variables et types
 Correct / Incorrect ??

Salaire Correct SALAIRE Correct

*SALAIRE Incorrect Salaire_1 Correct

3Salaire Incorrect Salair Correct

Salaire-annuel Incorrect Salaire. Incorrect

Profession du pere Incorrect Profession_du_pere Correct


13
3-Manipulation de variables
3.1- Déclaration de variables et types
 Toute variable doit être déclarée avant son utilisation.

Type NomVariable;
int nbre_occurrence;
float racine;

Une variable peut être initialisée lors de la déclaration.


int nbre_occurrence = 0; float racine =
12.34;
Une variable non initialisée a une valeur
indéfinie.
Plusieurs variables peuvent être
déclarées à la fois.
float x = 23.5, y, z = 3.5*x;

Une variable ne peut être déclarée 14


3-Manipulation de variables
3.1- Déclaration de variables et types
 Exemple d’affectation
NomVariable = Expression;

 Affectation avec des valeurs constantes:


On va ranger une valeur dans une variable.
Temperature = 29;

 Affectation avec des valeurs de variables:


La valeur à placer dans une variable peut provenir d’une autre
variable.
x = 8;
y = x;

 Affectation avec des valeurs d’expressions:


On peut ranger dans une variable le résultat d’un calcul.
x = 5;
y = x * 3;
15
3-Manipulation de variables
3.1- Déclaration de variables et types
Type Description
char caractère
int entier
short entier court
long entier long
float nombres décimaux
double nombres décimaux de précision
supérieure
long double nombres décimaux encore plus précis
unsigned int entier non signé

16
3-Manipulation de variables
3.1- Déclaration de variables et types
 Exemples de déclaration de variables:
 int nb;
 float pi = 3.14;
 char c = 'a';
 long i,j,k;
 double r = 6.2879821365;

17
3-Manipulation de variables
3.1- Déclaration de variables et types
 Déclaration de constantes
Une constante est une donnée dont la valeur ne peut pas varier.

Utilisation de valeurs constantes pour calculer, initialiser des


variables, ...

Une constante ne peut être initialisée qu’à la déclaration.

Déclaration d’une constante: Ajout du qualificateur de type const

void main()
{
const int x = 4;
const float pi = 3.14 ;
...
}
18
3-Manipulation de variables
3.2- Opérateurs de base
Opérateurs arithmétiques :
 + : addition  a + b

 - : soustraction  a – b

 * : multiplication  a * b

 / : division (entière et rationnelle)  a / b


 Si a et b sont des entiers (a = 7; b = 2) a/b
donne 3
 Si a ou b est un réel (a = 7; b = 2.0) a / b donne 3.5

 % : modulo (reste de la division entière)  a % b


 a = 7; b = 2 alors a%b donne 1

19
3-Manipulation de variables
3.2- Opérateurs de base
Opérateurs logiques:
Pas de type booléen en C.
1: vrai ou 0: faux
a
 && : et logique (AND)
0
b 0 0 0 1
 || : ou logique (OR) 0 1 0 1 1
a &&
1 b0 0 1 0
 ! : négation (NOT)
1
a || b 1 1 1 0

Les opérateurs logiques considèrent toute valeur différente de zéro comme


!a
vrai et zéro comme faux.

(4 < 10) 1 (vrai)


!(5 > 1) 0 (faux)
(5 > 1) || !(4 < 8) 1 (vrai)
20
3-Manipulation de variables
3.2- Opérateurs de base
 Opérateurs de comparaison : (1: vrai ou 0: faux)

 == : égal à  a == b

 != : différent de  a != b

 < : strictement inférieur  a < b

 <= : inférieur ou égal  a <= b

 > : strictement supérieur  a > b

 >= : supérieur ou égal  a >= b

Les résultats des opérateurs de comparaison et des opérateurs logiques sont du


type int:
 la valeur 1 correspond à la valeur booléenne vrai.
 la valeur 0 correspond à la valeur booléenne faux.

21
3-Manipulation de variables
3.2- Opérateurs de base
 Exemples
a = 2; valeur de a: 2
 r = 3%2; valeur de r: 1
 a=a+r ; valeur de a: 3
 a = (3==3); valeur de a: 1
 a = (6==5); valeur de a: 0
 a = (2!=3); valeur de a: 1
 a = (6<=3); valeur de a: 0
 a = !1; valeur de a: 0
 a =((3==3) || (6<=3)); valeur de a: 1
 a =((3==3) && (6<=3)); valeur de a: 0

22
3-Manipulation de variables
3.2- Opérateurs de base
 Le langage C autorise des écritures simplifiées pour
l’incrémentation et la décrémentation de variables :
 i = i+1;  i++;
 i = i-1;  i--;
 a = a+b;  a+= b;
 a = a-b;  a-= b;
 a = a * b;  a*= b;
 a = a / b;  a/= b;
 a=i++;  a=i; i=i+1;
 a=++i;  i=i+1; a=i;
23
3-Manipulation de variables
3.3- Conversion de type
 L'opérateur de conversion de type, appelée cast ( ),
permet de modifier explicitement le type d'un objet.
 Syntaxe:
(type) objet
 Exemple:
int i=3, j=2;
float x;
x= (float) i/j; /* x=1.5 */

24
3-Manipulation de variables
3.4- Quelques fonctions de la bibliothèque <math.h>

 sqrt : racine carrée d’un entier ou d’un réel


Exemple : sqrt(16) = 4

 floor et ceil: arrondissement d’un réel


Exemple : floor(2.3) = 2 floor(4.7) = 4
ceil (2.3) = 3 ceil (4.7) = 5

 pow : puissance nième de x (xn)


Exemple : pow(2,3)=23=8
25
4-Les fonctions d’affichage et de lecture

 Utiliser la bibliothèque <stdio.h>


 Pour l’affichage et la saisie, nous devons spécifier
les formats de variables:
 %d: int
 %f: float
 %c: char
 %lf: long double
 %s: les chaînes de caractères

26
4-Les fonctions d’affichage et de lecture
4.1- Fonction d’affichage: printf
 Syntaxe:
printf("chaîne de caractères",variables);

 Exemple: message paramètres

 La partie chaine de caractères peut contenir des caractères


spéciaux par exemple: \n: Retour à la ligne
\t: Tabulation
27
4-Les fonctions d’affichage et de lecture
4.1- Fonction d’affichage: printf

Exemple

// Affichage d’un entier


int x = 5; printf ("%i \n", x);

// Affichage d’un réel


float taille = 1.74; printf
("%f", taille);

// Affichage d’un entier et d’un réel


printf (“%i %f", x, taille);

// Affichage d’un message


printf (“Bonjour”);

// Affichage d’un message et d’un entier


printf (“La valeur de x est %i”, x); 28
4-Les fonctions d’affichage et de lecture
4.1- Fonction d’affichage pour les caractères: putchar

 Syntaxe:
putchar(caractère); printf("%c\n",x);

 Exemple:
Char c= ‘a’;
Putchar(c);

29
4-Les fonctions d’affichage et de lecture
4.2- Fonction de lecture: scanf
 Syntaxe:
scanf("formats",paramètres);

 Exemple: formats paramètres

 Le nom des variables doit être précédé par le


symbole & désignant l'adresse de la variable.
30
4- Les fonctions d’affichage et de lecture
4.2- Fonction de lecture: scanf

Exemple

// Saisie du prix d’un produit


float pu; scanf ("%f", &pu);

// Saisie du jour, mois et année


int j, m, a; scanf ("%i %i %i",
&j, &m, &a);

// Saisie d’un entier et d’un réel


scanf (“%i %f", &j, &pu);

// Saisie d’un message et d’un


entier
printf (“Donner une valeur de x:”);
scanf ( “%i”, &x);
31
4-Les fonctions d’affichage et de lecture
4.2- Fonction de lecture pour les caractères: getchar
 Syntaxe:
Caractère=getchar(); scanf("%c",&x);

 Exemple: Char c;
C=getchar();

32
4-Les fonctions d’affichage et de lecture
Récapitulatif
 Lecture  scanf Écriture  printf
Format Données
%i ou %d Nombre entier
%u Nombre entier non signé
%c Caractère
%f Nombre à virgule flottante

 Lecture d’un caractère : scanf ou getchar()
char lettre;
scanf (“%c”, &lettre) lettre = getchar();
Ecriture d’un caractère : printf ou putchar()
char lettre = ‘A’;
printf (“%c”, lettre) putchar (lettre); 33
4-Les fonctions d’affichage et de lecture
4.3- Fonction fflush(stdin)
 Lorsqu’on saisit un caractère au clavier , on doit le
valider par "RETURN". Ce caractère sera rangé
dans un tampon.

 La fonction scanf ou getchar vérifie tout d’abord le


tampon. S’il n’est pas vide, la variable prend la
valeur du tampon.

34
4-Les fonctions d’affichage et de lecture
4.3- Fonction fflush(stdin)
 Exemple:
#include<stdio.h>
void main()
{
char c1, c2;
printf("Entrer un caractère: ");
scanf("%c", &c1);
printf (“le premier caractère saisi: %c \n ", c1);
printf("Entrer un autre caractère: ");
scanf("%c", &c2);
printf (" le second caractère saisi: %c \n ", c2);
}
 Le programme ne donne pas la main pour saisir le
deuxième caractère.
35
4-Les fonctions d’affichage et de lecture
4.3- Fonction fflush(stdin)
 Solution: utilisation de la fonction fflush(stdin)
avant la deuxième saisie. Cette fonction permet de
vider la tampon
#include<stdio.h>
void main()
{
char c1, c2;
printf("Entrer un caractère: ");
scanf("%c", &c1);
printf (“le premier caractère saisi: %c \n ", c1);
fflush(stdin);
printf("Entrer un autre caractère: ");
scanf("%c", &c2);
printf (" le second caractère saisi: %c \n ", c2);
}
36
5-Exercice

 Écrire un programme C qui permet de calculer et


afficher la somme de 2 entiers saisis au clavier.

37

Vous aimerez peut-être aussi