INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Размер: px
Начинать показ со страницы:

Download "INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan"

Транскрипт

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

2 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

3 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

4 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

5 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

6 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

7 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 = 5 Punteggio = 5, ritiro i dadi = = = 5 Hai vinto

8 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 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 return (n * fattoriale(n-1)); 1

10 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

11 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

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case

Подробнее

Fondamenti di Informatica

Fondamenti di Informatica Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile

Подробнее

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

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa. 3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il

Подробнее

Informatica (A-K) 5. Algoritmi e pseudocodifica

Informatica (A-K) 5. Algoritmi e pseudocodifica Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Подробнее

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Подробнее

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

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 5 Ing. Gian Enrico Conti Dott. Michele Zanella INFORMATICA A Titolo presentazione sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 5 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario

Подробнее

Introduzione al linguaggio C Funzioni

Introduzione al linguaggio C Funzioni Introduzione al linguaggio C Funzioni Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati

Подробнее

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,

Подробнее

La gestione della memoria dinamica Heap

La gestione della memoria dinamica Heap Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti

Подробнее

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

Подробнее

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Подробнее

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

Laboratorio di Programmazione: Linguaggio C Lezione 9 del 27 novembre 2013 Laboratorio di Programmazione: Linguaggio C Lezione 9 del 27 novembre 2013 Damiano Macedonio Giochi d Azzardo Note Iniziali Per generare un numero casuale basta includere la libreria stdlib.h e utilizzare

Подробнее

Programmi in Assembly

Programmi in Assembly Programmi in Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione [email protected] Università degli Studi di Milano 1/23 Esempio Numeri positivi # Programma che copia tramite

Подробнее

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

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi

Подробнее

Esercizi. La funzione swapint() primo tentativo

Esercizi. La funzione swapint() primo tentativo Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include

Подробнее

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

METODI ESERCIZI. 07-xx_Esercizi[01] Versione del: venerdì 3 maggio Andrea Zoccheddu CORSO INFORMATICA ITI ANGIOY SASSARI Versione del: venerdì 3 maggio 2013 07.XX METODI ESERCIZI Andrea Zoccheddu CORSO INFORMATICA ITI ANGIOY SASSARI Sintesi Esercizi sui metodi in Visual C#. Esercizio 1. scelta della firma Lo studente risponda

Подробнее

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

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

Подробнее

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

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;

Подробнее

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

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa

Подробнее

Fondamenti di Informatica T-1 Modulo 2

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

Подробнее

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

INFORMATICA ED ELEMENTI DI INFORMATICA MEDICA. MODULO DI INFORMATICA Prof. Stefano Gaburri e Prof. Gianluca Palermo. Prova del 28 Giugno 2010 INFORMATICA ED ELEMENTI DI INFORMATICA MEDICA MODULO DI INFORMATICA Prof. Stefano Gaburri e Prof. Gianluca Palermo Prova del 28 Giugno 2010 Nome: Cognome: Matricola: Firma: Non separate questi fogli. Scrivete

Подробнее

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

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Подробнее

Lezione 8 Struct e qsort

Lezione 8 Struct e qsort Lezione 8 Struct e qsort Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort

Подробнее