0% ont trouvé ce document utile (0 vote)
70 vues208 pages

Introduction à l'Algorithmique en C

Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
70 vues208 pages

Introduction à l'Algorithmique en C

Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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
leMaximumEntier2
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
uv
v v+1
Sinon
ij
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
uv uv
v v+1 v v+1
A quel si correspond –il ? Sinon Sinon
ij ij
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 )
uv { u=v ;
v v+1 v++;
Sinon
}
ij
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 )
uv { u=v ;
v v+1 v++; }
finsi }
Sinon else
ij 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 :tva0.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)
sa+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)
mm+a
Répétition de deux
lire(a)
mm+a
instructions trois fois

lire(a)
mm+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)
mm+a
100 fois

Il est important de trouver un moyen pour


exprimer la répétition dans un algorithme
lire(a)
mm+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++;
ii+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) }
ii+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

Vous aimerez peut-être aussi