Esercitazioni di. Arnaud Nguembang Fadja : Alessandro Bertagnon :

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercitazioni di. Arnaud Nguembang Fadja : Alessandro Bertagnon :"

Transcript

1 Esercitazioni di Arnaud Nguembang Fadja : ngmrnd@unife.it Alessandro Bertagnon : alessandro.bertagnon@student.unife.it

2 Il compilatore deve conoscere l interfaccia di una funzione per fare il check sintattico di un istruzione che la usa, quindi: 1. O la funzione viene definita prima delle funzioni che la invocano (ancheil main è una funzione); 2. Oppure se ne dichiara il prototipo all inizio e poi si può implementare la funzione ovunque nel file.

3 1. La funzione è definita prima delle funzioni che la invocano float somma_float(float a, float b) { return a+b; float somma_float_3(float a, float b, float c) { int sum_temp; sum_temp=somma_float(b, c); return somma_float(a, sum_temp); main() { float sum; sum=somma_float_3(4.0, 0.06, );

4 2. Oppure se ne dichiara il proto3po all inizio e poi la si può implementare ovunque nel file. float somma_float_3(float a, float b, float c); float somma_float(float a, float b); main() { float sum; sum=somma_float_3(4.0, 0.06, ); float somma_float_3(float a, float b, float c) { int sum_temp; sum_temp=somma_float(b, c); return somma_float(a, sum_temp); float somma_float(float a, float b) { return a+b;

5 Esiste un (po di dato par(colare a0o a contenere indirizzi di memoria rela(vi ad altre variabili int *p; char *car; persona *per; p conterrà indirizzi di variabili intere, car di variabili char e per di variabili persona L indirizzo di una variabile si estrae con l operatore "&" int c; p = &c; p ora con(ene l indirizzo di c. Posso accedere a c, tramite p a0raverso l operatore di dereferenziazione "*" *p = 55;

6 I parametri di una funzione possono essere passa0 per copia o per riferimento (sia 0pi predefini0 che utente) Per copia: il parametro formale è una variabile locale che con0ene una copia del valore del parametro a(uale Per riferimento: il parametro formale è una variabile locale di 0po puntatore che con0ene l indirizzo di una cella di memoria esterna al record di a0vazione della funzione. La funzione può quindi modificarne il valore accedendo a tale cella di memoria, aaraverso l operatore di dereferenziazione "*". void incrementa(int contatore) { contatore++; void incrementa(int* contatore) { (*contatore)++;

7 void incrementa(int contatore) { contatore++; main() { int c = 0; incrementa(c); printf("c=%d",c); void incrementa(int* contatore) { (*contatore)++; main() { int c = 0; incrementa(&c); printf("c=%d",c); c=0 c=1 main c RA 0 DL main c RA 0 DL 1 incrementa RA DL contatore 0 1 incrementa contatore RA DL

8 Si scriva un programma che legge da tastiera due float a e b, poi invoca una funzione (o procedura) divisione che comunica al main se la divisione è possibile o no qualora la divisione sia possibile, il risultato della divisione Il main deve quindi stampare se la divisione è impossibile: Divisione impossibile altrimenti il risultato della divisione (quoziente)

9 Dal testo è evidente che la funzione divisione deve fornire due risultati al main: se la divisione è possibile o no il risultato della divisione Sappiamo che tramite il valore di ritorno si può fornire al massimo un risultato L unico altro metodo con cui una funzione può fornire risultati è tramite il passaggio per riferimento Æ Quindi dobbiamo passare almeno uno dei due risultati per riferimento. Abbiamo 3 possibilità: 1. Entrambi i risultati sono passati per riferimento e la funzione non ha un valore di ritorno (void) 2. Il valore di ritorno fornisce il quoziente e un parametro per riferimento dice se la divisione è possibile 3. il valore di ritorno dice se la divisione è possibile e il quoziente è dato per riferimento

10 1. Entrambi i risultati sono passati per riferimento e la funzione non ha un valore di ritorno void divisione(float a, float b, int *ok, float *q) { if (b==0) *ok=0; // è falso che la divisione sia possibile else { *ok = 1; *q = a/b; main() { float a,b,q; int ok; scanf("%f %f",&a,&b); divisione(a,b,&ok,&q); if (ok) printf("quoziente=%f",q); else printf("divisione impossibile");

11 2. Il valore di ritorno fornisce il quoziente e un parametro per riferimento dice se la divisione è possibile float divisione(float a, float b, int *ok) { if (b==0) *ok = 0; else { *ok = 1; return a/b; main() { float a,b,q; int ok; scanf("%f %f",&a,&b); q = divisione(a,b,&ok); if (ok) printf("quoziente=%f",q); else printf("divisione impossibile");

12 3. il valore di ritorno dice se la divisione è possibile e il quoziente è dato per riferimento int divisione(float a, float b, float *q) { if (b==0) return 0; else { *q = a/b; return 1; main() { float a,b,q; scanf("%f %f",&a,&b); if (divisione(a,b,&q)) printf("quoziente=%f",q); else printf("divisione impossibile");

13 Si scriva un programma che legge da tas3era due numeri complessi, ne calcola la somma e stampa il risultato Un numero complesso è dato da una coppia rappresentante la parte reale e la parte immaginaria. La somma deve essere effe:uata tramite la procedura con la seguenteinterfaccia: void somma_complex(float rea, float ima, float reb, float imb, float* reresult, float* imresult); Il risultato dovrà ancora essere una coppia di numeri.

14 Un sistema di cronometraggio per la Formula 1 registra i tempi in millisecondi. Tu5avia tali tempi devono essere presenta7 in termini di minu7, secondi e millisecondi. Creare una procedura che, ricevu7 in ingresso un tempo dato in millisecondi, fornisca al main l equivalente in termini di minu7, secondi, millisecondi. void frommillisec(int millisec, int* mm, int* sec, int* min) Si realizzi un main che invoca la funzione, e che dopo aver chiesto all utente un valore indicante una durata in millisecondi, stampi a video il tempo nel formato min:sec.millisec.

15 Un sistema di ges+one mp3 perme0e di calcolare in an+cipo la duratadi unacompila+on di brani. La durata di ogni brano è definita da tre variabili di +po intero (ore, minu+, secondi). Creare una procedura void sommatempi(int o1, int m1, int s1, int o2, int m2, int s2, int* or, int* mr, int* sr); che, ricevu+ in ingresso la durata di due pezzi musicali, res+tuisca la durata risultante dalla somma dei duebrani. Si realizzi un main che chieda all utente di inserire la durata di diversi brani musicali, e si stampi a video la durata totale. l utente segnala il termine dei brani da inserire con un brano specialedilunghezza 0:00.00).

16 Proge&are e codificare in C una procedura che da1 tre interi calcoli contemporaneamente il massimo e il minimo. void minmax(int a, int b, int c, int* min, int* max); Scrivere poi un programma che legga da tas1era tre numeri interi e stampi a video il massimo e il minimo invocando la funzione appena descri&a.

17 Si scriva un programma C che legge da tastiera un numero x e calcoli tramite una funzione quadratoperfetto se x è un quadrato perfetto; nel caso che lo sia, il main deve stamparne anche la radice quadrata. La funzione quadratoperfetto ha fra i parametri il numero x e comunica al main se x è un quadrato perfe6o oppure no la radice quadrata di x (qualora x sia un quadrato perfe6o)

18 Si scriva un programma C che, dati 3 valori a, b e c, fornisce le soluzioni dell equazione di secondo grado: ax 2 + bx + c = 0 Nel main, il programma deve leggere da tastiera i coefficienti a, b e c poi deve invocare una funzione radici infine deve stampare i risultati La funzione radici deve comunicare al main se le radici sono reali o no il valore delle radici (nel caso queste siano reali)

19 Quando si dichiara un array, ad esempio di interi int interi[10]; si crea una collezione di 10 interi adiacenti, il nome dell array (interi) viene interpretato come un sinonimo per il riferimento (o indirizzo) alla prima cella dell'array stesso, quindi come un sinonimo per un puntatore che punta la prima cella dell array (interi[0]). Attraverso l'operatore [] si può accedere alle varie celle. Per valutare l espressione interi[n] il compilatore parte dall indirizzo interi a questo aggiunge il numero di byte necessari per accedere alla n-esima cella.

20 Quindi quando ad una funzione viene passato un array void inverti(int bits[], int dim); in realtà si passa solo l'indirizzo della prima cella dell array; Affinch e la funzione possa conoscere la dimensione dell'array (dimensione logica), questa va passata esplicitamente come ulteriore parametro. /* Se bits è popolato di soli 0 ed 1 * inverte 0 e 1 */ void inverti(int bits[], int n); { int i=0; for(i=0; i<n; i++) bits[i]=1-bits[i];

21 Si scriva un programma C che: legge da tas5era, tramite una funzione, un intero n (al massimo 100) e un array di n interi; calcola la somma degli elemen5 dell'array, tramite una funzione; calcola la media degli elemen5 dell'array, tramite una funzione; calcola il numero degli elemen- pari dell'array, tramite una funzione; infine, mostri a video i risulta5 oaenu5.

22 1. Si scriva una procedura che, prendendocome parametri: un array di numeri (interi) una soglia (intero) eventuali altri parametri ponga a 0 i valori inferiori alla soglia. 2. Si scriva un programma che: legge da input, tramite una procedura o funzione, una sequenza di n interi terminata dal numero -1 e la memorizza in un array. Il valore -1 non va inserito nell array. Il valore n è al massimo 100; legge datastiera ilvalore della soglia; invoca la procedura al punto 1 passando l'array inserito; stampa a video,tramite una procedura, l'array ottenuto.

Il compilatore deve conoscere l interfaccia della funzione per fare il check sintattico di un istruzione che la usa, quindi:

Il compilatore deve conoscere l interfaccia della funzione per fare il check sintattico di un istruzione che la usa, quindi: Il compilatore deve conoscere l interfaccia della funzione per fare il check sintattico di un istruzione che la usa, quindi: 1. La funzione è stata definita prima della funzione che la sta chiamando (anche

Dettagli

Passaggio dei parametri per valore/riferimento

Passaggio dei parametri per valore/riferimento Passaggio dei parametri per valore/riferimento Formalmente, tutti i parametri sono passati per valore In C, possibilità di passare come parametro l indirizzo di memoria di una variabile Passaggio di una

Dettagli

Esercizio 1. Esercizio 1 Soluzione

Esercizio 1. Esercizio 1 Soluzione Esercizio 1 I numeri complessi Data la notazione cartesiana di un numero complesso (in parte reale ed immaginaria), Realizzare una procedura che ne restituisca la notazione polare (tramite parametri passati

Dettagli

Lab 10 Passaggio per riferimento

Lab 10 Passaggio per riferimento Fondamenti di Informatica e Laboratorio T-AB e Fondamenti di Informatica T1 Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2010/2011 Lab 10 Passaggio per riferimento Lab10

Dettagli

Lab 10 Passaggio per riferimento

Lab 10 Passaggio per riferimento Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2009/2010 Lab 10 Passaggio per riferimento Lab10 1 Esercizio 1 I numeri complessi

Dettagli

Obiettivi di questa esercitazione. Fondamenti di Informatica T-1 Modulo Passaggio dei parametri per valore/riferimento

Obiettivi di questa esercitazione. Fondamenti di Informatica T-1 Modulo Passaggio dei parametri per valore/riferimento Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Passaggio dei parametri per valore/riferimento 2. Trattamento degli errori: funzioni che restituiscono anche codici di errore

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Passaggio dei parametri per valore/riferimento 2. Trattamento degli errori: funzioni che restituiscono anche codici di errore

Dettagli

Lab 7 Passaggio per riferimento

Lab 7 Passaggio per riferimento Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 7 Passaggio per riferimento Lab10 1 Esercizio 1 I numeri complessi Data la notazione cartesiana di un numero

Dettagli

Introduzione al C Lez. 3. Puntatori

Introduzione al C Lez. 3. Puntatori Introduzione al C Lez 3 Puntatori Variabili e memoria Variabile tradizionale Es: int a = 10; Proprietà: - nome: a - tipo: int - valore: 10 - dimensione in byte: 4 ( usare sizeof(tipo) ) - indirizzo: 104

Dettagli

Introduzione al C. Lez. 2. Funzioni e Puntatori

Introduzione al C. Lez. 2. Funzioni e Puntatori Introduzione al C Lez 2 Funzioni e Puntatori Esercizio 1: test primalità Scrivere un programma che prenda in input un intero n, e stampa SI se n è primo, NO altrimenti (NB: un intero n è primo se è solo

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Passaggio dei parametri per valore/riferimento 2. Trattamento degli errori: funzioni che restituiscono anche codici di errore

Dettagli

Introduzione al C. Lez. 2 Funzioni e Puntatori

Introduzione al C. Lez. 2 Funzioni e Puntatori Introduzione al C Lez 2 Funzioni e Puntatori Esercizio 1: test primalità Scrivere un programma che prenda in input un intero n, e stampa SI se n è primo, NO altrimenti (NB: un intero n è primo se e solo

Dettagli

Obiettivi di questa esercitazione

Obiettivi di questa esercitazione Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Passaggio dei parametri per valore/riferimento 2. Trattamento degli errori: funzioni che restituiscono anche codici di errore

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Passaggio dei parametri per valore/riferimento 2. Trattamento degli errori: funzioni che restituiscono anche codici di errore

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 11 Corso di Informatica 2009-2010 Lezione 11 1 Utilizzo dei puntatori Funzioni Perche i Puntatori? I puntatori hanno tre importanti applicazioni: 1. Passaggio

Dettagli

I puntatori /2. Ad esempio. // inizio codice. #include <stdio.h> void mostra(int); int main() {int a = 10; mostra(a); return 0;}

I puntatori /2. Ad esempio. // inizio codice. #include <stdio.h> void mostra(int); int main() {int a = 10; mostra(a); return 0;} I puntatori /2 In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta il parametro stesso nel

Dettagli

Passare argomenti al programma

Passare 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

Dettagli

Passaggio di parametri per valore

Passaggio di parametri per valore Passaggio di parametri per valore #include using namespace std; int main() { int z, x = 1; z = ; cout

Dettagli

Informatica. Appunti della lezione 9

Informatica. Appunti della lezione 9 Informatica Appunti della lezione 9 Quadrati magici Sono matrici quadrate di interi tali che la somma di ciascuna riga e di ciascuna colonna è sempre la stessa 1 2 3 2 3 3 1 1 2 Quadrati magici Se tutte

Dettagli

Esercizi. La funzione swapint() primo tentativo

Esercizi. 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

Dettagli

laboratorio di python

laboratorio di python laboratorio di python definizioni di booleani, selezione ed uso degli input 13 Marzo 2019 1/32 Correzione esercizi per oggi esercizio 1 per casa Scrivere una funzione che non ha nessun parametro, non restituisce

Dettagli

Introduzione ai puntatori in C Definizione

Introduzione 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

Dettagli

Il linguaggio C Puntatori

Il 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

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione 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 2017

Dettagli

Passaggio dei parametri. Passaggio dei parametri

Passaggio dei parametri. Passaggio dei parametri Per valore Il valore viene copiato dal mondo esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sul mondo esterno rimangono circoscritti all environment

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

Il linguaggio C. Puntatori e dintorni

Il 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;

Dettagli

C: panoramica. Violetta Lonati

C: 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

Dettagli

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

Dettagli

ESEMPIO: le variabili LETTURA/SCRITTURA DI VARIABILI. Specifica Leggere da tastiera un intero, un carattere, un float e un double. Stamparli a video.

ESEMPIO: le variabili LETTURA/SCRITTURA DI VARIABILI. Specifica Leggere da tastiera un intero, un carattere, un float e un double. Stamparli a video. ESEMPIO: le variabili LETTURA/SCRITTURA DI VARIABILI Specifica Leggere da tastiera un intero, un carattere, un float e un double. Stamparli a video. LETTURA/SCRITTURA DI VARIABILI Codice #include

Dettagli

Il linguaggio C Puntatori

Il linguaggio C Puntatori Il linguaggio C Puntatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright Mirko Viroli Copyright 2016 2018 Moreno

Dettagli

Introduzione al C Lez. 4

Introduzione al C Lez. 4 Introduzione al C Lez. 4 Allocazione Dinamica della memoria http://www.di.unipi.it/~rossano/algo1/lez4.pdf Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso

Dettagli

Introduzione al C. Lez. 1 Elementi

Introduzione al C. Lez. 1 Elementi Introduzione al C Lez. 1 Elementi Introduzione al C Strumento che adotteremo in queste esercitazioni per implementare e testare gli algoritmi visti a lezione Configurazione minimale suggerita: Editing

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da

Dettagli

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Introduzione al C. Lez. 1 Elementi. Rossano Venturini Introduzione al C Lez. 1 Elementi Rossano Venturini rossano.venturini@isti.cnr.it URL del corso http://www.cli.di.unipi.it/doku/doku.php/informatica/all-b/start Lezioni - Lunedì 16-18 Aula M - Martedì

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 4 23/10/2018

Esercitazioni di Fondamenti di Informatica - Lez. 4 23/10/2018 Esercitazioni di Fondamenti di Informatica - Lez. 4 2/0/20 Esercizi sui tipi in C I codici e le soluzioni degli esercizi sono nella cartella parte. Dato il seguente codice, trovare gli errori, correggerli

Dettagli

Passaggio dei parametri

Passaggio dei parametri Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment

Dettagli

Parametri by reference. Funzioni. Passaggio dei parametri. Parametri by reference. Soluzione. Problemi

Parametri by reference. Funzioni. Passaggio dei parametri. Parametri by reference. Soluzione. Problemi Funzioni Introduzione Operatori & e * Passaggio by reference Passaggio di vettori Esercizio strcpy 2 Passaggio dei parametri Il linguaggio C prevede il passaggio di parametri by value Il chiamato non può

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array Lab06 1 Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 06 Array" Lab06 1 Esercizio 1" n Creare un programma che legga da input un numero non noto a priori di interi

Dettagli

Indirizzi e puntatori

Indirizzi e puntatori Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Richiami sulle variabili Una variabile è costituita da una o più locazioni di memoria (a

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 11 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 11 Marzo 2014 Puntatori Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 11 Marzo 2014 Immagini Struttura dati: typedef struct{ int R; int G; int B; } pixel pixel img[0][24]; Ma quanto è grossa

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci

Dettagli

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio

RICORSIONE, 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

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un valore come risultato, come avviene anche per una funzione matematica

Dettagli

Lezione 6: Array e puntatori

Lezione 6: Array e puntatori Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione 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

Dettagli

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010 Quicksort e qsort() Alessio Orlandi 28 marzo 2010 Intro Quicksort è l algoritmo di ordinamento più implementato, insieme con Mergesort. Tutte le librerie standard UNIX ne prevedono una implementazione.

Dettagli

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C Es typedef ; typedef char stringa[10]; dichiara che il tipo stringa è un array

Dettagli

ESERCIZIO: Analisi di un programma. Dato il seguente programma C:

ESERCIZIO: Analisi di un programma. Dato il seguente programma C: : Analisi di un programma Dato il seguente programma C: #include #define D 4 float A(float V[], int k) {int i; float s=0.0; for(i=0;i

Dettagli

Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet

Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment esterno Per riferimento

Dettagli

Esercizio 1 Soluzione

Esercizio 1 Soluzione Fondamenti di Informatica e Laboratorio T-AB e Fondamenti di Informatica T1 Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2010/2011 Lab 06 Array Lab06 1 Esercizio 1 Creare

Dettagli

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B Università di Ferrara Dipartimento di Ingegneria Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B Tutor Arnaud Nguembang Fadja: ngmrnd@unife.it Damiano Azzolini: damiano.azzolini@student.unife.it Esercizio

Dettagli

Lab 04 Programmazione Strutturata"

Lab 04 Programmazione Strutturata Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 04 Programmazione Strutturata" Lab04 1 Valutazione in cortocircuito (1)" In C, le espressioni booleane sono valutate

Dettagli

Informatica (A-K) 14. Linguaggio C -4

Informatica (A-K) 14. Linguaggio C -4 Strutture Dati in C Le strutture dati sono entità che permettono di memorizzare dati in modo organizzato e funzionale a particolari esigenze Informatica (A-K) 14. Linguaggio C -4 Strutture Dati tipiche

Dettagli

Capitolo 11. Puntatori

Capitolo 11. Puntatori 1 Capitolo 11 Puntatori 2 Variabili puntatore Cerchiamo di capire come le informazioni sono memorizzate nella memoria del computer La memoria è un sequenza di byte Ogni byte è composto da 8 bit: Ogni byte

Dettagli

Prof. G. Ascia. I puntatori. Fondamenti di Informatica

Prof. G. Ascia. I puntatori. Fondamenti di Informatica I puntatori 1 Associazione Variabile-Indirizzo Tutte le volte che in un programma si dichiarano delle variabili, l'esecutore associa alla variabile un indirizzo. Es. Dato il programma #include

Dettagli

I tipi strutturati e i record in C++

I tipi strutturati e i record in C++ I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 4 Aprile 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 4 Aprile 2013 Puntatori Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 4 Aprile 201 WAT? WAT Lab Troppi exe, ne volevo di meno Vacanze W A Giovedì 28, Venerdì 29 e Lunedì 1 ma anche Martedì 2

Dettagli

Introduzione al C. Lezione 1 Elementi. Rossano Venturini. Pagina web del corso

Introduzione al C. Lezione 1 Elementi. Rossano Venturini. Pagina web del corso Introduzione al C Lezione 1 Elementi Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso C Mercoledì 19 Giovedì

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 10 Lezione 10 1 Inside C : Puntatori Puntatori Referenziazione e Dereferenziazione Pointers: Puntatori Le variabili finora incontrate sono caratterizzate da

Dettagli

Esercizio 1. Esercizio 1 Soluzione

Esercizio 1. Esercizio 1 Soluzione Esercizio 1 Creare un programma che legga da input un numero non noto a priori di interi (al più 10) terminati da 0. Tale sequenza può eventualmente contenere numeri ripetuti. Si memorizzi tale sequenza

Dettagli

Lab 08 Stringhe e strutture

Lab 08 Stringhe e strutture Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 08 Stringhe e strutture Lab8 1 Esercizio 1 n Scrivere una funzione che data una stringa A calcoli la sua lunghezza.

Dettagli

C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso.

C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso. Non sappiamo a priori quante variabili dobbiamo definire per contenere gli interi.

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 05 Array. Lab06 1

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 05 Array. Lab06 1 Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 05 Array Lab06 1 Esercizio 1 n Creare un programma che legga da input un numero non noto a priori di interi (al

Dettagli

Compito A. Compito A Sintesi (main(

Compito A. Compito A Sintesi (main( a) chieda all utente il numero di giorni G del mese preso in esame e che controlli che G abbia valore tra 28 e 31 compresi b) chieda all utente di inserire G temperature in ordine dal primo all ultimo

Dettagli

ESERCIZIO: SHIFT ARRAY (1)

ESERCIZIO: SHIFT ARRAY (1) ARRAY E STRINGHE ARRAY ESERCIZIO: SHIFT ARRAY (1) Utilizzando le funzioni scrivere un programma che: genera una sequenza di N = 20 numeri interi e li memorizza in un array ( riempi_array( )) visualizza

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018 Esercitazioni di Fondamenti di Informatica - Lez. 7 0/11/018 Esercizi sull allocazione dinamica della memoria in C 1. Cosa stampa il seguente programma? 1 #d e f i n e MAXLENGTH 0 4 typedef struct { char

Dettagli

E9 Esercizi sul Capitolo 9 Array

E9 Esercizi sul Capitolo 9 Array E9 Esercizi sul Capitolo 9 Array Esercizio 1 (esercizio 9.1 del libro di testo). Implementare un metodo statico di nome stringacorta che prende come parametro un array di oggetti String e che restituisce

Dettagli

Lezione 8: Stringhe ed array multidimensionali

Lezione 8: Stringhe ed array multidimensionali Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si

Dettagli

Laboratorio di Python

Laboratorio di Python Laboratorio di Python Booleani, Selezione, Input Lab03 7 Marzo 2018 Outline Correzione esercizi per oggi Booleani e Selezione (if) Teoria Esercizi Input Teoria Esercizi Esercizi per casa Esercizio 1 per

Dettagli

E17 Esercizi sugli Array in Java

E17 Esercizi sugli Array in Java E17 Esercizi sugli Array in Java Esercizio 1 (esercizio 9.1 del libro di testo). Implementare un metodo statico di nome stringacorta che prende come parametro un array di oggetti String e che restituisce

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica -- Conversione di tipo in C (V) -- Laboratorio di Informatica Ingegneria Meccanica Lezione 7, 22 novembre 2007 versione 24 novembre 2007 Renato Menicocci

Dettagli

Il C nel C++: Funzioni

Il 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

Dettagli

Funzioni (1) Il C nel C++: Funzioni. Funzione (2) Vantaggi delle Funzioni. Localizzazione della funzionalità correggibilità manutenibilità

Funzioni (1) Il C nel C++: Funzioni. Funzione (2) Vantaggi delle Funzioni. Localizzazione della funzionalità correggibilità manutenibilità Funzioni (1) Il C nel C++: Funzioni 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

Dettagli

Associazione Variabile-Indirizzo

Associazione Variabile-Indirizzo I puntatori Associazione Variabile-Indirizzo Tutte le volte che in un programma si dichiarano delle variabili, l'esecutore associa alla variabile un indirizzo. Es. Dato il programma #include

Dettagli

dare un nome a una istruzione non denota un valore, quindi non c è tipo di ritorno void

dare un nome a una istruzione non denota un valore, quindi non c è tipo di ritorno void PROCEDURE Una procedura permette di dare un nome a una istruzione rendendola parametrica non denota un valore, quindi non c è tipo di ritorno void void p(int ) { = * 2; printf( %d, ); 1 PROCEDURE COME

Dettagli

Procedure. Una procedura permette di dare un nome a una istruzione rendendola parametrica non denota un valore, quindi non c è tipo di ritorno void

Procedure. Una procedura permette di dare un nome a una istruzione rendendola parametrica non denota un valore, quindi non c è tipo di ritorno void Procedure Una procedura permette di dare un nome a una istruzione rendendola parametrica non denota un valore, quindi non c è tipo di ritorno void void p(int x) { float y = x * sin(0.75); In C, una procedura

Dettagli

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio I/O da tastiera + costrutti while e if Alessandra Giordani agiordani@disi.unitn.it Lunedì 2 maggio 2011 http://disi.unitn.it/~agiordani/ Ripasso funzione printf() Usata per stampare il contenuto di una

Dettagli

float somma_float(float a, float b) int get_ascii(char c)

float somma_float(float a, float b) int get_ascii(char c) Una funzione è caratterizzata da: Tipo di dato restituito void (non restituisce nulla) int, una struttura definita dal programmatore ecc Nome della funzione Elenco parametri in ingresso, specifica: il

Dettagli

IEIM Esercitazione II Elementi di programmazione C. Alessandro A. Nacci -

IEIM Esercitazione II Elementi di programmazione C. Alessandro A. Nacci - IEIM 2017-2018 Esercitazione II Elementi di programmazione C Alessandro A. Nacci alessandro.nacci@polimi.it - www.alessandronacci.it 1 Esercizio 4 Dati un numero, stampare il primo numero successivo pari

Dettagli

ESEMPIO 1. #include <math.h> void eq2gr(float a, float b, float c, int* reali, float* x1,float* x2)

ESEMPIO 1. #include <math.h> void eq2gr(float a, float b, float c, int* reali, float* x1,float* x2) ESEMPIO 1 Dati tre valori a, b, c, relativi all'equazione di secondo grado ax 2 + bx + c = 0: indicare se le radici sono reali o complesse tramite un intero vero/falso se le radici sono reali, calcolarle.

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array 2 Esercizio 1 Creare un programma che legga da input un numero non noto a priori di interi (al più 10) terminati da 0.

Dettagli

Il linguaggio C. Notate che...

Il 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

Dettagli