Le funzioni. Fondamenti di programmazione
|
|
- Eugenio Graziano
- 6 anni fa
- Visualizzazioni
Transcript
1 Le funzioni Fondamenti di programmazione
2 Moduli I programmi sono spesso abbastanza complessi da dover essere scomposti in pezzi più maneggevoli Un modulo consiste di istruzioni per svolgere un certo compito raggruppate insieme in un unità a cui è dato un nome Vantaggi: il nome può essere usato come sostituto dell intero insieme di istruzioni risparmio di scrittura, organizzazione, riutilizzo
3 Programmazione modulare Le funzioni in C permettono di realizzare la scomposizione di un programma in sottoprogrammi (o moduli) main Funzioni di I/O scanf,printf Funzioni matematiche sqrt,pow Funzioni scritte dal programmatore
4 Black box result=sqrt(x); Funzione sqrt Calcolo della x vale 25 Radice quadrata result vale 5.0 y=4.7+sqrt(x); //y vale 9.7 z=sqrt(12.+4.); //z vale 4.0
5 Caso di studio Programma di conversione da gradi Fahrenheit a Celsius: #include<stdio.h> #include<stdlib.h> #include<stdio.h> #include<stdlib.h> main() { main() { double tc, tf, offset, conv; double tc, tf, offset, conv; offset = 32.; offset = 32.; conv = 5./ 9.; conv = 5./ 9.; /*Acquisizione dati*/ /*Acquisizione dati*/ printf("valore in gradi Fahrenheit = "); /*conversione*/ scanf("%lf", &tf); /*conversione*/ /*stampa risultati*/ tc = converter(tf,offset,conv); /*stampa risultati*/ } printf("valore in gradi celsius = %f\n", tc); }
6 Dichiarazione (il prototipo) Una funzione deve essere dichiarata prima di poter essere utilizzata tipo_prog nome_funzione(parametri,...) Il prototipo specifica: Il tipo della funzione (ovvero il tipo ritornato) Il nome della funzione Il numero e il tipo dei parametri formali della funzione
7 Dichiarazione Dove si inserisce? Prima della funzione main() dopo le #define Includendo la libreria standard o utente che contiene il prototipo della funzione Consente al compilatore di tradurre correttamente la chiamata alla funzione in termini di trasferimento del controllo di flusso
8 Prototipi int main(void) Il tipo può essere omesso (se l'istruzione return è omessa, main restituisce 0) int scanf(const char *format,...); void printf(const char *format,...); double converter(double,double double)
9 } Dichiarazione #include<stdio.h> #include<stdlib.h> double converter(double,double,double); main() { double tc, tf, offset, conv; offset = 32.; conv = 5./ 9.; printf("valore in gradi Fahrenheit = "); scanf("%lf", &tf); tc = converter(tf,offset,conv); printf("valore in gradi celsius = %f\n", tc);
10 Definizione Intestazione della funzione (simile al prototipo ma specifica i nomi dei parametri formali e non termina con ; ) Contiene la specifica delle istruzioni della funzione
11 Definizione tipo nome della funzione parametri formali double converter(double temp_f,double offset, double fat_conv) { return((temp_f-offset)*fat_conv); } Istruzione di ritorno del valore del tipo specificato
12 Esempi Scrivere una funzione che calcola la somma dei quadrati di due numeri double squaresum(double a, double b) { } return (a * a + b * b);
13 Esempi Scrivere una funzione che calcola il fattoriale di un intero n unsigned long long int factorial(int n ) { } int i; unsigned long long int p = 1; for (i = 1; i <= n; i++) { p *= i;} return p;
14 Posizionamento delle funzioni La visibilità di una funzione dipende dalla dichiarazione o dal posizionamento L'ordine in cui vengono definite le funzioni non influisce sull'ordine con cui vengono eseguiti L'ordine di esecuzione dipende dall'ordine delle chiamate
15 #include<stdio.h> #include<stdlib.h> Ordine di chiamata = ordine di esecuzione main() { double tc, tf, offset, conv; offset = 32.; conv = 5./ 9.; /*Acquisizione dati*/ printf("valore in gradi Fahrenheit = "); scanf("%lf", &tf); /*conversione*/ tc = converter(tf,offset,conv); /*stampa risultati*/ printf("valore in gradi celsius = %f\n", tc); }
16 Chiamata a funzione #include<stdio.h> #include<stdlib.h> main() { double tc, tf, offset, conv; offset = 32.; conv = 5./ 9.; /*Acquisizione dati*/ printf("valore in gradi Fahrenheit = "); scanf("%lf", &tf); /*conversione*/ tc = converter(tf,offset,conv); /*stampa risultati*/ printf("valore in gradi celsius = %f\n", tc); } double converter(double temp_f,double offset, double fat_conv) { return((temp_f-offset)*fat_conv); }
17 Parametri formali e attuali L'input per la funzione chiamata viene trasmesso dalla funzione chiamante attraverso i parametri Parametri attuali (funzione chiamante) e parametri formali (funzione chiamata) si devono accordare nel numero e nel tipo ordinatamente Non c'è un legame tra i nomi
18 Esecuzione della chiamata Il prototipo consente al compilatore di tradurre correttamente la chiamata alla funzione in termini di trasferimento del controllo di flusso dal chiamante al chiamato Al termine della funzione chiamata viene aggiunta una istruzione (nel programma oggetto) che causa il trasferimento di controllo di flusso al chiamante
19 Esecuzione della chiamata #include<stdio.h> #include<stdlib.h> main() { double tc, tf, offset, conv; offset = 32.; conv = 5./ 9.; /*Acquisizione dati*/ printf("valore in gradi Fahrenheit = "); scanf("%lf", &tf); /*conversione*/ tc = converter(tf,offset,conv); /*stampa risultati*/ printf("valore in gradi celsius = %f\n", tc); } double converter(double temp_f,double offset, double fat_conv) { return((temp_f-offset)*fat_conv); }
20 Passaggio di dati per valore La funzione chiamata tramite il parametro formale riceve l'attuale valore del dato passato tramite il parametro attuale (ma non ha accesso alla variabile usata come parametro attuale) Per riferimento: la funzione chiamata riceve l'indirizzo della posizione di memoria che contiene il dato
21 L'esecuzione e la memoria Quando viene eseguito un programma la prima istruzione eseguita è la prima istruzione del main() Quando viene chiamata una funzione, il controllo di flusso viene trasferito alla funzione e in memoria (nello stack) vengono allocate le variabili dichiarate in essa e i parametri Al termine dell'esecuzione della funzione, il controllo viene trasferito e la memoria liberata Il valore restituito (se presente) viene scambiato usando un registro del processore come variabile condivisa Il programma termina dopo aver eseguito l'ultima istruzione del main()
22 L'esecuzione e la memoria Prima della chiamata: Area di memoria main Area di memoria converter conv 5./9 offset 32. tc? tf 59.
23 L'esecuzione e la memoria Passaggio di dati per valore: Area di memoria main Area di memoria converter conv offset temp_f offset 5./ tc tf fat_conv? /9
24 L'esecuzione e la memoria Al termine dell'esecuzione di converter: conv Area di memoria main offset Area di memoria converter liberata 5./9 32. tc 15. tf 59.
25 Parametri del main main(int argc, char *argv[]) Il primo parametro indica la lunghezza +1 di argv Il secondo parametro indica le stringhe in input al programma (argomanti a riga di comando) Se ad es. un programma backup potrebbe richiedere il nome del file di cui eseguire il backup e il nome del file di backup >backup 3 old.txt new.txt
26 Come posso modificare la variabile in input in una funzione? Come posso ritornare più di un valore? Come posso passare usare un array come parametro di una funzione?
27 Problema: scrivere una funzione che scambia il contenuto di due variabili
28 Esempio sbagliato main() { double x, y; x = 3.14; y = 2.72; printf(" prima dello scambio, x = %f, y = %f\n", x, y); wrongswap(x, y); printf(" dopo lo scambio, x = %f, y = %f\n", x, y); } void wrongswap(double a, double b) { double temp; temp = a; a = b; b = temp; }
29 Area di memoria main Area di memoria wrongswap x y a b temp?
30 Area di memoria main Area di memoria wrongswap x y a b temp 3.14
31 Esempio corretto main() { double x, y; x = 3.14; y = 2.72; printf(" prima dello scambio, x = %f, y = %f\n", x, y); swap(&x, &y); printf(" dopo lo scambio, x = %f, y = %f\n", x, y); system("pause"); } Parametri in ingresso e in uscita void swap(double *a, double *b) { double temp; temp = *a; *a = *b; *b = temp; }
32 Area di memoria main x 3.14 Area di memoria swap a y b 2.72 temp?
33 Nota bene: l'inizializzazione dei puntatori come parametri formali avviene attraverso il passaggio di parametri per valore con la chiamata della funzione
34 Area di memoria main x 2.72 Area di memoria swap a y b 3.14 temp 3.14
35 main() { double x[n], y[n],z[n]; int n; /*Acquisizione dati per n(=3), e per gli array x e y*/... add_arrays(x,y,z,3);... } array in ingresso array in uscita void add_arrays(const double a[],const double b[],double sum[],int n) { int i; for(i=0;i<n;i++){ sum[i]=a[i]+b[i]; }
36 Area di memoria main Area di memoria add_arrays x a n b 3 y sum z? 2.72??
37 Area di memoria main Area di memoria add_arrays x a n b 3 y sum z
38 Tempo di vita e visibilità Intervallo temporale durante il quale una variabile è mantenuta in memoria Visibilità: sezione di codice entro il quale il nome della dichiarazione può essere usato Globale: visibile da tutto il programma con durata per tutta l'esecuzione del programma Locale: nel corpo di una funzione, nei parametri formali o in un blocco (nascondono variabili con stesso nome)
39 Tempo di vita, visibilità e memoria La memoria allocata dal compilatore prima dell'esecuzione del programma può essere gestita staticamente Visibilità globale Tempo di vita: esecuzione del programma La memoria allocata durante l'esecuzione del programma viene gestita dinamicamente (stack) Variabili locali, blocchi di istruzioni, funzioni
40 Stack e tempo di vita della variabili Stack di sistema: area di memoria che supporta i meccanismi di trasferimento del controllo e la comunicazione tra funzioni Al momento della chiamata di una funzione sullo stack sono memorizzati: L'indirizzo dell'ultima istruzione eseguita nel chiamante Valori attuali dei parametri Variabili locali della funzione Al termine dell'esecuzione della funzione la memoria è liberata
41 Chiamate successive di una funzione Come posso modificare la variabile in input in una funzione? Come posso ritornare più di un valore? Come posso mantenere il valore di una variabile tra chiamate successive di una funzione? Problema: scrivere un programma che realizza una pila (funzioni push e pop)
42 Stack Push: Se la pila non è piena (TOS<N) Inserisci l'elemento in TOS Incrementa TOS Pop: Se la pila non è vuota (TOS>0) Decrementa TOS Elimina l'elemento in TOS
43 Stack Attenzione! L'operazione di pop rende disponibile (al chiamante) l'elemento eliminato dalla pila Se l'elemento è un intero, il parametro corrispondente deve essere un parametro in uscita, quindi un puntatore ad intero
44 Stack Attenzione! TOS deve mantenere il suo valore tra chiamate successive della funzione Come posso mantenere il valore di una variabile tra chiamate successive di una funzione? Il parametro corrispondente a TOS deve essere un parametro in ingresso e in uscita della funzione
45 Parametri in ingresso e in uscita I parametri formali di una funzione che permettono la comunicazione dalla funzione chiamante alla funzione chiamata sono parametri in ingresso I parametri formali di una funzione che permettono la comunicazione dalla funzione chiamata alla funzione chiamante sono parametri in uscita I parametri formali di una funzione che permettono la comunicazione dalla funzione chiamante alla funzione chiamata e viceversa sono parametri in ingresso e in uscita
46 Coda Enqueue: Se la coda non è piena (tail+1<n) Inserisci l'elemento in tail Incrementa tail Dequeue: Se la coda non è vuota (head!=tail) Elimina l'elemento in head Incrementa head
47 Coda (anello) Enqueue: Se la coda non è piena (tail+1!=head) Dequeue: Inserisci l'elemento in tail Incrementa tail (l'elemento successivo di N-1 è 0) Se la coda non è vuota (head!=tail) Elimina l'elemento in head Incrementa head (l'elemento successivo di N-1 è 0)
48 Coda (anello) Attenzione! tail e head sono parametri in ingresso e in uscita value è un parametro in ingresso in enqueue value corrisponde ad un parametro in uscita in dequeue
49 Parametri in ingresso e in uscita Come posso passare usare un array come parametro di una funzione?
50 Passaggio di parametri: array Problema: Scrivere un programma che somma gli elementi corrispondenti di due array a e b e memorizza i risultati in un terzo array sum void add_arr(int a[],int b[],int sum[],int n);
51 Array multidimensionali e puntatori int a[3][4]; rappresenta una matrice di 3 righe e 4 colonne L'indice di riga è più lento Possiamo pensarlo come 3 sottoarray di 4 elementi a[0][0]a[0][1]a[0][2]a[0][3] a[1][0]...a[1][3] a[2][0]...a[2][3] a[0] a[1] a[2] a Se si dichiara a[n1][n2] a[i][j] equiv *(*(a+i)+j) equiv *(&a[0][0]+n2*i+j)
52 Passaggio di parametri La prima dimensione è l'unica che può essere omessa (le altre sono necessarie per l'accesso agli elementi) initialize(int a[][n], int nrows) Il valore memorizzato nel parametro formale di un array è l'indirizzo del primo elemento del parametro attuale es. somma di due matrici in una terza
Funzioni, 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
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliProgrammazione (imperativa)
Programmazione (imperativa) Corso di Laurea in Informatica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Lunedì 12.00-13.00 e 14.00-16.00 Mercoledì 14.00-17.00 Laboratorio: Giovedì 12.00-13.00
DettagliLaboratorio di Programmazione Lezione 3. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 3 Cristian Del Fabbro Prossima lezione GIOVEDÌ 12 NOVEMBRE ORE 14:00 Array a.k.a. vettore Un array è una collezione ordinata di dati omogenei (cioé sono tutti dello
DettagliOttenere una modifica del parametro attuale
Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)
DettagliPassare argomenti al programma
Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Puntatori a funzioni 1 Funzioni che restituiscono puntatori Il valore di ritorno restituito da una funzione può essere di qualsiasi tipo, compreso il tipo puntatore.
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
DettagliLezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
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
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
DettagliScope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano
Scope delle variabili e passaggio parametri Danilo Ardagna Politecnico di Milano 1-4-2014 Introduzione! Con le funzioni è stato introdotto un meccanismo per definire dei piccoli programmi all interno di
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliTempo di vita e scope delle variabili
Tempo di vita e scope delle variabili Richiami sulla struttura di un programma C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume tutto in un unico file):
DettagliNon ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
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;
DettagliIl C nel C++: Funzioni
Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma
DettagliI puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
DettagliStruttura dei programmi C
Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte
DettagliLezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione
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
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliInput/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
DettagliApplicando lo stesso meccanismo al tipo puntatore, possiamo dichiarare un array di puntatori:
Le tabelle In C, dato un tipo di variabile, è possibile costruire un array di variabili di tale tipo usando la dichiarazione (facendo l esempio per il tipo float): float vettore[100]; Applicando lo stesso
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
Dettagliuguale livello gerarchico non vi sono funzioni più importanti di altre main main
FUNZIONI in C/C++ Un programma C++ è un insieme di funzioni indipendenti e di uguale livello gerarchico (nel senso che non vi sono funzioni più importanti di altre o dotate, in qualche modo, di diritti
DettagliPrecedenza e associatività. Complementi sul C - 2. Esempi. Esempi
Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >
DettagliProgrammazione modulare
Programmiamo in.. Programmazione modulare Un programma complesso si suddivide in più sottoprogrammi o funzioni. Un programma suddiviso in piccoli pezzi, è più semplice da gestire da aggiornare da correggere
DettagliArgomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili
Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto
DettagliFondamenti di Informatica
Passaggio di parametri in C++ Il passaggio dei parametri tra funzione chiamante e funzione chiamata in C++ avviene secondo due modalità: Fondamenti di Informatica 16. Funzioni in C++ (parte 2) per valore
DettagliLinguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliLinguaggio C - Funzioni
Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche
DettagliIl blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio:
Variabili locali Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. void leggivettore(int v[], int dim) int i; /* i E UNA VARIABILE LOCALE */ for (i
DettagliPuntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
DettagliArray multidimensionali e stringhe
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi
DettagliFUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi:
FUNZIONI RICORSIVE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento (chiamata) a se stessa. Esempio: Esempi di problemi ricorsivi: 1) Somma dei primi
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliComplementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -
Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliProgrammazione a moduli in C
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
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
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
DettagliUso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016
DettagliFunzioni. (Dichiarazione, Prototipo, Chiamata) Concetto di funzione
Funzioni (Dichiarazione, Prototipo, Chiamata) Concetto di funzione L astrazione di funzione è presente in tutti i linguaggi di programmazione di alto livello. Una funzione è un componente software che
DettagliArray. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali
MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono
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
DettagliUnità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.
Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti
Dettagli4 GLI ARRAY E LE STRINGHE
13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si
DettagliFondamenti di Informatica II
Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Tipi di dati astratti(adt)- seconda parte Coda Struttura
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
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
DettagliCapitolo 19. Ricorsione
Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!
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
DettagliLa struttura dati CODA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta
DettagliGESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009
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
DettagliIl linguaggio C Puntatori
Il linguaggio C Puntatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - puntatori 2 Ringraziamenti Questi
Dettaglidirettive del preprocessore simboli speciali parole chiave identificatori costanti
5) Elementi di C #include #define TF2TC main() { double tc, tf, offset, conv; offset = 32.; direttive del preprocessore simboli speciali parole chiave identificatori costanti #ifdef TF2TC conv
DettagliARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.
3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il
DettagliScope, Memoria e Tabella dei Simboli
Scope, Memoria e Tabella dei Simboli La tabella dei simboli è uno strumento fondamentale attraverso il quale interpreti e compilatori implementano la traduzione da un programma scritto in un linguaggio
DettagliLa gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali
DettagliAPPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014 VINCENZO MARRA Indice Esercizio 1 1 Leggere stringhe e caratteri 1 Esercizio 2 2
Dettaglifile fisico file logico
I files Un file è una struttura di dati residente su una memoria di massa (file fisico) Un programma vede un file come una sequenza di bytes (file logico) Generalizzando, un file può comprendere qualsiasi
DettagliEsercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)
Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Selezione di prove di esame al calcolatore Esercizio 1 (esame del 13/01/2006) La classe Matrice definisce oggetti che rappresentano matrici
DettagliHOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.
HOMEWORKS Questi esercizi saranno proposti di tanto in tanto e forniti sempre SENZA soluzioni. Come materiale complementare ai libri di testo e alle lezioni frontali e di esercitazione, si consiglia di
DettagliIl linguaggio C Il linguaggio C. Caratteristiche del C. Caratteristiche del C. Linguaggi di Programmazione I. Ferdinando Cicalese
03-10-2003 Il linguaggio C Linguaggio general-purpose Il linguaggio C Creato nel 1972 nei Bell Labs da Dennis Ritchie su PDP11 Usato per il Sistema Operativo Unix da Ken Thompson Negli anni 80 nasce ANSI
DettagliCalcolatori Elettronici Lezione A4 Programmazione a Moduli
Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo
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
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
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
DettagliEsercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list
Esercitazione: Implementazione in linguaggio C dell ADT Stack con l utilizzo di linked list Laboratorio di Programmazione Introduzione un ADT (Abstract Data Type) è un modello (formale) che generalizza
DettagliArray. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliStringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
DettagliIl sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.
Sistema C e organizzazione del codice Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Un programma C è costituito da un insieme
DettagliVisibilità e tempo di vita delle variabili. (più sintesi di alcuni concetti della prima parte del corso)
Visibilità e tempo di vita delle variabili (più sintesi di alcuni concetti della prima parte del corso) Struttura dei programmi C/C++ Un programma C/C++ deve essere contenuto in uno o più file (per ora
DettagliFUNZIONI COME COMPONENTI SW FUNZIONI COME COMPONENTI SW FUNZIONI MODELLO CLIENTE/SERVITORE
FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione
DettagliMini-dispensa sui puntatori in C
Mini-dispensa sui puntatori in C P. Zavarise Versione 1 ottobre 013 1 Valore e indirizzo di una variabile Ripassiamo il significato di dal punto di vista del programmatore. int a=; Viene creata una variabile
DettagliUnità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi
Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliStrutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
Dettaglinome (lista_parametri) Funzioni funzioni predefinite: sqrt(x) log(x) usare queste funzioni significa: specificare il valore degli argomenti
Università di Roma Tor Vergata L9-1 Funzioni funzioni predefinite: sqrt(x) log(x) usare queste funzioni significa: specificare il valore degli argomenti utilizzare il valore restituito quanti argomenti
DettagliTipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliLezione 8 Struct e qsort
Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort
DettagliIntroduzione al C++ (continua)
Introduzione al C++ (continua) I puntatori Un puntatore è una variabile che contiene un indirizzo di memoria pi_greco 3.141592 pi_greco_ptr indirizzo di 3.141592 & DEREFERENZIAZIONE RIFERIMENTO * se x
DettagliLinguaggio C: PUNTATORI
Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori
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
DettagliLinguaggio C: le funzioni. Introduzione e sintassi
ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012 Introduzione Spesso alcuni
DettagliBreve Ripasso del linguaggio C
Breve Ripasso del linguaggio C Michelangelo Diligenti Ingegneria Informatica e dell'informazione diligmic@diism.unisi.it Compilazione, linking, ecc sorgente oggetto librerie sorgente oggetto editor sorgente
Dettagliprova.c #include <stdio.h> char funzione(char); codice oggetto del main()
prova.c #include char funzione(char); {char c= a ; printf( Ecco il carattere: %c\n,c); c=funzione(c); printf( Ecco il carattere modificato: %c\n,c); char funzione(char tmp) {if(tmp
DettagliEsercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
DettagliL Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento
DettagliAllocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
DettagliFunzioni di libreria. Richiedono tutte. #include <math.h> fabs(x) sqrt(x) pow(x,a) exp(x) log(x)
Funzioni di libreria Richiedono tutte #include x x a x fabs(x) sqrt(x) pow(x,a) x e ln(x) exp(x) log(x) log 10 ( x ) log10(x) sen(x) cos(x) tg(x) arcsen(x) arccos(x) arctg(x) senh(x) cosh(x) tgh(x)
DettagliPuntatori. Fondamenti di Programmazione
Puntatori Fondamenti di Programmazione Funzioni utili stdio.h c = getchar(); restituisce un carattere letto da tastiera. Equivale a: scanf( %c, &c); putchar(c); scrive un carattere sullo schermo. Equivale
DettagliArray k-dimensionali
Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Array k-dimensionali In C è possibile definire array con più dimensioni (ANSI C massimo k=12), per
DettagliACSO Programmazione di Sistema e Concorrente
ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
Dettagli