• Aucun résultat trouvé

1 – Généralités UEO11 COURS/TD 1

N/A
N/A
Protected

Academic year: 2022

Partager "1 – Généralités UEO11 COURS/TD 1"

Copied!
16
0
0

Texte intégral

(1)

UEO11 COURS/TD 1

Contenu du semestre

Cours et TDs sont intégrés

L’objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l’algorithmique

- notions de bases de programmation

variables simples, entrées sorties basiques - choix et itérations

- tableaux 1D

Il faut tenir compte du fait que cet enseignement concerne aussi bien des étudiants qui se destinent a faire de la biologie qu’a des étudiants qui s’orienteront vers les mathématiques ou l’informatique….

Il n’y a pas de note de TP mais la présence en TP est obligatoire (appel) et vital pour comprendre l’enseignement et réussir aux contrôles !

1 – Généralités

1-1 L’informatique

Science du traitement de l’

infor

mation auto

matique

ment

« Ensemble de techniques de collecte, de tri , de mise en mémoire, de transmission et de

l’utilisation des informations traitées automatiquement à l’aide de programmes mis en œuvre sur ordinateur. »

Exemple d’informations :

nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux….

Le traitement de l’information consiste à partir d’une information de départ de produire par traitement une nouvelle information de sortie.

(2)

1-2 L’ordinateur

Un ordinateur est une machine qui permet d'effectuer des traitements sur des données à l'aide de programmes. Les données (les paramètres du problème, par exemple les notes des étudiants du cours d'informatique) ainsi que le programme (par exemple le calcul de la moyenne des notes) sont fournis à la machine par l'utilisateur au moyen de dispositifs de saisie (le clavier par exemple). Le résultat du traitement est recueilli à la sortie de l'ordinateur (l'écran, l’imprimante) sous forme de texte par exemple.

Nous allons étudier maintenant comment est codée l’information dans la mémoire centrale et dans la mémoire auxiliaire.

(3)

2 - Le codage binaire de l’information

Toute l'information qui transite dans un ordinateur est codée avec des bits ( Binary digIT) ne prenant que les valeurs 0 et 1. L’information est donc toujours discrète

Par exemple pour coder le nombre 13 en binaire, il faut les quatre chiffres binaires 1101. En effet 13 peut être décomposé comme une somme de puissances de 2

13 = 8 + 4 + 1

= 1 * 8 + 1 * 4 + 0 * 2 + 1 * 1 en décimal

= 1 * 23 + 1 * 22 + 0 * 21 + 1 * 20 on ne conserve que les coefficients = 1 1 0 1 en binaire

Question avec n bits combien de codes différents obtient on ? 2n

2.1 Représentation des informations en binaire

Pour coder de l'information , que ce soient des nombres, (PI=3,141592...), du texte (ce cours), des schémas, des images, des sons, des relations ("Pierre est le père de Jacques et le frère de Marie"), les circuits électroniques d'un ordinateur ne peuvent utiliser que des informations en binaire.

Montrons d'abord comment il est possible de coder n'importe quel nombre entier naturel IN={0, 1, 2, 3, ... ,1 000, ..., 1 000 000, ...} en binaire.

Puis nous en ferons autant pour les entiers signés les décimaux et les caractères. Enfin il faudra montrer que les images, les sons … peuvent aussi se coder en binaire.

2.1.1 Passer du décimal au binaire

Il suffit de décomposer un nombre décimal en une somme de puissances de 2. On peut par exemple commencer par écrire la table des premières puissances de 2 :

20 = 1 21 = 2 22 = 2x2 = 4 23 = 2x2x2 = 8

24 = 16 25 = 32 26 = 64 27 =128

28 = 256 29 = 512 210 = 1024 = 1K 211 =2048 …….

(4)

Ex calculer la valeur binaire de 37 en base 10 : 37 2

1 18 2 0 9 2 1 4 2

0 2 2 0 1

37 == 2 x ( ( 2 x 9 ) + 0 ) + 1 == 2 x ( ( 2 x ( 2 x 4 + 1 ) ) + 1

== 1 x 25 + 1 x 22 + 1 x 20 == 1 x 25 + 0 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20 soit en base 2 : 1 0 0 1 0 1

Exercice : Montrer que le nombre 131 est une somme de puissances de 2 Reponse : 10000011

Exercice : Donner la représentation binaire des 10 premiers nombres entiers : 0 = 0x20 -> 0; 1=1x20 -> 1 ; 2=1x21 -> 10

3 = 1x2 + 1x1 = 1x21 + 1x20 -> 11

4 = 1x4+ 0x2 + 0x1 = 1x22 + 0x21 + 0x20-> 100 5 = 1x4 + 0x2 + 1x1 =

6 = 7 = 8 = 9 = 10 =

2.1.2 Passer du binaire au decimal

Le codage binaire a un inconvénient majeur pour l'être humain, son manque de lisibilité...

Quelle est la représentation décimale du nombre dont la représentation binaire est : 1001 1110 ?

(5)

Réponse : 1x27+ 0x26 + 0x25 +1x24 + 1x23 + 1x22 + 1x21 + 0x20

= 1x128 + 0x64 + 0x32 +1x16 + 1x8 + 1x4 + 1x2 + 0x1

= 158

Exercice : Combien de chiffres binaires faut-il pour représenter le nombre décimal 10000 ? Reponse : 14

211=2048 212=4096 213=8192 214=16384

2.2 Opérations usuelles en binaire

Les deux opérations binaires de base sont

l'addition

la multiplication

Table d'addition binaire 0 + 0 = 0

0 + 1 = 1 1 + 0 = 1

1 + 1 = 0 avec une retenue de 1

Table de multiplication binaire 0 x 0 = 0

0 x 1 = 0 1 x 0 = 0 1 x 1 = 1

Exercice :

En utilisant la table d'addition binaire calculez en binaire les nombres suivants : 1001 + 10100

1111 + 1

1111 1111 + 1111 1111

(6)

2.3 Opérations logiques

En logique binaire une variable logique (booléenne) est VRAI (TRUE = 1) ou FAUSSE (FALSE

= 0). Une expression logique est constituée de plusieurs variables logiques combinées par des connecteurs (opérateurs) logiques :

Les opérateurs logiques élémentaires sont : - NON [NOT]

- ET [AND]

- OU [OR]

Table de vérité du OU 0 OU 0 = 0 0 OU 1 = 1 1 OU 0 = 1 1 OU 1 = 1

Table de vérité du ET 0 ET 0 = 0 0 ET 1 = 0 1 ET 0 = 0 1 ET 1 = 1

Table de vérité du NON NON 0 = 1 NON 1 = 0

Exercice : Donner la valeur de vérité {VRAI ou FAUX} des assertions suivantes :

« 102 est un nombre pair » ET « 102 est divisible par 3 » « 11 est multiple de 3 » ET « 102 est divisible par 3 » « 108 est multiple de 9 » OU « 11 est divisible par 3 »

2.4 Codage des nombres entiers et des nombres réels décimaux

L'ensemble des entiers naturels : IN = {0,1,2,3 ,4 ,……..} - IN est ordonné ; il a un plus petit élément 0 ;

- Il n'y a pas de plus grand élément : tout élément a un successeur L'ensemble des entiers relatifs : Z = Z+ U Z-

Z= {...,-3,-2,-1, 0, 1,2,...}

(7)

- Z est ordonné

- il n'y a ni plus grand ni plus petit élément : tout élément de Z a un prédécesseur et un successeur.

2.4.1 Opérations sur les entiers

Opérateurs unaires :

- (moins)

: opposé

Opérateurs binaires :

+

-

*

DIV

MOD

/

Opérateurs de comparaison :

=

<

<=

>

>=

2.4.2 Implémentation des entiers non signés

En raison des limitations d'espace mémoire, on ne peut représenter que quelques nombres.

Par exemple si on dispose d’un mot mémoire de 16 bits ( soit deux octets) pour représenter des nombres par exemple alors les différents contenus possibles de la mémoire sont les suivants :

Contenu mot valeur en décimal

0000 0000 0000 0000 0

0000 0000 0000 0001 1

0000 0000 0000 0010 2

0000 0000 0000 0011 3

0000 0000 0000 0100 4

0000 0000 0000 0101 5

………..

………..

………..

(8)

1111 1111 1111 1100 65 532

1111 1111 1111 1101 65 533

1111 1111 1111 1110 65 534

1111 1111 1111 1111 65 535

en fait il y a 216 = 65 536 codes différents et si on veut utiliser un mot mémoire pour coder des informations on sait qu’avec un mot mémoire on ne peut coder que 65536 « choses »

différentes.

Supposons maintenant qu’on se pose le probléme de coder tous les entiers positifs ou nuls sur ordinateur.

Le nombre d’éléments de cet ensemble est infini….pour coder tous les entiers il faudrait donc un nombre infini de bits… et donc une mémoire centrale infinie….ce qui est impensable ! Donc on ne pourra jamais coder tous les entiers positifs.

Si on prend un mot on ne peut coder que 65536 choses différentes et donc 65 536 entiers sur l’infinité d’entiers possibles .

Si on prend les entiers positifs on a choisi bien sur que

0 c’est le mot mémoire 0000 0000 0000 0000 ……

……….65 335 c’est le mot mémoire 1111 1111 1111 1111

Exemple pour n = 54710

On décompose 547 en puissances successives de 2 :

54710= 512 + 32 + 2 + 1 = 1*29 +1*25 +1*21 +1*20

et on ne code que les coefficients de la décomposition, la représentation binaire de n est Bin(n) = 0000 0010 0010 0011

Le plus grand nombre entier non signé représentable est donc : 1111 1111 1111 1111

= 1*215 +1*214 +1*213 +1*211 +1*210 +1*29 +1*28

(9)

+ 1*27 +1*26 +1*25 +1*24 +1*23 +1*22 +1*21 +1*20

= 1*216 - 1

La représentation décimale de ce nombre est donc Dec(n) = 65 536 - 1 = 65 53510

les entiers positifs strictement supérieurs à 65 535 ne sont donc pas représentables…..

Maintenant si on prend deux entiers codables par exemple 65 533 et 5 …… Si on veut faire la simple somme et coder le résultat dans un mot on aura un résultat faux

Preuve :

65 533 soit en binaire 1111 1111 1111 1101

5 soit en binaire 0000 0000 0000 0101

--- somme 1 0000 0000 0000 0010

Il reste donc dans le mot mémoire contenant le résultat 0000 0000 0000 0010 soit le codage du nombre 2 ce qui n’est pas le bon résultat…..

Il y a eu ce qu’on appelle un dépassement de capacité et le résultat placé dans un mot est faux !

Donc déjà on voit que quand on fait des calculs sur les entiers il faut prévoir les cas ou il y aura dépassement de capacité.

Les difficultés à résoudre pour les entiers quelconques sont donc les suivantes : quels entiers sont représentés et comment représenter les négatifs et par conséquent le signe.

Exercice TD :

Indiquer quels sont les entiers non signés représentables sur un double mot, soit 4 octets Rep : ils vont de 0 à 232-1 soit de 0 à 4 294 967 295

(10)

2.4.3 Implémentation des entiers signés

Nous allons étudier la représentation des entiers signés sur deux octets

Le problème ici est que d’une part il faut représenter la valeur absolue et d’autre part le signe.

Quand on dispose d’un mot mémoire et qu’on fait l’hypothèse qu’il code un entier signé il faut pouvoir reconnaître le signe (+ /-), et donc il est obligatoire qu’un bit sur les 16 bits disponibles sera utilisé pour coder le signe. C’est le bit de gauche (dit de fort poids) qui est utilisé :

S’il vaut 1 alors le nombre codé est négatif S’il vaut 0 alors le nombre codé est positif

Une représentation utilisée sur les premières machines consistait à coder d’une part le signe sur un bit , d’autre part la valeur absolue sur les 15 bits restants :

On code donc le signe 0/1 puis sur 15 bits la valeur absolue qui va donc de 0 à 215-1 (=32 767) On peut donc coder ainsi de –32 767 à + 32 767

Inconvénients de ce codage :

- le 0 est codé deux fois +0 0000 0000 0000 0000 -0 1000 0000 0000 0000 - l’additionneur de l’unité centrale est complexe :

ex 1 + (-3) s’écrit si l’on pose l’opération d’addition binaire classique:

0000 0000 0000 0001 1000 0000 0000 0011 --- somme 1000 0000 0000 0100

ce qui serait le codage de –4 ….le résultat est donc faux

Le codage des entiers signés se fait actuellement en « complément à 2 » :

(11)

Soit un nombre n de Z.

Si le nombre est positif et inférieur ou égal à 215 –1 (32 768) on le représente comme un entier non signé.

Si le nombre est négatif et supérieur ou égal à -215 (-32768), le problème est de représenter le signe et de pouvoir passer d'un nombre à son opposé de façon simple.

Une méthode très répandue est la méthode du complément à 2. On travaille MODULO 216 On représente Bin(216+ n) = 65 536 - 547 = 64 989

= 1111 1101 1101 1101

Une vérification de l'expression calculée consiste à effectuer une somme bit à bit de 547 et de –547

Si la représentation est correcte on doit trouver 0 : 0000 0010 0010 0011 + 1111 1101 1101 1101 _____________________________

résultat 0000 0000 0000 0000

Le report (ou retenue) n'est bien sûr pas représenté.

Donc un nombre entier signé représenté sur 16 bits dont le bit de poids fort est à 1 doit être considéré comme un nombre NEGATIF : sa valeur est -(216- Dec(n2))

Algorithme de conversion d'un nombre en binaire complément à 2 sur un octet : Trouver l'opposé d'un nombre en complément à 2 :

Soit n = 0000 0101 = 5

Son opposé est -5 obtenu en inversant tous les 1 en 0 et tous les 0 en 1 et en ajoutant 1:

0000 0101 --> 1111 1010 + 1 = 1111 1011 = -5 Vérification :

5 + (-5) = 0 0000 0101 + 1111 1011 ---

0000 0000 report ignoré

Exercice :

Trouver les représentations binaires en complément à deux sur deux octets des nombres suivants :

31000; -31000 . faire l’addition binaire des deux représentations …conclusion par rapport

(12)

au codage signe+ valeur absolue ?

-33000 est-il représentable ? pourquoi peut on représenter -32 768 quel est le codage de 0 (essayer +0 et –0)

Les nombres réels

( ne pas faire en cours !!)

L'ensemble IR ne peut pas être représenté de façon complète en machine.

On retrouve les mêmes difficultés pour représenter les réels que pour représenter les entiers : l'ordinateur n'a pas une mémoire infinie. On représente donc un sous-ensemble fini de IR.Mais on essaye de représenter a la fois des nombres très grands , des très petits et ceux « d’usage courant »

En général quand on code un nombre réel, il y’aura donc une erreur ( le réel sera codé à

«

ε

prés ») .

Opérations sur les réels :

Opération unaire : - (opposé) Opérations binaires :+ - * / Comparaisons = < > <= >=

Fonctions réelles : cos sin log puiss sqrt La notation scientifique normalisée

On appelle notation normalisée d'un réel celle où le premier chiffre significatif est placé immédiatement après la virgule (ou le point décimal).

Exemple : 1989 = 0.1989 E4

Pour stocker ce nombre en mémoire, il suffit de stocker les informations : exposant 4 et la partie décimale appelée mantisse 1989

Exemple : écrire PI en notation normalisée

π

= 3.1415926535... = 0.31415926535 E1

Représentation des nombres réels en binaire

Tout nombre réel peut être représenté dans une base quelconque : a = 0.M * Be

avec B : base ; e : exposant ; M : mantisse (qui peut être une suite infinie de chiffres...) En notation normalisée on a les conditions :

(13)

(1/B) <= | M | < 1 ou bien M=0 en base 2 a = 0.M * 2e

exemple : 1101,1 qui vaut 13,5 en décimal s’écrit suivant cette convention : 0 , 11011 x 2 4

en mélangeant écriture binaire et décimale

Les réels sont représentés en machine selon un standard défini par l' IEEE Un réel est décomposé en

signe + - s

exposant caractéristique E partie décimale mantisse F

x = (-1)

s *

2

E-127 *

1, F

En général on représente un réel sur 4 octets (32 bits)

le bit 0 de poids fort (le plus à gauche) est le signe s, soit 0 (positif) ou 1 (négatif)

les bits 1 à 8 sont la caractéristique E qui est représentée par un entier binaire sur 8 bits décalé de la valeur 127

les bits 9 à 31 sont pour exprimer la mantisse F en binaire,

Exemple : 0.8 sera codé : s=0 E=126 F

. ... ...

0 01111110 10011001100110011001100 codage binaire . ... ...

0 1 8 9 31 n° de bit Décomposition d'un nombre réel décimal en binaire

Soit le nombre 0.8 à convertir en binaire.

On constate d’abord que son signe est positif, donc S=0.

On cherche ensuite à le décomposer en une somme de puissances de 2.

0.8 = 20 x 0.8

(14)

0.8 x 2 = 1.6 donc 0.8 = 1.6 / 2 = 2-1 x 1.6 = 2-1 x 1 + 2-1 x 0.6 0.6 x 2 = 1.2 donc 0.8 = 2-1 x 1 + 2-2 x 1.2

0.2 x 2 = 0.4 donc 0.8 = 2-1 x 1 + 2-2 x 1 + 2-3 x 0.4

0.4 x 2 = 0.8 donc 0.8 = 2-1 x 1 + 2-2 x 1 + 2-3 x 0 + 2-4 x 0.8

0.8 x 2 = 1.6 donc ... on retrouve une expression déjà rencontrée qui va se répéter infiniment 0.8 = (-1)0x 1. 10011001100110011.... x 2-1

Finalement on ne code que les chiffres binaires de la décomposition : signe = 0 car 0.8 est positif

E = 126 car 126-127 = -1 F = 10011001100110011....

Montrer qu’on a ainsi codé non pas 0,8 mais une valeur très approchée de 0,8 Exemple 2 : 0.75 en base 2 donnera

0.75 x 2 = 1.5 donc 0.75 = 2-1 x 1.5

0.5 x 2 = 1.0 donc 0.75 = 2-1 x 1 + 2-2 x 1.0

0.75 = (-1)° x 2 126-127 x 1.10000000000000000000000

Exercice : Montrer que le nombre décimal 0.1 n’a pas de représentation finie en binaire.

Combien de nombres réels sont ils représentés sans erreur ?

Réels en double précision

En augmentant le nombre d'octets attribués à la représentation des réels, on améliore la précision en consacrant plus de bits à la mantisse, mais on n'augmente pas l'intervalle des réels représentés car on conserve le même nombre de bits pour la caractéristique.

Codage des informations non numériques Textes

Les textes peuvent être représentés en binaire à condition d'associer à chaque lettre de l'alphabet une représentation numérique, par exemple son rang dans l'ordre alphabétique : A serait codé1 ; B,de rang 2 serait codé 10 en binaire; C codé 11, etc. Mais ce codage est insuffisant car il faut aussi pouvoir coder les signes de ponctuation . , ; ? ! , distinguer les minuscules des

MAJUSCULES, les caractères accentués, etc.

La table ASCII (American Standard Code for Interexchange Information) propose un codage de 128 caractères différents sur 7 bits. Dans la table ASCII la lettre A est codée 65, B est codé 66, C

(15)

est codé 67, ... Z est codé 90, a est codé 97, b est codé 98, ... 0 est codé 48, 1 est codé 49, ... 9 est codé 57, ...

Les caractères accentués des langues européennes ont nécessité l'ajout d'un huitième bit de codage, d'où la table ASCII étendue avec 256 caractères.

Exercice : Donner le contenu binaire d’un octet contenant le code ASCII du ‘a’

C’est la valeur 97 en base 10 soit 1100001 en binaire D’ou 01100001

Quelques définitions sur le stockage et le codage :

1 octet ou byte :

ensemble de 8 bits 1 mot mémoire :

le mot mémoire est une unité de stockage de base pour un ordinateur.

Chaque ordinateur dispose d’une taille de mot mémoire particulière en général les PC actuels ont des mots mémoire de 32 bits soit 4 octets, mais certaines machines ont des mots mémoire plus grands.

(16)

La taille d’une mémoire centrale ou d’un autre support d’information s’exprime en nombre d’octets. Ced nombre est toujours une puissance de 2

Ex : 1 Koctet -> kilo octets -> 1024 octets -> 210 octets 1 Moctets -> méga octets -> 1024 koctets -> 220 octets 1 Goctets -> gigaoctets -> 1024 Moctets -> 230 octets 1 Toctets -> teraoctets ………

quelques mots clé du langage C ( ensupposant être sur une machine à mots de 16 bits ?)

code ASCII 8 bits char

entiers signés 16 bits short entiers signés 32 bits int

entiers non signés (16/32) unsigned (short/:int) flottants IEEE 32 bits float

flottants IEEE 64 bits double

Références

Documents relatifs

Cette person- nalité se retrouve aussi dans le jeu de Gaëtan Laborde, comme le souligne son agent : « Ce n’est pas l’attaquant le plus doué du championnat et il est par-

Les calculatrices sont autorisées, toutefois, tous les calculs formels nécessaires pour obtenir un résultat doivent fignrer sur la copie.. Si, au cours de l'épreuve,

non, je prends aussi du lait, s’il vous plaît 14?. voilà mademoiselle, et

Ainsi, il nous appartient de traiter – plus que jamais – nos collections avec égards, conscients qu’elles seront demain les témoignages des écosystèmes du passé

Pourquoi le père Doutreleau a-t-il jeté le cartable de son fils dans le puits de la ferme («à la baille »).. Comment a

La société Ahouandjinou a demandé au tribunal administratif de Dijon d'annuler l'arrêté du 3 juin 2016 par lequel le préfet de la Côte-d'Or l'a mise en

Les textes cités en référence aménagent le régime de protection des mineurs accueillis hors du domicile parental à l'occasion des vacances, des congés professionnels et des

Ils permettent d’analyser le comportement de ceux- ci lorsqu’on les stimule avec une entrée sinusoïdale dont on ferait varier la pulsation (donc la fréquence). L’étude