Vous êtes sur la page 1sur 6

Introduction la programmation - Marc Jachym Licence professionnelle Mtrologie dimensionnelle et qualit IUT de St enis!

Uni"ersit #aris $%

Introduction la programmation
Rappels sur le fonctionnement d'un programme informatique

Programme informatique ? &'est un ensem(le rigoureusement organis d'ordres donns un ordinateur pour lui indiquer une t)che accomplir* #lus prcisment c'est le microprocesseur qui traite les ordres! que l'on appelle instructions* +oici un e,emple d'instruction lmentaire -

.origine du diagramme - M* /oughanem! Uni"ersit #aul Sa(atier! Toulouse0

$12

+oir sur le diagramme ci-dessous l'architecture gnrale d'un processeur -

.origine du diagramme - M* /oughanem! Uni"ersit #aul Sa(atier! Toulouse0

et ci-dessous l'architecture glo(ale d'un ordinateur -

.origine du diagramme - M* /oughanem! Uni"ersit #aul Sa(atier! Toulouse0

312

Les diffrentes parties de la mmoire utilises par un programme Le processeur e,cute des instructions qui sont lues en mmoire centrale sur des donnes qui sont galement lues en mmoire centrale* Lors de l'e,cution d'un programme! celui-ci est d'a(ord charg en mmoire .par l'intermdiaire du syst4me d'e,ploitation et au tra"ers d'une 5unit d'change6 permettant d'accder au disque dur ou une cl US/ par e,*0* 7nsuite le programme "a placer des donnes en mmoire en e,ploitant trois types de 8ones $1 une zone statique qui est directement lie l'espace mmoire occup par le programme lui-m9me .pour les "aria(les glo(ales d: connues au moment du chargement du programme en mmoire0 31 une zone dynamique appele tas .ou ; heap < en anglais0 pour la rser"ation dynamique d'espace mmoire au moment de l'e,cution* &ette 8one partage par l'ensem(le des programmes chargs en mmoire un instant donn est gre par un 5gestionnaire de mmoire dynamique6 li au syst4me d'e,ploitation* %1 une zone dynamique appele pile ! propre chaque programme s'e,cutant en mmoire et o= sont places des donnes temporaires - les "aria(les locales et les arguments des sous-programmes*

>emarque - pour 9tre plus prcis il faudrait distinguer dans le "oca(ulaire le programme qui est la suite d'instruction crite par le programmeur! et le processus qui correspond l'e,cution d'un programme en mmoire un instant donn* &'est au processus que sont associes les 8ones mmoires*

%12

+oici une illustration de la rpartition mmoire pour deu, programmes .ou plus prcisment deu, processus0 -

diagramme : diffrents types de gestion mmoire

1/ En Assembleur ans un programmes informatique en langage machine ou assem(leur! le programmeur g4re luim9me la mmoire en accdant des adresses concr4tes de la mmoire physique* 7, start stop BL BL MOV L&$ !V+ L&$ L&$ L&$ B8 func1 func2 r0, #0x18 r1, '0x2002( #0x12,-.( r0, '-2 r1, '0x........ r2, '0x66666666 lr ; Branch to first subroutine ; Branch to second subroutine ; angel !"#reason $eport%xception ; )&* !topped )pplication%xit ; )$M se/ihosting 0for/erl1 !"#2 ; ; ; ; '3 MOV $0, #-2 '3 L&$ $1, 4*+, #offset to Literal *ool 15 '3 MV7 $2, #0

func1

?12

L9O$: func2 L&$ r,, '0x........

; Literal *ool 1 contains ; literal Ox........ ; ; ; ; ; '3 L&$ $,, 4*+, #offset to Literal *ool 15 #f this is unco//ented it fails, because Literal *ool 2 is out of reach

; L&$ r-, '0x((((((((

ans l'e,emple prcdent! les instructions L > acc4dent directement des adresses en mmoire*

2/ En langage de !me gnration "omme le langage # Le programmeur acc4de la mmoire par l'intermdiaire de "aria(les sym(oliques* &haque "aria(le a un type prcis qui doit 9tre e,plicitement indiqu par le programmeur* Le type indique au compilateur .le logiciel qui transforme le programme source crit par le programmeur en langage machine e,cuta(le par le processeur0 comment il de"ra traiter la donne correspondante .comme un nom(re! comme un caract4re te,tuel!etc0 e, int i@ 11 dclaration d'un integer .par e,emple %3 (its0 long "al@ 11 dclaration d'un entier long .par e,emple 2? (its0 char ma&haineABC @ 11dclaration d'un ta(leau de B caract4res et rser"ation de 11l'espace mmoire .statique0 correspondant int D pt@ 11 dclaration d'un pointeur reprsentant une adresse en mmoire pt E malloc .si8eof.int0D$FFF0 11 rser"ation de place mmoire pour $FFF entiers la ligne ci-dessus correspond une instruction .les autres taient des dclarations0 une 8one de $FFF fois la taille d'un entier est rser"e! par le gestionnaire de mmoire dynamique du syst4me! au moment o= le processeur rencontre cette instruction .rser"ation dynamique0* ptAFC E $3B @ 11 on place la "aleur enti4re $3B au d(ut de la 8one prcdente ptA?C E i@ 11 la "aleur de i est place en cinqui4me postion dans la 8one prcdente free.pt0@ 11 quand le programmeur a fini d'utiliser la 8one de mmoire dynamique! il 11 doit ordonner au gestionnaire de mmoire dynamique de li(rer l'espace*
B12

/ A$e" les langages dynamiques ou langages de s"ripts %P&p' Pyt&on' () &e sont des langages interprts .les langages de scripts sont au:ourd'hui prcompils en 5(ytecode6 lors de leur premi4re e,cution mais ils restent des langages interprts car le (ytecode n'est pas du langage machine! c'est un langage intermdiaire0* ans le cas des langages interprts! il n'y a pas de phase de traduction prala(le du programme en code machine* L'interprteur du langage est un logiciel qui lit un programme crit dans ce langage et traduit les instructions ; la "ole <! une une! et les e,cute directement* Les langages dynamiques modernes sont tr4s "olus* 7n particulier le programmeur est dispens compl4tement de la gestion de la mmoire* Toute rser"ation de mmoire est effectue dynamiquement par l'interprteur au moment o= une nou"elle "aria(le est utilise* Le programmeur ne dclare pas non plus les types des "aria(les* &'est l'affectation des "aria(les qui dtermine leur type* e plus! ces langages (nficient de types ta(leau, .ou collections0 tr4s "olus et simples manipuler* La contrepartie de ces facilits offertes au programmeur est une moindre rapidit d'e,cution par rapport au, langages compils comme le &* &ela est compens en partie par la tou:ours plus grande rapidit des processeurs*

Exemple en Python
ma&haine E Gune quelconque stringG@ maListe E AGchaine de caracteres $G! Gautre stringG! Gune troisi4me chaineGC maListe*append.ma&haine0 n(7lem E len.maListe0 print.GMa liste comporte Hd lmentsInG H n(7lem0 for elem in maListe print.elemJGInG0 Kn remarquera la facilit de crer un ta(leau .une liste0 de chaines de caract4res en l'initialisant a"ec trois chaines puis ensuite d'y ra:outer une nou"elle chaine sans aucune rser"ation mmoire prala(le par l'instruction maListe*append.ma&haine0 &'est l'interprteur #ython qui se charge de tout L Une r4gle cependant - on ne peut pas utiliser de "aria(le a"ant de l'a"oir affecte*
212