Vous êtes sur la page 1sur 212

Algorithmique et Programmation

Informatique

Cédric BÉRÉ 1

1Département d’Informatique de l’UFR Sciences Exactes et Appliquées

Université Ouaga 1 Pr Joseph Ki-ZERBO

1
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Algorithmique et programmation

Cédric BERE
Enseignant d’Informatique à
l’Université Ouaga 1 Pr Joseph
Ki-ZERBO
@cedric.bere

"Don't just buy a new video game --- make one! ” Barack Obama

2
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Algorithmique et programmation

Objectifs:
Comprendre les bases de l’algorithmique

Ecrire un algorithme

Traduire un algorithme en langage C

Programmer en langage C

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 3


Algorithmique et programmation

Plan
INTRODUCTION

LES BASES DE L’ALGORITHMIQUE

STRUCTURES DE CONTRÔLE EN ALGO

PROGRAMMATION EN LANGAGE C

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 4


Algorithmique et programmation

Chapitre 1
INTRODUCTION

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 5


Généralités | Informatique

Informatique ?

Information + automatique
néologisme proposé par en 1962 par Philippe
Dreyfus pour caractériser le traitement automatique
de l’information

L’informatique est la science du traitement


automatique de l’information.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 6


Généralités | Informatique

Informatique ?

L’informatique traite de deux aspects


complémentaires : les programmes immatériels
(logiciel, software) qui décrivent un traitement à
réaliser et les machines (matériel, hardware) qui
exécutent ce traitement.
Le matériel est donc l’ensemble des éléments
physiques (microprocesseur, mé́ moire, écran,
clavier, disques durs. . .) utilisés pour traiter les
données.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 7
Généralités | Ordinateur

Qu’est ce qu’un ordinateur

Un ordinateur est une machine électronique


programmable qui fonctionne par la lecture
séquentielle d'un ensemble d'instructions,
organisées en programmes, qui lui font
exécuter des opérations logiques et
arithmétiques sur des chiffres binaires.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 8


Généralités | Ordinateur

Qu’est ce qu’un ordinateur

Un ordinateur est un terminal électronique


fonctionnant à l'aide d'un programme ou d'un jeu
d'instructions qui lui font lire, manipuler et
modifier des données numériques.
l’ordinateur est un terme générique qui désigne un
équipement informatique permettant de traiter des
informations selon des séquences d’instructions
(les programmes) qui constituent le logiciel.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 9
Généralités | Ordinateur

A quoi sert un ordinateur?


Bureautique

Jeux vidéo

Prévision météorologique

Applications multimédia sur Internet

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 10


Généralités | Ordinateur

A quoi sert un ordinateur?

Dans tous ces exemples, l’ordinateur traite des


données, et produit un résultat, soit
communiqué à l’utilisateur (son, images, texte),
soit affiché sur un écran, ou stocké sur un
disque, ou autre.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 11


Généralités | Fonctionnement d’un ordinateur

Système d’exploitation

Un programme informatique doit recevoir des données


pour les traiter, et produire d’autres données. Pour
que le programme puisse fonctionner, il faut du
matériel (composants électroniques), et il faut une
couche logicielle intermédiaire avec le matériel,
appelée système d’exploitation.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 12


Généralités | Fonctionnement d’un ordinateur

Système d’exploitation

Le système assure la communication entre le pro-


gramme informatique et le matériel, et permet au
programme d’agir sur le matériel.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 13


Généralités | Fonctionnement d’un ordinateur

Le Processeur
Le processeur effectue des opérations (par exemple des opérations
arithmétiques comme des additions ou des multiplications).

La vitesse d’un processeur, c’est- à-dire en gros le nombre


d’opérations par seconde, appelée vitesse d’horloge, est
mesurée en hertz (Hz), kilohertz (1kHz = 1000Hz) , megahertz
(1MHz = 106Hz, et gigahertz (1GHz = 109Hz).

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 14


Généralités | Fonctionnement d’un ordinateur

Le Processeur
Sur les architectures récentes, la puce contient plusieurs cores,
chaque core étant l’équivalent d’un processeur et les cores
communiquant entre eux très rapidement par des bus de
données.
Exemple : core 2, quadcore, …

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 15


Généralités | Fonctionnement d’un ordinateur

La mémoire centrale

Au cours du déroulement du programme, celui-ci utilise des


données, soit les données fournies en entrée, soit des données
intermédiaires que le programme utilise pour fonctionner. Ces
données sont stockées dans des variables.

Physiquement, les variables sont des données binaires dans la


mémoire centrale (appelée aussi mémoire RAM).

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 16


Généralités | Fonctionnement d’un ordinateur

La mémoire centrale
Le processeur pourra accéder plus tard au contenu de cette variable
pour effectuer d’autres calculs ou produire un résultat en sortie.
La quantité de mémoire RAM est mesurée en octets (ou en
mégaoctets ou gigaoctets).

Les données en mémoire centrale ne sont conservées que pendant


le déroulement du programme, et disparaissent lorsque le
programme se termine (notamment lorsque l’on éteint
17
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Généralités | Fonctionnement d’un ordinateur

Les périphériques
Le programme reçoit des données des périphériques en entrée, et
communique ses résultats en sortie à des périphériques. Une
liste (non exhaustive) de périphériques usuels est :

• le clavier qui permet à l’utilisateur de saisir du texte ;

• la souris qui permet à l’utilisateur de sélectionner, d’activer


ou de créer à la main
des objets graphiques ;

• l’écran qui permet aux programmes d’afficher des données


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 18
Généralités | Fonctionnement d’un ordinateur

Les périphériques
Le programme reçoit des données des périphériques en entrée, et
communique ses résultats en sortie à des périphériques. Une
liste (non exhaustive) de périphériques usuels est :

• le disque dur ou la clef USB qui permettent de stocker des


données de manière permanente. Les données sauvegardées sur
un tel disque sont préservées, y compris après terminaison du
programme ou lorsque l’ordinateur est éteint, contrairement
aux données stockées en mémoire centrale qui disparaissent
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 19
Généralités | Fonctionnement d’un ordinateur

Schéma d’architecture d’un ordinateur

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 20


Généralités | Programme

Qu’est ce qu’un programme

Un programme informatique est un ensemble d'opérations


destinées à être exécutées par un ordinateur.
Un programme informatique est une séquence d’instructions
exécutable par une machine.
#include <stdio.h> /* pour pouvoir lire et écrire */

int main(void) /* programme principal */ {

float x; /* déclaration d’une variable x (nombre réel) */

printf("Veuillez entrer un nombre réel au clavier\n");

scanf("%f", &x); /* lecture auCédric


Wend-Panga clavier de la
BERE - Cours valeur et
Algorithmique deprogrammation
x */ /* affichage de x : */ 21
Généralités | Programme

Qu’est ce qu’une instruction?

Une instruction est une action élémentaire commandant à la


machine un calcul, ou une communication avec l'un de ses
périphériques d'entrées ou de sorties.
Une instruction informatique désigne une étape dans un
programme informatique. Une instruction dicte à l'ordinateur
l'action nécessaire qu'il doit effectuer avant de passer à
l'instruction suivante. Un programme informatique est constitué
d'une suite d'instructions.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 22
Généralités | Programme

Un programme informatique réalise en général trois choses :

Il lit des données en entrée


Le programme doit en effet savoir à partir de quoi travailler.

Par exemple, pour utiliser une calculatrice, on doit lui donner des
nombres et lui dire quelles opérations effectuer.

Pour cela, on utilise souvent un clavier, mais le programme peut


aussi tirer les données d’un disque dur ou encore d’un autre
ordinateur via un réseau ou autre

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 23


Généralités | Programme

Un programme informatique réalise en général trois choses :

Il effectue des calculs


À partir des données en entrée, le programme va appliquer
automatiquement des méthodes pour traiter ces données et
produire un résultat. Les méthodes que sont capables
d’effectuer les ordinateurs s’appellent des algorithmes. Par
exemple, une calculatrice va appliquer l’algorithme d’addition
ou de multiplication.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 24


Généralités | Programme

Un programme informatique réalise en général trois choses :

Il écrit des données en sortie


Lorsque le programme a obtenu un résultat, il doit écrire ce résultat
quelque part pour qu’on puisse l’utiliser. Par exemple, une
calculatrice va afficher un résultat à l’écran ou stocker le
résultat en mémoire.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 25


Généralités | Programme et Algorithme

Algorithme et programme
Le travail d’un programmeur consiste à créer des programmes
informatiques pour résoudre un problème.

La tâche de programmation étant fastidieuse, il s’avère souvent


nécessaire et utile de décrire/expliciter au préalable la
résolution du problème dans un langage qui nous est familier et
accessible : algorithme.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 26


Bases d’algorithmique | Notion d’algorithme

Exemple d’algorithme

Trouver son chemin

Extrait d’un dialogue entre un touriste égaré et un autochtone.

– Pourriez-vous m’indiquer le chemin de la gare, s’il vous plait ?

– Oui bien sûr : vous allez tout droit jusqu’au prochain carrefour, vous

prenez à gauche au carrefour et ensuite la troisième à droite, et vous

verrez la gare juste en face de vous.

– Merci. 27
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Généralités | Notion d’algorithme

Algorithme du tracé de la
spirale
1. Exercice :

Faire dessiner une spirale


rectangulaire de 5 côtés, le plus
petit côté faisant 2 pas de long et
chaque côté fait un pas de plus
que le précédent.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 28


Généralités | Notion d’algorithme

Algorithme du tracé de la
spirale rectangulaire
1. avance de 2 pas,

2. tourne à gauche de 90 ,

3. avance de 3 pas,

4. tourne à gauche de 90 ,

5. avance de 4 pas,

6. tourne à gauche de 90 ,

7. avance de 5 pas,

29
8. tourne à gauche de 90 ,Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Bases d’algorithmique | Caractéristique d’algorithme

Caractéristiques d'un algorithme


Un algorithme doit donc être :
lisible: l'algorithme doit être compréhensible même par un non-
informaticien
de haut niveau: l'algorithme doit pouvoir être traduit en n'importe quel langage

de programmation, il ne doit donc pas faire appel à des notions techniques

relatives à un programme particulier ou bien à un système d'exploitation


ment de l'algorithme ne doit pas porter à confusion, il est donc important de
donné
it pas dépasser une page. Si c'est le cas, il faut décomposer le problème e

cturé: un algorithme doit être composé de différentes parties facilement identifiabl


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 30
Bases d’algorithmique | langage de programmation

langage de programmation
L’algorithmique permet ainsi de passer d’un problème à résoudre à un
algorithme qui décrit la démarche de résolution du problème. La
programmation a alors pour rôle de traduire cet algorithme dans un
langage « compréhensible » par l’ordinateur afin qu’il puisse exécuter
l’algorithme automatiquement.
La programmation d’un ordinateur consiste à lui « expliquer » en détail ce
qu’il doit faire, en sachant qu’il ne « comprend » pas le langage
humain, mais qu’il peut seulement effectuer un traitement automatique
sur des séquences de 0 et de 1
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 31
Bases d’algorithmique | langage de programmation

langage de programmation

Un algorithme exprime la structure logique d’un programme


informatique et de ce fait est indépendant du langage de
programmation utilisé. Par contre, la traduction de l’algorithme dans
un langage particulier dépend du langage choisi et sa mise en œuvre
dépend également de la plateforme d’exécution.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 32


Bases d’algorithmique | Caractéristique d’algorithme

Caractéristiques d'un algorithme


Un programme n’est rien d’autre qu’une suite d’instructions, encodées en
respectant de manière très stricte un ensemble de conventions fixées à
l’avance par un langage informatique.
La machine décode alors ces instructions en associant à chaque « mot » du
langage informatique une action précise.

Le programme que nous écrivons dans le langage informatique à l’aide d’un


éditeur (une sorte de traitement de texte spécialisé) est appelé programme
source (ou code source).

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 33


Bases d’algorithmique | Caractéristique d’algorithme

Caractéristiques d'un algorithme

Le seul « langage » que l’ordinateur puisse véritablement « comprendre »


est donc très éloigné de ce que nous utilisons nous-mêmes. C’est une
longue suite de 0 et de 1 (les « bits », binary digit) traités par groupes
de 8 (les « octets », byte), 16, 32, ou même 64.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 34


Bases d’algorithmique | Caractéristique d’algorithme

Caractéristiques d'un algorithme

Pour « parler » à un ordinateur, il nous faudra donc utiliser des


systèmes de traduction automatiques, capables de convertir en
nombres binaires des suites de caractères formant des mots-clés
(anglais en général) qui seront plus significatifs pour nous.

Le système de traduction proprement dit s’appellera interpréteur ou bien


compilateur, suivant la méthode utilisée pour effectuer la traduction

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 35


Bases d’algorithmique | compilation, interprétation

compilation/interprétation
Un compilateur est un programme informatique qui traduit un langage, le
langage source, en un autre, appelé le langage cible.

ique (logiciel ou matériel) ayant pour tâche d’analyser et d’exécuter un programm

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 36


Bases d’algorithmique | Langage de programmation

Langage de programmation
On appellera langage de programmation un ensemble de mots-clés (choisis
arbitrairement) associé à un ensemble de règles très précises indiquant
comment on peut assembler ces mots pour former des « phrases » que
l’interpréteur ou le compilateur puisse traduire en langage machine
(binaire).

Un langage de programmation se distingue du langage mathématique par sa


visée opérationnelle (ie. il doit être exécutable par une machine), de sorte
qu’un langage de programmation est toujours un compromis entre sa
puissance d’expression et sa
Wend-Panga Cédric possibilité
BERE d’exécution.
- Cours Algorithmique et programmation 37
Bases d’algorithmique | Langage de programmation

Langage de programmation
Un langage de programmation est un langage informatique, permettant à un
humain d’écrire un code source qui sera analysé par un ordinateur.

Le code source subit ensuite une transformation ou une évaluation dans une
forme exploitable par la machine, ce qui permet d’obtenir un programme.
Les langages permettent souvent de faire abstraction des mécanismes bas
niveaux de la machine, de sorte que le code source représentant une solution
puisse être rédigé et compris par un humain.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 38
Bases d’algorithmique | Langage de programmation

Langage de programmation

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 39


Algorithmique et programmation

Chapitre 2

BASES DE L’ALGORITHME

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 40


Bases d’algorithme | Notion d’algorithme

Notion d’algorithme
Un algorithme est une suite finie et non ambiguë
d’opérations ou d'instructions permettant de résoudre un
problème ou d'obtenir un résultat.

Le mot algorithme vient du mot arabe ‫لخوارزمي‬BB‫ا‬, nom du mathématicien


du IXe siècle Al-Khwârizmî

Le domaine qui étudie les algorithmes est appelé l’algorithmique.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 41


Bases d’algorithmique | Notion d’algorithme

Notion d’algorithme
Un algorithme est une suite ordonnée d’instructions qui indique la

démarche a suivre pour résoudre une série de problèmes équivalents.

On retrouve aujourd'hui des algorithmes dans de


nombreuses applications telles que le fonctionnement des
ordinateurs ,la cryptographie, le routage d'informations, la
planification et l'utilisation optimale des ressources, le
traitement d'images, le traitement de texte, la bio-
informatique, la finance, etc.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 42


Bases d’algorithmique | Notion d’algorithme

Algorithme d’Euclide de
calcul du PGCD
L’algorithme le plus célèbre
est l'algorithme d'Euclide (vers
300 avant J.-C.) permettant
de calculer le PGCD de deux
nombres dont on ne connait
pas la factorisation
L’algorithmique est la science
des algorithmes.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 43


Bases d’algorithmique | Algorithmique

Algorithmique
L’algorithmique s’intéresse à l’art de construire des
algorithmes ainsi qu’à caractériser leur validité, leur
robustesse, leur réutilisabilité, leur complexité ou leur
efficacité.

La validité d’un algorithme est son aptitude à réaliser


exactement la tâche pour laquelle il a été conçu.
Si l’on reprend l’exemple précédent de l’algorithme de
recherche du chemin de la gare, l’étude de sa validité
consiste à s’assurer qu’on arrive effectivement à la gare en
exécutant scrupuleusement les instructions dans l’ordre
annoncé.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 44
Bases d’algorithmique | Algorithmique

Exemple d’algorithme

Problème : Trouver son chemin

Extrait d’un dialogue entre un touriste égaré et un autochtone.

– Pourriez-vous m’indiquer le chemin de la gare, s’il vous plait ?

– Oui bien sûr : vous allez tout droit jusqu’au prochain carrefour, vous

prenez à gauche au carrefour et ensuite la troisième à droite, et vous

verrez la gare juste en face de vous.

– Merci. 45
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Bases d’algorithmique | Algorithmique

Algorithmique
La robustesse d’un algorithme est son aptitude à se protéger
de conditions anormales d’utilisation.
Dans l’exemple précédent, la question de la robustesse de
l’algorithme se pose par exemple si le chemin proposé a été
pensé pour un piéton, alors que le « touriste égaré » est en
voiture et que la « troisième à droite » est en sens interdit.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 46


Bases d’algorithmique | Algorithmique

Algorithmique

La réutilisabilité d’un algorithme est son aptitude à être


réutilisé pour résoudre des tâches équivalentes à celle pour
laquelle il a été conçu.
L’algorithme de recherche du chemin de la gare est-il
réutilisable tel quel pour se rendre à la mairie ? A priori non,
sauf si la mairie est juste à côté de la gare.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 47


Bases d’algorithmique | Algorithmique

Algorithmique

La complexité d’un algorithme est le nombre d’instructions


élémentaires à exécuter pour réaliser la tâche pour laquelle il a
été conçu.

Si le « touriste égaré » est un piéton, la complexité de


l’algorithme de recherche de chemin peut se compter en
nombre de pas pour arriver à la gare.

L’ efficacité d’un algorithme est son aptitude à utiliser de


mani`ere optimale les ressources du matériel qui l’exécute.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 48


Bases d’algorithmique | Pseudo code

PSEUDO CODE
une recette de cuisine, une notice de montage peuvent être considérées comme des

algorithmes.

la suite d’instructions suivantes :

Exemple :

1. choisir un nombre entier;

2. le multiplier par lui-même

3. énoncer le résultat obtenu

est un algorithme permettant d’obtenir le carré d’un nombre entier.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 49


Bases d’algorithmique | Pseudo code

PSEUDO CODE
Les instructions doivent être formulées dans un langage
compréhensible par l’exécutant.

Dans le cas d’un humain, il s’agira du langage courant (langue


maternelle), ; dans le cas d’une machine, il faudra recourir à un langage
de programmation (assembleur, basic, C, java, php …).

En algorithmique, nous utiliserons un langage situé à mi chemin entre


le langage courant et un langage de programmation appelé pseudo-
code. Wend-Panga Cédric BERE - Cours Algorithmique et programmation 50
Bases d’algorithmique | Pseudo code

PSEUDO CODE
L’avantage du pseudo-code est qu’il permet de rester proche d’un
langage informatique sans qu’il soit nécessaire de connaître toutes
les règles et spécificités d’un langage particulier.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 51


Bases d’algorithmique | Patron d’algorithme

Canevas d’écriture d’un algorithme

Le patron général est le suivant :


Algorithme NomAlgorithme
Début
... actions
Fin

La première ligne, appelée profil donne essentiellement le nom de l'algorithme. On

trouve ensuite un délimiteur de début puis les différentes actions composant l'algorithme

et enfin un délimiteur de fin.Cédric BERE - Cours Algorithmique et programmation


Wend-Panga 52
Bases d’algorithmique | Variable

VARIABLE
Un algorithme (ou un programme informatique), agit sur des
données.

Les données sont : des nombres, des textes, …

Ces différents éléments sont stockés dans des emplacements


mémoires appelés et accessible par un identificateur/variable.

La notion de variable associe deux éléments : le contenant et


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 53
Bases d’algorithmique | Variable

VARIABLE
Le contenant étant le récipient ou la boîte qui contient le
contenu (la valeur).
Le contenu correspond à la valeur de la variable.

On peut se représenter une variable comme une boîte portant


une étiquette (“le nom de la variable”) à l’intérieur
En informatique, de laquelle
les variables
sont des emplacements
on peut placer un contenu.
réservés dans la mémoire de
l’ordinateur auxquels on
attribue une étiquette.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 54
Bases d’algorithmique | Variables et types
Variables et types

Une variable est constitué d'un nom et d'un contenu, ce contenu étant

d'un certain type.

Les types différents : booléen, caractère, chaîne de caractères, nombre

entier, nombre réel, etc.

Pour la clarté de l'algorithme, il peut être intéressant de déclarer les

variables utilisées et leur type au tout début.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 55


Bases d’algorithmique | Déclaration de variable

Déclarer une variable


Déclarer une variable c’est indiquer le nom et le type (nombre
texte, tableau,…) d’une variable que l’on utilisera dans
l’algorithme.

La déclaration des variables se fait au début de l’algorithme


avant la première instruction.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 56


Bases d’algorithmique | Déclaration de variable

Déclarer une variable


Déclarer une variable consiste à «créer un emplacement
mémoire » destiné à contenir une valeur c’est “créer la boîte”
(Pour reprendre l’image précédente)

Les principaux types de variables que


nous utiliserons seront : entier, nombre (=réel),
texte (=chaîne de caractères),
tableau de nombres ou de textes, logique
(=booléen)

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 57


Bases d’algorithmique | Variable

VARIABLE
- Dans un programme informatique, on va avoir en
permanence besoin de stocker des valeurs de types
différents : utilisation de variables.

- 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.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 58


Bases d’algorithmique | Variable

VARIABLE
Numérique Alphanumériques Booléen
Types
Entier Réel Caractères Chaîne de
caractères
-345 -123,56 ‘A’ ‘@‘ toto’ ‘Aly’ VRAI

Exemple 2018 17 ‘2’ ‘?’ note12'


FAUX
de valeur 178 4,1x1034 +’ ‘%’ 3445'

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 59


Bases d’algorithmique | Déclaration de variable

Déclarer une variable


Lorsqu’on déclare une variable dans un programme informatique,
l’ordinateur affecte une étiquette à une zone de mémoire et
éventuellement réserve de l’espace pour le contenu de cette
variable en fonction de son type.

Exemple de déclaration de variables

variables
x : nombre
y : texte
a, b, c : entiers

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 60


Bases d’algorithmique | Affectation de variable

Affecter une valeur à une variable


Affecter une variable, c’est attribuer une valeur à cette variable. Si
la variable contenait déjà une valeur, cette ancienne valeur est
effacée.

Affecter une variable revient à “remplir la boîte”


Affectation souvent symbolisée par une flèche vers la gauche (←).


x←5

x←5

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 61


Bases d’algorithmique | Affectation de variable

Exemple d’affectation

Toto←24
Tutu←Toto Riri←  "Loulou"
Tutu←Toto + 4 Fifi←"Riri"
Tutu←Tutu + 1 Riri←Fifi

Donnez les valeurs des variables Toto, Tutu, Riri, Fifi ?

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 62


Bases d’algorithmique | Patron d’algorithme

Canevas d’écriture d’un algorithme

Nous allons maintenant préciser les variables utilisées par l'algorithme et leurs

types, en distinguant les paramètres externes et les variables internes à l'algorithme.

Ainsi, le patron d'un algorithme devient


Algorithme NomAlgorithme (paramètres...)
Variable :…

Début
... actions
Fin 63
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Bases d’algorithmique | Patron d’algorithme

Exemple d’affectation

Algorithme testAlgorithme
variables
x : entier
Erreur!!!
Début
x ←"bonjour"
Fin

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 64


Bases d’algorithmique | Patron d’algorithme

Exemple d’algorithme

Algorithme testAlgorithme
variables
x, y, z : entiers
Début Donnez la valeur de chacune des
x←5 variables
y←x
z ← x+y+1
Fin

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 65


Bases d’algorithmique | Patron d’algorithme

Exemple d’algorithme
Quelles seront les valeurs de variables A et B après exécution des instructions suivantes

Algorithme MesVariablesAetB
variables
A, B : entiers
Début
A←1
B←A+3
A←3
Fin Wend-Panga Cédric BERE - Cours Algorithmique et programmation 66
Bases d’algorithmique | Patron d’algorithme

Exemple d’algorithme
Quelles seront les valeurs de variables A, B et C après exécution des instructions suivantes

Algorithme testValeurs
variables
A, B, C : entiers
Début
A←5
B←3
C ←A+ B
A←2
C←B-A 67
Fin
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Bases d’algorithmique | Patron d’algorithme

Exemple d’algorithme
Quelles seront les valeurs de variables A, B après exécution des instructions suivantes

variables
A, B : entiers
Début
A←5
B←A+4
A←A+1
B←A-4
Fin Wend-Panga Cédric BERE - Cours Algorithmique et programmation 68
Bases d’algorithmique | Patron d’algorithme

Exemple d’algorithme
Quelles seront les valeurs de variables A, B et C après exécution des instructions suivantes

variables
A, B, C : entiers
Début
A←3
B ← 10
C ←A+B
B←A+B
A←C Wend-Panga Cédric BERE - Cours Algorithmique et programmation 69
Bases d’algorithmique | Patron d’algorithme

Exemple d’algorithme
Quelles seront les valeurs de variables A, B après exécution des instructions suivantes

variables
A, B : entiers
Début
A←5
B←2
A←B
B←A
Fin
permettent-elles d’échanger les deux valeurs de B et A? Si l’on inverse les deux dernières instruction
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 70
Bases d’algorithmique | Patron d’algorithme

Exemple d’algorithme
algorithme permettant d’échanger les valeurs de deux variables A et B et ce quelque soit leur conten

variables
A, B, tmp: entiers
Début
A←5
B←2
tmp ← A
A←B
B ← tmp
Fin
On est obligé de passer par une variable dite temporaire ou variable tampon (la variable tmp)
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 71
Bases d’algorithmique | Patron d’algorithme

Exemple d’affectation
Algorithme TheoremePythagore
Variables
a, b, c : nombres entiers
Début
afficher("Entrer la longueur du premier côté de l'angle droit ») ;

lire(a);

afficher("Entrer la longueur du deuxième côté de l'angle droit »);

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 72


lire(b)
Bases d’algorithmique | Patron d’algorithme

Exemple d’affectation
Ecrire l’algorithme qui permet de calculer le carré d’un nombre
ALGORITHME CarreDeX
VARIABLES
x : entier
y : entier
DEBUT
AFFICHER ("Entrer un nombre entier")
LIRE (x)
y ← x*x
AFFICHER ("Le carré est : ", y)
FIN
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 73
Bases d’algorithmique | Patron d’algorithme

Exemple d’affectation
Ecrire l’algorithme qui permet de calculer le carré d’un nombre
ALGORITHME CarreDeX
VARIABLES
x : entier
y : entier
DEBUT
AFFICHER ("Entrer un nombre entier")
LIRE (x)
y ← x*x
AFFICHER ("Le carré est : ", y)
FIN
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 74
Bases d’algorithmique | Patron d’algorithme

Exemple d’affectation
Ecrire un algorithme qui calcule puis affiche l’âge qu’aura une personne

en 2100 :

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 75


Bases d’algorithmique | Patron d’algorithme

CORRIGE
Ecrire un algorithme qui calcule puis affiche l’âge qu’aura une personne

en 2100 :
ALGORITHME CalculAge2100
VARIABLES
   annee, age, age_en_2100 : entiers
DEBUT
afficher("Entrer l'année actuelle")
   lire(annee)
   afficher ("Entrer votre âge")
   lire(age)
   age_en_2100 ← age + 2100 - annee
   afficher ("En 2100, vous aurez ", age_en_2100, " ans.")
FIN
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 76
Bases d’algorithmique | Organigramme

Organigramme

On peut représenter un algorithme à l’aide de pseudo-code ou


ORGANIGRAMME
d’organigramme
PSEUDO-CODE
ALGORITHME CalculAge2100
VARIABLES
   annee, age, age_en_2100 : entiers

DEBUT
afficher("Entrer l'année actuelle")
   lire(annee)
   afficher ("Entrer votre âge")
   lire(age)
   age_en_2100 ← age + 2100 - année
   afficher ("En 2100, vous aurez ", age_en_2100, "
ans.")
FIN

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 77


Bases d’algorithmique | Organigramme

Organigramme

L’organigramme est une représentation graphique d’un algorithme

qui est représentée par des conventions graphiques

Traitement
Début et Fin

Lecture et écriture
Test

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 78


Bases d’algorithmique | Organigramme

Exemple d’organigramme
Début

Ecrire (" Donnez A")


Lire (A)
Ecrire (" Donnez B")
Lire(B)

S ←A+ B

Ecrire (" La somme de A et B est :" , S)

Fin

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 79


Algorithmique et programmation

Chapitre 3
Structures de contrôle
et
Structures de données statiques

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 80


Structure de contrôle | Contrôle du flux d’exécution

Flux d’exécution

Le « chemin » suivi par l’exécution d’un programme est

appelé un flux d’exécution, et les constructions qui le

modifient sont appelées des instructions de contrôle de flux.


Les structures de contrôle sont les groupes d’instructions qui

déterminent l’ordre dans lequel les actions sont effectuées..


En programmation moderne, il en existe seulement trois :

• la séquence

• la sélection,
81
• la répétition Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Structures de contrôles | structure séquentielle

La Séquence

La structure séquentielle est une structure dont les


instructions sont exécutées l’une après l’autre de façon à ce
que l’ordre des instructions est respecté.
ALGORITHME CalculAge2100
VARIABLES
   annee, age, age_en_2100 : entiers

DEBUT
afficher("Entrer l'année actuelle")
   lire(annee)
   afficher ("Entrer votre âge")
   lire(age)
   age_en_2100 ← age + 2100 - année
   afficher ("En 2100, vous aurez ", age_en_2100, "
ans.")
FIN 82
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Structures de contrôles | structure sélective
La Sélection

La structure sélective est une structure dont les instructions

sont exécutées selon les réponses des conditions.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 83


Structures de contrôles | structure sélective
La Sélection

La structure sélective simple (Un choix)


SYNTAXE :

Si Condition Alors

instructions;

Finsi

où condition est une expression booléenne. L'instruction n'est exécutée que


si cette l'expression booléenne est évaluée à VRAI . Si condition est évaluée
à FAUX aucune instruction n'est exécutée. Dans les deux cas, le programme
poursuit son exécution par ce qui se trouve après le FINSI.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 84
Structures de contrôles | structure sélective
La Sélection
SYNTAXE :

Si Condition Alors
Exemple avec Si
instructions;
ALGORITHME ValeurAbsolue
VARIABLES Finsi
x : entier
DEBUT
AFFICHER ("Entrer un nombre" :)
LIRE (x)
Si (x<0) Alors
x ← -x;
Finsi
AFFICHER(x)
FIN

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 85


Structures de contrôles | structure sélective
La Sélection

Exemple avec Si

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 86


Structures de contrôles | structure sélective
La Sélection

La structure sélective complète


SYNTAXE :

Si Condition Alors

traitement 1;

sinon

traitement 2;

Finsi

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 87


Structures de contrôles | structure sélective

La structure sélective complète

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 88


Structures de contrôles | structure sélective

La structure sélective complète

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 89


Structures de contrôles | structure sélective

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 90


Structures de contrôles | structure sélective

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 91


Structures de contrôles | structure sélective

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 92


Structures de contrôles | structure sélective

Imbrication de Si

Exercice : Ecrire un algorithme sous forme d’organigramme en utilisant la structure sélective

complète du Si pour afficher la mention d’un étudiant à partir de la moyenne de l’étudiant.

Indication :

- 10<= Moyenne <12 mention « Passable »

- 12<= Moyenne <14 mention « Assez bien »

- 14<= Moyenne <16 mention « Bien »

- 16<= Moyenne <18 mention « Très Bien »

- 18<= Moyenne <20 mention « Excellent »

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 93


Structures de contrôles | structure sélective

La structure à choix multiple

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 94


Structures de contrôles | structure sélective

La structure à choix multiple


Autres variantes :

SYNTAXE : SYNTAXE :

Selon Cas moncas Suivant Cas x

valeur 1 : instruction 1 valeur 1 : instruction 1

valeur 2 : instruction 2 valeur 2 : instruction 2

valeur 3 : instructions 3 valeur 3 : instructions 3

valeur 4 : instructions 4 valeur 4 : instructions 4

Autre cas : Autre ca

instructions par défaut instructions par défaut


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 95
Structures de contrôles | structure sélective

La structure sélective à choix multiple

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 96


Structures de contrôles | structure sélective

La structure sélective à choix multiple

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 97


Structures de contrôles | structure répétitive

Structure répétitive

Boucle Pour

Pour i allant de début à fin, pas de i Faire

instructions
Exemple :
Pour i allant de 1 à 20, i←i+2, Faire
instructions
FinPour
FinPour
Le pas désigne l’incrémentation ou la

décrémentation
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 98
Structures de contrôles | structure répétitive

Structure répétitive

Boucle Pour
Exercice : Ecrire un algorithme qui affiche
la table de multiplication par 5 avec une
boucle Pour

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 99


Structures de contrôles | structure répétitive

Structure répétitive

CORRIGÉ

Exercice : Ecrire un algorithme qui affiche la table de multiplication par 5 avec une boucle

Pour
ALGORITHME MultiplicationPar5
VARIABLES
res, X : entier
compteur : entier
DEBUT
X←5;
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 10
0
Structures de contrôles | structure répétitive

Structure répétitive

CORRIGÉ

Exercice : Ecrire un algorithme qui affiche la table de multiplication par 5 avec une boucle

Pour
Pour compteur allant de 0 à 10 faire
res←X*compteur
afficher (res)
FinPour
FIN

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 10


1
Structures de contrôles | structure répétitive

Structure répétitive

Boucle Pour

Exercice : Ecrire un algorithme qui affiche la table de multiplication d’un nombre entré au

clavier avec une boucle Pour.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 10


2
Structures de contrôles | structure répétitive

Structure répétitive

Boucle : Tant Que Faire


Tant Que condition Faire

instructions

FinTantQue
Il faut s’assurer ici que la condition sera modifiée à un moment donné par le bloc d’instruction

instructions afin qu’on puisse sortir de la boucle.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 10


3
Structures de contrôles | structure répétitive

Structure répétitive

Boucle : Repeter

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 104


Types et Structures de données

Types et structures de données


statiques

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 105


Structures de données | Caractères

Type caractère
Il s'agit du domaine constitué des caractères alphabétiques et numériques .

Une variable de ce type ne peut contenir qu'un seul et unique caractère.

Les opérations élémentaires réalisables sont les comparaisons : <, >, =, ...

Exemple :

Variable C : CARACTERE

C← ‘A'

Ensemble de définition : la table ASCII

ASCII : ( American Standard Code for Information Interchange

Exercice : Écrire un algorithme qui compare deux caractères entrés au

clavier.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 106


Structures de données | Caractères

Type caractère
ALGORITHME CompareCaractere

VARIABLES

caract1, caract2 : Caractères

DEBUT
Afficher("Entrer les caractère")
Lire(caract1, caract2)
Si caract1 > caract2 ALORS
Afficher(« Le code ASCII de :", caract1
, "est plus grand que le code ASCII de ", caract2)

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 107


Sinon
SUCC(c) : caractère suivant dans la table ASCII, correspond au code 64 de la table ASCII donc au

caractère d;
Structures de données | Caractères

PRED(c) : caractère précédent dans la table ASCII, correspond au code 64 de la table ASCII donc au

caractère b;

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 108


Structures de données | Chaîne de caractères

Type Chaîne de caractère


Une chaine de caractère est un objet qui peut contenir plusieurs

caractères de manière ordonnée.

Exemple :

VAR NOM : CHAINE[30] → Chaine de 30 caractères maximum

ADRESSE : CHAINE → Chaine de 128 caractères maximum

Opérations :

Longueur de la chaîne :

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 109


Structures de données | Chaîne de caractères

Type Chaîne de caractère


Une chaine de caractère est un objet qui peut contenir plusieurs

caractères de manière ordonnée

Opérations :

Longueur de la chaîne :

msg ← "Le beau texte de Frantz Fanon"

longueur(msg) : renvoie le nombre de caractère de la chaine de caractère

msg

NB: les espaces sont comptés comme des caractères.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 110


Structures de données | Chaîne de caractères

Type Chaîne de caractère


Une chaine de caractère est un objet qui peut contenir plusieurs

caractères de manière ordonnée.

Opération de calcul de Longueur de la chaîne :

msg ← "Le beau texte de Frantz Fanon"

longueur(msg) : renvoie le nombre de caractère de la chaine de caractère

msg

NB: les espaces sont comptés comme


Wend-Panga Cédric BERE -des
Courscaractères.
Algorithmique et programmation 111
Structures de données | Chaîne de caractères

Type Chaîne de caractère


Une chaine de caractère est un objet qui peut contenir plusieurs

caractères de manière ordonnée.

Opération de concaténation de chaines de caractères : la fusion de

chaines de caractère

Algorithme BonjourLeMonde

Variables :

msg1, msg2, message : chaînes de caractères

Début

msg1 ← "bonjour"
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 112
Structures de données | Chaîne de caractères

Type Chaîne de caractère


Algorithme BonjourLeMonde

Variables :

msg1, msg2, message : chaînes de caractères

Début

msg1 ← "bonjour"

msg2 ← " tout le monde "

message ← msg1 + msg2

Afficher(message) // « bonjour tout le monde »

FIN 113
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Structures de données | Chaîne de caractères

Type Chaîne de caractère


Opération de parcours dans une chaine de caractères : accéder séquentiellement à chaque

caractère qui compose la chaîne de caractère

Algorithme SupprimeEspaceBlanc

Variables :

msg, nouvMsg: chaînes de caractères

Début

msg ← "bonjour tout le monde, il fait chaud!"

nouvMsg ← ""

Pour i allant de 1 à longueur(msg) Faire


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 114
Structures de données | Chaîne de caractères
Type Chaîne de caractère
Opération de parcours dans une chaine de caractères : accéder séquentiellement à chaque
caractère qui compose la chaîne de caractère

Algorithme SupprimeEspaceBlanc

Variables :

msg, nouvMsg: chaînes de caractères

Début

msg ← "bonjour tout le monde, il fait chaud!"

nouvMsg ← ""

Pour i allant de 1 à longueur(msg) Faire

Si msg(i)<> " " ALORS

nouvMsg ← nouvMsg + msg(i)

Finsi

FinPour

Afficher(nouvMsg) // « bonjourtoutlemonde,ilfaitchaud!"
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 115
FIN
Structures de données | Type énumérés

Type énumérés

Un type énuméré est un type permettant de représenter des objets pouvant prendre leur valeur

dans une liste finie et ordonnée de noms.

Exemple :

TYPE SEMAINE=(lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)

TYPE COULEUR=(rouge, vert, bleu)

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 116


Structures de données | Type intervalles

Type intervalles

Type intervalles
Un type intervalle est un type dont les objets prennent leur valeur dans une portion de

l'intervalle des valeurs d'un autre type (entier, énuméré ou caractère).

Exemple : NBRE=0..99

OUVRABLE=lundi..vendredi

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 117


Structures de données | Type structuré

Type structuré
Une structure est un objet contenant un ensemble d'objets de types

différents, appelés champs. Un type doit donc décrire l'ensemble des champs contenus dans ses

objets.

Syntaxe :

STRUCTURE <NOM>

{ champ1 : type

champ2 : type

....

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 118


Structures de données | Type structuré

Type structuré

Exemple :

STRUCTURE ETUDIANT

{ NOM : CHAINE

NOTE : REEL

Classement :ENTIER

}FIN

Pour accéder au champ NOM de l'étudiant: ETUD.NOM

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 119


Structures de données | Type structuré

Type structurés

La principale opération définie sur ce type STRUCTURE est l'accès aux champs qui le

compose.

VAR ETUD : ETUDIANT

DEBUT

ETUD.NOM ← "DIALLO"
ETUD.NOTE ← 19.5
ETUD.Classement  ← 1
FIN

Pour accéder au champ NOM de l'étudiant: ETUD.NOM

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 120


Structures de données | Tableaux
Pourquoi les tableaux ?
Imaginons que l’on veuille calculer la moyenne des notes
d’une promotion, quel algorithme allons nous utiliser ?

Nom: moyenne

Role: Affichage de la moyenne des notes d’une promo saisies par le prof

Entrée: -

Sortie: -

Déclaration: somme, uneNote : réels

nbEleves, i : entier
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 121
Structures de données | Tableaux
Pourquoi les tableaux ?

Début

somme ← 0.0

écrire(Nombre d’élèves:)

lire(nbEleves)

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 122


Structures de données | Tableaux
Pourquoi les tableaux ?
pour i ← 1 à nbEleves faire

écrire("Note de l’élève numéro",i,":")

lire(uneNote)

somme ← somme + uneNote

finpour

écrire("Moyenne des notes :",somme/nbEleves)

fin
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 123
Structures de données | Tableaux
Pourquoi les tableaux ?

Imaginons que l’on veuille toujours calculer la moyenne des notes

d’une promotion mais en gardant en mémoire toutes les notes

des étudiants (pour par exemple faire d’autres calculs tels que

l’écart type, la note minimale, la note maximale, etc.)


Il faudrait alors déclarer autant de variables qu’il y a d’étudiants,

par exemple en supposant qu’il y ait 3 étudiants, on aurait

l’algorithme suivant

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 124


Structures de données | Tableaux
Pourquoi les tableaux ?

procédure moyenne ()

Déclaration somme, note1, note2, note3 : Naturel

début

écrire("Les notes des trois étudiants :") lire(note1) ;

lire(note2) ;
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 125
Structures de données | Tableaux
Pourquoi les tableaux ?

Le problème est que cet algorithme ne fonctionne

que pour 3 étudiants.

Si on en a 10, il faut déclarer 10 variables

Si on en a n, il faut déclarer n variables . . . ce

n’est pas réaliste


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 126
Structures de données | Tableaux

Tableau à une dimension

C’est ce que l’on nomme un type complexe

(en opposition aux types simples vus

précédemment) .

Le type défini par un tableau est fonction :

du nombre d’éléments maximal que peut


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 127
Structures de données | Tableaux
Tableau à une dimension

Par exemple un tableau d’entiers de taille

10 et un tableau d’entiers de

taille 20 sont deux types différents

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 128


Structures de données | Tableaux
Tableau à une dimension

On peut utiliser directement des variables de


type tableau, ou définir de nouveau type à partir
du type tableau
On utilise un type tableau via la syntaxe suivante
:
Tableau[intervalle] de type des éléments stockés
par le tableau
où intervalle est un intervalle sur un type simple
dénombrable avec des bornes constantes
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 129
Structures de données | Tableaux
Tableau à une dimension

ple :

es = Tableau[1..26] d’entiers naturel

nouveau type appelé Notes, qui est un tableau de 26 natu

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 130


Structures de données | Tableaux
Tableau à une dimension

b: Tableau[1..26] d’entiers naturel

déclare une variable de type tableau de 26 Naturels

a et b sont de même type

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 131


Structures de données | Tableaux
Tableau à une dimension

c : Tableau[’a’..’z’] d’Entier

déclare une variable de type tableau de 26 entiers

a et c sont de types différents

Ainsi l’extrait suivant d’algorithme :

tab : Tableau[’a’..’c’] de Réel


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 132
Structures de données | Tableaux
Tableau à une dimension

. . . peut être présentée graphiquement par :

On accède (en lecture ou en écriture) à la i ème

valeur d’un tableau en utilisant la syntaxe

suivante :

nom de la variable[indice]
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 133
Structures de données | Tableaux
Tableau à une dimension

Par exemple si tab est un tableau de 10 entiers (tab :

Tableau[1..10] d’Entier ) tab[2] ←-5

met la valeur -5 dans la 2 ème case du tableau

En considérant le cas où a est une variable de type

Entier, a ←tab[2] met la valeur de la 2 ème


case du
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 134
Structures de données | Tableaux
Tableau à une dimension

Rôle: Affichage de la moyenne des notes d’une promo saisies par le prof

Algorithme moyenne

Entrée: -

Sortie: -

Déclaration:

somme, nbEleves, i : entiers naturel,

lesNotes : Tableau[1..100] d’entiers naturel


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 135
Structures de données | Tableaux
Tableau à une dimension

répéter

écrire("Nombre d’eleves (maximum 100) :")

lire(nbEleves)

jusqu’à ce que nbEleves>0 et nbEleves ≤ 100

pour i ←1 à nbEleves faire

écrire("Note de l’eleve numero ",i," :")

lire(lesNotes[i])
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 136
Structures de données | Tableaux
Tableau à une dimension

pour i ←1 à nbEleves faire

somme ← somme + lesNotes[i]

finpour

écrire("La moyenne est de :",somme/nbEleves)

fin

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 137


Structures de données | Tableaux
Tableau à une dimension

Un tableau possède un nombre maximal d’éléments

défini lors de l’écriture de l’algorithme (les bornes sont

des constantes explicites, par exemple 10, ou implicites,

par exemple MAX)

ce nombre d’éléments ne peut être fonction d’une

variable Wend-Panga Cédric BERE - Cours Algorithmique et programmation 138


Structures de données | Tableaux
Tableau à une dimension

Par défaut si aucune initialisation n’a été effectuée

les cases d’un tableau possèdent

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 139


Structures de données | Tableaux
Tableau à une dimension

Le nombre d’éléments maximal d’un tableau est

différent du nombre

d’éléments significatifs dans un tableau

Dans l’exemple précédent le nombre maximal

d’éléments est de 100 mais le nombre significatif


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 140
Structures de données | Tableaux
Tableau à une dimension

L’accès aux éléments d’un tableau est direct (temps

d’accès constant)

Il n’y a pas conservation de l’information d’une

exécution du programme à une autre

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 141


Structures de données | Tableaux
Tableau à deux dimensions

On peut aussi avoir des tableaux à deux dimensions

(permettant ainsi de représenter par exemple des

matrices à deux dimensions)

On déclare une matrice à deux dimensions de la

façon suivante :
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 142
Structures de données | Tableaux
Tableau à deux dimensions

ème
On accède (en lecture ou en écriture) à la i ,j ème

valeur d’un tableau en utilisant la syntaxe suivante :

Par exemple si tab est défini par tab :

Tableau[1..3][1..2] de
Wend-Panga Cédric BERE Réel ) et programmation
- Cours Algorithmique 143
Structures de données | Tableaux
Tableau à deux dimensions

tab[2][1] ←-1.2 met la valeur -1.2 dans la case 2,1

du tableau

En considérant le cas où a est une variable de type

Réel, a ←tab[2][1] met -1.2 dans a

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 144


Structures de données | Tableaux
Tableau à deux dimensions

Attention, le sens que vous donnez à chaque

dimension est important et il ne faut pas en

changer lors de l’utilisation du tableau

Par exemple, le tableau tab défini de la façon

suivante : Wend-Panga Cédric BERE - Cours Algorithmique et programmation 145


Structures de données | Tableaux
Tableau à deux dimensions

tab[1][1]←2.0;tab[2][1]←-1.2;tab[3][1]←3.4

tab[1][2]←2.6; tab[2][2]←-2.9; tab[3][2]←0.5

. . . peut permettre de représenter l’une des deux

matrices suivantes :
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 146
Structures de données | Tableaux

Tableau à n dimensions

Par extension, on peut aussi utiliser des

tableaux à plus grande dimension

Leur déclaration est à l’image des tableaux à

deux dimensions, c’est-à-dire


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 147
Structures de données | Tableaux

Tableau à n dimensions

Par exemple :

tab : tableau[1..10][0..9][’a’..’e’] d’Entier Ainsi que

leur utilisation :

tab[2][1][’b’] ←10 a ←tab[2][1][’b’]


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 148
Structures de données | Algorithme sur les tableaux
Recherche du plus petit élément d’un tableau
Exercice à faire :

Recherche du plus petit élément d’un tableau

• Paramètres en entrée : un tableau t de N entiers. On pourra identifier ce

tableau à une fonction totale de l'intervalle entier de 1 à N vers les nombres

naturels (on identifie les entiers machines aux nombres naturels).

• Paramètres en sortie : l'entier min. 

• Spécifications : min doit contenir la valeur du plus petit élément du


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 149
Structures de données | Algorithme sur les tableaux
Recherche du plus petit élément d’un tableau

t[N] : Tableau d'Entier

// Soit

min : Entier

// Soit

i : Entier

// Soit

min ← t[1];

//

pour i de 2 à N

// Wend-Panga Cédric BERE - Cours Algorithmique et programmation 150


Structures de données | Algorithme sur les tableaux
Recherche d’une valeur dans un tableau

Exercice à faire :

Recherche d’une valeur dans un tableau

• Paramètres en entrée : un tableau t de N entiers (indicé de 1 à N) et une

valeur v

• Paramètres en sortie : le booléen trouvé et l'entier indice.

• Spécifications : le booléen trouvé doit être à vrai si v se trouve dans le

tableau. La valeur d' indice est alors le plus petit indice de la case contenant la


151
valeur v dans le tableau.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Structures de données | Algorithme sur les tableaux
Recherche du plus petit élément d’un tableau

t[N] : Tableau d'Entier

v : Entier

i, indice : Entier

trouve : Booleen;

trouve ← FAUX

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 152


Structures de données | Algorithme sur les tableaux
Recherche du plus petit élément d’un tableau

indice ← -1

i←1

tant que non trouve ET i <= N

si t[i] = v alors

trouve ← VRAI

indice ← i

sinon

i ← i+1

finsi
153
fin tant que Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Structures de données | Algorithme sur les tableaux
Recherche du plus petit élément d’un tableau

sinon

i ← i+1

finsi

fin tant que

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 154


Structures de données | Algorithme sur les tableaux
Somme des éléments d’un tableau
Exercice à faire :

Somme des éléments d’un tableau

• Paramètres en entrée : un tableau de N entiers

• Paramètres en sortie : l'entier s.

• Spécifications : s doit être égal à la somme des éléments du


tableau. Wend-Panga Cédric BERE - Cours Algorithmique et programmation 155
Structures de données | Algorithme sur les tableaux
Somme des éléments d’un tableau

t[N] : Tableau d'Entier


i : Entier

s ← 0;
pour i de 1 à N
s ← s + t[i]
fin pour
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 156
Structures de données | Algorithme sur les tableaux
Recherche du nombre d’occurrences
Exercice à faire :

Recherche du nombre d’occurrences

• Paramètres en entrée : un tableau de N entiers et une valeur v

• Paramètres en sortie : l'entier nb.

• Spécifications : nb doit être égal au nombre de fois que la valeur v


apparait dans leWend-Panga
tableau. Cédric BERE - Cours Algorithmique et programmation 157
Structures de données | Algorithme sur les tableaux
Recherche du nombre d’occurrences

nb ← 0
pour i de 1 à N
si t[i] = v alors
nb ← nb+1
finsi
fin pour

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 158


Algorithmique et programmation

Chapitre 4

Base de la Programmation en C

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 159


Programmation en C | Historique
Historique

• Le C a été conçu en 1972 par Dennis Richie et Ken Thompson,


chercheurs aux Bell Labs, afin de développer un système
d'exploitation UNIX sur un DEC PDP-11.

• En 1978, Brian Kernighan et Dennis Richie publient la définition


classique du C dans le livre The C Programming language.

Dennis Ritchie Ken Thompson & Dennis Ritchie


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 160
Programmation en C | Historique
Historique

• Le C devenant de plus en plus populaire dans les années 80,


plusieurs groupes mirent sur le marché des compilateurs comportant
des extensions particulières.

• En 1983, l'ANSI (American National Standards Institute) décida de


normaliser le langage ; ce travail s'acheva en 1989 par la définition de
la norme ANSI C.

• Celle-ci fut reprise telle quelle par l'ISO (International Standards


Organization) enWend-Panga
1990. Cédric BERE - Cours Algorithmique et programmation 161
Programmation en C | Historique
Caractéristiques

• C est un langage de programmation impératif et généraliste.

• Il est qualifié de langage de bas niveau dans le sens où chaque


instruction du langage est conçue pour être compilée en un nombre
d'instructions machine assez prévisible en termes d'occupation
mémoire et de charge de calcul.

• En outre, il propose un éventail de types entiers et flottants conçus


pour pouvoir correspondre directement aux types de donnée
supportés par le processeur.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 162
Programmation en C | Historique
Caractéristiques

• Hormis les types de base, C supporte les types énumérés,


composés, et opaques.

• Il ne propose en revanche aucune opération qui traite directement des


objets de plus haut niveau (fichier informatique, chaîne de caractères,
liste, table de hachage…).

• Ces types plus évolués doivent être traités en manipulant des


pointeurs et des types composés.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 163


Programmation en C | Historique
Caractéristiques

• Il existe des fonctions standards pour gérer les entrées-sorties et les


chaînes de caractères, mais contrairement à d'autres langages, aucun
opérateur spécifique pour améliorer l'ergonomie.

• Ceci rend aisé le remplacement des fonctions standards par des


fonctions spécifiquement conçues pour un programme donné.

• Ces caractéristiques en font un langage privilégié quand on cherche à


maîtriser les ressources matérielles utilisées, le langage machine et
les données binaires générées par les compilateurs étant relativement
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 164
Programmation en C | Historique
Caractéristiques

• Ce langage est donc extrêmement utilisé dans des domaines comme


la programmation embarquée sur microcontrôleurs, les calculs
intensifs, l'écriture de systèmes d'exploitation et les modules où la
rapidité de traitement est importante.

• Il constitue une bonne alternative au langage d'assemblage dans ces


domaines, avec les avantages d'une syntaxe plus expressive et de la
portabilité du code source.

• Le langage C a été inventé pour écrire le système d'exploitation UNIX,


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 165
Programmation en C | Historique
Caractéristiques

• En contrepartie, la mise au point de programmes en C, surtout s'ils


utilisent des structures de données complexes, est plus difficile
qu'avec des langages de plus haut niveau.

• En effet, dans un souci de performance, le langage C impose à


l'utilisateur de programmer certains traitements (libération de la
mémoire, vérification de la validité des indices sur les tableaux…) qui
sont pris en charge automatiquement dans les langages de haut
niveau.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 166


Programmation en C | Rappel compilation/exécution de langage

Compilation/interprétation

L'utilisation d'un langage est rendue possible grâce à


programme qui joue le rôle d'un traducteur automatique :
« Il prend un texte écrit (code source ou script) dans un
langage pour en faire quelque chose, en général qui soit proche de
la machine »
Un compilateur
Un interpréteur

© Faites ce que vous voulez! 167


Wend-Panga Cédric BERE - Cours Java-L3S6-UFR/SEA – UO1PrJKZ
Programmation en C | Rappel compilation/exécution de langage

Compilation/interprétation

Un compilateur
Un programme qui traduit le texte dans un langage qui
permettra son exécution, tel le langage machine, le bytecode ou le
langage assembleur.

Un interpréteur
Un programme qui exécute les instructions demandées. Il joue
le même rôle qu'une machine qui reconnaîtrait ce langage.

© Faites ce que vous voulez! 168


Wend-Panga Cédric BERE - Cours Java-L3S6-UFR/SEA – UO1PrJKZ
Programmation en C | Rappel compilation/exécution de langage

Compilation/interprétation

© Faites ce que vous voulez! 169


Wend-Panga Cédric BERE - Cours Java-L3S6-UFR/SEA – UO1PrJKZ
Programmation en C | Rappel compilation/exécution de langage

Compilation/interprétation

© Faites ce que vous voulez! 170


Wend-Panga Cédric BERE - Cours Java-L3S6-UFR/SEA – UO1PrJKZ
Programmation en C | Rappel compilation/exécution de langage

Compilation/interprétation

© Faites ce que vous voulez! 171


Wend-Panga Cédric BERE - Cours Java-L3S6-UFR/SEA – UO1PrJKZ
Programmation en C | Rappel compilation/exécution de langage

Compilation/interprétation

© Faites ce que vous voulez! 172


Wend-Panga Cédric BERE - Cours Java-L3S6-UFR/SEA – UO1PrJKZ
Programmation en C | Rappel compilation/exécution de langage

Compilation/interprétation

© Faites ce que vous voulez! 173


Wend-Panga Cédric BERE - Cours Java-L3S6-UFR/SEA – UO1PrJKZ
Programmation en C | Rappel compilation/exécution de langage

Compilation/interprétation

© Faites ce que vous voulez! 174


Wend-Panga Cédric BERE - Cours Java-L3S6-UFR/SEA – UO1PrJKZ
Programmation en C | Compilation en langage C

Compilation
La phase de compilation consiste généralement en la génération du
code assembleur.

Pour chaque unité de compilation, on obtient un fichier en langage


d’assemblage.

Cette étape peut être divisée en sous-étapes :


l'analyse lexicale, qui est la reconnaissance des mots clé du
langage ;

l'analyse syntaxique, qui analyse la structure du programme et sa


conformité avec la norme ;

l'optimisation de code ;

On confond souvent la compilation et toute la phase de génération


d'un fichier exécutable
Wend-PangaàCédric
partir
BERE - des fichierset programmation
Cours Algorithmique sources. 175
Programmation en C | Compilation en langage C

Assemblage
Cette étape consiste en la génération d'un fichier objet en
langage machine pour chaque fichier de code assembleur.
Les fichiers objet sont généralement d’extension .o sur Unix,
et .obj avec les outils de développement pour MS-DOS,
Microsoft Windows, VMS, CP/M…

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 176


Programmation en C | Compilation en langage C

Édition des liens


L'édition des liens est la dernière étape, et a pour but de réunir
tous les éléments d'un programme.

Les différents fichiers objet sont alors réunis, ainsi que les
bibliothèques statiques, pour ne produire qu'un fichier
exécutable.

Le but de l'édition de liens est de sélectionner les éléments de


code utiles présents dans un ensemble de codes compilés et
de bibliothèques, et de résoudre les références mutuelles entre
ces différents éléments afin de permettre à ceux-ci de se
référencer directement à l'exécution du programme.

L'édition des liens échoue si des éléments de code référencés


manquent. 177
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Programmation en C | Notions

Rappel : Qu’est ce qu’un programme?

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 178


Programmation en C | Premier programme
Premier programme

Le programme Hello world est proposé en exemple


en 1978 dans The C

Programming Language de Brian Kernighan et Dennis Ritchie. Créer


un programme affichant hello world est depuis devenu l'exemple de
référence

pour présenter les bases d'un nouveau langage. Voici l'exemple


original de la 1re édition de 1978 :
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 179
Programmation en C | Aperçu de la syntaxe

Premier programme en C

main()
{
printf("hello, world\n");
}

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 180


Programmation en C | Aperçu de la syntaxe

Premier programme en C

#include<stdio.h>

int main()
{
printf("hello, world\n");
return 0;
}

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 181


Programmation en C | Aperçu de la syntaxe

Premier programme en C

/*Ceci est
mon
premier
programme */
#include <stdio.h> // pour pouvoir lire et écrire
int main(void) // programme principal
{
printf("Bonjour !\n"); /* écriture à l’écran */
return 0;
}
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 182
Programmation en C | Aperçu de la syntaxe

Premier programme en C
• main est le nom de la fonction principale, aussi
appelée point d'entrée du programme.

• Les parenthèses () après main indiquent qu'il s'agit


d'une fonction.

• Les accolades { et } entourent les instructions


constituant le corps de la fonction.

• printf est une fonction d'écriture dans la sortie


standard, qui produit l'affichage dans la console par
défaut.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 183
Programmation en C | Aperçu de la syntaxe

Premier programme en C
• Les caractères " délimitent une chaîne de
caractères ; hello, world\n dans ce cas.

• Les caractères \n sont une séquence


d'échappement représentant le saut de ligne.

• Un point-virgule ; termine l'instruction expression.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 184


Programmation en C | Préprocesseurs

Directives du préprocesseur

Le préprocesseur C exécute des directives contenues


dans les fichiers sources. Il les reconnaît au fait qu'elles
sont en début de ligne, et commencent toutes avec le
caractère croisillon (dièse) #. Les plus courantes :
#include pour l'inclusion ;

#define pour la définition de macro ;


Wend-Panga Cédric BERE - Cours Algorithmique et programmation 185
Programmation en C | Préprocesseurs

Directives du préprocesseur

#if pour commencer la compilation conditionnelle ;

#ifdef et ifndef, équivalents à #if defined et #if ! defined;

#endif pour clore la compilation conditionnelle.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 186


Programmation en C | Aperçu de la syntaxe

Premier programme en C : AFFICHER UN MOT

/*Ceci est

mon

premier

programme */

#include <stdio.h> // pour pouvoir lire et écrire

int main(void) // programme principal

{
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 187
Programmation en C | Aperçu de la syntaxe

Premier programme en C : LIRE UN NOMBRE

Voici un programme permettant à l’utilisateur de


taper un nombre réel au clavier.

Ce nombre est lu par le programme et mémorisé


dans une variable x qui est un nombre réel (type de
données float).

La variable x est ensuite ré-affichée par printf.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 188


Programmation en C | Aperçu de la syntaxe

Premier programme en C : LIRE UN NOMBRE


#include <stdio.h> /* pour pouvoir lire et écrire */

int main(void) { // programme principal

float x; /* déclaration d’une variable

(nombre réel) */

printf("Veuillez entrer un nombre réel au clavier\n");

scanf("%f", &x); /* lecture au clavier de la

valeur de x */
189
// affichage de x : Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Programmation en C | Aperçu de la syntaxe

Effectuer un calcul et mémoriser le résultat :


Le programme suivant mémorise le double de x dans une
variable y, par le biais d’une affectation. L’affectation
(symbole =) permet de stocker le résultat d’un calcul dans
une variable.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 190


Programmation en C | Aperçu de la syntaxe

#include <stdio.h> /* pour pouvoir lire et


Effectuer un calcul et mémoriser le résultat :
écrire */

int main(void) /* programme principal */

float x, y; /* déclaration de deux variables x et y */

printf("Veuillez entrer un nombre réel au clavier\n");

scanf("%f", &x);Wend-Panga
/* lecture au- Cours
Cédric BERE clavier de la
Algorithmique valeur de x */
et programmation 191
Programmation en C | Aperçu de la syntaxe

Effectuer un calcul et mémoriser le résultat :

y = 2*x; /* on met dans y le double du contenu

de x */

printf("Le double du nombre tapé vaut %f \n", y);

return 0;

} Wend-Panga Cédric BERE - Cours Algorithmique et programmation 192


Programmation en C | Aperçu de la syntaxe
Exercice : Lecture, écriture et calcul en C
Exercice 1 :

Pour convertir des degrés Fahrenheit en degrés Celsius, on a la formule

sui- vante :

C ≃ 0.55556 × (F − 32)

où F est une température en degrés Fahrenheit et C la température

correspondante en degrés Celsius.

a) Écrire un programme C qui convertit une température entrée au

clavier exprimée en degrés Fahrenheit et affiche une valeur

approchée de la même température en de- grés Celsius. Les

températures seront exprimées par des nombres réels. 193


Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Programmation en C | Aperçu de la syntaxe
Exercice : Lecture, écriture et calcul en C
Exercice 1 :

Pour convertir des degrés Fahrenheit en degrés Celsius, on a la formule

sui- vante :

C ≃ 0.55556 × (F − 32)

où F est une température en degrés Fahrenheit et C la température

correspondante en degrés Celsius.

a) Écrire un programme C qui convertit une température entrée au

clavier exprimée en degrés Fahrenheit et affiche une valeur

approchée de la même température en de- grés Celsius. Les

températures seront exprimées par des nombres réels. 194


Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Programmation en C | Aperçu de la syntaxe

Conversion Dégré Fahrenheit en Celsius


#include <stdio.h>

int main(void) {

float celsius, fahrenheit;


printf("Entrez une température en degrés Fahrenheit : ");

scanf("%f", &fahrenheit);

celsius = 0.55556 * (fahrenheit - 32.0);

printf("Température de %f degré Celsius.\n", celsius);

return 0; }
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 195
Programmation en C | Aperçu de la syntaxe

Conversion Dégré Celsius en Fahrenheit


#include <stdio.h>

int main(void) {

float celsius, fahrenheit;


printf("Entrez une température en degrés Celsius : ");

scanf("%f", &celsius);

fahrenheit = (celsius /0.55556) + 32.0;

printf("Température de %f degré fahrenheit.\n", fahrenheit);

return 0; }
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 196
Programmation en C | Aperçu de la syntaxe

Exercice : Lecture, écriture et calcul en C


Exercice 2 :

Lors d’une opération de promotion, un magasin de composants


hardware applique une réduction de 10% sur tous les
composants.

Écrire un programme qui lit le prix d’un composant au clavier et


affiche le prix calculé en tenant compte de la réduction.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 197


Programmation en C | Aperçu de la syntaxe

Calcul de remise
#include <stdio.h>

int main(void) {

float prix, prixRemise;


printf("Entrez un prix : ");
scanf("%f", &prix);
prixRemise = 0.9 * prix;
printf("Le prix avec 10 %% de remise est de %f.\n", prixRemise);
return 0;

}
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 198
Programmation en C | Eléments du langage

Mots clés du langage C


Le C89 compte 32 mots clés, dont cinq qui n'existaient
pas en K&R C, et qui sont par ordre alphabétique :

• auto, break, case, char,

• const (C89), continue,

• default, do, double, else,

• enum (C89), extern, float,

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 199


Programmation en C | Eléments du langage

Mots clés du langage C


• for, goto, if, int, long, register,

• return, short, signed (C89),

• sizeof, static, struct, switch,

• typedef, union, unsigned,

• void (C89), volatile (C89), while.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 200


Programmation en C | La bibliothèque standard

Qu'est ce qu’une bibliothèque logicielle


Une bibliothèque logicielle ou bibliothèque en
programmation est un ensemble de types et de
fonctions qui permettent de réaliser un certain nombre
d’opérations ou de traitement.

La bibliothèque standard normalisée, disponible avec


toutes les implémentations, présente la simplicité liée à
un langage bas-niveau.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 201


Programmation en C | La bibliothèque standard

Bibliothèque standard du C
<assert.h> : pour un diagnostic de conception lors de
l'exécution (assert)

<ctype.h> : tests et classification des caractères


(isalnum, tolower)

<errno.h> : gestion minimale des erreurs (déclaration de


la variable errno)

<math.h> : fonctions mathématiques de base (sqrt, cos)


;

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 202


Programmation en C | La bibliothèque standard

<signal.h> :standard
Bibliothèque gestiondu
des
C signaux (signal et raise)

<stddef.h> : définitions générales (déclaration de la


constante NULL)

<stdio.h> : pour les entrées/sorties de base (printf,


scanf)

<stdlib.h> : fonctions générales (malloc, rand)

<string.h> : manipulation des chaînes de caractères


(strcmp, strlen)

<time.h> : manipulation du
Wend-Panga Cédric BERE temps
- Cours Algorithmique(time, ctime)
et programmation 203
Programmation en C | Les bibliothèques externes

Autres bibliothèques
De nombreuses bibliothèques ont été créées pour être
utilisées avec le C.

C'est le cas pour libjpeg, libpng, Expat, les décodeur de


référence MPEG, libsocket, etc.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 204


Programmation en C | Les Types de données

Autres bibliothèques
De nombreuses bibliothèques ont été créées pour être
utilisées avec le C.

C'est le cas pour libjpeg, libpng, Expat, les décodeur de


référence MPEG, libsocket, etc.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 205


Programmation en C | Les Types de données

Type entier int


Le type int (abréviation de l’anglais integer) est une
représentation des nombres entiers.

Comme toute variable informatique, un int ne peut


prendre qu’un nombre fini de valeur.

Un int est généralement codé sur 4 octets (32 bits).


Dans ce cas, les valeurs sont entre −2 et 2 − 1 (ce qui 31 31

fait bien 2 valeurs possibles).


32

Notons que sur certains vieux systèmes, les int sont


codés seulement sur 2 octets.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 206
Programmation en C | Les Types de données

Type entier int


Les opérations arithmétiques binaires +, −, ∗, / sont
définies sur les int et donnent toujours pour résultat
un int.
En mathématiques, on écrit : 17 = 3 × 5 + 2.
En informatique, on écrit que 17/5 est égal à 3 et que
17%5 est égal à 2.
Plus généralement, on a toujours l’expression dite de la
division euclidienne : n = p ∗ (n/p) + (n%p)
quotient reste

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 207


Programmation en C | Les Types de données

Exercice
Sachant que le premier avril 2004 était un jeudi, écrire
un programme qui détermine le jour de la semaine
correspondant au 4 mai de la même année. On pourra
représenter les jours de la semaine par des numéros
allant de 0 à 6.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 208


Programmation en C | Les Types de données

Opération modulo
mm:

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 209


Programmation en C | Les Types de données

Type 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).
Un nombre réel tel qu’il est ainsi représenté possède
une mantisse (des chiffres) et un exposant qui
correspond à la multiplication par une certaine
puissance de 10.

Par exemple 3.546E − 3 est égal à 3.546 × 10 , ce qui −3

fait 0.003546.

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 210


Programmation en C | Les Types de données

Type réels : float et double


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 10 alors 308

que celle d’un float est de l’ordre de 10 . 38

(Les valeurs limites exactes sont données par les


constantes DBL_MAX et FLT_MAX de la bibliothèque
float.h).
Sur les nombres réels sont définies les quatres
opérations binaires +, −, ∗, /, ainsi que le − unaire.
La bibliothèque math.h contient les fonctions de calcul
scientifique pow (puis-
Wend-Panga sance),
Cédric BERE sqrt
- Cours Algorithmique (racine carrée), cos,
et programmation 211
Programmation en C | Les Types de données

Type réels : float et double


• %d pour le type int ;
• %u pour le type unsigned int ;
• %f pour le type float ;
• %lf pour le type double ;
• %c pour le type char ;
• %s pour le type chaîne (étudié plus loin).

Wend-Panga Cédric BERE - Cours Algorithmique et programmation 212

Vous aimerez peut-être aussi