Vous êtes sur la page 1sur 12

Parcours MIP

Semestre 3

Algorithme et programmation 1

Cours préparé par :


Pr. Ghita Mangoub

A. U : 2019-2020
Algorithmique et programmation 1
Pr. G. Mangoub

Avant-propos

Ce cours est destiné aux étudiants en S3 du parcours MIP et pour tout débutant désirant
apprendre les bases d’écriture d’algorithme et de programme.
Nous avons tenu à ce que ce cours ne présente pas de difficultés à l’apprenant et nous avons
veillé à le présenter d’une façon la plus pédagogique qui nous semble. Les différentes
structures algorithmiques seront exposées avec pour chaque cas différentes applications. En
parallèle, nous allons aborder la résolution sur ordinateur, ce qui nécessite donc la
connaissance d’un langage de programmation, il s’agit ici du langage C. Les règles de ce
langage seront exposées ainsi que la traduction des différentes structures algorithmiques.
Enfin Ce cours doit être complété par une autre partie enseignée dans un autre module intitulé
Algorithmique et programmation 2.

2
Algorithmique et programmation 1
Pr. G. Mangoub

C o n t e n u d u c o u r s

Ce cours est constitué des chapitres suivants :

Chapitre contenu
• Conversion
Chap.1 Généralités • Codage

• Types de bases, constantes, variables


Chap.2 les éléments de base d’un
• Expressions
algorithme et leur représentation
• Affectation, lecture/écriture
en langage C

• Sélection avec deux alternatives


Chap.3 la sélection en • Sélection avec une seule alternative
algorithmique et en langage C • Imbrication de la sélection
• Le choix multiple
• Boucle répéter … jusqu’à / do … while
Chap. 4 Les boucles en • Boucle tant que / while
algorithmique et en langage C • Boucle pour / for

3
Algorithmique et programmation 1
Pr. G. Mangoub

Chap.1 Généralités
I Introduction
Si l’on s’attache au domaine informatique, la réalisation d’une application informatique peut
se schématiser de la façon suivante :

Problème Algorithme Programme Solution au


posé problème
posé

Analyse, choix codage exécution


méthode

Mise en Choix Choix Choix cas


équations méthode langage test
algorith-
mique

Nous remarquons que la phase de création de l’algorithme est en tête du processus qui va
fournir la solution du problème posé. La base de la programmation est donc l’analyse
algorithmique et lorsque l’analyse est bonne, il est possible de programmer dans n’importe
quel langage.
II Qu’est ce qu’un algorithme ?
C’est un inventaire et une mise en forme d’un ensemble d’actions permettant d’accomplir une
tache que l’on s’est fixée d’avance. En effet, c’est une sorte de recette qui donne un résultat
juste lorsque nous exécutons la suite d’actions répertoriées et classées au sein de l’algorithme.
Un algorithme doit être d’une lisibilité et d’une clarté exemplaires afin qu’il puisse être lu et
repris facilement par d’autre utilisateurs, d’où l’intérêt du choix d’une méthode algorithmique
simple et facile à implémenter. C’est-à-dire qu’un algorithme doit refléter une représentation
textuelle des différentes étapes conduisant à la solution du problème avec une série de
conventions ressemblant à un langage de programmation mais sans les problèmes de syntaxe.

4
Algorithmique et programmation 1
Pr. G. Mangoub

Structure d’un algorithme


Un algorithme doit en général comporter les étapes suivantes :
1) Commentaire expliquant ce que fait l’algorithme
2) Partie déclaration
3) préparation du traitement et lecture des données
4) traitement
5) édition des résultats
Ces étapes peuvent être complétées par l’introduction de commentaires qui peuvent faciliter la
lecture de l’algorithme à l’étape d’édition mais aussi d’autres commentaires qui peuvent en
faciliter la lecture des résultats à l’étape d’exécution.
Dans chaque étape, un ordre fourni se traduit par un ensemble d’instructions. Ces instructions
manipulent des objets. Chaque objet est définit grâce à un ensemble de trois qualificatifs qui
sont :
- L’identificateur : c’est le nom de baptême de l’objet.
- Le type : c’est l’ensemble dans lequel l’objet prend sa valeur.
- La valeur : c’est une valeur précise dans l’ensemble définit par son type.
On note cela de la manière suivante :
objet→ (identificateur, type, valeur)
Exemple : masse→ (m, réel, 20 Kg)
Noter qu’un objet doit être déclaré avant d’être manipulé.
III Généralités sur les langages de programmation
Chaque ordinateur n’est capable de comprendre que son langage machine. Les instructions du
langage machine font exécuter par la machine des opérations très élémentaires. La plus part
des ordinateurs utilisent des mémoires formées de bascules à semi-conducteurs susceptibles
de prendre deux états appelés par convention ‘’ 0 ‘’ et ‘’ 1 ‘’ bit (binary digit). La structure
binaire des mémoires (deux états possibles) impose aux ordinateur une logique binaire et une
arithmétique binaire, c’est à dire portant sur des nombres représentés en base 2 d’où le nom de
langage binaire.
III-1 Le langage binaire
C’est un langage dans lequel l’information est exprimée et manipulée sous forme d’une suite
de bits
Un bit (binary digit) =0 ou 1 (deux états électriques)

5
Algorithmique et programmation 1
Pr. G. Mangoub

Une combinaison de 8 bit s’appelle un octet


III-1-a Le format, le codage d’une information
Les chiffres décimaux sont au nombre de 10, soit 0,1,2, … ,9
Dans le langage binaires ces 10 chiffres doivent être représentés en utilisant ‘’0’’ et ‘’1’’. On
doit donc trouver le format qui permet de représenter ces 10 états avec deux caractères. Or
23<10<24
Donc le format 4 permet de représenter 16 symboles différents, donc il nous faut 4 bit.
Nombre de bit de la machine L’entier maximal qui peut être représenté

8 28 = 256
16 216 = 65536
32 232 = (65536)2
Exemple avec une machine à 16 bit, si l’on calcule le factoriel de 20 on trouve une valeur non
correcte ceci car la vrai valeur n’appartient pas à l’intervalle permis pour les entiers sur cette
machine.
Ou encore 28=256 représente le nombre de possibilités qui permettent de coder tous les
caractères alphabétiques, numériques et symboles tels que .,*,+,8,…..
Chacun des 256 caractères trouve sa représentation binaire via le code ASCII

Par exemple :
De 97 à 122 on a l’alphabet minuscule (a…z)
De 48 à 57 on les différents chiffres (0…9)
Etc Voir la table du code ASCII donnée à la fin du chapitre
En informatique, le codage de l’information s’effectue principalement en trois étapes :
1) Elle est exprimée par une suite de nombres (numérisation)
2) Chaque nombre est converti sous forme binaire
3) Chaque élément binaire est représenté par un état physique

Code ASCII
ASCII (American Standard Code for Information Interchange) est un code dans lequel chaque
chiffre de 0 à 9, chaque lettre de l’alphabet minuscule, chaque lettre de l’alphabet majuscule,
chaque symbole syntaxique est identifié par un code. Au début, le code ASCII était à 128

6
Algorithmique et programmation 1
Pr. G. Mangoub

caractères puis il a été étendu à 256 caractères qui prennent en compte les lettres avec des
accents. Mais il existe d’autres codage, tel que l’unicode (65536 caractères), etc…. On peut
facilement déduire qu’une machine à 6 bit ne peut pas représenter 256 caractères puisque 2 6
=64 mais il faut 8 bit car 28 = 256. Et pour représenter 65536 caractères il faut une machine à
16 bit.
Ainsi, la mémoire d’une machine à (n+1) bit peut être représentée en binaire par (n+1) cases
numérotées de droite vers la gauche 0,1,. …..,n et chaque case représente un bit. Si la case
dont le numéro est 5 contient un ‘1’ cela se traduit par (2)5 qu’il faut ajouter au contenu des
autres cases pris de la même manière en considérant le numéro de la case en puissance. A la
fin on aura l’équivalent en base 10 de notre nombre en binaire.
La conversion
Représentation des entiers positifs sur une machine à (n+1) bit :
Conversion décimal à binaire
Pour convertir un nombre décimal (base 10) en langage binaire (base 2), il suffit :
1) de diviser par 2 jusqu’à ce que le quotient prenne la valeur 0
2) de prendre les restes en remontant du dernier au premier.
Exemple : 12 en base 2
12/2=6 reste 0
6/2=3 reste 0
3/2=1 reste 1
1/2=0 reste 1
donc (12)(10) = (1100)(2)
Ainsi dans une mémoire à (n+1) bit le nombre « 12 » s’écrit de la manière suivante :
0 0 ……………….. 0 1 1 0 0
Rang n rang (n-1) rang 2 rang 0
Et c’est ainsi que sont représentés les entiers positifs dans une machine à (n+1) bit en binaire
pur.
Conversion binaire à décimal
Si on effectue maintenant la conversion dans le sens inverse, c’est à dire passer de la base 2 à
la base 10, il faut :
1) multiplier chaque bit par la puissance de 2 correspondants au rang du bit
2) ajouter les résultats

7
Algorithmique et programmation 1
Pr. G. Mangoub

Exemple1 :
1 1 0 0
23 22 21 20
----------------------
8 +4+0+0= (12)10
Exemple2 :
(101101)2= 1*25+0*24+1*23+1*22+0*21+1*20=32+0+8+4+0+1=(45)10
Conversion binaire à hexadécimal
Elle comporte quatre étapes
1) on décompose le nombre binaire en des groupes de 4 bits en allant de la droite vers la
gauche.
2) si le dernier groupe est incomplet, on le complète par des zéros
3) représenter chaque groupe en base 10
4) établir la correspondance de chaque groupe dans l’étape 3) avec la base 16
Exemple :

(101100)2= 0010 1100


= 0*23+0*22+1*21+0*20 1*23+1*22+0*21+0*20
= 2 12
= 2 C
=(2C)16
Conversion hexadécimal à binaire
1) on isole chaque symbole du nombre
2) on donne la représentation en binaire de chaque symbole
3) La représentation de chaque symbole est complétée sur quatre bits
On arrive enfin à la représentation binaire du nombre
Exemple :
2C16
2 en base 16 est 2 en base 10
C en base 16 est 12 en base 10
Donc :
(2C)16 = 2 12

8
Algorithmique et programmation 1
Pr. G. Mangoub

10 1100
0010 1100
(2C)16= (00101100)2= (101100)2

Généralisation de la conversion
La formule se généralise pour une base quelconque, on divise de la même façon le nombre par
la base
Exemple : 18 en base 4
(18)10= (102)4
Dans Le système octale à base 8, les chiffres vont de 0 à 7.
Dans le système hexadécimal à base 16, les chiffres vont de 0 à 9, puis de A à F.
Exemple :
(5D)16 = (93)10= (1011101)2
(73)10=(111)8=(49)16

Généralisation de la représentation des entiers sur une machine à (n+1) bit :

Il existe aussi une représentation qui tient compte du signe de l’entier lorsqu’on manipule des
entiers relatifs (+5, -2,….). La case de rang n est réservée pour le signe (0 pour un entier >0 et
1 pour un entier <0) et sur les autres cases on représente la valeur absolue du nombre en
binaire pur :
Exemple : le nombre -12 s’écrit
1 0 ……………….. 0 1 1 0 0
Rang n rang (n-1) rang 2 rang 0
Donc pour une machine à 16 bit tous les entiers de l’intervalle [-32768,32767] seront
représentés. Mais cette représentation tenant compte du signe n’est pas celle réellement
utilisée car elle coute très chère. On lui préfère celle du complément à deux. Dans cette
dernière représentation, si le nombre est positif, on le représente comme précédemment. Si le
nombre est négatif, la représentation est obtenue en trois étapes :
1) on code la valeur absolue du nombre
2) on applique le non logique au résultat obtenu pour chaque bit
3) on ajoute « 1 » au résultat obtenu en 2)

9
Algorithmique et programmation 1
Pr. G. Mangoub

Exemple1
Ainsi pour représenter -12 les étapes sont les suivantes :
1)
0 0 ……………….. 0 1 1 0 0
Rang n rang (n-1) rang 2 rang 0
2)
1 1 ……………….. 1 0 0 1 1
Rang n rang (n-1) rang 2 rang 0
on ajoute 1 à ce dernier tableau sans oublier la retenue.

1 1 ……………….. 1 0 1 0 0
Rang n rang (n-1) rang 2 rang 0

Il est important de noter qu’avec ce dernier codage, on peut aussi effectuer les soustractions.
Pour l’addition et la multiplication, elles se font exactement comme en décimale.

Exemple2 : addition en binaire


1010 + 1010= 10100
Exemple3 : multiplication en binaire
1010*1010=1100100

Le langage binaire n’est pas très pratique à cause des erreurs qui peuvent arriver, on peut dire
que c’est un langage de première génération. Selon les besoins, beaucoup d’autres langages
ont vu le jour dont on peut citer, l’assembleur, le basic, le fortran, le java, le turbo
pascal,…..etc. La plus part de ces langages appelés langages évolués sont universels, c’est à
dire qu’on peut lire les programme d’une machine par une autre. Ils sont proches du langage
parlé et permettent une écriture simple des programmes. Sur chaque machine est installé un
programme écrit en langage machine (compilateur) qui permet la traduction du programme
écrit en langage évolué en langage machine et c’est le programme écrit en langage machine
qui est exécuté par la machine et donc il suffit à chaque fois d’avoir un bon compilateur pour
travailler avec un langage. Dans le cadre de cours nous allons nous intéresser aux langages C.

10
Algorithmique et programmation 1
Pr. G. Mangoub

Nous allons donc essayer d’apprendre à écrire des algorithmes et veiller à ce qu’ils reflètent
une représentation textuelle des différentes étapes conduisant à la solution du problème
auquel il est destiné avec une série de conventions ressemblant au langage C mais sans les
problèmes de syntaxe. Une fois cette tâche accomplie, on procèdera à la traduction de
l’algorithme en langage C.

11
Algorithmique et programmation 1
Pr. G. Mangoub

12

Vous aimerez peut-être aussi