Chapitre 9 Passage de paramètres
par adresse (existe aussi dans le langage C) langages C++ et Java1). 1 Java : passage par valeur pour les primitifs et par référence pour les objets.
Programmation C/C++ : Notions de base
Passage par adresse . Passage par référence . ... Les objectifs de ce cours sont de découvrir les bases du langage C/C++. Premier programme.
Algorithmes et langage C
5 COMPILATION ET EXECUTION D'UN PROGRAMME EN C CHAPITRE 3 CONCEPTS DE BASE DU LANGAGE C ... 5.2 PASSAGE PAR ADRESSE (PAR REFERENCE).
LES VARIABLES :
Dans la technique de la compilation (exemple langage C ou C++) : 3- Le passage par adresse : Il sera revu dans la fiche sur les pointeurs.
Programmation Impérative II Sémantique dun programme C++
Passage par référence. Les pointeurs Langage objets (C++ Java)
Programmation Structurée en Langage C
Le pointeur est une variable destinée à contenir une adresse mémoire. En langage C les passages de paramètres se font par valeur
Les structures et les tableaux
Par convention les noms de structures commencent par une minuscule en C struct point c[10]; ... 1.3 Passage par valeur et par référence. ? En C ...
Chapitre 7 - Programmation modulaire
On peut distinguer en langage C
COURS et TP DE LANGAGE C++
Ici le passage par référence est obligatoire puisque la fonction “ saisie ” modifie les valeurs des arguments. - Une fonction de prototype void calcul(float aa
ALGORITHMIQUE ET PROGRAMMATION STRUCTUREE EN
langage C utilise le principe du passage des paramètres effectifs par adresse. • On utilise pour cela des variables particulières permettant de stocker une.
[PDF] Chapitre 9 Passage de paramètres
En C++ 3 types de passage de paramètres: ? par valeur (existe aussi dans les langages C et Java1) ? par adresse (existe aussi dans le langage C)
[PDF] Programmation en langage C - Centre Inria de Paris
Chaque octet de la mémoire est caractérisé par son adresse qui est un entier Deux octets contigus en mémoire ont des adresses qui diff`erent d'une unité
[PDF] Langage C - LPTHE
Langage C 8 5 4 Passage de tableau de taille inconnue `a la compilation 190 8 5 5 Exemple de passage d'un tableau 1D de taille variable
[PDF] Algorithmes et langage C - Ecole Mohammadia dingénieurs
Le langage C met en jeu deux opérateurs utilisés lors de l'usage de pointeurs Il s'agit des opérateurs et * &variable signifie adresse de variable *
[PDF] Le Langage C
langage machine (manipulations de bits d'adresses ) ? efficace d'afficher : notre premier programme C et \n ordonne le passage à la ligne suivante
[PDF] Programmation Structurée en Langage C - Institut Fresnel
une définition précise du langage C appelée C reference manual Le pointeur est une variable destinée à contenir une adresse mémoire
[PDF] Les fonctions et les procédures en C
fonctions et procédures 11 Procédures (2/3) maprocedure c En langage C il n'existe pas d'autre Carré avec passage de paramètres par adresse
Passage par référence - CERMICS
C++ comme Pascal offre deux modes de passage des arguments à une fonction : par valeur et par référence Par contre C Java et CAML par simplicité n'en
[PDF] Langage C et aléa séance 3 - Loria
Le moyen le plus simple de faire est que l'appelant déclare le tableau et le passe en argument à la fonction ——————————————— Exercice 3 (passage par référence)
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
1Sémantiq ue
2Mémoire et va riables
3P ortéedes décla rations
4V ariablesglobales / Lo cales
5État d"un p rogramme: Pile d"app el
6P assagede pa ramètres
Passage par valeur
Passage par référence
Les pointeurs
7Applic ation: la ré cursion
Sémantique
3 de 1501Sémantiq ue
2Mémoire et va riables
3P ortéedes décla rations
4V ariablesglobales / Lo cales
5État d"un p rogramme: Pile d"app el
6P assagede pa ramètres
7Applic 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.cpp1#include< iostream>
2#include< vector>
3usingn amespaces td;
45voidp p( floatz ){
6inti ;
7i = 2;
8z = i;
9} 1011intm 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éen"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 langageuniquement 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.cpp1intf ( intn ){
2intr es;
3if( n> 2 )r es= f (n-1)+ f (n-2);
4elser es= n ;
5returnr es;
6} 78intm 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, preuveWhy, 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
1Sémantiq ue
2Mémoire et va riables
3P ortéedes décla rations
4V ariablesglobales / Lo cales
5État d"un p rogramme: Pile d"app el
6P assagede pa ramètres
7Applic 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 (1010-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.cpp1inta = 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 , i nt y ){ 2 i nt r es; 3 cout <<
Debut < 4 res = x + y;
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émentsHié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 nonune 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 , i nt y ){ 2 i nt r es;3 cout <<
Debut <5 cout <<
Fin <Fin : 37
Debut : 32619
Fin : 37Mais le compilateur affiche un message d"avertissement : warning: 'res" is used uninitialized in this function.Mémoire et variables21 de 150
Rappel : La notion de variable
but : stocker des informations en mémoire centrale durant l"exécution d"un programme;on veut éviter d"avoir à manipuler directement les adresses; on manipule desvariables;le programmeur donne aux variables des noms de son choix(identificateur);Définition (Notion de Variable)Unevariableest unespace de sto ckageoù le p rogrammep eut
mémoriser une donnée.Les variables désignent une ou plusieurs cases mémoires contenant une suite de 0 et de 1 qui code la valeur de la variable.Mémoire et variables22 de 150
Rappel : La notion de variable (2)
Retenir
Une variable en cours d"utilisation possède quatre propriétés : un nom; une adresse; un type; une valeur.Mémoire et variables23 de 150
Réservation de la mémoire
Définition
réserverune portion de mémoire s"appelle l"allocation libérerune portion de mémoire s"appelle ladésallocationL"allocation peut êtreMémoire et variables24 de 150
Différentes zones de mémoire
Définition
La mémoire est
découp éeen zones souvent app eléessegments. Dans chaque segment la mémoire est allouée différemment.Voici quelques segments : codequi contient le code binaire du programmela zone desdonnées statiquesqui contient les données globales.lapilequi contient les variables automatiques et les informations nécessairesà l"exécution des appels de
fonctionsletasqui contient les variables dynamiques manuelles.Mémoire et variables25 de 150
Variables : portée et durée de vie
Une variable n"est ni valable dans tout le code, ni présente en mémoire tout le temps...Définition Laportée d"une déclarationd"une variable indique dans quelle portion du programme source la variable estvisible.C"est une question de
sémantique statique .Ladurée de vied"une variable indique la portion de temps d"exécution pendant laquelle laplace mémoireassociée à la variable estréservée.C"est une question de
sémantique dynamiqueMémoire et variables26 de 150
Exemple : portée et durée de vie
addr-glob-loc.cpp1#include
2 3intg = 3 ;/ /V ariableg lobale,a llocations tatique
45intm ain(){
6std::cout <<" Globale" < 7 8inth = 5 ;/ /V ariablel ocale,a llocationa utomatique
9std::cout <<" Locale" < 10} Portée des déclarations27 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
Portée des déclarations28 de 150
Portée des déclarations...
Occurrence : apparition d"une variable.Définitionquotesdbs_dbs44.pdfusesText_44
8inth = 5 ;/ /V ariablel ocale,a llocationa utomatique
9std::cout <<" Locale" < 10} Portée des déclarations27 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
Portée des déclarations28 de 150
Portée des déclarations...
Occurrence : apparition d"une variable.Définitionquotesdbs_dbs44.pdfusesText_44
Portée des déclarations27 de 150
1Sémantiq ue
2Mémoire et va riables
3P ortéedes décla rations
4V ariablesglobales / Lo cales
5État d"un p rogramme: Pile d"app el
6P assagede pa ramètres
7Applic ation: la ré cursion
Portée des déclarations28 de 150
Portée des déclarations...
Occurrence : apparition d"une variable.Définitionquotesdbs_dbs44.pdfusesText_44[PDF] passage par valeur et par variable
[PDF] passage par référence php
[PDF] difference entre passage par valeur et passage par adresse en c
[PDF] passage par référence c++
[PDF] passage par valeur et par adresse en c
[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