[PDF] [PDF] Sémantique dun programme impératif C++

4 Variables globales / Locales 5 État d'un programme : Pile d'appel 6 Passage de paramètres Passage par valeur Passage par référence Les pointeurs



Previous PDF Next PDF





[PDF] Chapitre 9 Passage de paramètres

par adresse (existe aussi dans le langage C) ▫ par référence (uniquement dans les langages C++ et Java1) 1 Java : passage par valeur pour les primitifs et 



[PDF] INF 321 Les fonctions, passage par valeur/référence, types produits

10 mai 2012 · Passage par valeur/référence Ce que l'on voudrait, c'est passer la référence aux variables a et b plutôt que simplement leurs valeurs; pour 



[PDF] /* Exercice 1 Echange de deux valeurs Ecrire une fonction Echange

Ecrire une fonction Echange qui réalise l'échange de deux valeurs entières passées en argument */ #include void Echange(int *, int *); int main( void) 



[PDF] Chapitre 3 : Procédures et fonctions

Il existe deux types de passage de paramètres : par valeur et par variable (dite aussi par référence ou encore par adresse) Page 5 Initiation à l'algorithmique –  



[PDF] LES VARIABLES : - u-psudfr

La fonction ne modifiera donc jamais le contenu de la variable qu'on lui passe 2- Le passage par référence : En plus du passage par valeur, le C définit le



[PDF] Programmation C++ (débutant)/Les pointeurs

passage de paramètres par référence • Dans cet exemple, la fonction minmax possède 4 paramètres : 2 entiers i et j passés par valeur et 2 entiers min



[PDF] Algorithmes et langage C - Ecole Mohammadia dingénieurs

C'est la valeur qui se trouve à la tête du ruban qui sera attribuée à la variable à lire Une fois, la lecture est 5 2 PASSAGE PAR ADRESSE (PAR REFERENCE)



[PDF] Les fonctions et les procédures en C

Passage de paramètre par valeur – On passe la valeur du paramètre – Implique que le Carré avec passage de paramètres par adresse void carre2(int a, 



[PDF] Sémantique dun programme impératif C++

4 Variables globales / Locales 5 État d'un programme : Pile d'appel 6 Passage de paramètres Passage par valeur Passage par référence Les pointeurs



[PDF] Les procédures

Passage de paramètres : par référence Les passages en mode in, out et in out imposent une recopie de valeur Cette recopie peut être pénalisante lorsque les  

[PDF] passage par référence c++ open classroom

[PDF] acting out psychanalyse

[PDF] le salaire du sniper analyse

[PDF] le salaire du sniper texte pdf

[PDF] le salaire du sniper questionnaire

[PDF] redaction le salaire du sniper

[PDF] le salaire du sniper personnage principal

[PDF] passé composé terminaison

[PDF] passé composé cm2

[PDF] passé composé exercices pdf

[PDF] passé composé utilisation

[PDF] passé composé etre et avoir

[PDF] passé composé cm1

[PDF] passé composé exemple

[PDF] exercices passé composé fle ? imprimer

1 de 150

Programmation Impérative II

Sémantique d"un programme C++

Florent Hivert

Mél :Florent.Hivert@lri.fr

Adresse universelle :http://www.lri.fr/˜hivert

2 de 150

1

Sémantiq ue

2

Mémoire et va riables

3

P ortéedes décla rations

4

V ariablesglobales / Lo cales

5

État d"un p rogramme: Pile d"app el

6

P assagede pa ramètres

Passage par valeur

Passage par référence

Les pointeurs

7

Applic ation: la ré cursion

Sémantique

3 de 1501Sémantiq ue

2

Mémoire et va riables

3

P ortéedes décla rations

4

V ariablesglobales / Lo cales

5

État d"un p rogramme: Pile d"app el

6

P assagede pa ramètres

7

Applic ation: la ré cursion

Sémantique

4 de 150Syntaxe et Sémantique

Définition

Lasyntaxed"un langage de programmation (ou d"un langage réel) est la description des exp ressionsco rrectes du langage, indépendamment de leur sens. Lasémantiqued"un langage est ladescription du sens des constructions du langage.Comme dans une langue naturelle, les phrases syntaxiquement correctes d"un langage de programmation n"ont pas toutes un sens.

Ex : le chat est analytique à l"origine.

Sémantique

5 de 150Statique / Dynamique

Lecompilateurtraduit le programmesource(par exemple enC++) en un programme exécutablebinaire(codé en langage machine).Définition Ce qui est fait (décision, réservation de ressource, détection d"erreur) pendant la compilation est ditstatique.

La même chose faite pendant l"exécution est ditedynamique.Exemple:incohérence de sens identifiée sans exécuter le programme :

erreur de sémantiquestatique.incohérence qui apparaît lors de l"exécution du programme : erreur de sémantiquedynamique.

Sémantique

6 de 150Exemple d"erreurs de sémantique statique

sem-stat.cpp

1#include< iostream>

2#include< vector>

3usingn amespaces td;

4

5voidp p( floatz ){

6inti ;

7i = 2;

8z = i;

9} 10

11intm ain( ){

12intx ;

13vectort (10);

14cin >> i;

15x = t;

16pp(x, t);

17return0 ;

18}Ligne 14 : La variableiest

déclarée seulement à l"intérieur de la fonctionppLigne 15 : Affectation d"un vecteur dans un entierLigne 16 : Appel de la fonctionppavec deux paramètres au lieu d"un.

Sémantique

7 de 150Erreurs de sémantique statique

Incohérence entre ladéclarationd"un objet et sonutilisation: il faut déclarer les objets (types, variables, fonctions, etc.) avant de les utiliser, pour vérifier que l"utilisation est conforme à la déclaration.erreurs sur laportée des variables: une variable déclarée

n"est utilisable que dans une certaine partie du programmeerreurs sur lecontrôle des types: les utilisations d"une

variable doivent être cohérentes avec son type déclaréerreurs lors del"appel des fonctionsNous allons voir cela en détail...

Sémantique

8 de 150Sémantique statique : Bilan

L"ensemble de ces contrôles correspond à la vérification de la sémantique statique du programme, c"est-à-dire de lapartie de la sémantique qui peut être vérifiée sans exécuter le programme.Retenir Lasémantique statiqueest contrôlée par le compilateur : La traduction (en langage machine) et l"exécution d"un p rogramme n"est pas p ossible tant que la sémantique statique n"est pas correcte.On ne peut pas traduire et a fortiori exécuter un programme qui n"a pas de sens.

Sémantique

9 de 150Sémantique dynamique

Problème

On ne peut pas décrire toute la sémantique d"un langage

uniquement par sa sémantique statique!Des erreurs peuvent apparaître à l"exécution, par exemple :

division par zéro accès en dehors des bornes d"un tableau plus généralement : mauvais accès à la mémoire ressource (fichier, réseau, ...) indisponible.

Sémantique

10 de 150Sémantique dynamique

sem-dyn.cpp

1intf ( intn ){

2intr es;

3if( n> 2 )r es= f (n-1)+ f (n-2);

4elser es= n ;

5returnr es;

6} 7

8intm ain( ){

9inti ;

10vectort (10);

11i = 1 ;

12//. ..i cil "initialisationd ut ableaut . ..

13while( f(i)< 1 000){

14cout << t[i] << endl;/ /A ccèse nd ehorsd ut ableau

15i++;

16};

17//. ..

18}

Sémantique

11 de 150Sémantique dynamique...

Définition

Lasémantique dynamiqueest la partie de la sémantique qui ne peut être contrôlée que lo rsde l"exécution du p rogramme .Avantages des langages compilés : diminuer la part de la sémantique dynamique par rapport à la sémantique statique.un plus grand nombre d"erreurs sémantiques détectées à la compilationles erreurs d"exécution, plus difficiles à découvrir et à corriger, sont rares.

Sémantique

12 de 150Encore plus de sémantique

Compléments

Dans les langages modernes, on essaye de mettre encore plus de sémantique :Qui est responsable de quelle portion de mémoire? Langage objets (C++, Java), notion de propriétaire (rust)Spécification, preuve

Why, Spark, assistant de preuveCoq, Isabelle

Sémantique

13 de 150Comment décrire la sémantique?

Sémantique

14 de 150Mécanismes de description

Objectif de la première partie du cours :décrire la sémantique d"un langage de programmation impératif :environnement et mémoire; portée des déclarations; appel des fonctions; passage de paramètres.

Il nous faut un

mo dèlede machine simplifié qui p ermettede décrire assez fidèlement le comportement des programmes.

Mémoire et variables15 de 150

1

Sémantiq ue

2

Mémoire et va riables

3

P ortéedes décla rations

4

V ariablesglobales / Lo cales

5

État d"un p rogramme: Pile d"app el

6

P assagede pa ramètres

7

Applic ation: la ré cursion

Mémoire et variables16 de 150

La mémoire

La mémoire principale d"un ordinateur est composée deun très grand nombre (10

10-1011) decondensateurspouvant

être soit chargés soit déchargés (0 ou 1)un gigantesqueréseau de fils et d"aiguillages(multiplexeur)Retenir

On groupe les condensateurs par groupes (typiquement 8, 16, 32 ou 64) appelésmots. On repère un mot en mémoire grâce à un nombre appeléadresse.L"opérateur&, retourne l"adresse d"une variable : addr.cpp

1inta = 5 ;

2cout << a <<" " < <& a<

Affiche quelque chose comme5 0x7ffe94f3a8bc

Mémoire et variables17 de 150

Mémoire simplifiée

Pour simplifier, on va supposer que toutes les informations codées en mémoire tiennent exactement dans un mot. On va représenter la mémoire par un tableau :. ..4? 3'a" 2? 1? 04 ?: valeur inconnue=imprévisible=non définie=aléatoire.

Mémoire et variables18 de 150

La mémoire en vrai

Problème

Plus une mémoire estgrosse, plus il faut commuter d"aiguillages pour accéder à une case mémoire, plus la mémoire estlente.Compléments

Hiérarchie de mémoires :

1registres : mémoire très rapide, très proche des unités de calcul2caches (souvent plusieurs niveaux L1, L2, L3)3mémoire centraleDu point de vue de la sémantique, c"est juste uneoptimisationqui

permet au programme d"être exécuté (beaucoup) plus rapidement.

Mémoire et variables19 de 150

Initialisation

Retenir

Lapremière écrituredans un emplacement mémoire s"appelle l"initialisation. Si l"on n"a rien écrit, l"emplacement mémoire contient quand même une valeur (les condensateurs correspondants contiennent ou non

une charge), mais cette valeur estimprévisible.?: valeur inconnue=imprévisible=non définie=aléatoire.Certains langages ont décidé de tout initialiser à 0. Ce n"est en

généralpas le cas duC/C++

Mémoire et variables20 de 150

Exemple de problème en cas de non initialisation noninit.cpp 1 i nt a dd( int x ,quotesdbs_dbs44.pdfusesText_44