INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan
|
|
|
- Casimiro Pugliese
- 9 anni fa
- Просмотров:
Транскрипт
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 Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case
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.
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
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
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 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 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
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
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 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 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 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 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 Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi
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
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:
: 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. 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. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa
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 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);
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 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
