Algorithmique et programmation
c
1ère Année Licence en EEA
Chapitre1 : Initiation au langage C : Notions de base
Slimene Ons
2023-2024
Objectifs
• Initier les étudiants à apprendre les bases de
programmation .
• Se familiariser aux vocabulaires de programmation
• Ecrire et compiler un langage en C
2
C’est Quoi un Algorithme ?
Un algorithme représente une séquence d’instructions
(Actions), logiquement ordonnées, qui permet de résoudre
un problème donné.
Problème à Algorithme
résoudre
Exemple d’un algorithme
Instructions:
1. Allumer le four pour le préchauffer à 150°c.
2. Mélanger les ingrédients dans un saladier.
3. Verser le contenue du saladier dans un moule à gâteau.
4. Quand le four est chaud, enfourner le gâteau.
5. Attendre 40 minute de cuisson.
6. Sortir le gâteau du four.
Ingrédients:
7. Laisser refroidir le gâteau.
- 4 oeufs.
- 200g de sucre. 8. Démouler le gâteau.
- 200g de beurre.
- 200g de farine. 9. Miam !
Analyse et Résolution d’un Problème
Problème
Analyser et Etudier le problème à Résoudre
Modèle
Spécifier le modèle de Résolution : données et les
formules mathématiques
Algorithme
Écrire l’algorithme
Programme
Traduire l’algorithme à un programme
Résultats
Exécuter le programme par un ordinateur afin
d’obtenir des résultats
C’est Quoi un Programme ?
Un programme est le résultat de la traduction d’un
algorithme. Cette traduction est effectué en choisissant un
langage de programmation
Séquence d’instructions destinées à être exécutées par un
ordinateur
Un langage de programmation définit un ensemble de
règles syntaxiques (comment écrire correctement le
programme) et sémantiques (le sens affecté à chaque
instruction ou structure de programme)
Pourquoi le langage C ?
Le langage C a été mis au point par Ritchie et Kernighan au début des années 70.
Leur but était de développer un langage qui permettrait d’obtenir un système
d’exploitation de type UNIX portable
Les avantages du C :
Universel : n’est pas orienté vers un domaine d’applications spécifique
Près de la machine
Rapide
Portable : il est possible d’utiliser le même programme sur autre système
Extensible
Structure général d’un programme C
#include "stdio.h“ les directives de précompilation
/* début du programme */
int main()
{
déclarations des variables;
instructions;
return;
}
-Les directives de précompilation sont des instructions spéciales dans un programme
-fonction main est la fonction principale
-L’exécution du programme entraine automatiquement l’appel à la fonction main
Exemple d’un programme C
#include <stdio.h>
/* début du programme */
int main()
{
printf("Ceci est un programme simple!");
return;
}
Entrée
- aucune entrée -
Sortie
Ceci est un programme simple!
9
Les types de données :variable
- La programmation est basée sur deux concepts nécessaires
les variables et les instructions
-Une variable est une sorte de boite, étiquetée, ou l’on peut
stocker de l’information pour le consulter et le modifier plus
tard
-Les variables correspondent aux récipients utilisés dans une
recette et les instructions aux différentes étapes de la recette
Qu’est ce qu’une variable
Une variable est un objet (emplacement) en mémoire repéré
par son nom ou son adresse, pouvant contenir des données.
mémoire
Adresse Nom de la variable Valeur
0x1E02 A 20
0xEE15 X 2.36
Qu’est ce qu’une variable
Une variable est caractérisée par :
Type Nom Valeur
Le nom de variable
- Les noms de variables doivent respecter certaines règles et conventions :
- Les noms de variables peuvent contenir des lettres (majuscules et
minuscules), des chiffres et le caractère souligné (underscore, _).
-Les noms de variables doivent commencer par une lettre ou un caractère
souligné.
-Les symboles utilisables sont :
-0,1,2……..9
-A,B,……….Z
-a,b,c,………z
-_
- Le nom de variable ne doit pas être un mot clé du langage C
Le nom de variable
Nom de variables correctes: Nom de variables incorrectes:
nom1 1nom
nom_2 nom.2
Nom_de_variable Nom de variable
deuxieme_choix deuxiéme_choix
Continue continue
Types de variables
Les variables en langage c sont typées, elles sont stockées
dans la mémoire et occupent un nombre d’octets dépendant
du type de donnée stockée.
Types de variables
char int short [int] long [int]
caractères Entiers entiers courts Entiers longs
float double long double unsigned int
Nombres Nombre décimaux de Nombre décimaux Entier non
décimaux précision supérieur encore plus précis signé
Types de variables : entier
Type de donnée Signification Taille (en octets ) Plage de valeur accepté
short Entier court 2 32768 à 32767
unsigned short Entier court non signé 2 0 à 65535
int Entier 2 (processeur 16 bits) -32768 à 32767
4 (processeur 32 bits) -2147483648 à 2147483648
unsigned int Entier non signé 2 (processeur 16 bits) 0 à 65535
4(processeur 32 bits) 0 à 4294967295
long Entier long 4 -2147483648 à 2147483647
unsigned long Entier long non signé 4 0 à 4294967295
Types de variables : réel
Type de donnée Signification Taille (en octets ) Plage de valeur accepté
float flottant 4 5.9x10-39 à 3.4 x1038.
double Flottant double 8 5.9x10-39 à 3.4 x1038.
long double Flottant double long 10 5.9x10-39 à 3.4 x1038.
La précision des nombres réels dépend du nombre du chiffres après la virgule
Types de variables : caractère
Type de donnée Signification Taille (en octets ) Plage de valeur accepté
char Caractère 1 -128 à 127
unsigned char Caractère non signé 1 0 à 255
Types de variables : booléen
Type de donnée Signification Taille (en bits ) Valeur
bool booléen 1 0 ou 1
Exercice
Donner le type des données suivantes :
Donnée Type
"d " char
-300 int ou flaot
"8 " char
2506.6 float
87 int ou unsigned int
True bool
Déclarations des variables
Les déclarations permettent de réserver de l’espace en
mémoire pour les variables.
Syntaxe de déclaration:
Type nom_variable [=valeur] ;
Exemples :
int main()
{
int nb;
char c = “a”;
bool admis;
Les types de données : constante
Qu’est ce qu’une constante:
Une constante est une valeur qui apparait littéralement dans le
code source d’un programme, le type de la constante étant
déterminé par la façon dont la constante est écrite. Les
constantes peuvent être de 4 types : entier, flottant (nombre
réel), caractère, énumération
Déclarations des constantes
Syntaxe de déclaration d’une constante:
const Type nom_constant = valeur ;
Exemples:
const float pi = 3.14;
const int nb_mois = 12;
Affectation
-L’affectation est une opération qui consiste à attribuer à
une variable :
-Soit une valeur particulière
-Soit une valeur contenue dans une autre variable
-soit une valeur calculée à l’aide d’opérateurs arithmétiques
Affectation
Syntaxe d’affectation:
nom_variable = valeur;
Exemples:
La variable A reçoit la valeur 2
A=2;
B=A; La variable B reçoit Le contenu de A
C=A+B; La variable C reçoit Le résultat de A plus B
D=‘’M’’; La variable D reçoit La valeur M
Exercice : déclaration et affectation
- Soient trois variables A , B et C tels que :
-A est de type entier : int A;
-B est de type caractère : char B;
-C est de type logique : bool C;
Comment on déclare les variables A,B et C dans ce cas ?
Exercice : affectation
Compléter le tableau suivant :
Instructions A B C D
B=2; 2
C=B+10; 2 12
A=4; 4 2 12
D=A; 4 2 12 4
B=B*D; 4 8 12 4
C=B+5; 4 8 13 4
A=10+4+C; 27 8 13 4
C=A+B+D; 27 8 39 4
L’instruction d’écriture : printf()
-printf() permet d’afficher la valeur d’une expression sur
l’écran. Une expression peut être :
-Une chaine de caractères (en mettant la chaine entre deux
apostrophes)
-Un nombre, une variable numérique, un résultat d’une
opération entre plusieurss variables
L’instruction d’écriture : printf()
Syntaxe :
printf("texte", var, cons, expr,…);
• le texte à afficher
• les spécificateurs de
format • variables ou constantes
•Caractère d’échappement ou expressions
L’instruction d’écriture : printf()
Exemples :
Signifie affiché sur l’écran le message suivant :
printf("maroc"); maroc
printf("A=%d ",A); Signifie affiché sur l’écran le contenu de la variable
A
L’instruction d’écriture : printf()
Les spécificateurs de format Type
" %d " int
" %ld " long
" %f " float ou double
" %c " char
L’instruction d’écriture : printf()
Les caractères d’échappement Type
" \n " Retour à ligne
" \t " Tabulation horizontale
" \’ " Affiche une apostrophe
" \’’ " Affiche un guillemet
" \\ " Affiche un antislash
" %% " Affiche un %
L’instruction de lecture: scanf()
-scanf () permet de demander à l’utilisateur de fournir des
informations. Chaque information donnée par l’utilisateur
est stockée dans une variable
Syntaxe :
scanf("format_1,.. ", &var_1, …);
Adresse Nom du variable
Spécificateur de
format
L’instruction de lecture : scanf()
Exemples:
• scanf("%lf", &n) ; Pour demander la valeur de n ( n est
de type réel)
• scanf("%d", &x) ; Pour demander la valeur de x ( x est
de type entier)
• scanf("%c", &y) ; Pour demander la valeur de y ( y est
de type caractère )
• scanf("%d%d%d", &jour, &mois, &année) ;
Exercice 1
Ecrire un programme qui calcule l’aire du cercle.
1- Donner les instructions de déclaration
2- Donner les instructions qui permet de l’utilisateur de taper
les valeurs de données
3- Donner les instructions de traitement
4- Donner les instructions qui permettent d’afficher le résultat
Correction
#include <stdio.h>
int main()
{
const float pi = 3.14;
float rayon;
float surface;
printf("Veuillez entrer le rayon du cercle : ");
scanf("%f", &rayon);
surface = pi * rayon * rayon; // Instructions pour afficher le résultat
printf("L'aire du cercle est : \n", surface);
return 0; }
Les opérateurs: arithmétiques
Une expression arithmétique est formée par des combinaisons
d’objets numériques (entier et réel) et des opérateurs arithmétiques
Une expression arithmétique donne un résultat numérique dont le
type est entier ou réel.
N = (20+B) * k;
Opérateurs arithmétiques
Les opérateurs: arithmétiques
Les opérateurs arithmétiques classiques sont :
+ addition
- soustraction
* multiplication
/ division
% reste de la division (modulo)
++ incrémentation
-- décrémentation
Remarque : L’opérateur % ne s’applique qu’à des opérandes de
type entier.
Les opérateurs: arithmétiques
Exemples :
B=15/3;
A=10%3;
Équivalent à
A=A++; A=A+1;
A=A--; A=A-1;
Puissance en langage c
Il n’y a pas en C d’opérateur effectuant l’élévation à la puissance.
il faut utiliser la fonction pow(x,y) de la librairie math.h pour
calculer x puissance y .
Exemple :
#include <stdio.h>
#include <math.h>
int main(){
int A,B,C;
A=2;
B=3;
C=pow(A,B);
printf(“%d“,C);
return 0;
}
Division en langage c
#include <stdio.h>
#include <math.h>
Affecter le résultat de la division à
int main(){ une variable entière (type entier)
float A,B;
int C;
C= A / B;
printf(“%d“,C);
return 0;
}
Les opérateurs : comparaison
• Une expression de comparaison donne un résultat booléen
(vrai ou faux ). Les opérateurs de comparaison usuels sont :
• > strictement supérieur
• >= supérieur ou égal
• < strictement inférieur
• <= inférieur ou égal
• == égal
• =! Différent
Exemple : N= (3*A / 7) <= (18 * B)
Opérateur de comparaison
Les opérateurs d’affectation composée
Opérateur Opération normal Opération élargie
+= X=X+Y; X+=Y;
-= X=X-Y; X-=Y;
*= X=X*Y; X*=Y;
/= X=X/Y; X/Y;
%= X=X%Y; X%Y;
Les opérateurs : logiques
Une expression logique est la composée d’expressions de
comparaisons par les opérateurs logiques
Les opérateurs logiques sont :
&& et logique
|| ou logique
! Négation logique
Les opérateurs : logiques
-Les résultats 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
-Les opérateurs logiques considèrent toute valeur différente
de zéro comme vrai et zéro comme faux
-Exemple :
N= (A > B) && 3+B == 9
Les opérateurs : logiques
A B A&&B A||B !A
FALSE FALSE FALSE FALSE TRUE
FALSE TRUE FALSE TRUE TRUE
TRUE FALSE FALSE TRUE FALSE
TRUE TRUE TRUE TRUE FALSE
La priorité des opérateurs
Certains opérateurs sont prioritaires par rapport aux autres. Voici la liste des opérateurs
par ordre décroissant de priorité.
Priorité Opérateur
1 la plus forte ()
2 ! ++ --
3 * / %
4 + -
5 < <= > >=
6 == !=
7 &&
8 ||
9 = += *= /= -= %=
La priorité des opérateurs
Exemple :
Supposons pour l’instruction suivante :
X=2*(A+3)*B+4*C avec A=5, B=10 , C=4;
L’ordinateur évalue tout d’abord l’expression entre
parenthèses en suite les multiplications.
A+3 8
2*8*b 160 , 4*c 16
Ensuite il fait l’addition de trois résultats obtenues : 160+16
X=164
Exercice
Soient les déclarations suivantes :
int n = 5, p = 9 ;
int q ;
float x ;
Quelle est la valeur affectée aux différentes variables concernées
par chacune des instructions suivantes ?
a) q = n<p ; q=1
b) q = n == p ; q=0
c) q = p % n + p>n ; q=5
d) x = p / n ; x= 1.8
e) x = (p + 0.5)/n ; x=1.9
f) x = (5*15) > pow(5,5); x=0
Exercice
Ecrire un programme C qui lit trois entiers et affiche leur
somme, leur produit et leur moyenne.
Correction
#include <stdio.h>
int main()
{ // Déclaration des variables
int entier1, entier2, entier3, somme, produit;
float moyenne;
// Saisie des trois entiers
printf("Veuillez entrer trois entiers ");
scanf("%d %d %d", &entier1, &entier2, &entier3);
// Calcul de la somme, du produit et de la moyenne
somme = entier1 + entier2 + entier3;
produit = entier1 * entier2 * entier3;
moyenne = somme / 3.0;
// Affichage des résultats dans une seule instruction printf
printf("Somme : %d\nProduit : %d\nMoyenne : %.2f\n", somme, produit,
moyenne);
return 0; }