8 maggio Le lezioni di giovedi 9 maggio e giovedi 16 maggio saranno tenute dalla dott.ssa Di Ianni. Vediamo le vostre soluzioni per

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

Introduzione al linguaggio C

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

Esercitazione 10. Strutture ed Enumerazioni. Allocazione dinamica di memoria

I puntatori e l allocazione dinamica di memoria

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

Lezione 9: Strutture e allocazione dinamica della memoria

Gestione di files Motivazioni

Esame del 3 febbraio 2010

Introduzione al linguaggio C Gli array

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

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

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

Esercizio: gestione di un conto corrente

Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica

0 8 c h o o s e a h e a d

3. Terza esercitazione autoguidata: progetto gestione voli

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

La gestione della memoria

File di testo e file binari Directory

Ricerca sequenziale di un elemento in un vettore

ELLA DVICE RADING. Rho, 20 novembre DALL ANALISI TECNICA AL TRADING: Il trading infraday. A cura di: Giuliano Sarricchio UFFICIO ANALISI TECNICA

ELLA DVICE RADING. Rho, 20 novembre Swing Trading: Segnali Titoli Italia A cura di: Romano De Bortoli. Segnali Titoli Italia Multiday

INFORMATICA - I puntatori Roberta Gerboni

Files in C++ Fondamenti di Informatica. R. Basili. a.a

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

ELLA DVICE RADING. Palermo, 7 maggio Swing Trading: Segnali Titoli Italia Multiday A cura di: Romano De Bortoli UFFICIO ANALISI TECNICA

Introduzione alla programmazione in C

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

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Appello di Informatica B

Accreditato MIUR ai sensi del DM 177/00 e del DM 90/2003, Prot. 3297/C/3 del 10 giu 2003 Centro esami autorizzato. Sessione autunno 2015

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

Fondamenti di Informatica T. Linguaggio C: i puntatori

Fondamenti di Informatica 2

Fondamenti di Programmazione

CAPITOLO V. DATABASE: Il modello relazionale

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

Corso di Fondamenti di Informatica

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

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

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Storie di community e migrazioni riuscite: LibreUmbria e LibreItalia. Sonia Montegiove, Alfredo Parisi

Gestione dei File. dischi nastri cd

puntatori Lab. Calc. AA 2007/08 1

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/ febbraio A

1 Automi Cellulari (Rev )

Marilena Manzan - Tesi di Laurea Specialistica - A.A Giugno Università Ca Foscari di Venezia

LA PUBBLICITA NEL Alberto Dal Sasso Milano, 11 febbraio 2015

Input/output in C e in C++

SISTEMA FOTOVOLTAICO CON ACCUMULO ENERSHARING

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 4A di Martedì 21 Giugno 2011 tempo a disposizione 2h

Laboratorio di Algoritmi e Strutture Dati

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Sottoprogrammi: astrazione procedurale

Gestione dei processi

Funzioni in C. Violetta Lonati

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

Record in C: il costruttore struct.

INFORMATICA E PROGRAMMAZIONE PROF. M. GIACOMIN ESPERIENZA IN AULA: ELABORAZIONE DI IMMAGINI A COLORI IN LINGUAGGIO C

Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 20 Ottobre 2014

costruttori e distruttori

Esercizi di programmazione in C

Breve riepilogo della puntata precedente:

Laboratorio di Algoritmi e Strutture Dati

Esercizio 1. Esercizio 1

Grammatica di base: Pointers

Definizione di nuovi tipi in C

Laboratorio di programmazione

Allocazione dinamica della memoria - riepilogo

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.

Java Native Interface Appunti

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

AIP ITALIA Servizio Informazioni Aeronautiche

Sistemi Web per il turismo - lezione 3 -

Esercitazione sulle libpq - libreria C per PostgreSQL

strutturare dati e codice

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Problem solving elementare su dati vettoriali

Verifica che una grammatica sia Context Free nel GrammaReader

Statistica Applicata all edilizia Lezione 2: Analisi descrittiva dei dati

IL TURISTA ORGANIZZATO ITALIANO DALL INIZIO DELLA CRISI AD OGGI : I NUOVI COMPORTAMENTI CHE EMERGONO.

Antonio Pappano. Member of the Advisory Committee of MUSIC FESTIVAL Argerich's Meeting Point in Beppu. Fri, 01 Nov, Mon, 04 Nov,

Compito di Fondamenti di Informatica

Problem solving avanzato

Obbligazioni bancarie quotate direttamente sul MOT.

Esame di Informatica Generale 9 CFU 21 Giugno 2011 Professori: Carulli, Fiorino, Mazzei

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

Programmazione Orientata agli Oggetti in Linguaggio Java

PROGRAMMI LINGUAGGIO C

Introduzione al Linguaggio C

Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009

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

Corso di Informatica Medica Esercitazione 1I ! Alessandro A. Nacci - alessandronacci.com

Visibilità dei Membri di una Classe

Laboratorio di Algoritmi e Strutture Dati

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp KP Cap. 6 pp

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

Gestione dei File in C

Transcript:

8 maggio 2002 Avvisi: Le lezioni di giovedi 9 maggio e giovedi 16 maggio saranno tenute dalla dott.ssa Di Ianni. Vediamo le vostre soluzioni per Esercizio 6.28 (Eliminazione dei duplicati) Scrivere un programma che produca 20 numeri casuali tra 1 e 20. Il programma dovra immagazzinare in un vettore i suddetti numeri considerando solo quelli distinti. Utilizzare un vettore piu piccolo possibile per questo compito 1

Vediamo le vostre soluzioni per Esercizio 6.30 (Crivello di Eratostene) Scrivere un programma che utilizza un vettore di 1000 elementi per calcolare tutti i numeri primi tra 1 e 999 utilizzando la tecnica del crivello di Eratostene : Creare un vettore con tutti gli elementi inizializzati a 1 (alla fine il valore 1 indichera che il numero,corrispondente all indice e primo, 0 che non e primo) Partendo dall indice 2, se il valore e 1, scorrere il resto del vettore azzerando tutti i valori corrispondenti a multipli di 2. (questo azzerera tutti i valori corrispondenti a indici pari). Poi andare all indice 3 e se il valore e 1, scorrere il resto del vettore azzerando tutti i valori corrispondenti a multipli di 3. Poi andare all indice 4, 5, e rifare sempre lo stesso. Alla fine restera valore 1 solo in corrispondenza dei numeri primi. Strutture Collezioni di variabili collegate (aggregati) sotto un unico nome Possono contenere variabili di tipi di dati diversi. Spesso usate per definire record da immagazzinare nei file. Combinate con i puntatori possono creare liste, pile, code e alberi. 2

Definizione Esempio struct card { char *face; char *suit; }; struct introduce la definizione della struttura card card e il nome della struttura ed e usato per dichiarare le variabili di quel tipo di struttura card contiene due membri di tipochar * (face esuit) Definizione I membri di una struttura possono essere di vari tipi: tipi fondamentali o aggregati (es. array o anche altre strutture) Una struttura non puo contenere come membro una istanza di se stessa Puo contenere pero un membro che e un puntatore allo stesso tipo struttura (struttura ricorsiva). La definizione di una struttura non riserva spazio in memoria. Crea un nuovo tipo di dato che puo essere usato per dichiarare variabili. 3

. Dichiarazione Definizione Come per altre variabili: card onecard, deck[ 52 ], *cptr; Posso dichiarare le variabili insieme alla struttura: struct card { char *face; char *suit; } onecard, deck[ 52 ], *cptr; Operazioni valide Definizione Assegnare variabli di un certo tipo di struttura ad un altra dello stesso tipo Prendere l indirizzo di una variabile struttura (&) Accedere ai membri di una variabile struttura Usare l operatore sizeof per determinare lo spazio occupato da una variabile struttura Non si puo Confrontare due variabili struttura 4

Inizializzazione Liste di inizializzazione Esempio: card onecard = { "Three", "Hearts" }; Istruzioni di assegnazione Esempio : card threehearts = onecard; oppure: card threehearts; threehearts.face = Three ; threehearts.suit = Hearts ; Accedere ai membri delle strutture Operatore punto (.) si usa con le variabili struttura card mycard; printf( "%s", mycard.suit ); Operatore freccia (->) si usa con i puntatori a variabili struttura card *mycardptr = &mycard; printf( "%s", mycardptr->suit ); mycardptr->suit e equivalente a ( *mycardptr ).suit 5

Usare le strutture con le funzioni Per passare strutture a funzioni O passo la struttura per intero Oppure passo i membri singolarmente In entrambi i casi il passaggio e per valore Per passare strutture per riferimento Passo il suo indirizzo Per passare un array per valore Creo una struttura con un array come membro Passo la struttura Typedef Crea sinonimi (alias) per tipi di dati definiti precedentemente Usetypedef to create shorter type names. Esempio: typedef Card *CardPtr; Definisce un nuovo nome di tipocardptr come sinonimo per il tipocard * Attenzione! typedef non crea un nuovo tipo di dato: crea soltanto un alias! 6

1 /* Fig. 10.3: fig10_03.c 2 The card shuffling and dealing program using structures */ 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <time.h> 6 7 struct card { 8 const char *face; 9 const char *suit; 10}; 11 12typedef struct card Card; 13 14void filldeck( Card * const, const char *[], const char *[] ); 16void shuffle( Card * const ); 17void deal( const Card * const ); 18 19int main() 20{ 21 Card deck[ 52 ]; 22 const char *face[] = { "Ace", "Deuce", "Three", 23 "Four", "Five", 24 "Six", "Seven", "Eight", 25 "Nine", "Ten", 26 "Jack", "Queen", "King"}; 27 const char *suit[] = { "Hearts", "Diamonds", 28 "Clubs", "Spades"}; 29 30 srand( time( NULL ) ); 32 filldeck( deck, face, suit ); 33 shuffle( deck ); 34 deal( deck ); 35 return 0; 36} 37 38void filldeck( Card * const wdeck, const char * wface[], 39 const char * wsuit[] ) 40{ 41 int i; 43 for ( i = 0; i <= 51; i++ ) { 44 wdeck[ i ].face = wface[ i % 13 ]; 45 wdeck[ i ].suit = wsuit[ i / 13 ]; 46 } 47} 48 49void shuffle( Card * const wdeck ) 50{ 51 int i, j; 52 Card temp; 54 for ( i = 0; i <= 51; i++ ) { 55 j = rand() % 52; 56 temp = wdeck[ i ]; 57 wdeck[ i ] = wdeck[ j ]; 58 wdeck[ j ] = temp; 59 } 60} 7

61 62void deal( const Card * const wdeck ) 63{ 64 int i; 65 66 for ( i = 0; i <= 51; i++ ) 67 printf( "%5s of %-8s%c", wdeck[ i ].face, 68 wdeck[ i ].suit, 69 ( i + 1 ) % 2? '\t' : '\n' ); 70} Eight of Diamonds Eight of Clubs Seven of Hearts Ace of Clubs Deuce of Spades Seven of Spades Jack of Clubs King of Hearts Three of Hearts Three of Clubs Ten of Hearts Ten of Clubs Six of Clubs Six of Hearts Nine of Diamonds Jack of Spades King of Diamonds Nine of Spades Six of Spades Queen of Diamonds Ace of Spades King of Clubs King of Spades Queen of Hearts Four of Spades Four of Clubs Ace of Hearts Five of Spades Deuce of Diamonds Ten of Diamonds Six of Diamonds Deuce of Clubs Ten of Spades Jack of Diamonds Three of Diamonds Nine of Clubs Deuce of Hearts Seven of Diamonds Queen of Spades Three of Spades Ace of Diamonds Five of Clubs Seven of Clubs Four of Hearts Eight of Spades Five of Diamonds Nine of Hearts Five of Hearts Four of Diamonds Eight of Hearts Jack of Hearts Queen of Clubs 8

Costanti di enumerazione Insieme di costanti intere rappresentate da identificatori Costanti simboliche il cui valore e impostato automaticamente I valori cominciano da 0 e sono incrementati di1 In alternativa, possono essere definiti esplicitamente usando = I nomi delle costanti devono essere univoci Le variabili si dichiarano come per gli altri tipi Le variabili di enumerazione possono assumere soltanto il loro valore costante di enumerazione (non la loro rappresentazione intera!) Costanti di enumerazione Esempio: enum Months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC}; Comincia da1, incrementa di1 9

1 /* Fig. 10.18: fig10_18.c 2 Using an enumeration type */ 3 #include <stdio.h> 4 5 enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, 6 JUL, AUG, SEP, OCT, NOV, DEC }; 7 8 int main() 9 { 10 enum months month; 11 const char *monthname[] = { "", "January", "February", 12 "March", "April", "May", 13 "June", "July", "August", 14 "September", "October", 15 "November", "December" }; 16 17 for ( month = JAN; month <= DEC; month++ ) 18 printf( "%2d%11s\n", month, monthname[ month ] ); 19 20 return 0; 21} 1 January 2 February 3 March 4 April 5 May 6 June 7 July 8 August 9 September 10 October 11 November 12 December 10