Vous êtes sur la page 1sur 10

Universit Ziane Achour - Djelfa.

Module Algo LMD.

Chapitre 2

1. Pour quoi le code binaire?


Lorsqu'un ordinateur traite du texte, du son, de l'image, de la vido, il traite en ralit de nombres et exactement des valeurs 0 ou 1 puisque l'information que l'ordinateur utilis est en code binaire. Exemple 1: 0 est cod par 1 2 3 4 . 0000 0001 0010 0011 0100 .

Pour convertir un nombre binaire en dcimal, on utilise la formule suivante: (100011)2=1*25+0*24+0*23+0*22+1*21+1*20 = 32+0+0+0+2+1 = (35)10 Pour convertir un nombre dcimal en binaire, on utilise la division successive sur la base (2) jusqu' ce que le quotient soit infrieur la base pour la partie entire et une srie de multiplications par la base aprs un certain nombre de pas pour la partie dcimale. Exemple 2: (35)10 = (100011)2 (0.6875)10 = (0.1011)2 et (35.6875)10=(100011.1011)2

35 / 2 0.6875*2 = 1+ 0.375 1 17 / 2 0.3750*2 = 0+ 0.750 1 8/2 0.7500*2 = 1+ 0.500 0 4/2 0.5000*2 = 1+ 0.000 0 2/2 0 1/2 1 0 En informatique, les donnes sont galement codes en hexadcimal utilisant les 10 chiffres habituels Donc 0, auxquels 1, 2, on ajoute les 3, 4, 5, 6 premires 6, 7, 8, lettres 9, de lalphabet A, B, C, en D, majuscules. E, F.

La base utilise est donc 16 : la mthode est donc similaire au dcimal en remplaant 10 par 16. Exemple 3: FAC = F*162 + A*161 + C*160 = 15*162 + 10*161 + 12*160 =(4012)10 Voici pourquoi l'hexadcimal a t choisi : un processeur nutilise seulement que des 0 et des 1 (binaire). Mais c'est lourd traduire : 1000 en hexadcimal est 1000000000000 en binaire.

Chapitre 2.

__

Djendaoui.D.

Universit Ziane Achour - Djelfa.

Module Algo LMD.

On a choisi une criture plus condense : il s'agit de grouper les quartets (donc des blocs de 4 symboles conscutifs) du code binaire 4 par 4. Au cur de tout systme micro-programm, se trouve un microprocesseur. Cest lui qui gre toutes les oprations effectuer. Pour raliser ces oprations, chaque microprocesseur possde un jeu dinstruction code en logique binaire. Cest un ensemble de codes qui forme le langage machine. Pour dfinir lenchanement des oprations effectuer, il suffit dcrire un programme. Seulement, lcriture dun programme laide des instructions codes en binaire est pratiquement impossible et totalement inefficace. Aussi, pour faciliter lcriture des programmes, on utilise des langages volus. On peut distinguer deux types de langage volu :

1.1. Les langages de bas niveau :


Ce sont des langages proches du jeu dinstruction du microprocesseur. Ils traduisent chaque code du langage machine laide de mnmoniques associs aux diffrents modes dadressages supports par le microprocesseur. Chaque microprocesseur ayant un jeu dinstruction particulier, il y aura donc un langage par microprocesseur. On les nomme des langages Assembleurs. Pour interprter et traduire en langage machine un programme crit en assembleur, on utilisera un Assembleur qui sera donc spcifique chaque microprocesseur.

1.2. Les langages de haut niveau :


Ce sont des langages indpendants du type de microprocesseur. De plus, chaque instruction de ces langages ne corresponde pas une seule instruction en langage machine, mais plusieurs. Ils permettent de crer des programmes compliqus beaucoup plus facilement et rapidement. De ce fait, ce sont les langages les plus utiliss de nos jours. Pour interprter et traduire en langage machine un programme crit en langage de haut niveau, on utilise un Compilateur qui sera spcifique au microprocesseur utilis, mais le programme source pourra tre le mme pour diffrents microprocesseur. Il existe de nombreux langages de haut niveau. On retiendra notamment: PASCAL, ADA, FORTRAN, BASIC, COBOL, C, C++, JAVA, ...

2. Qu'est ce que l'Algorithme?


L'Algorithme: la premire dfinition que donne Littr, du nom algorithme, est "en terme d'algbre, procd de calcul". Le terme lui mme vient du nom du mathmaticien arabe alKhawarizmi (fin de VIIIe sicle), l'un des crateurs de l'algbre (al-gabre). Au XVIIIe sicle, algorithme signifiait "l'arithmtique avec les chiffres arabes". Depuis l'apparition des ordinateurs, la dfinition s'est largie d'autres domaines que les mathmatiques et dsigne maintenant la description d'une suite d'actions effectuer, dans un ordre donn, pour parvenir un rsultat.

Chapitre 2.

__

Djendaoui.D.

Universit Ziane Achour - Djelfa.

Module Algo LMD.

Donc l'algorithme est une squence de pas de calcul qui prend un ensemble de valeurs entre (input) et produit un ensemble de valeurs comme sortie (output). Ou l'algorithme: C'est une suit d'instructions, qui une fois excute correctement, conduit un rsultat donne, l'algorithme rsout toujours un problme de calcul.

2.1. Action lmentaire:


La personne ou la machine qui excute l'algorithme doit savoir effectuer les actions qui y sont numres sans y tre dcrites (actions lmentaires), car il est impossible de tout dire. Le choix des actions lmentaires dpend donc de celui qui doit excuter l'algorithme. Prenons un exemple en mathmatique: La somme de deux nombres entiers A et B et l'affichage de rsultat C peut tre dcrit comme suit: - Introduire le premier nombre A - Introduire le deuxime nombre B (action 1). (action 2).

- Faire l'addition A+B et mettre le rsultat dans C (action 3). - Afficher C (action 4).

Cet algorithme ncessite les donnes A, B et fournit le rsultat C.

2.2. Mthodologie de construction du programme:


La rsolution d'un problme ncessite la description des traitements amenant au rsultat du problme. Cette rsolution que l'on schmatise ci-dessous:
Problme
Etape 1

Enonc explicite
Etape 2

Algorithme
Etape 3

Programme

Etape1: le passage du problme l'nonc explicite va permettre de dfinir les entres (donnes connues) et les sorties (donnes connatre). Etape2: le passage de l'nonc explicite l'algorithme va permettre de dfinir les oprations, les actions qui permettant de rsoudre ce problme. Etape3: c'est la traduction d'algorithme un langage de programmation. Exemple 4: calcul de la moyenne gnrale des notes d'un tudiant. a) les donnes de sortie: MG: la moyenne gnrale (type rel). RES: admis ou ajourn (type caractre). b) les actions:
MG := MOY / N ;
i =1 N

MOY := notes / M ;
j =1

Chapitre 2.

10

__

Djendaoui.D.

Universit Ziane Achour - Djelfa.

Module Algo LMD.

c) les donnes internes: MOY: moyenne de chaque module (type rel). d) les donnes d'entre: N: nombre de modules (type entier). M: nombre d'preuves (type entier). MAT: matricule de l'tudiant (type entier). NOTES: les notes de chaque module (type rel).

2.3. Structure gnrale d'un algorithme:


La structure gnrale d'un algorithme est reprsente comme suivante: (Remarque: je donne toujours la conversion des instructions algorithmique en Pascal pour savoir le langage Pascal en parallle avec Algorithme). Algorithme Algorithme nom_d'algorithme ; Variable < partie dclaration > DEBUT < partie d'Action > FIN. Pascal Program nom_du_program ; VAR {partie dclaration} BEGIN {partie d'Action} END.

- Le mot "Algorithme" indique le dbut d'algorithme, il faut le suivre par le titre d'algorithme. - Le mot "variable" indique la partie de dclaration, cette partie contient les objets d'entre et les objets de sortie (donne d'entre et de sortie). - Les mots "DEBUT" et "FIN" indiquent les limites de la partie d'action. 2.3.1. Partie de dclaration: Contient des objets d'entre et de sortie, qui sont utiliss dans l'algorithme; pour dfinir un objet, il faut prciser son nom et son sens, son utilisation, sa nature, et son type. a) Nom et sens: Le nom est reprsent par une chane de caractre alphanumrique, et

commencent par une lettre, et admettant le caractre (_) pour fabriquer une seul chane. Le sens d'un objet c'est sa signification, son rle et son utilit dans le problme. Exemple 5: PRIX, VITESSE, Age_du_tudiant, T, X1 b) c) d) Utilisation: L'utilisation d'un objet, c'est sa caractristique entre, sortie ou interne. Nature: La nature d'un objet est: variable, fonction, procdure, algorithme. Type: Le type d'un objet caractrise les valeurs que peut prendre cet objet et les actions

autorises sur cet objet, la forme de dclaration est : < identificateur >:<type>;
Chapitre 2.

Exp 11

X,Vitesse :Integer;
__

Djendaoui.D.

Universit Ziane Achour - Djelfa.

Module Algo LMD.

Exemple : Variable I, J: Entier ; PRIX : Rel ; DEBUT 2.3.2. Types lmentaires: Les types lmentaires sont des types simples, valeur unique. On distingue les types standards: Entier, Rel, Boolen, caractre et chane de caractre; et les types non standards: numr et intervalle. 2.3.2.1. Les types standards: Sont les types : entier, rel, boolen, caractre et chane. Type d'entier: C'est l'ensemble de nombres entiers. Les oprateurs de type entier sont: o L'addition note "+" donne un rsultat entier. o La soustraction note "-" donne un rsultat entier. o La multiplication note " * " donne un rsultat entier. o La division note " / " donne un rsultat rel. o Les oprations de relation notes par : < , <= , >, >= ,<>, = logique. o Oprateurs de succession: succ et pred qui retournent respectivement le successeur et le prdcesseur d'un entier. Par exemple: succ (-1) = 0, succ (3) = 4. Pred (1) = 0, pred (4) = 3. o L'oprateur ord qui retourne la mme valeur par exemple ord (5) = 5. o Les fonctions standards telles que racine carre note par SQRT valeur absolue note par ABS, etc. Exemple de dclaration d'une constante de type entier et d'une variable de type entier. Algorithme titre; Constante N = 100; Variable N1: Entier; Program titre ; Const N = 100 ; VAR N1: Integer ; nous donnent un rsultat VAR I, J: Integer ; PRIX : Real ; BEGIN

Type de rel: C'est l'ensemble des nombres rels, la virgule est reprsente par un point ou bien une virgule flottante o deux nombres entiers: mantisse et exposant. Exemple: 2.5, -12.13, +2.4, 2E5. Le dernier nombre est crit en virgule flottante avec une mantisse gale 2 et un exposant gal 5, il reprsente 2*105. Les oprateurs de type rel sont: o Les oprations: + , - , * , / , fournissent un rsultat rel. 12 Djendaoui.D.

Chapitre 2.

__

Universit Ziane Achour - Djelfa.

Module Algo LMD.

o Les oprateurs de relation: < , <= , >, >= ,<>, = fournissent un rsultat logique. o Les fonctions standards comme ABS, SQRT, et les fonctions trigonomtriques telles que ARCTG, SIN, COS, etc. Exemple de dclaration d'une constante de type rel et d'une variable de type rel. Algorithme titre; Constante PI = 3.14; Variable X,N1: Rel; Program titre ; Const PI = 3.14; VAR X,N1: Real;

Remarques importantes: - La division (entier ou relle) par zro n'est par admise et provoque une erreur de dbordement (ou dpassement de capacit). - Le rsultat d'une opration arithmtique peut provoquer une erreur de dbordement lorsqu'il sort du domaine de dfinition du type entier ou du type rel. Type boolen ou logique: Nomm par le mot "boolen", ce type contient deux valeurs (VRAI, FAUX). Les oprateurs de type boolen sont: o Les oprateurs logiques: "et", "ou" et "non". o Les oprateurs de relations: < , <= , >, >= ,<>, = et nous avons faux < vrai. o Les oprateurs succ et pred, qui retournent respectivement le successeur et le prdcesseur d'un boolen. Exemple: succ (faux) = vrai, et pred (vrai) = faux. o L'oprateur ord, nous avons ord (faux) = 0 et ord (vrai) = 1. Exemple de dclaration d'une constante de type boolen et d'une variable de type boolen. Algorithme titre; Constante V = vrai; Variable test: boolen; Program titre ; Const V = true; VAR test: boolean;

Type de caractre: Nomm par le mot "caractre", ce type caractrise l'ensemble des caractres alphabtique "A ,BZ,a,bz", les caractres numriques "0,1,9", les sparateurs" , ; ( ) [ ] . := " le blanc ' ', les oprations arithmtique "+ , - , / ,* ", et les oprations de relation " < , <= , >, >= ,<>, = " autrement dit tous les caractres ncessaires l'criture d'un texte. Une constante de type caractre est crite entre deux apostrophes (' '). Exp. '4' , '0' , ' ;' Les oprateurs de type caractre sont: o La fonction standard Ord: fournit le code machine correspondant au caractre qui constitue l'argument de Ord. Exp. Ord ('A') = 65, Ord ('f') = 102, Ord ('F') = 70, o La fonction inverse Chr: fournit le caractre dont le code est l'argument de Chr. Exp. Chr(65) = A, Chr(90) = Z, Chr(103) = g, o Les oprateurs de relation: >, <, =, <>, >=, <=, car les caractres sont ordonns.
Chapitre 2.

13

__

Djendaoui.D.

Universit Ziane Achour - Djelfa.

Module Algo LMD.

o Les oprateurs Succ et Pred. Exp. Succ ('A') = B , Pred ('C') = B. Exemple de dclaration d'une constante de type caractre et d'une variable de type caractre: Algorithme Titre; Constante Etoile ='*'; Variable car: caractre; Program Titre ; Const Etoile = '*'; Var car: char ;

Le type chane: C'est une chane de caractres (ensemble des chanes de caractres). Prsentation: une constante de type chane est reprsente par une juxtaposition de caractres mis entre deux apostrophes (' '). Il faut doubler l'apostrophe si celle-ci fait d'une chane. Exp. ' aujourd''hui '. Les oprateurs de type chane: o Oprateurs de comparaison de chanes: >, <, =, <>, >=, <=. o La fonction concat qui sert concatner deux chanes. Exp. Concat ('Dje','lfa') = Djelfa. o La fonction Length qui fournit la longueur d'une chane de caractres donne. Exp. Length ('aujourd' 'hui') = 11 (lespace est prend en considration). Exemple de dclaration d'une constante de type chane et d'une variable de type chane: Algorithme titre ; Constante message = 'ce nombre est erron'; Variable nom : chane ; 2.3.2.2. Les types non standards: Nous distinguons, parmi les types non standards (non prdfinis), le type numr et le type intervalle. Type numr : le type numr est dfini par l'utilisateur (il n'est pas connu par le microprocesseur). Dans la dfinition d'un tel type, l'utilisateur numre une suite finie et ordonne de valeurs constantes dsignes par des noms. Il consiste un objet de la partie dclaration de nature type, il faut dclarer des variables de ce type. Ce dernier est dclar comme suit: Algorithme titre ; Type nom_type = (val 1, val 2, val 3,, val n); Variable x: nom_type ; Exemple: Algorithme titre ; Type Couleur = (bleu, Program titre ; vert, Type 14 Couleur
__

Program titre ; Const message = 'ce nombre est erron ' ; Var nom: string [10] ;

Program titre ; Type nom_type = (val 1, val 2, val 3,, val n); Var x: nom_type ;

(bleu,

vert,

Chapitre 2.

Djendaoui.D.

Universit Ziane Achour - Djelfa.

Module Algo LMD.

jaune, rouge); Variable col: Couleur ; Les oprateurs de type numr:

jaune, rouge); Var col: Couleur ;

o La fonction Ord qui fournit l'ordre des constantes dans une numration, par exemple Ord(bleu)= 0, Ord (jaune) = 2 et ainsi de suite. o Les oprateurs de relation: >, < et = sont applicables aux valeurs d'un type numr. o Les oprateurs de succession Pred et Succ. Exp. Succ(bleu)= vert, Pred(rouge)= jaune. Remarques: - Le prdcesseur du premier lment et le successeur du dernier lment d'une numration ne sont pas dfinis. L'numration dfinit des constantes: on ne peut pas donc insrer, dans une numration, des constantes dj dfinies, ni numrer des valeurs d'un type standard. Note: les types : entier, caractre, boolen et numr sont dits types ordinaux car nous pouvons numrer leurs valeurs. Le type intervalle: ce type dfinit un intervalle d'un type ordinal, par l'indication des bornes infrieure et suprieur de l'intervalle. La borne infrieure doit tre infrieure la borne suprieure. Le type des constantes qui sont les bornes de l'intervalle prcise quel est le type ordinal dont est driv l'intervalle. Ce type est dclar comme suit: Algorithme titre ; Type nom_type = born_inf.. born_sup ; Variable x: nom_type ; Program titre ; Type nom_type = born_inf.. born_sup ; Var x: nom_type ;

O nom_type reprsente le nom donn cet intervalle et born_inf, born_sup reprsentent, respectivement, la borne infrieure et la borne suprieure de l'intervalle. Exemple 6: Algorithme titre ; Program titre ;

Type Jours = (samedi, dimanche, lundi, mardi, Type Jours = (samedi, dimanche, lundi, mardi, mercredi, jeudi, vendredi); Jour_trav = dimanche..jeudi ; Mois =1..31 ; Variable J: Jour_trav ; Jor: Mois ; mercredi, jeudi, vendredi); Jour_trav = dimanche..jeudi ; Mois =1..31 ; Var J: jour_tarv ; Jor: Mois ;

Chapitre 2.

15

__

Djendaoui.D.

Universit Ziane Achour - Djelfa.

Module Algo LMD.

Une variable de type intervalle possde toutes les proprits du type de base dont l'intervalle est driv, sauf en ce qui concerne sa valeur, qui doit tre comprise entre (ou gale) ses bornes. Par exemple la variable Mois ne peut prendre que l'une des valeurs entre 1 et 31. 2.3.3. Partie d'action: Cette partie contient toutes les instructions et les expressions qui permettent le transfert d'information entre objets, la communication entre un algorithme et son utilisateur. 2.3.3.1 Les instructions lmentaires: On prsente ici les instructions de base qui permettent le transfert d'information entre objets, le dialogue entre algorithme et utilisateur, et la collaboration d'algorithme entre eux. 2.3.3.1.a L'affectation: Cette instruction permet d'affecter une valeur une variable et sa

forme de dclaration est: <identificateur> <expression>; <identificateur> :=<expression>;

Attention: le symbole := n'est pas l'galit, mais reprsente le signe de l'affectation. Exemple 7: Les parenthses et toiles "(* *)" sont utiliss pour l'explication, ce qu'on appel le "commentaire". }. 3 ; (* Y prend la valeur 3 aprs

On peut utiliser aussi le symbole suivante: { Y

3 ; (* Y prend la valeur 3 aprs Y:=

l'affectation *) X Z 10 ;

l'affectation *) X := 10 ;

X+Y ; (* Z prend la valeur 13 aprs Z := X+Y ; (* Z prend la valeur 13 aprs l'affectation *) Z := Z+3 ; Y :=X*2 ;

l'affectation *) Z Y X Z+3 ; X*2 ;

Z + Y ; {X se change aprs cette X := Z + Y ; {X se change aprs cette affectation} Lecture: Cette instruction par laquelle nous pouvons introduire des donnes

affectation} 2.3.3.1.b

l'intrieure de l'ordinateur, la forme de dclaration est comme suit: LIRE (liste de variables) ; Exemple 8: Algorithme titre ; Variable x, z : Rel ; A, b : Entier ; DEBUT Program titre ; Var x, z : Real ; A, b : Integer ; Begin READ (liste de variables) ;

Chapitre 2.

16

__

Djendaoui.D.

Universit Ziane Achour - Djelfa.

Module Algo LMD.

(* variable d'entre *) LIRE (a, b) ; LIRE(x) ; Z FIN. 2.3.3.1.c a + b + x ;

{variable d'entre} READ (a, b) ; READ(x) ; Z := a + b + x ; END.

Ecriture: Cette action permette d'afficher sur cran un rsultat ou un message, la

forme de dclaration est comme suit: ECRIRE (rsultat,) ; Exemple 9: Algorithme titre ; Variable x, y, z : Rel ; DEBUT LIRE (x, y) ; z x +y ; Program titre ; Var x, y, z : Real ; Begin READ (x, y) ; z := x + y ; WRITE(z) ; Write (rsultat,) ;

Ecrire (z) ;

Ecrire('la valeur de Z est', Z); WRITE ('la valeur de Z est', Z); Ecrire ('la valeur Z = ' , Z) ; WRITE ('la valeur Z = ' , Z) ;

Ecrire ('la valeur Z est', Z,'et WRITE ('la valeur Z est', Z,'et la valeur X est', X) ; FIN. 2.3.3.1.d la valeur X est', X) ; END. Permutation: supposons deux variables A, B. la permutation est le transfert B la

valeur de A et A la valeur de B (toujours quels que soient les contenus pralables de ces variables). Pour faire le transfert il faut ajouter une autre variable C pour garder la valeur de A quand le transfert de B A puis nous transfrons C (valeur de A) B. Algorithme Permutation ; Program A,B,C :Integer ; Begin B ; B C ; C := A ; A := B ; B := C ; End. Permutation ;

variable A,B,C :Entier ; Dbut C Fin. A ; A

Remarque : quelle que soit le nombre des variables permutes nous ajoutons une seule variable.

Chapitre 2.

17

__

Djendaoui.D.