Programmazione a moduli in C
|
|
- Cinzia Rosi
- 7 anni fa
- Visualizzazioni
Transcript
1 Funzioni Programmazione a moduli in C Politecnico di Milano Motivazioni Alcuni programmi possono essere molto, molto complessi E utile poter partizionare il lavoro di progettazione in sottolavori più semplici perché: è più facile risolvere problemi di piccole dimensioni; si può distribuire il lavoro su più persone; 1
2 Riutilizzo Grosso vantaggio: le parti già scritte possono essere riutilizzate! Si possono così costruire librerie di sottoparti di programma che possono essere utilizzate all occorrenza; Esempio #include <stdio.h> main() int n,i,rad; printf( Inserisci un numero: ); scanf ( %i,&n); /* codice che calcola la radice quadrata di n */ for (i=1;i<=n;i++) if ((i*i) <=n) rad=i; Questo codice calcola la radice quadrata di n e la memorizza in rad printf ( La radice quadrata di %i, approssimata per difetto, è %i\n,n,rad); 2
3 Esempio Sarebbe stato meglio scrivere: #include <stdio.h> main() int n,i,rad; printf( Inserisci un numero: ); scanf ( %i,&n); /* codice che calcola la radice quadrata di n */ rad=rad_quad(n); printf ( La radice quadrata di %i, approssimata per difetto, è %i\n,n,rad); Esempio e spiegare, da qualche altra parte, come si fa ad estrarre la radice quadrata di un numero! La spiegazione potrebbe essere data dallo stesso programmatore: int rad_quad(int numero) int i, rad=1; for (i=1;i<=n;i++) if ((i*i)<=n) rad = i; return (rad); 3
4 Funzioni oppure la spiegazione potrebbe essere già disponibile al programmatore, cioè potrebbe essere stata preparata precedentemente e memorizzata in una libreria ; Un esempio: printf! Infatti printf: Non è un istruzione del C! E una funzione di libreria composta da una sequenza di altre istruzioni che non si vedono Terminologia Le parti di cui abbiamo parlato si chiamano funzioni; L utilizzo di una funzione si dice chiamata; La spiegazione di una funzione si chiama definizione; I dati passati ad una funzione si chiamano parametri; Il valore prodotto da una funzione si chiama valore di ritorno; 4
5 Riassumendo Utilizzare le funzioni comporta, tra gli altri, i seguenti vantaggi: il progetto di grossi programmi è più semplice; il codice è più leggibile (è più espressivo scrivere rad=rad_quad(n) piuttosto che il codice che calcola la radice!); è possibile riutilizzare la stessa funzione in diversi contesti o utilizzare funzioni scritte da altri (cioè chiamare funzioni delle quali non si conosce la definizione) Altri vantaggi Altri vantaggi - il codice diventa modulare : è possibile migliorarne una parte senza dover cambiare tutto (per esempio, si può scrivere una funzione che calcola la radice quadrata più velocemente) - si possono formulare soluzioni ricorsive ai problemi (vedremo più avanti cosa significa ) 5
6 Definizione di funzione Function header: Tipo del risultato Nome della funzione Lista dei parametri formali Parentesi graffe che racchiudono Dichiarazione delle variabili locali Corpo della funzione Valore di ritorno Definizione di funzione (2) Una funzione si definisce secondo questo schema: ret_type f (type1 arg1, type2 arg2, ) /* dichiarazioni di variabili */ [ ] /* codice */ [ ] /* valore di ritorno */ 6
7 Dove: Definizione di funzione (3) - ret_type è il tipo del valore ritornato dalla funzione; - type1, type2, etc. sono i tipi dei parametri passati alla funzione; Chiamata di una funzione var = f(a,b,c) Il valore di ritorno della funzione f viene assegnato ad una variabile (var) Identificatore della funzione Lista dei parametri attuali (che vengono associati ordinatamente ai parametri formali) 7
8 Prototipo di una funzione Quando si vuole utilizzare una funzione, è necessario prima dichiararla, cioè scrivere il suo prototipo prima di usarla! int rad_quad(int);/* Prototipo della funzione */ [ ] main() [ ] a=rad_quad(c); /* Chiamata della funzione */ [ ] Prototipo di una funzione ret_type f (type1, type2, ) Il prototipo di una funzione è uguale alla prima riga della sua definizione, eccetto i nomi dei parametri che non sono inclusi Il compilatore usa il prototipo di una funzione per convalidare le chiamate di funzione Una chiamata di funzione che non corrisponda al suo prototipo provocherà un errore di sintassi 8
9 Struttura di un programma C Direttive al precompilatore (es. #include) Dichiarazioni di variabili globali Prototipi di funzioni Il programma main (che può contenere chiamate a funzioni) Definizioni di funzioni Maggiore tra 3 numeri interi Scrivere una funzione che, ricevuti in ingresso 3 numeri interi, restituisca il maggiore. 9
10 Esempio: maggiore tra 3 numeri interi #include <stdio.h> int maximum(int, int, int); /* Prototipo della funzione */ main() int a, b, c, m; printf("inserisci tre numeri interi: "); scanf("%d%d%d", &a, &b, &c); m = maximum(a, b, c); /* Chiamata della funzione */ printf("il massimo e': %d\n", m); return 0; /* Definizione della funzione massimo */ int maximum(int x, int y, int z) int max = x; if (y > max) max = y; if (z > max) max = z; return max; Esempio: maggiore tra 3 numeri interi #include <stdio.h> int maximum(int, int, int); /* Prototipo della funzione */ main() int a, b, c, m; Parametri attuali printf("inserisci tre numeri interi: "); scanf("%d%d%d", &a, &b, &c); m = maximum(a, b, c); /* Chiamata della funzione */ printf("il massimo e': %d\n", m); return 0; /* Definizione della funzione massimo */ int maximum(int x, int y, int z) int max = x; if (y > max) max = y; if (z > max) max = z; return max; Parametri formali 10
11 Il C è orientato alle funzioni In C, diversamente da altri linguaggi (ad esempio il Pascal) non esistono sottoprogrammi, ma solo funzioni. A volte è utile scrivere funzioni che non devono ritornare nessun valore In questo caso, la funzione viene dichiarata con valore di ritorno di tipo void: void f(int x, int y); Variabili locali e globali Ogni funzione può usare solo le variabili dichiarate al suo interno e le variabili globali Le variabili locali nascono e muoiono con la funzione Variabili non globali e non dichiarate all interno di una funzione possono essere usate solo se passate come parametri 11
12 Regole di visibilità. Le variabili dichiarate all interno di una funzione sono visibili solo all interno della funzione stessa. Esempio: void f() int a; /* Non importa se nel main che chiama f c è già una variabile che si chiama a! */ [ ] Passaggio di parametri I parametri, in C, sono passati per valore. Questo vuol dire che le modifiche fatte ai parametri non hanno effetto fuori dalla funzione. Tuttavia, vedremo che con i puntatori è possibile ottenere un effetto diverso 12
13 Esempi di librerie di funzioni disponibili Alcuni esempi di librerie di funzioni già pronte a disposizione del programmatore C sono: Libreria standard per la gestione dell input/output (stdio); a questa libreria appartengono le funzioni printf, scanf; Libreria di funzioni matematiche standard (math); questa libreria contiene ad esempio funzioni per il calcolo di radici, esponenziale, logaritmi, funzioni trigonometriche, ecc. Ancora librerie Per usare le funzioni contenute in queste librerie, è necessario prima dichiarare tutte le funzioni in esse presenti; questo è possibile usando la direttiva #include: #include <stdio.h> : importa le dichiarazioni di tutte le funzioni della libreria stdio. I file.h vengono chiamati file header. 13
14 Un esempio: calcolo dei numeri primi Scrivere un programma in C che: chieda all utente di inserire un numero stampi a video tutti i numeri primi da 1 fino al numero inserito Una possibile funzione main() #include <stdio.h> int primo (int); /* Prototipo della funzione */ main () int i, n; printf ("Fino a quale numero vuoi trovare i numeri primi?"); scanf ("%i",&n); for (i=1;i<=n;i++) if (primo(i)==1) /* Chiamata della funzione */ printf ("%i\n",i); 14
15 primo(): possibile algoritmo Definizione: Un numero n èprimo se è divisibile solo per 1 e per n cioè se non è divisibile per nessun numero compreso tra 2 e n-1 Possiamo sfruttare questa definizione di numero primo e implementare una verifica per mezzo di un ciclo for primo(): il codice int primo (int n) /* Definizione della funzione */ int i; int primo=1; for (i=2; i<n; i++) if ((n%i)==0) primo=0; return (primo); 15
16 Un altro esempio: calcolo di mcd Scrivere una funzione che riceva in ingresso due numeri e restituisca il massimo comun divisore; Definizione: Il massimo comun divisore di due numeri interi a e b è il numero intero più grande che li divide entrambi. mcd: possibile algoritmo Dati due numeri a e b, il loro massimo comun divisore è <= del minore dei due Possiamo controllare tutti i numeri da 1 a min(a,b): il numero più grande che divide sia a che b è il massimo comun divisore 16
17 main() #include <stdio.h> int mcd (int, int); /* Prototipo della funzione */ main () int a, b; printf ("Inserisci 2 interi: "); scanf ("%i%i",&a, &b); printf ("%i\n",mcd(a,b)); /* Chiamata della funzione */ mcd() int mcd (int x, int y) /* Definizione della funzione */ int i; int mcd=1; int min = x; if (x==y) mcd = x; else if (x>y) min = y; for (i=1;i<=min;i++) if ((x%i)==0 && (y%i)==0) mcd=i; return (mcd); 17
18 Fattoriale Scrivere una funzione che, ricevuto in ingresso un numero n, ne restituisca il fattoriale n! Definizione: se n==0 => n! = 1, altrimenti: n! = 1*2*3* *(n-1)*n main () #include <stdio.h> int fatt (int); /* Prototipo della funzione */ main () int a; printf ("Inserisci un numero intero positivo: "); scanf ("%i",&a); printf ("Il fattoriale di %i e': %i\n",a,fatt(a)); /* Chiamata della funzione */ 18
19 fatt () int fatt(int n) int i,fatt=1; if (n==1 n==0) return (1); else for (i=1;i<=n;i++) fatt=fatt*i; return (fatt); Fattoriale Oppure possiamo calcolare il fattoriale come: n! = n*(n-1)* *1 19
20 fatt (): seconda versione int fatt(int n) int i,fatt=1; if (n==1 n==0) return (1); else for (i=n;i>=1;i--) fatt=fatt*i; return (fatt); Ricorsione Alcuni problemi possono essere formulati efficacemente in maniera ricorsiva Esempio: il fattoriale è stato sinora calcolato iterativamente come: n! = 1*2*3* *(n-1)*n oppure come: n! = n*(n-1)* *1 Il fattoriale si può calcolare ricorsivamente come: n! = n*(n-1)! 20
21 Ricorsione diretta e indiretta Tutte le funzioni C possono richiamare se stesse La ricorsione può essere: Diretta: una funzione f è espressa in termini di se stessa Indiretta: una funzione f è espressa in termini di un altra funzione a sua volta espressa direttamente o indirettamente in termini di f Fattoriale ricorsivo Proviamo a riscrivere ricorsivamente la funzione che calcola il fattoriale: int fatt(int n) if (n==1 n==0) return (1); else return (n*fatt(n-1)); 21
22 Struttura generale di una funzione ricorsiva f() se (ti trovi nel caso base) (es: n=1) ritorna (soluzione caso base) (es: 1) altrimenti ritorna la soluzione formulata in termini di una situazione più vicina al caso base; (es: n* fatt(n-1) ) Esempio: 5! 5! 5 * 4! return 5!=5*24=120 return 4!=4*6=24 4 * 3! return 3!=3*2=6 3 * 2! 2 * 1! return 2!=2*1=2 1 return 1 22
23 Un altro esempio: elevamento a potenza Si realizzi una funzione che, ricevuti in ingresso due numeri interi positivi base e exp, restituisca il numero base exp. main() #include <stdio.h> int potenza (int, int); /* Prototipo della funzione */ main () int b, e; printf ("Inserisci base ed esponente: "); scanf ("%i%i",&b, &e); printf ("La potenza e': %i\n",potenza(b,e)); 23
24 Elevamento a potenza iterativo int potenza(int base, int exp) int i,potenza=1; if (exp == 0) return(1); else for (int i=1;i<=exp;i++) potenza=potenza*base; return (potenza); Elevamento a potenza ricorsivo Essendo per definizione: base 0 =1, possiamo riscrivere ricorsivamente la formula che calcola la potenza: base exp =base*base exp-1 24
25 Elevamento a potenza ricorsivo int potenza(int base, int exp) if (exp == 0) return(1); else return (base*potenza(base,exp-1)); Esempio: return 2 4 =2*8=16 2 * 2 3 return 2 3 =2*4=8 2 * 2 2 return 2 2 =2*2=4 2 * * 2 0 return 2 1 =2*1=2 1 return 1 25
26 Un altro esempio: calcolo ricorsivo di mcd Scrivere una funzione ricorsiva che riceva in ingresso due numeri a, b e restituisca il massimo comun divisore; Definizione: Il massimo comun divisore di due numeri interi a e b è il numero intero più grande che li divide entrambi. Calcolo ricorsivo di mcd Dati due numeri a e b, il loro massimo comun divisore sarà definito in modo ricorsivo come segue: se b==0 allora mcd(a,b) = a, altrimenti mcd(a,b) = mcd(b, a%b) 26
27 Un altro esempio: calcolo ricorsivo della somma Dati 2 numeri interi a,b calcolare ricorsivamente la somma a+b: int somma_ric (int a, int b) Definizione di somma (ricorsiva): se y==0 return(x), altrimenti: somma_ric(a,b)=somma_ric(a,b-1)+1 Calcolo iterativo del prodotto scalare di 2 vettori Dati 2 vettori a e b di dimensione n: a= [a1, a2,, an] b= [b1, b2,, bn] Calcolare iterativamente la funzione prodotto scalare a x b: int prod_scalare (int a[], int b[], int n) Definizione di prodotto scalare (iterativo): a x b = a1 * b1 + a2 * b an * bn = Σ (ai * bi ) 27
28 Calcolo ricorsivo del prodotto scalare di 2 vettori Dati 2 vettori a e b di dimensione n: a= [a1, a2,, an] b= [b1, b2,, bn] Calcolare ricorsivamente la funzione prodotto scalare: int prod_scalare (int a[], int b[], int n) Definizione di prodotto scalare (ricorsivo): se n==1 return(a1*b1), altrimenti: prod_scalare(a,b,n)=prod_scalare(a,b,n-1)+an*bn 28
int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;
Problema: CALCOLARE LA SOMMA DEI FATTORIALI DEI PRIMI 100 NUMERI NATURALI 0!+1!+2! + 99! #include int fattoriale(int); Calcolo fattoriale int main(){ int numero; /* numero di cui voglio calcolare
DettagliLinguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili
DettagliLA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag.
I lucidi sono una rielaborazione e integrazione di quelli messi a disposizione dei docenti nel sito relativo al testo: Informatica: arte e mestiere 2/ed Stefano Ceri, Dino Mandrioli, Licia Sbattella Copyright
DettagliRICORSIONE. Informatica B - A.A. 2013/2014
RICORSIONE Informatica B - A.A. 2013/2014 RICORSIONE Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che comporta
DettagliUniversità degli Studi di Ferrara
Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018-2019 Programmazione Lezione 11 Funzioni Docente: Michele Ferrari - michele.ferrari@unife.it Nelle lezioni precedenti Operatore
DettagliFUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice
Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni
DettagliFunzioni in C. Informatica Generale - Funzioni in C Versione 1.0, aa p.1/25
Funzioni in C Informatica Generale - Funzioni in C Versione 1.0, aa 2005-2006 p.1/25 Definizione di funzione () è
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliCorso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale
DettagliLe Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia
Le Funzioni in C Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2010/2011 docente: prof. Michele Salvemini 1/24 Sommario Le funzioni Il
DettagliFondamenti di Informatica
Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile
DettagliRicorsione. DD cap. 5 pp KP cap. 5 pp
Ricorsione DD cap. 5 pp.160-184 KP cap. 5 pp.199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale se n>1 n!=n(n-1)(n-2)(n-3) 1; se n=0 o 1 n!=1. ma (n-1)! la definizione
DettagliFunzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
DettagliAmbienti di Programmazione per il Software di Base
Ambienti di Programmazione per il Software di Base Le Funzioni in C Esercizi sulle Funzioni svolti Esercizi sulle Funzioni da svolgere A.A. 2011/2012 Ambienti di Programmazione per il Software di Base
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
DettagliC funzioni à scope di variabili
C funzioni à scope di variabili Per questo motivo il parametro di una function può avere lo stesso nome del parametro effettivo del processo chiamante. Possiamo definire anche delle variabili globali e
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,
DettagliA. Ferrari Informatica
Informatica ricorsione definizioni o un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di se stesso o la ricorsione è un mezzo molto potente per le definizioni e le dimostrazioni
DettagliInformatica (A-K) 5. Algoritmi e pseudocodifica
Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliFondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliIntroduzione al linguaggio C Funzioni
Introduzione al linguaggio C Funzioni Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
DettagliEsercizi. FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo. Funzioni
Politecnico di Milano Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo Definizione: Funzioni tipo_ritornato nome (lista di parametri) istruzioni; Segnatura
DettagliC: primi elementi. Lezione 4
C: primi elementi Lezione 4 Evoluzione del BCPL (1967) e B (1970), entrambi typeless Sviluppato da Dennis Ritchie nel 1972 ed implementato per il PDP-11 Usato per lo sviluppo del sistema operativo UNIX
DettagliInformatica (A-K) 12. Linguaggio C -3
Introduzione alle funzioni in C Informatica (A-K) 12. Linguaggio C -3 int main() int i,n, fattoriale=1; printf( Inserire Numero: ); scanf( %d, &n); for (i =2; i
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C Materiale disponibile sul sito http://www.fisica.unile.it/~martello/corsi/dottorato/tecnooo/tecnooo_03-04/index.html
DettagliProgrammazione ricorsiva.
In quasi tutti i linguaggi di programmazione evoluti è ammessa la possibilità di definire funzioni/procedure ricorsive: durante l esecuzione di una funzione F è possibile chiamare la funzione F stessa.
DettagliProgrammazione ricorsiva: cenni
In quasi tutti i linguaggi di programmazione evoluti è ammessa la possibilità di definire funzioni/procedure ricorsive: durante l esecuzione di una funzione F è possibile chiamare la funzione F stessa.
DettagliUnità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa
DettagliRICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio
RICORSIONE, PUNTATORI E ARRAY Quarto Laboratorio 16 DICEMBRE 2011 SCADENZA TERZA ESERCITAZIONE FUNZIONI RICORSIVE ESERCIZIO Scrivere una funzione ricorsiva che, assegnati due interi N1 ed N2, restituisca
DettagliFUNZIONI E PROCEDURE IN C. Docente: Giorgio Giacinto AA 2009/2010. dall utente, sia predefiniti, il C consente di creare funzioni e procedure
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
DettagliIntroduzione alla Ricorsione
Introduzione alla Corso di Informatica A Vito Perrone Indice La formulazione in termini ricorsivi di problemi e algoritmi La ricorsione come strumento di programmazione L esecuzione dei sottoprogrammi
DettagliElementi DI INFORMATICA. Linguaggio C
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Elementi DI INFORMATICA http://agile.diee.unica.it A.A. 2015/2016 Ing. Marco Ortu Diee, secondo piano Tel. 070-6755774 mail:
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 4 Operatori e introduzione a funzioni Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Soluzioni ad alcuni esercizi Alcuni commenti sugli
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Parte 8 Dettagli e Approfondimenti versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima
DettagliERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
DettagliLaboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)
Laboratorio Due 1) Switch 2) Costrutti Iterazione (For, While, do while) GLI ARGOMENTI DI OGGI Istruzione switch I costrutti di iterazione (For, while, do while) Le funzioni (e ricorsione) Terza Esercitazione
DettagliEsercitazione 5. Procedure e Funzioni Il comando condizionale: switch
Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case
DettagliLinguaggio C: le funzioni
Linguaggio C: le funzioni prof. Lorenzo Porcelli e mail: genna18@iol.it sito: http://users.iol.it/genna18 Introduzione attraverso un esempio Problema: Conoscendo le misure di n rettangoli, determinare
DettagliEsercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione
DettagliPROGRAMMAZIONE: I sottoprogrammi
PROGRAMMAZIONE: I sottoprogrammi Prof. Enrico Terrone A. S: 2008/09 Definizione Un sottoprogramma è un blocco di istruzioni a sé stante con un proprio nome. Il main (= sottoprogramma principale) è un caso
DettagliFILE DI TESTO e SOTTOPROGRAMMI
FILE DI TESTO e SOTTOPROGRAMMI Prof. Enrico Terrone A. S: 2008/09 I file di testo in C++ I file di testo sono una forma di input/output alternativa alla tastiera e al monitor (con il vantaggio della persistenza).
DettagliINFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan
INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento lunedì, prima o dopo lezione 1 Le funzioni in C Le funzioni vengono utilizzate per 3 motivi: Riusabilità
DettagliIntroduzione ai puntatori in C Definizione
Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il
DettagliStrutturare il codice: sottoprogrammi
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Motivazioni Alcuni problemi si presentano frequentemente durante lo sviluppo di un programma
DettagliCominciamo con un esempio... Utilizzando un sottoprogramma 16/12/2017
Cominciamo con un esempio... Franco FRATTOLILLO Dipartimento di Ingegneria Università degli Studi del Sannio Corso di "Programmazione I" Corso di Laurea in Ingegneria Informatica / ExAT 1 Franco FRATTOLILLO
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 19 Ricorsione A. Miola Marzo 2010 http://www.dia.uniroma3.it/~java/fondinf/ Ricorsione 1 Contenuti Funzioni e domini definiti induttivamente
DettagliEsempi di programmazione in C
Esempi di programmazione in C Problemi elementari..................................... 363 Somma tra due numeri positivi......................... 363 Moltiplicazione di due numeri positivi attraverso la
DettagliUn programma deve essere scritto come collezione di tante piccole funzioni perché:
Un programma deve essere scritto come collezione di tante piccole funzioni perché: ƒè più facile scrivere correttamente una funzione breve che abbia un unico compito: in questo modo sia la scrittura che
DettagliRicorsione. Prof. Orazio Mirabella. La ricorsione. La ricorsione consiste nella possibilità di definire una funzione mediante se stessa.
Ricorsione Prof. Orazio Mirabella La ricorsione La ricorsione consiste nella possibilità di definire una funzione mediante se stessa. È basata sul principio di induzione matematica: se una proprietà P
DettagliCapitolo 5 - Funzioni
Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione 1 C-Introduzione.tex: Versione 1.0, aa 2005-2006 Linguaggi di programmazione (1) Sono linguaggi che permettono la codifica di algoritmi in modo da renderli eseguibili, direttamente
DettagliIL PRIMO PROGRAMMA IN C
IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE
DettagliLezione 8. Sottoprogrammi
Lezione 8 Il linguaggio C: Sottoprogrammi e Funzioni I puntatori Input/Output su file Sottoprogrammi Per risolvere un problema si può scomporlo in problemi più semplici e comporre le loro soluzioni in
DettagliRicorsione: C era una volta un Re
Ricorsione: C era una volta un Re I C era una volta un Re seduto sul sofà che disse alla sua serva raccontami una storia e la serva incominciò: I C era una volta un Re seduto sul sofà che disse alla sua
DettagliLaboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/05/08 Nota Questi lucidi sono tratti
DettagliLABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. Algoritmi ricorsivi
LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna Partiamo da un
DettagliEsercizi. La funzione swapint() primo tentativo
Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include
DettagliLo scopo. Il primo esperimento. Soluzione informale. Le variabili
Lo scopo 2 Il primo esperimento Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video Ver. 2.4
Dettagli#include <stdio.h> main() { - 1 -
Un primo esempio di programma Ogni programma C deve contenere una funzione speciale chiamata main che indica il punto in cui inizia l esecuzione del programma. La funzione main è unica all interno di ogni
DettagliLABORATORIO di INFORMATICA
Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto FUNZIONI E PROCEDURE http://www.diee.unica.it/giacinto/lab
DettagliL organizzazione dei programmi
L organizzazione dei programmi Lo sviluppo top-down L.S. Touschek - A.S. 2015/2016 - I fondamenti del Linguaggio C F. Cardarelli Lo sviluppo top-down I problemi complessi Blocco 1 Istruzione 1 Istruzione
DettagliFondamenti di Programmazione
A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome
DettagliSotto programmi - Funzioni in C
Sotto programmi - Funzioni in C R. Gallo Settembre 2009 Sommario Le funzioni C/C++ sono l'implementazione in codice C/C++ di uno strumento presente in tutti i linguaggi di programmazione: i sottoprogrammi
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati 1 Note di carratere generale Docente: Camillo Fiorentini 9 ottobre 2007 L obiettivo è quello di scrivere delle semplici funzioni per risolvere problemi di tipo
DettagliSTRUTTURA DI UN PROGRAMMA!
STRUTTURA DI UN PROGRAMMA! File prova1.c Area globale #include ... int m; int f(int); int g(int x){.../*ambiente locale a g*/} int main(){...} int f(int x){.../*ambiente locale a f*/} Direttive
DettagliProgrammazione C: Esercizi su vettori e funzioni. Titolo presentazione. sottotitolo. Milano, XX mese 20XX
Titolo presentazione Programmazione C: sottotitolo Esercizi su vettori e funzioni Milano, XX mese 20XX Informatica ed Elementi di Informatica Medica Agenda Richiami su vettori e funzioni Esercizi su vettori
DettagliDefinizione di funzione. <tipo> <nome_funzione> (<lista_parametri>) { <definizioni di variabili> <istruzioni> }
Avvertenza Quanto segue NON è un libro, ma è una copia dei lucidi usati a lezione che NON sostituisce i libri di testo adottati e consigliati per l insegnamento di Informatica Generale. Questa copia è
Dettagliliceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA
INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE PROGRAMMAZIONE BIENNIO: SECONDA DISCIPLINA: INFORMATICA PIANO DI LAVORO DEL DOCENTE / RELAZIONE FINALE Anno scolastico 2014/2015 DOCENTE Prof. PAOLO ARMANI CLASSE:
DettagliManualistica 3 Le strutture di controllo
Programmazione e Laboratorio di Programmazione Manualistica 3 Le strutture di controllo Programmazione e Laboratorio di Programmazione: Le strutture di controllo 1 Le strutture di controllo Strutture di
DettagliEsercitazione 7. Soluzione:
Esercitazione 7 Esercizio 1: Scrivere una funzione ricorsiva che calcoli il MCD di due numeri interi positivi. Ricordare che la funzione MCD(N,M) termina quando N == M e si ritorna N. int MCD(int N, int
DettagliPag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi
1 Università degli studi di Parma Dipartimento di Ingegneria dell Informazione Informatica a.a. 2012/13 Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni La formalizzazione
DettagliProgettazione Top Down e funzioni in C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Progettazione Top Down e funzioni in C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Progettazione top-down Quando si ricerca la soluzione di un problema complesso può essere complicato
DettagliC: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
DettagliEsercitazione 2. Espressioni booleane Il comando if-else
Esercitazione 2 Espressioni booleane Il comando if- Espressioni booleane L espressione (i==100) è un espressione booleana. La sua valutazione può restituire solo uno dei due valori booleani true = 1 (in
DettagliEsercitazione 5. Procedure e Funzioni Il comando condizionale: switch
Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case
DettagliAstrazione Funzionale
FIL: Astrazione Funzionale Michele Nappi, Ph.D Dipartimento di Matematica e Informatica Università degli Studi di Salerno mnappi@unisa.it biplab.unisa.it it 089-963334 Divide et impera Costruire un programma
Dettagli#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()
Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine
DettagliLaboratorio di Informatica Lezione 3
Laboratorio di Informatica Lezione 3 Cristian Consonni 14 ottobre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 3 1 / 76 Outline 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili
DettagliFondamenti di Informatica L-A
Fondamenti di Informatica L-A Esercitazione del 23/11/07 Ing. Giorgio Villani Ripasso Teoria Funzioni ricorsive 2 fatt(2) 1 2*fatt(1) fatt(1) 1 2*1 1*fatt(0) fatt(0) 1*1 caso base fatt(0)=1 Esercizio 1
DettagliIntroduzione. Le funzioni in C. Funzioni. Cosa succede
Introduzione Le funzioni in C DD Cap.5 pp.131-160 KP Cap.5 pp. 175-199 La maggior parte dei programmi scritti per risolvere problemi sono (molto!) più lunghi di quelli visti fin ora. Il modo migliore per
DettagliUnità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 5: Funzioni e programmazione modulare Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Esercizi (Fibonacci e numeri primi) Funzioni Regole
DettagliFondamenti di Programmazione
A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome
DettagliEsercizio 1: funzione con valore di ritorno di tipo puntatore
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio
DettagliFunzioni e. Alessandra Giordani Mercoledì 16 maggio 2012
Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni
DettagliVariabili e Funzioni. Informatica 1 / 19
Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:
DettagliLaboratorio di linguaggi
lezioni: lunedi 9-11, aula A al corso Laboratorio di linguaggi laboratorio in tre turni: martedi 11-13 () giovedi 9-11 () venerdi 11-13 (Andrea Grosso) laboratorio: iscriversi all esame Corso A LABORATORIO
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
Dettaglicout << "Inserisci un numero:" << endl; cin >> n; ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;
Funzioni int n, ris; cout n; ris = n*2; cout
DettagliIl corpo di tutte le funzioni deve essere contenuto tra parentesi graffe
Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine
DettagliLa Programmazione. Cos è la programmazione? Concetti preliminari
La Programmazione Cos è la programmazione? Concetti preliminari 1 Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione
DettagliInformatica A (per gestionali) A.A. 2004/2005. Esercizi C. Funzioni: variabili e tipi locali e globali, passaggio parametri per valore, prototipo
Informatica A (per gestionali) A.A. 2004/2005 Esercizi C Funzioni: variabili e tipi locali e globali, passaggio parametri per valore, prototipo Indice 1 Funzioni: passaggio di parametri per valore, variabili
DettagliEsercizi Programmazione I
Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=
DettagliLaboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013
Laboratorio Progettazione Web Le funzioni in PHP Angelica Lo Duca IIT-CNR angelica.loduca@iit.cnr.it 2012/2013 Funzioni Una funzione è una sequenza di istruzioni che implementano una specifica funzionalità
Dettagli