INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Documenti analoghi
Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

3 aprile o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri. si raccomanda la puntualita!

SESTA ESPERIENZA DI LABORATORIO. Programmazione con le funzioni

Fondamenti di Informatica

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)

Informatica (A-K) 5. Algoritmi e pseudocodifica

Ambienti di Programmazione per il Software di Base

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Record di Attivazione Cenni sulla ricorsione

Funzioni in C. Informatica Generale - Funzioni in C Versione 1.0, aa p.1/25

Introduzione alla Ricorsione

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione

Ricorsione. DD cap. 5 pp KP cap. 5 pp

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 5 Ing. Gian Enrico Conti Dott. Michele Zanella

Laboratorio di Informatica I

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio

Programmazione ricorsiva

FUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 4 Dott. Michele Zanella Ing. Gian Enrico Conti

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Introduzione al C. Lez. 2. Funzioni e Puntatori

Introduzione al linguaggio C Funzioni

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

RICORSIONE. Informatica B - A.A. 2013/2014

Dal linguaggio macchina al linguaggio C

I puntatori. DD Cap.7 pp KP Cap.6 pp

Assembly V: Procedure annidate e recursive

Esercizio 1: media di numeri reali (uso funzioni e struct)

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

La gestione della memoria dinamica Heap

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

Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande / VERSIONE 1

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione: Linguaggio C Lezione 9 del 27 novembre 2013

Ricorsione. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;

Dal linguaggio macchina al linguaggio C

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

Laboratorio di Informatica I

La funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Cominciamo con un esempio... Utilizzando un sottoprogramma 16/12/2017

Programmi in Assembly

Informatica ed Elementi di Informatica Medica

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica (ICA-LC) [083668]

Laboratorio di linguaggi

ESERCIZIO: SHIFT ARRAY (1)

Parte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

L organizzazione dei programmi

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Fondamenti di Informatica L-A

Fondamenti di Programmazione

Esercizi. La funzione swapint() primo tentativo

Laboratorio di informatica Ingegneria meccanica

METODI ESERCIZI. 07-xx_Esercizi[01] Versione del: venerdì 3 maggio Andrea Zoccheddu CORSO INFORMATICA ITI ANGIOY SASSARI

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

Corso di Fondamenti di Informatica. La ricorsione

Introduzione al C. Lez. 2 Funzioni e Puntatori

Programmazione a moduli in C

Funzioni di libreria. KP pp , , , 589, DD pp , , ,

Fondamenti di Programmazione

LABORATORIO di INFORMATICA

Programmazione (imperativa)

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904]

Fondamenti di Informatica T-1

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

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Laboratorio di Informatica I

Procedure: esempi. Esempi: ricorsione fattoriale Fibonacci ordinamenti

Variabili e input/ Alessandra Giordani Lunedì 18 marzo

Programmazione ricorsiva: cenni

LA RICORSIONE LA RICORSIONE LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO

Fondamenti di Informatica T-1 Modulo 2

Lezione 11 programmazione in Java. Anteprima. Gestione della memoria

Corso di Informatica A.A

INFORMATICA ED ELEMENTI DI INFORMATICA MEDICA. MODULO DI INFORMATICA Prof. Stefano Gaburri e Prof. Gianluca Palermo. Prova del 28 Giugno 2010

Lezione 6: Array e puntatori

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Lezione 8 Struct e qsort

Ricorsione in C. slides credit Prof. Paolo Romano

Esercitazione 5. Corso di Fondamenti di Informatica. Laurea in Ingegneria Informatica

Char. Parte 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Esempi di programmazione in C

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array.

LA RICORSIONE. Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa

Laboratorio di Informatica I

Laboratorio di Algoritmi e Strutture Dati Ingegneria e Scienze Informatiche - Cesena A.A

IEIM Esercitazione IX Puntatori, Enumerazione e Ricorsione. Alessandro A. Nacci -

Linguaggio C I puntatori

Transcript:

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento lunedì, prima o dopo lezione 1

Le funzioni in C Le funzioni vengono utilizzate per 3 motivi: Riusabilità del software Per evitare la ripetizione di codice Per rendere più agevole la scrittura/lettura del codice /* prima funzione # include <stdio.h> Int quadrato (int y); main () { int x; for (x=1; x<=10; x++) printf ( %d, quadrato(x)); return 0 } // prototipo funzione //contatore // chiamata funzione //fine funzione main 2 int quadrato (int y) // definizione funzione { return y * y } // fine funzione quadrato

Funzioni: chiamata per valore o per riferimento Per valore, gli argomenti saranno passati preparando una copia del loro valore. Nessuna modifica al valore originario Per riferimento, gli argomenti saranno passati prendendo il riferimento al vaore originario. Vengono modificati i valori originari In C tutte le chiamate sono per VALORE, per riferimento invece bisogna utilizzare il concetto di puntatore. Esempio int quadrato (int *yptr) { return *yptr * *yptr; } // definizione funzione, chiamata per riferimento 3

Funzioni Se una funzione non accetta parametri in ingresso si dichiara come int quadrato (void) Se una funzione non restituisce nessun valore di ritorno allora si dichiara come Void quadrato (int x) In una funzione vanno esplicitamente dichiarate tutte le variabili int quadrato (double x, double y) int quadrato (double x, y) significa allocare x come double e y come un integer 4

Generare numeri casuali La funzione rand() genera numeri pseudocasuali INTERI compresi tra 0 e RAND_MAX (32767 secondo lo standard ANSI). L istruzione i = rand() assegna un numero casuale alla variabile intera i. Esercizio. Generare numeri casuali compresi tra 1 e 6 Esercizio. Simulare 6000 lanci di un dado, conti quante volte la facciata si è presentata e ne calcoli la probabilità. SENZA utilizzare i vettori Esercizio. Rifare esercizio punto precedente utilizzando i vettori 5

Esercizi Scrivere una funzione tipo: Potenza(base,esponente). Esponente deve essere un numero diverso da zero. Utilizzate il ciclo for per il calcolo. Scrivere una funzione Multiplo che per una coppia di numeri determini se il secondo sia multiplo del primo. La funzione deve restituire vero (1) o falso (0). La funzione main stampare a video vero o falso. Scrivere una funzione che determini se un numero è primo. (Numero è primo se divisibile per 1 o per se stesso). Fino a che limite superiore (di divisori) bisogna arrivare? 6

Il gioco dei dadi: implementiamolo 7 Un giocatore lancia 2 dadi. Vince se al primo tiro la somma è 7 o 11. Perde se al primo tiro la somma è 2, 3 o 12 (Craps). Se la somma è 4, 5, 6, 8, 9 o 10 al primo tiro, allora la somma diventa il punteggio del giocatore. Per vincere si deve continuare a lanciare i dadi fino a ottenere il punteggio giocatore del primo lancio. Se però durante i lanci esce 7 allora il giocatore ha perso. Es. 4 + 1 = 5 Punteggio = 5, ritiro i dadi 6 + 2 = 8 2 + 1 = 3 3 + 2 = 5 Hai vinto

La ricorsione 1/2 Per determinati tipi di problemi può essere utile che una funzione richiami se stessa, in questi casi si parla di ricorsione. Unesempio per chiarire il problema: calcolare il fattoriale diun numero. n! = n * (n-1) * (n-2) * 1 In modo non ricorsivo: fattoriale = 1; For (x = n; x>=1;x--) fattoriale = fattoriale * x; Scomponendo il problema, n! = n * (n-1)! 4! = 4 * 3! = 4 * 3 * 2! = 4 * 3 * 2 * 1! 8

9 La ricorsione 2/2 La sequenza di chiamate nello stack della procedura ricorsiva e i relativi valori di ritorno saranno dunque: 5! 5 * 4! 4 * 3! 3 * 2! 2 * 1! 1 long fattoriale ( long n) { If (n<=1) else } return 1 120 24 6 2 return (n * fattoriale(n-1)); 1

La ricorsione. Fibonacci In modo ricorsivo la serie di fibonacci può essere definita come: Fibonacci(0) =1 Fibonacci(1) =1 Fibonacci(n) = fibonacci(n-1) * fibonacci(n-2) Long fibonacci ( long n) { if (n==0 n==1) return n; else return (fibonacci(n-1) + fibonacci(n-2)); } 10

Esercizio sulla ricorsione Scrivete una funzione ricorsiva Potenza(base, esponente) Scrivete una funzione Palindromo () che restituisca vero o falso a seconda che la stringa si legga allo stesso modo da sinistra a destra e da destra a sinistra. 11