0% ont trouvé ce document utile (0 vote)
30 vues55 pages

Progc 1

Ce document présente un atelier de programmation en langage C, incluant une introduction aux caractéristiques du langage, ses éléments de base, et des exemples de code. Il aborde également la structure d'un programme C, la compilation, et l'utilisation de compilateurs. Enfin, il décrit les variables et les types de données en C, ainsi que les règles pour les identificateurs.

Transféré par

mohamedazizsoufargi099
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
30 vues55 pages

Progc 1

Ce document présente un atelier de programmation en langage C, incluant une introduction aux caractéristiques du langage, ses éléments de base, et des exemples de code. Il aborde également la structure d'un programme C, la compilation, et l'utilisation de compilateurs. Enfin, il décrit les variables et les types de données en C, ainsi que les règles pour les identificateurs.

Transféré par

mohamedazizsoufargi099
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Atelier de Programmation 1

Langage C

Mohamed Lazhar Bellagha


bellaghamohamed@[Link]

FSM de Monastir 2024-2025


LSI1

Joindre votre Classroom


Code du cours: nwayi4v
Plan

 1: Introduction (présentation du langage C, caractéristiques, … )

 2: Les éléments de base du langage C

 3: Les entrées-sorties

 4: Les opérateurs

 5: Les structures de contrôle

 6: Les tableaux

 7: Les chaînes de caractères

 8: Les fonctions
Introduction 3

1) Présentation du langage C
 Qu'est-ce que le C ?

 C’est un langage évolué et structuré, assez proche du langage machine

 Il est apparu au début des années 70

 Il est actuellement l’un des langages les plus utilisés dans le monde
Langage de haut niveau
 Il est gratuit et évolutif • Plus simple
• Java
• Plus éloigné du fonctionnement • C#.net
de la machine • Python
• Contrôle sur le matériel limité, …
Auteur du langage C masqué par l’abstraction
• Gestion de la mémoire
• Dennis Ritchie : automatique
informaticien américain
Langage de bas niveau
• Plus complexe • C
• Plus proche du fonctionnement • C++
de la machine • Objective-C
• Contrôle sur le matériel total, …
 Le but initial était de développer un langage qui
permettrait de réécrire le système d'exploitation UNIX accès direct
• Gestion de la mémoire
manuelle
Binaire
Classification des langages de programmation
Introduction 4

1) Présentation du langage C
 Paradigme de programmation utilisé ?

 Paradigme ?
Un paradigme en informatique est une approche ou un modèle de programmation qui
définit la manière dont les programmes informatiques sont structurés, conçus et exécutés.

Il existe plusieurs paradigmes de programmation, mais on peut les regrouper en deux grandes
familles :
a) La programmation impérative :
 Le paradigme de programmation le plus ancien
 Dans la programmation impérative, vous spécifiez explicitement les actions à effectuer,
ainsi que l'ordre dans lequel elles doivent être exécutées.
b) La programmation déclarative :
 Dans la programmation déclarative, vous indiquez généralement le résultat souhaité ou les
règles à suivre, et le système informatique détermine comment accomplir la tâche.
Introduction 5

1) Présentation du langage C
 Paradigme de programmation utilisé ?

 Les paradigmes de programmation

Classification des langages de programmation par paradigme

Programmation procédurale :
Ada, Pascal, C
Programmation Programmation orientée objet :
impérative C++, Java
Tous les langages Programmation concurrente :
de programmation Ada95

Programmation fonctionnelle :
Programmation LISP, SCHEME
déclarative Programmation logique :
PROLOG
Introduction 6

1) Présentation du langage C
 La programmation procédurale ?

 Dans la programmation procédurale

 Le programme est divisé en petites parties appelées procédures ou fonctions.

 Comme son nom l’indique, la programmation procédurale contient une procédure étape

par étape à exécuter.

 Les problèmes sont décomposés en petites parties et ensuite, pour résoudre chaque

partie, une ou plusieurs fonctions sont utilisées.


Introduction 7

2) Caractéristiques de C
 Pourquoi utiliser C ?

 Un langage très puissant.

 Il comporte un grand nombre de fonctionnalités et de nombreuses bibliothèques de

programmes dans divers domaines.

 Il fonctionne sur de nombreuses plates-formes comme Windows, Linux, Mac.

 Un langage rapide (en matière de vitesse d'exécution)

 Il est capable de très bien fonctionner même lors de la gestion de nombreuses données.

 Un langage offre un contrôle très précis sur la gestion des ressources.

 Il permet aux programmeurs d'accéder directement à la mémoire de l'ordinateur

 ce qui est utile pour le développement de pilotes de périphériques, de systèmes

d'exploitation et d'applications à haute performance.


Introduction 8

2) Caractéristiques de C

 Pourquoi utiliser C ?

 Exemples d’utilisation :

Développement de nouveaux langages de programmation Développement des systèmes Logiciels Embarqués

C++/C# Java PHP Linux routeur téléviseur

Développement de l'intelligence artificielle Développement des logiciels

TensorFlow Pytorch scikit-learn MySQL


Introduction 9

3) Aperçu sur la programmation avec C

 Structure d'un programme C ?

 La structure d’un programme en C est la suivante :

Entête : Appel des bibliothèques


Déclaration de constantes
Partie I : Déclaration
Déclaration de variables
Déclaration et définition des fonctions

Fonction principale (main)


{
Déclaration de variables
Partie II : Corps du programme
Les instructions
retourner un entier
}
Introduction 10

3) Aperçu sur la programmation avec C


 Structure d'un programme C ?

 Un fichier source est un simple fichier texte dont l'extension conventionnellement .c pour les
sources en langage C.

 Un programme C peut être composé d'un grand nombre de modules, chaque module est composé
de fonctions. Parmi l'ensemble des modules, une fonction particulière, nommée main (), doit
obligatoirement exister. Elle doit être unique dans le programme. Ce sous-programme est appelé
généralement programme principal.

 Le programme principal : la fonction main () représente le point d'entrée pour l'exécution du


programme, elle contient les instructions qui doivent être exécutées.

Remarque : Le langage C distingue les minuscules, des majuscules. Les mots réservés du langage C
doivent être écrits en minuscules : la fonction principale doit être appelée main() en minuscule et
non Main() ou MAIN().
Introduction 11

3) Aperçu sur la programmation avec C


 Exemple d'un programme C ?

 Un programme très simple affichant le message « Hello world! » à l'écran

Le mot include avec '#' indique au compilateur d'inclure le fichier


stdio dans le fichier du programme ci-dessus
#include <stdio.h>
/* bibliothèque d'entrées-sorties standard */
Lorsque le programme est chargé dans la mémoire, la fonction
main () et est la première fonction à être exécutée
int main()
{ Cette déclaration afficher notre "Hello world!“ sur le moniteur à
printf ( "Hello world!“) ; l'aide de la fonction (printf)

Lorsqu'un programme termine son exécution, il envoie une valeur


return 0 ;
au système d'exploitation (0)
}
 Cela signifie que « tout s'est bien passé! »
Rq : Si aucune instruction return n'est présente, la fonction principale
renvoie 0 par défaut

Remarque : Il convient de noter que bien que certaines anciennes versions de compilateurs C
autorisent l'utilisation de void main()
 Cela n'est pas conforme à la norme C et n'est pas recommandé.
Introduction 12

3) Aperçu sur la programmation avec C

 Compilation et génération du fichier exécutable ?

 Une fois le fichier source (.c) écrit, il est nécessaire de convertir les instructions en un
langage machine (fichier .obj) pour que l'ordinateur exécute le programme (fichier .exe).
C'est le rôle du compilateur.

 Un compilateur traduit le code source d'un programme écrit dans un langage évolué
(exemple langage C) en un langage utilisable par l'ordinateur ou langage machine.

 .c : fichier source

 .obj (.o) : fichier compilé

 .exe : fichier exécutable


fichier.c fichier. obj [Link]
Introduction 13

3) Aperçu sur la programmation avec C


 Comment compiler un programme C ?

 Pour transformer du code source C en un programme exécutable, il faut utiliser un logiciel : le

compilateur

 Il existe divers compilateurs de programmes écrits en C, parmi lesquels : gcc (GNU Compiler

Collection), Clang et Visual C++ (Microsoft)

 Il existe des environnements de développement intégré qui permet de concevoir, de compiler,

d’analyser les éventuels problèmes et d'exécuter les programmes et tout cela sur un même

logiciel.

 En ligne : onlinegdb, mycompiler, programiz, etc.

 Hors-ligne (version desktop): Code:: Blocks , DEV C++, Microsoft Visual C++, etc.

Onlinegdb : [Link]
Mycompiler : [Link]
Programiz : [Link]
Introduction 14

3) Aperçu sur la programmation avec C

 Environnement de travail (Installation) ?

 Compilateur Hors-ligne (version desktop): DEV C++ (Lien de téléchargement )

1) Télécharger la version 5.11 de DEV C++


Introduction 15

3) Aperçu sur la programmation avec C


 Environnement de travail (Installation) ?

2) Installation DEV C++

Fenêtre du choix de la langue. Choisissez Français, et le logiciel s'installera en Français. ...

Fenêtre pour accepter la licence GNU de Dev-C++ ...

Fenêtre du choix du type d'installation. ...

Fenêtre de l'emplacement d'installation. ...

Fenêtre de fin de l'installation.

Rq : Laisser la configuration par défaut


Introduction 16

3) Aperçu sur la programmation avec C

 Environnement de travail (Installation) ?

3) Ouvrir l’environnement DEV C++ et passer les étapes (> suivant, > suivant …)

Menu

Explorateur de Projet/Classes

Barre de statut
Introduction 17

3) Aperçu sur la programmation avec C

 Environnement de travail (Installation) ?

4) Créer un nouveau fichier source : Menu  Fichier  Nouveau  Fichier Source

(Ctrl+N)
Introduction 18

3) Aperçu sur la programmation avec C

 Environnement de travail (Installation) ?

5) Écrire votre programme C dans fichier source


Introduction 19

3) Aperçu sur la programmation avec C

 Environnement de travail (Installation) ?

6) Sauvegarder votre travail : Menu  Fichier  Sauvegarder Sous …

Emplacement: Bureau

Nom du fichier : exercice


Type : C source files (*.c)
Introduction 20

3) Aperçu sur la programmation avec C

 Environnement de travail (Installation) ?

6) Compiler/ Exécuter le programme : Menu  Exécuter (F9)  Compiler | Menu 

Exécuter  Exécuter (F10)

Pas d’erreurs dans le programme


Introduction 21

3) Aperçu sur la programmation avec C

 Environnement de travail (Installation) ?

6) Compiler / Exécuter le programme : Menu  Exécuter  Compiler (F9) | Menu 

Exécuter  Exécuter (F10)


Les éléments de base du langage C
Les éléments de base du langage C 23

1) Les commentaires
• Les commentaires forment un moyen pour mettre du texte arbitraire dans le code source sans
que le compilateur C l'interprète
• L’utilisation des commentaires a plusieurs avantages :
 Une documentation explicite du code pour faciliter la compréhension, la maintenance et la
réutilisation des programmes.
 Explication du but et de la fonctionnalité du code.
 Détails sur l'historique ou le raisonnement derrière le code.
 Placement des droits d'auteur/licences, notes de projet, remerciements spéciaux, etc.
directement dans la source.
• Il existe deux types de commentaires en C :
Commentaires sur une seule ligne Commentaires sur multi-lignes
 Il est introduit par double barre oblique //  La séquence /* est utilisée pour déclarer le début du
 Il commence dés // et se termine à la fin de la commentaire et */ est utilisée pour déclarer la fin du
ligne commentaire
 Exemple :  Exemple :
/*
// Ceci est un commentaire sur une seule Ceci est un bloc de commentaires.
ligne */
Les éléments de base du langage C 24

2) Les variables ► Définition


 Comme la plupart des langages de programmation, le C utilise la notion de variable.
 Une variable peut être vue comme une zone de la mémoire qui comprend une certaine valeur.
 Une variable possède trois caractéristiques :
 Un identificateur : le nom par lequel la donnée est désigné
 Un type : la nature de la donnée contenue dans la variable
 Une valeur : par exemple, si la donnée est un nombre sa valeur pourra être 10

 Règles pour les identificateurs :


 Doivent commencer par une lettre : 1note × note1 ✓
 Ne doivent pas contenir des espaces ni de symboles : note exam × #noteexam ×
 L’utilisation du caractère souligné « _ » est autorisé : note_exam ✓ (le seul caractère spécial
autorisé)
 Distinction entre les majuscules et les minuscules : Etudiant ≠ etudiant
 Les accents ne sont pas autorisés : année × → annee ✓
 Les mots clés réservés du C sont exclus : typedef × default ×
Les éléments de base du langage C 25

2) Les variables ► Définition


 La liste des types utilisés en C :
Description Type Taille Plage de valeurs
(octet)
Caractères Pour les caractères char 1 -128 …127
Pour les caractères non signés unsigned char 1 0 … 255
Entiers Pour les entiers de petite taille short int 2 -32768 … 32767
Pour les entiers de petite taille non unsigned short 2 0 … 65535
signés
Pour les entiers de grande taille long int 4 -2 147 483 648 … 2 147 483 647
Pour les entiers de grande taille unsigned long 4 0 … 4 294 967 295
non signés int
Pour les entiers de taille standard int 2 ou 4 Comme short ou long
Pour les entiers non signés unsigned int 2 ou 4 Comme unsigned short ou
unsigned long
Réels Pour les nombres réels en simple float 4 ±1.175 10-38 … ±3.402 10+38
précision.
Pour les nombres réels en double double 8 ±2.225 10-308 … ±1.797 10+308
précision.
Pour les nombres réels de grande long double 10 ±3.4 10-4932 … ±1.1 10+4932
taille.
Booléen Pour les variables booléennes. bool 1 true, false
Rq : l’espace occupé par un entier (2 ou 4 octets) dépend de la machine nécessite l’utilisation d’une bibliothèque
sur laquelle s'exécute le programme (32/64 bits) spécifique #include <stdbool.h>
Les éléments de base du langage C 26

2) Les variables ► Définition


 La liste des types utilisés en C :
Exemple1 : La représentation de l'entier 5 en mémoire dépend du type de données que vous
utilisez.
type de données Taille (octets) La représentation binaire
short int x = 5 2 octets (16 bits) 0000 0000 0000 0101 (bit de signe : 0 = Positif / 1 = Négatif)
unsigned short x = 2 octets (16 bits)
0000 0000 0000 0101 (sans bit de signe)
5
long int x = 5 4 octets (32 bits) 0000 0000 0000 0000 0000 0000 0000 0101
int x = 5 2 octets / 4 octets 0000 0000 0000 0000 0000 0000 0000 0101

unsigned int x = 5 2 octets / 4 octets unsigned = sans bit de signe

Exemple2 : donner une valeur qui n’est conforme au type de donnée :


 short int x = -33768 (Plage de valeurs de short int : -32768 … 32768)
 warning: overflow in conversion from ‘int’ to ‘short int’ changes value from ‘-33768’ to ‘31768’
Les éléments de base du langage C 27

2) Les variables ► Déclaration


 Toute variable utilisée en C doit être déclarée.
 La déclaration d’une variable
 Syntaxe :
type identificateur;
 Exemples :
int age ; // Cette déclaration définit une variable d'identificateur age qui contient un entier de type int
float moyenne ; // Cette déclaration définit une variable d'identificateur moyenne qui contient un réel de type float

 Rq : Plusieurs variables peuvent être déclarées simultanément si elles ont le même type (à travers une
séparation par des virgules)
 Syntaxe :
type identificateur1 , identificateur2 ;
 Exemple :
int jour, mois, annee ; // Cette déclaration définit trois variables (jour, mois, annee ) de type int
Les éléments de base du langage C 28

2) Les variables ► Déclaration


 Une variable peut être initialisée en lui affectant une valeur avant de l’utiliser.

 L’affectation d’une valeur à une variable se fait à travers l’opérateur =

 L’affectation peut être effectuée de deux manières différentes :

• soit lors de la déclaration de la variable • soit après de la déclaration de la variable


 Exemple :  Exemple :
int a = 4 ; char c = ‘a’ ; bool b = true ; int r ;
r = 6;

Rq : Il est possible également de faire plusieurs affectations en même temps en enchaînant plusieurs
fois l'opérateur =
 Exemple :
int b;
int a = b = 0 ; // initialisation des deux variables a et b à 0
Les éléments de base du langage C 29

3) Les constantes
► Définition
 Une constante est une donnée qui ne change pas au cours de l’exécution d’un programme.
 Il peut arriver que la valeur d’une variable ne doive pas changer après l’initialisation.
 Une constante peut être de n’importe quel type (entier, réel, caractère, … ).

► Déclaration et initialisation
 Il existe deux méthodes simples pour définir des constantes : en utilisant le préprocesseur
#define ou le mot clé const.

En utilisant le préprocesseur En utilisant le mot clé const


#define
Syntaxe #define identificateur valeur const type identificateur = valeur ;
Exemple #define maximum 100 const int maximum = 100 ; // déclaration d’une constante de
#define c ‘A' type int
#define NOMBRE_PI 3.1415927 const char c = ‘A’ ; // déclaration d’une constante de type
caractère

Rq : Une constante doit être obligatoirement déclarée et initialisée sur la même ligne
Les éléments de base du langage C 30

3) Les constantes
► #define vs const
 En C, const et #define présentent quelques différences en termes de fonctionnement et de cas
d'utilisation.
Aspect const #define
Sécurité des types Oui, conserve le type de la variable Non, aucune sécurité des types
Allocation de Alloue de la mémoire pour chaque Aucune allocation de mémoire
mémoire
variable
Portée Respecte la portée des blocs et fonctions Portée globale, pas de restrictions
Préprocesseur Ne peut pas être utilisé pour la Utilisé pour la substitution de texte
substitution de texte
Débogage Permet l'inspection des valeurs pendant Peut rendre le débogage plus difficile
le débogage

 const est préférable lorsque vous avez besoin d'une variable constante avec une sécurité des types et
une portée,
 #define est plus adapté pour la création de macros pour la substitution de texte ou la définition de
constantes simples sans souci de sécurité des types ou de portée.
Exemple : #define CARRE(x) ((x) * (x))
Les entrées-sorties
Les entrées / sorties en C 32

1) Introduction

 Les entrées/sorties désignent les opérations de lecture et d'écriture de données (afficher des

informations à l'écran ou à lire des données tapées au clavier).

 Le C utilise une bibliothèque standard contenant un ensemble de fonctions qui assurent la

gestion des opérations d’E/S

 Cette bibliothèque est nommée stdio

 Cette nomination est une abréviation de Standard Input and Output en anglais, qui signifie

"entrée/sortie standard".

 L’appelle de cette bibliothèque se fait suivant la syntaxe suivante :

#include <stdio.h>
Les entrées / sorties en C 33

2) Les opérations de sorties

 Ce type d’opérations permet d’ afficher des informations à l'écran. Pour ce faire, il existe une

fonction nommée (printf)

1) Afficher une chaine statique

 La syntaxe de l'utilisation de cette fonction est la suivante :

printf ("chaine statique") ;

 Exemple : On veut afficher un message pour dire bonjour

printf ("Bonjour LSI1 ") ;

 Opérateurs d'échappement qui peuvent être utilisés dans la chaine statique :


Opérateur Signification Opérateur Signification
\a Bip sonore (bell) \n retour à la ligne
\b un caractère de retour arrière \t tabulation
(backspace)
\\ affiche un antislash
Les entrées / sorties en C 34

2) Les opérations de sorties

 Ce type d’opérations permet d’ afficher des informations à l'écran. Pour ce faire, il existe une

fonction nommée (printf)

2) Afficher le contenu d’une ou plusieurs variables

 La syntaxe de l'utilisation de cette fonction est la suivante :

printf ("Indicateurs_de_Format", nom_var1, nom_var2, …, nom_varN) ;


Indicateur de Signification Indicateur de Signification
Format Format
%c caractère %f float (six chiffres après la virgule)
%d décimal %.2f %.3f %.15f … float avec X chiffres après la
virgule
%x et %X hexadécimal %s chaîne de caractères
 Exemples :

printf ("%d", n) ; // afficher le contenu d’une variable de type décimal

printf ("%d et %d", n1 , n2) ; // afficher le contenu de plusieurs variables à la fois


Les entrées / sorties en C 35

3) Les opérations d’entrées


 Ce type d’opérations permet de lire des données tapées au clavier. Pour ce faire, il existe une

fonction nommée (scanf).

1) Lire le contenu d’une seule variable

 La syntaxe de l'utilisation de cette fonction est la suivante :

scanf ("code_format_variable", &nom_var) ;


 Cette fonction permet d'affecter à la variable nom_var les informations saisies par
l'utilisateur.
 Le caractère & doit toujours figurer devant le nom de la variable à affecter.
 Comme la fonction printf, il est nécessaire de spécifier le format de la variable.

 Exemple :

printf("Donner la valeur de a : ");


scanf("%d", &a); // Lecture du contenu de la variable a
Les entrées / sorties en C 36

3) Les opérations d’entrées


 Ce type d’opérations permet de lire des données tapées au clavier. Pour ce faire, il existe une

fonction nommée (scanf).

2) Lire le contenu de plusieurs variables à la fois

 La syntaxe de l'utilisation de cette fonction est la suivante :


scanf ("code_format_variable1 code_format_variable2 … code_format_variableN ", &nom_var1, &nom_var2, … ,&nom_varN) ;

 Il est possible en C de saisir plusieurs variables de même ou de types différents en une seule
instruction.
 Cela se fait en spécifiant le format de chaque variable dans la chaîne de format, séparé par
des espaces.
 Cependant, l’entrée d’une autre chose que les valeurs attendues, cela peut entraîner des
erreurs de saisie ou de lecture incorrecte.
 Exemple :

printf("donner les valeurs de a et b");


scanf("%d %d", &a, &b); // Lecture du contenu des variables a et b
Les entrées / sorties en C 37

4) Exercice d’application
 Écrire un programme en C qui permet d’afficher une date donnée par l’utilisateur (sous la forme

JJ/MM/AAAA)

Algorithme Affichage
Variables jour , mois , annee : entier
Début
Écrire ("Donner le jour : ") , Lire (jour)
Écrire ("Donner le mois : ") , Lire (mois)
Écrire ("Donner l’année : ") , Lire (annee)
Écrire (" La date est : " , jour, "/ ", mois, "/ " , annee)
Fin
Les entrées / sorties en C 38

4) Exercice d’application
 Écrire un programme en C qui permet d’afficher une date donnée par l’utilisateur (sous la forme

JJ/MM/AAAA)

#include <stdio.h>
Algorithme Affichage
int main()
Variables jour , mois , annee : entier
{
Début
int jour , mois , annee ;
Écrire ("Donner le jour : ") , Lire (jour)
printf("Donner le jour :"); scanf ("%d",&jour) ;
Écrire ("Donner le mois : ") , Lire (mois)
printf("Donner le mois :"); scanf ("%d",&mois) ;
Écrire ("Donner l’année : ") , Lire (annee)
printf("Donner l’année :"); scanf ("%d",&annee)
Écrire (" La date est : " , jour, "/ ", mois, "/ " , annee)
;
Fin
printf("La date est : %d / %d / %d", jour, mois,
annee); return 0;
}
Les opérateurs
Les opérateurs 40

1) Introduction
 Les opérateurs sont des symboles permettant d'effectuer des opérations sur des valeurs.

 Il existe plusieurs types d’opérateurs :

 Les opérateurs d'affectation

 Les opérateurs arithmétiques

 Les opérateurs de comparaison

 Les opérateurs logiques

 Les opérateurs unaires

 Les opérateurs conditionnels


Les opérateurs 41

2) Les opérateurs d'affectation


 Ce type d’opérateur permet d’affecter une valeur à une variable.
 Les membres de cette opération doivent être de même nature

Opérateur Signification Exemple

=  Un opérateur d'affectation simple i=2


 Affectation de contenu du member de droit au membre de gauche

+=  Un opérateur d'affectation additionneur i+=2 ↔ i = i + 2


 Affectation en additionnant le contenu du member de droit avec le contenu du
membre de gauche

-=  Un opérateur d'affectation soustracteur i-=2 ↔ i = i - 2


 Affectation en soustractant le contenu du member de droit du contenu du membre
de gauche

*=  Un opérateur d'affectation multiplicateur i*=2 ↔ i = i * 2


 Affectation en multipliant le contenu du member de droit par le contenu du
membre de gauche
/=  Un opérateur d'affectation diviseur i/=2 ↔ i = i / 2
 Affectation en divisant le contenu du member de gauche sur le contenu du membre
de droit
%=  Un opérateur d'affectation modulo i%=2 ↔ i = i %
 Affectation en calculant le reste de la division de contenu du member de gauche sur 2
le contenu du membre de droit
Les opérateurs 42

3) Les opérateurs arithmétiques


 Ce type d’opérateur permet de faire des opérations arithmétiques entre entiers ou entre réels.

Opérateur Signification Exemple


+ Un opérateur d’addition 5+2=7
- Un opérateur de soustraction 5–2=3
* Un opérateur de multiplication 5 * 2 = 10
/ Un opérateur de division 5/2=2
% Un opérateur de modulo (reste de la 5%2=1{ 5=2*2+1}
division )

 Une opération arithmétique peut faire intervenir des opérandes de types différents.
 Dans ce cas, le compilateur effectue des conversions temporaires et automatiques de types.
 Ces conversions sont effectuées suivant des règles qui possèdent une priorité descendante.
Les opérateurs 43

3) Les opérateurs arithmétiques

 Les règles de conversion sont :

N° Règle Si un des deux types est alors l'autre est converti en


Règle 1 long double long double
Règle 2 double double
Règle 3 float float
Règle 4 unsigned long unsigned long
Règle 5 long long
Règle 6 unsigned int unsigned int

 Règle 1 est prioritaire par rapport à Règle 2, Règle 2 est prioritaire par rapport à Règle 3 et ainsi
de suite.
Les opérateurs 44

4) Les opérateurs de comparaison

 Les opérateurs de comparaison comparent deux valeurs et renvoient Vrai ou Faux:

Opérateur Signification Exemple


== Egal x == y
!= Différent x != y
< Strictement inférieur x<y
<= Inférieur ou égal x <= y
> Strictement supérieur x>y
>= Supérieur ou égal x >= y
Les opérateurs 45

5) Les opérateurs logiques

 Ce type d’opérateur permet d’effectuer des tests logiques sur des données de types booléen
et/ou binaire.
 Le résultat de ces tests est une valeur entière : true (1) / false (0)

Opérateur Signification Exemple Resultat


!  Un opérateur logique inverseur (NOT) bool x = true;
false (0)
 permet d’inverser une valeur !x
&&  Un opérateur logique (AND) bool x = true;
 permet de vérifier si les 2 valeurs soumises sont vraies bool y = false;
 teste la 1ère valeur et si elle est false il renvoie directement false x && y false (0)
sans tester la 2ème valeur
||  Un opérateur logique (OR) bool x = true;
 permet de vérifier si au moins une des valeurs soumises est bool y = false;
true (1)
vraie x || y
 teste la 1ère valeur et si elle est true il renvoie directement true
sans tester la 2ème valeur

 Rq : Pour afficher une variable booléenne, on utilise le format %d car bool est un type entier (0 pour
false, 1 pour true)
Les opérateurs 46

6) Les opérateurs unaires

 Ce type d’opérateur ne nécessite qu'un opérande. Ils sont appelés opérateurs unaires.

Opérateur Signification Formes Exemple Resultat


 Un opérateur  Forme 1 : post-incrémentation int i = 1; i=2
j= 1
++ d’incrémentation  affecte puis incrémente la valeur int j = i++ ;
 Forme 2 : pré-incrémentation int i = 1; i=2
 incrémente puis affecte la valeur int j = ++i ; j= 2

 Un opérateur de  Forme 1 : post-décrémentation int i = 1; i=0


j= 1
-- décrémentation  affecte puis décrémente la valeur int j = i--;
 Forme 2 : pré-décrémentation int i = 1; i=0
j= 0
 décrémente puis affecte la valeur int j = --i ;
Les opérateurs 47

7) Les opérateurs conditionnels

 Ce type d’opérateur permet de tester une expression et de retourner une valeur suivant le
résultat du test.
 Syntaxe :
Expression ? Valeur renvoyée si Expression vaut vrai : Valeur renvoyée sinon
 Exemple :
int i = 2 , j = 3 , max ;
max = i > j ? i : j ;
// la variable max reçoit la valeur maximale entre les deux entiers i et j
// Expression : i > j
// Valeur renvoyée si Expression vaut vrai : i
// Valeur renvoyée si Expression vaut faux : j
// Résultat : la variable max va recevoir la valeur de j puisque i n’est pas supérieur à j
Les opérateurs 48

8) L’opérateur (sizeof)

 Cet opérateur permet de retourner la taille en octets d'un type ou d'une variable.
 Le type ou la variable sont passés en argument.
 Syntaxe :
sizeof (type) | sizeof (variable)
 Exemple :
unsigned int t ; float r ;
t = sizeof (char) ; // t reçoit la taille en octets de type char qui vaut 1
t = sizeof (r) ; // t reçoit la taille en octets de la variable r qui est de type float, t vaut 4
Les opérateurs 49

9) Les conversions de type


► Les conversions forcées (casting)
 Il est possible de convertir explicitement une valeur en un type quelconque en forçant la
transformation à l'aide de la syntaxe suivante:
Syntaxe :
(TypeDestination) Expression
Exemples :
char a = 3; // déclaration d’une variable d’identificateur (a) de type caractère (char) initialisée à ‘3’
int b = 4 ; // déclaration d’une variable d’identificateur (b) de type entier (int) initialisée à 4
float r ; // déclaration d’une variable d’identificateur (r) de type entier (float)
r = (float) a/b ; // r reçoit le résultat de la division de a / b qui est 0.75
// La valeur de a est explicitement convertie en float
// Automatiquement r convertira l'autre opérande (b) en float et effectuera une division rationnelle  r = 0.75

Rq : Les contenus de a et de b restent inchangés ; seulement les valeurs utilisées dans les calculs
sont converties.
Les opérateurs 50

9) Les conversions de type


► Les conversions implicites (automatique)
 Si un opérateur a des opérandes de différents types, les valeurs des opérandes sont converties
automatiquement (implicitement) dans un type commun.
 En général des types plus 'petits' en des types plus 'larges'; de cette façon on ne perd pas en
précision.
 Lors d'une affectation, le résultat est toujours converti dans le type de la destination. Si ce type
est plus faible, il peut y avoir une perte de précision.
 Exemple de conversion : float → int
float a = 1.5 ; // déclaration d’une variable d’identificateur (a) de type réel (float) initialisée à 1.5
int r ; // déclaration d’une variable d’identificateur (r) de type entier (int)
r = a ; // r reçoit la valeur de (a) qui est convertie implicitement en un entier (int)  r = 1 (perte de la
// partie décimale)

 Il existe donc une hiérarchie pour les conversions : char < short int < int < long int < float <
double
Les opérateurs 51

9) Les conversions de type


► Les conversions implicites (automatique)

Quand se produisent les conversions implicites ?

1. Opérations entre types différents

int a = 5;
float b = 4.5;
float result = a + b; // 'a' est converti implicitement en float
printf("Result: %f \n", result);
2. Affectation entre types différents

double x = 9.876;
float y = x; // 'x' (double) est converti implicitement en float
printf("y = %f \n", y);
Les opérateurs 52

9) Les conversions de type


► Les conversions implicites (automatique)

Quand se produisent les conversions implicites ?

3. Promotion des types entiers

char c = ’A’;
int i = c + 1; // 'c' est promu implicitement en int avant l'addition
printf("i = %d \n", i);

4. Passage de paramètres à une fonction

void printDouble(double d) {
printf("d = %f\n", d); }
int main()
{ float x = 3.14f;
printDouble(x); // 'x' (float) est converti implicitement en double
return 0; }
Les opérateurs 53

10) La priorité des opérateurs

 Les opérateurs présentés dans le tableau ci-dessous possèdent une priorité descendante.
 Les opérateurs d'une même ligne possèdent la même priorité.
Opérateur
() [] ->
(casting) sizeof & ! ++ -- new delete
* / %
+ -
< <= > >=
== !=
&&
||
? :
= += -= *= /= %=
Rq :
Si une expression fait intervenir en même temps plusieurs opérateurs qui ont la même priorité
alors l'opérateur situé le plus à gauche dans l'expression sera le premier évalué
Les opérateurs 54

10) La priorité des opérateurs Division en C :


int = int / int
float = float / float
 Exercice : Donner les résultats des expressions suivantes : float = int / float
float = float / int

Expression Opérations résultat


8/4*6 Priorité : * et / ont la même priorité  respecter
8 / 4 = 2  2 * 6 = 12
l’ordre
8*6/4 Priorité : * et / ont la même priorité  respecter 8 * 6 = 48  48/4 = 12
l’ordre
28 / ( 3 * 4 ) Priorité : ce qui est entre les parenthèses puis
la division. (3*4) = 12  28 / 12 = 2 (!! normalement
2 .33) Puisque le résultat est un entier donc =2
Type de l’opération : int = int / int
3/ 4 + 6 Priorité : Division puis addition. 3/4 = 0 (!! normalement 0.75)  0+6= 6
Type de l’opération : int = int / int Puisque le résultat est un entier donc =6
3+6/4 Priorité : Division puis addition. 6/4 = 1 (!! normalement 1.5)  3 +1 = 4
Type de l’opération : int = int / int Puisque le résultat est un entier donc =4

( float ) 2 / 4 Priorité : Conversion puis division. conversion de 2 en float = 2.0


Type de l’opération : float = float / int  2.0 / 4 = 0.5
( float ) ( 2 / 4 ) Priorité : Division puis conversion.
(2/4)=0
 conversion de 0 en float = 0.00000
Type de l’opération : float = float / float
-3 + 4 % 5 / 2
Priorité : Modulo puis division puis addition. 4 % 5=4  4 / 2 =2  -3 + 2 = -1
Les structures de contrôle

Vous aimerez peut-être aussi