Informatica (A-K) 19. Linguaggio C -6

Documenti analoghi
Fondamenti di Informatica

Fondamenti di Informatica 12. Linguaggio C -4

Laboratorio di Informatica

Informatica (A-K) 14. Linguaggio C -4

Laboratorio di Informatica

Fondamenti di Informatica II 7. Array e Strutture in C++

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Informatica (A-K) 12. Linguaggio C -3

Strutture. struct [<etichetta>] { { <definizione-di-variabile> } } <nomestruttura>

Tutorato Elementi di Informatica 2018

LABORATORIO di INFORMATICA

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Aritmetica dei puntatori

Linguaggio C - Strutture

dott. Sabrina Senatore

Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico 2008/2009 Francesco Tortorella

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008

Esercizi. Filtraggio

Gli array, le stringhe e le strutture

Lezione 6 Struct e qsort

Tipi di Dati Stutturati

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Strutture Dati. Luca Abeni

Il costruttore struct

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

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

Le strutture /2. Iniziamo ora a progettare il codice per la gestione del database. Quali sono le funzionalità da implementare?

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

Informatica (A-K) 23. Linguaggio C -8

Informatica B Allievi Meccanici con cognome da Cl a L Recupero della I prova intermedia 26/02/01 Prof. Elisabetta Di Nitto. Cognome Nome Matricola

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA

Esercizio 1: media di numeri reali (uso funzioni e struct)

Unità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture.

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Laboratorio di programmazione

Lezione 8 Struct e qsort

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 26 Novembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA

Fondamenti di Informatica 2

Introduzione al linguaggio C Puntatori

Fondamenti di Informatica

int, char, float..

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {

Fondamenti di Informatica: Ingegneria Meccanica Prova scritta del 12 luglio 2008

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Strutture, Unioni, Enumerazioni in C. Emilio Di Giacomo

in alternativa Quanto spazio occupa in memoria una variabile di tipo struct? dipende...

PARTE

Scrittura formattata - printf

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini

1 (6) 2 (7) 3 (7) 4 (7) 5 (6)

Informatica A (per gestionali) A.A. 2004/2005. Esercizi C. Funzioni: variabili e tipi locali e globali, passaggio parametri per valore, prototipo

Corso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1)

Lezione 20: Tipi derivati: struct e union

Elementi di Informatica e Programmazione Allievi Ingegneria Informatica, Elettronica e delle Telecomunicazioni, Automazione Industriale

Introduzione al linguaggio C Puntatori

Esercizio 1: parole nel testo

Fondamenti di Informatica

FUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice

Introduzione al linguaggio C Puntatori

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Informatica (A-K) 5. Algoritmi e pseudocodifica

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

Esercitazione 11. Liste semplici

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 26 Novembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

I puntatori e l allocazione dinamica di memoria

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Lezione 6: Array e puntatori

Appello di Informatica B

LE STRUTTURE DATI PARTE 2: RECORD. Prof. G. Ciaschetti

Esercizi. La funzione swapint() primo tentativo

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 21 Luglio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA

Strutture come parametri di funzioni

Struct, enum, Puntatori e Array dinamici

Cosa serve per cominciare?

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Il linguaggio C. Puntatori e dintorni

Linguaggio C: PUNTATORI

02/10/2014. Evoluzione del C. Evoluzione del C. Passi per risolvere un problema con il calcolatore

Fondamenti di Informatica T-1 Modulo 2

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

Fondamenti di Informatica

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Linguaggio C: puntatori

ELEMENTI DI INFORMATICA. Linguaggio C

Corso di Laboratorio di Sistemi Operativi A.A

FONDAMENTI DI INFORMATICA

Lab 09 Gestione file di testo

Strutture Dati Dinamiche

Sommario FONDAMENTI DI INFORMATICA 1. Il tipo FILE. Passaggio da standard I/O. LINGUAGGIO C Gestione dei file

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

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Transcript:

Informatica (A-K) 19. Linguaggio C -6 Una struttura è un insieme finito di variabili (dette campi) non necessariamente dello stesso tipo, ognuna identificata con un nome l insieme dei campi è denominato record sintassi struct nome_struttura { tipo1 nome_variabile1;... tipon nome_variabilen; La struttura definisce un nuovo tipo di dato Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi 2 Istruzione typedef Esempio struct studente { char nome[20]; char indirizzo[50]; char datanascita[8]; int matricola; int num_esami; ; Dichiarazione di una variabile di tipo struct struct studente stud; per poter descrivere in maniera piu concisa un tipo struttura si puo usare la parola chiave typedef ; ; typedef struct daticd cddata; /*definisce un nuovo tipo */ cddata disco; 3 4

Esempio Dopo aver definito una variabile struttura, si accede ai singoli campi mediante la notazione. (punto) i campi di una struttura possono essere usati come qualunque variabile dello stesso tipo esempio: disco.prezzo=10; printf( %s,disco.titolo); disco.copie++; 5 #include <stdio.h> struct studente { char nome[20]; char indirizzo[50]; char datanascita[8]; int matricola; int num_esami; float media; ; struct studente stud; int main( ){ scanf( %s %s %s %s %d %d,stud.cognome, stud.nome, stud.indirizzo, stud.datanascita, &stud.matricola, &stud.num-esami); stud.media= 28.5; printf( %s %s %s %s %d %d %f,stud.cognome, stud.nome, stud.indirizzo, stud.datanascita, stud.matricola, stud.num-esam, stud.media); return 0; 6 Esempi strutture di dati Una volta definito un tipo dati struttura, essa si comporta come un qualsiasi altro tipo di dati. Si puo ad esempio: assegnare una variabile struttura ad un altra far si che una funzione restituisca una struttura alla funzione chiamante passare strutture sia per valore che per referenza (riferimento) cddata cd1 = { Toccata e fuga, Bach, 30, sinfonia ; cddata cd2 = cd1; //uguaglianza tra strutture void stampa_cd(cddata x) { // passaggio per valore printf( %s %s %f %s \n,x.autore,x.titolo,x.prezzo,x.genere); void prezzo_scontato(cddata *x) { // passaggio per referenza *x.prezzo=*x.prezzo * 80/100; 7 8

Tabelle di dati La tabella di dati è un array di strutture ; ; struct daticd CD[100]; // tabella costituita da 100 CD Istruzione typedef per poter descrivere in maniera piu concisa un tipo struttura si puo usare la parola chiave typedef ; ; typedef struct daticd cddata; /*definisce un nuovo tipo */ cddata CD[100]; /* tabella costituita da 100 CD */ 9 10 Tabelle di dati : Esempio 1 ; char titolo[20]; char genere[20]; ; struct daticd CD[100]; // tabella costituita da 100 CD CD[5].prezzo = 13; CD[8].giorno_vendita.gg= 5; CD[8].giorno_vendita.mm= 6; CD[8].giorno_vendita.aa= 2012; Classifica di una gara ciclistica #include <stdio.h> struct time { int hh,mm,ss; int totsecondi; ; struct concorrente { int pettorale; char squadra[20]; struct time tempo; ; typedef struct concorrente partec; partec tab[200]; /* tabella costituita da 200 corridori */ 11 12

void caricatabella( ); void ordina( ); void swap( ); void stampa( ); int main( ) { caricatabella( ); ordina( ); stampa( ); return 0; ; 13 void caricatabella( ){ int i; for(i=0; i<200; i++){ printf( inserisci numero pettorale ); scanf( %d, &tab[i].pettorale); printf( inserisci cognome ); scanf( %s, tab[i].cognome); printf( inserisci squadra ); scanf( %s, tab[i].squadra); printf( inserisci ore impiegate ); scanf( %d, &tab[i].tempo.hh); printf( inserisci minuti impiegati ); scanf( %d, &tab[i].tempo.mm); printf( inserisci secondi impiegati ); scanf( %d, &tab[i].tempo.ss); tab[i].tempo.totsecondi=tab[i].tempo.hh*3600+ tab[i].tempo.mm*60+tab[i].tempo.ss; ; 14 void ordina( ){ int i, j; for(i=0; i<199; i++){ for(j=i+1; j<200; j++){ if(tab[i].tempo.totsecondi>tab[j].tempo.totsecondi){ swap(&tab[i], &tab[j]); void stampa( ){ int i; printf( %s %s %s %s %s %s \n, Pettorale, Cognome, Ore, Minuti, Secondi, Posizione ); for(i=0; i<200; i++) { printf( %d %s %d %d %d %d \n, tab[i].pettorale, tab[i].cognome, tab[i].tempo.hh, tab[i].tempo.mm, tab[i].ss, i+1); ; void swap(partec *a, partec *b); partec comodo; comodo = *a; *a = *b; *b = comodo; ; 15 16

Riepilogo della lezione Fine della lezione Tabelle in C Tabelle in C Domande? 17 18 Esercizio 1 In una libreria costituita da 1000 libri, ciascun libro è identificato dalle seguenti informazioni: ID, titolo, autore, codice ISBN, prezzo, casa editrice, data edizione. Implementare le seguenti funzioni (variabili globali): 1) Caricamento della tabella relativa alla libreria 2) Calcolo del prezzo medio dei libri 3) Ordinamento in ordine crescente di prezzo della tabella 19