Académique Documents
Professionnel Documents
Culture Documents
Semestre 3
Algorithme et programmation 1
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
Chapitre contenu
• Conversion
Chap.1 Généralités • Codage
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 :
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
5
Algorithmique et programmation 1
Pr. G. Mangoub
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 :
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
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.
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