Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Informatique
Algorithmique
&
Programmation I
Pr. Fatiha MRABTI
Pr. Ilham CHAKER
Pr. Rachid BEN ABBOU
Année universitaire 2020-2021
Algorithmique & Programmation 1 / MIP I
Plan
Introduction
Algorithmique & Programmation en C
Notion de variable, affectation, lecture et écriture
La sélection, le choix multiple
Les Boucles
Représentation de l’information : Codage
Algorithmique & Programmation 1 / MIP I 2
Algorithmique & Programmation I
Introduction
Algorithmique & Programmation 1 / MIP I 3
Contexte général
L’Homme a toujours cherché à automatiser ses tâches
quotidiennes
être remplacé par une machine
L’Homme doit transférer ses capacités à la machine
Ses connaissances
Son raisonnement
Son savoir faire
…
Algorithmique & Programmation 1 / MIP I 4
Contexte général
La machine n’a pas les mêmes facultés de l’homme
Tout doit être clair et élémentaire
Prévoir tous les cas possibles
la machine ne peut pas décider à votre place
L’algorithmique et la programmation sont les premiers
pas de l’automatisation de la vie de l’Homme
Algorithmique & Programmation 1 / MIP I 5
Contexte général
Le terme « informatique » résulte de la combinaison des
deux premières syllabes du terme « information» et des
deux dernières syllabes du terme « automatique » ;
Il désigne à l'origine l'ensemble des activités liées à la
conception et à l'emploi des ordinateurs pour traiter des
informations.
Algorithmique & Programmation 1 / MIP I 6
Contexte général
C’est le domaine d'activité scientifique, technique et
industriel concernant le traitement automatique de
l'information par des machines :
des ordinateurs;
des systèmes embarqués;
des robots;
des automates;
Algorithmique & Programmation 1 / MIP I 7
Contexte général
Domaines d’Application
Physique
Biologie
Médecine
Chimie
Géologie
Economie
Finance
…
Algorithmique & Programmation 1 / MIP I 8
Contexte général
Disciplines de l’informatique
Systèmes d’information
et Bases de Données
Génie logiciel Réseaux
Algorithmique &
Programmation
Compilation &
Info théorique Systèmes d’exploitation
Intelligence artificielle
Algorithmique & Programmation 1 / MIP I 9
Programmation
Si l’on s’intéresse aux applications de l’ordinateur, on
s’aperçoit qu’elles sont très nombreuses :
Etablissement de feuille de paie, de factures
Gestion de stocks
Calcul de la trajectoire d’un satellite
Suivi médical de patients dans un hôpital
…
Un ordinateur pour qu’il puisse effectuer des tâches
aussi variées il suffit de le programmer.
Algorithmique & Programmation 1 / MIP I 10
Programmation
Un programme est constitué d’un ensemble de directives, nommées
instructions, qui spécifient :
les opérations élémentaires à exécuter
la façon dont elles s’enchaînent.
Les informations à traiter par un programme doivent être
représentées dans un format compréhensible par l’ordinateur :
codage
Algorithmique & Programmation 1 / MIP I 11
Algorithmique
&
Programmation I
Représentation de l’information : Codage
Algorithmique & Programmation 1 / MIP I 12
Algorithmique
&
Programmation I
Algorithmique
&
Programmation
13
Contexte Général
Le public se fait souvent une fausse idée :
ordinateur = machine intelligente…
C'est FAUX !
Algorithmique & Programmation 1 / MIP I 14
Contexte Général
Un ordinateur ne fait qu’exécuter des tâches bien
définies par le programmeur
Les tâches sont programmées auparavant par des
développeurs programme, logiciel, …
Un programme est chargé en mémoire d’un ordinateur,
puis exécuté sans la moindre ambiguïté.
Algorithmique & Programmation 1 / MIP I 15
Contexte Général
Problème
Programme
Un problème du monde Ensemble de données
réel à résoudre par une
solution informatique Ensemble de résultats
= solution informatique au problème
Description d' un ensemble
d'actions
Exécution dans un certain ordre
Algorithmique & Programmation 1 / MIP I 16
Contexte Général
Principes méthodologiques
…
Abstraire
Prendre le temps nécessaire avant de passer sur machine
Décomposer
Descartes : "...diviser chacune des difficultés que
j'examinerais en autant de parties qu'il se pourrait et qu'il
serait requis pour les mieux résoudre."
Algorithmique & Programmation 1 / MIP I 17
Processus de la programmation
Les différentes étapes du processus de programmation :
Analyse :
Problème spécifications
réel algorithmique +
conception
Traduction : codage
Algorithme Syntaxe
Partie essentielle :
Définir clairement le
problème Exécution
Démarche descendante Programme
Découper le problème en sous
problèmes
Problème
de syntaxe
Faux Résultats
Problème de sémantique
OK
Algorithmique & Programmation 1 / MIP I 18
Processus de la programmation
Analyse + spécification
Définir clairement le problème
Recenser les données
Dégager les grandes fonctionnalités
Conception
Organiser les données
Concevoir l'algorithme en pseudo-code
Codification, implémentation, …
Traduire l'algorithme dans un langage de programmation
Algorithmique & Programmation 1 / MIP I 19
Processus de la programmation
Problème : calculer la somme
La somme de quoi
Donc Il faut avoir les nombres à additionner: ce sont les
données
Une fois on dispose de ces données on va faire le calcul et
on donnera le résultat : qui est la somme
Algorithmique & Programmation 1 / MIP I 20
Processus de la programmation
Pour s’exécuter, un programme nécessite
qu’on lui fournisse ce qu’on peut appeler « informations
données » ou plus simplement « données ».
En retour, le programme va fournir des « informations
résultats » ou plus simplement « résultats ».
Par exemple un programme de paie nécessite
des informations données : noms des employés, situations de
famille, nombres d’heures supplémentaires, etc…
Les résultats seront imprimés sur les différents bulletins de
paye.
Algorithmique & Programmation 1 / MIP I 21
Processus de la programmation
L’algorithme : est la description de la suite des opérations
élémentaires ordonnées, capables de résoudre le
problème posé.
Un programme : est constitué d’un ensemble de
directives, nommées instructions, qui spécifient :
les opérations élémentaires à exécuter
la façon dont elles s’enchaînent.
Algorithmique & Programmation 1 / MIP I 22
L’Algorithme
Description d'un processus de résolution d'un problème
bien défini
Succession d'actions élémentaires (Instructions) qui,
agissant sur un ensemble de ressources (entrée=Donnée),
fourniront la solution (sortie=Résultat) au problème
Comment faire pour l'obtenir ?
Ne pas se laisser aveugler par l'objectif final :
L’implémentation!
Algorithmique & Programmation 1 / MIP I 23
L’Algorithme
Les instructions
Les instructions sont des Opérations élémentaires de
traitement.
Les instructions sont exécutées séquentiellement.
Principales classes d’instructions(d’ordres) :
L’affectation des variables,
Les entrées – sorties (lecture / écriture),
L’appel des fonctions
Les tests,
Les boucles.
Un algorithme est une succession d’instructions.
Algorithmique & Programmation 1 / MIP I 24
L’Algorithme
Exemple
Résolution de l’équation du second ordre
Ax 2 + B x + C = 0
Algorithmique & Programmation 1 / MIP I 25
Quel algorithme choisir ?
En général, il y a plusieurs algorithmes (plusieurs
solutions) qui résolvent le même problème.
Il y a plusieurs chemins qui mènent à la destination
Le meilleur algorithme (solution optimale) est celui qui :
Contient moins d’instructions.
Le meilleur est le court chemin
Utilise moins de ressources
Algorithmique & Programmation 1 / MIP I 26
Structure d’un algorithme
Un algorithme est composé de deux parties :
Partie déclaration : où on précise la nature (type) des
objets utilisés pour la résolution du problème.
Partie traitement : où on présente la séquence des
instructions (actions) qui permettent de résoudre le
problème.
Algorithmique & Programmation 1 / MIP I 27
Structure d’un algorithme
L’en-tête Algorithme nom de l’algorithme
Les déclarations de constantes liste des constantes
constantes, variables, variables liste des variables
(structures) struct liste des structures
Les déclarations de fonctions liste des fonctions
fonctions et procédures procédures liste des procédures
début
action 1
Le corps de action 2
l’algorithme
action n
fin
Algorithmique & Programmation 1 / MIP I 28
Structure d’un algorithme
L’en-tête
Il permet L’en-tête Algorithme nom de l’algorithme
d’identifier un
algorithme. Les déclarations de
constantes liste des constantes
constantes, variables, variables liste des variables
(structures)
struct liste des structures
Les déclarations de fonctions liste des fonctions
fonctions et procédures
procédures liste des procédures
début
action 1
Le corps de action 2
l’algorithme
action n
fin
Algorithmique & Programmation 1 / MIP I 29
Structure d’un algorithme
L’en-tête Algorithme nom de l’algorithme
Les déclarations
C’est une liste constantes liste des constantes
Les déclarations de
exhaustive d’objets, constantes, variables, variables liste des variables
utilisés et manipulés (structures)
dans le corps de struct liste des structures
l’algorithme;
Cette liste est placée Les déclarations de fonctions liste des fonctions
fonctions et procédures
au début Procédures liste des procédures
d’algorithme. début
action 1
Le corps de action 2
l’algorithme
action n
fin
Algorithmique & Programmation 1 / MIP I 30
Structure d’un algorithme
Le corps
Y sont placés les L’en-tête Algorithme nom de l’algorithme
traitements
(opérations …) à Les déclarations de
constantes liste des constantes
exécuter. constantes, variables, variables liste des variables
(structures)
struct liste des structures
Les déclarations de fonctions liste des fonctions
fonctions et procédures
procédures liste des procédures
début
action 1
Le corps de action 2
l’algorithme
action n
fin
Algorithmique & Programmation 1 / MIP I 31
Déclarations de Variables et de constantes
Variable :
est une entité qui contient une information. Elle peut être
une donnée d’entrée ;
le résultat final d’un calcul ;
un résultat intermédiaire de calcul.
constantes liste des constantes
Les déclarations de
constantes, variables, variables liste des variables
(structures)
struct liste des structures
Algorithmique & Programmation 1 / MIP I 32
Déclarations de Variables et de constantes
Variable :
Elle peut changer de valeur pendant l'exécution d'un
programme.
Elle représente une et une seule entité
Elle peut évoluer au cours du temps (la valeur antérieure est
perdue).
Algorithmique & Programmation 1 / MIP I 33
Déclarations de Variables et de constantes
Constante :
ne change jamais de valeur pendant l'exécution d'un
programme.
Une constante doit toujours recevoir une valeur dès sa
déclaration.
Synthaxe : Nom_de_constante = valeur
exemple : Pi = 3.14
constantes liste des constantes
Les déclarations de
constantes, variables, variables liste des variables
(structures)
struct liste des structures
Algorithmique & Programmation 1 / MIP I 34
Déclarations de Variables et de constantes
Une variable, ou une constante, est souvent caractérisée par
les éléments suivants :
1. L'identificateur : C'est le nom que l'on donne
à la variable ou à la constante.
2. Le type : Si la variable est un entier, un réel ,
un booléen, un caractère ou une chaîne de
caractère.
3. La valeur : C'est la valeur que l'on attribue à
la variable ou à la constante.
Algorithmique & Programmation 1 / MIP I 35
Déclarations de Variables et de constantes
…
Fonction Enseignant
Identificateurs Age 39 Valeurs
Poids 70,5
…
Chaîne de caractère
Types Entier
Réel
Algorithmique & Programmation 1 / MIP I 36
Déclarations de Variables et de constantes
L'identificateur :
C'est le nom que l'on donne à la variable ou à la constante.
Il est composé de lettres non accentuées, de chiffres et du
caractère ( _ ) dans un ordre quelconque sauf pour le
premier caractère qui ne peut pas être un chiffre.
Algorithmique & Programmation 1 / MIP I 37
Déclarations de Variables et de constantes
L'identificateur :
Certains mots ne peuvent pas être utilisés comme
identificateurs car ils sont réservés, ce sont des mots-clés
dans l’algorithme.
Algorithme, début, si, sinon, fin, répéter, entier, réel, …
De même : certains opérateurs ne peuvent pas être utilisés
dans l’identificateur
#, les opérateurs arithmétiques (+,*, -,/), …
Algorithmique & Programmation 1 / MIP I 38
Déclarations de Variables et de constantes
Exemple 1 : Quels sont les identificateurs valides ?
sucre_vanille Oui
Température Non : lettre accentuée
_chocolat_au_lait Oui
Convertir-en-euro Non : opérateur arithmétique
additionner_2_nombres Oui
2par2 Non : premier caractère est un chiffre
Algorithmique & Programmation 1 / MIP I 39
Déclarations de Variables et de constantes
Types :
Entier :
une variable est dite entière si elle prend ses valeurs dans
Z,
les opérations possibles sont les suivants : +, -, *, /,Div,
mod,
Réel :
une variable est dite réelle si elle prend ses valeurs dans R,
les opérations possibles sont les suivantes : +, -, *, /,
Algorithmique & Programmation 1 / MIP I 40
Déclarations de Variables et de constantes
Types :
Caractère :
Un caractère sera toujours noté entre des apostrophes (ex.: ‘5’).
Une apostrophe sera notée ‘ ’ ’ ,
les opérations possibles sont : =, , ≤, <, >, ≥ ,
L’ordre est le suivant : ‘ ‘<‘0’ <‘1’ <‘9’ <‘A’ <‘B’<<‘a’ <‘b’
<<‘z’. Cet ordre est donné par le code ASCII
Chaîne de caractères :
Suite finie de caractères (même la chaîne vide)
les opérations sont les mêmes que sur les caractères.
Algorithmique & Programmation 1 / MIP I 41
Déclarations de Variables et de constantes
Types :
Booléen :
Une valeur logique est l’une des deux valeurs « vrai » ou
« faux ».
Les valeurs logiques interviennent dans l’évaluation d’une
condition;
Les opérations possibles sont :
o les connecteurs logiques : la négation (not=non), l’intersection
(and=et) et l’union (or=ou)
o Les opérations de comparaison : = , , , , et
Algorithmique & Programmation 1 / MIP I 42
Déclarations de variables et de constantes
Déclaration :
On déclare une variable en lui donnant un nom
(identificateur) et un type.
Syntaxe :
NomVariable : type
Exemples :
Rayon : Réel
Compteur : Entier
Lettre : Caractère
Algorithmique & Programmation 1 / MIP I 43
Déclarations de variables et de constantes
L’affectation :
C’est l’opération qui permet de donner une valeur à une
variable
Dans une affectation, le membre de gauche reçoit le
membre de droite.
Syntaxe :
NomVariable valeur (Exemple : Note 15 )
NomVariable1 nom_variable2
o (Exemple : Note1 Note2 )
NomVariable3 expression
o (Exemple : Moyenne (Note + Note1) / 2 )
Algorithmique & Programmation 1 / MIP I 44
Déclarations de Variables et de constantes
Affectation :
Exemple : Donnez les valeurs des variables A et B
après exécution des instructions suivantes ?
Variables A, B : Entier
Début
A←6
B←2
A←B
B←A
Fin
Les deux dernières instructions permettent-elles
d’échanger les valeurs de A et B ?
Algorithmique & Programmation 1 / MIP I 45
Les Expressions
Une expression est la combinaison d’un certain nombre
de constantes, valeurs, variables et opérateurs.
Expression = f (constantes, valeurs, variables, opérateurs)
Selon le type de l’expression on peut distinguer trois
classes d’expressions :
Expression arithmétique
Expression logique
Expression de chaînes de caractère.
Algorithmique & Programmation 1 / MIP I 46
Les Expressions arithmétiques
L’expression arithmétique est une suite d’opérations sur
des constantes ou des variables déjà déclarées.
Les expressions arithmétiques sont formées à partir de
deux (ou plusieurs) nombres séparés à l’aide des
opérateurs arithmétiques et éventuellement des
parenthèses .
Algorithmique & Programmation 1 / MIP I 47
Les Expressions arithmétiques
Les opérateurs :
+ , -, * et /
div : division entière
mod : reste de la division entière
Exemple
n + 10 * cste /q
Algorithmique & Programmation 1 / MIP I 48
Les Expressions arithmétiques
Ordre de priorité :
Les opérateurs arithmétiques possèdent un ordre de
priorité.
si on souhaite modifier la priorité par défaut des
opérateurs, il est possible d’utiliser des parenthèses.
Algorithmique & Programmation 1 / MIP I 49
Les Expressions arithmétiques
Ordre de priorité :
1) (….) : parenthèses
2) . * . : multiplication
./. : division
3) . + . : addition
.-. : soustraction
Si plusieurs opérateurs ont la même priorité, l’opérateur le plus à
gauche sera évalué en premier
Algorithmique & Programmation 1 / MIP I 50
Les Expressions arithmétiques
Ordre de priorité :
Exemple : Priorité
a+b-c ((a+b)-c)
a+b*c (a+(b*c))
3 *a-x*2-c/d ((3 *a)-(x*2))-(c/d)
Algorithmique & Programmation 1 / MIP I 51
Les Expressions logiques
Ce sont des combinaisons entre des variables et des
constantes à l’aide d’opérateurs relationnels (=, , <, ≤, >, ≥)
Combinaison entre variables logiques à l’aide d’opérateurs
logiques :
1. Non : négation
2. Et : conjonction (intersection)
3. Ou : disjonction (union)
Algorithmique & Programmation 1 / MIP I 52
Exercice
Écrire un algorithme qui permet de calculer le périmètre
d’un cercle
Algorithmique & Programmation 1 / MIP I 53
Exercice
Solution 1
Algorithme perimètre _du _cercle
constantes Pi =3,14
variables rayon, perimetre : réel
début
perimetre 2*Pi*rayon
fin
Est-ce la structure est complète?
Algorithmique & Programmation 1 / MIP I 54
Lecture et écriture des
données
Ce sont les Instructions permettant à l’utilisateur de
dialoguer avec la machine.
Dans un sens, ces instructions permettent à l’utilisateur
de rentrer des valeurs au clavier pour qu’elles soient
utilisées par le programme. Cette opération est la
lecture.
Dans l’autre sens, d’autres instructions permettent au
programme de communiquer des valeurs à l’utilisateur
en les affichant à l’écran. Cette opération est l’écriture.
Lecture Algorithme Écriture
Algorithmique & Programmation 1 / MIP I 55
Instruction lire
on demande à la machine de lire une valeur, cela
implique que l’utilisateur va devoir écrire (saisir par
le clavier) cette valeur.
Les données saisies seront rangées dans les variables
paramètres de l’instruction de lecture : lire
Notation : lire (var1, var2, ………….., varn)
Exemple
x, t : réel
p : entier
lire(x)
lire(t,p)
Algorithmique & Programmation 1 / MIP I 56
Instruction écrire (ou
afficher)
Avant de Lire une variable, il est très fortement conseillé
d’écrire des libellés à l’écran, afin de prévenir
l’utilisateur de ce qu’il doit saisir
(sinon, le pauvre utilisateur passe son temps à se demander ce
que l’ordinateur attend de lui… et c’est très désagréable !)
On affiche un message sur l’écran informant l’utilisateur
ce que la machine attend de lui.
on demande à la machine d’ afficher (écrire sur l’écran)
une valeur, c’est pour que l’utilisateur puisse la lire.
Algorithmique & Programmation 1 / MIP I 57
Instruction écrire (ou
afficher)
Permet d’afficher sur un dispositif de sortie (écran) les
valeurs des variables ou des expressions.
Notation : écrire (exp1, exp2, …………., expn)
Exemple
x, t : réel ; p : entier
écrire(x) ; écrire(t+p)
Pour afficher un caractère il faut le délimiter par ‘ et ’.
Exemple : écrire ( ‘c’ )
Pour afficher une chaîne de caractère il faut la délimiter
par ” et ”.
Exemple écrire ( ”Bonjour” )
Algorithmique & Programmation 1 / MIP I 58
Exercice (calcul du périmètre du
cercle)
Solution complète :
Algorithme perimetre_du_cercle
constantes Pi =3,14
variables rayon : entier
perimetre : réel
début
écrire ("donnez le rayon du cercle")
lire (rayon )
perimetre 2 * Pi * rayon
écrire( le périmètre du cercle de rayon , rayon, " est :" , perimetre)
fin
Algorithmique & Programmation 1 / MIP I 59
Programmation
Les ordres que l’on donne à l’ordinateur pour agir sont
fondés sur la notion d’instruction.
Ces instructions constituent un langage de
programmation.
Depuis leur création, les langages de programmation
ont évolué et se sont diversifiés.
Basic
Pascal
C
C++
Java
Python
…
Algorithmique & Programmation 1 / MIP I 60
Programmation
L’ordinateur ne "comprenant " que le langage binaire, il
lui faut donc un "traducteur" qui lui traduise en binaire
exécutable, les instructions que l’humain lui fournisse
en langage évolué.
Cette traduction est assurée par un
programme appelé compilateur.
Un compilateur du langage " L " est donc
un programme chargé de traduire un
programme "source" écrit en " L " par un
humain, en un programme "cible " en
binaire exécutable par l’ordinateur .
Algorithmique & Programmation 1 / MIP I 61
Langages de programmation
Différentes générations de langages
1 ère génération
Langage machine
2 ème génération
Assembleur
3 ème génération
FORTRAN, ALGOL, Pascal, C
4 ème génération
Visual Studio, Delphi, …
Algorithmique & Programmation 1 / MIP I 62
Langage C
Le C est un langage compilé
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.
Algorithmique & Programmation 1 / MIP I 63
Les outils nécessaires au
programmeur
le strict minimum pour un programmeur :
Un éditeur de texte pour écrire le code source du
programme.
En théorie un logiciel comme le Bloc-notes sous Windows,
ou vi sous Linux fait l'affaire.
L'idéal, c'est d'avoir un éditeur de texte intelligent qui
colore tout seul le code, ce qui vous permet de vous y
repérer bien plus facilement ;
Un compilateur pour transformer ( compiler ) votre
source en binaire ;
Un débogueur pour vous aider à traquer les erreurs
dans votre programme.
Algorithmique & Programmation 1 / MIP I 64
Les outils nécessaires au
programmeur
On a deux possibilités pour le choix de ces outils :
soit on récupère chacun de ces trois programmes
séparément.
C'est la méthode la moins pratique pour les débutants mais elle
fonctionne.
soit on utilise un programme trois-en-un qui combine
éditeur de texte, compilateur et débogueur.
Ces programmes trois-en-un sont appelés IDE (Environnements
de développement intégrés).
Il existe plusieurs environnements de développement.
Nous proposons d’utiliser le Dev-C++
Algorithmique & Programmation 1 / MIP I 65
Les outils nécessaires au
programmeur
Algorithmique & Programmation 1 / MIP I 66
Identificateurs
Le rôle d’un identificateur est de donner un nom à une
entité du programme.
peut désigner :
un nom de variable ou de fonction,
un type défini par typedef, struct, union ou enum,
une étiquette.
Algorithmique & Programmation 1 / MIP I 67
Identificateurs
Un identificateur est une suite de caractères parmi :
les lettres (minuscules ou majuscules, mais non accentuées),
les chiffres, mais le chiffre ne peut pas être le premier
caractère de l’identificateur
_le “caractère souligné” . Il est déconseillé de l’utiliser
comme premier caractère de l’identificateur.
Algorithmique & Programmation 1 / MIP I 68
Identificateurs
Les mots-clefs
Un certain nombre de mots, appelés mots-clefs, sont
réservés pour le langage lui-même et ne peuvent
pas être utilisés comme identificateurs. L’ANSI C
compte 32 mots clefs :
auto const double float int short
struct unsigned break continue else
for long signed switch void
default case enum goto register sizeof
while volatile char do extern if
return static union typedef
Algorithmique & Programmation 1 / MIP I 69
Commentaires
Ne sont pas analysés
Aident à la compréhension du code
Peuvent être placés à n’importe quel endroit
Un commentaire est un texte placé entre /* et */
Ex. : /* Commentaire */
Algorithmique & Programmation 1 / MIP I 70
Instructions
Il existe 2 types d’instructions en langage C :
1. Les instructions simples (expression, appel de fonction,
…)
Elles finissent toujours par un point-virgule « ; »
Par exemple : a=a +1;
2. Les instructions composées
permettent de considérer une succession d’instructions
comme étant une seule instruction (bloc d’instructions)
Elles commencent par “{” et finissent par “}”
Par exemple : { a=a +1; b=b +2;}
Algorithmique & Programmation 1 / MIP I 71
Types
On peut donc suivre les règles de traduction suivantes :
Algorithmique C
Entier int, long, short
Réel float, double
Caractère char
Booléen int (1=Vrai, 0=Faux)
Chaîne de caractères cours sur les tableaux
Algorithmique & Programmation 1 / MIP I 72
Types
Types de données en langage C :
Type de variable Signification Taille (en octets) Plage de valeurs acceptée
char Caractère 1 -128 à 127
unsigned char Caractère non signé 1 0 à 255
short int Entier court 2 -32 768 à 32 767
unsigned short int Entier court non signé 2 0 à 65 535
int Entier 2/processeur 16 bits -32 768 à 32 767
4/ processeur 32 bits -2 147 483 648 à 2 147 483 647
unsigned int Entier non signé 2/processeur 16 bits 0 à 65 535
4/processeur 32 bits 0 à 4 294 967 295
long int Entier long 4 -2 147 483 648 à 2 147 483 647
unsigned long int Entier long non signé 4 0 à 4 294 967 295
float Flottant (réel) 4 3.4*10-38 à 3.4*1038
double Flottant double 8 1.7*10-308 à 1.7*10308
long double Flottant double long 10 & Programmation3.4*10
Algorithmique -4932 à 3.4*104932
1 / MIP I 73
Déclarations
On déclare, en C, une variable en la précédant de son
type :
Exemple :
int a ;
float x ;
char c ;
On peut déclarer autant de variables de même type en
les séparant par ‘,’
Exemple :
int a , b , varentier;
Algorithmique & Programmation 1 / MIP I 74
Déclarations
Les constantes caractères sont entourées de quote,
exemple : ' a ' , ' 9 '
Certains caractères (les caractères non imprimables)
ne sont utilisables qu’en préfixant par un \
Pour les constantes réelles :
on utilise le “.” pour marquer la virgule
et le caractère “e” suivi d’un nombre entier, ici a,
pour représenter 10a,
exemple : 2. , .3, 2e4, 2.3e4
Algorithmique & Programmation 1 / MIP I 75
Déclarations
les constantes chaîne de caractères
doivent être entourées de guillemet,
exemple : " une chaine"
La déclaration des constantes se fait de deux manières :
la directive #define
le mot clé const
syntaxe :
#define identificateur_constante valeur ou bien
Const Type identificateur_constante = valeur ;
Exemples :
#define nombre 10 const int nombre= 10 ;
#define c ‘a’ const char c=’a’ ;
Algorithmique & Programmation 1 / MIP I 76
Opérateurs
On traduit les opérateurs en respectant les règles
suivantes :
Algorithmique signification C
affectation =
=, Comparaison d’égalité ==, !=
<,≤,>,≥ Comparaison de supériorité < , <= , > , >=
et , ou , non Comparaison logique && , ||, !
+ , - ,* , / Opération arithmétique + , - ,* , /
Div , mod Division et modulo /,%
Algorithmique & Programmation 1 / MIP I 77
Opérateurs
Exemple d’expressions booléennes :
int a=10, b=4 ;
Expression résultat signification
(a>0) && (b<6) 1 vrai
(a>0) || (b<0) 1 vrai
!(a>0) 0 faux
a==b 0 faux
Algorithmique & Programmation 1 / MIP I 78
Opérateurs
Opérateur conditionnel :
Il permet de choisir une expression entre deux
expressions selon la valeur d’une troisième expression :
Syntaxe :
Var = (expression) ? expression1 : expression2 ;
Exemple :
calculer la valeur absolue de a et de l’affecter à n.
oint n, a ;
on = (a<0) ? –a : a ;
79
Algorithmique & Programmation 1 / MIP I
Opérateurs
Les opérateurs unaires :
++ et -- sont des opérateurs particuliers qui peuvent
avoir jusqu’à deux effets de bord :
En dehors de toute affectation, elle incrémente
l’opérande associé.
o Par exemple : i++ et ++i sont équivalents à i=i+1
Lorsqu’ils sont utilisés dans une affectation, tout dépend
de la position de l’opérateur par rapport à l’opérande.
o par exemple :
» j=i++ est équivalent à j=i; i=i+1;
» j=++i est équivalent à i=i+1; j=i;
Algorithmique & Programmation 1 / MIP I 80
Opérateurs
Opérateurs d’affectation composés :
Expression Equivalence Fonction
x+=y x=x+y Addition
x-=y x=x-y Soustraction
x*=y x=x*y Multiplication
x/=y x=x/y Division
x%=y x=x%y Reste de la division ou
Modulo
Algorithmique & Programmation 1 / MIP I 81
Entrées/sorties (lecture/écriture)
Le langage C donne plusieurs possibilités pour la saisie
des données à partir du clavier et l’affichage des
résultats à l’écran.
Ces primitives peuvent être divisées en deux catégories :
Primitives d’E/S standard (pour tous les types)
Primitives d’E/S spécifiques aux caractères et chaînes de
caractères
Algorithmique & Programmation 1 / MIP I 82
Entrées/sorties (lecture/écriture)
Primitives d’E/S standard (pour tous les types)
scanf
printf
Primitives d’E/S spécifiques aux caractères et chaînes de
caractères
getchar
putchar
getch
gets
puts
Algorithmique & Programmation 1 / MIP I 83
Entrées/sorties (lecture/écriture)
getchar
Une fonction rudimentaire qui permet de lire un
caractère et de le renvoyer à une variable de type
caractère
putchar
Une fonction rudimentaire qui permet d’afficher un
caractère sur l’écran
Syntaxe :
char c ;
c = getchar () ;
putchar ( c) ;
Algorithmique & Programmation 1 / MIP I 84
Affichage
printf
La fonction printf permet d’afficher des expressions, sur
la sortie standard, sous un format donné.
Syntaxe :
printf ( message et formats , exp1, exp2, …, expn) ;
o message : texte accompagnant l’affichage des expressions.
o peut contenir des caractères spéciaux :
» \n pour le retour chariot
» \t pour les tabulations
»…
Algorithmique & Programmation 1 / MIP I 85
Affichage
printf
Syntaxe : printf ( message et formats , exp1, exp2, …,
expn) ;
formats : pour chaque expression, à afficher, il faut indiquer le
format correspondant.
Le format est un alphabet, qui dépend du type de l’expression,
devancé du caractère % :
%d pour les entiers (int, short, long)
%f pour les réels (float, double)
%s pour les chaînes de caractères
%c pour les caractères
Algorithmique & Programmation 1 / MIP I 86
Affichage
printf
Par exemple :
int i =1;
float x = 2 . 0 ;
printf ( " Bonjour \ n " ) ;
printf ( " i = %d \ n " , i ) ;
printf ( " i = %d , x = % f \ n " , i , x ) ;
. . . affiche :
Bonjour
i=1
i = 1, x=2.0
Algorithmique & Programmation 1 / MIP I 87
Saisie
scanf
permet à l’utilisateur de saisir des informations au
clavier
Syntaxe :
scanf ( " chaîne de formatage " , pointeur var1 , . . . )
La chaîne de formatage spécifie le type des données
attendues (même chose que pour printf),
Pointeur==&;
Exemple :
int i ;
float x ;
scanf ( "%d%f ", &i ,&x ) ;
Algorithmique & Programmation 1 / MIP I 88
Structure d’un programme en
C
Reprendre l’exemple du périmètre du cercle, l’algorithme
suivant:
Algorithme périmètre du cercle
constantes Pi=3.14
variables rayon, perimetre : réel
Début
/* cet algorithme calcule le périmètre d’un cercle*/
écrire (donnez le rayon du cercle)
lire (rayon )
perimetre 2 * Pi * rayon
écrire( le périmètre du cercle de rayon , rayon, " est :" , perimetre)
fin
Algorithmique & Programmation 1 / MIP I 89
Structure d’un programme en C
Librairies standards : les fichiers « header » *.h,
contiennent en général des équivalences ou des prototypes
des fonctions précompilées
#include <stdio.h> : pour printf et scanf …
#include <stdlib.h> : pour system(pause)
#include <conio.h> : pour getch
#include <math.h> : pour des fonctions mathématiques
…
Algorithmique & Programmation 1 / MIP I 90
Structure d’un programme en
C
Fonctions usuelles comprises dans stdio.h
printf (…) : fonction de sortie. - écrit à l’écran les
données fournies par l’ordinateur.
scanf (…) : fonction d’entrée (dans le programme) des
données saisies à l’écran (lues).
getchar(…) : lit un caractère en entrée.
putchar (…) : affiche un caractère à l’écran.
gets (…) : lit une chaîne en entrée.
puts (…) : affiche une chaîne à l’écran.
Algorithmique & Programmation 1 / MIP I 91
Structure d’un programme en C
#include <stdio.h>
#include <stdlib.h> Librairies standards
#include <conio.h>
#include <math.h>
#define constante valeur
main () Fonction principale et point d’entrée du programme
{
déclarations de variables internes
instructions Corps du programme
}
Algorithmique & Programmation 1 / MIP I 92
Exercices
Exercice 1
Écrire un algorithme qui calcule la somme et le produit
de 3 variables saisies au clavier, puis le traduire en C
Algorithmique & Programmation 1 / MIP I 93
Autres instructions
Instruction de sélection
si (condition) alors instruction (simple ou composé)
Le choix multiple
selon (variable) instructions;
Les boucles
pour une variable allant d’une val. À une autre
répéter (instructions) jusqu’à ce que la condition soit
vérifiée
tant que la condition est vérifiée il faut exécuter les
instructions
Algorithmique & Programmation 1 / MIP I 94
Structure de sélection
Objectif : Donner à un algorithme le moyen de prendre
une décision selon les circonstances et les conditions
Moyenne du bac,
Notes des matières scientifiques,
Spécialité, …
MIP
Quelle branche
choisir à la FST
Bachelier
BCG
Algorithmique & Programmation 1 / MIP I 95
Structure de sélection
Les conditions de décision doivent être formalisées sous
forme d’une seule expression logique
L’expression logique peut être
Simple (exemple note>10)
Composée (combinaison avec les connecteurs logiques)
Expression logique :
Note math >14 et note physique >12
MIP
Quelle branche
choisir à la FST
Bachelier
BCG
Algorithmique & Programmation 1 / MIP I 96
Structure de sélection
Rappels sur la logique booléenne...
Valeurs possibles : Vrai ou Faux
Opérateurs logiques : (non), (et) et (ou)
Associativité des opérateurs (et) et (ou)
a et (b et c) = (a et b) et c
a ou (b ou c) = (a ou b) ou c
Commutativité des opérateurs (et) et (ou)
a et b = b et a
a ou b = b ou a
Algorithmique & Programmation 1 / MIP I 97
Structure de sélection
Rappels sur la logique booléenne...
Distributivité des opérateurs (et) et (ou)
a ou (b et c) = (a ou b) et (a ou c)
a et (b ou c) = (a et b) ou (a et c)
Involution
non non a = a
Loi de Morgan
non (a ou b) = (non a) et (non b)
non (a et b) = (non a) ou (non b)
Algorithmique & Programmation 1 / MIP I 98
Structure de sélection
Deux cas de structure de sélection :
Structure de sélection complète
Permet de choisir entre deux alternatives selon une condition donnée
Alternative
1
Alternative
Si la condition estvérifiée, l’alternative
2 1 est exécutée. Dans le cas
contraire c’est l’alternative 2 qui est exécutée
Structure de sélection réduite
Une seule alternative qui sera exécutée si une condition est vérifiée.
Alternative
Si la condition n’est pas vérifiée, aucun traitement n’aura lieu
Algorithmique & Programmation 1 / MIP I 99
Structure de sélection
Structure de sélection complète
Structure Si ... Alors ...Sinon ... Finsi
Une condition est testée pour déterminer quelle action ou quel
groupe d’actions doit être exécuté.
Syntaxe algorithmique
Organigramme
Si (Condition)
Alors Actions 1
Sinon Actions2 Condition
FinSi
Actions 1 Actions 2
Algorithmique & Programmation 1 / MIP I 100
Structure de sélection
Structure de sélection complète
Exemple 1 : calculer le quotient et le reste de la division entre 2
nombres (avec le plus grand sur le plus petit).
Algorithme division
Variables n1,n2,q, r : entier
Debut
écrire (donnez n1 et n2)
lire(n1,n2)
si (n1>n2) alors
q n1 div n2
r n1 mod n2
sinon
q n2 div n1
r n2 mod n1
finsi
écrire (q= ", q, "et r= ,r)
Fin
Algorithmique & Programmation 1 / MIP I 101
Structure de sélection
Structure de sélection complète
Syntaxe du langage C
Si (Condition) Alors
if (Condition)
Actions 1 { Actions1;}
Sinon
else
Actions2 {Actions2;}
FinSi
Algorithmique & Programmation 1 / MIP I 102
Structure de sélection
Structure de sélection complète
Exemple 1 : calculer le quotient et le reste de la division entre 2
nombres (avec le plus grand sur le plus petit).
Algorithme division #include <stdio.h>
Variables n1,n2,q, r : entier main ()
Debut
{ int n1, n2,q,r;
écrire (donnez n1 et n2)
lire(n1,n2) printf ( donnez n1 et n2 );
si (n1>n2) alors scanf (%d%d,&n1,&n2);
q n1 div n2 if (n1>n2)
r n1 mod n2
{ q = n1/n2; r= n1 % n2; }
sinon
q n2 div n1 else
r n2 mod n1 { q = n2/n1; r= n2 % n1; }
finsi printf (q=%d est supérieure à r=%d,q,r);
écrire (q= ", q, "et r= ,r)
}
Fin
Algorithmique & Programmation 1 / MIP I 103
Structure de sélection
Structure de sélection complète
Exemple 2 : comparaison entre deux valeurs
Algorithme comparaison #include <stdio.h>
Variables a,b : entier #include <stdlib.h>
Debut main ()
écrire (donnez les valeurs de a et de b) { int a,b;
lire(a,b) printf (donnez les valeurs de a et de b);
si (a>b) alors scanf (%d%d,&a,&b);
écrire(a=",a," est supérieure à b= ,b) if (a>b)
sinon printf (a=%d est supérieure à b=%d,a,b);
écrire (a=",a," est inferieure à b= ,b) else
finsi printf (a=%d est inferieure à b=%d,a,b);
Fin system (pause);}
Algorithmique & Programmation 1 / MIP I 104
Structure de sélection
Exercice
Ecrire un algorithme qui permet, selon le 2 ième caractère du
chromosome, de dire est ce que la personne est un Homme
(Y) ou une Femme (X)?
Algorithmique & Programmation 1 / MIP I 105
Structure de sélection
Structure de sélection réduite
Structure Si ... Alors ... finsi
Une condition est testée pour déterminer si l’action ou le groupe
d’actions suivant doit être exécuté.
Organigramme
Si (Condition) Alors
Condition
Actions
FinSi Actions
Algorithmique & Programmation 1 / MIP I 106
Structure de sélection
Structure de sélection réduite :
Exemple 1 : calculer le quotient et le reste de la division entre 2
nombres
Algorithme division
Variables n1,n2,q, r : entier
Debut
écrire (donnez n1 et n2)
lire(n1,n2)
si (n2 ≠ 0) alors
q n1 div n2
r n1 mod n2
finsi
écrire (q= ", q, "et r= ,r)
Fin
Algorithmique & Programmation 1 / MIP I 107
Structure de sélection
Structure de sélection réduite
Structure if... { ...}
Une condition est testée pour déterminer si l’action ou
le groupe d’actions suivant doit être exécuté.
En cas d’une seule instruction du bloc de if les
accolades {} ne sont pas obligatoires
Syntaxe C :
if (Condition)
{
Actions;
}
Algorithmique & Programmation 1 / MIP I 108
Structure de sélection
Structure de sélection réduite
Exemple 1 : calculer le quotient et le reste de la division entre 2
nombres
Algorithme division #include <stdio.h>
Variables n1,n2,q, r : entier
main ()
Debut
écrire (donnez n1 et n2)
{ int n1,n2,r,q;
lire(n1,n2) printf ( donnez n1 et n2 );
si (n2 ≠ 0) alors scanf (%d%d,&n1,&n2);
q n1 div n2 if (n2!=0)
r n1 mod n2 { q = n1/n2;
écrire (q= ", q, "et r= ,r) r= n1 % n2;
finsi printf (q=%d r=%d,q,r);
Fin }
}
Algorithmique & Programmation 1 / MIP I 109
Structure de sélection
Structure de sélection réduite
Exemple 2 : comparaison entre deux valeurs
#include <stdio.h>
Algorithme comparaison
Variables a,b : entier
main ()
Début { int a,b;
écrire (donnez les valeurs de a et de b) printf (donnez les valeurs de a et de b);
lire(a,b) scanf (%d%d,&a,&b);
si (a>b) alors if (a>b)
écrire (a=",a," est supérieure à b= ,b) printf (a=%d est supérieure à
finsi b=%d,a,b);
si (a<b) alors
if (a<b)
écrire (a=",a," est inferieure à b= ,b)
finsi printf (a=%d est inferieure à
Fin b=%d,a,b);
}
Algorithmique & Programmation 1 / MIP I 110
Structure de sélection
Exemple 3 : calculer le maximum de deux entiers
Solution 1
Algorithme max
Variables Entier1,Entier2, leMaximum : Entier
/* leMaximum :Variable de Sortie
Entier1,Entier2 : Variables d’entrée */
Début
écrire (donnez deux entiers :)
lire(Entier1, Entier2)
si (Entier1 < Entier2) alors
leMaximumEntier2
sinon
leMaximum Entier1
finsi
fin
Algorithmique & Programmation 1 / MIP I 111
Structure de sélection
Exemple : Calculer le maximum de deux entiers
Solution 2
Algorithme max
Variables Entier1,Entier2, leMaximum : Entier
/* leMaximum :Variable de Sortie
Entier1,Entier2 : Variables d’entrée */
Début
écrire (donnez deux entiers :)
lire(Entier1, Entier2)
leMaximum Entier1
si ( Entier2 > Entier1) alors
leMaximum Entier2
finsi
fin
Algorithmique & Programmation 1 / MIP I 112
Structure de sélection
Exercice : Ecrire le programme C correspondant aux deux
solutions algorithmiques de l’exemple 3
Algorithmique & Programmation 1 / MIP I 113
Structure de sélection
Structure de sélection: imbrication
Un bloc de sélection peut contenir une structure
conditionnelle.
Possibilité de définir plusieurs niveaux d’imbrication
de la sélection
Algorithmique & Programmation 1 / MIP I 114
Structure de sélection
Structure de sélection : Imbrication
Exemple
si ( a>b ) alors
si ( c<d ) alors
uv
v v+1
Sinon
ij
finsi
finsi
Algorithmique & Programmation 1 / MIP I 115
Structure de sélection
Structure de sélection : Imbrication
Risque d’ambiguïté en cas d’imbrication des tests
Comment lier un sinon à l’un des si précédents?
La porté de sinon dépend toujours du si le plus proche
Le nombre de finsi doit être le même que celui des si
Chaque si ouvert doit être fermé par finsi
le nombre de sinon peut être inférieur à celui de si
Cas de certains tests réduits
Algorithmique & Programmation 1 / MIP I 116
Structure de sélection
Structure de sélection : Imbrication
Le mieux étant toutefois de clarifier cette ambiguïté en utilisant
l’indentation qui offre une meilleure lisibilité:
Par exemple :
si ( a>b ) alors
si ( a>b ) alors
si ( c<d ) alors
si ( c<d ) alors
uv uv
v v+1 v v+1
A quel si correspond –il ? Sinon Sinon
ij ij
finsi finsi
finsi finsi
Algorithmique & Programmation 1 / MIP I 117
Structure de sélection
Structure de sélection: Imbrication en langage C
En langage C, le risque d’ambiguïté en cas d’imbrication est
plus important qu’en algorithmique
Absence de marque de fin des alternatives (l ’équivalent
de alors et finsi)
La porté du else d’une instruction if , le else dépend
toujours du if le plus proche
Algorithmique & Programmation 1 / MIP I 118
Structure de sélection
Structure de sélection : Imbrication en langage C
Le mieux étant toutefois de clarifier cette ambiguïté :
Utilisation de l’indentation qui offre une meilleure lisibilité
Un bloc de deux instructions ou plus doit être entouré par des
accolades {}
De l’extérieur if/else est considérée comme une seule instruction
si ( a>b ) alors i f ( a>b )
si ( c<d ) alors i f ( c<d )
uv { u=v ;
v v+1 v++;
Sinon
}
ij
finsi
else
finsi i=j;
Algorithmique & Programmation 1 / MIP I 119
Structure de sélection
Structure de sélection : Imbrication en langage C
Attention ! : des fois un bloc d’une seul instruction if doit
être entouré par des accolades
Comment peut-on traduire cette partie d’algorithme en
langage C?
si ( a>b ) alors i f ( a>b )
si ( c<d ) slors { i f ( c<d )
uv { u=v ;
v v+1 v++; }
finsi }
Sinon else
ij i=j;
finsi
Algorithmique & Programmation 1 / MIP I 120
Structure de sélection
Structure de sélection :
Comment interpréter le code ci-dessous?
i f ( a>b )
i f ( c<d )
u=v ;
else
i=j;
Algorithmique & Programmation 1 / MIP I 121
Choix multiple
Exemple
Etablissement de correspondance entre une couleur et un code.
L’algorithme doit saisir un code entre 1 et 5 et affiche la
couleur correspondante. Le tableau suivant montre les couleurs
possibles et les codes correspondants.
Couleur code
Rouge 1
Vert 2
Bleu 3
Blanc 4
Noir 5
Algorithmique & Programmation 1 / MIP I 122
Choix multiple
algorithme couleur
variables
code :entier
début
lire(code)
si (code=1) alors
écrire( ″ rouge ″ )
sinon si (code=2) alors
écrire( ″ vert ″ )
sinon si (code=3) alors
écrire( ″ bleu ″ )
sinon si (code=4) alors
écrire( ″ blanc ″ )
sinon si (code=5) alors
écrire( ″ noir ″ )
finsi
finsi
finsi
finsi
finsi
fin
123
Choix multiple
Que se passe-t-il si le nombre de couleurs était de 15?
Est-il pratique de composer un algorithme par la sélection?
Non
structure du choix multiple
124
Choix multiple
Structure de choix multiple
Une donnée est comparée successivement à des valeurs
constantes :
Syntaxe
Donnee = Algorigramme
Organigramme
selon (Donnee)
valeur 1
faire
Donnee =
cas Valeur1 : Actions1 valeur 2
cas Valeur2 : Actions2 Donee =
... valeur N
cas ValeurN : ActionsN
Autrement: ActionsDéfaut Actions 1 Actions 2 Actions N ActionsDefault
FinSelon
Algorithmique & Programmation 1 / MIP I 125
Choix multiple
Exemple
Etablissement de correspondance entre une couleur et un code.
L’algorithme doit saisir un code entre 1 et 5 et affiche la
couleur correspondante. Le tableau suivant montre les couleurs
possibles et les codes correspondants.
Couleur code
Rouge 1
Vert 2
Bleu 3
Blanc 4
Noir 5
Algorithmique & Programmation 1 / MIP I 126
Choix multiple
Solution de l’exemple algorithme couleur
variables
de couleur avec la code :entier
début
structure selon lire(code)
selon (code)
faire
cas 1 : écrire( ″ rouge ″ )
cas 2 : écrire( ″ vert ″ )
cas 3 : écrire( ″ bleu ″ )
cas 4 : écrire( ″ blanc ″ )
cas 5 : écrire( ″ noir ″ )
finselon
fin
Algorithmique & Programmation 1 / MIP I 127
Choix multiple
Exercice
Dans un magasin, le prix de vente d’un produit est calculé
par la formule suivante :
Prix_ttc = prix_ht + (tva * prix_ht).
Cinq classes de TVA sont définies selon l’indice du
produit Indice tva
1 0
2 0.05
3 0.1
4 0.15
5 0.2
Ecrire un algorithme qui saisit le prix_ht et l’indice d’un
produit et qui calcule le prix_tcc équivalent.
128
Choix multiple
algorithme tva
variables
Exemple TVA indice :entier
tva, prixht,prixttc : réel
début
lire(indice,prixht)
selon (indice)
faire
cas 1 : tva 0
cas 2 :tva 0.05
cas 3 :tva 0.1
cas 4 :tva 0.15
cas 5 :tva0.2
finselon
prixttc (1+tva)*prixht
écrire("le prix TTC est :",prixttc)
fin
129
Choix multiple
Structure de choix multiple
Une donnée est comparée successivement à des valeurs
constantes :
Syntaxe en langage C
switch (Donnee)
{
Case Valeur1 : Actions1; break;
Case Valeur2 : Actions2; break;
...
Case Valeur N : ActionsN; break;
default : ActionsDéfaut;
}
Algorithmique & Programmation 1 / MIP I 130
Choix multiple
Solution de l’exemple algorithme couleur
variables
de couleur avec la code :entier
début
structure selon lire(code)
selon (code)
Tenir compte du cas faire
cas 1 : écrire( ″ rouge ″ )
d’erreur où le code cas 2 : écrire( ″ vert ″ )
cas 3 : écrire( ″ bleu ″ )
saisi ne correspond à cas 4 : écrire( ″ blanc ″ )
cas 5 : écrire( ″ noir ″ )
aucune valeur du autrement : écrire( ″ couleur inconnue ″ )
finselon
tableau : Utilisation du fin
cas par défaut :
autrement
Algorithmique & Programmation 1 / MIP I 131
Choix multiple
Structure de choix multiple :
valeur1,. . . ,valeur N sont des constantes de type scalaire
(entier, ou caractère, …)
Action i est exécutée si donnée = valeur i (on quitte ensuite
l’instruction cas)
Attention le break permet de passer directement à la fin du
switch sans évaluer les instructions d’en dessous.
En absence du break le programme évalue toutes les
instructions .
Algorithmique & Programmation 1 / MIP I 132
Choix multiple
Solution de l’exemple de couleur en langage C avec la structure switch
algorithme couleur #include<stdio.h>
variables main ()
code :entier { int code;
début printf ( "donnez le code de la couleur :" );
lire(code) scanf ("%d",&code);
selon (code) switch(code)
faire {
cas 1 : écrire( ″ rouge ″ ) case 1:printf("rouge");break;
cas 2 : écrire( ″ vert ″ ) case 2:printf("vert");break;
cas 3 : écrire( ″ bleu ″ ) case 3: printf("bleu");break;
cas 4 : écrire( ″ blanc ″ ) case 4: printf("blanc");break;
cas 5 : écrire( ″ noir ″ ) case 5: printf("noir");break;
autrement : écrire( ″ couleur inconnue ″ ) default: printf("couleur inconnue");
finselon }
fin }
Algorithmique & Programmation 1 / MIP I 133
Choix multiple
Structure de choix multiple : traitement commun entre certains cas
Exemple : Déterminer si un mois est de 30 jours
Algorithme moisA30Jours #include<stdio.h>
Variables mois : Entier main ()
Début { int mois;
écrire (donnez le mois) printf (donnez le mois);
lire (‘mois’) scanf ( %d, &mois);
selon (mois) switch (mois)
faire { case 4 :
cas 4 : case 6 :
cas 6 : case 9 :
cas 9 : case 11 : printf ( mois à 30 jours);break;
cas 11 : écrire ( mois à 30 jours) default : printf ( resultat Faux );
autrement : écrire ( resultat Faux ) }
finselon }
fin
Algorithmique & Programmation 1 / MIP I 134
Boucles : motivations
Exemple
Calculer la moyenne de trois nombres entiers a ,b et c à
saisir
algorithme moyenne
variables
a,b,c,m,s : entier
Début
Ecrire(Donnez 3 nombres entiers )
lire(a,b,c)
sa+b+c
m s/3
écrire(La moyenne est: , m)
fin
135
Boucles : motivations
Exemple
Calculer la moyenne de trois nombres entiers à saisir
Utiliser deux variables uniquement
algorithme moyenne
variables
a, m : entier
début
m 0
lire(a)
mm+a
Répétition de deux
lire(a)
mm+a
instructions trois fois
lire(a)
mm+a
m m/3
écrire(m)
fin
136
Boucles : motivations
Exemple
Calculer la moyenne de 100 nombres entiers à saisir
Utiliser deux variables uniquement
algorithme moyenne
variables
a, m : entier
début Est-il pratique de répéter deux lignes 100 fois ?
m 0 Non
lire(a)
mm+a
100 fois
Il est important de trouver un moyen pour
exprimer la répétition dans un algorithme
lire(a)
mm+a
m m/100
écrire(m)
fin
Boucles
137
Les boucles
Une boucle permet de décrire la répétition d’un
traitement (bloc) un certain nombre de fois
Il est important de :
Définir le bloc d’instructions à répéter
Savoir quand est ce que s’arrêter
Trois types de boucles :
pour
répéter … jusqu’à
tantque
138
Les boucles
Le nombre d’itérations est connu à l’avance
Le plus simple est d’utiliser la boucle pour
Possibilité d’utiliser répéter … jusqu’à ou tantque
Si le nombre d’itérations n’est pas connu
Utilisation des boucles répéter … jusqu’à et tantque
139
Structures itératives (ou répétitives)
Boucle pour
Le nombre d’itérations est connu à l’avance
Exemple
Écrire 100 fois « le contrôle aura lieu dans 2 semaines »
Instructions
Instructions
!
instructions
Algorithmique & Programmation 1 / MIP I 140
Structures itératives (ou répétitives)
Boucle Pour … Allant de ... à .... FAIRE ...
Une action ou un groupe d’actions est exécuté
répétitivement un certain nombre de fois : le nombre
dépend des valeurs initiale et finale données à la variable
« Indice ».
Organigramme
Syntaxe 1 Indice Valeur 1
Pour indice allant de Valeur1 à Valeur2
Indice <=
Faire
valeur2
Actions;
FinPour Actions
Indice Indice + 1
Algorithmique & Programmation 1 / MIP I 141
Structures itératives (ou répétitives)
Structure Pour Indice Allant de ... à .... Pas n … FAIRE ...
Remarque :
les valeurs initiale (Valeur 1) et finale (Valeur2) sont comprises.
Il est éventuellement possible de spécifier un autre pas d ’incrémentation
(+2,+10,-1....)
Organigramme
Syntaxe 2 Indice Valeur 1
Pour Indice allant de Valeur1 à Valeur2 pas n
Indice <=
Faire valeur2
Actions
FinPour Actions
Indice Indice + n
Algorithmique & Programmation 1 / MIP I 142
Structures itératives (ou répétitives)
Structure Pour Indice Allant de ... à .... FAIRE ...
Exemple : afficher une ligne de 8 étoiles
Algorithme ligne_etoiles #include<stdio.h>
Variables i : entier main ()
Début { int i;
Pour i allant de 1 à 8 for (i=1; i<=8; i++)
Faire { printf(“ * “);
écrire(‘*’) }
Finpour }
Fin
Algorithmique & Programmation 1 / MIP I 143
Structures itératives (ou répétitives)
Structure Pour Indice Allant de ... à .... Pas n … FAIRE ...
Exemple : afficher les multiples de 4 inférieurs à 100
Algorithme ligne_etoiles #include<stdio.h>
Variables i : entier main ()
Début { int i;
Pour i allant de 0 à 100 pas 4 for (i=0; i<=100; i+=4)
Faire { printf(“ %d “,i);
écrire (i," ") }
Finpour }
Fin
Algorithmique & Programmation 1 / MIP I 144
Structures itératives (ou répétitives)
Structure Répéter ... Jusqu’à ...
Une action ou un groupe d’actions est exécuté
répétitivement jusqu'à ce qu’une condition soit vérifiée.
Répéter Organigramme
Actions Actions
Jusqu’a (Condition)
condition
Algorithmique & Programmation 1 / MIP I 145
Structures itératives (ou
répétitives)
Structure Répéter ... Jusqu’à ...
Structure en C : do … while …
do
{ Actions;
}While(Condition);
Remarque :
La vérification de la condition s’effectue après les actions.
Celles-ci sont donc exécutées au moins une fois.
Algorithmique & Programmation 1 / MIP I 146
Structures itératives (ou répétitives)
Structure Répéter ... Jusqu’à ... (do … while …)
Exemple : arrêter la saisie avec le nombre magique
Algorithme nb_magique #include<stdio.h>
Variables nb_magique = 12, nb_entre: entier main ()
début {
répéter int nb_magique = 12, nb_entre;
écrire(“Entrez un nombre : “) do {
lire(nb_entre) printf(“\nEntrez un nombre : “);
jusqu’à (nb_entre = nb_magique) scanf(“%d”, &nb_entre);
Fin } while (nb_entre != nb_magique);
}
Algorithmique & Programmation 1 / MIP I 147
Structures itératives (ou répétitives)
Structure Tantque ... faire ...
Une action ou un groupe d’actions est exécuté
répétitivement tout le temps où une condition est vraie.
TantQue (Condition) Organigramme
Faire
Actions
condition
FinTantque
Actions
Algorithmique & Programmation 1 / MIP I 148
Structures itératives (ou répétitives)
Structure Tantque ... faire ...
Structure : while …
while (Condition)
{
Actions
}
Remarque :
La vérification de la condition s’effectue avant les actions.
Celles-ci peuvent donc ne jamais être exécutées.
Algorithmique & Programmation 1 / MIP I 149
Structures itératives (ou répétitives)
Structure tantque... faire ... (while …)
Exemple : afficher les chiffres (<10)
#include<stdio.h>
main ()
Algorithme chiffres {
Variables i =0 : entier int i=0;
début while (i<10)
tantque (i<10) {
faire printf(“%d\n “, i);
écrire( i) i++;
ii+1 }
fintanque }
Fin
Algorithmique & Programmation 1 / MIP I 150
Structures itératives (ou répétitives)
Structure tantque... faire ... (while …)
Exemple : afficher les chiffres (<10) en commençant par un
chiffre saisi
#include<stdio.h>
Algorithme chiffres main ()
Variables i : entier { int i;
Début printf (“\nEntrez un nombre : “);
écrire(“Entrez un nombre : “) scanf (“%d”, &i);
lire(i) while (i<10)
tantque (i<10) { printf(“%d\n “, i);
faire i++;
ecrire(“ “, i) }
ii+1 }
fintanque
Fin
Algorithmique & Programmation 1 / MIP I 151
Les instructions de branchement non
conditionnel
Branchement non conditionnel break
L’instruction break peut, plus généralement, être employée à
l’intérieur de n’importe quelle boucle.
Elle permet d’interrompre le déroulement de la boucle, et
passe à la première instruction qui suit la boucle.
En cas de boucles imbriquées, break fait sortir de la boucle la
plus interne.
Algorithmique & Programmation 1 / MIP I 152
Les instructions de branchement
non conditionnel
Branchement non conditionnel break
Exemple
main()
{
int i;
Imprime à l’écran
for (i = 0; i < 5; i++)
i=0
{
i=1
printf("i = %d\n",i);
i=2
if (i == 3)
i=3
break;
valeur de i a la sortie de la boucle = 3
}
printf("valeur de i a la sortie de la boucle = %d\n",i);
}
Algorithmique & Programmation 1 / MIP I 153
Les instructions de branchement
non conditionnel
Branchement non conditionnel continue
L’instruction continue permet de passer directement au tour
de boucle suivant, sans exécuter les autres instructions de la
boucle.
Exemple :
main ( )
{
int i;
imprime
for (i = 0; i < 5; i++)
i=0
{
i=1
if (i == 3)
i=2
continue;
i=4
printf("i = %d\n",i);
valeur de i a la sortie de la boucle = 5
}
printf("valeur de i a la sortie de la boucle = %d\n",i);
}
Algorithmique & Programmation 1 / MIP I 154
Algorithmique
&
Programmation I
Représentation de
l’information :
Codage
Algorithmique & Programmation 1 / MIP I 155
L’ordinateur
Algorithmique & Programmation 1 / MIP I 156
L’ordinateur
Comment fonctionne un ordinateur ?
on peut distinguer 3 couches :
Applications : "Software"
o Un utilisateur interagit surtout avec cette couche
o Traitement de texte, Tableurs, SGBD ..
Système d’Exploitation : "Operating System“
o Unix, Mac OS, Windows ..
Matériel : "Hardware "
o Pc, Mac,..
Algorithmique & Programmation 1 / MIP I 157
L’ordinateur
L’ordinateur se compose de 3 éléments fondamentaux :
1. Le microprocesseur
2. La mémoire
3. Les périphériques
Algorithmique & Programmation 1 / MIP I 158
L’ordinateur
1. Le microprocesseur
il exécute les instructions qu'il lit dans la mémoire.
C'est le "cerveau" de l’ordinateur.
Algorithmique & Programmation 1 / MIP I 159
L’ordinateur
2. La mémoire
elle stocke et restitue des informations sous forme de
mots binaires (1 bit / 4 bits / 8 bits / 16 bits/ …)
o ex : (01011101) b : mot de 1 octet
Algorithmique & Programmation 1 / MIP I 160
L’ordinateur
2. La mémoire
La taille des informations qui peuvent être stockées est
exprimée en octet (byte) ou en multiple d’octets
o Kilo 1Ko = 2 10 = 1024 octets
o Méga 1Mo = 2 20 = 1 048 576 octets
o Giga 1Go = 2 30 = 1 073 741 824 octets
o Téra 1To = 2 40 = 1 099 511 627 776 octets
o Péta 1Po = 2 50 = 1 125 899 906 842 620 octets
Algorithmique & Programmation 1 / MIP I 161
L’ordinateur
3. Les périphériques
ils servent de "bras" au micro-ordinateur. Ils gèrent
l'interface entre l’ordinateur et l'extérieur (constitué
de périphériques : CD-ROM, Disque dur, souris,
imprimante, clavier, écran, …)
Algorithmique & Programmation 1 / MIP I 162
Codage
Le codage est une opération établissant une bijection entre
une information et une suite de " 0 " et de " 1 " qui sont
représentables en machine.
Algorithmique & Programmation 1 / MIP I 163
Codage
L’ordinateur ne traite pas véritablement l’information
mais ses représentations.
La représentation de l’information se fait à travers un
code.
Pour des raisons technologiques, la représentation de
toute information est un vecteur de booléens, ou bits.
Algorithmique & Programmation 1 / MIP I 164
Codage
Les bits sont identifiés individuellement, le plus souvent
par un simple numéro. On parle de représentation
digitale de l’information.
Physiquement un bit, correspond à un état électrique
L’ordinateur étant alimenté par un générateur continu,
la tension basse (la masse) représente le 0 (ou Faux), la
tension haute (l’alimentation) représente le 1 (ou Vrai).
Algorithmique & Programmation 1 / MIP I 165
Codage
Terminologie
Les bits (binary digit) sont regroupés en octets : 1octet contient 8
bits
Les octets servent à mesurer la capacité de stockage (d ’un disque
dur, RAM…)
Pour mesurer la vitesse d’accès, on utilise b/s
Pour mesurer les vitesses de transfert, on utilise Le MegaOctet
(MO/s)
Le pixel est l’unité de mesure de la résolution des graphiques et
d’images
Algorithmique & Programmation 1 / MIP I 166
Codage: Données numériques
De nombreux systèmes de numération sont utilisés en
technologie numérique
Les plus courants sont les systèmes :
Décimal
Binaire
Octal
hexadécimal
Algorithmique & Programmation 1 / MIP I 167
Codage: Données numériques
Entiers positifs ou nuls
Les entiers positifs ou nuls se composent des nombres :
0, 1, 2, 3, …
Les systèmes de numération font correspondre, à un
nombre N, un certain symbolisme,
Dans un système de base b >1 les nombres 0, 1, 2, …, b-1
sont appelés chiffres;
Algorithmique & Programmation 1 / MIP I 168
Codage: Données numériques
Entiers positifs ou nuls
Représentation dans une base b
Tout nombre positif peut être représenté par une
expression de la forme :
n
N= an bn+ an−1 bn-1+. . . a1 b1+ a0 b0 = i
a b i
i 0
avec ai { 0, 1, …, b-1} et an 0
an : poids le plus fort
a0 : poids le plus faible
La notation N= (a n a n−1 . . . a 1 a 0 ) b est équivalente
Algorithmique & Programmation 1 / MIP I 169
Codage: Données numériques
Entiers positifs ou nuls :
Système de Numération Décimal
le système décimal comprend 10 chiffres (0,1,2,….,9)
combinés permettent d’exprimer n’importe quelle
grandeur
Le système décimal est dit à base 10
On se base sur les caractéristiques de ce système pour
comprendre les autres systèmes
Exemple
354 = 3*102 +5*101 + 4*100
Algorithmique & Programmation 1 / MIP I 170
Codage: Données numériques
Entiers positifs ou nuls
Système de Numération Binaire
Système à base deux (2)
Alphabet de 2 symboles binaires (appelés bits) : { 0,1}
Exemple 10112 = 1*23 + 0*22 + 1*21+1*20
Système de Numération Octal
Système à base huit (8)
Alphabet de 8 symboles :{ 0, 1, 2, 3, 4, 5, 6, 7}
Exemple 1258 = 1*82 + 2*81 + 5*80
Système de Numération Hexadécimal
Système à base seize (16) A : 10
Alphabet de 16 symboles hexadécimaux : B : 11
C : 12
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } D : 13
E : 14
Exemple 2B 16 = 2*16 1 + B*16 0 = 2*16 1 + 11 *16 0 F : 15
Algorithmique & Programmation 1 / MIP I 171
Codage: Données numériques
Entiers positifs ou nuls :
On peut donc écrire un tel nombre dans un registre ou un mot
mémoire de k positions
Dans un registre de k positions et pour une base b, seuls les
nombres entiers positifs N tels que : 0 ≤ N ≤ b k – 1 peuvent être
représentés.
On parle alors d’un registre de longueur k et de capacité C = b k
Le plus grand nombre représenté est : b k – 1
C’est le constructeur qui fixe la longueur des registres ou des
mots-mémoire
Algorithmique & Programmation 1 / MIP I 172
Codage: Données numériques
Entiers positifs ou nuls :
Exemple : quelle est la capacité du registre, et le plus
grand nombre représenté dans les cas suivants :
k= 4 et b= 10
oC= b k = 10 4 = 10000
oLe plus grand nombre représenté est : b k – 1= 10 4 -1= 9999
k= 4 et b= 16
o???
Algorithmique & Programmation 1 / MIP I 173
Codage: Données numériques
Entiers positifs ou nuls :
Changements de base
Base 10 vers Base b
La conversion s’effectue, par des divisions successives par b;
le test d’arrêt correspond à un quotient nul;
Le nombre à base b est obtenu en lisant les restes du dernier au
premier
Algorithmique & Programmation 1 / MIP I 174
Codage: Données numériques
Entiers positifs ou nuls :
Conversion Décimal-Binaire
43 10 = 32 +8+2+1 = 1×2 5 + 0×2 4 + 1×2 3 + 0×2 2 + 1×2 1 + 1×2 0
= 1 0 1 0 1 1
43 10 = 1 0 1 0 1 1
43 2
1 21 2
1 10 2
0 5 2
1 2 2
0 1 2
1 0
Algorithmique & Programmation 1 / MIP I 175
Codage: Données numériques
Entiers positifs ou nuls :
Conversion Décimal-Héxadecimal
423 / 16 = 26 + reste 7
26 / 16 = 1 + reste 10
1 / 16 = 0 + reste 1
42310 = 1A716
Algorithmique & Programmation 1 / MIP I 176
Codage: Données numériques
Entiers positifs ou nuls :
Changements de base
Base b vers Base 10
a n a n−1 . . . a 1 a 0 exprimé en base b (noté (a n a n−1 . . . a 0 ) b )
a n × b n + a n−1 × b n−1 + . . . + a 1 × b 1 + a 0 × b 0
vers une représentation en base 10 :
c m × 10 m + c m−1 × 10 m−1 + . . . + c 1 × 10 1 + c 0 × 10 0
Ci dans {0,1,2,,3,4,5,6,7,8,9}
Algorithmique & Programmation 1 / MIP I 177
Codage: Données numériques
Entiers positifs ou nuls :
Conversion Binaire-Décimal
La conversion se fait simplement en additionnant les
puissances de 2 correspondant au bits de valeur 1
Exemple
01101 2 = 0 × 2 4 + 1 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0
= 0 + 8 10 + 4 10 + 0 + 1 10
= 13 10
10011101 2 = ???
Algorithmique & Programmation 1 / MIP I 178
Codage: Données numériques
Entiers positifs ou nuls :
Conversion hexadécimal-Décimal
La conversion se fait simplement en additionnant les
puissances de 16
Exemple
35616 = 3 × 162 + 5 × 161 + 6 × 160
= 76810 + 8010 + 610
= 85410
2AF16 = ???
Algorithmique & Programmation 1 / MIP I 179
Codage: Données numériques
Entiers positifs ou nuls :
Conversion Hexadécimal-Binaire
Principe de conversion
Transformer chaque chiffre du nombre hexadécimal en son
équivalent binaire de quatre (4) chiffres :
o9 F 2 16 : 9 F 216
1001 1111 00102
o3 A 6 16 = ???
Algorithmique & Programmation 1 / MIP I 180
Codage: Données numériques
Entiers positifs ou nuls :
Conversion Binaire -Hexadécimal
Principe de conversion
L’inverse de la démarche précédente :
o 0100 1111 1010 2
4 F A 16
o 0011 1010 0110 2
? ? ? 16
Algorithmique & Programmation 1 / MIP I 181
Codage: Données numériques
Entiers négatifs :
Les entiers négatifs peuvent être codés selon trois
méthodes:
Signe et valeur absolue,
Complément à 1 (ou complément logique ou restreint),
Complément à 2 (ou complément arithmétique ou vrai),
Algorithmique & Programmation 1 / MIP I 182
Codage: Données numériques
Entiers négatifs :
Signe et valeur absolue
Les nombres sont codés de la façon suivante : ± valeur
absolue;
On sacrifie un bit pour représenter le signe.
Pour un mot de n bits :
signe : le bit de poids fort (0 : positif, 1 : négatif)
valeur absolue : n − 1 bits
intervalle de valeurs représentées : [ −2 n-1 +1, 2 n−1 −1]
Algorithmique & Programmation 1 / MIP I 183
Codage: Données numériques
Entiers négatifs :
Signe et valeur absolue
exemple sur 3 bits : [−3, + 3]
1 0 0 -0 0 0 0 0
1 0 1 -1 0 0 1 1
1 1 0 -2 0 1 0 2
1 1 1 -3 0 1 1 3
Algorithmique & Programmation 1 / MIP I 184
Codage: Données numériques
Entiers négatifs :
Complément à 1 (logique):
On calcule le complément à 1 en remplaçant, pour les
valeurs négatives, chaque bit à 0 par 1 et vice -versa.
Exemple : calcul de (-6) sur 4 bits
+6 = 0110
En signe et valeur absolue -6 = 1110
En complément à 1 -6 = 1001
Algorithmique & Programmation 1 / MIP I 185
Codage: Données numériques
Entiers négatifs :
Complément à 1 (logique)
L’intervalle des entiers N que l’on peut représenter est :
Pour n bits, on a l’intervalle suivant :
- (2 n-1 -1) ≤ N ≤ + (2 n-1 -1)
exemple sur 3 bits : [−3, + 3]
1 1 1 -0 0 0 0 0
1 1 0 -1 0 0 1 1
1 0 1 -2 0 1 0 2
1 0 0 -3 0 1 1 3
Algorithmique & Programmation 1 / MIP I 186
Codage: Données numériques
Entiers négatifs :
Complément à 2 (arithmétique)
Le complément à 2 est obtenu en additionnant 1 à la
valeur du complément à 1.
Exemple : calcul de (-6) sur 4 bits
+6 = 0110
En signe et valeur absolue -6 = 1110
En complément à 1 -6 = 1001
En complément à 2 -6 = 1001 + 1
-6 = 1010
Algorithmique & Programmation 1 / MIP I 187
Codage: Données numériques
Entiers négatifs :
Complément à 2 (arithmétique)
L’intervalle des entiers N que l’on peut représenter est :
Pour n bits, on a l’intervalle suivant :
- (2 n-1 ) ≤ N ≤ + (2 n-1 -1)
exemple sur 3 bits : [−4, + 3]
0 0 0 0 0 0 0 0
1 1 1 -1 0 0 1 1
1 1 0 -2 0 1 0 2
1 0 1 -3 0 1 1 3
1 0 0 -4
Algorithmique & Programmation 1 / MIP I 188
Codage: Données numériques
Entiers négatifs :
Exercices :
Nombre Signe et valeur Complément à 1 Complément à 2
absolue
-118 1111 0110 1000 1001 1000 1010
64 0100 0000 0100 0000 0100 0000
-53 1011 0101 1100 1010 1100 1011
-192 1000 0000 1100 0000 1111 1111 0011 1111 1111 1111 0100 0000
127 0111 1111 0111 1111 0111 1111
-127 1111 1111 1000 0000 1000 0001
Algorithmique & Programmation 1 / MIP I 189
Codage : Données numériques
Nombres fractionnaires :
Les nombres fractionnaires sont ceux qui comportent
des chiffres après la virgule
En décimal
12,345 = 1*10 1 + 2 *10 0 + 3*10 -1 + 4*10 -2 + 5*10 -3
En base b:
N = an an−1 . . . a1 a0 a−1 a−2. . . a-p
= an bn + an−1 bn-1+. . . + a0 b0 + a−1 b-1 + a-2 b-2 +. . . + a-p b-p
Algorithmique & Programmation 1 / MIP I 191
Codage : Données numériques
Nombres fractionnaires :
Conversion de la base b vers base 10 :
Exemple :
24,6 16 = 2 × 16 1 + 4 × 16 0 + 6 × 16 -1
= 36,375 10
0,01 2 = 0× 2 0 + 0× 2 -1 + 1 × 2 -2
= 0,25 10
Algorithmique & Programmation 1 / MIP I 192
Codage : Données numériques
Nombres fractionnaires :
Conversion de la base 10 vers la base b :
partie fractionnaire :
multiplications successives par la base
lecture de la partie entière de la première vers la dernière
obtenue
On s’arrête si
o la partie fractionnaire devient nulle
o ou si le nombre de bits obtenus correspond à la taille du registre
ou du mot mémoire dans lequel il faut stocker la valeur
Algorithmique & Programmation 1 / MIP I 193
Codage : Données numériques
Nombres fractionnaires :
Conversion de la base 10 vers la base 2 :
Exemple
0,125 * 2 = 0,250 = 0 + 0,250
0,25 * 2 = 0,50 = 0 + 0,50
0,5 * 2 = 1,0 = 1 + 0,0
En considérant les parties entières du haut en bas donc :
0,125 10 = 0,001 2
Algorithmique & Programmation 1 / MIP I 194
Codage : Données numériques
Nombres fractionnaires :
base 10 vers base 2 :
Exemple
54,35 10 en base 2 ?
Partie fractionnaire :
Partie entière : 0,35 * 2 = 0,70 = 0 + 0,70
5410 = 1101102 0,70 * 2 = 1,40 = 1 + 0,40
0,40 * 2 = 0,80 = 0 + 0,80
0,80 * 2 = 1,60 = 1 + 0,60
0,60 * 2 = 1,20 = 1 + 0,20
54,3510 = 110110,010112 ……….
Algorithmique & Programmation 1 / MIP I 195
Codage : Données numériques
Nombres fractionnaires :
base 10 vers base 2 :
Exercices
27,3892 10 =11011,01100011 2
9,175 10 =1001,001011 2
Algorithmique & Programmation 1 / MIP I 196
Codage : Données numériques
Décimal Codé Binaire :
Exemples :
1 2 3 0 Décimal
0001 0010 0011 0000 DCB
4 5 6 Décimal
0100 0101 0110 DCB
7 8 9 Décimal
0111 1000 1001 DCB
Algorithmique & Programmation 1 / MIP I 197
Codage :Données Non numériques
Les machines informatiques ne savent manipuler que des
nombres binaires
Il faut associer un nombre à chaque symbole d’écriture
Utilisation des codes pour représenter les données non
numériques
Exemple : EBCDIC, ASCII, UNICODE…
Algorithmique & Programmation 1 / MIP I 198
Codage :Données Non numériques
code ASCII
Parmi les codages les plus connus et utilisés, le codage
ASCII (American Standard Code for Information
Interchange) .
Initialement le code ASCII est un code à 7 bits (2 7 = 128
caractères)
c’est l’ASCII Standard
Il a été étendu à un code sur 8 bits ( 2 8 = 256 caractères )
permettant le codage des caractères nationaux (en France
les caractères accentués comme : ù,à,è,é,â,...etc) et les
caractères semi-graphiques.
C’est l’ASCII Etendu
Algorithmique & Programmation 1 / MIP I 199
Codage :Données Non numériques
Code ASCII Standard
Utilise 7 bits pour coder les caractères : Le 8ème bit
(du poids le plus fort) est utilisé pour le contrôle de
parité
Principe du contrôle de parité :
dans un octet, le bit de parité est ajusté de manière à ce
que le nombre de bits à 1 soit toujours pair ou impair
(selon la convention adoptée)
o Contrôle de parité paire : 001 0101 1001 0101
o Contrôle de parité impaire : 010 0011 0010 0011
Algorithmique & Programmation 1 / MIP I 200
Codage :Données Non numériques
La table du code ASCII standard
Algorithmique & Programmation 1 / MIP I 201
201
Codage :Données Non numériques
La table décimale du code ASCII standard
Algorithmique & Programmation 1 / MIP I 202
Codage :Données Non numériques
La table décimale du code ASCII standard (suite)
Algorithmique & Programmation 1 / MIP I 203
Codage :Données Non numériques
Code ASCII Etendu
Le contrôle de parité est rendu de plus en plus non
utile
Le huitième bit est utilisé pour coder plus de
caractères (deux fois plus)
La norme « iso-latin-1 » propose l’extension du
code ASCII sur 8 bits
Les caractères ASCII de 0 à 127 (en décimal)
restent inchangés
Les codes supérieurs (ayant le bit 7 à 1)
représentent des caractères supplémentaires et les
lettres accentués
Algorithmique & Programmation 1 / MIP I 204
Codage :Données Non numériques
Table en hexadecimal du code ISO-8859-1 (ASCII Etendu)
Algorithmique & Programmation 1 / MIP I 205
Codage :Données Non numériques
Exercice :
Représenter les chaines de caractères suivantes en code
ASCII standard et étendu, en hexadécimal et en binaire
(utiliser la parité impaire dans le codage ASCII standard)
Porte_monaie
œuvre
Algorithmique & Programmation 1 / MIP I 206
Codage :Données Non numériques
Exercice : Solution
Porte_monaie en ASCII standard:
P O r t
En hexadécimal 50 6F 72 74
En binaire 1101 0000 1110 1111 1111 0010 1111 0100
e _ M o
En hexadécimal 65 5F 6D 6F
En binaire 1110 0101 1101 1111 0110 1101 1110 1111
N a i e
En hexadécimal 6E 61 69 65
En binaire 0110 1110 0110 0001 1110 0101 1110 0101
Algorithmique & Programmation 1 / MIP I 207
Codage :Données Non numériques
Exercice : Solution
Porte_monaie en ASCII étendu :
P O r t
En hexadécimal 50 6F 72 74
En binaire 0101 0000 0110 1111 0111 0010 0111 0100
e _ m o
En hexadécimal 65 5F 6D 6F
En binaire 0110 0101 0101 1111 0110 1101 0110 1111
N a i e
En hexadécimal 6E 61 69 65
En binaire 0110 1110 0110 0001 0110 1001 0110 0101
Algorithmique & Programmation 1 / MIP I 208
Données non numériques
Exercice : Solution
Œuvre en ASCII standard: ce n’est pas possible de
coder le caractère Œ
Œuvre en ASCII étendu :
Œ u v r e
En hexadécimal 9C 75 76 72 65
En binaire 1001 1100 0111 0101 0111 0110 0111 0010 1110 0101
Algorithmique & Programmation 1 / MIP I 209