Introduzione. per astrarre delle operazioni complesse
|
|
- Ferdinando Paoletti
- 4 anni fa
- Visualizzazioni
Transcript
1 Introduzione Perché i sottoprogrammi? per riutilizzare codice già scritto se si devono ripetere tante volte le stesse operazioni in punti diversi di un programma, è meglio fattorizzare il codice da ripetere in un sottoprogramma, e richiamare il sottoprogramma più volte per astrarre delle operazioni complesse se si incapsula del codice complesso in un sottoprogramma, il programma globale può essere strutturato in macro-operazioni un codice ben strutturato in sottoprogrammi è più facile da correggere, modificare, mantenere per estendere le operazioni del linguaggio per definire nuove operazioni su tipi predefiniti, e per definire le operazioni sui tipi definiti dall'utente Approfondiamo quest ultimo aspetto Abbiamo visto come definire nuovi tipi in C mediante la dichiarazione typedef Con una dichiarazione typedef noi definiamo il dominio dei valori di un nuovo tipo, ma tipo = valori + operazioni, ci manca ancora di definire le operazioni usiamo i sottoprogrammi per arricchire il C con nuove operazioni, definite dall'utente 1
2 Un esempio Supponiamo di avere le seguenti dichiarazioni #define MaxNumFatture 10000; #define MaxNumCosti 10000; typedef char String[20]; typedef struct { String Destinatario; int Importo; Data DataEmissione; DescrizioneFatture; typedef struct { String Destinatario; int Importo; Data DataSpesa; DescrizioneCosti; typedef struct { int NumFatture; DescrizioneFatture Sequenza[MaxNumFatture]; ElencoFatture; typedef struct { int NumCosti; DescrizioneCosti Sequenza[MaxNumCosti]; ElencoCosti;... ElencoFatture archiviofatture; ElencoCosti archiviocosti; int risultatodigestione; 2
3 Esempio (cont.) Ci piacerebbe realizzare operazioni come calcola la somma di tutte le fatture dell'archivio oppure calcola la somma di tutti i costi sostenuti per esempio per scrivere il guadagno netto è pari al fatturato totale meno le spese sostenute ci piacerebbe avere: risultatodigestione = FatturatoTotale(archivioFatture) SommaCosti(archivioCosti); Al momento, però, noi al massimo sappiamo scrivere una cosa del tipo: fatturato = 0; for(i = 0; i < ArchivioFatture.NumFatture; i++){ fatturato = fatturato + ArchivioFatture.Sequenza[i].Importo; costi= 0; for(i = 0; i<archiviocosti.numcosti; i++){ costi = costi + ArchivioCosti.Sequenza[i].Importo; risultatodigestione = fatturato costi; Il meccanismo che viene usato per astrarre questo codice in una operazione a parte è quello dei sottoprogrammi Un sottoprogramma è un pezzo di codice che risolve un sottoproblema specifico un sottoprogramma realizza un sottoalgoritmo, cioè risolve un sottoproblema del problema principale Un sottoprogramma è opportunamente incapsulato ed isolato dal resto del codice mediante una apposita dichiarazione 3
4 Struttura di un programma C: versione completa Un programma C è fatto di: direttive #include, #define,... parte dichiarativa globale main La parte dichiarativa globale contiene: dichiarazione di elementi condivisi tra il main e i sottoprogrammi costanti, variabili, ecc. definizioni di sottoprogrammi in realtà il main è un sottoprogramma speciale tra tutti i sottoprogrammi Il main e gli altri sottoprogrammi possono usare: gli elementi dichiarati nella parte dichiarativa globale gli elementi dichiarati nella loro propria parte dichiarativa Per esempio, se nella parte dichiarativa globale si mette la dichiarazione int var_g; la variabile var_g può essere usata da tutti i sottoprogrammi, incluso il main 4
5 Le funzioni Matematicamente, una funzione è un oggetto che ha: un dominio un codominio Una funzione, a fronte di valori nel suo dominio, ritorna un valore nel codominio fino ad ora le operazioni che abbiamo considerato sono tutte delle funzioni (per esempio +, -, *, ecc.) a fronte dei valori 3 e 5, la funzione + restituisce il valore 8 Di fatto una funzione ha: dei valori in ingresso un valore in uscita I valori in ingresso alla funzione + sono gli addendi, ed il valore in uscita è il risultato della somma Avvertenza: spesso in C si usa il termine funzione come sinonimo di sottoprogramma, ma non è un uso preciso del termine una funzione è un genere particolare di sottoprogramma, ne vedremo un altro più avanti Definizione di una funzione: testata (header) tra parentesi graffe: parte dichiarativa (detta parte dichiarativa locale) contiene dichiarazioni di costanti, variabili, locali parte esecutiva (detta corpo della funzione) contiene una sequenza di istruzioni 5
6 Testata e corpo di una funzione La testata di una funzione si compone, nell'ordine, di: tipo del risultato identificatore del sottoprogramma cioè il suo nome lista dei parametri (detti parametri formali) a cui la funzione viene applicata Ogni dichiarazione di parametro è fatta di un identificatore di tipo seguito dall'identificatore (cioè dal nome) del parametro Alcune osservazioni: il tipo del risultato è il codominio della funzione i parametri formali sono il dominio della funzione il tipo del risultato può essere qualunque (predefinito o definito dall'utente), tranne che di tipo array può però essere di tipo puntatore a qualsiasi tipo Esempi di testate (non di definizioni complete) int FatturatoTotale (ElencoFatture par) boolean Precede (StringaCaratteri par1, StringaCaratteri par2) boolean Esiste (int par1, SequenzaInteri par2) /* Stabilisce se il primo parametro, di tipo intero, * appartiene all'insieme di interi contenuti nel * secondo parametro: una sequenza di interi */ MatriceReali10Per10 *MatriceInversa (MatriceReali10Per10 *par) La definizione di una funzione è completata da dichiarazioni locali costanti, variabili, esattamente come era per il main le variabili dichiarate all'interno di una funzione sono dette variabili locali corpo della funzione costruito secondo le stesse regole della parte esecutiva del main in più può contenere una (o più) istruzioni di return 6
7 istruzione return ed esempi di funzioni Sintassi dell'istruzione di return: return espressione il valore di espressione è il risultato della funzione ci può essere più di una istruzione return nel corpo di una funzione quando, durante l'esecuzione del corpo di una funzione, si incontra l'istruzione di return, l'esecuzione della funzione termina e viene restituito il valore dell'espressione Esempio: funzione che calcola il valore totale degli importi di un elenco di fatture int FatturatoTotale (ElencoFatture par){ int i; int totale = 0; for(i = 0; i < par.numfatture; i++){ totale = totale + par.sequenza[i].importo; return totale; Altro esempio: funzione che calcola la radice quadrata intera di un numero intero int RadiceIntera (int par) { int cont; cont = 0; while (cont*cont <= par){ cont = cont + 1; return (cont 1); 7
8 Chiamata delle funzioni Dopo che è stata definita, una funzione può essere chiamata (o invocata) ogni invocazione di una funzione restituisce un valore, che dipende dai valori dei parametri della funzione al momento dell'invocazione ci sono 2 attori in gioco: chi chiama la funzione (il chiamante), e la funzione chiamata (il chiamato) chi chiama la funzione è il main, oppure un altro sottoprogramma Sintassi di chiamata: IdentificatoreFunzione ( lista dei parametri attuali ) Esempi: FatturatoTotale(archivioFatture) Radice(num) Radice(13) Parametri attuali: valore attribuito ai parametri della funzione al momento della chiamata contrapposti ai parametri formali, che sono i nomi (le scatole vuote ) dichiarati nella testata della funzione per esempio il valore di num e 13 sono parametri attuali per il parametro formale par della funzione Radice Quando per esempio invoco Radice(13), il valore 13 viene messo dentro al parametro par è di fatto un assegnamento 8
9 Parametri attuali e formali La corrispondenza tra parametri formali e parametri attuali è posizionale: il primo parametro attuale nella chiamata viene assegnato al primo parametro formale nella dichiarazione il secondo parametro attuale va nel secondo parametro formale... Il numero di parametri attuali deve essere uguale al numero di parametri formali altrimenti viene segnalato un errore in fase di compilazione Un parametro attuale è una espressione, che può a sua volta includere una chiamata di funzione Il tipo dei parametri attuali (cioè dell'espressione corrispondente) deve essere compatibile con il tipo dei parametri formali sono possibili le conversioni implicite di tipo In diversi momenti dell'esecuzione di un programma ci possono essere diverse invocazioni della stessa funzione con diversi parametri attuali Esempi di invocazioni: x = sin(y) cos(pigreco alfa); x = cos(atan(y) beta); x = sin(alfa); y = cos(alfa) sin(beta); z = sin(pigreco) + sin(gamma); risultatodigestione = FatturatoTotale(archivioFatture) - SommaCosti(archivioCosti); det1 = Determinante(matrice1); det2 = Determinante(MatriceInversa(matrice2)); totaleassoluto = Sommatoria(lista1) + Sommatoria(lista2); elencoordinato = Ordinamento(elenco); ordinatialfabeticamente = Precede(nome1, nome2); 9
10 Prototipo delle funzioni Una funzione può essere chiamata solo se è definita o se è dichiarata Attenzione: definita dichiarata Definizione testata { dichiarazioni locali corpo Dichiarazione (detta prototipo) testata; Esempi di prototipi di funzione: int FatturatoTotale (ElencoFatture par); int RadiceIntera (int par); Punto PuntoMedio(Segmento seg); La dichiarazione di una funzione può andare in una qualunque parte dichiarativa tra quelle viste: parte dichiarativa globale parte dichiarativa locale di una funzione parte dichiarativa del main Dichiarare una funzione è utile quando una chiamata della funzione precede la sua definizione nel file da compilare, oppure quando si una una funzione definita in un file separato (per esempio le funzioni di libreria) Dichiarare le funzioni aiuta il compilatore ed è buono stile di programmazione Per riassumere, una parte dichiarativa (globale, locale ad un sottoprogramma, oppure locale al main) può contenere (in ordine sparso): dichiarazioni di costanti dichiarazioni di tipo dichiarazioni di variabili prototipi delle funzioni 10
11 Esecuzione di funzioni e passaggio parametri Cominciamo con un esempio: /* Programma Contabilità */ /* Parte direttiva */ #include <stdio.h> #define MaxNumFatture 1000 /* Parte dichiarativa globale */ typedef char String [30]; typedef struct { String Indirizzo; int ammontare; Data DataFattura; DescrizioneFatture; typedef struct { int NumFatture; DescrizioneFatture Sequenza[MaxNumFatture]; ElencoFatture; main() { ElencoFatture archiviofatture1, archiviofatture2; int fatt1, fatt2, fatt; /* Prototipo della funzione FatturatoTotale */ int FatturatoTotale(ElencoFatture par);... fatt1 = FatturatoTotale(archivioFatture1); fatt2 = FatturatoTotale(archivioFatture2); fatt = fatt1 + fatt2;... /* Fine del main del programma Contabilità */ int FatturatoTotale (ElencoFatture par) { int totale, i;... return totale; 11
12 Esecuzione (cont.) E' come se ci fossero 2 esecutori, uno per il main, ed uno per la funzione FatturatoTotale Ogni esecutore ha un insieme di variabili locali (detto ambiente di esecuzione) ambiente di esecuzione per il main: archiviofatture1 e archiviofatture2, di tipo ElencoFatture fatt1, fatt2, fatt3, di tipo int ambiente di esecuzione per FatturatoTotale: par, di tipo ElencoFatture totale ed i, entrambe di tipo int una variabile anonima (che non può essere referenziata in nessun modo) in cui viene memorizzato il valore ritornato dalla chiamata archiviofatture1 archiviofatture2 fatt1 fatt2 par totale i valore da ritornare fatt3 esecutore del main esecutore di FatturatoTotale 12
13 Esecuzione (cont.) archiviofatture1 par archiviofatture2 fatt1 fatt2 totale i valore da ritornare fatt3 Effetto dell'esecuzione di: fatt1 = FatturatoTotale(archivioFatture1); l'esecutore del main vede che a destra di = c'è un'invocazione alla FatturatoTotale con parametro attuale archiviofatture1 viene creato l'esecutore per la funzione FatturatoTotale, con il suo ambiente di esecuzione avviene il passaggio dei parametri il valore del parametro attuale viene copiato nel corrispondente parametro formale viene ceduto il controllo alla macchina asservita l'esecuzione dell'esecutore del main viene sospesa viene eseguito il corpo della funzione fino a return la variabile anonima contiene il valore da ritornare viene restituito il controllo all'esecutore del main l'esecutore del main preleva il valore della variabile anonima questo valore diventa il valore dell espressione: FatturatoTotale(ArchivioFatture1) il valore viene assegnato alla variabile fatt1 13
14 Le procedure Non tutte le operazioni interessanti sono descrivibili astrattamente da funzioni matematiche a volte si vuole: effettuare qualche azione cambiare valore di variabili Per esempio: stampare un elenco di fatture non c è alcun valore da calcolare va fatto in modo parametrico (diversi elenchi in diversi momenti) inserire una nuova fattura in un archivio di fatture preesistente aggiornamento di variabile, non calcolo di valore ordinare un array di interi ar effetto: permutare i valori presenti in ar NON calcolare un valore di tipo array di interi modificare le coordinate di un vertice di una linea spezzata Per queste operazioni si usa diverso tipo di sottoprogramma: sottoprogramma procedurale o procedura Sintatticamente, una procedura si distingue da una funzione dal tipo del risultato: una procedura ha come tipo del risultato il tipo void Il tipo void è un tipo predefinito fittizio, non possiede alcun valore né operazione il tipo void è usabile anche come tipo per parametri formali di sottoprogrammi senza parametri La chiamata di una procedura è un istruzione che non produce alcun valore: IdentificatoreProcedura( lista dei parametri attuali ); è quindi un'istruzione singola, a parte, non può essere inserita in un'espressione si noti il ';' di chiusura: questa è una istruzione completa 14
15 Esempio di procedura Operazione InserisciFattura: /*Programma Contabilità */ #include<stdio.h> #define MaxNumFatture typedef struct { String Indirizzo; int ammontare; Data DataFattura; DescrizioneFatture; typedef struct { int NumFatture; DescrizioneFatture Sequenza[MaxNumFatture]; ElencoFatture; ElencoFatture archfatture; /* variabile condivisa */ main() { Data dataodierna; DescrizioneFatture fattura1, fattura2; void InserisciFattura(DescrizioneFatture fatt); boolean Precede(Data d1, Data d2);... /* Qui va la sequenza di istruzioni (non mostrata) * che leggono i dati di una fattura in fattura1 */ InserisciFattura(fattura1);... /* Qui va la sequenza di istruzioni (non mostrata) * che leggono i dati di una fattura in fattura2 */ if (Precede(fattura2.DataFattura, dataodierna)) InserisciFattura(fattura2);... void InserisciFattura(DescrizioneFatture fatt){ if (archfatture.numfatture == MaxNumFatture){ printf("l'archivio è pieno.\n"); else { archfatture.sequenza[archfatture.numfatture] = fatt; archfatture.numfatture = archfatture.numfatture + 1; 15
16 Esecuzione dell'esempio archiviofatture Ambiente globale dataodierna... fattura1 fattura2 fatt Ambiente locale di InserisciFattura Ambiente di main del programma Contabilità oltre all'ambiente del main e a quello della procedura c è l'ambiente globale del programma contiene la variabile archiviofatture di tipo ElencoFatture L'esecutore della procedura InserisciFattura accede all ambiente globale modificandolo La variabile archiviofatture è per la procedura una variabile globale Al della sua esecuzione, l'esecutore di InserisciFattura cede il controllo all'esecutore principale senza restituire alcun risultato l' effetto desiderato è la modifica della variabile globale Osservazione: le varie procedure e funzioni (main compreso) non possono accedere agli ambienti locali altrui la comunicazione avviene o passandosi parametri e risultati o attraverso l ambiente globale/comune 16
Funzioni e Procedure in C. Funzioni e Procedure in C
Corso di Informatica A Vito Perrone 1 Motivazioni Indice Il concetto di sottoprogramma Struttura completa di un programma C Le funzioni Esecuzione delle funzioni e passaggio dei parametri Le procedure
DettagliFunzioni e procedure
Funzioni e procedure Alcuni tipici errori a run-time La divisione per 0 L'uso di un indice di un array con valore al di fuori del suo campo di variabilità Int V1[100] permette al compilatore di segnalare
DettagliLaboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/05/08 Nota Questi lucidi sono tratti
Dettagliint main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;
Problema: CALCOLARE LA SOMMA DEI FATTORIALI DEI PRIMI 100 NUMERI NATURALI 0!+1!+2! + 99! #include int fattoriale(int); Calcolo fattoriale int main(){ int numero; /* numero di cui voglio calcolare
DettagliStrutture di controllo
Strutture di controllo abbiamo visto if-else e while domande da punto di vista teorico: 1. algoritmi NON codificabili con if-else e while? 2. strutture di controllo più potenti di quelle viste sinora?
DettagliIl passaggio parametri per indirizzo
Il passaggio parametri per indirizzo Cominciamo con un esempio: supponiamo di voler eseguire diversi inserimenti di nuove fatture in diversi archivi. Proviamo con questa modifica della procedura InserisciFattura:
DettagliArray k-dimensionali
Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Array k-dimensionali In C è possibile definire array con più dimensioni (ANSI C massimo k=12), per
DettagliLABORATORIO di INFORMATICA
Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto FUNZIONI E PROCEDURE http://www.diee.unica.it/giacinto/lab
DettagliFUNZIONI E PROCEDURE IN C. Docente: Giorgio Giacinto AA 2009/2010. dall utente, sia predefiniti, il C consente di creare funzioni e procedure
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
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,
DettagliMETODI in Java. Prof.Angela Bonifati. Metodi e Sottoprogrammi
Fondamenti di Informatica METODI in Java Prof.Angela Bonifati 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile definire nuovi tipi di dati, tramite i metodi è possibile
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
DettagliFunzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
DettagliIl linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1
Il linguaggio C I linguaggi di programmazione ad alto livello sono linguaggi formali ( sintassi e semantica formalmente definite) però sono compatti e comprensibili. Le tipologie di linguaggi sono: procedurali
DettagliVariabili e Funzioni. Informatica 1 / 19
Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 4 Operatori e introduzione a funzioni Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Soluzioni ad alcuni esercizi Alcuni commenti sugli
DettagliDo...While() Break Continue Concetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Do...While() Break Continue Concetto di Funzione e Procedura METODI in Java Prof.Angela Bonifati 1 Istruzione while int vet1[] = new int[20]; int vet2[] = new int[20]; for(int
DettagliIntroduzione 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
DettagliLe Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia
Le Funzioni in C Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2010/2011 docente: prof. Michele Salvemini 1/24 Sommario Le funzioni Il
DettagliPROGRAMMAZIONE: I sottoprogrammi
PROGRAMMAZIONE: I sottoprogrammi Prof. Enrico Terrone A. S: 2008/09 Definizione Un sottoprogramma è un blocco di istruzioni a sé stante con un proprio nome. Il main (= sottoprogramma principale) è un caso
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliLaboratorio di informatica Ingegneria meccanica
Laboratorio di informatica Ingegneria meccanica Lezione 7 19 novembre 2007 Concetto di modulo di un programma (1) Lo sviluppo di programmi complessi avviene tipicamente per composizione di moduli, ognuno
DettagliElementi DI INFORMATICA. Linguaggio C
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Elementi DI INFORMATICA http://agile.diee.unica.it A.A. 2015/2016 Ing. Marco Ortu Diee, secondo piano Tel. 070-6755774 mail:
DettagliESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
DettagliESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
DettagliLezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
DettagliC funzioni à scope di variabili
C funzioni à scope di variabili Per questo motivo il parametro di una function può avere lo stesso nome del parametro effettivo del processo chiamante. Possiamo definire anche delle variabili globali e
DettagliStruttura dei programmi C
Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliDove vengono definiti? il concetto di sottoprogramma
ROADMAP Funzioni e struttura di un programma Tipi, operatori, espressioni Strutture di controllo Livello 1 Input/Output Strutture dati FUNZIONI E STRUTTURA DI UN PROGRAMMA Livello 2 funzioni procedure
DettagliEsercizio 1: funzione con valore di ritorno di tipo puntatore
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio
DettagliDefinizione di classi. Walter Didimo
Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti
DettagliStruttura di un. Struttura dei programmi C
Parte 4 Struttura di un Programma Struttura dei programmi C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume in un file): 1. Una parte contenente direttive
DettagliLa Programmazione. Cos è la programmazione? Concetti preliminari
La Programmazione Cos è la programmazione? Concetti preliminari 1 Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione
DettagliERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
Dettagliuguale livello gerarchico non vi sono funzioni più importanti di altre main main
FUNZIONI in C/C++ Un programma C++ è un insieme di funzioni indipendenti e di uguale livello gerarchico (nel senso che non vi sono funzioni più importanti di altre o dotate, in qualche modo, di diritti
DettagliLinguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili
DettagliPassare argomenti al programma
Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di
DettagliLinguaggio C: le funzioni. Introduzione e sintassi
ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012 Introduzione Spesso alcuni
DettagliLezione 8 Struct e qsort
Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Parte 8 Dettagli e Approfondimenti versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima
DettagliOOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi
OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliComplementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -
Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin
DettagliVariabili e input/ Alessandra Giordani Lunedì 18 marzo
Variabili e input/ output da tastiera Alessandra Giordani agiordani@disi.unitn.it Lunedì 18 marzo 2013 http://disi.unitn.it/~agiordani/ Es. compilazione helloworld.c 2 Variabili e valori Una variabile
DettagliComplementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -
Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin
DettagliCosa serve per cominciare?
Cosa serve per cominciare? La linea di comando Il notepad (o equivalente) Saper scrivere qualcosa a video da programma risultato dell elaborazione elaborazione Ma come si fa?! 1 Input / Output L'immissione
DettagliInformatica (A-K) 12. Linguaggio C -3
Introduzione alle funzioni in C Informatica (A-K) 12. Linguaggio C -3 int main() int i,n, fattoriale=1; printf( Inserire Numero: ); scanf( %d, &n); for (i =2; i
DettagliEsercizi. 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
DettagliEsercizio 1: parole nel testo
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 6 Esercitazione: 11 novembre 2005 Esercizi di riepilogo in preparazione alla prima prova intermedia Problema (tratto da
DettagliPassaggio dei parametri
Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
DettagliLinguaggio C: le funzioni. Introduzione e sintassi
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Introduzione e sintassi La presente dispensa
DettagliINPUT/OUTPUT L'immissione dei dati di un programma e l uscita dei suoi risultati avvengono attraverso operazioni di lettura e scrittura.
INPUT/OUTPUT L'immissione dei dati di un programma e l uscita dei suoi risultati avvengono attraverso operazioni di lettura e scrittura. Il C non ha istruzioni predefinite per l'input/output. In ogni versione
DettagliFunzioni in C. Informatica Generale - Funzioni in C Versione 1.0, aa p.1/25
Funzioni in C Informatica Generale - Funzioni in C Versione 1.0, aa 2005-2006 p.1/25 Definizione di funzione () è
DettagliC++ funzioni Alberto Ferrari. Alberto Ferrari Programmazione di applicazioni SW
C++ funzioni Alberto Ferrari http://en.cppreference.com FUNZIONI le funzioni caratterizzate da nome, parametri (numero, ordine e tipo) e tipo di ritorno le funzioni hanno un prototipo il prototipo non
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
DettagliLezione 6 Struct e qsort
Lezione 6 Struct e qsort Rossano Venturini rossano.venturini@unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Struct Struct Fino ad ora abbiamo utilizzato
DettagliEsercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
Dettagli#include <stdio.h> main() { - 1 -
Un primo esempio di programma Ogni programma C deve contenere una funzione speciale chiamata main che indica il punto in cui inizia l esecuzione del programma. La funzione main è unica all interno di ogni
DettagliPuntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori
Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per
DettagliCompendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)
Compendio sottoinsieme del C++ a comune col C (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Librerie 1/2 Il solo insieme di istruzioni di un linguaggio di programmazione
DettagliFunzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliIl linguaggio C Funzioni e procedure
Il linguaggio C Funzioni e procedure modello cliente-servitore risultato Ambiente condiviso cliente servitore richiesta di servizio Sottoprogrammi Spesso può essere utile avere la possibilità di costruire
DettagliLB5 FUNZIONI cap. 7 del testo
LB5 FUNZIONI cap. 7 del testo 1 necessità di strutturare i programmi main() {......... N...... O...............} main() {... } funz1 funz2 funz3 funz4 SI funz5 funz6 2 Funzioni Una funzione è un pezzo
DettagliPuntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori
Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per
DettagliNon ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
DettagliFUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice
Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni
DettagliAmbienti di Programmazione per il Software di Base
Ambienti di Programmazione per il Software di Base Le Funzioni in C Esercizi sulle Funzioni svolti Esercizi sulle Funzioni da svolgere A.A. 2011/2012 Ambienti di Programmazione per il Software di Base
DettagliLaboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013
Laboratorio Progettazione Web Le funzioni in PHP Angelica Lo Duca IIT-CNR angelica.loduca@iit.cnr.it 2012/2013 Funzioni Una funzione è una sequenza di istruzioni che implementano una specifica funzionalità
DettagliSTRUTTURA DI UN PROGRAMMA!
STRUTTURA DI UN PROGRAMMA! File prova1.c Area globale #include ... int m; int f(int); int g(int x){.../*ambiente locale a g*/} int main(){...} int f(int x){.../*ambiente locale a f*/} Direttive
DettagliProgrammazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati
Oggetti Le classi in Java Corso di laurea in Un oggetto è definito dal suo stato - descrive le sue caratteristiche comportamento - quello che può fare Ad esempio: il modello di una moneta Una moneta può
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliEsercizio 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
DettagliLe direttive del Preprocessore
Le direttive del Preprocessore Prof. Orazio Mirabella Direttive Un compilatore traduce le istruzioni di un programma sorgente in linguaggio macchina Talvolta è conveniente prendere coscienza dell esistenza
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione 1 C-Introduzione.tex: Versione 1.0, aa 2005-2006 Linguaggi di programmazione (1) Sono linguaggi che permettono la codifica di algoritmi in modo da renderli eseguibili, direttamente
DettagliCapitolo 10 - Strutture
1 Capitolo 10 - Strutture Strutture In molte situazioni, una variabile non è sufficiente per descrivere un oggetto. Ad esempio, una posizione sul piano cartesiano è identificata da due coordinate, e la
DettagliIntroduzione alla programmazione. Alice Pavarani
Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello
DettagliLezione 8. Sottoprogrammi
Lezione 8 Il linguaggio C: Sottoprogrammi e Funzioni I puntatori Input/Output su file Sottoprogrammi Per risolvere un problema si può scomporlo in problemi più semplici e comporre le loro soluzioni in
DettagliCostanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
DettagliINPUT/OUTPUT INPUT/OUTPUT
INPUT/OUTPUT L'immissione dei dati di un programma e l uscita dei suoi risultati avvengono attraverso operazioni di lettura e scrittura C non ha istruzioni predefinite per l'input/output In ogni versione
DettagliFUNZIONI FUNZIONI COME COMPONENTI SW
FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione
DettagliPassaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet
Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment esterno Per riferimento
DettagliPassaggio dei parametri. Passaggio dei parametri
Per valore Il valore viene copiato dal mondo esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sul mondo esterno rimangono circoscritti all environment
DettagliI/O da tastiera + Alessandra Giordani Lunedì 2 maggio
I/O da tastiera + costrutti while e if Alessandra Giordani agiordani@disi.unitn.it Lunedì 2 maggio 2011 http://disi.unitn.it/~agiordani/ Ripasso funzione printf() Usata per stampare il contenuto di una
DettagliLaboratorio di Programmazione e Calcolo
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2018-19 0) Struttura del Corso 1) Trattamento
DettagliDIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 20 Aprile 2016
Puntatori Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 20 Aprile 2016 Come rappresento un pixel? Il pixel è Il colore Come ottengo il verde? Con il formato RGB R: 91 G: 191 B:
Dettagli