Sunteți pe pagina 1din 43

ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Représentation hiérarchique : Ordinogramme


Sommaire

1. Introduction____________________________________________________________ 2
2. La prise de décision______________________________________________________ 2
3. La répétition ___________________________________________________________ 3
4. Un exemple complet _____________________________________________________ 6
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

1.Introduction
Une approche intéressante en matière de représentation est l’ordinogramme
qui permet, dans un format graphique, de proposer une vue des opérations
exécutées par l’ordinateur.
Il est possible de ne faire apparaître qu’une vue partielle des opérations en
fonction de l’intérêt que cette présentation de la logique d’exécution
présente.
Cette présentation ne dispense pas de l’écriture du programme sous forme
d’un pseudo code qui elle se voudra plus exhaustive.

2.La prise de décision


La prise décision est l'élément clé de l'algorithme. Elle permet en effet de
choisir quelle opération on doit effectuer en fonction de la valeur d'un
paramètre. En général, ce choix s'effectue selon l'évaluation d'une
expression logique à laquelle on peut répondre par OUI ou NON ou par VRAI
ou FAUX.
Par exemple on peut vouloir effectuer un certain type d'opérations si un
paramètre est positif et une autre série d'opération si un paramètre est
négatif.
Dans ce cas l'algorithme prendra la forme suivante :

Prise de décision

On appelle cette représentation graphique un organigramme


ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

3.La répétition
Des opérations comme le calcul itératif, la sommation, le décompte
d'entités, la recherche d'entités impliquent toutes la notion de répétition.

À partir du moment où il faut répéter, il faut choisir un point de départ pour


démarrer le processus de répétition. Cette étape s'appelle l'initialisation et
comme nous le verrons dans ce qui suit, c'est une étape essentielle. Le cas
le plus simple de répétition peut être représenté comme suit :

Cette répétition est évidemment sans fin car rien n'est spécifié pour arrêter
le retour vers le haut dans l'algorithme.
Pour corriger la situation, nous devons introduire la notion de prise de
décision dans la répétition, à savoir doit-on continuer oui ou non.
L'algorithme précédent devient donc :

Définition du nombre de
répétition N et du compteur
d'itérations i

Instructions à répéter

Incrémentation du compteur

Décision de continuer ou non


ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail


Dans ce cas, nous prenons la décision d'arrêter ou de continuer en
comparant la valeur de i à une valeur maximum N. La valeur de i est
initialisée à 1 et la valeur N à 10.
A chaque répétition la valeur de i est augmentée de 1 (i = i+1), si bien que
plus on répète plus i augmente. La valeur de i nous sert donc à compter les
répétitions et nous appelons i un compteur.

Cet algorithme constitue la base de tout système itératif pour lequel nous
connaissons le nombre de répétitions à effectuer. Cependant, au niveau des
opérations à répéter, rien ne prouve qu'elles sont modifiées à chaque tour et
finalement l'algorithme précédent répète toujours la même chose ce qui est
rarement utile.

Pour résoudre cet problème, il faut donc que les opérations à effectuer
soient influencées soit par le compteur d'itérations soit par toute autre
valeur provenant d'une itération précédente. L'exemple qui suit démontre le
calcul de la fonction factorielle de 1 à N.

Définition du nombre de
répétition N, du compteur
d'itérations i et de la valeur
initiale du factoriel FAC

Produit de la valeur
précédente de FAC par la
valeur du compteur i et mise
à jour de la valeur de FAC

Incrémentation du compteur

Décision de continuer ou non

Dans cet exemple, portons un intérêt particulier à la valeur FAC. À chaque


répétition, Cette valeur est modifiée à partir d'elle-même. Cela signifie qu'a
la fin des répétitions, FAC a accumulé l'influence de chaque répétition. FAC
est donc un accumulateur qui est utilisé ici pour accumuler le produit de
plusieurs valeurs. Cette notion est aussi utilisée pour accumuler des
sommes.

En terminant, dans certains processus répétitifs, nous ne connaissons pas à


l'avance le nombre de répétitions à faire. La décision d'arrêter ou de
continuer sera prise en fonction du résultat des opérations effectuées de la
boucle de répétition.
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Dans l’exemple qui suit, le problème consiste à diviser plusieurs fois une
valeur par 2 jusqu'à ce que cette valeur soit plus petite qu'un millième

Initialisation

A devient égal à
la moitié de sa
valeur précédente

Décision de
continuer ou non
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

4.Un exemple complet


Dans l’exemple qui suit, l’ordinogramme a été complété et présente
l’acquisition des données en entrée au travers de l’opération lire et les
résultats en sortie qui figurent dans les opérations présenter. Il s’agit là
d’un exemple complet de représentation, sous forme d’ordinogramme, de
l’algorithme du programme. Ces opérations particulières, de lecture/écriture
sont formalisées sous la forme d’une figure ovale.
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Il est important de réfléchir aux données attendues par le programme pour


qu’il puisse s’exécuter correctement. Dans les premiers exemples que nous
donnons, ces données seront acquises soit par l’intermédiaire d’un dialogue
utilisateur et de l’opération lire, soit par affectation directe dans le cadre
d’une initialisation d’une variable.
Ces données acquises par le programme sont les données en Entrée
(Input).

Les données acquises en entrée par le programme font l’objet d’un


traitement qui en modifie la valeur ou participent au traitement comme
facteur de celui-ci. Celles qui seront restituées à l’utilisateur, correspondant
au résultat du programme, sont des données en Sortie (Output).

Certaines données en entrée peuvent être aussi restituées en sortie : on


parle alors de données en Entrée-Sortie (Input-Output ou Both).

EXERCICE :

La responsable de la paie, M Abibi, souhaite connaître le montant net du salaire des


employés de la boutique « Hugo Boss» . Le salaire net résulte du montant brut du
salaire auquel sont retranchés les montants de charge sociale de la CNSS, une partie
pour la retraite et une partie pour la santé, et le montant de l’impôt sur le revenu qui est
retenu à la source.
Pour les charges sociales le calcul s’effectue selon les modalités suivantes :
Si le salaire est inférieur ou égal à 12 000 MAD , CNSS Santé est de 3,54 % et
CNSS Vieillesse 2,56 %
Si le salaire est supérieur à 12 000 MAD , CNSS Santé est majorée de 0,86 % et
CNSS Vieillesse de 0,8 % pour la tranche de salaire excédent 12 000 MAD

Pour l’impôt : le pourcentage retenu est de 20,56 %

Dans un premier temps, le programme ne traite que d’un salarié à la fois

Travail à réaliser :

Déterminer :

- L’objectif
- Les données en entrée
- Les données en sortie
- Les traitements à appliquer sur les données en entrée pour obtenir le résultat

Réaliser l’ordinogramme du programme. Les données en entrée sont acquises dans le


cadre d’un dialogue utilisateur.
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Notions sur les langages informatiques


Sommaire

1. Qu'appelle-t-on langage informatique?______________________________________ 2


2. Langage interprété ______________________________________________________ 2
3. Langage compilé ________________________________________________________ 3
4. Langages intermédiaires__________________________________________________ 3
5. Quelques langages ______________________________________________________ 4
6. Ce que comprend l’ordinateur _____________________________________________ 5
6.1. Présentation du binaire ______________________________________5
6.2. Le bit ____________________________________________________5
6.3. L’octet ___________________________________________________7
6.4. Les opérations en binaire_____________________________________7
6.4.1. L’addition en binaire _____________________________________7
6.4.2. La multiplication en binaire ________________________________8
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

5.Qu'appelle-t-on langage informatique?


On appelle langage informatique un langage destiné à décrire l'ensemble des actions
consécutives qu'un ordinateur doit exécuter.

Les langages naturels (l'anglais, le français, l’arabe) représentent l'ensemble des


façons qu'ont un groupe d'individu de communiquer. Les langages servant aux
ordinateurs à communiquer n'ont rien à voir avec des langages informatiques, on parle
dans ce cas de protocoles, ce sont deux notions totalement différentes. Un langage
informatique est une façon pratique pour nous (humains) de donner des instructions à
un ordinateur.

Un langage informatique est rigoureux : à CHAQUE instruction correspond UNE action


du processeur. Il ne peut y avoir d’ambiguïté sur l’action à entreprendre comme dans le
cas d’un langage naturel.
Le langage utilisé par le processeur, c'est-à-dire les données telles qu'elles lui arrivent,
est appelé langage machine. Il s'agit d'une suite de 0 et de 1 (du binaire) mais pour
plus de "clarté il peut être décrit en hexadécimal.
Toutefois le langage machine n'est pas compréhensible facilement par l'humain
moyen…
Ainsi il est plus pratique de trouver un langage intermédiaire, compréhensible par
l'homme, qui sera ensuite transformé en langage machine pour être exploitable par le
processeur.

L'assembleur est le premier langage informatique qui ait été utilisé. Celui-ci est encore
très proche du langage machine mais il permet déjà d'être plus compréhensible.
Toutefois un tel langage est tellement proche du langage machine qu'il dépend
étroitement du type de processeur utilisé (chaque type de processeur peut avoir son
propre langage machine). Ainsi un programme développé pour une machine ne pourra
pas être porté sur un autre type de machine (on désigne par « portable » un
programme qui peut être utilisé sur un grand nombre de machine). Pour pouvoir
l'utiliser sur une autre machine il faudra alors parfois réécrire entièrement le
programme!

Un langage informatique a donc plusieurs avantages :


 il est plus facilement compréhensible que le langage machine
 il permet une plus grande portabilité, c'est-à-dire une plus grande
facilité d'adaptation sur des machines de types différents
Nous classerons les langages informatiques en trois catégories : les langages
interprétés, les langages compilés et les langages intermédiaires.

6.Langage interprété
Un langage informatique est par définition différent du langage machine. Il faut donc le
traduire pour le rendre intelligible du point de vue du processeur. Un programme écrit
dans un langage interprété a besoin d'un programme auxiliaire (l'interpréteur) pour
traduire au fur et à mesure les instructions du programme. Les principaux
inconvénients d’un langage interprété sont :
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail


une erreur de syntaxe concernant une instruction ne sera découverte que lors
de son exécution bien que certains outils proposent aujourd’hui des
débogueurs puissants.
Son code est accessible et compréhensible par toute personne initiée au
langage (cela peut aussi être considéré comme un avantage !)

7.Langage compilé
Un programme écrit dans un langage dit "compilé" va être traduit une fois
pour toutes par un programme annexe (le compilateur) afin de générer un
nouveau fichier qui sera autonome, c'est-à-dire qui n'aura plus besoin d'un
programme autre que lui pour s'exécuter (on dit d'ailleurs que ce fichier est
exécutable)
.
Un programme écrit dans un langage compilé a donc comme avantage de
ne plus avoir besoin, une fois compilé, de programme annexe pour
s'exécuter. De plus, la traduction étant faite une fois pour toute, il est plus
rapide à l'exécution.

Toutefois il est moins souple que programme écrit avec un langage


interprété car à chaque modification du fichier source (fichier intelligible par
l'homme: celui qui va être compilé) il faudra recompiler le programme pour
que les modifications prennent effet.

D'autre part, un programme compilé a pour avantage de garantir la sécurité


du code source. En effet, un langage interprété, étant directement
intelligible (lisible), permet à n'importe qui de connaître les secrets de
fabrication d'un programme et donc de copier le code voire de le modifier. Il
y a donc risque de non-respect des droits d'auteur. D'autre part, certaines
applications sécurisées nécessitent la confidentialité du code pour éviter le
piratage (transaction bancaire, paiement en ligne, communications
sécurisées, ...).

8.Langages intermédiaires
Certains langages appartiennent en quelque sorte aux deux catégories
(LISP, Java, Python, VB.Net ou C#..) car le programme écrit avec ces
langages subissent une phase de compilation intermédiaire vers un fichier
écrit dans un langage qui est peu intelligible (donc différent du fichier
source) et non exécutable (nécessité d'un interpréteur ou d’un compilateur
just-in-time).
C’est le cas des langages utilisés dans l’architecture JAVA/J2EE et DOT Net.
Les applets Java, petits programmes insérés parfois dans les pages Web,
sont des fichiers qui sont compilés mais que l'on ne peut exécuter qu'à
partir d'un navigateur internet (ce sont des fichiers dont l'extension est
.class). Sur votre machine doit alors être installée la machine virtuelle Java
(JVM)
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Tous les langages conformes aux spécifications de la plateforme Dot Net


(conformité à la CLS Common Language Specification) se trouvent dans ce
cas. La compilation génère un objet dans un code intermédiaire en langage
MSIL (Microsoft Intermediate Language), un jeu d'instructions indépendant
du processeur qui est converti efficacement en code natif.
Avant d'exécuter le code, le programme en langage MSIL sera recompilé en
code spécifique du processeur, à l'aide d'un compilateur JIT (Just-In-Time).
Dans la mesure où le Common Language Runtime fournit un ou plusieurs
compilateurs JIT pour chaque architecture d'ordinateur qu'il prend en
charge, le même jeu de MSIL peut être traité par un compilateur JIT et
exécuté sur toute architecture prise en charge.

9.Quelques langages
Quelques exemples de langages couramment utilisés
Voici une liste non exhaustive de langages informatiques existants.

Langage Domaine de prédilection Compilé/interprété


ADA Temps réel ( armement, transport ) langage compilé
Basic
…… langage interprété
(VBScript)
C …… langage compilé
C++ Programmation objet langage compilé
C# Programmation objet, Web langage intermédiaire
Cobol Gestion langage compilé
Fortran Calcul langage compilé
Java Programmation objet, Web langage intermédiaire
MATLAB Calcul mathématique langage interprété
Mathematica Calcul mathématique langage interprété
LISP Intelligence artificielle langage intermédiaire
Pascal Enseignement langage compilé
Prolog Intelligence artificielle langage interprété
PHP Web ( serveur ) langage intermédiaire
Perl Traitement de chaînes de caractères langage interprété
VB.Net Programmation objet, Web langage intermédiaire
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

10.Ce que comprend l’ordinateur


L’ordinateur ne comprend malheureusement qu’un langage binaire. Vous
pouvez aisément comprendre pourquoi, nous humains, avons besoin de
recourir à d’autres idiomes et syntaxes…

10.1. Présentation du binaire


Vers la fin des années 30, Claude Shannon démontra qu'à l'aide de
"contacteurs" (interrupteurs) fermés pour "vrai" et ouverts pour "faux" on
pouvait effectuer des opérations logiques en associant le nombre " 1 " pour
"vrai" et "0" pour "faux".

Ce langage est nommé langage binaire. C'est avec ce langage que


fonctionnent les ordinateurs. Il permet d'utiliser deux chiffres (0 et 1) pour
faire des nombres. L'homme travaille quant à lui avec 10 chiffres
(0,1,2,3,4,5,6,7,8,9), on parle alors de base décimale.

10.2. Le bit
Bit signifie "binary digit", c'est-à-dire 0 ou 1 en numérotation binaire. C'est
la plus petite unité d'information manipulable par une machine.

On peut les représenter physiquement:

 par une impulsion électrique, qui, lorsqu'elle atteint une certaine


valeur, correspond à la valeur 1.
 par des trous dans une surface
 grâce à des bistables, c'est-à-dire des composants qui ont deux
états d'équilibre (un correspond à l'état 1, l'autre à 0)

Avec un bit on peut avoir soit 1, soit 0.


Avec 2 bits on peut avoir quatre états différents (2*2):

00
01
10
11

Avec 3 bits on peut avoir huit états différents (2*2*2):

000
001
010
011
100
101
110
111
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail


ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Avec huit bits on a 2*2*2*2*2*2*2*2=256 possibilités, c'est ce que l'on


appelle un octet.

27 =128 26 =64 25 =32 24 =16 23 =8 22 =4 21 =2 20 =1


0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1

Le plus petit nombre est 0, le plus grand est 255, il y a donc 256 possibilités
Cette notion peut être étendue à n bits, on a alors 2n possibilités.

10.3. L’octet
L'octet est une unité d'information composée de 8 bits. Il permet de stocker
un caractère, telle qu'une lettre, un chiffre.
Ce regroupement de nombres par série de 8 permet une lisibilité plus
grande, au même titre que l'on apprécie, en base décimale, de regrouper les
nombres par trois pour pouvoir distinguer les milliers. Par exemple le
nombre 1 256 245 est plus lisible que 1256245.

Une unité d'information composée de 16 bits est généralement appelée mot


(en anglais word).

Une unité d'information de 32 bits de longueur est appelée double mot (en
anglais double word, d'où l'appellation dword).

Un kilo-octet (Ko) ne vaut pas 1000 octets mais 210=1024 octets


Un méga-octet (Mo) vaut 210 Ko=1024 Ko=1 048 576 octets

10.4. Les opérations en binaire


Les opérations arithmétiques simples telles que l'addition, la soustraction et
la multiplication sont faciles à effectuer en binaire.

10.4.1. L’addition en binaire


L'addition en binaire se fait avec les mêmes règles qu'en décimale.
On commence à additionner les bits de poids faibles (les bits de droite) puis
on a des retenues lorsque la somme de deux bits de mêmes poids dépasse
la valeur de l'unité la plus grande (dans le cas du binaire: 1), cette retenue
est reportée sur le bit de poids plus fort suivant...

Par exemple:

01101
+0 1 1 1 0
- - - - - -
11011
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail


La multiplication en binaire
La multiplication se fait entre bits de même poids, avec le même système de
retenue qu'en décimale. La table de multiplication en binaire est très simple:

 0x0=0
 0x1=0
 1x0=0
 1x1=1
Soit pour exemple:
00101
x00010
- - - - - -
01010
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Représentation des informations


Sommaire

1. Introduction____________________________________________________________ 2
2. Le codage binaire _______________________________________________________ 2
2.1. La base 2 _________________________________________________2
2.2. L’Octal ___________________________________________________4
2.3. L’Hexadécimal _____________________________________________4
3. Les instructions _________________________________________________________ 6
3.1. Les données_______________________________________________6
3.1.1. Les données non numériques ______________________________6
3.1.2. Les données numériques __________________________________7
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

11.Introduction
Quelles que soient les informations manipulées par l’ordinateur celles-ci sont
codées finalement en binaire, c’est à dire à base de 0 et de 1.
Un chiffre 0 ou 1 est appelé un bit (contraction de binary digit).

L’objet de ce document est d’expliquer comment chacune des informations


manipulées par l’ordinateur est traduite en une suite de bits. On dit qu’elles
sont codées en binaire.

Ce document est un préalable au travail sur les algorithmes et permet de


mieux comprendre comment les informations sont stockées.

12.Le codage binaire


12.1. La base 2

Pour coder un nombre en base 2, il faut le décomposer en une suite de


multiples de 2. C’est à dire que l’on va l’écrire sous la forme :

X = an*2n + an-1*2n-1 + .... + a2*22 + a1*21 + a0*20

Chaque valeur an, an-1, … , a2, a1, a0 est égale à 0 ou 1.

Pour faire des conversions en binaire, il est utile de connaître le début de la


table des multiples de 2 :

20 1
21 2
22 4
23 8
24 16
25 32
26 64
27 128
28 256
29 512
210

Exemples :

12 = 8 + 4 = 1*23 + 1*22 + 0*21 + 0*20 = (1 1 0 0)2

5 = 4 + 1 = 1*22 + 0*21 + 1*20 = (1 0 1)2


ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail


27 = 16 + 8 + 2 + 1 = 1*24 + 1*23 + 0*22 + 1*21 + 1*20 = (1 1 0 1 1)2

(1 0 1 0 1 0)2 = 1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 0*20 = 32+ 8 + 2 = 42


ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

12.2. L’Octal

L’octal est le codage en base 8. Suivant le même principe on utilise les


chiffres entre 0 et 7 pour coder les nombres en octal.

X = an*8n + an-1*8n-1 + .... + a2*82 + a1*81 + a0*80

Chaque valeur an, an-1, … , a2, a1, a0 est comprise entre 0 et 7.

Pour faire des conversions en octal, il est utile de connaître le début de la


table des multiples de 8 :

80 1
81 8
82 64
83 512

Exemples :

12 = 8 + 4 = 1*81 + 4*80 = (1 4)8

121 = 64 + 56 + 1 = 1*82 + 7*81 + 1*80 = (1 7 1)8

(3 0)8 = 3*81 + 0*80 = 24

Il est intéressant de noter qu’un chiffre octal peut se coder directement en


binaire sur 3 bits.

0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

De sorte que la conversion binaire/octal et octal/binaire est très simple.

Binaire : 10 101 011 001 110

Octal : 2 5 3 1 6

Il suffit de grouper les bits par 3 en partant de la droite et de traduire.

L’Hexadécimal
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail


L’hexadécimal est le codage en base 16. On utilise cette fois les chiffres
entre 0 et 9 puis les lettres A(10) B(11) C(12) D(13) E(14) F(15).

X = an*16n + an-1*16n-1 + .... + a2*162 + a1*161 + a0*160

Chaque valeur an, an-1, … , a2, a1, a0 est comprise entre 0 et 15.

Pour faire des conversions en hexadécimal, il est utile de connaître le début


de la table des multiples de 16 :

160 1
161 16
162 256

Exemples :

18 = 16 + 2 = 1*161 + 2*160 = (1 2)16

125 = 112 + 13 = 7*161 + 13*160 = (7 D)16

(A B)16 = 10*161 + 11*160 = 160 + 11 = 171

Il est intéressant de noter qu’un chiffre hexadécimal peut se coder


directement en binaire sur 4 bits.

0 0000 8 1000
1 0001 9 1001
2 0010 A 1010
3 0011 B 1011
4 0100 C 1100
5 0101 D 1101
6 0110 E 1110
7 0111 F 1111

De sorte que, la conversion binaire/hexadécimal et hexadécimal/binaire est


très simple.

Binaire : 10 1001 0101 0001 1110

Hexadécimal : 2 9 5 1 E

Il suffit de grouper les bits par 4 en partant de la droite et de traduire


ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

13.Les instructions
Les instructions exécutables par la machine sont celles contenues dans le
jeu d’instructions du microprocesseur (voir support de cours sur la structure
de la machine).

Chacune de ces instructions possède un code opération qui permet de


l’identifier. Pour chaque instruction, on indique également des opérandes.
L’ensemble est codé sur un mot de 16 ou 32 bits suivant la machine.

COP Opérandes

Chaque instruction sait comment décoder la partie opérandes.

13.1. Les données


13.1.1. Les données non numériques

Les données non numériques correspondent aux caractères


alphanumériques (A,B,C,...,1,2,3,...,a,b,c,...) et aux caractères spéciaux
(ponctuation et autres).

Le codage est fait en utilisant une table de conversion.

Le code ASCII
Le code ASCII (American Standard Code for Information Interchange) est
celui le plus généralement utilisé dans les ordinateurs d’aujourd’hui.
Voir table en annexe.
Tout caractère est codé sur un octet, c’est à dire 8 bits.

Une donnée numérique stockée dans une variable de type caractère ou


chaîne de caractères sera codée en ASCII.

Exemples :

"an" ---> 2 octets (61)16 (6E)16 (01100001)2 (01101110)2

"12" ---> 2 octets (31)16 (32)16 (00110001)2 (00110010)2


ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Le code EBCDIC
Le code EBCDIC (Extended Binary Coded Decimal Interchange Code),
essentiellement utilisé par IBM est également un code représentant les
caractères sur un octet.

L’octet est divisé en deux demi-octets de signification différente :

ZONE NUMERIQUE
4 bits 4 bits

type de rang du caractère dans le


caractères type

Exemples :

"AN" ---> 2 octets (C1)16 (CE)16 (11000001)2 (11001110)2

"12" ---> 2 octets (F1)16 (F2)16 (11110001)2 (11110010)2

13.1.2. Les données numériques


Pour coder les informations numériques, il existe différents systèmes de
codage suivant la nature des données, l’utilisation que l’on veut en faire et
la précision souhaitée.

Les entiers positifs ou nuls


Pour coder un entier positif ou nul, on utilise le codage binaire pur. C’est à
dire que l’on convertit la donnée comme indiqué au chapitre 2.

La donnée est stockée dans un mot mémoire. Suivant la machine, un mot


mémoire a une taille variable généralement 16 bits, mais ce peut être aussi
sur certaines machines 8 bits (ex : PC-XT), 32 bits (ex : Pentium ou
Motorola), voire 64 bits (machines scientifiques).

Par conséquent les entiers que l’on peut coder avec ce système doivent être
compris entre 0 et 2n-1 (n étant le nombre de bits du mot).

Exemple : si n = 16 les entiers sont compris entre 0 et 65536

Les entiers signés

Pour coder les entiers signés, on procède de la même façon sauf que l’on
n’utilise pas le premier (ou parfois le dernier) bit du mot.
Celui-ci sert à coder le signe (1 négatif, 0 positif)

Les entiers sont alors compris entre : - (2n-1 -1) et + (2n-1 -1)
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail


Exemple : si n = 16, les entiers sont compris entre - 32767 et + 32767
Les réels en virgule flottante
On convient d’écrire les nombres réels sous la forme suivante :

X = S * M * 10E

S est le signe du nombre


M est appelé la mantisse
E est l’exposant encore appelé caractéristique

On utilise alors 4 ou 8 octets suivant la précision souhaitée pour coder le


nombre.
caractéristique : 7 bits
S E
signe
1 bit
mantisse
La mantisse fait donc 24 bits en simple précision et 56 bits en double
précision.

En simple précision un réel doit donc être compris entre :


- (224 - 1)*1063 à + (224 - 1)*1063
Pour ne pas avoir à se préoccuper du signe de la caractéristique on convient
d’ajouter 64 à la caractéristique.
De la sorte, une caractéristique codée 0 représente une caractéristique
réelle de -64 et une caractéristique réelle codée 127 représente une
caractéristique réelle de 63.

Exemples :

0,00123 = 123*10-5 bit de signe 0


caractéristique 0111011 (59)
mantisse 000000000000000001111011

-1253,12 = -125312*10-2 bit de signe 1


caractéristique 0111110
mantisse ..........

106 bit de signe 0


caractéristique 1000110
mantisse 0000000000000000000000001
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Rappels sur les fonctions logiques


Sommaire

1. Introduction____________________________________________________________ 2
2. L’algèbre de Boole ______________________________________________________ 2
2.1. Ensemble des valeurs de vérité ________________________________2
2.2. La loi ET, dite conjonction ____________________________________2
2.3. La loi OU, disjonction ou disjonction inclusive _____________________3
2.4. La loi du contraire, dite négation _______________________________3
2.5. Propriétés ________________________________________________3
2.5.1. Associativité ___________________________________________3
2.5.2. Commutativité__________________________________________3
2.5.3. Distributivité ___________________________________________3
2.5.4. Element Neutre _________________________________________3
2.5.5. Absorption _____________________________________________3
2.5.6. Simplification___________________________________________3
2.5.7. Priorité des opérateurs ___________________________________4
3. Fonctions logiques & tables de vérité________________________________________ 4
3.1. Les fonctions logiques fondamentales ___________________________4
3.1.1. Table de vérité de la négation ______________________________4
3.1.2. Table de vérité de la somme (OU)___________________________5
3.1.3. Table de vérité du produit (ET) _____________________________5
3.2. Les fonctions logiques dérivées ________________________________5
3.2.1. Le ou exclusif ou fonction exclusive__________________________5
3.2.2. L’équivalence___________________________________________5
3.3. Exemple à 3 variables _______________________________________6
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

14.Introduction
Ce document propose de revenir sur quelques notions fondamentales
relatives aux opérations et fonctions sur des variables logiques.
Le raisonnement logique et les méthodes de résolution de problèmes en
informatique s’appuient sur ces concepts de base.
Nous aborderons donc dans ce document des principes fondamentaux
relatifs au sous ensemble des mathématiques traitant des fonctions logiques
dont George Boole, un mathématicien britannique, durant le milieu du XIXe
siècle, proposa un système formel.
L'algèbre booléenne permet d'utiliser des techniques algébriques pour
traiter les expressions à deux valeurs de la logique des propositions.
L’algèbre de Boole est aujourd’hui appliqué en informatique et en
électronique.
Ce document présentera des outils utiles à la résolution de problèmes
logiques que sont les tables de vérité. Il est fondamental de maîtriser les
bases de la logique pour être en mesure d’exprimer correctement les
conditions nécessaires à l’exécution des instructions dans vos futurs
programmes.

15.L’algèbre de Boole
Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en
informatique et dans la conception des circuits électroniques. Elle fut utilisée
la première fois pour les circuits de commutation téléphoniques par Claude
Shannon.
L'algèbre de Boole des fonctions logiques permet de modéliser des
raisonnements logiques, en exprimant un « état » en fonction de conditions.
Par exemple :
Communication = Émetteur ET Récepteur
Communication est « VRAI » Si Émetteur actif ET Récepteur actif (c'est une
fonction logique dépendant des variables Émetteur et Récepteur)

15.1. Ensemble des valeurs de vérité


On appelle B l'ensemble constitué de deux éléments appelés valeurs de
vérité {VRAI, FAUX}. Cet ensemble E sera noté E = {1, 0}

Sur cet ensemble on peut définir deux lois (ou opérations ou foncteurs,
abstractions de fonctions), les lois ET et OU et une transformation appelée
le complémentaire, l'inversion ou le contraire.

15.2. La loi ET, dite conjonction


Elle est définie de la manière suivante : a ET b est VRAI si et seulement si a
est VRAI et b est VRAI. Cette loi est aussi notée « . »
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

15.3. La loi OU, disjonction ou disjonction inclusive


Elle est définie de la manière suivante : a OU b est VRAI si et seulement si a
est VRAI ou b est VRAI. (notons que si a est vrai et que b est vrai aussi,
alors a OU b est vrai.) Cette loi est aussi notée « + »

15.4. La loi du contraire, dite négation


Le contraire de "a" est VRAI si et seulement si a est FAUX. Le contraire de a
est noté non-a ou

15.5. Propriétés
15.5.1. Associativité
Comme avec les opérations habituelles, certaines parenthèses sont inutiles:
(a + b) + c = a + (b + c) = a + b + c
(a.b).c = a.(b.c) = a.b.c

15.5.2. Commutativité
L'ordre est sans importance.
a+b=b+a
a.b = b.a

15.5.3. Distributivité
Comme avec les opérations habituelles, il est possible de distribuer :
a.(b + c) = a.b + a.c
Attention : comportement différent par rapport aux opérateurs + et *
habituels :
a + (b.c) = (a + b).(a + c)

15.5.4. Element Neutre


a+0=a
a.1 = a

15.5.5. Absorption

a + a.b = a
a.(a + b) = a

15.5.6. Simplification
a+ .b = a + b

a.( + b) = a.b
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

15.5.7. Priorité des opérateurs


Les opérations logiques sont soumises aux mêmes règles que les opérations
algébriques classiques. La fonction ET (multiplication logique) est ainsi
prioritaire par rapport à la fonction OU (somme logique). On peut, pour
s'aider, placer des parenthèses dans les opérations.

Exemple :

Soient les valeurs suivantes :


a = 0;b = 1;c = 1

On cherche a.b + c = ???

Compte tenu de la priorité des opérateurs on calcule d’abord a.b :


a.b = 0.1
0.1 = 0

Puis, on calcule 0 + c :
0+c=c

c=1

Le résultat final est donc:

a.b + c = 1

16.Fonctions logiques & tables de vérité


Mathématiquement, une fonction logique ou opérateur logique est une
application de En dans E.
Une table de vérité permet de préciser l'état de la sortie en fonction des
états des entrées. Elles vous aideront dans la résolution des problèmes
logiques.
On démontre que toute fonction logique peut se décrire à l'aide des trois
opérations de base ET, OU et Négation soit ., + et -

16.1. Les fonctions logiques fondamentales


Elles sont issues des 3 opérations de bases.

16.1.1. Table de vérité de la négation


Table de vérité
de la négation
a
0 1
1 0
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail


16.1.2. Table de vérité de la somme (OU)

Table de vérité de la
somme
a b a b
0 0 0
0 1 1
1 0 1
1 1 1

16.1.3. Table de vérité du produit (ET)

Table de vérité du
produit
a b a b
0 0 0
0 1 0
1 0 0
1 1 1

16.2. Les fonctions logiques dérivées


Certaines fonctions logiques dérivées des fonctions logiques fondamentales
sont intéressantes et peuvent faire l’objet d’applications en informatique. On
en retiendra deux, le ou exclusif et l’équivalence.

16.2.1. Le ou exclusif ou fonction exclusive


Le OU étudié jusqu'à présent doit se comprendre de la manière suivante : «
l'un ou l'autre ou les deux ». Il est également appelé « OU inclusif ». Le OU
exclusif (ou XOR pour eXclusive OR) s'entend comme « l'un ou l'autre mais
pas les deux ».
Table de vérité de XOR
a b a XOR b
0 0 0
0 1 1
1 0 1
1 1 0

16.2.2. L’équivalence
L'équivalence (notée EQV) est vraie si les deux entrées ont la même valeur
et fausse sinon. Elle est appelée aussi «non-ou exclusif ».

Table de vérité de EQV


a b a EQV b
0 0 1
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail


0 1 0
1 0 0
1 1 1

16.3. Exemple à 3 variables


Prenons l'exemple du téléphone,
Décrocher le téléphone est « VRAI » si on entend la sonnerie ET que l'on
décide de répondre OU si l'on décide d'appeler. On se trouve en présence de
3 variables :

a = "le téléphone sonne"


b = "on décide de répondre"
c = "on a envie d'appeler "

la variable d = "on décroche" est donc fonction logique des 3 précédentes.


On écrira que

d = a.b + c

La table de vérité de cette fonction d est alors la suivante :

Table de vérité de on
décroche d
a b c d
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Algorithme : les opérations de base


Sommaire

1. Introduction____________________________________________________________ 2
2. La déclaration des variables _______________________________________________ 3
2.1. Les types _________________________________________________3
3. La séquence d'instructions ________________________________________________ 5
3.1. L'affectation _______________________________________________5
3.2. Les opérations arithmétiques__________________________________5
3.3. Le dialogue avec l'utilisateur __________________________________6
4. La structure alternative___________________________________________________ 6
4.1. Les conditions _____________________________________________6
4.1.1. Les opérateurs de comparaison _____________________________6
4.2. Les opérateurs logiques ______________________________________7
4.2.1. Les actions conditionnées _________________________________7
5. La structure répétitive ____________________________________________________ 7
5.1. Le TantQue _______________________________________________8
5.2. Le Faire Jusqu'à ____________________________________________8
5.3. Le Pour __________________________________________________9
6. Les tableaux____________________________________________________________ 9
17.Introduction
Il est nécessaire dans un premier temps de prendre conscience de la
difficulté que nous avons d’exprimer la solution à un problème donné de
façon complète et non ambiguë.
Dans la situation de résolution d’un problème, deux étapes :
 Qu’avons nous à faire : QUOI
 Comment allons-nous résoudre le problème : Expression du COMMENT
Deux étapes distinctes, l’analyse précédant toujours la conception.
Nous utiliserons une forme algorithmique pour exprimer le résultat de
notre analyse détaillée.

Définition d’un algorithme :

Suite d’actions que devra effectuer un automate pour arriver, en un


temps fini, à un résultat déterminé à partir d’une situation donnée.
Cette suite d’actions sera composée d’actions élémentaires que nous
allons voir ici.
Par la suite nous utiliserons un pseudo-langage, comportant toutes les
structures de base d'un langage de programmation.

Un programme est une suite d'instructions exécutées par la machine.

Ces instructions peuvent soit s'enchaîner les unes après les autres, on
parle alors de SEQUENCE D'INSTRUCTIONS; ou bien s'exécuter dans
certains cas et pas dans d'autres, on parle alors de STRUCTURE
ALTERNATIVE; ou se répéter plusieurs fois, on parle alors de STRUCTURE
REPETITIVE.
18.La déclaration des variables
Un programme exécutable est composé de deux parties :

données

instructions

La partie instructions contient les instructions à exécuter. Nous verrons


dans le chapitre suivant quelles sont les principales instructions
distinguées.
La partie données contient toutes les variables utilisées par le
programme.
Un programme exécutable est chargé dans la mémoire centrale de
l'ordinateur, les valeurs que l'on a affectées aux variables doivent être
conservées tout le temps du déroulement du programme.

Par conséquent, il faut que le programme soit capable de réserver la


place nécessaire aux variables.
Pour ce faire, les variables doivent être déclarées afin que le compilateur
sache quelle place elles vont occuper.

Les valeurs des variables sont par définition amenées à être modifiées ou
tout du moins susceptibles d’être modifiées. Elles s’opposent en ce sens à
des données immuables qui peuvent être utilisées par le programme et
qui conservent donc leur valeur tout au long de l’exécution du
programme. Celles-ci seront désignées sous le vocable de Constantes
par opposition à Variables.

18.1. Les types


Les variables que l'on utilise dans les programmes ne sont pas toutes de
même nature, il y a des nombres, des caractères, ... On dit que les
variables sont typées.
Il est nécessaire de donner un type aux variables. Cela permet d'une part
de contrôler leur utilisation (ex: on ne peut pas diviser un caractère par
un entier). D'autre part, le programme connait ainsi la place qu’il lui faut
réserver pour cette variable.
Les langages de programmation offrent à minima les types suivants :

ENTIER : il s'agit des variables destinées à contenir un nombre entier


positif ou négatif.
Dans notre langage, on écrira la déclaration des variables de type entier :

ENTIER variable1, variable2, ... ;

Généralement un entier occupe 2 octets, ce qui limite les valeurs de -


32768 à +32768.
Cependant cela dépend des machines, des compilateurs, et des
langages.
Certains langages distinguent les entiers courts (1 octet), les entiers
longs (4 octets) et les entiers simples (2 octets).

REEL : il s'agit des variables numériques qui ne sont pas des entiers,
c'est à dire qui comportent des décimales et qui sont des valeurs
approximatives.
Dans notre langage, la déclaration des variables de type réel est la
suivante :

REEL variable1, variable2, ... ;

Les valeurs numériques peuvent recouvrir bien d’autres types (décimal,


flottant, …)

CARACTERE : Les variables de type caractère contiennent des


caractères alphabétiques ou numériques (de 0 à 9), mais dans ce cas ils
ne sont pas considérés comme étant des nombres et on ne peut pas faire
d'opérations dessus.
Un caractère occupe un octet.
Dans notre langage, une variable de type caractère se déclare ainsi :

CAR variable1 , variable2 , ...;

N.B. : les chaînes de caractères, dans notre langage, sont des tableaux
de caractères (voir 1.6.2)

BOOLEEN : Il est souvent nécessaire lorsque l'on écrit un programme


d'introduire des variables qui prennent les valeurs VRAI ou FAUX ou les
valeurs OUI ou NON.

Pour cela, il existe un type particulier dont les variables ne peuvent


prendre que 2 valeurs : VRAI ou FAUX.
Dans notre langage, la déclaration s'écrit :

BOOLEEN variable, variable, ... ;


19.La séquence d'instructions
Une instruction est une action que l'ordinateur est capable d'exécuter.
Chaque langage de programmation fournit une liste des instructions qui
sont implémentées et que l'on peut donc utiliser sans les réécrire
Dans notre pseudo-langage, nous aurons une liste minimum
d'instructions, nécessaire et suffisante pour les programmes que nous
aurons à écrire. Cette liste est bien entendu moins fournie que celle que
proposerait un langage informatique opérationnel.

19.1. L'affectation

Variable <-- Valeur

Ce qui se lit "variable reçoit valeur" et qui signifie que l'on mémorise la
valeur à un endroit nommé variable.

Par exemple : i <-- 1 Termine <-- VRAI

19.2. Les opérations arithmétiques


Les opérations arithmétiques courantes, addition, soustraction,
multiplication et division s'écrivent ainsi :

variable <--val1 + val2


variable <-- val1 - val2
variable <-- val1 * val2
variable <-- val1 / val2

On doit toujours affecter le résultat d'une opération dans une variable.


19.3. Le dialogue avec l'utilisateur
Pour permettre au programme de dialoguer avec l'utilisateur, c'est à dire
d'afficher un résultat à l'écran et de lire une entrée au clavier, il faut au
moins deux instructions une pour lire, l'autre pour afficher.

Dans le pseudo-langage, elles s'écrivent ainsi :

LIRE Variable
AFFICHER Texte Variable Variable Texte ...

La première lit tous les caractères qui sont saisis au clavier, jusqu'à ce
que l'utilisateur appuie sur la touche entrée, et stocke le résultat dans la
variable.

La seconde affiche sur l'écran le ou les textes et la valeur des variables.

AFFICHER "Quel est ton nom ? "


LIRE nom_utilisateur
AFFICHER "Ton nom est : " nom_utilisateur ". Le mien est TOTO"

20.La structure alternative


Il est souvent nécessaire lorsque l'on écrit un programme de distinguer
plusieurs cas conditionnant l'exécution de certaines instructions. On
utilise alors une structure alternative : si on est dans tel cas, alors on fait
cela sinon on fait ceci.

La syntaxe de cette instruction est la suivante :

SI condition ALORS actions [ SINON actions] FSI

Les crochets signifient que la partie SINON actions est facultative.

SI (a < 0) ALORS ABS<-- a*(-1) SINON ABS <-- a FSI


SI (a <> 0) ALORS RES <-- B/a FSI

20.1. Les conditions


20.1.1. Les opérateurs de comparaison
Pour exprimer les conditions on utilise les opérateurs conditionnels
suivants :
 = égal
 < inférieur
 supérieur
 <= inférieur ou égal
 >= supérieur ou égal
 différent
(a<1)
(toto <> titi)

20.2. Les opérateurs logiques

Ils peuvent être combinés pour exprimer des conditions complexes.


Les opérateurs logiques sont les suivants :

 ET
 OU
 NON
 XOR(ou exclusif)

Pour qu’une condition dont les deux membres sont reliés par un ET soit
vraie, il faut que les deux membres soient vrais. Avec le OU que l’un ou
l’autre soit vrai. Le NON exprime la négation du vrai. Avec l’opérateur
XOR, il faut que l’un ou l’autre soit vrai mais pas les deux.

(a<2) ET ((b = 0) OU (c <>a)) XOR (d = 1))

Lorsque l'on écrit de telles conditions, il est recommandé de mettre


toutes les parenthèses afin d'éviter les erreurs. Les parenthèses précisent
que l’on doit d’abord évaluer ce qui se trouve entre les 2 parenthèses.

20.2.1. Les actions conditionnées

Les actions qui suivent le SINON ou le ALORS peuvent être :


 - une simple instruction
 - une suite d'instructions séparées par des ;
 - une autre alternative
 - une répétitive

21.La structure répétitive


Un programme a presque toujours pour rôle de répéter la même action
un certain nombre de fois. Pour ce faire on utilise une structure
permettant de dire " Exécute ces actions jusqu'à ce que telle condition
soit remplie".

Bien qu'une seule soit nécessaire, la plupart des langages de


programmation proposent trois types de structure répétitive.
Voici celles de notre pseudo-langage.
21.1. Le TantQue

TantQue condition
Faire actions
FTQ

Ce qui signifie : tant que la condition est vraie, on exécute les actions.

fini <-- FAUX;


TantQue (NON fini)
Faire
i<-i+1;
SI (x/i < epsilon)
ALORS fini <-- VRAI
SINON x <-- x/i
FSI
FTQ

21.2. Le Faire Jusqu'à

FAIRE
actions
JUSQUA condition

Ce qui signifie que l'on exécute les actions jusqu'à ce que la condition soit
vraie.

fini <-- FAUX;


Faire
i <-i+1;
SI (x/i < epsilon)
ALORS fini <-- VRAI
SINON x <-- x/i
FSI
Jusqua (fini = VRAI);
21.3. Le Pour

Très souvent, on utilise une structure répétitive avec un compteur et on


s'arrête lorsque le compteur a atteint sa valeur finale.

i <-- 1
TantQue (i < 10)
Faire
p <-- p*x
i <-- i+1
FTQ

C'est pourquoi la plupart des langages de programmation offrent une


structure permettant d'écrire cette répétitive plus simplement.
Dans le pseudo-langage c'est la structure POUR :

POUR variable ALLANT DE valeur initiale A valeur finale [PAS valeur du pas]
FAIRE actions
FinPour

Lorsque le PAS est omis, il est supposé égal à +1.

POUR i ALLANT DE 1 A 10
FAIRE
p <-- p*x
FinPour

22.Les tableaux
On peut regrouper plusieurs variables sous un même nom, chacune étant
alors repérée par un numéro. C'est ce que l'on appelle un tableau. On
peut faire un tableau avec des variables de n'importe quel type.
Dans tous les cas le ième élément d'un tableau appelé TAB sera adressé
par TAB(i).
Généralement on fait des tableaux à une dimension, mais il existe
également des tableaux à deux dimensions, dans ce cas TAB(i,j)
représente la jème colonne et la ième ligne.

TABLEAU type variable [ longueur ] ;

TABLEAU CAR mot[10];


TABLEAU ENTIER liste_nb[25];
TABLEAU CAR MOTS[10][20];

S-ar putea să vă placă și