Funzioni in Linguaggio C

Documenti analoghi
Linguaggio C - Funzioni

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Tempo di vita e scope delle variabili

Linguaggio C - sezione dichiarativa: costanti e variabili

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Puntatori Passaggio di parametri per indirizzo

Linguaggio C: le funzioni. Introduzione e sintassi

Programmazione (imperativa)

Compito di Fondamenti di Informatica

La sintassi del C APPENDICE H

STRUTTURA DI UN PROGRAMMA

Programmazione modulare

Programmazione a moduli in C

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Istruzioni di ciclo. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Dove vengono definiti? il concetto di sottoprogramma

Il linguaggio C. Notate che...

nome (lista_parametri) Funzioni funzioni predefinite: sqrt(x) log(x) usare queste funzioni significa: specificare il valore degli argomenti

Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica

Linguaggio C I puntatori

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Esercitazione 6. Array

Definizione di metodi in Java

Laboratorio di informatica Ingegneria meccanica

perror: individuare l errore quando una system call restituisce -1

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Programmazione Procedurale in Linguaggio C++

Le funzioni, e le istruzioni di input/output

Esercizi di programmazione in C

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Array multidimensionali e stringhe

Programmazione Orientata agli Oggetti in Linguaggio Java

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Corso di Programmazione a oggetti

Il generatore di numeri casuali

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Istruzioni Condizionali in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Strutturare il codice: sottoprogrammi

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Array e puntatori in C

Linguaggio C Variabili e tipi di dato

Fondamenti di Informatica 1 Ing.Gestionale (A.A ) - docente Sandro Moriggi RECUPERO. cognome nome

3. La sintassi di Java

Dispensa di Esercizi in C++ Fondamenti di Informatica

Il linguaggio C Funzioni e procedure

Appunti, esempi ed esercizi sui linguaggi C/C++

Il linguaggio C - Introduzione

main() { int i; int a[10]={1,2,3,4,5,6,7,8,9,10}; /* inizializzazione in fase di definizione */ int b[10];

Mini-dispensa sui puntatori in C

PROGETTAZIONE TOP-DOWN E BOTTOM-UP

Sottoprogrammi: astrazione procedurale

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Prof.Ing.S.Cavalieri Puntatori e Heap in Linguaggio C. Puntatori e Heap

Le basi del linguaggio Java

Esercizi C su array e matrici

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Funzioni. Corso di Fondamenti di Informatica

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

18/01/16. Soluzione degli esercizi svolti in aula alla lavagna. Seconda lezione. Cast

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/ III Informatica Serale I.T.I.S.

Concetto di Funzione e Procedura METODI in Java

I vettori in C. Vettori. Definizione di vettori in C. int dato[10] ; int. Numero di elementi. Tipo di dato base. Nome del vettore.

Consideriamo un vettore allocato dinamicamente

Funzioni in C. Violetta Lonati

Lezione 6. Visibilità degli identificatori e tempo di vita degli oggetti

Variabili. Tipi di dati di base. Variabili. Variabili

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Introduzione alla programmazione in C

Cenni sul preprocessore e il suo utilizzo

Linguaggio C: introduzione

Unità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture.

Il C nel C++: Funzioni

Gestione dei File C. Generalità

Prima lezione di laboratorio. I mattoni di base di un programma Java. Comandi Unix. Riassunto. Oggi. Un programma complicato.

Caratteri e stringhe

Programmazione in Java (I modulo)

Programmazione Procedurale in Linguaggio C++

Introduzione alla programmazione in C(++)

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Gestione di files Motivazioni

Lab 02 Tipi semplici in C

TIPI DI DATO. I tipi di dato si differenziano in scalari e strutturati. tipi di dato. costruttori predefiniti. definiti dall'utente

Esercizio 1: calcolo del massimo di una sequenza (versione 1)

Sotto programmi - Funzioni in C

Conversioni fra Tipi di Dati. Luca Abeni

Laboratorio di programmazione

Esercizi. I File ed il C

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Fondamenti di Informatica T-1 Modulo 2

Transcript:

Concetti Chiave Funzioni in Linguaggio C Dichiarazione Definizione Chiamata Passaggio dei parametri Valore di ritorno Tipo void Visibilità e mascheramento dei nomi

Le Funzioni In C i sottoprogrammi sono detti funzioni: a partire da uno o più valori in ingresso ritornano (o restituiscono) un valore al chiamante. Un esempio di funzione è abs. Considerando la funzione come una scatola nera, tutto quello che dobbiamo sapere è che immettendo come argomento i ne ritorna il valore assoluto.

unsigned long esponente; double base, p; printf("\ninserisci la base "); scanf("%lf",&base); printf("\ninserisci l'esponente "); scanf("%lu",&esponente); p=1.0; Le Funzioni while (esponente-->0) p*=base; printf("\npotenza = %e",p); unsigned long esponente; double base, p; void potenza (void); printf("\ninserisci la base "); scanf("%lf",&base); printf("\ninserisci l'esponente "); scanf("%lu",&esponente); potenza(); void potenza(void){ p=1.0; while (esponente-->0) p*=base; printf("\npotenza = %e",p);

Due sintassi equivalenti unsigned long esponente; double base, p; void potenza (void); printf("\ninserisci la base "); scanf("%lf",&base); printf("\ninserisci l'esponente "); scanf("%lu",&esponente); potenza(); void potenza(void){ p=1.0; while (esponente-->0) p*=base; printf("\npotenza = %e",p); unsigned long esponente; double base, p; void potenza(void){ p=1.0; while (esponente-->0) p*=base; printf("\npotenza = %e",p); printf("\ninserisci la base "); scanf("%lf",&base); printf("\ninserisci l'esponente "); scanf("%lu",&esponente); potenza();

Valore Ritorno e Variabili Locali unsigned long esponente; double base, p; void potenza(void){ p=1.0; while (esponente-->0) p*=base; printf("\npotenza = %e", p); printf("\ninserisci la base "); scanf("%lf",&base); printf("\ninserisci l'esponente "); scanf("%lu",&esponente); potenza(); unsigned long esponente; double base; double potenza(void){ double p=1.0; while (esponente-->0) p*=base; return (p); printf("\ninserisci la base "); scanf("%lf",&base); printf("\ninserisci l'esponente "); scanf("%lu",&esponente); printf("\npotenza = %e",potenza());

Due sintassi equivalenti unsigned long esponente; double base; double potenza(void){ double p=1.0; while (esponente-->0) p*=base; return (p); printf("\ninserisci la base "); scanf("%lf",&base); printf("\ninserisci l'esponente "); scanf("%lu",&esponente); printf("\npotenza = %e",potenza()); unsigned long esponente; double base; double potenza (void); printf("\ninserisci la base "); scanf("%lf",&base); printf("\ninserisci l'esponente "); scanf("%lu",&esponente); printf("\npotenza = %e",potenza()); double potenza(void){ double p=1.0; while (esponente-->0) p*=base; return (p);

Parametri Formali unsigned long esponente; double base; double potenza (void); printf("\ninserisci la base "); scanf("%lf",&base); printf("\ninserisci l'esponente "); scanf("%lu",&esponente); printf("\npotenza = %e",potenza()); double potenza(void){ double p=1.0; while (esponente-->0) p*=base; return (p); unsigned long esponente1, esponente2; double base1, base2; double potenza (double, unsigned long); base1=3.0; esponente1=3; base2=2.0; esponente2=4; printf("\npotenza = %f",potenza(base1,esponente1)); printf("\npotenza = %f",potenza(base2,esponente2)); printf("\npotenza = %f",potenza(4.0,4)); double potenza(double b, unsigned long e){ double p=1.0; while (e-->0) p*=b; return (p);

L altra Sintassi double potenza(double b, unsigned long e){ double p=1.0; while (e-->0) p*=b; return (p); unsigned long esponente1=3, esponente2=4; double base1=3.0, base2=2.0; printf("\npotenza = %f",potenza(base1,esponente1)); printf("\npotenza = %f",potenza(base2,esponente2)); printf("\npotenza = %f",potenza(4.0,4));

Le Funzioni Le funzioni possono essere definite in due modi: Modo1 Dichiarazione del prototipo prima del int main(void) e dopo le direttive di precompilazione Definizione della funzione dopo il int main(void) Modo 2 Definizione completa prima del int main(void) o in un file da includere

Le Funzioni Modo 1 Sintassi di dichiarazione, detta prototyping: tiporitorno nomefunz(tipopar1,...,tipoparn); Sintassi di definizione: tiporitorno nomefunz(tipopar1 Par1,...,tipoParN ParN){ Definizione Variabili Locali; Istruzioni; return(valore); oppure return valore;

Le Funzioni Modo 2 Sintassi di definizione: tiporitorno nomefunz(tipopar1 Par1,...,tipoParN ParN){ Definizione Variabili Locali; Istruzioni; return(valore); oppure return valore;

Le Funzioni In entrambi i casi, se il valore di ritorno non esiste o se non esistono i paramentri formali, si usa la parola chiave void void nomefunz (tipopar1 Par1,...,tipoParN ParN) tiporitorno nomefunz (void) Se il valore di ritorno non esiste, allora return non deve essere usato

Le Funzioni Come si richiamano le funzioni? Si utilizza il nome della funzione e si specifica l elenco dei parametri effettivi Se non esistono parametri formali, la funzione viene richiamata con l elenco dei parametri formali vuoto () Esempio: getchar()

Il main Il main è la prima funzione che viene eseguita Se definita: int main(void), ritorna un numero intero C e la convenzione che se il main ritorna 0, significa nessun problema, altrimenti si torna un numero diverso da 0 Se non viene indicato il return(valore intero), ritorna sempre 0 Dunque se si deve tornare 0, SI PUO' NON specificare return(0) alla fine del main

Le Funzioni- Parametri Attuali/Formali La corrispondenza tra parametri formali e attuali è posizionale Questo può innescare errori di conversione I parametri formali assumono come valore iniziale quello dei parametri passati dal chiamante (esempio main) Le modifiche ai parametri formali non alterano i parametri corrispondenti del chiamante Nell esempio, la variabile esponente non viene modificata, ma solo il parametro formale e unsigned long esponente=4; double base=3.0; double potenza(double, unsigned long ); printf("\npotenza = %f",potenza(base,esponente)); double potenza(double b, unsigned long e){ double p=1.0; while (e-->0) p*=b; 3.0 4 return (p);

Le Variabili Locali alle Funzioni Una variabile dichiarata in una funzione (variabile locale) ha visibilità dal punto di dichiarazione alla fine della funzione in cui è contenuta. Anche il main potrebbe avere variabili locali Le variabili locali assumono valore iniziale casuale La dichiarazione di una variabile in una funzione può nascondere la dichiarazione di una variabile globale con lo stesso nome.

Le Variabili Locali alle Funzioni unsigned int i,n; La dichiarazione di una variabile in una funzione può nascondere la dichiarazione di una variabile globale con lo stesso nome. Nell esempio si noti la variabile i double prova(unsigned int a){ double i=10.0; i*=a; return (i); printf("\ninserisci n "); scanf("%u",&n); for (i=0;i<n;i++) printf("\nvalore = %f",prova(i));

Passaggio di Parametri Vettore i parametri formali passati per valore relativamente ad un vettore, si esprimono nelle tre forme equivalenti: tipobase * nome_parametro; tipobase nome_parametro[]; tipobase nome_parametro[dimensione];

Passaggio di Parametri Vettore #define N 5 #define M 100 float vett[n], vett2[m]; void riempi(float v[], int dim){ unsigned long i; for (i=0; i<dim; i++) { printf("inserisci l'elemento di indice %u ",i); scanf("%f",&v[i]); void stampa(float v[], int dim){ unsigned long i; for (i=0; i<dim; i++) printf("\nelemento di indice %u = %f ",i,v[i]); float max(float v[], int dim){ unsigned long i; float max=v[0]; for (i=1; i<dim; i++) if (v[i]>max) max=v[i]; return max; int main(void) { riempi(vett,n); riempi(vett2,m); stampa(vett,n); stampa(vett2,m); printf("\nmassimo elemento = %f ",max(vett,n)); printf("\nmassimo elemento = %f ",max(vett2,m));

Passaggio di Parametri Vettore #define FFLUSH while (getchar()!= \n ) void LeggiStringa(char s[], unsigned long dim){ unsigned long i; for (i=0; i<dim-1;i++) if ((s[i]=getchar())=='\n') break; if (i==dim-1) FFLUSH; s[i]='\0';