Volume horaire : 20 heures
Formateur : OUEDRAOGO Souleymane
Ingénieur de travaux en Réseaux et Systèmes
CFPEM ESIM:: Janvier -2024
Plan de cours d’Algorithme et Langage C.
[Link]
Introduction à l'algorithmique
1. Qu’est-ce que algorithmes?
2. Algorithmique et programmation
3. Avec quelles conventions écrit-on un algorithme ?
I. Les Variables
1. A quoi servent les variables ?
2. Déclaration des variables
3. Expressions et opérateurs
II. Les instructions de base
1. L’affectation
2. L’écriture
3. La lecture
III. Les structure de contrôle
1. Définition des structures de contrôle
2. Structures de contrôle conditionnel
3. Structures de contrôle répétitif
IV. Les structures de données de base
1. Introduction aux structures de données
2. Introduction aux tableaux
3. Tableaux à une dimension
GENERALITES
1. Qu’est-ce que algorithmes?
Avez-vous déjà indiqué un chemin à une personne égaré ? Avez-vous fait
chercher un objet à quelqu’un par téléphone ?
Si oui, vous avez déjà fabriqué – et fait exécuter – des algorithmes.
Alors tout le monde a déjà ou fait des algorithmes
Un algorithme, c’est une suite d’instructions, qui une fois exécutée
correctement, conduit à un résultat donné.
2. Algorithmique et programmation
Pourquoi apprendre l’algorithmique pour apprendre à programmer ? En quoi a-t-on besoin
d’un langage spécial, distinct des langages de programmation compréhensibles par les
ordinateurs ?
Parce que l’algorithmique exprime les instructions résolvant un problème donné
indépendamment des particularités de tel ou tel langage.
Par exemple, si un programme était une dissertation, l’algorithmique serait le plan, une fois
mis de côté la rédaction et l’orthographe. Or, vous savez qu’il vaut mieux faire d’abord le
plan et rédiger ensuite que l’inverse…
Apprendre l’algorithmique, c’est apprendre à manier la structure logique d’un programme
informatique. Cette dimension est présente quelle que soit le langage de programmation ;
mais lorsqu’on programme dans un langage (en C, en java , php etc.) on doit en plus
comprendre les problèmes de syntaxe, ou de types d’instructions, propres à ce langage.
Apprendre l’algorithmique de manière séparée, c’est donc sérier les difficultés pour mieux
les vaincre.
• PROGRAMME = Résultat de la traduction d’un algorithme dans un langage de programmation que
comprend un ordinateur
• De nombreux langages de programmation existent (langages de bas niveau et langages haut niveau ou
évolués, langages de programmation impérative/procédurale, langages de programmation fonctionnelle,
langages de programmation objet, langages de programmation événementielle, etc.)
Compilation & interprétation
❑Les programmes écrits par les programmeurs sont appelés PROGRAMMES SOURCES car
rédigés dans des langages de programmation
❑ L’apprentissage de l’écriture de ces programmes à travers le cours de « programmation »
Les programmes sont :
❑ soit directement fournis à des INTERPRETEURS : on est dans le processus
d’INTERPRETATION
❑ soit traduits en PROGRAMMES EXECUTABLES qui seront exécutés par les ordinateurs, après
une succession de traitements ; on est dans le processus de COMPILATION
Interprétation
❑Le processus d’interprétation est employée lorsque :
➢ l’utilisateur souhaite écrire rapidement un petit programme jetable (maquette)
➢ le source peut sans problème être donné au client
❑ A chaque exécution du programme, chacune des instructions est analysée et traduite avant
exécution, et le résultat de cette traduction n’est pas conservée dans un fichier exécutable
Production du code exécutable
❑ Le processus de production d’un code exécutable (code binaire) est généralement employé
quand :
➢ les programmes associés sont de grande taille
➢ on souhaite un temps d’exécution réduit
➢ on ne désire pas mettre le code source du programme à la disposition du client final
❑ Les exécutions ne nécessitent plus aucune traduction car se faisant à partir du code
exécutable
3. Avec quelles conventions écrit-on un algorithme ?
4. On utilise généralement une série de conventions appelée
5. « pseudocode », qui ressemble à un langage de programmation
authentique dont on aurait évacué la plupart des problèmes de syntaxe.
Ce pseudo-code est susceptible de varier légèrement d’un livre (ou d’un
enseignant) à un autre. C’est bien normal : le pseudo-code, encore une
fois, est purement conventionnel ; aucune machine n’est censée le
reconnaître. Donc, chaque cuisinier peut faire sa sauce à sa guise, avec ses
petites épices bien à lui, sans que cela prête à conséquence.
[Link] de Variables
1. A quoi servent les variables ?
Dans un programme informatique, on va avoir en permanence besoin de stocker
provisoirement des valeurs. Il peut s’agir de données issues du disque dur, fournies par
l’utilisateur (saisi au clavier).
Ces données peuvent être de plusieurs types : elles peuvent être des nombres, du texte,
etc.
Toujours est-il que dès que l’on a besoin de stocker une information au cours d’un
programme, on utilise une variable.
Pour employer une image, une variable est une boîte, que le programme (l’ordinateur)
va repérer par une étiquette. Pour avoir accès au contenu de la boîte, il suffit de la
désigner par son étiquette.
2. Déclaration des variables
La première chose à faire avant de pouvoir utiliser une variable est de créer
la boîte et de lui coller une étiquette.
Ceci se fait tout au début de l’algorithme, avant même les instructions
proprement dites. C’est ce qu’on appelle la déclaration des variables.
Le nom de la variable (l’étiquette de la boîte) obéit à des impératifs
changeant selon les langages. Toutefois, une règle absolue est qu’un nom de
variable peut comporter des lettres et des chiffres, mais qu’il exclut la plupart des
signes de ponctuation, en particulier les espaces. Un nom de variable correct
commence également impérativement par une lettre. Quant au nombre maximal
de signes pour un nom de variable, il dépend du langage utilisé
Lorsqu’on déclare une variable, il ne suffit pas de créer une
boîte (réserver un emplacement mémoire) ; encore doit-on
préciser ce que l’on voudra mettre dedans, car de cela
dépendent la taille de la boîte (de l’emplacement mémoire) et
le type de codage utilisé.
2.1 Types numériques classiques
Commençons par le cas très fréquent, celui d’une variable destinée à recevoir des
nombres.
• Byte
• Entier simple
• Entier long
• Réel simple
• Réel double
En algorithmique, on ne se fatiguera pas trop avec les sous-types de variables
numériques On se contentera donc de préciser qu'il s'agit d'un nombre, en gardant en
tête que dans un vrai langage, il faudra être plus précis.
Exemple de déclaration de variable en algorithme :
Variable g en Numérique
Ou encore
Variables PrixHT, TauxTVA, PrixTTC en Numérique
2.2 Type alphanumérique
Les boîtes que sont les variables peuvent contenir bien d’autres informations que des
nombres. Sans cela, on serait un peu embêté dès que l’on devrait stocker un nom de
famille, par exemple.
On dispose donc également du type alphanumérique (également appelé type
caractère, type chaîne ou en anglais, le type string .
Un groupe de caractères (y compris un groupe de un, ou de zéro caractères), qu’il soit
ou non stocké dans une variable, d’ailleurs, est donc souvent appelé chaîne de caractères.
En pseudo-code, une chaîne de caractères est toujours notée entre
guillemets
2.3 Type booléen
Le dernier type de variables est le type booléen : on y stocke uniquement
les valeurs logiques VRAI et FAUX.
On peut représenter ces notions abstraites de VRAI et de FAUX par tout
ce qu'on veut : de l'anglais (TRUE et FALSE) ou des nombres (0 et 1). Peu
importe.
Exemples
Surface est de type réel, correspond à la superficie d’un rectangle ;
Age est de type entier, correspond à l’âge d’une personne ;
Rayon est de type réel, correspond au rayon d’un cercle :
AnneeNaiss est de type réel, correspond à l’année de naissance de l’utilisateur ;
Utilisateur est de type chaîne de caractères, correspond au nom complet de l’utilisateur ;
Nom est de type chaîne de caractères, correspond au nom de l’utilisateur ;
Prenom est de type chaîne de caractères, correspond au prénom de l’utilisateur ;
Reponse est de type de caractère, correspond à la réponse de l’utilisateur valant « o/O » pour
OUI et « n/N » pour NON ;
3. Expressions et opérateurs
Une expression est un ensemble de valeurs, reliées par des opérateurs, et
équivalent à une seule valeur
• Expressions impliquant différents opérateurs et fonctions
- opérateurs arithmétiques (entiers et réels) : +, -, x, /, etc.
- opérateurs logiques ou booléens : ET, OU, >, <, ≤, ≥, =, ≠, etc.
- opérateurs et fonctions pour les caractères : + de la concaténation, fonctions ord,
car, pred, etc.
- opérateurs et fonctions pour les chaînes de caractères : +, fonctions taille,
teteDeChaine, queueDeChaine, etc.
4. Les instructions de base
4.1. L’affectation
- Sa syntaxe
nomVariable <- expression
- Sa sémantique
ranger dans la variable nomVariable
la valeur associée à expression
Exemples
Surface <- 0 ; /* on range la valeur 0 dans la variable Surface */
Rayon <- 25.4 ; /* on range la valeur 25.4 dans la variable Rayon */
Surface <- 2xPIxRayon ; /* on suppose la constante PI connue */
Age <- 2015 - AnneeNaiss ; /* on suppose AnneeNaiss déjà
renseignée */
Nom <- “OUEDRAOGO” ;
Message <- Nom ;
Prenom <- “Justin” ;
Utilisateur <- Nom + “ ” + Prenom ;
Exemples
Nom <- “OUEDRAOGO” ;
Prenom <- “Justin” ;
Message <- “Bonjour”+ “ ”+Nom+ “ ”+Prenom ;
Utilisateur <- Nom + “ ” + Prenom ;
indicatif <- IndicatifTelBF ;
pays <- nomPays ;
estAdmis<- (Moyenne ≥ 10) ;
trouve <- (Prenom = “Jean”);
estPresent<- (Moyenne ≠ 0) ;
toto<- “23456” ;
titi <- “23456” ;
somme <- toto+ titi ;
car <- “ ” ;
4.2. La lecture d’une valeur
- Sa syntaxe
Lire (nomVar)
- Sa sémantique
Récupérer une valeur introduite par
l’utilisateur et la ranger dans la variable
de nom nomVar
• La lecture d’une valeur
L’exécution de
Programme
l’instruction de
en exécution
lecture correspond
Ordinateur
à une requête de -
fourniture d’une donnée -
Ordre de lecture
adressée à l’utilisateur.
-
La donnée sera rangée dans -
la variable spécifiée dans l’ordre
• Généralisation de la lecture
- Sa syntaxe
Lire (nomVar1, nomVar2, …, nomVarN)
- Sa sémantique
Récupérer, au moyen d’une unique instruction , N valeurs introduites par
l’utilisateur et qui seront respectivement stockées dans les variables de nom
nomVar1, nomVar2, …, nomVarN
4.3. L’écriture
- Sa syntaxe
Ecrire (nomVar)
- Sa sémantique
récupérer la valeur présente dans la
variable nomVar et l’envoyer vers le
terminal de l’utilisateur
L écriture
• Généralisation de l’écriture
- Sa syntaxe
Ecrire (nomVar1, nomVar2, …, nomVarN)
- Sa sémantique
Récupérer, au moyen d’une unique instruction , le
contenu des N variables appelées respectivement
nomVar1, nomVar2, …, nomVarN, et les envoyer vers
le périphérique de sortie standard
Lecture entrée écriture sortie
Exercice 1
En supposant A, B et C correspondre à des variables
de type entier, donnez la valeur de chacune d’elles
après l’exécution du bloc d’instructions suivantes.
Début
A←5
B←3
C←A+B
A←2
C←B–A
Fin
Exercice 2
En supposant A, B et C correspondre à des variables
de type entier, donnez la valeur de chacune d’elles
après l’exécution du traitement correspondant au
bloc d’instructions suivantes.
Début
A←3
B ← 10
C←A+B
B←A+B
A←C
Fin
Exercice 3
Ecrire l’algorithme permettant de ranger la valeur
entière 100 dans une variable dénommée X, de
ranger la valeur 900 dans une variable de nom Y, de
faire leur somme arithmétique et enfin de ranger le
résultat dans la variable Z.
Exercice 4
Ecrire l’algorithme permettant à l’utilisateur de
saisir une valeur entière et d’afficher cette valeur
augmentée de 100.
Exercice 5
Ecrire l’algorithme calculant et affichant le
périmètre d’un rectangle dont les caractéristiques
doivent être fournies par l’utilisateur.
Exercice 6
Ecrire l’algorithme calculant et affichant le
demi-périmètre et le périmètre d’un rectangle dont
les caractéristiques doivent être fournies par
l’utilisateur.
III. Les structure de contrôle
1. Définition des structures de contrôle
• Une structure de contrôle est une instruction
permettant de modifier ou d’orienter le fil ou la
séquence d’exécution des instructions en fonction des
conditions rencontrées ou des événements survenus lors
du déroulement de l’algorithme.
On rappelle que, par défaut, les instructions sont exécutées les unes après les autres,
du début de l'algorithme jusqu'à la fin de l'algorithme.
Les structures de contrôle sont d’ailleurs de ce fait
appelées instructions de rupture de séquence.
• ATTENTION !!!
structures de contrôle ≠ structures de données
Les 1res sont des instructions permettant d’orienter le fil
du déroulement de l’algorithme tandis que les 2ndes sont
une organisation ou une structuration des données.
• Deux principales catégories de structures de
contrôle sont employées en algorithmique :
les structures de contrôle conditionnel ;
les structures de contrôle répétitif.
2. Structure de contrôle conditionnel
• On les appelle aussi structures de choix ou structures de test ou structures de
sélection ou structures alternatives ou encore structures de contrôle de condition.
• Elles permettent d’orienter le traitement en fonction de la réalisation ou pas d’une
condition.
• Elles se présentent sous deux syntaxes : une forme simple et une forme complète.
• Structure simple de choix
La condition est une expression
Traitement1;
dont l’évaluation retourne une
Si condition alors valeur logique/booléenne (VRAI ou FAUX).
Si la valeur retournée lors de
traitement2 l’évaluation de la condition est
VRAI, alors on « entre » dans la structure de
contrôle pour réaliser traitement2. Ce n’est
FinSi ;
qu’après cela que le traitement3 est effectué.
traitement3
Autrement, on « n’entre pas » dans la structure
de contrôle, mais directement est effectué
traitement3.
• Structure simple de choix
traitement1
Vrai Faux La représentation
condition graphique (losange)
employée au début de
traitement2 l’informatique illustre
bien cette réalité !
traitement3
• Structure complète de choix
Traitement1; Si la valeur retournée lors de
l’évaluation de la condition est
Si condition alors
re
traitement2a VRAI, alors on « entre » dans la 1 partie de la
structure de contrôle pour ne réaliser que
Sinon
traitement2a.
traitement2b e
Autrement on « entre » dans la 2 partie de la
FinSi ; structure de contrôle pour ne réaliser que
traitement3 traitement2b.
Et quel que soit le chemin emprunté, on finit
par exécuter traitement3.
Structure complète de choix
traitement1
Vrai Faux
condition Dans la représentation
graphique (losange) les
deux moitiés de
traitement2a traitement2b
l’alternative sont bien
visibles !
traitement3
• Structures complètes de choix imbriquées
Traitement1;
Si condition1 alors traitement2a
traitement1’ ;
Si condition1’ alors ATTENTION !!! Des
traitement2a’ structures de choix peuvent
Sinon « renfermer » d’autres
traitement2b’ structures de choix : on dit
FinSi ; qu’elles sont imbriquées.
traitement3’
Sinon
traitement2b
FinSi ;
traitement3
Les structures de contrôle de répétition
• On les appelle aussi structures (de contrôle) de
répétition ou structures itératives ou structures de
boucle.
• Elles permettent de réaliser un même traitement
un certain nombre de fois (répétition du traitement).
• Deux principales structures de contrôle itératives
existent : celle nécessitant la connaissance préalable
du nombre d’itérations à faire, et celle ne
nécessitant pas cette connaissance.
• Structure de contrôle de répétition POUR
Traitement1 ; On se sert d’un compteur, ici la
variable i de type entier, pour gérer le
Pour i allant de 1 à N faire
nombre de fois que traitement2 sera
exécuté. Si N est supérieur ou égal à 1
traitement2 alors traitement2 est effectué au
moins une fois, autrement jamais.
Ce n’est qu’après avoir réalisé la
FinPour ;
dernière itération qu’on « sort » de la
traitement3 boucle, la valeur de i valant N+1 ou
même indéterminée, et que
traitement3 est effectué.
• Structure de contrôle de répétition POUR
Traitement1 ; ATTENTION !!!
L’incrément ou le pas K correspond à la
Pour i allant de 1 à N faire
valeur à rajouter à la valeur actuelle de i
pour obtenir sa valeur suivante.
traitement2 Par défaut K vaut 1 et on ne précise pas.
Mais si K venait à être différent de 1
FinPour ; (même négatif) il faudrait le préciser, et
dans ce cas il faudrait employer plutôt la
traitement3
forme :
Pour i allant de 1 à N par pas de K faire
• Structure de contrôle de répétition POUR
Traitement1 ; ATTENTION !!!
Cette incrémentation de la valeur de la
Pour i allant de 1 à N faire variable i est automatiquement gérée
par la structure de contrôle. Il est par
conséquent interdit de modifier la
traitement2
valeur de i au sein de la boucle POUR.
Cependant, la valeur de la variable i
FinPour ; peut être utilisée en lecture au sein de
traitement3 la boucle.
• Structure de contrôle de répétition TANT QUE
Traitement1; Après avoir exécuté traitement1, la
réalisation de traitement2 est
Tant que condition faire conditionnée par le fait que la valeur de
l’évaluation de condition est à VRAI.
traitement2 A chaque fois que traitement2 est
effectué, la rencontre du FinTantque
oblige qu’on aille au début du Tant que
FinTantque ; vérifier que condition est toujours VRAI.
traitement3 Dès que l’évaluation de condition donne
FAUX, on « sort » de la boucle et le
traitement3 est effectué.
• Structure de contrôle de répétition TANT QUE
Traitement1 ; Le nombre d’itérations à faire
n'est pas requis au préalable.
Tant que condition faire
MAIS ATTENTION !!!
Si après avoir exécuté traitement1, la
traitement2 première évaluation de condition
donne FAUX, alors traitement2 ne sera
jamais effectué, et le déroulement de
FinTantque ;
l’algorithme se poursuivra avec
traitement3 traitement3.
• Structure de contrôle de répétition TANT QUE
Traitement1 ;
La condition est supposée avoir été
Tant que condition faire initialisée avant l’entrée de la boucle
(dans traitement1 par exemple) et doit
être modifiable par traitement2 afin de
traitement2 permettre de sortir de la boucle.
ATTENTION
FinTantque ; aux boucles infinies !
traitement3 S’assurer de la condition d’arrêt !
• Structures de contrôle de répétition imbriquées
Boucle1
Boucle2 ATTENTION !!!
Des structures de contrôle de
Boucle3 répétition peuvent « renfermer
» d’autres structures de contrôle
de répétition : on dit qu’elles
sont imbriquées.
FinBoucle3
On veillera à la bonne maîtrise
FinBoucle2 des conditions d’arrêt de
FinBoucle1 chacune d’elles.
Structure de contrôle conditionnel
Exercice 1
Rédiger un algorithme permettant de demander à l’utilisateur de fournir la réponse de l’opération 4x5.
Selon sa réponse, l’algorithme affiche soit le message « Bravo ! Vous êtes bon ! », soit le message «
Dommage ! Des efforts sont à faire ! »
Exercice 2
Ecrire un algorithme permettant d’une part de demander à l’utilisateur s’il est un homme ou une
femme, et d’autre part, en fonction de la réponse donnée, de ranger dans une variable le message
“Merci monsieur” ou “Merci madame”.
Exercice 3
Ecrire un algorithme affichant le message « La valeur entière saisie est paire » ou « La valeur entière
saisie est impaire » selon que la valeur introduite par l’utilisateur est paire ou impaire.
Exercice 4
Ecrire un algorithme permettant de résoudre dans R une équation du 2nd degré.
Structure de contrôle itérative
Exercice 1
Ecrire un algorithme affichant le message « Bravo ! »
aussi longtemps que l’utilisateur répondra par « O »
à la question
« Allez-vous encourager les étalons ? <O/N>”
Exercice 2
Ecrire un algorithme permettant à l’utilisateur de faire
autant de fois qu’il le souhaite, la somme de 2
entiers relatifs qu’il aura à introduire.
Exercice 3
1) En s’appuyant sur une structure de répétition, écrire
un algorithme permettant de calculer la somme
des n (n > 0) premiers entiers naturels strictement
positifs. On supposera la valeur de n déjà connue.
2) Pourrait-on obtenir une autre solution sans utiliser
une structure de répétition ? Si oui faites en une
proposition.
Exercice 4
1) En s’appuyant sur une structure de répétition,
écrire un algorithme permettant d’afficher les dix
premières lignes de la table de multiplication par 2.
2) Pourrait-on obtenir une autre solution sans utiliser
une structure de répétition ? Si oui faites en une
proposition.
Exercice 5
En s’appuyant sur les structures de contrôle, on vous
demande d’écrire un algorithme qui, à partir de la
fourniture par l’utilisateur d’un nombre entier
correspondant à un nombre de secondes, calcule et
affiche l’équivalent en heures, minutes et secondes.
Exercice 6
Ecrire un algorithme qui, à partir de la
fourniture par l’utilisateur de deux nombres entiers
A et B, calcule et affiche leur plus grand commun
diviseur connu sous le vocable de PGCD.
[Link] structures de données de base
Introduction aux structures de données
Introduction aux structures de données
• Une structure de données est une organisation
ou une structuration des données ou encore un type
de données.
• Les principales structures de données de base sont :
les types scalaires prédéfinis (entiers naturels,
entiers relatifs, réels, booléens, caractères) ;
les types scalaires construits (chaîne de
caractères, intervalle, ensemble) ;
les tableaux à une ou plusieurs dimensions ;
les enregistrements.
Introduction aux structures de données
• ATTENTION !!!
structures de contrôle ≠ structures de données
res
Les 1 sont des instructions permettant d’orienter le fil
ndes
du déroulement de l’algorithme tandis que les 2 sont
une organisation ou une structuration des données.
Introduction aux tableaux
• On appelle tableau une structure de données
constituée de plusieurs éléments de même type
qu’on peut référencer au moyen d’un indice.
• Un tableau correspond à une suite/succession
finie de variables/éléments de même type, évitant
à l’utilisateur l’emploi d’un grand nombre de
variables pour lesquelles il lui aurait fallu trouver des
noms distinctifs.
Introduction aux tableaux
• Exemple : on voudrait conduire une étude sur la
taille des étudiants du CFPEM.
Introduction aux tableaux
Une façon rébarbative de le faire serait de déclarer
une liste de 90 variables de type réel,
chacune associée à la taille d’un étudiant :
er
t1 est de type réel, correspondant à la taille du 1 étudiant ;
e
t2 est de type réel, correspondant à la taille du 2 étudiant ;
e
t3 est de type réel, correspondant à la taille du 3 étudiant ;
e
t4 est de type réel, correspondant à la taille du 4 étudiant ;
e
t5 est de type réel, correspondant à la taille du 5 étudiant ;
e
t6 est de type réel, correspondant à la taille du 6 étudiant ;
…
e
t89 est de type réel, correspondant à la taille du 89 étudiant ;
e
t90 est de type réel, correspondant à la taille du 90 étudiant.
Introduction aux tableaux
Quelles difficultés
aurions-nous eues s’il
y avait mille, dix
mille, un million de
variables à manipuler ?
Tableaux à une dimension
On les appelle aussi :
- tableaux à une entrée
- vecteurs
Tableaux à une dimension
Exercice 1
Ecrire un algorithme permettant d’initialiser
interactivement un tableau de 10 entiers naturels.
Exercice 2
Ecrire un algorithme permettant d’afficher les 50
valeurs réelles d’un tableau. On suppose le tableau
initialisé.
Exercice 3
On suppose avoir un tableau T initialisé avec 10
entiers naturels. Ecrire un algorithme permettant de
calculer le produits des valeurs de ce tableau.
Programmation C
Plan du cours
I. Introduction
II. Notions de Variable (types , declaration , operateurs,…)
III. Les fonctions entrées-sorties (printf, scanf, …)
IV. Les structures de contrôle
V. Les tableaux
I- Introduction
1- Langages informatiques
⚫ Un langage informatique est un outil permettant de donner des ordres
(instructions) à la machine
A chaque instruction correspond une action du processeur
⚫ Intérêt : écrire des programmes (suite consécutive d’instructions) déstinés à
effectuer une tache donnée
Exemple: un programme de gestion de comptes bancaires
⚫ Contrainte: être compréhensible par la machine
2- Langage machine
Langage binaire: l’information est exprimée et manipulée sous forme
d’une suite de bits
Un bit (binary digit) = 0 ou 1 (2 états électriques)
Une combinaison de 8 bits= 1 Octet possibilités qui permettent de
coder tous les caractères alphabétiques, numériques, et symboles tels
que ?,*,&, …
Le code ASCII (American Standard Code for Information Interchange)
donne les correspondances entre les caractères alphanumériques et
leurs représentation binaire, Ex. A= 01000001
Les opérations logiques et arithmétiques de base (addition,
multiplication, … ) sont effectuées en binaire
3- Langages de programmation
Deux types de langages:
• Langages procéduraux
• Langages orientés objets
Exemples de langages:
• Fortran, Cobol, Pascal, C, …
• C++, Java, …
4- Caractéristiques du C
Universel : n'est pas orienté vers un domaine d'application particulier
(applications scientifiques, de gestion, …)
Près de la machine : offre des opérateurs qui sont proches de ceux du
langage machine (manipulations de bits, d’adresses, …) efficace
Modulaire: peut être découpé en modules qui peuvent être compilés
séparément
Portable: en respectant le standard ANSI-C, il est possible d'utiliser le
même programme sur plusieurs systèmes (hardware, système
d'exploitation )
5- Programme source, objet et exécutable
Un programme écrit en langage C forme un texte qu’on nomme
programme ou code source, qui peut être formé de plusieurs fichiers
sources
Chaque fichier source est traduit par le compilateur pour obtenir un
fichier ou module objet (formé d’instructions machine)
Ce fichier objet n’est pas exécutable tel quel car il lui manque les
instructions exécutables des fonctions standards appelées dans le fichier
source (printf, scanf, …) et éventuellement d’autres fichiers objets
L’éditeur de liens réunit les différents modules objets et les fonctions de
la bibliothèque standard afin de former un programme exécutable
6- Le Compilateurs C
Pour pouvoir écrire des programmes en C, vous avez besoin
d’un compilateur C sur votre machine
Il existe plusieurs compilateurs respectant le standard ANSI-C.
Une bonne liste est disponible sur internet :
[Link]/compilateurs/
Nous allons utiliser l'environnement de développement Dev-
C++ avec le système d’exploitation Windows
Vous pouvez télécharger Dev-C++ librement comme pour ce
cours , par exemple sur le site [Link]
7- Utilisation d’un Environnement de Developpement Integre (IDE ou EDI en anglais )
8- Composantes d’un programme C
Directives du préprocesseur
• inclusion des fichiers d'en-tête (fichiers avec extension .h)
• définitions des constantes avec #define
déclaration des variables globales
définition des fonctions (En C, le programme principal et les sous programmes sont définis comme fonctions )
Les commentaires : texte ignoré par le compilateur, destiné à améliorer la compréhension du code,
Exemple :
#include<stdio.h>
main()
{ printf( "notre premier Pas en C \n");
/*ceci est un commentaire*/
}
Remarques sur ce notre programme
#include<stdio.h> informe le compilateur d’inclure le fichier stdio.h
qui contient les fonctions d’entrées-sorties dont la fonction printf
La fonction main est la fonction principale des programmes en C:
Elle se trouve obligatoirement dans tous les programmes. L'exécution
d'un programme entraîne automatiquement l'appel de la fonction
main.
L’appel de printf avec l’argument "notre premier pas en C\n" permet
d’afficher : notre premier pas en C et \n ordonne le passage à la ligne
suivante
En C, toute instruction simple est terminée par un point-virgule ;
Un commentaire en C est compris entre // et la fin de la ligne ou bien
entre /* et */
- Les variables
Les variables servent à stocker les valeurs des
données utilisées pendant l’exécution d’un programme
Les variables doivent être déclarées avant d’être
utilisées, elles doivent être caractérisées par :
un nom (Identificateur)
un type (entier, réel, …)
1- Les noms de variables
Le choix d’un nom d’une variable ou d’une fonction est soumis à quelques règles :
Il doit être constitué uniquement de lettres, de chiffres et du caractère souligné _ (Eviter
les caractères de ponctuation et les espaces) correct: PRIX_HT, prixHT incorrect:
PRIX-HT, prix HT, [Link]
Il doit commencer par une lettre (y compris le caractère souligné) correct : A1, _A1
incorrect: 1A
doit être différent des mots réservés du langage
Attention : C distingue les majuscules et les minuscules. NOMBRE et nombre
sont des identificateurs différents
2- Les types de base
Le type d’une variable détermine l’ensemble des valeurs qu’elle peut prendre
et le nombre d'octets à lui réserver en mémoire
En langage C, il n’y a que deux types de base les entiers et les réels avec
différentes variantes pour chaque type
Remarques:
Un type de base est un type pour lequel une variable peut prendre une seule
valeur à un instant donné contrairement aux types agrégés
Le type caractère apparaît en C comme cas particulier du type entier (un
caractère est un nombre entier, il s’identifie à son code ASCII)
En C il n'existe pas de type spécial pour chaînes de caractères. Les moyens de
traiter les chaînes de caractères seront présentés aux chapitres suivants
Le type booléen n’existe pas. Un booléen est représenté par un entier (un entier
non nul équivaut à vrai et la valeur zero équivaut à faux)
3- Déclaration des variables
⚫ Les déclarations introduisent les variables qui seront utilisées, fixent
leur type et parfois aussi leur valeur de départ (initialisation)
⚫ Syntaxe de déclaration en C
<Type> <NomVar1>,<NomVar2>,...,<NomVarN>;
⚫ Exemple:
Type Exemple de declaration la variable
int i, j,k;
int
float x, y ;
float
double z=1.5;
double
char Char Nom[ ] =’’ Zoungrana’’ ;
TRES IMPORTANT : Spécificateurs de format
En langage C , la manipulation des type nécessite de prendre en
compte leur formatage entrée(saisie) et en sortie(Affichage a
l’ecran) ,
Symble Type Affichage Comme
%d ou %i Int Entier relatif
%f Float,double Réel en notation décimale
%s Char[] Chaine de caractère
TP1: Déclaration et affichage de variables
4- Déclaration des constantes
Une constante conserve sa valeur pendant toute l’exécution d’un programme en
C, on associe une valeur à une constante en utilisant :
• la directive #define :
Syntaxe : #define nom_constante valeur
Ici la constante ne possède pas de type.
exemple: #define PI =3.141592
• le mot clé const :
Syntaxe : const type nom = expression ;
Dans cette instruction la constante est typée exemple
: const float PI =3.141592 TP2:
Calcul Surface du cercle avec la
constante
PI
5- Opérateurs en C
Le langage C est riche en opérateurs. les opérateurs
standards sont:
• les opérateurs arithmétiques : +, -, *, /, %
• les opérateurs logiques : &&, ||, !
• les opérateurs de comparaison : ==, !=, <, >, <=, >=
• les opérateurs d’incrémentation et de décrémentation : ++, --
III- Les fonctions Entrées-sorties
1- Les instructions de lecture et d’écriture
Il s’agit des instructions permettant à la machine de dialoguer avec l’utilisateur
• Dans un sens la lecture permet à l’utilisateur d’entrer des valeurs au
clavier pour qu’elles soient utilisées par le programme
• Dans l’autre sens, l’écriture permet au programme de communiquer des
valeurs à l’utilisateur en les affichant à l’écran (ou en les écrivant dans un
fichier)
• La bibliothèque standard <stdio> contient un ensemble de fonctions qui
assurent la lecture et l’écriture des données. Les fonctions les plus
importantes:
printf() écriture formatée de données
scanf() lecture formatée de données
a- Ecriture formatée de données: printf ()
⚫ la fonction printf est utilisée pour afficher à l’écran du texte, des
valeurs de variables ou des résultats d’expressions. ⚫ Syntaxe :
printf("format", expr1, expr2, …);
• expr1,… : sont les variables et les expressions dont les valeurs sont à
représenter
• Format : est une chaîne de caractères qui peut contenir
• du texte
• des séquences d’échappement (‘\n’, ‘\t’, …)
• des spécificateurs de format : un ou deux caractères précédés du symbole %,
indiquant le format d’affichage
Rq : Le nombre de spécificateurs de format doit être égale au
nombre d’expressions!
TP3: Affichage des variable declarees
2- Lecture formatée de données: scanf ()
⚫ la fonction scanf permet de lire des données à partir du clavier
⚫ Syntaxe : scanf("format", AdrVar1, AdrVar2, …);
• Format : le format de lecture de données, est le même que pour
printf
• adrVar1, adrVar2, … : adresses des variables auxquelles les
données seront attribuées. L’adresse d’une variable est indiquée
par le nom de la variable précédé du signe &
2- Exemples de scanf()
TP4:
Entrée
des
valeur
pour les
variables déclarées
2- Exemples de scanf() Bis
TP4: plusieurs Entrée de
valeurs
simultané
pour les
variables
déclarées
TP5: Entrée des valeur pour les variables déclarées
TP6:
Calculer la Surface du cercle avec la
constante PI et le rayon a saisir. Vous
donnerai comme nom au programme
SurfaceCercle2
TP6:
Solution
TP7:
Calculer la Surface et le perimetre d’un
rectangle avec la longeur et la Largeur a
saisir en seule invitation. Vous
donnerai comme nom au programme
SurfPeriRectangle
TP7:
Solution
IV- Structures de contrôle
⚫ Les structures de contrôle définissent la façon avec laquelle les
instructions sont effectuées. Elles conditionnent l'exécution
d'instructions à la valeur d'une expression
⚫ On distingue :
• Les structures alternatives (tests) : permettent d’effectuer des
choix càd de se comporter différemment suivant les circonstances
(valeur d'une expression). En C, on dispose des instructions : if…else et
switch.
• Les structures répétitives (boucles) : permettent de répéter
plusieurs fois un ensemble donné d’instructions. Cette famille dispose
des instructions : while, do…while et for.
Les structures alternatives (tests)
permettent d’effectuer des choix càd de se comporter différemment suivant
les circonstances (valeur d'une expression). En C, on dispose des instructions
: if…else et switch.
1- La structure if…else
Syntaxe :
L’instruction If permet de programmer une structure dite de choix,
permettant de choisir entre deux instructions suivant la valeur d’une expression
numérique jouant le rôle de condition. La seconde partie, introduite par le mot
clé else, est facultative, de sorte que l’instruction if présente deux formes :
If (expression) Remarque :
Instruction1 else ou - Les parenthèses autour de l’expression sont
If (expression) obligatoires
Instruction2
Instruction1 - Les instructions instruction1 et instruction2 doivent
se terminer par un « ; ».
Exemple Tester la parite d’un nombre
Exemple Utilisation de plusieurs if ou imbrication
Il est possible d’imbriquer plusieurs
instructions if mais il faut toujours faire
attention à ce que vos else soient rattachés au
bon if.
2- La structure switch switch(variable)
{
L’instruction switch
case valeur1 :
permet de programmer instruction1 ;
ce l’on nomme instruction2 ; usuellement une
break;
structure de choix case valeur2 : multiple, c'est-à-dire un
instruction3 ; choix entre plusieurs instruction4 ;
possibilités, chaque break;
possibilité s’exprimant
... par
une ou plusieurs default : instructions.
Instruction par defaut ;
}
B- Les structures répétitives (boucles)
Elles permettent de répéter plusieurs fois un
ensemble donné d’instructions. Cette categorie
est composées des instructions : while,
do…while et for.
2- La boucle while Syntaxe :
while (expression_1)
Instruction_1 Cette instruction évalue expression_1 suivant
les règles habituelles ; si cette dernière est nulle
Attention :
- Les parenthèses alors elle passe à l’instruction suivant le while
autour et l’exécution de la boucle est terminée. Dans le
d’expression_1 cas contraire (expression non nulle), on exécute
sont l’instruction instruction_1 et on reprend le
obligatoires processus d’évaluation d’expression_1 et ainsi
- Notez qu’il n’y a pas de suite.
de ; en fin
d’instruction while.
Exemple d’utilisation
1- La boucle do…while - Toujours mettre les parenthèses autour de l’expression
- Ne pas oublier le ; en fin de while (expression)
Cette instruction permet de - Même s’il n’y a qu’une seule instruction dans le bloc do
while, il est nécessaire de mettre un ; en fin
réaliser des boucles de type d’instruction.
faire jusqu’à.
Explication
Cette instruction do ..while exécute instruction_1
Syntaxe : puis évalue l’expression de contrôle suivant les règles
habituelles : si elle est nulle alors elle passe à l’instruction
suivant le do..while, sinon (expression non nulle) on
do instruction_1 reprend le processus d’exécution de instruction_1.
while (expression) ;
Attention :
Exemple d’utilisation
3- La boucle for
L’instruction for permet de réaliser des boucles avec compteur. C’est une boucle dans laquelle une
variable particulière dite variable de contrôle ou compteur sert à compter le nombre de tours de boucle.
Syntaxe :
for ([expression_1];[expression_2];[expression_3])
Instruction_1
Explication
Cette expression réalise les étapes suivantes :
1. évalue expression_1 si elle est présente
2. évalue expression_2. Si elle est absente, cela revient à lui attribuer la valeur
1. 3. Si sa valeur est nulle, l’exécution du for est terminée, sinon on exécute
instruction_1 et on évalue expression_3 si cette dernière est présente.
Remarques
expression_1 : est une affectation d’une valeur initiale à une variable compteur,
expression_2 : compare la valeur de ce compteur à une valeur limite,
expression_3 : incrémente le compteur.
Table de multiplication avec la boucle For