0% ont trouvé ce document utile (0 vote)
28 vues43 pages

Coursc Partie1

Transféré par

dali.chouchen33
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)
28 vues43 pages

Coursc Partie1

Transféré par

dali.chouchen33
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
Vous êtes sur la page 1/ 43

Atelier de programmation C

LSI-1
2024-2025
INTRODUCTION
Introduction
Un programme
• Un programme informatique est un ensemble d'opérations destinées à être exécutées
par un ordinateur pour réaliser en général trois choses :
1. Il lit des données en entrée.
2. Il effectue des calculs.
3. Il écrit des données en sortie.
• Il existe de nombreuses approches (paradigmes) de programmation. Parmi elles:
• La programmation procédurale (ou Impérative) est basé sur le principe de l'exécution étape par
étape des instructions.
• Exemple de langages de programmation: C, Pascal, Fortran, Cobol, etc.
• La programmation orientée objet est basé sur le principe de découpage de programme en
plusieurs modules isolés les uns des autres et l’introduction de la notion des objets qui contient
des variables et des fonctions en rapport avec un sujet ou un métier.
• Exemple de langages de programmation: Java, C++, C#, etc.
Introduction 5

Un programme
• Un programmeur crée des programmes informatiques.
• Le programmeur doit pour cela expliquer à l’ordinateur dans un langage de programmation, quelles
sont les données et quelles sont les méthodes à appliquer pour traiter ces données.
• Une fois que le programmeur a écrit son programme, qui est du texte en langage C, il doit compiler
le programme pour créer un fichier exécutable(en binaire) par l’ordinateur.
• Un programme source est un code écrit par un programmeur dans un langage de programmation.
• Un programme binaire décrit les instructions à exécuter par un microprocesseur sous
forme numérique..
LANGAGE C
Le langage C 7

Un peu d’histoire
• Le langage C a été inventé aux Bells Labs en 1972 par Dennis Ritchie pour permettre l'écriture
du système d'exploitation UNIX, alors développé par Ken Thompson et Dennis Ritchie.
• Par la suite en 1978, Brian W. Kernighan documenta très activement le langage, pour finalement
publier avec Ritchie le livre de référence The C Programming Language
• En 1989, l'organisme national de normalisation des USA (ANSI) normalisa le C (C89)

Ken Dennis Brian


Thompson Ritchie Kernighan
Le langage C 8

Environnementde développement
• Il existe plusieurs outils pour réaliser un projet en C:
• DEV C++
• CodeLite
• Code::Blocks.
• Microsoft Visual C++.
• Xcode.
• Qt Creator

• Il existe aussi des sites en ligne:


• www.codechef.com/ide
• www.jdoodle.com/c-online-compiler
• www.ide.geeksforgeeks.org
Le langage C 9

Structure d’un programme C


Exemple 1 : Afficher un mot

• #include <stdio.h>: c’est une


#include <stdio.h> bibliothèque lié à la gestion des entrées
int main() { et sorties (STanDard Input Output), elle
printf("Bienvenue à l'AIAC"); contient, entre autres, la déclaration de
return 0; la fonction printf permettant d'afficher
} du texte formaté.
• main(): c’est la fonction principale,
appelée au démarrage du programme.
• Le return 0 indique seulement que la
valeur 0 est retournée au système (ce
qui indique que le programme se
termine sans erreur).
Le langage C 10

Structure d’un programme C


Exemple 2 : Lire un nombre

#include <stdio.h> 1. int n est la déclaration d’une variable


int main() { n de type entier.
int n; 2. scanf permet la lecteur des données
printf("Veuillez entrer un nombre entier :"); au clavier.
scanf("%d",&n); 3. Le format d’affichage et de lecture %d
printf("Vous avez tapé %d, félicitation!", n); correspond à des nombres entier
return 0; (type int).
} 4. Dans printf, lors de l’affichage, le %d
est remplacé par la valeur de n.
Le langage C 11

Structure d’un programme C


Exemple 3 : Calculer et mémoriser le résultat
• Le symbole = de l’affectation signifie
#include <stdio.h> qu’une variable prend la valeur du
int main() { résultat d’un calcul.
float x,y; /* déclaration de deux variables x et y */ • Il correspond à une opération de
printf("Veuillez entrer un nombre réel:"); recopie d’une donnée.
scanf("%f",&x); /* lecture au clavier de la valeur de x */ • Les phrases comprises entre /∗ et ∗/
y = 2*x; /* on met dans y le double du contenu de x */ sont des commentaires. Elles n’ont
printf("Le double du nombre tapé vaut %f \n", y); pas d’influence sur le déroulement
return 0; du programme.
}
Le langage C 12

Structure d’un programme C


• "main" : Cela signifie "principale", ses instructions
sont exécutées.
/***************************/
/* Projet C – Auteur: Y.B. */ • void main(void): La fonction main ne prend
/* Date : 20/09/18 */
/***************************/
aucun paramètre et ne retourne pas de valeur.
// commentaire • int main(void): La fonction main retourne une
int main(void) valeur entière à l'aide de l'instruction return (0
{
si pas d’erreur).
/* corps du programme*/
begin • int main(int argc, char *argv[]): On obtient
déclaration des variables;
instruction1 ; alors des programmes auxquels on peut
instruction2 ; adresser des arguments au moment où on
…. lance le programme.
}
end
• Entre accolades "{" et "}" on mettra la succession
d'actions à réaliser.(Bloc)
• Il y a 2 types de commentaires : /* ... */ et //
LES VARIABLES ET LES TYPES
Les variables et les Types 15

Les variables
• Dans un programme, il apparaît des variables qui permettent de donner des noms à
des données.
• Chaque variable doit avoir un type (entier, réel, caractère, suite de caractères, ou
type plus complexe).
• Chaque variable doit avoir un identificateur unique qui est le nom de la variable.
• Une déclaration de variable a toujours sous la forme suivante :
type identificateur;
• ou bien la forme avec l’initialisation :
type identificateur = valeur;
• On peut aussi déclarer plusieurs variables d’un même type séparées par des
virgules. Exemple
• float x, y=2.0; /* nombres réels. y a pour valeur initiale 2.0 */
• int n; /* nombre entier */
Les variables et les Types 16

Les types
• Type entier int
• est une représentation des nombres entiers.
• généralement codé sur 4 octets (32 bits).
• Types réels float ET double
• Les types float et double permettent de représenter des nombres réels avec une certaine
précision (suivant une représentation des nombres appelée virgule flottante ou nombre
flottant).
• Le type double (codé sur 8 octets) est plus précis que le type float (codé sur 4 octets).
• La valeur maximale d’un double est d’environ 10308 alors que celle d’un float est de l’ordre
de 1038
• La bibliothèque math.h contient les fonctions de calcul scientifique pow (puissance),
sqrt (racine carrée), cos, sin, tan, etc.
Les variables et les Types 17

Les types
• Le type char:
• Le type char (character) est un type caractère codé sur 1 octet.
• C’est la plus petite donnée qui puisse être stockée dans une variable.
• Une variable de type char peut être considérée soit comme un nombre, soit comme un
caractère que l’on peut afficher.
• Pour désigner par exemple le caractère Z dans un programme:
• on peut soit écrire ’Z’ (entre quotes),
• soit écrire 90 qui est le code ASCII du caractère Z.
• Dans les deux cas, il s’agit du même caractère et de la même donnée qui peut être stockée dans la
même variable de type char.
• LES TYPES unsigned
• Aux types int et char correspondent des types unsigned int et unsigned char qui
représentent uniquement des valeurs positives.
• Un unsigned int sur 4 octets va de 0 à 232− 1.
• Un unsigned char sur 1 octet va de 0 à 28− 1 (c’est-à-dire de 0 à 255).
Les variables et les Types 18

Les constantes
• Une constante est une valeur qui n’est pas susceptible de varier lors de
l’exécution d’un programme.
• On peut donner un nom à une constante par un #define au début du
programme.

#define PI 3.14159265358979323846 // Constante de type float


#define G 9.81 // Constante de type float
#define H 4816 // Constante de type int
/* Voici aussi une constante de type chaîne de caractères : */
#define MESSAGE1 "Erreur, vous devez mettre le #define hors du main !"
Les variables et les Types 19

Les conversions
• Étant données deux variables de même type, on peut recopier le contenu d’une
variable dans l’autre par une affectation (signe =).
• Plus généralement, on peut copier dans une variable la valeur de toute une
expression.
• Si les deux variables sont de types différents, l’opération d’affectation = va réaliser,
lorsque c’est possible, une conversion. Si la conversion n’est pas possible, le
compilateur affichera un message d’erreur.

int a;
a = 10;
int b = 0;
double val = 23.3;
char carac = 'G';
Les variables et les Types 20

Les conversions
char
uns-char
short
unsigned short
int
unsigned int
long
unsigned long
float
double
long double
Les variables et les Types 21

Les conversions
Les conversionsimplicites: Conversionsd’untypeà l’autre
 Affectation des valeur d’un type à des variables d’un autre :
int a = 8;
double b = a;// b = 8
 Pas de problèmes en descendant la pyramide, mais dans le sens inverse :
 Données tronquées float c = 0.32;
long d = c;// d = 0
 Exemple :
unsigned long a = 65523;
unsigned char b = a; // b = 243
 Explication :
6552310 = 1111 1111 1111 00112

= 1111 00112
Les variables et les Types 22

Les conversions
Les conversionsexplicite: (Cast)
 Conversion implicite

int a = 10;
long b = a;

 Conversion explicite (cast)


• Toujours ,il y a une perte d’information.
(typeSouhaité)donnée • Le compilateur nous donne un message
d’avertissement (warning), à moins que
char a = 10; l’on effectue un cast, appelé aussi
double b = (double)a; conversion explicite, en indiquant le
type souhaité entre parenthèses
ENTRÉES-SORTIES : STDIO.H
Entrées-Sorties : stdio.h 24

Une bibliothèque
• Une bibliothèque est un ensemble de fonctionnalités ajoutées à un langage de
programmation. Chaque bibliothèque a un thème.
• Par exemple (en langage C):
• la bibliothèque math.h contient les fonctions mathématiques de calcul numérique
et des constantes comme M_PI pour représenter le nombre π ;
• la bibliothèque time.h contient les types et fonctions permettant de gérer la durée
(date et heure, temps d’exécution du programme...) ;
• la bibliothèque float.h contient les limites et constantes des types float et double ;
• La bibliothèque (Standard Input Output) stdio.h contient les types et fonctions
permettant de gérer les entrées-sorties (saisies au clavier, affichage de texte, mais
aussi fichiers...).
• etc.
Entrées-Sorties : stdio.h 25

l’affichagede données
Afficher des caractères
a) Pour afficher un caractère on peut utiliser la fonction putchar :
• putchar(’A’); /* Affiche un ’A’*/
• putchar(65); /* Affiche aussi un ’A’*/
b) Pour afficher une chaine de caractères on peut utiliser la fonction puts :
• puts("coucou !");
c) La fonction puts va automatiquement à la ligne après l’affichage. Pour
afficher un message sans aller à la ligne, on peut utiliser printf:
• printf("coucou !");
Entrées-Sorties : stdio.h 26

l’affichagede données
Afficher d’autres données
• Pour afficher des nombres entier, réels, etc. il faut spécifier un format, c’est à dire qu’il
faut préciser comment le résultat doit être affiché.
• La fonction printf est une fonction d’affichage formatée, ce qui signifie que les
données sont converties selon le format particulier choisi.
• Sa syntaxe est
printf("chaîne de contrôle ",expression-1, ..., expression-n);
• La chaîne de contrôle contient le texte à afficher et les spécifications de format
correspondant à chaque expression de la liste.
• %d  décimale
• %f  décimale avec virgule fixe
• %c  char caractère
• %s  chaîne de caractères %d \n p
• %o  octale
• %x  hexadécimale
Entrées-Sorties : stdio.h
l’affichage de données
Caractères spéciaux utiles
Un exemple d’affichage '\n' Nouvelle ligne
#include <stdio.h> '\r' Retour chariot
int main(void){ '\t' Tabulation horizontale
char caract='W';
printf("%c\n", caract); '\0' Caractère nul
int nombre=2018; '\\' Backslash
printf("%d\n", nombre); // nombre '\'' Apostrophe
float x=134000.12345678;
double y=134000.12345678;
'\"' Guillemet
printf("%f\n", x); // float
printf("%lf\n", y); //float ou double avec plus de précision (plus de chiffres après la virgule)
printf("%.3f\n", x); // en spécifiant le nombre de chiffres après la virgule
printf("%e\n", x); // un réel avec puissance de 10
printf("%s\n", "coucou !"); // afficher une chaîne de caractères
system("pause");
return 0;
}
Entrées-Sorties : stdio.h 28

La lecture au clavier
• La fonction getchar permet de lire un caractère.
• La fonction scanf permet de saisir des données au clavier et de les stocker aux adresses
spécifiées par les arguments de la fonctions.
scanf("chaîne de contrôle",argument-1,...,argument-n)
• La chaîne de contrôle indique le format dans lequel les données lues sont converties.
• %d  décimale
• %o  octale
• %f  décimale avec virgule fixe %d &i
• %x  hexadécimale
• %c  char caractère
• %s  chaîne de caractères
• On peut lire plusieurs valeurs dans un même appel à scanf, en séparant les %d, %f,...
par des espaces.
• scanf("%f %lf", &f1, &f2);
• Attention: Utilisation d’un getchar pour manger un retour chariot.
LES OPÉRATIONS ARITHMÉTIQUES
Les opérations arithmétiques 30

Opérateur Opération Opérateur Opération

+ Addition += Addition

− Signe / Soustraction −= Soustraction

* Multiplication *= Multiplication

/ Division /= Division

% Reste division (modulo) %= Reste division (modulo)

float a = 10;
int a = 10; // combinée
float b = 20;
a += 20; // a = a + 20
float c = a * b;
Les opérations arithmétiques 31

Les opérateurs d’incrémentation et décrémentation

Opérateur Opération

++ Incrémentation

−− Décrémentation

int a = 0;
a++; // a = 1 c’est a=a+1
a--; // a = 0 c’est a=a-1
STRUCTURES CONDITIONNELLES
Structures Conditionnelles 34

Les opérations logiques


Exemples
int a = 10;
int b = 3;
int c;
Opérateur Opération

== Egalité c = a == b relation fausse, c = 0

!= Inégalité c = a != b relation vraie, c = 1

> Strictement supérieur c = a > b relation vraie, c = 1

< Strictement inférieur c = a < b relation fausse, c = 0

>= Supérieur ou égal c = a >= b relation vraie, c = 1

<= Inférieur ou égal c = a <= b relation fausse, c = 0


Structures Conditionnelles 35

Les opérations booléens


C1 C2 C1 && C2
Opérateur Opération VRAI VRAI VRAI
VRAI FAUX FAUX
&& Et logique
FAUX VRAI FAUX
|| Ou logique FAUX FAUX FAUX

! Négation logique C1 C2 C1 || C2
VRAI VRAI VRAI
Comme pour les opérateurs de
VRAI FAUX VRAI
comparaison, la valeur retournée par
ces opérateurs est un int qui vaut 1 si FAUX VRAI VRAI
la condition est vraie et 0 sinon. FAUX FAUX FAUX
int a = 10;
int b = 3;
C1 !C1

int c = (a != b && a > b); VRAI FAUX


// c = 1 car 10 != 3 ET 10 > 3 FAUX VRAI
Structures Conditionnelles 36

La structure if … else
• Les structures conditionnelles permettent de déterminer quelles
instructions seront exécutées et dans quel ordre.
• Pour qu'un programme soit capable de prendre des décisions, on utilise
dans le code source des conditions
• Ces conditions permettent de tester des variables.
• une condition est soit vraie, soit fausse
Syntaxe1:
if (condition)
operation;
Syntaxe2:
if (condition)
operation1;
else
operation2;
Structures Conditionnelles 37

La structure if … else

• Un else se rapporte toujours au dernier if rencontré

 Des accolades sont nécessaires pour associer un else à un if antérieur


Structures Conditionnelles 38

La structure if … else

Conditionimbriqué
Lorsqu'on a plusieurs cas à tester, on peut enchaîner les if ... else
Structures Conditionnelles 39

La condition switch… case


• Le switch permet de distinguer plusieurs cas selon les valeurs d’une variable alors
que permet de distinguer seulement deux cas.
• L'instruction switch ... case sert à traiter des choix multiples en fonction de la valeur
d'une expression entière.
• Ainsi, il permet de simplifier l'écriture de conditions qui testent plusieurs valeurs
possibles pour une même variable.
Structures Conditionnelles 40

La condition switch… case

• Default à la fin correspond au else, elle s'exécute si aucun des tests précédents n'est vérifié.
• Switch ne permet de tester que l'égalité. Vous ne pouvez pas tester « Si le nombre d'enfants est
supérieur à 2 » avec switch : il faut dans ce cas utiliser if.
• Switch ne peut travailler qu'avec des nombres entiers (int, unsigned int, char). Il est impossible de
tester des nombres décimaux (double).
Structures Conditionnelles 41

int main(void){
char choix;
puts("Menu : faites un choix:\n");
puts("Afficher la liste des clients ----------> a");
puts("Afficher les données d’un client --> b");
puts("Saisir un client -------------------------> c");
puts("Quitter -----------------------------------> d");
choix = getchar();
switch(choix)
{
case 'a' : puts("Affichage de la liste des clients"); /* mettre ici le code d’affichage des clients */
break;
case 'b' : puts("Affichage des données d’un client"); /* mettre ici le code de saisie et d’affichage */
break;
case 'c' : puts("Saisie des données du client"); /* mettre ici le code de saisie des données */
break;
case 'd' :
break;
default : puts("Erreur de saisie du choix !");
}
return 0;
}
LES BOUCLES
Les boucles 44

• Les boucles (les itérations) vous permettent de répéter les mêmes


instructions plusieurs fois dans votre programme.
• Les boucles sont répétées tant qu'une condition est vraie.
• Il existe 3 types de boucles à connaître :
• while (condition){};
• do ... while(condition) ;
• for(initialisation, condition, incrémentation).
• La boucle for est généralement utilisée lorsqu'on sait combien de fois on
souhaite répéter les instructions.
• tandis que while et do... while sont plutôt utilisées lorsqu'on souhaite
répéter des instructions jusqu'à ce qu'une condition spécifique soit vérifiée.
Les boucles 45

La boucle while
• Dans la boucle while, le programme répète un bloc d’instructions tant qu’une
certaine condition est vraie.
• Tout ce qui est entre accolades sera répété tant que la condition est vérifiée.

while (condition)
{
/* Instructions à répéter */
}
Les boucles 46

La boucle do ... while


• L'instruction est d'abord exécutée, puis l'expression est évaluée. Si elle est vraie,
on reboucle sur l'exécution de l'instruction.
• À la différence de la boucle while, l'instruction est toujours exécutée au moins
une fois

do
{
/* Instructions */
} while (condition);
Les boucles 47

La boucle for
• Ce type de boucle, que l'on retrouve fréquemment, permet de condenser :
• une initialisation ; for (instruction1; condition ; instruction2)
• une condition ; {
• une incrémentation. /* bloc d’instructions; */
}
1. L'instruction1 est d'abord exécutée (initialisation ).
2. Puis, tant que l'expression est vraie, on exécute le bloc d’instructions.
3. puis l'instruction2 (instruction de progression).

Vous aimerez peut-être aussi