Funzioni e sviluppo top - down

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Funzioni e sviluppo top - down"

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

Dettagli

Capitolo 5 - Funzioni

Capitolo 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

Dettagli

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Unità 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

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Linguaggio C: introduzione

Linguaggio 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

Dettagli

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

Dettagli

Strategie di programmazione

Strategie 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

Dettagli

Introduzione alla programmazione in C(++)

Introduzione 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

Dettagli

CAPITOLO2 PROGRAMMA: PRINTING UN GIOCO DI PAROLE FONDAMENTI DI C FORMA DI UN SEMPLICE PROGRAMMA COMPILAZIONE E LINKING. directive

CAPITOLO2 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

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione 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

Dettagli

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define

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

Dettagli

Informatica (A-K) 7. Linguaggio C - 1

Informatica (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

Dettagli

IL PRIMO PROGRAMMA IN C

IL 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

Dettagli

Primo programma in C Esercizi risolti

Primo 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

Dettagli

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C

Introduzione 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

Dettagli

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

Dettagli

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

Unità 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

Dettagli

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Introduzione 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

Dettagli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

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

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio 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

Dettagli

Le funzioni in C CAPITOLO 5

Le 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

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE 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

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione 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)

Dettagli

Il linguaggio C Il linguaggio C. Caratteristiche del C. Caratteristiche del C. Linguaggi di Programmazione I. Ferdinando Cicalese

Il 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

Dettagli

Primi passi col linguaggio C

Primi 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

Dettagli

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

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

Dettagli

Espressione di chiamata di funzione

Espressione 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 è

Dettagli

Tempo di vita e scope delle variabili

Tempo 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):

Dettagli

Input/Output di numeri

Input/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

Dettagli

Preprocessore, linker e libreria standard

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

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio 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

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

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

Dettagli

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

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

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

Le funzioni, e le istruzioni di input/output

Le 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

Dettagli

Programmazione a moduli in C

Programmazione 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

Dettagli

Uso di metodi statici. Walter Didimo

Uso 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

Dettagli

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

nome (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

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso 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

Dettagli

Funzioni. Corso di Fondamenti di Informatica

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

Dettagli

Linguaggio 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 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

Dettagli

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento

Gli 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

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

ESECUZIONE 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

Dettagli

Struttura dei programmi C

Struttura 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

Dettagli

Esercitazione 6. Array

Esercitazione 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

Dettagli

Scrittura formattata - printf

Scrittura 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

Dettagli

Laboratorio 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 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

Dettagli

Variabili e Istruzioni

Variabili 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

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Corso 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

Dettagli

Esercizio 1 - cicli. Esercizio 1 cicli - Soluzione

Esercizio 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

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio 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

Dettagli

Come ragiona il computer. Problemi e algoritmi

Come 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

Dettagli

Corso sul linguaggio C Modulo Tipi di dato

Corso 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

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

Rappresentazione binaria delle variabili (int e char)

Rappresentazione 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

Dettagli

Elementi di informatica

Elementi 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",

Dettagli

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

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

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi 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

Dettagli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA 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

Dettagli

Esercitazione 3. Espressioni booleane I comandi if-else e while

Esercitazione 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

Dettagli

Elementi di Programmazione in C++

Elementi 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

Dettagli

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012

Funzioni 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

Dettagli

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.

Capitolo 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

Dettagli

Modularizzazione del software

Modularizzazione 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

Dettagli

Esercizi Programmazione I

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

Dettagli

Definizione di metodi in Java

Definizione 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

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/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

Dettagli

Lettura da tastiera e scrittura su monitor

Lettura 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

Dettagli

Programmi su più moduli - Esempio

Programmi 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

Dettagli

Algoritmi e soluzione di problemi

Algoritmi 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)

Dettagli

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

Dettagli

Linguaggio 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 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

Dettagli

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

Dettagli

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

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

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. Esericizi sempici su funzioni 2. Funzioni ricorsive 3. Funzioni e Header File 2 ESERCIZIO 1 (Funzioni) Codificare in C la funzione

Dettagli

while Istruzione while Cicli ed iterazioni Istruzioni di ripetizione in C Comportamento del while

while 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

Dettagli

Sviluppo di programmi

Sviluppo 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

Dettagli

Ottenere una modifica del parametro attuale

Ottenere 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)

Dettagli

Struct, enum, Puntatori e Array dinamici

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

Dettagli

La scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco

La 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

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe 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

Dettagli

Funzioni. Corso di Fondamenti di Informatica. Laurea in Ingegneria Industriale

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

Dettagli

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

Dettagli

Laboratorio di informatica Ingegneria Clinica. Esercitazione 2 10 Ottobre 2011

Laboratorio 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

Dettagli

Funzioni, puntatori, strutture. Lab. Calc. AA 2006/07

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

Dettagli

Individuazione di sottoproblemi

Individuazione 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

Dettagli

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche

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

Dettagli

Matematica con Python

Matematica 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

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione 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)

Dettagli

Elementi di C++ di base

Elementi 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

Dettagli

Sviluppo dei Programmi

Sviluppo 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

Dettagli

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

LIBRERIE 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

Dettagli

Dove vengono definiti? il concetto di sottoprogramma

Dove 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

Dettagli

Programmazione in Java (I modulo)

Programmazione 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

Dettagli

Cenni sul preprocessore e il suo utilizzo

Cenni 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

Dettagli

La programmazione in linguaggio C

La 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

Dettagli

Le Funzioni e la Ricorsione

Le 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 $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 =

Dettagli

Obiettivi di questa esercitazione

Obiettivi 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

Dettagli

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano

Scope 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