Passaggio di parametri per indirizzo

Slides:



Advertisements
Presentazioni simili
Sottoprogrammi: funzioni e procedure
Advertisements

Preincremento e PostIncremento in C++
Puntatori in C e C++.
Struttura di un programma
Linguaggio C++ Operatori – numeri pseudocasuali - costanti.
Numeri casuali.
Procedure e funzioni In linguaggio C.
Introduzione ad Array e Funzioni 2IC/2ID – a. s.2012/13.
Generazione di numeri casuali in Dev C++
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Introduzione al linguaggio C
Le funzioni.
1 laboratorio di calcolo II AA 2003/04 terza settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Il main program Ogni programma in C++, per essere eseguibile, deve contenere una funzione main() da cui l’esecuzione comincerà main() deve avere un tipo.
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Algebra Lineare Esercizi assegnati.
Le funzioni.
PUNTATORI Un puntatore è una variabile destinata a contenere lindirizzo di unaltra variabile Vincolo di tipo: un puntatore a T può contenere solo lindirizzo.
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
void binario(int n); …………………
Creazione progetto in C++/DEV
Puntatori e gestione dinamica della memoria
Unità Didattica 3 Linguaggio C
Passaggio di parametri per indirizzo
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
Vettori, indirizzi e puntatori Finora abbiamo usato gli indirizzi nel chiamare  la funzione scanf()  le altre funzioni per riferimento Tuttavia la vera.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
CORSO DI PROGRAMMAZIONE II
Procedure e funzioni In linguaggio C.
Scrivere e compilare programmi
L’ordinamento per Selezione seleziona l’elemento con valore maggiore e lo scambia con il primo elemento del vettore. Tra gli N-1 elementi rimanenti viene.
Copyright © Istituto Italiano Edizioni Atlas
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
Le funzioni in C++. Introduzione  Spesso alcuni gruppi di operazioni vengono ripetute in diverse parti all’interno del medesimo programma  Si pensi.
© 2007 SEI-Società Editrice Internazionale, Apogeo
DAL DIAGRAMMA AL CODICE
Esercizio fatture.
Introduzione al linguaggio C
Strutture classi e oggetti
Record.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Linguaggio C++ Selezione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Struttura di un programma
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
Struttura di un programma
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Process synchronization
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Operatori – numeri pseudocasuali - costanti
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione Procedurale
Transcript della presentazione:

Passaggio di parametri per indirizzo 06/07/2019 Funzioni in C++ Passaggio di parametri per indirizzo

Passaggio di parametri per indirizzo Il passaggio di parametri per indirizzo (o per riferimento) passa alla funzione l’indirizzo di memoria del parametro anziché il valore. Non ci sono quindi variabili distinte, una nel main ed una nella funzione, ma la funzione opera sulla stessa area di memoria del main. Data la variabile intera A per sapere qual è l’indirizzo di memoria di A si usa l’operatore &. Osserviamo le istruzioni seguenti: int A; A=5; cout <<“A vale ”<<A <<endl; cout <<“L’indirizzo di A vale ”<<&A<<endl; Sullo schermo viene prodotto: A vale 5 L’indirizzo di A vale 0x28ff44 Che significa che la variabile A è allocata all’indirizzo di memoria 28ff44 che è espresso in base 16 (0x) 28ff44 A 5

Passaggio di parametri per indirizzo Vediamo il seguente esempio in cui la funzione “aggiungi” aggiunge 1 ai due parametri ricevuti. Il primo parametro viene passato per valore il secondo per indirizzo. void aggiungi(int, int &); int main() { int a,b; a=0; b=5; aggiungi(a, b); cout<<“nel main a vale”<<a; cout<<“nel main b vale”<<b; } void aggiungi(int x, int &y) {x++; y++; cout<<“nella funzione x vale”<<x; cout<<“nella funzione y vale”<<y; RAM MAIN FUNZIONE a b x y / / 5 6 1 Schermo nella funzione: x vale 1 nella funzione: y vale 6 nel main: a vale 0 nel main: b vale 6

Passaggio di parametri per valore /* Scambio del valore di due variabili mediante valore */ #include <iostream> using namespace std; /* Scambio riceve due parametri di tipo float */ void Scambio(float , float ); // prototipo int main() { float var1 = 3.14, var2 = 1.41; // variabili locali cout << "Prima dello scambio: var1 = " << var1 << " var2 = " << var2 << endl; // A Scambio sono passati i valori contenuti in var1 e var2 Scambio (var1, var2); // chiamata di funzione cout << "Dopo lo scambio....: var1 = " << var1 << " var2 = " << var2 << endl; } // Funzione Scambio che effettua lo scambio void Scambio(float x, float y) float temp = x; x = y; y = temp; RAM MAIN FUNZIONE var1 var2 x y temp / / 3.14 1.41 3.14 1.41 3.14 1.41 3.14 Schermo Prima dello scambio....: var1 = 3.14 var2 = 1.41 Dopo lo scambio....: var1 = 3.14 var2 = 1.41

Passaggio di parametri per indirizzo /* Scambio del valore di due variabili mediante indirizzo */ #include <iostream> using namespace std; /* Scambio riceve due reference a variabili di tipo float */ void Scambio(float &, float &); // prototipo int main() { float var1 = 3.14, var2 = 1.41; // variabili locali cout << "Prima dello scambio: var1 = " << var1 << " var2 = " << var2 << endl; // A Scambio sono passati gli indirizzi a var1 e var2 Scambio (var1, var2); // chiamata di funzione cout << "Dopo lo scambio....: var1 = " << var1 << " var2 = " << var2 << endl; } // Funzione Scambio che effettua lo scambio void Scambio(float &x, float &y) float temp = x; x = y; y = temp; RAM MAIN FUNZIONE var1 var2 x y temp / / 3.14 1.41 3.14 1.41 3.14 Schermo Prima dello scambio....: var1 = 3.14 var2 = 1.41 Dopo lo scambio....: var1 = 1.41 var2 = 3.14

Passaggio di parametri con i vettori Nel caso dei vettori l’indirizzo di memoria in cui il vettore è allocato è indicato con il nome del vettore. Nel caso dei vettori il passaggio di parametri per indirizzo è l’unico utilizzabile

ESERCIZIO: diagramma di struttura Risolviamo il seguente problema: Date le altezze di 30 alunni di una classe, calcolare l’altezza media e stabilire quanti sono gli alunni che superano la media Altezze degli alunni di una classe Contare quanti alunni superano la media Inserire le altezze in un vettore Calcolare la media delle altezze

SOLUZIONE ESERCIZIO: programma // prototipi delle funzioni void inserisci(int v[],int); float calcolamedia(int v[],int); void contaaltezze(int v[],int,float); int main() { int const max=30; int vett[max]; float media; inserisci(vett,max); media=calcolamedia(vett,max); contaaltezze(vett,max,media); } void inserisci(int v[],int dim) // carico il vettore for (int i=0;i<dim;i++) {cout<<"\ndigita un elemento del vettore "; cin>>v[i]; float calcolamedia(int v[],int dim) //calcolo la media {float s,m; for (int i=0;i<dim;i++) s=s+v[i]; m=s/dim; cout<<"\nla media e' "<<m; return m; } void contaaltezze(int v[],int dim,float m) //calcolo le altezze {int conta=0; { if (v[i]>m) conta++; cout<<"\ngli alunni che superano la media sono "<<conta;