Funzioni In C++ le funzioni sono caratterizzate da un nome, dal tipo della variabile ritornata e da una lista di parametri (opzionali) La lista dei parametri.

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Sottoprogrammi: funzioni e procedure
IL MODELLO CLIENTE / SERVITORE. Servitore: un qualunque ente computazionale capace di nascondere la propria organizzazione interna presentando ai clienti.
Preincremento e PostIncremento in C++
Procedure e funzioni In linguaggio C.
LE FUNZIONI IN C Sommario 1 Introduzione 2 Moduli di programma in C
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl.
Le gerarchie di tipi.
Differenze tra C e C++ Commenti: Adesso puoi inserire dei commenti tra // e la fine della linea. Usare le librerie C: In C++ puoi anche chiamare una funzione.
Introduzione al linguaggio C
Dallalgoritmo minimax allalgoritmo alfa-beta. MINIMAX int minimax(stato, livello) { if((livello == max_livello) || condizione_uscita(stato)) { CAMMINO.
Funzioni definite dall’utente
Tail recursion: esempio
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6: 13 Maggio 2013 Gianluca Durelli – Marco D. Santambrogio –
Allocazione dinamica della memoria
Laboratorio di Linguaggi lezione VI: puntatori 2/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
CORSO DI PROGRAMMAZIONE II
CORSO DI PROGRAMMAZIONE II
Soluzione Esercizio - Classe Vettore
Esercizi su alberi binari
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Dichiarazione di classi Programmazione Corso di laurea in Informatica.
Lab. Calc. 2005/06 Ereditarietà. Lab. Calc. 2005/06 Scopo di questa lezione: Imparare a creare nuove classi ereditando da classi già esistenti. Capire.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Algebra Lineare Esercizi assegnati.
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
Le funzioni.
Lezione IX Laboratorio di Programmazione. Le Classi Una classe C++ è definita come segue: class Nomeclasse { private: // metodi e attrib. visibili solo.
Le funzioni a tempo di esecuzione
AN Fondam98 Puntatori Azioni e procedure Assegnamenti, indirizzi e puntatori.
FUNZIONI: IL MODELLO APPLICATIVO 1) Valutazione, nellenvironment corrente, del simbolo che denota il nome della funzione; 2) Valutazione, nellenvironment.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di argomenti, ovvero valori che devono essere passati alla funzione.
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Cicli in Fortran I cicli consentono di eseguire una sequenza di istruzioni più di una volta due tipi: Cicli iterativi Cicli while.
void binario(int n); …………………
Lo sviluppo top down Le funzioni
Passaggio di parametri per indirizzo
Tail recursion: esempio
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
Complessità di un algoritmo
Le variabili in Java Nella programmazione tradizionale, una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato. Per esempio.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 2 La ricorsione Corso di Informatica 2 a.a. 2003/04 Lezione 2.
CORSO DI PROGRAMMAZIONE II Lezione 22
Le funzioni Rassegna degli argomenti trattati LS Tron 14/15 Prof. Carla Fanchin.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Template.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 11 Ereditarietà in C++
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
File binari Accesso a file con record di lunghezza costante Struct Persona { Int id; Char nome[50];// nome e cognome Double stipendio; }; Persona dipendente;
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Sottoprogrammi e funzioni
Programmazione in Java
Procedure e funzioni In linguaggio C.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
Metodologie di Programmazione Esercizi sulla semantica di Java.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
Metodi in Java. Note Identificazione input: (il raggio è un numero reale !!!) Identificazione delle operazioni necessarie al calcolo Area=r*r*PI Circonferenza=2*r*PI.
Transcript della presentazione:

Funzioni In C++ le funzioni sono caratterizzate da un nome, dal tipo della variabile ritornata e da una lista di parametri (opzionali) La lista dei parametri (anche se vuota) deve essere esplicitata Il valore ritornato deve essere compatibile, a meno di conversione esplicita, con il tipo della funzione double max( double a, double b) { return (a>b) ? a : b; } Tipo ritornato Parametri Corpo della funzione Valore di ritorno

Funzioni (2) Tipo di dichiarazione C++ commenti funzione double cube(double x) parametri passati { return x*x*x; } “by value” procedura void scrivi_quadrato(int i) subroutine, non si { cout<<i*i<<endl; } usa return senza argomenti void hello () puo` anche essere { cout<<“Hello”<<endl; } void hello(void) argomenti passati void swap(int& i,int& j) i e j hanno i loro per riferimento { int t=i; i=j; j=t; } valori scambiati variabile int scanf(const char, …) chiamata con un qualsiasi numero di argomenti inline inline double cube(int x) codice inline argomenti di int power(int i, int n=2) il 2do argomento default puo` essere tralasciato Tipo di dichiarazione C++ commenti

Prototipi delle funzioni Prima di essere usata, una funzione deve essere dichiarata (nel file che la usa) I prototipi rendono le funzioni in C++ “type safe”, nel senso che i valori reali degli argomenti vengono all’occorrenza convertiti nei tipi formali specificati dal prototipo #include <iostream> double max(double, double); int main() { double m = max(1, 3); cout<<“Il massimo e` “<<m<<endl; return 0; } main.cc double max (double a, double b) { return (a>b) ? a : b; } max.cc Prototipo di max (normalmente in max.h)

Chiamata per valore Con il passaggioper valore la funzione non può modificare il valore dei suoi argomenti Es: int i = 5, j=7; Dopo la chiamata di greater (i,j) i vale sempre 5 e j vale sempre 7 bool greater(int i, int j) { // se i>j scambia i e j if (i>j) { int temp=i; i=j; j=temp; return true; } else return false; Argomenti passati “per valore” sono scambiati nella funzione ma nel programma chiamante hanno i valori vecchi

Puntatori come parametri L’uso dei puntatori permette ad una funzione di modificare il valore dei suoi argomenti Es: int i = 5, j=7; Dopo la chiamata di greater (&i,&j) i varrà 7 e j 5 bool greater(int *p1, int *p2) { /* se il valore puntato da p1 > valore puntato da p2 scambia i due valori*/ if (*p1>*p2) { int temp=*p1; *p1=*p2; *p2=temp; return true; } else return false; Se passo i puntatori le modifiche Hanno effetto sul programma chiamante

Chiamata per riferimento L’uso dei riferimenti permette ad una funzione di modificare il valore dei suoi argomenti Con i riferimenti è sufficiente chiamare greater (i, j); Per ragioni di efficenza, oggetti di grandi dimensioni (in termini di memoria) vengono normalmente passati “by reference”. Per evitare che possano essere modificati dalla funzione, il riferimento viene definito const bool greater(int& i, int& j) { // se i>j scambia i e j if (i>j) { int temp=i; i=j; j=temp; return true; } else return false; Argomenti passati “by reference” possono essere modificati dalla funzione stessa

Funzioni inline La keyword inline suggerisce al compilatore che ogni chiamata alla funzione deve essere convertita in codice eseguibile (la definizione della funzione viene sostituita alla chiamata dovunque nell codice) Le funzioni inline vengono usate per ragioni di efficienza e (per non sovraccaricare il compilatore) devono essere semplici Il compilatore può decidere autonomamente (per esempio se la funzione è troppo lunga) di ignorare la direttiva inline

Argomenti di default Ad ogni parametro di una funzione può essere assegnato un valore di default. Questo permette di chiamare la funzione tralasciando quei parametri il cui valore di default risulta appropriato Solo ai parametri più a destra nella calling sequence può essere dato un default. int pow(int , int); int main() { int r=3; int a1=pow(3,3); // a1=27 int a2=pow(3); // a2=9 return 0; } main.cc int pow (int a, int k=2) { if (k==2) return a*a; else return a*pow(a, k-1); } pow.cc Argomento di default

Overloading Funzioni diverse possono avere lo stesso nome La funzione che viene chiamata è scelta dal compilatore in base al tipo di ritorno ed al numero e tipo degli argomenti double media_array(const int a[], int size) { int sum=0; for (int i=0;i<size;i++) sum+=a[i]; return double(sum)/size; } double media_array(const double a[], int size) double sum=0; return sum/size; average_array.cc

Overloading (2) La lista dei tipi degli argomenti di una funzione è chiamata signature Il tipo ritornato dalla funzione non fa parte della signature, mentre il numero e l’ordine degli argomenti è cruciale void print(int i=0) {. . .} // (1) void print(int i, double x) {. . .} // (2) void print(double y, int i) {. . .} // (3) . . . print(‘A’); // ‘A’ e` convertito a int, chiama (1) print(str[]); // errore! Non e` possibile una conversione print(15,9); // errore! Ambiguita` fra (2) e (3) print(15,9.); // OK, chiama (2) print(); // OK, chiama (1) con il default

L’algoritmo di selezione Ricerca della corrispondenza esatta Promozioni standard degli argomenti int  long I tentativi del compilatore Conversioni standard dei tipi int  float Conversioni definite dall’utente traccia  int L’utente può sempre utilizzare una conversione forzata (type cast) per ottenere una corrispondenza Il compilatore segnala tutti i casi in cui esiste ambiguità