Funzioni e sviluppo top - down
|
|
- Dionisia Giordano
- 7 anni fa
- Visualizzazioni
Transcript
1 Funzioni e sviluppo top - down costruire programmi modificando programmi esistenti funzioni di libreria sviluppo top-down e diagrammi di struttura funzioni senza argomenti funzioni con argomenti 1
2 Costruire programmi modificando programmi esistenti è spesso possibile riutilizzare parti di codice preesistenti nella costruzione di nuovi programmi Esempio: calcolare l area e la circonferenza di un cerchio calcolare il peso di un insieme di rondelle 2
3 Area e circonferenza di un cerchio Problema: dato il raggio di un cerchio, calcolarne l area e la circonferenza Analisi: l input del problema è il raggio del cerchio; ci sono due output: area e circonferenza; il raggio può essere un numero reale, quindi utilizzo variabili di tipo double; mi occorrono le relazioni geometriche tra raggio e area di un cerchio e tra raggio e circonferenza 3
4 Analisi - richieste sui dati Costanti del problema PI = Dati in input double radius /* raggio del cerchio */ Dati in output double area /* area del cerchio */ double circum /* circonferenzza del cerchio */ Formule utilizzate 2 area =! radius circumference = 2! radius 4
5 Progettazione Algoritmo iniziale 1. prendi il raggio 2. calcola l area 3. calcola la circonferenza 4. visualizza area e circonferenza Raffinamenti dell algoritmo Raffinamento del passo assegna PI * radius * radius ad area Raffinamento del passo assegna 2 * PI * radius a circum 5
6 Fase di implementazione nelle fasi di analisi e progettazione ho prodotto la seguente documentazione: descrizione delle richieste sui dati (fase di analisi) algoritmo che risolve il problema (fase di progettazione) utilizzo queste informazioni come punto di partenza per la produzione del codice: trasformo le richieste sui dati in definizioni di costanti e dichiarazioni di variabili utilizzo i passi dell algoritmo e i raffinamenti come commenti scrivo il codice C corrispondente sotto ogni (sotto)passo non raffinato 6
7 /* * Calcola area e circonferenza di un cerchio */ #include <stdio.h> #define PI int main(void) { double radius; /* input - raggio del cerchio */ double area; /* output - area del cerchio */ double circum; /* output - circonferenza del cerchio */ /* prendi il raggio */ /* calcola l area */ /* assegna PI * radius * radius ad area */ /* calcola la circonferenza */ /* assegna 2 * PI * radius a circum */ /* visualizza area e circonferenza */ } return (0); 7
8 /* * Calcola area e circonferenza di un cerchio */ #include <stdio.h> #define PI int main(void) { double radius; /* input - raggio del cerchio */ double area; /* output - area del cerchio */ double circum; /* output - circonferenza del cerchio */ /* prendi il raggio */ printf("inserisci il raggio> "); scanf("%lf", &radius); /* calcola l area */ area = PI * radius * radius; 8
9 /* calcola la circonferenza */ circum = 2 * PI * radius; /* visualizza area e circonferenza */ printf("area = %.4f\n", area); printf("circonferenza = %.4f\n", circum); } return (0); 9
10 Test utilizzare un raggio per il quale sia semplice calcolare a mano l area e la circonferenza Inserisci il raggio> 5.0 Area = Circonferenza =
11 Calcolare il peso totale di un insieme di rondelle esempio di utilizzo della soluzione di un problema per risolvere un problema più complesso Problema Un azienda produttrice di rondelle deve stimare i costi di spedizione. Scrivere un programma che calcola il peso di una quantità specificata di rondelle. 11
12 Analisi Per calcolare il peso di una rondella devo conoscere l area, lo spessore e la densità del materiale utilizzato; spessore e densità sono dati di input; l area del bordo della rondella si calcola a partire da due dati forniti in input: il diametro interno e il diametro esterno; utilizzo come dati intermedi il raggio interno ed esterno, l area del bordo della rondella e il peso di una singola rondella. Per fornire in output il peso complessivo dovrò conoscere la quantità di rondelle. 12
13 Analisi - richieste sui dati Costanti del problema PI = Dati in input double hole_diameter /* diametro del buco */ double edge_diameter /* diametro esterno */ double thickness /* spessore della rondella */ double density /* densita del materiale */ double quantity /* numero di rondelle */ Dati in output double weight /* peso totale */ 13
14 Analisi - richieste sui dati Variabili del programma double hole_radius /* raggio del buco */ double edge_radius /* raggio esterno */ double rim_area /* area del bordo */ doble unit_weight /* peso di 1 rondella */ Formule utilizzate 2 area del cerchio =! raggio raggio del cerchio = diametro /2 area del bordo = area cerchio esterno - area cerchio interno peso unitario = area del bordo spessore densità 14
15 Progettazione Algoritmo iniziale 1. prendi diametro interno, diametro esterno e spessore di una rondella 2. prendi densità del materiale e quantità di rondelle 3. calcola l area del bordo della rondella 4. calcola il peso di una rondella 5. calcola il peso totale 6. visualizza il peso totale 15
16 Progettazione Raffinamento passo3 3.1 calcola hole_radius e edge_radius 3.2 rim_area è PI * edge_radius * edge_radius - PI * hole_radius * hole_radius Raffinamento passo unit_weight è rim_area * thickness * density 16
17 /* * Calcola il peso di una quantita specificata di rondelle. */ #include <stdio.h> #define PI int main(void) { double hole_diameter; /* input - diametro del buco */ double edge_diameter; /* input - diametro esterno */ double thickness; /* input - spessore della rondella */ double density; /* input - densita del materiale */ double quantity; /* input - numero di rondelle */ double weight; /* output - peso totale */ double hole_radius; /* raggio del buco */ double edge_radius; /* raggio esterno */ double rim_area; /* area del bordo */ double unit_weight; /* peso di una rondella */ 17
18 /* Prendi diametro interno, diametro esterno e spessore di una rondella.*/ printf("inner diameter in centimeters> "); scanf("%lf", &hole_diameter); printf("outer diameter in centimeters> "); scanf("%lf", &edge_diameter); printf("thickness in centimeters> "); scanf("%lf", &thickness); /* Prendi densita del materiale e quantita di rondelle. */ printf("material density in grams per cubic centimeter> "); scanf("%lf", &density); printf("quantity in batch> "); scanf("%lf", &quantity); /* Calcola l area del bordo della rondella */ hole_radius = hole_diameter / 2.0; edge_radius = edge_diameter / 2.0; rim_area = PI * edge_radius * edge_radius - PI * hole_radius * hole_radius; 18
19 /* Calcola il peso di una rondella. */ unit_weight = rim_area * thickness * density; /* Calcola il peso totale. */ weight = unit_weight * quantity; /* Visualizza il peso totale. */ printf("\nthe expected weight of the batch is %.2f", weight); printf(" grams.\n"); } return (0); 19
20 Test utilizzare dati per i quali è sempice verificare la correttezza del risultato (es. diametro interno = 2 e diametro esterno = 4 forniscono un area del bordo = 3!) prima verificare il calcolo del peso unitario (quantità = 1) verificare quindi il calcolo del peso totale (quantità = 1000) 20
21 Esempio di test Inner diameter in centimeters> 2 Outer diameter in centimeters> 4 Thickness in centimeters> 1 Material density in grams per cubic centimeter> 1 Quantity in batch> 1000 The expected weight of the batch is grams. 21
22 Esercizio Le rondelle vengono ricavate da lastre di materiale di forma rettangolare e di spessore uniforme. Scrivere un programma che calcola 2 la quantità di materiale (in cm ) necessaria per fabbricare una data quantità di rondelle; il peso del materiale di scarto. 22
23 Funzioni predefinite Riutilizzo di codice obiettivo: produrre codice senza errori riutilizzo di parti di codice già scritte e testate il C fornisce librerie di funzioni predefinite che permettono, ad esempio, di effettuare calcoli matematici 23
24 Esempio: radice quadrata chiamata a funzione y = sqrt(x); nome della funzione parametro La chiamata a funzione attiva il codice della funzione sqrt, passando il contenuto della variabile x come argomento. Al termine dell esecuzione della funzione, il risultato della funzione è sostituito al posto della chiamata. 24
25 Esempio x y 16.0?? y = sqrt(x); x y x contiene 16.0, quindi sqrt calcola 16.0, che è il risultato della funzione, 4.0, viene assegnato a y 25
26 Black box Una funzione può essere vista come una scatola nera : fornendogli uno o più valori in input, questa ritorna automaticamente un valore in output y = sqrt(x); 16.0 calcolo della radice quadrata il risultato è
27 Esempio w z 9.0?? z = sqrt(w); w z w contiene 9.0, quindi sqrt calcola 9.0, che è i valori 5.7 e 3.0 vengono sommati 2. il risultato della della somma, 8.7, viene assegnato a z 27
28 /* * Performs three square root computations */ #include <stdio.h> /* definitions of printf, scanf */ #include <math.h> /* definition of sqrt */ int main(void) { double first, second, /* input - two data values */ first_sqrt, /* output - square root of first */ second_sqrt, /* output - square root of second */ sum_sqrt; /* output - square root of sum */ /* Get first number and display its square root. */ printf("enter the first number> "); scanf("%lf", &first); first_sqrt = sqrt(first); printf("the square root of the first number is %.2f\n", first_sqrt); 28
29 /* Get second number and display its square root. */ printf("enter the second number> "); scanf("%lf", &second); second_sqrt = sqrt(second); printf("the square root of the second number is %.2f\n", second_sqrt); /* Display the square root of the sum of the two numbers. */ sum_sqrt = sqrt(first + second); printf("the square root of the sum is %.2f\n", sum_sqrt); } return (0); 29
30 Test Enter the first number> 9.0 The square root of the first number is 3.00 Enter the second number> 16.0 The square root of the second number is 4.00 The square root of the sum is 5.00 Note il programma effettua tre chiamate alla funzione sqrt;nell ultima chiamata, l argomento della funzione è un espressione. ogni istruzione è una chiamata a una funzione di libreria; ho utilizzato le funzioni predefinite del C come blocchi per la costruzione del programma 30
31 Funzioni di libreria abs(x) ritorna il valore assoluto dell argomento (di tipo int) standard header file: <stdlib.h> argomento: int risultato: int Es: abs(-5) è 5 abs(2) è 2 31
32 Funzioni di libreria Se una funzione di libreria viene chiamata con un argomento di tipo diverso da quello richiesto, l argomento viene convertito nel tipo richiesto prima di essere usato. La conversione da double a int provoca una perdita di informazione. Es: abs(-4.36) è 4 Per calcolare il valore assoluto di numeri reali bisogna utilizzare la funzione fabs 32
33 Funzioni di libreria fabs(x) ritorna il valore assoluto dell argomento (di tipo double) standard header file: <math.h> argomento: double risultato: double Es: fabs(-5.348) è fabs(203) è
34 Funzioni di libreria in <math.h> cos(x) sin(x) tan(x) coseno dell angolo x seno dell angolo x tangente dell angolo x argomento: double (in radianti) risultato: double Es: cos(0.0) è
35 Funzioni di libreria in <math.h> x exp(x) e (e = ) log(x) logaritmo naturale di x (per x > 0.0) log10(x) logaritmo in base 10 di x (per x > 0.0) sqrt(x) radice quadrata di x (per x " 0.0) argomento: double risultato: double Es: log10(100.0) è
36 Funzioni di libreria in <math.h> pow(x,y) argomenti: double risultato: double ritorna x y se x è negativo, y deve essere intero (non deve avere cifre decimali) Es.: pow(9.0, 0.5) è 3.0 pow(4.0, -1.0) è 0.25 pow(-2.0, 2.0) è 4.0 pow(-2.0, 3.0) è
37 Funzioni di libreria in <math.h> ceil(x) il più piccolo valore intero (senza decimali) non minore di x floor(x) il più grande valore intero (senza decimali) non maggiore di x argomento: double risultato: double Es.: floor(45.23) è 45.0 ceil(45.23) è 46.0 ceil(-45.23) è
38 Esempio 2 Calcolare le radici dell equazione ax + bx + c = 0 quando il discriminante è positivo root = 1 - b + b - 4ac 2a 2 root = 2 - b - b - 4ac 2a 2 38
39 /* Compute two roots, root_1 and root_2, for disc > 0.0 */ disc = pow(b, 2) - 4 * a * c; root_1 = (-b + sqrt(disc)) / (2 * a); root_2 = (-b - sqrt(disc)) / (2 * a); 39
40 Funzione definite dall utente Supponiamo di aver definito le funzioni find_area(r) ritorna l area di un cerchio di raggio r find_circum(r) ritorna la circonferenza di un cerchio di raggio r queste funzioni possono essere utilizzate direttamente nei programmi per il calcolo di area e circonferenza e per il calcolo del peso delle rondelle, rendendo tali programmi più chiari e leggibili 40
41 ... rim_area = PI * edge_radius * edge_radius - PI * hole_radius * hole_radius;... può essere sostituita da... rim_area = find_area(edge_radius) - find_area(hole_radius);... 41
42 Sviluppo top - down metodo per la soluzione di problemi: il problema viene suddiviso in sottoproblemi ogni sottoproblema viene risolto le soluzioni ai sottoproblemi vengono combinate per ottenere la soluzione al problema iniziale Diagramma della struttura strumento di documentazione che evidenzia le relazioni tra il problema e i sottoproblemi 42
43 Esempio: disegnare semplici figure Problema: disegnare sullo schermo figure del tipo seguente: / \ / \ / \ *** * * *** / \ / \ / \ / \ / \ / \ 43
44 Analisi: La casa è formata da un triangolo senza base sopra ad un rettangolo. La figura stilizzata è costituita da un cerchio, un triangolo e un triangolo senza base. Entrambe le figure possono essere disegnate a partire dalle seguenti componenti: un cerchio una linea orizzontale due linee parallele due linee che si intersecano 44
45 Progettazione (figura stilizzata): Algoritmo iniziale 1. disegna un cerchio 2. disegna un triangolo 3. disegna due linee che si intersecano Raffinamento del passo disegna due linee che si intersecano 2.2 disegna una linea orizzontale 45
46 Diagramma della struttura problema originario disegna una figura sottoproblemi 1 livello disegna un cerchio disegna un triangolo disegna linee intersecanti sottoproblemi 2 livello disegna linee intersecanti disegna linea orizzontale 46
47 Nota i sottoproblemi appaiono sia nell algoritmo che nel diagramma di struttura; l algoritmo specifica l ordine in cui vengono eseguiti i sottoproblemi; il diagramma di struttura specifica le relazioni tra problema originario e sottoproblemi 47
48 Funzioni senza argomenti prototipo di funzione definizione di funzione disposizione delle funzioni nel programma ordine di esecuzione delle funzioni e del main vantaggi derivati dall uso di funzioni visualizzazione di istruzioni per l utente 48
49 Funzioni senza argomenti Le funzioni definite dall utente permettono di implementare facilmente gli algoritmi sviluppati con metodo top-down: per ogni sottoproblema, viene definita una funzione che lo implementa. Il tipo più semplice di funzione non ha argomenti e non ritorna valori. 49
50 /* * Draws a stick figure */ #include <stdio.h> /* function prototypes */ void draw_circle(void); /* Draws a circle */ void draw_intersect(void); /* Draws intersecting lines */ void draw_base(void); /* Draws a base line */ void draw_triangle(void); /* Draws a triangle */ 50
51 int main(void) { /* Draw a circle. */ draw_circle(); /* Draw a triangle. */ draw_triangle(); /* Draw intersecting lines. */ draw_intersect(); } return (0); 51
52 Istruzione di chiamata a funzione (funzioni senza argomenti e valore di ritorno) Sintassi fname(); Esempi draw_circle(); Viene invocata la funzione fname. Quando fname ha terminato l esecuzione, l esecuzione procede con l istruzione che segue la chiamata a fname. Le parentesi dopo fname indicano che si tratta di una funzione che non richiede argomenti. 52
53 Prototipi di funzione Come gli altri identificatori, una funzione deve essere dichiarata prima dell uso. Una funzione può essere dichiarata inserendo un prototipo di funzione prima della funzione main. Il prototipo comunica al compilatore: il tipo di dato della funzione il nome della funzione informazioni sugli argomenti della funzione 53
54 Prototipo di funzione (funzione senza argomenti) sintassi ftype fname(void); esempi void draw_circle(void); L identificatore fname è il nome della funzione. ftype specifica il tipo di dato del risultato della funzione. ftype è void se la funzione non ritorna un valore. La lista di argomenti (void) indica che la funzione non ha argomenti. Il prototipo di funzione deve apparire prima della prima chiamata alla funzione. 54
55 Definizione di funzione il prototipo specifica gli argomenti della funzione e il valore ritornato; le operazioni effettuate dalla funzione sono specificate nella definizione della funzione /* * Draws a circle */ void draw_circle(void) { printf( *** \n ); printf( * *\n ); printf( *** \n ); } 55
56 Definizione di funzione l intestazione della funzione è simile al prototipo (viene omesso il ; finale) il corpo della funzione contiene le operazioni effettuate dalla funzione l istruzione return è omessa perchè la funzione non ritorna un risultato L istruzione di chiamata a funzione draw_circle(); causa l esecuzione delle 3 printf; il controllo ritorna alla funzione main dopo che il cerchio è stato visualizzato. 56
57 Definizione di funzione (funzione senza argomenti) sintassi ftype fname(void) { local_declarations executable statements } esempio /* * Displays a block letter H */ void print_h(void) { printf( ** **\n ); printf( ** **\n ); printf( ******\n ); printf( ** **\n ); printf( ** **\n ); } 57
58 Definizione di funzione (funzione senza argomenti) Viene definita la funzione fname. Nell intestazione della funzione, ftype specifica il tipo del risultato della funzione. Le parentesi graffe racchiudono il corpo della funzione. Gli identificatori dichiarati nelle local declarations sono definiti solo durante l esecuzione della funzione e possono essere usati solo all interno della funzione. Gli executable statements descrivono le operazioni effettuate dalla funzione. 58
59 il sottoproblema disegna un triangolo è ulteriormente scomposto in due sottoproblemi: disegna linee intersecanti e disegna linea orizzontale. Lo sviluppo top-down viene utilizzato per implementare la funzione che disegna il triangolo: /* * Draws a triangle */ void draw_triangle(void) { draw_intersect(); draw_base(); } 59
60 /* Draws a stick figure */ #include <stdio.h> /* Function prototypes */ void draw_circle(void); /* Draws a circle */ void draw_intersect(void); /* Draws intersecting lines */ void draw_base(void); /* Draws a base line */ void draw_triangle(void); /* Draws a triangle */ int main(void) { /* Draw a circle. */ draw_circle(); /* Draw a triangle. */ draw_triangle(); 60
61 /* Draw intersecting lines. */ draw_intersect(); } return (0); /* * Draws a circle */ void draw_circle(void) { printf(" *** \n"); printf(" * * \n"); printf(" *** \n"); } 61
62 /* * Draws intersecting lines */ void draw_intersect(void) { printf(" / \\ \n"); /* Use 2 \'s to print 1 */ printf(" / \\ \n"); printf("/ \\\n"); } /* * Draws a base line */ void draw_base(void) { } printf(" \n"); 62
63 /* * Draws a triangle */ void draw_triangle(void) { draw_intersect(); draw_base(); } 63
64 Disposizione delle funzioni all interno del programma i prototipi precedono la funzione main (appaiono dopo le direttive #include e #define) le definizioni si trovano dopo la funzione main l ordine relativo delle definizioni di funzioni non influisce sul loro ordine di esecuzione; l ordine di esecuzione è determinato dall ordine in cui vengono effettuate le chiamate Uso dei commenti ogni definizione di funzione è preceduta da un commento che descrive lo scopo della funzione. 64
65 Ordine di esecuzione delle funzioni e del main i prototipi forniscono al compilatore informazioni sulle funzioni utilizzate ogni chiamata a funzione viene tradotta in un trasferimento del controllo al codice della funzione al termine del corpo di ogni funzione, il compilatore aggiunge un istruzione in linguaggio macchina che trasferisce il controllo all istruzione che segue la chiamata alla funzione 65
66 Ordine di esecuzione delle funzioni e del main funzione main draw_circle(); draw_triangle(); draw_intersect(); void draw_circle(void) { printf( *** \n ); } printf( * *\n ); printf( *** \n ); ritorna al chiamante 66
67 Vantaggi derivati dall uso di funzioni astrazione procedurale il main è una sequenza di chiamate a procedura (una per ogni passo principale dell algoritmo); ogni funzione viene implementata separatamente riutilizzo di codice una funzione può essere eseguita più volte all interno di un programma (es. draw_intersect); dopo aver scritto e testato una funzione, posso riciclarla in altri programmi 67
68 Visualizzare istruzioni per l utente le funzioni senza parametri possono essere usate per separare la visualizzazione di istruzioni per l utente dal corpo del main. Es. programma che calcola area e circonferenza void instruct(void) { printf( Questo programma calcola area\n ); printf( e circonferenza di un cerchio.\n\n ); printf( Per usare il programma, inserire\n ); prinft( il raggio del cerchio dopo il prompt.\n ); } 68
69 dichiarare prima del main il prototipo della funzione void instruct(void); inserire la chiamata a funzione instruct(); come prima istruzione eseguibile nel corpo del main 69
70 Funzioni con argomenti di input funzioni void con argomenti di input funzioni con argomenti di input e un singolo risultato funzioni con argomenti multipli corrispondenza tra argomenti attuali e parametri formali area dati della funzione driver per testare funzioni 70
71 Funzioni con argomenti di input gli argomenti di una funzione sono utilizzati per trasportare informazioni dal chiamante all interno della funzione e viceversa. argomenti di input argomenti usati per passare informazioni dal chiamante alla funzione argomenti di output argomenti usati per ritornare risultati al chiamante 71
72 Funzioni con argomenti di input L utilizzo degli argomenti rende le funzioni più versatili: una funzione può manipolare dati diversi ad ogni chiamata Es. rim_area = find_area(edge_radius) - find_area(hole_radius); 72
73 funzioni di tipo void con argomenti di input Es. funzione che stampa un numero reale all interno di una cornice /* * Displays a real number in a box. */ void print_rboxed(double rnum) { printf("***********\n"); printf("* *\n"); printf("* %7.2f *\n", rnum); printf("* *\n"); printf("***********\n"); } 73
74 print_rboxed(135.68); chiama print_rboxed con rnum = void print_rboxed(double rnum) { printf("***********\n"); printf("* *\n"); printf("* %7.2f *\n", rnum); printf("* *\n"); printf("***********\n"); } 74
75 Effetto della chiamata Quando si effettua la chiamata print_rboxed(135.68) il valore del argomento attuale (135.68) viene passato alla funzione e sostituito al parametro formale (rnum). La funzione print_rboxed visualizza sullo schermo il seguente messaggio: *********** * * * * * * *********** 75
76 Parametri attuali e formali argomento attuale espressione inserita tra le parentesi di una chiamata a funzione parametro formale identificatore che rappresenta il corrispondente argomento attuale nella definizione della funzione 76
77 Funzioni con argomenti di input e un singolo risultato le funzioni che ritornano un risultato possono essere chiamate all interno di espressioni, come le funzioni di libreria i n p u t.. funzione risultato 77
78 Esempio: circonferenza del cerchio /* * Computes the circumference of a circle with radius r. * Pre: r is defined and is > 0. * PI is a constant macro representing an * approximation of pi. */ double find_circum(double r) { return (2.0 * PI * r); } 78
79 Esempio: area del cerchio /* * Computes the area of a circle with radius r. * Pre: r is defined and is > 0. * PI is a constant macro representing an * approximation of pi. * Library math.h is included. */ double find_area(double r) { return (PI * pow(r, 2)); } 79
80 #define PI radius = 10.0; circum = find_circum(radius); ritorna il risultato double find_circum(double r) { return (2.0 * PI * r); } chiama find_circum con r =
81 sintassi Definizione di funzione (con argomenti in input e singolo risultato) function interface comment ftype fname (formal parameter declaration list) { local variable declarations executable statements } 81
82 Definizione di funzione (con argomenti in input e singolo risultato) esempio /* * Finds the cube of its argument. * Pre: n is defined. */ int cube(int n) { return(n * n * n); } 82
83 Definizione di funzione (con argomenti in input e singolo risultato) L intestazione della funzione specifica il nome della funzione, fname, e il tipo del risultato ritornato dalla funzione, ftype. L intestazione indica inoltre i nomi e i tipi dei parametri formali nella formal parameter declaration list. Note: l intestazione NON termina con il punto e virgola utilizzare void nella formal parameter declaration list per indicare che la funzione non ha argomenti 83
84 Definizione di funzione (con argomenti in input e singolo risultato) Le parentesi graffe racchiudono il corpo della funzione. Il tipo delle variabili aggiuntive necessarie nella funzione è dichiarato nelle local variable declarations. Gli executable statements specificano le operazioni effettuate sui dati e sulle variabili locali per ottenere il risultato. L esecuzione dell istruzione return ritorna il controllo al chiamante. La funzione ritorna come risultato il valore dell espressione che segue la parola return. 84
85 Stile: function interface comment Il commento che precede l intestazione della funzione contiene tutte le informazioni necessarie all uso della funzione: descrizione dello scopo della funzione precondizione condizione che viene assunta vera al momento della chiamata postcondizione condizione che sarà vera al termine dell esecuzione della funzione 85
86 Funzioni con argomenti multipli /* * Multiplies its first argument by the power of * 10 specified by its second argument. * Pre : x and n are defined and * math.h is included. */ double scale(double x, int n) { double scale_factor; /* local variable */ scale_factor = pow(10, n); } return (x * scale_factor); 86
87 Funzione scale scale(2.5, 2) 2 restituisce il valore (che è ) scale(2.5, -2) -2 restituisce il valore (che è ) La variabile locale scale_factor è definita solo all interno della funzione scale. Come si fa a testare il corretto funzionamento di una funzione? 87
88 /* * Tests function scale. */ #include <math.h> /* Function prototype */ double scale(double x, int n); int main(void) { double num_1; int num_2; /* Get values for num_1 and num_2 */ printf("enter a real number> "); scanf("%lf", &num_1); printf("enter an integer> "); scanf("%d", &num_2); 88
89 /* Call scale and display result. */ printf("result of call to function scale is %f\n", scale(num_1, num_2)); } return (0); flusso dell informazione double scale(double x, int n) { double scale_factor; /* local variable - 10 to power n */ scale_factor = pow(10, n); } return (x * scale_factor); 89
90 Corrispondenza tra argomenti attuali e parametri formali il numero di argomenti attuali usati in una chiamata a funzione deve essere uguale al numero di parametri formali elencati nel prototipo della funzione l ordine degli argomenti determina la corrispondenza tra le due liste. Il primo argomento attuale corrisponde al primo parametro formale; il secondo argomento attuale corrisponde al secondo parametro formale e così via ogni argomento attuale deve essere di un tipo che può essere assegnato al corrispondente parametro formale senza perdita di informazione 90
91 Area dati della funzione Ogni volta che viene eseguita una chiamata a funzione, viene allocata un area di memoria per memorizzare i dati della funzione: parametri formali variabili locali Quando la funzione termina, l area dati viene persa; viene ricreata (con valori indefiniti) quando la funzione viene chiamata di nuovo. 91
92 Area dati della funzione scale Area dati del main num_1 2.5 num_2-2 Area dati della funzione scale x 2.5 n -2 scale_factor?? 92
93 Area dati della funzione scale La variabile locale scale_factor può essere utilizzata solo all interno della funzione scale. Le variabili num_1 e num_2, dichiarate nella funzione main, possono essere utilizzate solo all interno del main. Per renderle utilizzabili a un altra funzione, occorre passarle come parametri. 93
94 Driver Ogni funzione è un modulo di programma indipendente, quindi può essere testato separatamente dal programma che la usa. Un driver è un piccolo programma scritto per testare una funzione: definisce gli argomenti della funzione chiama la funzione ne visualizza i risultati 94
95 Prototipo di funzione funzione senza parametri e valore di ritorno void star_line(void); funzione con parametri e valore di ritorno double partition(double x, int n); Chiamata a funzione funzione senza parametri e valore di ritorno star_line(); funzione con parametri e valore di ritorno money = partition(funds, num_kids) + bonus; 95
96 Definizione di funzione funzione senza parametri e valore di ritorno void star_line(void) { printf( *\n*\n*\n*\n); } funzione con parametri e valore di ritorno /* * Pre: x and n are defined, x >= 0, n > 0 * Post: result is x / n double partition(double x, int n) { return (x / n); } 96
Linguaggio 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
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
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
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
DettagliLinguaggio C: introduzione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi
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
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
DettagliIntroduzione alla programmazione in C(++)
Testi Testi Consigliati: Introduzione alla programmazione in C(++) A. Kelley & I. Pohl C didattica e programmazione A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. D. M. M. Ritchie
DettagliCAPITOLO2 PROGRAMMA: PRINTING UN GIOCO DI PAROLE FONDAMENTI DI C FORMA DI UN SEMPLICE PROGRAMMA COMPILAZIONE E LINKING. directive
PROGRAMMA: PRINTING UN GIOCO DI PAROLE CAPITOLO2 FONDAMENTI DI C printf( C, o non C: Questo è il problema.\n"); Scrivere questo programma e chiamarlo pun.c Usare l estensione.c per i programmi C. 1 2 COMPILAZIONE
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione G. Mecca M. Samela Università della Basilicata Elementi di Base >> Sommario Sommario Introduzione Istruzioni
DettagliPrimo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define
Primo passo: il preprocessor Source code Preprocessor Pre-processed source code Compiler Libraries Linker Executable code 1 Il preprocessore Il preprocessore compie delle manipolazioni sul codice del programma.
DettagliInformatica (A-K) 7. Linguaggio C - 1
Storia del linguaggio C Informatica (A-K) 7. Linguaggio C - 1 Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Linguaggio C 1972, nato come evoluzione
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
DettagliPrimo programma in C Esercizi risolti
Esercizi risolti 1 Esercizio Somma di due numeri Si scriva un programma in linguaggio C che legga due valori interi e visualizzi la loro somma. 3 /* File: somma.c */ 4 /* proposta esercizio "Somma di due
DettagliIntroduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C
Introduzione 2 Introduzione al C Linguaggio di programmazione ad alto livello (HLL) Sviluppato negli anni 70 (C standard ANSI) Molto diffuso e adatto ad un ampio spettro di applicazioni: Scientifiche Gestionali
DettagliTipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere
Tipi elementari, costanti 1 Tipi di dati VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori Tipi Semplici intero reale carattere Strutturati 2 1 Tipo intero Gli interi servono
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
DettagliIntroduzione a. Funzioni di Ingresso e Uscita. Compilazione
Introduzione a Funzioni di Ingresso e Uscita Compilazione 2 Come si termina...... un programma in esecuzione (processo)? Ctrl + C In UNIX ci si basa sul concetto di terminale Anche da GUI, quello che si
DettagliBreve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliLe funzioni in C CAPITOLO 5
CAPITOLO 5 Le funzioni in C Obiettivi Comprendere come costruire i programmi in modo modulare partendo da piccoli pezzi chiamati funzioni. Introdurre le comuni funzioni matematiche disponibili nella libreria
DettagliESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C
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
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina)
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
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
DettagliEsempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina
Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono
DettagliEspressione di chiamata di funzione
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 è
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):
DettagliInput/Output di numeri
Input/Output di numeri I/O di numeri Per utilizzare le funzioni di I/O occorre include il file di intestazione (o file header) stdio.h utilizzando all inizio del sorgente la direttiva #include
DettagliPreprocessore, linker e libreria standard
Preprocessore, linker e libreria standard Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 IL PREPROCESSORE Programma sorgente
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
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
DettagliFunzioni. Unità 1. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
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
DettagliLe funzioni, e le istruzioni di input/output
Linguaggio C Le funzioni, e le istruzioni di input/output 1 Funzioni! Sono sottoprogrammi per svolgere un particolare compito! Sequenze di istruzioni (raggruppate tramite le parentesi graffe) alle quali
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
DettagliUso di metodi statici. Walter Didimo
Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un
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
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E03 Esempi di algoritmi e programmi A. Miola Novembre 2011 1 Contenuti q Progettazione di algoritmi q Problemi di ingresso - uscita
DettagliFunzioni. Corso di Fondamenti di Informatica
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei
DettagliLinguaggio C. Appunti per il corso di Laboratorio di Algoritmi e Strutture Dati. Stefano Aguzzoli
Linguaggio C Appunti per il corso di Laboratorio di Algoritmi e Strutture Dati Stefano Aguzzoli Alcune note introduttive Orario lezioni: Lunedì: 11:40 13:10, Giovedì: 10:40-11:25 sempre in Aula V3, Via
DettagliGli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento
Linguaggio C Gli Operatori Gli Operatori Gli operatori sono simboli (sia singoli caratteri che loro combinazioni) specificano come devono essere manipolati gli operandi dell espressione Operatori aritmetici
DettagliESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010
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
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
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
DettagliScrittura formattata - printf
Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri
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
DettagliVariabili e Istruzioni
Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e
DettagliEsercizio 1 - cicli. Esercizio 1 cicli - Soluzione
Sequenze di cifre Esercizio 1 - cicli Realizzare un programma che prende in input una sequenza di cifre (tra 1 e 9) e calcola la somma massima fra le sotto- sequenze di cifre non decrescente Il programma
DettagliLinguaggio C: le funzioni. Introduzione e sintassi
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. Introduzione e sintassi La presente dispensa
DettagliCome ragiona il computer. Problemi e algoritmi
Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Per risolvere il problema
DettagliCorso sul linguaggio C Modulo Tipi di dato
Corso sul linguaggio C Modulo 1 1.3 - Tipi di dato 1 Prerequisiti Concetto di espressione Cenni sulla struttura del calcolatore 2 1 Introduzione In questa lezione si esaminano i tipi di dato. I tipi di
DettagliESEMPIO: 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
DettagliRappresentazione binaria delle variabili (int e char)
Rappresentazione binaria delle variabili (int e char) int e char son i due tipi utilizzati dal linguaggio C per la rappresentazione di valori interi; ai valori delle variabili del primo tipo sono assegnati
DettagliElementi di informatica
Elementi di informatica Programmare in C 1 Calcolare l area di un rettangolo /* Calcolo area rettangolo */ int base; int altezza; int area; Conosciamo base = 3; altezza = 7; area = base*altezza; printf("%d",
DettagliIntroduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica
Corso di Fondamenti di Informatica Ingegneria Clinica Esercitazione 6 Raffaele Nicolussi Esercizio 1 Si scriva una funzione in linguaggio C che riceve in ingresso un numero intero A letto da tastiera,
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
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
DettagliEsercitazione 3. Espressioni booleane I comandi if-else e while
Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if
DettagliElementi di Programmazione in C++
Chapter 1 Elementi di Programmazione in C++ 1.1 C++: Elementi di Base cat example05.design Comportamento: Il programma dovrebbe invitare l utente a immettere il raggio di un cerchio
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
DettagliCapitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.
1 Capitolo 6 - Array Array Array Gruppo di locazioni di memoria consecutive Stesso nome e tipo Per riferirsi a un elemento, specificare Nome dell array Posizione Formato: arrayname[ position number ] Primo
DettagliModularizzazione del software
Modularizzazione del software Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Subroutine e function DIS - Dipartimento di informatica e sistemistica
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=
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
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
DettagliLettura da tastiera e scrittura su monitor
Lettura da tastiera e scrittura su monitor Per poter leggere UN SINGOLO CARATTERE dalla tastiera e visualizzare UN SINGOLO CARATTERE sul monitor si possono utilizzare le funzioni: int getchar (void) (per
DettagliProgrammi su più moduli - Esempio
Programmi su più moduli - Esempio Calcolo del logaritmo in base qualunque Incapsulare la logica di calcolo in una funzione PASSO 1: definisco la dichiarazione della funzione (nome, parametri di input e
DettagliAlgoritmi e soluzione di problemi
Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)
DettagliPolitecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato
DettagliLinguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative
DettagliUn esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);
Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i
DettagliVariabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliFondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Esericizi sempici su funzioni 2. Funzioni ricorsive 3. Funzioni e Header File 2 ESERCIZIO 1 (Funzioni) Codificare in C la funzione
Dettagliwhile Istruzione while Cicli ed iterazioni Istruzioni di ripetizione in C Comportamento del while
icli ed iterazioni Sintassi dell istruzione Esercizio Media aritmetica Esecuzione del programma icli while annidati Esercizio Quadrato 2 Istruzioni di ripetizione in Nel linguaggio esistono tre distinte
DettagliSviluppo di programmi
Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla
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)
DettagliStruct, enum, Puntatori e Array dinamici
Struct, enum, Puntatori e Array dinamici Tratti dal corso del Dr. Francesco Fabozzi Corso di Informatica Tipi di dato in C Abbiamo esaminato diversi tipi di dato che il C mette a disposizione dell utente
DettagliLa scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco
Sperimentazioni I Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Ottobre 2013 La scrittura di un programma Modellizzazione programma Flowcharts Pseudocode Scrittura del codice Esercizi
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
DettagliFunzioni. Corso di Fondamenti di Informatica. Laurea in Ingegneria Industriale
Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Industriale Funzioni Per definire un programma complesso è necessario affrontarlo dividendolo in parti separate (dividi ed impera): modularizzazioni.
DettagliAPPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.VI.2015 VINCENZO MARRA Indice Esercizio 1 1 Definizione dei tipi P e T, e calcolo dell area.
DettagliLaboratorio di informatica Ingegneria Clinica. Esercitazione 2 10 Ottobre 2011
Laboratorio di informatica Ingegneria Clinica Esercitazione 2 10 Ottobre 2011 Istruzioni Istruzioni di Input/Output Istruzioni di assegnamento Istruzioni di controllo Permettono di modificare il flusso
DettagliFunzioni, puntatori, strutture. Lab. Calc. AA 2006/07
Funzioni, puntatori, strutture sommario In questa lezione integriamo le informazioni fornite su puntatori e funzioni approfondendo i seguenti punti Puntatori a puntatori Puntatori e array come parametri
DettagliIndividuazione di sottoproblemi
Individuazione di sottoproblemi Quando il problema è complesso conviene partire con una individuazione di sottoproblemi Scriviamo un algoritmo contenente azioni o condizioni complesse per l esecutore che
DettagliStringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche
Fondamenti di Informatica T-1 modulo 2 Laboratorio 04: stringhe 1 Stringhe In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche terminatore
DettagliMatematica con Python
Matematica con Python e-mail: maurosaita@tiscalinet.it Versione provvisoria. Dicembre 2016. 1 Lezione n. 2 Euclide. Indice 1 Iterazioni 2 1.1 Il ciclo for e il comando range......................... 2
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Parte 2 (a) Sintassi e Semantica versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina)
DettagliElementi di C++ di base
Elementi di C++ di base Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 10 ottobre, 2001 Gino Perna Esempi di semplici programmi in C++ Il programma più semplice consiste
DettagliSviluppo dei Programmi
Programmazione I a.a 2009-2010 docente: Carmine Gravino Sviluppo dei Programmi Presentazione realizzata dal Prof. Andrea De Lucia 1 Analisi e Specifica Sviluppo dei programmi Progettazione Codifica Verifica
DettagliLIBRERIE STANDARD in C. LIBRERIE STANDARD in C
LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle
DettagliDove vengono definiti? il concetto di sottoprogramma
ROADMAP Funzioni e struttura di un programma Tipi, operatori, espressioni Strutture di controllo Livello 1 Input/Output Strutture dati FUNZIONI E STRUTTURA DI UN PROGRAMMA Livello 2 funzioni procedure
DettagliProgrammazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
DettagliCenni sul preprocessore e il suo utilizzo
Alessio Bechini - Corso di - Cenni sul preprocessore e il suo utilizzo Il preprocessore: cenni Il preprocessore Storicamente, i compilatori C operavano con passaggi multipli. Il primo passaggio eseguiva
DettagliLa programmazione in linguaggio C
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine La programmazione in linguaggio C 2001 Pier Luca Montessoro - Davide Pierattoni
DettagliLe Funzioni e la Ricorsione
Aula V Dip. di Matematica G. Castelnuovo Univ. di Roma La Sapienza Le Funzioni e la Ricorsione Igor Melatti Slides disponibili (assieme ad altro materiale) in: http://www.dsi.uniroma1.it/ melatti/programmazione1.2007.2008.html
Dettagli$QDOLVLGHOSURJUDPPDTXDGUDWR
$QDOLVLGHOSURJUDPPDTXDGUDWR /* */ calcolare l area del quadrato #include main(){ int lato, area; printf("lato "); scanf("%d", &lato); if(lato < 0) printf("errore nei dati \n"); else { area =
DettagliObiettivi di questa esercitazione
Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Esericizi sempici su funzioni 2. Funzioni ricorsive 3. Funzioni e Header File 2 ESERCIZIO 1 Codificare in C la funzione int
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
Dettagli