Informatica 2 modulo C Massimo Callisto De Donato
|
|
- Elisa Mancuso
- 5 anni fa
- Visualizzazioni
Transcript
1 Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Informatica 2 modulo C Massimo Callisto De Donato massimo.callisto@unicam.it LEZIONE 8 LE STRUTTURE
2 Le strutture Abbiamo visto tipi di dati base (int, char,...) ed il tipo derivato array per manipolare gruppi omogenei di dati. Capita spesso di dover aggregare elementi di tipo diverso (non omogenei). Esempio: scrivere un programma che memorizzi le date di assunzione (es. 23 febbraio 2006) di n dipendenti (identificati da nome e cognome) con relativo stipendio. Si deve poter ricercare, a partire da un nome o stipendio, la relativa data di assunzione.
3 Strutture Soluzione: 3 vettori per le date: int* gg, char *mese, int* anno 2 vettore per i dipendenti: char *nome, char* cognome 1 vettore per lo stipendio: int *stipendio La connessione tra i vettori è data dalla relativa posizione Funzione di ricerca che ritorni l indice relativo al dipendente trovato (per nome o stipendio): int ricerca(char* nome, char* cognome); int ricerca_x_stipendio(int stipendio); Implementiamo la soluzione (esercizio). Abbastanza laborioso il tutto
4 Strutture Sfruttiamo un nuovo tipo di dato derivato che il C mette a disposizione: le strutture (struct) Una struct ci permette di organizzare in modo efficiente gruppi di dati di diverso tipo. Esempio: questa è la struttura che può modellare il concetto di data di assunzione struct data { int giorno; char* mese; int anno; ;
5 Strutture: schema Una serie di campi (campo1,,campon) eterogenei: Ogni campo può essere di tipo base (int, float,... ) o derivato (array, strutture, ). nome_struct identifica la struct nel programma. struct nome_struct { ; tipo_a campo1; tipo_b campo2; tipo_? campo1;
6 Strutture: esempi di definizione #define LEN 150 struct data { int giorno; char* mese; int anno; ; struct persona{ char nome[len]; char cognome[len]; char codice_fiscale[len]; int eta; ; struct punto_vendita{ char nome[len]; char *citta; int dipendenti; ; struct punto{ int coordinata_x; int coordinata_y; ;
7 Strutture: definizione variabili Le istruzioni di prima hanno solo detto al compilatore lo schema generale. Il passo successivo è definire una variabile: di tipo struttura; il tipo deve seguire uno schema definito prima. Sintassi generale: struct nome_struct nome_variabile; Con le strutture di pima: struct data oggi; // n.b.: i dati in oggi sono ancora?? struct punto_vendita alimentari; struct punto punto_a, punto_b;
8 Strutture: definizione alternativa Spesso si usa una sintassi alternativa e più compatta per definire i tipi strutture. Usiamo la parola chiave typedef che funziona da alias per un tipo di dato: typedef nome_tipo mio_nuovo_nome; Esempio: i due modi sotto sono equivalenti: Lo possiamo applicare a casi generali oltre che alle struct! struct data { int giorno; char* mese; int anno; ; struct data oggi; typedef struct { int giorno; char* mese; int anno; data; data oggi;
9 Strutture: accesso alla variabile Definito lo schema di una struct ed una variabile che segue quello schema, accediamo ai campi della variabile con l operatore punto. : variabile.membro; Esempio: typedef struct { int giorno; char* mese; int anno; data; data oggi; oggi.giorno = 20; oggi.mese = maggio ; oggi.anno = 2011;
10 Esempio typedef struct{ float _x; float _y; punto; float powerof(float); float dst(punto, punto); int main() { char c; punto pt_a, pt_b; do{ printf( Punto A: "); scanf("%f%f", &pt_a._x, &pt_a._y); printf( Punto B: "); Ci vuole sempre la & scanf("%f%f", &pt_b._x, &pt_b._y); printf("distanza: %3.4f\n", dst(pt_a, pt_b)); while((c=getchar())!= 'N'); float powerof(float value){ return (value*value); float dst(punto a, punto b) { float distanza, dx, dy; dx = powerof(a._x - b._x); dy = powerof(a._y - b._y); distanza = sqrt(dx + dy); return distanza; return 0;
11 Strutture: funzioni e strutture Il passaggio delle strutture come parametro formale avviene sempre per valore. Le strutture possono essere ritornate come un qualsiasi tipo di dato. Esercizio: aggiungere al programma precedente una funzione per calcolare il punto medio tra gli estremi. Prototipo: punto punto_medio(punto a, punto b); Formula matematica PM = ((x 1 +x 2 )/2, (y 1 +y 2 )/2)
12 Strutture: assegnazione Possiamo assegnare strutture ad altre strutture, ovviamente se il tipo è uguale: typedef struct { int giorno; char *mese; int anno; data; data oggi domani; oggi.giorno = 23; oggi.mese = "febbraio"; oggi.anno = 2006; domani = oggi; // ora domani ha gli stessi valori di oggi domani.giorno++;
13 Strutture: assegnazione /* abbiamo usato su new_data un modo equivalente per dichiarare una struttura. Di conseguenza, la dichiarazione della variabile di quel tipo è leggermente diversa. */ typedef struct{ int giorno; char mese[10]; int anno; data; struct new_data{ int giorno; char mese[10]; int anno; ; data oggi; struct new_data domani; domani = oggi; //errore - tipi non compatibili
14 Strutture: equivalenze Non ha senso relazionare direttamente due strutture, i membri si. typedef struct{ float x; float y; punto; punto a; a.x = 10.2; a.y = 20.1; punto b; b.x = 13; b.y = 27.4; if(a < b) { // errore if(a.x < b.x & a.y < b.y) { // ok
15 Strutture: inizializzazione L inizializzazione avviene come per gl array. typedef struct{ float x; float y; punto; punto a = {10.2, 20.1; punto b = {13, 27.4; a.x = b.x - 5.2; a.y = ++b.y - 4; // a.y==23.4, b.y==28.4
16 Strutture: array di strutture Stessa sintassi degli array. #define LEN 100 typedef struct { char nome[len]; char citta[len]; int dipendenti; shop; shop negozio[5]; int i; for(i = 0; i < 5; i++) scanf("%s%s%d", negozio[i].nome, negozio[i].citta, &negozio[i].dipendenti); for(i = 0; i < 5; i++) printf("%s,%s,%d\n", negozio[i].nome, negozio[i].citta, negozio[i].dipendenti);
17 Esempio: passaggio di array di strutture #include <stdio.h> #define LEN 100 #define N 3 typedef struct { char nome[len]; char cognome[len]; worker; worker add(void); void stampa_lista(worker *); int main() { worker persona[n]; int i; for(i = 0; i < N; i++) persona[i] = add(); stampa_lista(persona); return 0; worker add(void){ worker tmp; scanf("%s%s", tmp.nome, tmp.cognome); return tmp; void stampa_lista(worker *lista){ int i; for(i = 0; i < N; i++) printf("%s,%s\n", lista[i].nome, lista[i].cognome);
18 Strutture: membri eterogenei Una struttura può aggregare altre strutture. Questo permette di rappresentare schemi di dati avanzati. Esempio: rappresentiamo un insieme di persone con un array persona anagrafe[4000]; typedef struct{ int giorno; char mese[10]; int anno; data; typedef struct{ char via[35]; int numero; char citta[30]; char provincia[2]; indirizzo; typedef struct{ char nome[30]; char cognome[30]; data nascita; char comune[30]; char telefono[20]; indirizzo ind; persona;
19 Strutture: puntatori a strutture E possibile dichiarare puntatori a strutture ed ottenere gli effetti già visti (es.: pass. per rif. di strutture, allocazione dinamica di strutture). Usiamo sempre: & per l indirizzamento; L operatore * per accedere al contenuto della struttura puntata. typedef struct{ int giorno; char* mese; int anno; data; data oggi, *pts; pts = &oggi; (*pts).giorno = 12; (*pts).mese = "Giugno"; (*pts).anno = 2011; N.b.: (*pts).anno è diverso da *pts.anno L operatore. ha precedenza su *
20 Precedenza tra operatori (aggiornata) Precedenze fra Operatori Operatori Associativita' () [] ->. da sinistra a destra! ~ & * (tipo) sizeof da destra a sinistra * / % da sinistra a destra + - da sinistra a destra << >> da sinistra a destra < <= > >= da sinistra a destra ==!= da sinistra a destra & da sinistra a destra ^ da sinistra a destra da sinistra a destra && da sinistra a destra da sinistra a destra?: da destra a sinistra = += -= *= /= %= &= ^= = <<= >>= da destra a sinistra, da sinistra a destra
21 Strutture: puntatori a scrittura compatta -> Con i puntatori a strutture possiamo usare l operatore -> al posto degli operatori * e. typedef struct{ int giorno; char* mese; int anno; data; data oggi, *pt; pt = &oggi; pt->giorno = 23; pt->mese = Marzo ; pt->anno = 2011; // (*pt).giorno=23; // (*pt).mese= Marzo ; // (*pt).anno=2006;
22 Esempio #include <stdio.h> #include <stdlib.h> #include <unistd.h> typedef struct { int ora, min, sec; clock; void _initc(clock *pt); void _updatec(clock *pt); void _stampc(const clock *pt); int main(int argc, char *argv[]) { clock ora; clock *pts = &ora; _initc(pts); printf("timer started. Ctrl+C to stop\n"); while(1){ _updatec(pts); sleep(1000); return 0; N.b.: Non sempre otteniamo gli stessi risultati su piattaforme diverse. void _initc(clock *pt){ pt->ora = pt->min = pt->sec = 0; void _updatec(clock *pt){ pt->sec = ++pt->sec % 60; if(!pt->sec){ pt->min = ++pt->min % 60; if(!pt->min){ pt->ora++; _stampc(pt); void _stampc(const clock *pt){ printf("[%dh %dm %ds]\r", pt- >ora, pt->min, pt->sec);
23 Esercizio Implementare l esercizio proposto all inizio con i vettori utilizzando le strutture. La struttura che identifica il dipendente contiene un campo key per l identificazione univoca. Lo stipendio lo possiamo aggregare al dipendente.
24 Strutture: allocazione dinamica L allocazione dinamica di strutture fa affidamento su sizeof(). Senza non possiamo sapere quanta memoria occupa una struttura. typedef struct{ int giorno; char* mese; int anno; data; data *new_day; new_day = (data *) malloc(sizeof(data)); if(new_day == NULL) {/* out of memory */ new_day->giorno = 23; new_day->mese = "Marzo"; new_day->anno = 2011;
25 Strutture: esempio di liste Le strutture rivestono un ruolo fondamentale nell implementazione delle liste, ovvero elementi uguali connessi in sequenza. DATI DATI DATI Null Testa Coda I dati possono essere di tipo arbitrario I puntatori puntano allo stesso tipo dell elemento della lista Rispetto ad un array, una lista ha un lunghezza variabile dato che gli elementi vengono generati, allacciati e rimossi a run-time.
26 Esempio complesso: anagrafe (1) #include <stdio.h> #include <stdlib.h> typedef struct { char nome[100]; char cognome[100]; persona; N.b.: Ancora non abbiamo terminato il typedef per anagrafe. Quindi dobbiamo mettere la parola chiave struct typedef struct { persona *corrente; struct anagrafe *prossimo; anagrafe; persona* aggiungi_persona(void); anagrafe* aggiungi_anagrafe(void); void stampa_anagrafe(anagrafe*); void accoda(anagrafe*, anagrafe*);
27 Esempio complesso: anagrafe (2) persona* aggiungi_persona(void){ persona *tmp = (persona *) malloc(sizeof(persona)); if(tmp == NULL){ printf("out of memory!"); exit(-1); printf("insericni cognome e nome separati da spazio:"); scanf("%s%s", tmp->cognome, tmp->nome); return tmp; anagrafe* aggiungi_anagrafe(void){ anagrafe *tmp = (anagrafe *) malloc(sizeof(anagrafe)); if(tmp == NULL){ printf("out of memory!"); exit(-1); tmp->corrente = aggiungi_persona(); tmp->prossimo = NULL; return tmp;
28 Esempio complesso: anagrafe (3) void accoda(anagrafe* lista, anagrafe* elemento){ if(lista->prossimo == NULL) lista->prossimo = (struct anagrafe *) elemento; else accoda(lista->prossimo, elemento); // chiamata ricorsiva void stampa_anagrafe(anagrafe* ang){ printf("[%s, %s]\n", ang->corrente->cognome, ang->corrente->nome); if(ang->prossimo!= NULL) stampa_anagrafe((anagrafe *) ang->prossimo); // chiamata ricorsiva
29 Esempio complesso: anagrafe (4) /* mettiamo tutto insieme */ /* potevamo pensare a schemi di input migliori */ int main(int argc, char *argv[]) { int i = 10; anagrafe *elemento; anagrafe *mia_lista = aggiungi_anagrafe(); stampa_anagrafe(mia_lista); while(i--){ accoda(mia_lista, aggiungi_anagrafe()); stampa_anagrafe(mia_lista); return 0;
Programmazione C Massimo Callisto De Donato
Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE
DettagliLinguaggio C - Strutture
Strutture: Le strutture (talvolta chiamate aggregati), così come gli array, sono tipi di dati derivati. Indicano collezioni di variabili collegate sotto un unico nome. Le strutture possono contenere variabili
DettagliTipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 6 - Liste Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento
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
DettagliLezione 13: Strutture dati dinamiche
Lezione 13: Strutture dati dinamiche Laboratorio di Elementi di Architettura e Sistemi Operativi 7 Maggio 2013 Riepilogo lezioni Data Argomento Compitino mar 07/05 Programmazione C: strutture mer 08/05
DettagliEsercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018
Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercizi sull allocazione dinamica della memoria in C Il codice di questi esercizi é contenuto nella cartella parte1 1. Implementare una lista
Dettagliparte dichiarativa globale: dichiarazioni di costanti dichiarazioni di tipi dichiarazioni di variabili prototipi di funzioni/procedure
Tipi user-defined Il C mette a disposizione un insieme di tipi di dato predefiniti (tipi built-in) e dei meccanismi per definire nuovi tipi (tipi user-defined) Vediamo le regole generali che governano
Dettagliparte dichiarativa globale: dichiarazioni di costanti dichiarazioni di tipi dichiarazioni di variabili prototipi di funzioni/procedure
Tipi user-defined Il C mette a disposizione un insieme di tipi di dato predefiniti (tipi built-in) e dei meccanismi per definire nuovi tipi (tipi user-defined) Vediamo le regole generali che governano
DettagliCorso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1)
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Strutture e Unioni DD Cap. 10, pp. 379-391, 405-406 KP Cap. 9, pp. 361-379 Strutture Strutture Collezioni di variabili correlate (aggregati)
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
DettagliC: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
DettagliAllocazione dinamica memoria
Allocazione dinamica memoria Marco Casazza 11/12/2017 1 Esercizio 1 1 /* 2 Creare una lista bidirezionale di interi, ovvero una lista 3 che permette lo scorrimento in entrambe le direzioni ( dal primo
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
DettagliTipi user-defined. parte dichiarativa globale:
Il C mette a disposizione un insieme di tipi di dato predefiniti (tipi built-in) e dei meccanismi per definire nuovi tipi (tipi user-defined) Vediamo le regole generali che governano la definizione di
Dettaglidott. Sabrina Senatore
dott. Sabrina Senatore Dipartimento di Informatica Riepilogo strutture 1 Sintassi della dichiarazione: typedef struct nome_tipo { Dichiarazione dei campi nome_tipo; typedef struct point{ int x; int y;
DettagliFondamenti di Informatica 2
Fondamenti di Informatica 2 della prova scritta del 6 Aprile 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int x = -1; Scrivere la porzione di codice che inserisce
DettagliLaboratorio di Informatica
Record Laboratorio di Informatica Ingegneria Meccanica Lezione 9, 6 dicembre 2007 versione 18 dicembre 2007 Renato Menicocci Array: collezione di dati omogenei
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
DettagliLezione 11: Liste a Puntatori e Input/Output
Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)
DettagliLaboratorio di Algoritmi e Strutture Dati Ingegneria e Scienze Informatiche - Cesena A.A
Ingegneria e Scienze Informatiche - Cesena A.A. 2014-2015 pietro.dilena@unibo.it MergeSort MergeSort MergeSort: esempio MergeSort: pseudocodice Algoritmo di ordinamento ricorsivo basato sulla tecnica Divide
DettagliTitolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.
Titolo presentazione INFORMATICA A sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario
DettagliLe strutture. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA
UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI "PROGRAMMAZIONE I" Prof. Franco FRATTOLILLO Dipartimento di Ingegneria Università degli Studi del Sannio Le strutture
DettagliLe strutture dati elementari (I parte) Gianpiero Cabodi Dip. Automatica e Informatica Politecnico di Torino
Le strutture dati elementari (I parte) Gianpiero Cabodi Dip. Automatica e Informatica Politecnico di Torino Progettare un programma Scegliere una adeguata struttura dati per: codificare le informazioni
DettagliLezione 20: Tipi derivati: struct e union
Lezione 20: Tipi derivati: struct e union Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università di Salerno Struttura della lezione Tipi di dati derivati: strutture (struct)
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
DettagliPuntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
DettagliStruct, enum, Puntatori e Array dinamici
Struct, enum, Puntatori e Array dinamici Tratti dal corso del Dr. Francesco Fabozzi Corso di Informatica Tipi di dato in C Abbiamo esaminato diversi tipi di dato che il C mette a disposizione dell utente
DettagliEsercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018
Esercitazioni di Fondamenti di Informatica - Lez. 7 0/11/018 Esercizi sull allocazione dinamica della memoria in C 1. Cosa stampa il seguente programma? 1 #d e f i n e MAXLENGTH 0 4 typedef struct { char
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;
DettagliAritmetica dei puntatori
Aritmetica dei puntatori Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 7 dicembre 2016 sizeof L operatore
DettagliStrutture, Unioni, Enumerazioni in C. Emilio Di Giacomo
Strutture, Unioni, Enumerazioni in C Emilio Di Giacomo Strutture Una struttura è una collezione di variabili raggruppate sotto uno stesso nome da questo punto di vista è simile a un array Le variabili
DettagliStrutture dati dinamiche
Strutture dati dinamiche - Liste concatenate - Pile -> LIFO (last in first out) - Code -> FIFO (first in first out) - Alberi binari: gestione dati in algoritmi complessi Liste Concatenate Formata da elementi
DettagliLe strutture /1. struct temp {char titolo[200]; char autore[100]; int pagine; } ; typedef struct temp libro;
Le strutture /1 Le strutture rappresentano un tipo di variabile che, diversamente dagli array, consente di gestire in modo compatto, mediante un'unico identificatore, un insieme di valori che non possiedano
DettagliJAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {
JAVA C import javautil*; public static class test { private int variable; public void main (String[] args) { variable = 0; Systemoutprintln( Variable is: + variable); #include int variable; int
DettagliCorso di Laboratorio di Sistemi Operativi A.A
Corso di Laboratorio di Sistemi Operativi A.A. 2016 2017 Lezione 9 Ivan Scagnetto ivan.scagnetto@uniud.it Nicola Gigante gigante.nicola@spes.uniud.it Dipartimento di Scienze Matematiche, Informatiche e
DettagliLezione 8: Stringhe ed array multidimensionali
Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si
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
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci
DettagliLezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione
DettagliLezione 6: Array e puntatori
Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci
DettagliHash Table. Hash Table
Hash Table La ricerca di un elemento su una lista (semplice o doppia) presenta una complessità di tipo O(n), dato che occorre scandire (al più) l intera lista per poter trovare l elemento desiderato. Le
DettagliI puntatori. DD Cap.7 pp KP Cap.6 pp
I puntatori DD Cap.7 pp.245-280 KP Cap.6 pp.219-235 Cos è un puntatore Un puntatore è una variabile che assume come valore un indirizzo di memoria. Il nome di una variabile fa quindi riferimento ad un
DettagliFondamenti di Informatica 2
Fondamenti di Informatica 2 della prova scritta del 14 Febbraio 2006 Esercizio 1 (4 punti) Formulare la seguente istruzione del linguaggio C utilizzando il costrutto while: for(i=0,j=n-1; i
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 5 Struct, Union e allocazione dinamica della memoria Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori
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
DettagliFondamenti di Informatica T-1, 2015/2016 Modulo 2. Prova d Esame 1A di Giovedì 14 Gennaio 2016 tempo a disposizione 2h
Avvertenze per la consegna: apporre all inizio di ogni file sorgente un commento contenente i propri dati (cognome, nome, numero di matricola) e il numero della prova d esame. Al termine, consegnare tutti
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
DettagliStrutture Dati. Luca Abeni
Strutture Dati Luca Abeni Dati e Tipi di Dati Una variabile è caratterizzata dal suo Tipo Specifica i valori che può assumere (Insieme di Definizione) Specifica a quanti byte di memoria la variabile è
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
DettagliStrutture Dinamiche. Strutture Dinamiche
Corso di Informatica A Vito Perrone 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato)); Crea in memoria una variabile
DettagliFondamenti di Informatica 12. Linguaggio C -4
Strutture Dati in C Le strutture dati sono entità che permettono di memorizzare dati in modo organizzato e funzionale a particolari esigenze Fondamenti di Informatica 12. Linguaggio C -4 Strutture Dati
DettagliIl linguaggio C Strutture
Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi
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
DettagliFunzioni, puntatori, strutture. Lab. Calc. AA 2006/07
Funzioni, puntatori, strutture sommario In questa lezione integriamo le informazioni fornite su puntatori e funzioni approfondendo i seguenti punti Puntatori a puntatori Puntatori e array come parametri
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
DettagliDati strutturati in C
Dati strutturati in C Fondamenti di Informatica Array Perchè usare gli array? float venditegennaio, venditefebbraio, venditemarzo, venditeaprile, venditemaggio, venditegiugno, venditeluglio, venditeagosto,
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
DettagliLezione 12: Allocazione Dinamica della Memoria
Lezione 12: Allocazione Dinamica della Memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 17 Aprile 2013 Puntatori e vettori Puntatori ed indirizzi Semplificando, la memoria di un computer
DettagliLaboratorio di Informatica
-- Conversione di tipo in C (V) -- Laboratorio di Informatica Ingegneria Meccanica Lezione 7, 22 novembre 2007 versione 24 novembre 2007 Renato Menicocci
Dettagli&v restituisce l indirizzo della zona di memoria allocata per v.
Puntatori Sia v una variabile di tipo T. Al momento della creazione della variabile v il sistema alloca memoria sufficiente a contenere i valori appartenenti al tipo T. &v restituisce l indirizzo della
Dettagli8 maggio Le lezioni di giovedi 9 maggio e giovedi 16 maggio saranno tenute dalla dott.ssa Di Ianni. Vediamo le vostre soluzioni per
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
DettagliInformatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array.
Informatica A (per gestionali) A.A. 2004/2005 Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array. Indice 1 Funzioni: passaggio di parametri per indirizzo; puntatori...3
DettagliInformatica A (per gestionali) A.A. 2004/2005. Esercizi C. Funzioni: variabili e tipi locali e globali, passaggio parametri per valore, prototipo
Informatica A (per gestionali) A.A. 2004/2005 Esercizi C Funzioni: variabili e tipi locali e globali, passaggio parametri per valore, prototipo Indice 1 Funzioni: passaggio di parametri per valore, variabili
DettagliInformatica 1. Prova di recupero 21 Settembre 2001
Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo
DettagliPrecedenza e associatività. Complementi sul C - 2. Esempi. Esempi
Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >
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
Dettaglidefinisce un vettore di 4 puntatori a carattere (allocata memoria per 4 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 (allocata
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento
DettagliInformatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012
Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012 Igor Melatti Cenni sui puntatori in C Per ogni variabile normale dichiarata, il compilatore riserva una precisa quantità di
DettagliFondamenti di Informatica: Ingegneria Meccanica Prova scritta del 12 luglio 2008
Fondamenti di Informatica: Ingegneria Meccanica Prova scritta del 12 luglio 2008 Gli studenti dell a.a. 2007-2008 e 2006-2007 (6CFU) devono svolgere i 6 esercizi. Gli studenti degli anni precedenti non
DettagliALGORITMI E STRUTTURE DATI
ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Puntatori e Liste StudentiDIA
DettagliINFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti
INFORMATICA A Titolo presentazione sottotitolo A.A. 2018-19 Milano, XX mese 20XX Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti Ricorsione La ricorsione è un approccio per la risoluzione
DettagliTipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione
Dettagliliste ogni nodo ha un successore, tranne l ultimo della lista che ne ha zero; alberi binari ogni nodo ha zero, uno oppure due figli
Alberi generali Gli alberi visti fino a questo momento erano insiemi di nodi collegati fra di loro, in cui ogni nodo poteva avere al massimo due figli. Negli alberi generali, ogni nodo può avere un numero
DettagliLinguaggio C: Array Valeria Cardellini
Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione
DettagliPuntatori e array. Violetta Lonati
Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array
DettagliUso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliStrutture Dinamiche. Fondamenti di Informatica
Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));
DettagliCorso di Informatica A.A
Corso di Informatica A.A. 2009-2010 Lezione 11 Corso di Informatica 2009-2010 Lezione 11 1 Utilizzo dei puntatori Funzioni Perche i Puntatori? I puntatori hanno tre importanti applicazioni: 1. Passaggio
DettagliIntroduzione ai puntatori in C Definizione
Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il
DettagliEsercizio (o esempio?)
Esercizio (o esempio?) programma che legge un intero n e n double; li memorizza in un array dinamico esatto calcola e stampa minimo, massimo e media dei double #include 1) Lettura e memorizzazione
DettagliFondamenti di Programmazione
A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome
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
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 19 14/04/2014
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 19 14/04/2014 Puntatori I puntatori sono tipi di dati che rappresentano la posizione (indirizzi di memoria) di elementi (oggetti)
DettagliCorso di Informatica A.A
Corso di Informatica A.A. 2009-2010 Lezione 15 Corso di Informatica 2009-2010 Lezione 15 1 Liste concatenate Liste concatenate Una lista concatenata costituisce un metodo molto utile per immagazzinare
DettagliStrutture Dati. Nicu Sebe. Informatica Nicu Sebe 1 / 27
Strutture Dati Nicu Sebe Informatica Nicu Sebe 1 / 27 Dati e Tipi di Dati e Spazi Una variabile è caratterizzata dal suo Tipo Specifica i valori che può assumere (Insieme di Definizione) Specifica a quanti
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
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
DettagliProf. G. Ascia. I puntatori. Fondamenti di Informatica
I puntatori 1 Associazione Variabile-Indirizzo Tutte le volte che in un programma si dichiarano delle variabili, l'esecutore associa alla variabile un indirizzo. Es. Dato il programma #include
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:
DettagliALGORITMI E STRUTTURE DATI
Esercitazioni del corso di: ALGORITMI E STRUTTURE DATI Tutor: Francesca Piersigilli email: francesca.piersigilli@unicam.it Strutture dati elementari Tecniche di organizzazione dei dati: scelta della struttura
DettagliFondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme
DettagliTipi strutturati - struct
Fondamenti di Programmazione A Appunti per le lezioni Gianfranco Rossi Tipi strutturati - struct Struttura dati (concreta) struct: sequenza di n elementi (n 0), rispettivamente di tipo t1,,tn (non necessariamente
DettagliGestione dei files. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132
Gestione dei files Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132 Struttura del disco fisso Un disco fisso è composto da una serie di piatti sovrapposti Ogni piatto è
Dettagli