Laboratorio di programmazione



Documenti analoghi
Laboratorio di programmazione

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

La struttura dati ad albero binario

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Funzioni in C. Violetta Lonati

Corso di Fondamenti di Informatica

Concetto di Funzione e Procedura METODI in Java

Sottoprogrammi: astrazione procedurale

INFORMATICA - I puntatori Roberta Gerboni

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Record in C: il costruttore struct.

RICERCA DI UN ELEMENTO

Gestione dei File in C

I puntatori e l allocazione dinamica di memoria

GESTIONE INFORMATICA DEI DATI AZIENDALI

Appello di Informatica B

Programmazione. Laboratorio. Roberto Cordone DI - Università degli Studi di Milano

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31

Esercizio 1. Esercizio 1

Lezione 9: Strutture e allocazione dinamica della memoria

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture

dall argomento argomento della malloc()

TOP DOWN. Compiti in classe proposti Modulo 1 JUVENILIA SCUOLA. Iacobelli Ajme Marrone

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

Visibilità dei Membri di una Classe

Inizializzazione, Assegnamento e Distruzione di Classi

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili

Introduzione al linguaggio C Gli array

Linguaggio C - Funzioni

Esercizi della lezione 5 di Java

Elementi di Architettura e Sistemi Operativi

ISTRUZIONI PER LA GESTIONE BUDGET

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Calcolare il massimo di una lista

puntatori Lab. Calc. AA 2007/08 1

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Le operazioni di allocazione e deallocazione sono a carico del sistema.

Matematica in laboratorio

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 13 File Binari

FUNZIONI. La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni:

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

AA LA RICORSIONE

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.

Gestione Centro Estetico

Database 1 biblioteca universitaria. Testo del quesito

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

REGISTRO ELETTRONICO SPAGGIARI. MANUALE OPERATIVO PER I DOCENTI Rev. 00 del 21/11/2012

REGISTRO ELETTRONICO SPAGGIARI. MANUALE OPERATIVO PER I DOCENTI Rev. 00 del 21/11/2012

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

Linguaggio C - Stringhe

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Università degli Studi di Verona. Laboratorio di Basi di Dati

DB - Modello relazionale dei dati. DB - Modello Relazionale 1

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Esercizio data base "Biblioteca"

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

Algoritmi di ordinamento

Esame del 3 febbraio 2010

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Fondamenti di Informatica 2

Esercitazione 10. Strutture ed Enumerazioni. Allocazione dinamica di memoria

Introduzione alla Programmazione ad Oggetti in C++

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde?

Arduino: Programmazione

Vettori Algoritmi elementari di ordinamento

I file di dati. Unità didattica D1 1

Struttura di un programma Java

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Esercizio: gestione di un conto corrente

File di testo e file binari Directory

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Tabelle 3.4. Unità didattica. Copyright 2009 Apogeo. Obiettivi. Prerequisiti

CamiGas-Digigas: Manuale Referente

Oggetti Lezione 3. aspetti generali e definizione di classi I

Manuale Amministratore bloodmanagement.it

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Guida utente alla compilazione delle richieste di contributo on-line per le Associazioni dei Consumatori

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Laboratorio di Algoritmi e Strutture Dati

Capitolo 13. Interrogare una base di dati

MICROSOFT OFFICE WORD 2010 STAMPA UNIONE

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

LO STATO DI AVANZAMENTO DELLE PRATICHE INVIATE TELEMATICAMENTE E LA GESTIONE DELLE CORREZIONI

Usa le lezioni per la LIM su ActivInspire

Transcript:

Laboratorio di programmazione Lezione VI Tatiana Zolo tatiana.zolo@libero.it 1

LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di dato. LE STRUCT 2

LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di dato. Dichiarazione: struct nome_struttura { }; tipo var1; tipo var2;... tipo vark; Ora posso creare delle variabili di tipo nome_struttura: nome_struttura var_struttura; LE STRUCT 2-A

LE STRUCT Altra possibilità: struct nome_struttura { tipo var1; tipo var2;... tipo vark; } var_struttura1, var_struttura2; In tal caso nome_struttura non è necessario. Necessario se si vuole definire un altra variabile dello stesso tipo successivamente: nome_struttura var_struttura3; LE STRUCT 3

LE STRUCT Accesso ai membri: tramite l operatore punto. var_struttura1.var1 =...; tipo t = var_struttura1.var2; LE STRUCT 4

LE STRUCT Accesso ai membri: tramite l operatore punto. var_struttura1.var1 =...; tipo t = var_struttura1.var2; Assegnamento di strutture: solo se sono dello stesso tipo. struct s1 { int a, b; } struct s2 { int a, b; }... s1 x, y; s2 z;... y = x; OK z = x; ERRORE: non corrispondenza di tipo. LE STRUCT 4-A

LE STRUCT Confronto tra strutture: non possibile. Il seguente frammento di codice produce un errore: if (x == y)... Occorre considerare i singoli campi delle strutture: if (x.a == z.a && x.b == z.b)... LE STRUCT 5

LE STRUCT Confronto tra strutture: non possibile. Il seguente frammento di codice produce un errore: if (x == y)... Occorre considerare i singoli campi delle strutture: if (x.a == z.a && x.b == z.b)... n.b. - strutture diverse possono avere campi con lo stesso nome; - i nomi dei campi possono essere gli stessi di variabili e funzioni già utilizzate. LE STRUCT 5-A

ARRAY DI STRUCT Si definisce una struttura e poi si dichiara un array di quel tipo. Esempio: struct studenti { char nome[50]; char cognome[50]; int anno_immatricolazione; }; studenti elenco_studenti[100]; Per accedere ad una struttura specifica = indicizzare il nome della struttura: cout << elenco_studenti[2].cognome stampa il cognome memorizzato nella variabile membro cognome dello studente i cui dati sono nella 3 struttura dell array (l indice dell array parte sempre da 0!). ARRAY DI STRUCT 6

LE FUNZIONI Dobbiamo risolvere un problema complesso: come fare? - Suddivisione del problema in (sotto)problemi più semplici; - risoluzione dei problemi più semplici; - combinazione delle soluzioni dei problemi più semplici per ottenere la soluzione del problema di partenza. LE FUNZIONI 7

LE FUNZIONI Dobbiamo risolvere un problema complesso: come fare? - Suddivisione del problema in (sotto)problemi più semplici; - risoluzione dei problemi più semplici; - combinazione delle soluzioni dei problemi più semplici per ottenere la soluzione del problema di partenza. Il programmatore può definire sottoprogrammi che risolvono problemi specifici: i sottoprogrammi si realizzano attraverso le funzioni. p 1 p 2 p k... funzione f() valore calcolato dove p 1,..., p k sono i parametri di ingresso. f() risolve un problema specifico e scambia informazioni con il main() e le altre funzioni attraverso i parametri e il valore calcolato. LE FUNZIONI 7-A

LE FUNZIONI Ogni funzione è composta da 4 parti (che insieme costituiscono la definizione della funzione): 1. tipo di ritorno; 2. nome della funzione; 3. lista dei parametri; 4. corpo della funzione. Le prime tre parti insieme rappresentano il prototipo della funzione o la dichiarazione della funzione. Invocazione funzione f() = controllo del programma ad f() e sospensione dell esecuzione della funzione attiva. Fine esecuzione di f() (ultima istruzione oppure istruzione di ritorno) = la funzione sospesa riprende l esecuzione. LE FUNZIONI 8

PROTOTIPO DI UNA FUNZIONE 1. Tipo di ritorno: può essere tipo predefinito (es.int); tipo composto (es.double*, cioè puntatori); tipo definito dall utente (es. struct, classi); void, cioè la funzione non restituisce alcun valore. Non si possono usare come tipi di ritorno un tipo funzione oppure un tipo array predefinito. C++ standard: il tipo di ritorno non può essere omesso = errore a tempo di compilazione. PROTOTIPO DI UNA FUNZIONE 9

PROTOTIPO DI UNA FUNZIONE 1. Tipo di ritorno: può essere tipo predefinito (es.int); tipo composto (es.double*, cioè puntatori); tipo definito dall utente (es. struct, classi); void, cioè la funzione non restituisce alcun valore. Non si possono usare come tipi di ritorno un tipo funzione oppure un tipo array predefinito. C++ standard: il tipo di ritorno non può essere omesso = errore a tempo di compilazione. 3. Lista dei parametri: in una definizione di funzione un nome di parametro consente di accedere al parametro nel corpo della funzione; in una dichiarazione di funzione il nome del parametro non è necessario (se c è può essere diverso da quello della def. di funz.). Controllo di tipo dei parametri al momento della compilazione. PROTOTIPO DI UNA FUNZIONE 9-A

Passaggio per valore: PASSAGGIO DEGLI ARGOMENTI int nome_funz(int n) { n = n + 1; return n; } Chiamata: n = 0; m = nome_funz(n); Risultato: n = 0, m = 1 Passaggio per riferimento: int nome_funz(int& n) { n = n + 1; return n; } Chiamata: n = 0; m = nome_funz(n); Risultato: n = 1, m = 1 PASSAGGIO DEGLI ARGOMENTI 10

PARAMETRI ARRAY E MATRICI Array monodimensionali. In C++ un array non è mai passato per valore, ma come un puntatore al suo primo elemento. Conseguenze: le modifiche sono effettuate sull array stesso e non su una copia locale; la dimensione di un array non fa parte del suo tipo parametro. Esempio di definizione di una funzione avente come parametro un array: int max(int v[], int dim) {... } Esempio di chiamata della funzione max: int massimo_voto = max(voti, numero_voti) PARAMETRI ARRAY E MATRICI 11

PARAMETRI ARRAY E MATRICI Array monodimensionali. In C++ un array non è mai passato per valore, ma come un puntatore al suo primo elemento. Conseguenze: le modifiche sono effettuate sull array stesso e non su una copia locale; la dimensione di un array non fa parte del suo tipo parametro. Esempio di definizione di una funzione avente come parametro un array: int max(int v[], int dim) {... } Esempio di chiamata della funzione max: int massimo_voto = max(voti, numero_voti) Array bidimensionali (matrici). Se utilizzato come parametro va specificato il numero di colonne. Esempio di definizione di una funzione avente come parametro una matrice: void visualizza_mat(int mat[][3], int righe) {... } PARAMETRI ARRAY E MATRICI 11-A

PARAMETRI ARRAY E MATRICI Array monodimensionali. In C++ un array non è mai passato per valore, ma come un puntatore al suo primo elemento. Conseguenze: le modifiche sono effettuate sull array stesso e non su una copia locale; la dimensione di un array non fa parte del suo tipo parametro. Esempio di definizione di una funzione avente come parametro un array: int max(int v[], int dim) {... } Esempio di chiamata della funzione max: int massimo_voto = max(voti, numero_voti) Array bidimensionali (matrici). Se utilizzato come parametro va specificato il numero di colonne. Esempio di definizione di una funzione avente come parametro una matrice: void visualizza_mat(int mat[][3], int righe) {... } es.array_candidati.cpp. PARAMETRI ARRAY E MATRICI 11-B

ESERCIZI 1. Struct: creare una struct "persona" (il nome scieglietelo pure voi, ma sensato) con due membri: nome e numero di telefono. Scrivere un programma che, una volta riempite con i dati necessari tre struct "persona", dia le seguenti 3 possibilita : 1. conoscere il nome a partire da un numero di telefono; 2. conoscere il numero di telefono a partire da un nome; 3. stampa l intera rubrica; 4. uscire dal programma. (nome_telefono.cpp). 2. Array di struct e funzioni: leggere n struct di persone ( n inserito dall utente) con due campi, nome ed età, e restituire il nome della piu giovane o di una delle piu giovani. Utilizzare una funzione per la lettura dei dati delle struct e una che restituisca l indice della persona selezionata. (piu_giovane_array.cpp). ESERCIZI 12

ESERCIZI 3. Array di struct e funzioni: crea un array di struct "studente" (cognome, array contenente i voti degli esami). Presenta all utente un menu con varie possibilita : media (in trentesimi); media (in 110); voto piu alto; voto piu basso; fine programma. Realizza ciascuna operazione con una funzione. Possibili estensioni dell esercizio: altre operazioni possibili sono vedere quante volte e stato preso un certo voto; fare un grafico dell andamento dei voti (es. con una matrice di caratteri). Ampliare la struct "studente" inserendo altri dati: nome materia, data esame, eventuale lode, ecc. (voti_esami.cpp). ESERCIZI 13