Vous êtes sur la page 1sur 56

Introduction au

langage de
programmation C
PREMIER CO NTAC T

Pr. Hicham OMARA


hichamomara@gmail.com
 Introduction
 Historique
 Composantes de base
Plan  Structure d'un programme C
Premier contact
 Les variables

 Opérateurs et expressions

 Les entrées-Sorties (printf, scanf)

 Les structures de contrôle

PR HICHAM OMARA 2
Introduction
Bien se situer??

Côté utilisateur Côté programmeurs

demande Écrit des programmes


Via le clavier
la sourie
En écrivant du textes #include<stdio.h>
En remplissant un formulaire int main(){
En jouant avec des manettes
printf("bonjour
le monde");
return 0 ;

réponse }

à l’écran
Imprimée sur imprimante
sous forme de son
sous forme d’email envoyé

PR HICHAM OMARA 3
Introduction
Bien se situer??

Exemple

Clique

PR HICHAM OMARA 4
Introduction
Histoire et caractéristiques

 Le langage de programmation C est Inventé au 1972 par Dennis Richie et Ken Thompson,
dans le but de développer le système d'exploitation UNIX.

 Je vous suggère https://c.developpez.com/cours/historique-langage-c/

 C’est un langage impératif généraliste, de bas niveau.

 C est portable, disponible actuellement sur toutes les plateformes.

 II est populaire.

 Il est à la base des langages plus modernes comme C++, C#, Java et PHP ou Javascript.

 C’est un langage compilé : compilateur comme cc ou gcc.

PR HICHAM OMARA 5
Introduction
Environnement de développement (IDE)

 Pour écrire un programme en C, on aura besoin d’un logiciel qui nous permettra de :
1. Un éditeur de texte pour écrire le code source du programme.
comme Notepad, ou autre éditeur intelligent qui colore ou
saisit automatiquement le code.

2. un compilateur pour transformer (compiler) le code


source en code binaire (programme exécutable).

3. un débogueur pour vous aider à retrouver facilement les erreurs dans votre programme, afin de
les corrigées.

 Réellement, Il existe plusieurs environnements de développement. Je vous propose Code::Blocks,


qu’est gratuit et fonctionne sur la plupart des systèmes d'exploitation.
PR HICHAM OMARA 6
Introduction
Environnement de développement (IDE)

 lien de téléchargement :
 http://www.codeblocks.org/downl
oads/binaries

PR HICHAM OMARA 7
Introduction
Environnement de développement (IDE)

 lien de téléchargement :
 http://www.codeblocks.org/do
wnloads/binaries

 Choisissez la version contenant


le compilateur

PR HICHAM OMARA 8
Introduction
Environnement de développement (IDE)

 Il existe aussi sous la version portable

 Choisissez toujours la version contenant le compilateur

PR HICHAM OMARA 9
Introduction
Environnement de développement (IDE)

 L'interface de code- la barre d'outils : elle


comprend de nombreux
blocks est la suivante : boutons;

 On trouve sur sa
fenêtre d'accueil :
la zone de travail : où
 La barre d'outils le programme sera
la liste des
édité;
fichiers du
 La zone de travail projet : affichant
 La liste des fichiers la liste de tous
les fichiers
 La zone de source du la zone de notification : où les
notifications programme; erreurs de compilation seront
affichées.

PR HICHAM OMARA 10
Introduction
Environnement de développement (IDE)

F9
 Ce qui nous intéresse dans la barre d’outils
sont build, run, build & run et rebuild.
 Build : ce bouton envois les fichiers source du
projet au compilateur pour créer un exécutable.
 Run : ce bouton lance le dernier exécutable
compilé. rebuild

 Build & run : c’est la fusion des deux boutons; build


Build & run
(compiler)
 Rebuild: quand vous faites compiler,
run
Code::Blocks ne recompile en fait que les (exécuter)
fichiers que vous avez modifiés et non les autres

PR HICHAM OMARA 11
Introduction  Environnement de développement (IDE)

 Pour créer un nouveau projet :


 cliquez sur le menu File / New /
Project,
 Puis, dans la fenêtre qui s'ouvre,
choisissez Console application,
 Cliquez sur Go.
 Suivez l’assistant, à la fin votre
nouveau projet sera créé.

PR HICHAM OMARA 12
Introduction
Environnement de développement (IDE)

 Ou bien, tout
simplement, Vous pouvez
utiliser le compilateur en
ligne disponible sur le lien
ci-dessous :
https://www.onlinegdb.com/
online_c_compiler

PR HICHAM OMARA 13
Introduction
Les étapes de réalisation d’un programme
La réalisation d’un programme passe par des étapes essentielles :
1. Compréhension du problème;
2. Rédaction d'un algorithme où on met toutes les données et les étapes de la réalisation
du problème;
3. Traduction de l'algorithme en un programme, en respectant la syntaxe du langage;
4. Puis, c'est le compilateur qui s’occupera Convertir le programme en un fichier exécutable

Énoncé du
problème et
algorithme Programme Compilation
Fichier
Cahier des
charges
exécutable
int main () {
0010 0100 1000 bonjour
printf(‘’bonjour’’);
0100 0100 0101
return 0 ;
0001 0011 0001
}
PR HICHAM OMARA 14
Composantes de base

2019/2020 HICHAM OMARA 15


Composantes de base Les composants élémentaires du C

 Dans un programme C, on peut Mots-clefs :


avoir : Phrases int, printf,
return,
 Des mots-clés include

 Des variables
 Des opérateurs
Signe de Variables :
 Des signe de ponctuations ponctuations : Fichier.c x, i, a
, ; ‘’, \
 Des phrases
…

 NB, un programme C sera Opérateurs :


Instructions :
Y = 2*x*x+ x
sauvegardé dans un fichier +-/%
+ 1;
d'extension ".C"
PR HICHAM OMARA 16
Composantes de base Structure d’un programme C

[directive au préprocesseur]

Déclaration des variables

Fonctions secondaires
 En général, Un programme
C doit respecter la structure Fonction principale
int main()
suivante :
{ Début de programme

Déclaration de variables;
Instructions;

} Fin de programme

PR HICHAM OMARA 17
Composantes de base
Structure d’un programme C

/* Exemple de pg en C */
#include<stdio.h>
 Exemple d’un programme simple en C;
int main(){
qui affiche un message de bonjour à
printf("Bonjour");
l’écran.
return 0 ;
}
Composantes de base
Structure d’un programme C

/* Exemple de pg en C */
Commentaire #include<stdio.h>
 Il se débute par /* et se termine par int main(){
*/. printf("Bonjour");
return 0 ;
 Il sert à décrire le programme
}

PR HICHAM OMARA 19
Composantes de base
Structure d’un programme C

#include /* Exemple de pg en C */
#include<stdio.h>
 La directive #include inclut le fichier
(bibliothèque) stdio.h au programme int main(){
avant la compilation. printf("Bonjour");
 Cela nous permet d'utiliser le contenu
return 0 ;
de ce fichier sans avoir à le réécrire. }
Composantes de base
Structure d’un programme C

/* Exemple de pg en C */
La fonction principale main()
#include<stdio.h>
 Elle se trouve obligatoirement dans tous int main(){
les programmes. printf("Bonjour");
 C’est à partir de cette fonction ou le return 0 ;
programme commence son exécution. }

PR HICHAM OMARA 21
Composantes de base
Structure d’un programme C

/* Exemple de pg en C */
Instruction
#include<stdio.h>
 Une instruction est une opération
int main(){
élémentaire qu'un processeur est capable
printf("Bonjour");
d'effectuer.
return 0 ;
 Elle se termine par un point-virgule ;. }

PR HICHAM OMARA 22
Composantes de base
Structure d’un programme C

printf () /* Exemple de pg en C */
#include<stdio.h>
 C'est une fonction de sortie qui s’utilise
pour écrire des messages à l’écran. int main(){
printf("Bonjour");
 printf(’"Bonjour"); est un exemple qui
permet d’afficher le message "Bonjour" à
return 0 ;
l'écran. }

PR HICHAM OMARA 23
Composantes de base
Structure d’un programme C

/* Exemple de pg en C */
scanf (); #include<stdio.h>
 Elle permet de lire des données saisies au int main(){
clavier et de les stocker aux adresses printf("Bonjour");
spécifiées par les arguments de la
return 0 ;
fonctions.
}

PR HICHAM OMARA 24
Composantes de base
Structure d’un programme C

/* Exemple de pg en C */
#include<stdio.h>
Mot-clef return
int main(){
 Il indique la valeur retournée par la printf("Bonjour");
fonction.
return 0 ;
}

PR HICHAM OMARA 25
Les variables

2019/2020 HICHAM OMARA 26


Variables
Définitions

 Une variable est un élément qui peut prendre plusieurs valeurs,


 Ex : ∀ 𝑥𝑥, 𝑦𝑦 ∈ ℝ, ∀ 𝑛𝑛 ∈ ℕ

 Une variable est une information temporaire qu’on stocke dans la RAM;

 Cette information peut être changer pendant le déroulement du programme.

 Une variable est défini par :


 un nom (ou identificateur) : qui fait référence à l’adresse mémoire où la valeur sera
stockée;

 une valeur : le nombre qu’on stocke.


PR HICHAM OMARA 27
Variables
Mémoire vive -RAM

 La mémoire de l’ordinateur se décompose en une suite


continue d’octets.
 Chaque octet de la mémoire est caractérisé par son
adresse et son contenu. Adresse Valeur

1. Les adresses mémoires sont des entiers, permettent à 0 19


l’ordi de se repérer dans la mémoire. Elle se commence à
0, et se termine par la taille de la mémoire.
1 5
2. Les valeurs stockées, on ne peut stocker qu’un nombre par
adresse. 2 46

Ex, pour retenir le chiffre 46, l’ordi le met dans un endroit en


mémoire et garde son adresse N° 2. Et pour le savoir à
545 465 456 545
nouveau, l’ordi cherchera à l’adresse n°2 ce qu'il y a dedans, et TAILLE MEMEOIRE 98
nous renvois la valeur : 46

PR HICHAM OMARA 28
Les types de variables
Définition

 Le C est un langage typé => toute variable, constante ou fonction est d’un type précis.

 Le type d’un objet définit la façon dont il est représenté en mémoire.


Quand une variable est définie, l’ordi lui attribuera une zone mémoire dont la longueur, en
nombre d’octets, est fixée par son type.
Cette zone est référencée par une adresse.

 Les tailles en mémoire dépendent des compilateurs;

 Les types de base en C concernent les caractères, les entiers et les nombres à virgule
flottants (nombres réels).

 Ils sont désignés par les mots-clefs suivants: char, int, float, double, short.
PR HICHAM OMARA 29
Les types de variables
Taille en mémoire

Nom du type Taille mémoire Plage de valeurs acceptée

char 1 octet -128 à 127


Ils permettent de stocker
des nombres entiers int 2 octets -32 768 à 32 767
long int 4 octets -2 147 483 648 à 2 147 483 647
Ils permettent de stocker -38 38
float 4 octets 3.4*10 à 3.4*10
des nombres décimaux (
-308 308
ou nombres flottants) double 8 octets 1.7*10 à 1.7*10

Bien choisir le type de variable, bien profiter de la mémoire


PR HICHAM OMARA 30
Les types de variables
Déclaration

 Pour déclarer une variable on utilise la


syntaxe suivante :
Ex 1 :
Type_variables nom_variable ;
float x; /* ∀ 𝑥𝑥 ∈ℝ */
 On peut déclarer plusieurs variable dans la int y; /* ∀ 𝑦𝑦 ∈ℕ */
même ligne en les séparant par des char c;
virgules. Ex 2 :
int x , y ,z;/* ∀ 𝑥𝑥,𝑦𝑦,𝑧𝑧 ∈ℕ */
Type_variables var1, var2, … , varN ;
char a , b;

En C, toute variable doit être


déclarer avant d’être utilisée.
PR HICHAM OMARA 31
Les types de variables
Initialisation

 On peut initialiser la variable par la


syntaxe suivante, après sa Ex:
int x ; float y;
déclaration :
char c;
x = 3;
nom_var = valeur ;
y= 3.3;
c=‘A’;
 Ou même l’initialiser lors de sa
Ex :
déclaration : int x =3, y=4 , z ;

type_var nom_var = valeur ;


PR HICHAM OMARA 32
Les types de variables
Nom de variable (identificateur)

 Le rôle d’un nom est d’identifier une entité du programme qui peut être une
variable, de fonction ou autres.

 Un nom de variable est une suite de caractères qui peuvent être :


 des lettres (minuscules ou majuscules, mais non accentuées) : { a, … , z } { A, … , Z }

 des chiffres: { 0 , … , 9 }

 de blanc souligné : { - , _ }

PR HICHAM OMARA 33
Les types de variables
Nom de variable (identificateur)

1er 2ème … nème


caractère caractère caractère

ϵ ϵ
{a,..,z}{A,..,Z} {a,..,z}{A,..,Z}{0,..,9}{ - , _ }
Règles

 Le 1er caractère d’un identificateur ne peut pas être


un chiffre. int var1, var_1, prenom, x , y, x0;

 Les majuscules et minuscules sont différenciées. /* sont des identificateurs valides */


int 1x, prénom; /* ne le sont pas */
 Le compilateur peut tronquer les identificateurs au-
delà d’une certaine longueur (31 caractère).

PR HICHAM OMARA 34
Les types de variables
Nom de variable (identificateur)

 Il faut éviter lors d'identification des variables les mots-clefs réservés pour le
langage.

 On y trouve 32 mots clefs :


Les spécificateurs Les spécificateurs Les qualificateurs Les instructions
divers
de stockage de type de type de contrôle

•auto, register, •char, double, •const, volatile •break, • return, sizeof


static, extern, float, int, long, continue, goto,
typedef enum, short, for, do , while, if,
signed, else, switch,
unsigned, struct, case , default
union, void

PR HICHAM OMARA 35
Les opérateurs
une opération a pour forme :
opérande_gauche opérateur opérande_droite ;

2019/2020 HICHAM OMARA 36


Les opérateurs
Quelques définitions

 Un opérateur correspond à une opération calculant un résultat à partir d'une ou de


plusieurs opérandes. Ex, l'opérateur d'addition calcule la somme de deux valeurs numériques.
 En C, les opérateurs sont introduits par des caractères spéciaux et non pas par des mots
clés.
 Addition : + division : / et logique : &&

 Un opérande correspond à la quantité qu'un opérateur peut l'utiliser.


 Ex, 2 + 3 : l'opérateur + accepte deux opérandes (ou bien quantités) : 2 et 3.

 Selon le nombre d'opérandes qu'accepte un opérateur, on distingue trois type


d'opérateurs :
 les opérateurs unaires : ils acceptent un seul opérande (ex: +3, !condition, ...)
 les opérateurs binaires : ils acceptent deux opérandes (ex: 5 * 8, ...)
 l'opérateur ternaire : il n'y en a qu'un seul et il accepte trois opérandes (condition ? trueValue : falseValue)

PR HICHAM OMARA 37
Les opérateurs
Quelques définitions

 Une expression est une combinaison d'opérateurs et d'opérandes syntaxiquement


correct, conduisant à un résultat. Ex : f(x) = ( 2x +1) (x-1) -> f(2) = 5

 Dans un programme, on distingue :


 Les expressions simples, comme la déclaration des variables;

 Les expressions complexes, contenant plusieurs opérateurs et opérandes différentes, comme :


(3+8 * 4/2 – 3 ) && (4+0)

 N.B, l'utilisation de parenthèses est obligatoire dans une expression complexe afin de
contrôler la priorité d'évaluation de ces opérateurs.
 Exemple : expression (5 + 4) * 2 est différente de 5 + 4 * 2.

PR HICHAM OMARA 38
Les opérateurs
L’opérateur d’affectation

/* ce pg affecte */
 Cet opérateur permet d’attribuer une
int main() {
valeur à une variable;
int i, j = 2;
 Il est symbolisé par le signe "=" i = 3;
j = i ;
 Sa syntaxe est la suivante :
/* quelle est la val de i et
j ? */
variable = valeur ; }

PR HICHAM OMARA 39
Les opérateurs
Les opérateurs arithmétiques

 Ils sont des opérateurs binaires permettant


int main (){
de faire les calcules mathématiques
int t, x , y = 3 ;
classiques
t = -y ;

Signe signification x = -y ;

+ Addition t = x + 4 ;

- Changement de signe t = x % y ;

- Soustraction }

* multiplication /* discutons la valeur de chaque variab


le */
/ division
% % reste de la division (modulo )
PR HICHAM OMARA 40
Les opérateurs
Les opérateurs arithmétiques

Cas particulier :

 Si les deux opérandes sont de type entier,


float x;
l’opérateur / produira une division entière
x = 5 / 2;
(quotient de la division).
// affecte à x la valeur 2
 Par contre, il délivrera une valeur flottante dès que x = 5 / 2. ;
l’un des opérandes est un flottant. // affecte à x la valeur 2.5

 L’opérateur % ne s’applique qu’à des opérandes de


type entier.

PR HICHAM OMARA 41
Les opérateurs
Les opérateurs de comparaison
 Leur syntaxe : (expression_1) op (expression_2)
 Le résultat rendu est de type entier :
 1 si la condition est vraie int main (){
 0 sinon int a = 0;
 Ne pas confondre l’opérateur de test d’égalité == int b = 1;
avec l’opérateur d’affection =.
int r1 = a>b;
Signe signification int r2 = a==b ;
> Strictement supérieur return 0 ;
>= Supérieur ou égale }
< Strictement inférieur /* discutons la valeur de chaque variab
<= Inférieur ou égale le */
== Égale
!= différent

PR HICHAM OMARA 42
Les opérateurs
Les opérateurs logiques booléens

 Ces opérateurs retourne un résultat de


int main (){
type entier qui vaut :
int i = 0;
 1 si la condition est vraie int r = i && 3;
 0 sinon; int s = i && 0;
}
/* discutons la valeur de chaque variab
Signe signification le */
&& Et logique
|| Ou logique
! Négation logique

PR HICHAM OMARA 43
Les opérateurs
Les opérateurs d’affectation composée

 Ils ont la forme suivante :


var1 op= var2 ; int main (){
int x = 2;
Elle se traduit par :
int y += x;
var1 = var1 op var2
// y = y + x ;
 Les opérateurs d’affectation composée sont : }
/* discutons la valeur de chaque variab
+=, -=, *=, /=, %= le */

PR HICHAM OMARA 44
Les structures de
contrôle
IF, ELSE, SWITCH, FOR, WHILE, DO, BREAK, CONTINUE, RETURN

2019/2020 HICHAM OMARA 45


Les structures de contrôle
Définition

 Une instruction de contrôle est une instruction qui permet de contrôler


le fonctionnement d’un programme.
 Elle détermine les instructions qui seront exécutées et dans quel ordre.

 Parmi les instructions de contrôle, on distingue :


 Les testes : if, else , switch

 Les boucles : for, while, do

 les sauts (branchements inconditionnels) : break, continue

PR HICHAM OMARA 46
Les structures de contrôle
Les conditions : if---else

 Les conditions permet aux applications de réagir


selon les données des utilisateurs.
2
 La forme la plus simple est celle-ci : Ex : 𝑓𝑓 𝑥𝑥 = + 1 𝑠𝑠𝑠𝑠 𝑥𝑥 ≠ 0
𝑥𝑥
if ( condition ) { float x , fx ;
instruction 1;
… if ( x != 0 ) {
Instruction N; fx = 2 / x + 1 ;
} }

 Si la valeur de la condition est vraie, alors les


instructions qui suivent le test seront exécutées.

PR HICHAM OMARA 47
Les structures de contrôle
Les conditions : if---else

 La forme générale est la suivante :


if ( condition ) { 2/𝑥𝑥 + 1 𝑠𝑠𝑠𝑠 𝑥𝑥 ≠ 0
Ex: 𝑓𝑓 𝑥𝑥 = �
instructions; 1 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠
} float x , fx ;
else {
Instruction ; if ( x != 0 ) { // 𝑠𝑠𝑠𝑠 𝑥𝑥 ≠ 0

} fx = 2 / x + 1;
}
 Si la condition est vraie, alors les
else { // sinon
instructions qui suivent le test seront
fx = 1 ;
exécutées. Sinon, les instructions qui }
suivent else seront exécutées.

PR HICHAM OMARA 48
Les structures de contrôle
switch –le choix multiple-
 Il s'utilise quand on a besoin de tester plusieurs int a = 2;
valeurs, càd, plusieurs if les uns après les autres.
switch (a) {
switch ( expression ) {
case 0 : printf("Votre café ") ; break ;
case const-1: liste d’instructions 1;
break; case 1 : printf("Votre lait ") ; break ;
... case 2 : printf("Votre thé ") ; break ;
case const-n: liste d’instructions n; case 4 : printf("Votre biscuit"); break;
break;
default : printf("Merci de votre visite
default: liste instructions; ");
break;
}
}

 Si la valeur de expression est égale à l’une des constantes, la liste d’instructions correspondant sera exécutée.
 Sinon la liste d’instructions correspondant à default sera exécutée.
 N.B, l'utilisation de default est facultative.

PR HICHAM OMARA 49
Les structures de contrôle
Break; continue ;

break;

 Elle permet d’interrompre le


déroulement de la boucle, et passe à
continue;
la première instruction qui suit la À l'inverse de break; continue
permet de continuer l'exécution
boucle. de la boucle même si la
condition est vérifiée.
 En cas de boucles imbriquées, break
fait sortir de la boucle la plus
interne.
PR HICHAM OMARA 50
Les structures de contrôle
Les boucles

Exemple, Soit la suite numérique suivante :


 Les boucles permettent de répéter une
série d’instructions tant qu'un condition 𝑈𝑈 = 𝑈𝑈𝑛𝑛 + 3
� 𝑛𝑛+1
𝑈𝑈0 = 1
n’est pas valide.
et on veut calculer la valeur de 𝑈𝑈100
 Ceci est possible :
𝑼𝑼𝟎𝟎 = 𝟏𝟏
 en définissant une condition d'arrêt;
𝑼𝑼𝟏𝟏 = 𝑼𝑼𝟎𝟎 + 𝟑𝟑 = 𝟒𝟒
 Tant que la condition est vrai, la boucle s'itère; 𝑼𝑼𝟐𝟐 = 𝑼𝑼𝟏𝟏 + 𝟑𝟑 = 𝟕𝟕
 Une fois la condition est fausse, la boucle …
s'arrête. 𝑼𝑼𝟏𝟏𝟏𝟏𝟏𝟏 = 𝑼𝑼𝟗𝟗𝟗𝟗 + 𝟑𝟑 = ???

PR HICHAM OMARA 51
Les structures de contrôle
while

 Une des façons pour faire une boucle.


 Ci-après la syntaxe de la boucle while: /* pour calculer la val nème
d’une suite */
while (condition) {
int u=1;
instruction 1;
int i = 1 ;

Instruction N; while(i<100)

} {
u = u + 3;
 L’instruction sera exécutée tant que la condition est
i = i + 1 ; // i++ ;
valide.
}
 On peut utiliser le mot-clé break pour arrêter la
boucle;

PR HICHAM OMARA 52
Les structures de contrôle
do … while

 A la différence de la boucle while, la condition est


définie après les instructions.
/* pour calculer la val nème
 Sa syntaxe est : d’une suite */
do { int u=1;
instruction 1; Int i = 1 ;
… do
Instruction N; {
} while ( condition );
u = u + 3;
 L’instruction sera exécutée tant que la condition est i = i + 1 ;
non nulle. } while (i<100);
 On peut utiliser le mot-clé break pour arrêter la
boucle;
PR HICHAM OMARA 53
Les structures de contrôle
for

 for permet de répéter les instructions un certain


nombre de fois. Sa syntaxe est : /* pour calculer la val nème
d’une suite */
for( initialisation; condition; incrémentation ) {
int u=1;
instructions;
for(i = 1; i < 100; i++)
}
 Il a trois instructions : init, condition et incrément, {
mises entre parenthèses et séparées par des ';'
u = u + 3; // u+=3;
 La 1ère est utilisé pour initialiser la variable
}
 La 2ème est la condition d'arrêt pour quitter la boucle
 La 3ème permet d'incrémenter la variable initiée
jusqu'à ce que la condition soit atteinte.

PR HICHAM OMARA 54
Exercice
explicatif

2019/2020 HICHAM OMARA 55


Exercice explicatif

2𝑥𝑥+1
Soit la fonction définie par : 𝑓𝑓 𝑥𝑥 =
3𝑥𝑥−6

Déterminer les limites aux bornes de Df?

Écrire un pg qui permet de calculer f(x) pour les cas suivants :


X=0;

X=2;

X = 1 000 000 000;

2019/2020 HICHAM OMARA 56

Vous aimerez peut-être aussi