Fondamenti di Informatica AA 2016/2017

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Fondamenti di Informatica AA 2016/2017"

Transcript

1 Fondamenti di Informatica AA 2016/2017 Eng. Ph.D. Michela Paolucci DISIT Lab Department of Information Engineering, DINFO University of Florence Via S. Marta 3, 50139, Firenze, Italy tel: , fax: Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

2 DISIT Lab Department of Information Engineering, DINFO University of Florence Via S. Marta 3, 50139, Firenze, Italy Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

3 Orario del Corso e Ricevimento Il ricevimento si svolge su appuntamento contattando la docente via michela.paolucci@unifi.it Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

4 Libro di testo Enrico Vicario Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++ Editore: Esculapio ISBN: NOTA: Queste slide integrano e non sostituiscono quanto scritto sul libro di testo. Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

5 Pagina del Corso Qui trovate: - AVVISI - Slide del corso - Approfondimenti Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

6 Outline Strutture dati e algoritmi elementari Liste Rappresentazione in forma sequenziale Rappresentazione collegata con array e indici Rappresentazione con puntatori Iterazione e ricorsione Cenni sugli alberi Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

7 ancora sul concetto di puntatore Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

8 Concetto di puntatore I puntatori sono delle variabili che mantengono il valore dell indirizzo di altre variabili o di altri puntatori Operatori: & e * Data la dichiarazione: int *a, b=5; Per convenzione il valore iniziale di un puntatore è NULL. NULL è una costante simbolica pari a 0 Data una variabile è possibile risalire al suo indirizzo tramite l operatore unario &. Per esempio data la variabile intera b SE si scrive &b, si intende fare riferimento all indirizzo della variabile b. Quindi si può anche scrivere la seguente assegnazione: a = &b; Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

9 A cosa servono in pratica i puntatori Attraverso i puntatori una funzione può restituire valori multipli, così da superare il limite di un unico valore di ritorno ottenuto con l istruzione return Affinché la funzione restituisca un valore di tipo intero (int) il parametro formale viene specificato del tipo puntatore a intero. Esempio: void SommaP(int A, int B, int *C) {//variabili formali *C = A + B; return; main() { int a, b = 5, c = 2; SommaP(b,c,&a); //variabili attuali printf("a che valore punta a? %d", a); Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

10 Puntatori e dati strutturati (1) main() {//esempio di struttura persona struct persona pers, *p_pers; pers.nome = "Matteo"; pers.cognome = "Fossi"; pers.indirizzo = "Via S.Marta"; pers.civico = 3; struct persona { //definizione char *nome; char *cognome; char *indirizzo; int civico; ; printf("la struttura persona pers contiene i seguenti dati:\n"); printf("nome %s\ncognome %s\nindirizzo %s\ncivico %d\n", pers.nome, pers.cognome, pers.indirizzo, pers.civico); p_pers = &pers; //assegna un puntatore a pers printf("\n\nil puntatore p_pers punta alla struttura persona pers che contiene i dati assegnati a pers:\n", p_pers->nome); printf("nome %s\ncognome %s\nindirizzo %s\ncivico %d\n", p_pers->nome, p_pers->cognome, p_pers->indirizzo, p_pers->civico); L operatore. permette l accesso ad un membro di una struttura (pers.nome) L operatore -> permette l accesso a un membro della struttura puntata dal puntatore (p_pers->nome) Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

11 Puntatori e dati strutturati (2) Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

12 Concetto di doppio puntatore (puntatore a puntatore) (1) I puntatori sono delle variabili che mantengono il valore dell indirizzo di altre variabili o di altri puntatori Dichiarazione di un puntatore a un puntatore: int **p; Esempio: int **p,*a, b=5; a = &b; p = &a; Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

13 Concetto di doppio puntatore (puntatore a puntatore) (2) main(){ int **p,*a, b=5; a = &b; p = &a; printf("quanto vale il valore puntato dal puntatore a cui punta p? %d\n",**p); Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

14 Outline Strutture dati e algoritmi elementari Liste Rappresentazione in forma sequenziale Rappresentazione collegata con array e indici Rappresentazione collegata con puntatori Iterazione e ricorsione Cenni sugli alberi Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

15 Liste: rappresentazione collegata con arrays e indici Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

16 Liste - Rappresentazione collegata con array e indici (1) La rappresentazione collegata con array e indici utilizza ancora gli array per memorizzare i valori su un buffer MA virtualizza la relazione di sequenza dei valori Il buffer è un array di records in cui ogni record contiene: Un valore L indice del record del buffer che contiene il successivo valore della lista struct record{ float value; int next; Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

17 Liste - Rappresentazione collegata con array e indici (2) L elemento in coda ha come indice un valore illegale che tipicamente coincide con la dimensione del buffer stesso Anche i record non usati sono concatenati attraverso gli indici in modo da formare una lista dei record disponibili (liberi o free) La presenza di tale lista permette di eseguire la ricerca di un record libero e dell inserimento di un nuovo elemento nella lista con un numero costante di operazioni Il numero di operazioni non dipende dalla dimensione della lista o dal numero di elementi che essa contiene Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

18 Liste - Rappresentazione collegata con array e indici (3) Rappresentazione della lista {10., 20., 50. in forma collegata con indici su un buffer di dimensione 5 in cui: i record 4 e 2 sono concatenati sulla lista degli elementi liberi Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

19 Liste - Rappresentazione collegata con array e indici (4) Configurazione iniziale della lista in forma collegata con indici: first: contiene l indice illegale (size) Tutti i record del buffer sono concatenati sulla lista degli elementi liberi che ha origine dall indice free struct list { int first; int free; int size; struct record *buffer; Con: struct record{ float value; int next; Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

20 Liste - Rappresentazione collegata //inclusione librerie #include <stdio.h> typedef unsigned short int Boolean; //definizione di Boolean #define TRUE 1 #define FALSE 0 //definizione delle strutture usate struct record { float value; int next; ; struct list { int first; int free; int size; struct record *buffer; ; con array e indici (5) Struttura generale del programma parte I Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

21 Liste - Rappresentazione collegata //dichiarazione delle funzioni void init(struct list *ptr, int size); Boolean pre_insert(struct list *ptr, float value); Boolean suf_insert(struct list *ptr, float value); Boolean ord_insert(struct list *ptr, float value); void visit(struct list *ptr); Boolean search(struct list *ptr, float value); void getvalue(float *value_ptr); void notify_selection_failure(char selection); main(){ //definizione delle funzioni con array e indici (6) Struttura generale del programma parte II Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

22 Liste - Rappresentazione collegata con array e indici (7) main() { struct list lista; Struttura main() int size=5, res_search = FALSE; float value; char selection[10]; init(&lista, size); void init(struct list *ptr, int size); printf("digita uno dei seguenti caratteri\nper fare le operazioni sulla lista collegata con array e puntatori:\n"); printf("-a per fare un inserimento in coda\n"); printf("-b per fare un inserimento in testa\n"); printf("-c per fare un inserimento ordinato\n"); printf("-d per fare una visita\n"); printf("-e per fare una ricerca\n"); printf("-x per uscire dal programma\n"); Boolean exit_required = FALSE; int inserimento = 0; do { while(exit_required == FALSE); printf("fine!"); Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

23 main() { struct list lista; do { case 'a': //inserimento in testa getvalue(&value); inserimento = pre_insert(&lista, value); if (inserimento == FALSE) printf("buffer pieno!"); break; case 'b': Liste - Rappresentazione collegata //inserimento in coda getvalue(&value); inserimento = suf_insert(&lista, value); if (inserimento == FALSE) printf("buffer pieno!"); break; //altri casi while(exit_required == FALSE); printf("fine!"); con array e indici (8) Struttura do{ while() - Parte I Nota: dichiarazione inserimento in testa Boolean pre_insert(struct list *ptr, float val); Nota: dichiarazione inserimento in coda Boolean suf_insert(struct list *ptr, float val); Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

24 main() { struct list lista; do { //altri casi case 'c': Liste - Rappresentazione collegata getvalue(&value); //inserimento ordinato inserimento = ord_insert(&lista, value); if (inserimento == FALSE) printf("buffer pieno!"); break; case 'd': //visita visit(&lista); break; //altri casi while(exit_required == FALSE); printf("fine!"); con array e indici (9) Struttura do{ while() - Parte II Nota: dichiarazione inserimento ordinato Boolean ord_insert(struct list *ptr, float val); Nota: dichiarazione ricerca void visit(struct list *ptr); Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

25 Liste - Rappresentazione collegata main() { struct list lista; do { //altri casi case 'e': //ricerca getvalue(&value); res_search = search(&lista, value); if (res_search == TRUE) printf("trovato!"); else printf("niente, riprova!"); break; case 'x': //uscita exit_required = TRUE; break; default: notify_selection_failure(selection[0]); while(exit_required == FALSE); printf("fine!"); con array e indici (10) Struttura do{ while() - Parte III Nota: dichiarazione ricerca Boolean search(struct list *ptr, float value); Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

26 Liste - Rappresentazione collegata void init(struct list *ptr, int size){ /*Alloca il buffer e asserisce l'invariante della lista first ha il valore illegale che indica la dimensione del buffer free indirizza il primo record (libero che è zero) tutti i record sono concatenati a partire dal primo per averli disponibili come record liberi*/ int count; ptr->buffer = (struct record *)malloc(size * sizeof(struct record)); ptr->size = size; ptr->first = ptr->size; ptr->free = 0; for (count = 0; count < ptr->size; count++) ptr->buffer[count].next = count + 1; La funzione di libreria malloc() richiede al sistema l allocazione di un segmento di memoria di dimensione determinata al momento della chiamata e rende il puntatore alla locazione della memoria a partire dalla quale è stato riservato lo spazio con array e indici (11) Definizione funzione init() Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

27 Liste - Rappresentazione collegata con array e indici (12) Operazione di inserimento in testa su una lista in forma collegata: Il record in testa alla lista degli elementi liberi viene portato sulla lista degli elementi utili (free) e riceve il nuovo valore inserito (valore 70.) Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

28 Liste - Rappresentazione collegata con array e indici (13) Boolean pre_insert(struct list *ptr, float value){ /*Se la lista libera non è vuota: i) ne sgancia il primo elemento ii) lo aggancia in testa alla lista dei valori iii) ci memorizza il valore da inserire*/ int moved; if (ptr->free!= ptr->size) { moved = ptr->free; ptr->free = ((ptr->buffer)[ptr->free]).next; ptr->buffer[moved].value = value; ptr->buffer[moved].next = ptr->first; ptr->first = moved; return TRUE; else return FALSE; Definizione funzione pre_insert() Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

29 Liste - Rappresentazione collegata con array e indici (14) Boolean suf_insert(struct list *ptr, float value){ /*Se la lista libera NON è vuota: i) sgancia il primo elemento della lista libera ii) lo aggancia in coda alla lista dei valori; iii) ci copia sopra il valore da inserire; iv) attribuisce il valore illegale al successore. SE la lista libera E' VUOTA: rende FALSE*/ int moved, *position_ptr; if (ptr->free!=ptr->size){ moved = ptr->free; ptr->free = ((ptr->buffer)[ptr->free]).next; position_ptr = &ptr->first; Definizione funzione inserimento in coda: suf_insert() while (*position_ptr!= ptr->size)//cerca l ultimo elemento in lista, che ha next=5 position_ptr = &((ptr->buffer)[*position_ptr].next); *position_ptr = moved; //memoriza l ultimo elemento della lista in *position_ptr ptr->buffer[*position_ptr].value = value; //nell elemento con quell indice scrive ptr->buffer[*position_ptr].next= ptr->size; return TRUE; else return FALSE; 29 Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

30 Liste - Rappresentazione collegata con array e indici (15) Inserimento in coda. Sulla lista 20 -> 10 -> 50 viene inserito in coda il valore 70: Il puntatore position_ptr contiene inzialmente l indirizzo dell indice first (a) position_ptr viene avanzato fino a contenere l indirizzo del campo next dell ultimo record della lista (b,c,d) Su tale elemento si effettua l inserimento 30 Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

31 Liste - Rappresentazione collegata Boolean ord_insert(struct list *ptr, float value) { /*i) Assume che la lista sia ordinata; ii) inserisce il nuovo elemento in ordine. Nota: è analoga alla funzione di inserimento in coda a parte l'aggiunta di una seconda condizione sul while e uno swap nell'inserimento finale*/ int moved, *position_ptr; if (ptr->free!= ptr->size) { moved = ptr->free; //dove dovro scrivere ptr->free = ((ptr->buffer)[ptr->free]).next; position_ptr = &ptr->first; while (*position_ptr!= ptr->size && ptr->buffer[*position_ptr].value < value){ position_ptr = &(ptr->buffer[*position_ptr].next); //valore che mettero //nel next dell elemento che vado ad aggìungere ptr->buffer[moved].value = value; ptr->buffer[moved].next = *position_ptr; *position_ptr = moved; return TRUE; else return FALSE; 31 con array e indici (16) Definizione funzione ord_insert() Fondamenti di Informatica, Univ. Firenze, Michela Paolucci Il ciclo while serve per indirizzare il record su cui deve essere fatto l inserimento

32 Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

33 void visit(struct list *ptr) { int position; position = ptr->first; while (position!= ptr->size) { Liste - Rappresentazione collegata con array e indici (17) Definizione funzione visit() printf("valore: %f\n", ptr->buffer[position].value); position = ptr->buffer[position].next; 33 Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

34 Boolean search(struct list *ptr, float value) { int position; Boolean found; position = ptr->first; found = FALSE; Liste - Rappresentazione collegata con array e indici (18) Definizione funzione search() while (found == FALSE && position!= ptr->size) { if (ptr->buffer[position].value == value) found = TRUE; else position = ptr->buffer[position].next; return found; 34 Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

35 void getvalue(float *value_ptr) { //acquisisce un float da tastiera (passaggio per puntatore) Liste - Rappresentazione collegata printf("inserisci un valore: "); scanf("%f", value_ptr); con array e indici (19) Definizione funzioni getvalue() e notify_selection_failure( ) void notify_selection_failure(char selection) { //notifica il fallimento della selezione printf("\n%c Selezione non legale!!", selection); 35 Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

36 Lista in forma collegata: osservazioni (1) La lista in forma collegata mediante indici: A) mantiene il limite del dimensionamento statico del buffer: Svantaggio: Non permette di adattare la memoria allocata alla dimensione effettiva della sequenza rappresentata nel corso della computazione Vantaggio: evita il bisogno di allocare e rilasciare memoria ad ogni operazione di inserimento e cancellazione (come vedremo avverrà invece nelle liste in forma collegata con puntatori), riducendo l interazione con il sistema operativo e quindi aumentando sostanzialmente l efficienza e l affidabilità B) Non permette l accesso diretto ai vari elementi Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

37 Fondamenti di Informatica Eng. Ph.D. Michela Paolucci DISIT Lab Department of Information Engineering, DINFO University of Florence Via S. Marta 3, 50139, Firenze, Italy tel: , fax: Fondamenti di Informatica, Univ. Firenze, Michela Paolucci

Fondamenti di Informatica AA 2016/2017

Fondamenti di Informatica AA 2016/2017 Fondamenti di Informatica AA 2016/2017 Eng. Ph.D. Michela Paolucci DISIT Lab http://www.disit.dinfo.unifi.it Department of Information Engineering, DINFO University of Florence Via S. Marta 3, 50139, Firenze,

Dettagli

Strutture dati. Le liste

Strutture dati. Le liste Strutture dati Le liste Introduzione Una lista è una successione finita di valori di un tipo (insieme di valori e ordine). Come tipo di dato è qualificata dalle operazioni che ci si possono svolgere: inserimento

Dettagli

Fondamenti di Informatica AA 2017/2018

Fondamenti di Informatica AA 2017/2018 Fondamenti di Informatica AA 2017/2018 Eng. Ph.D. Michela Paolucci DISIT Lab http://www.disit.dinfo.unifi.it Department of Information Engineering, DINFO University of Florence Via S. Marta 3, 50139, Firenze,

Dettagli

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.

Titolo 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

Dettagli

Liste concatenate. Violetta Lonati

Liste concatenate. Violetta Lonati Liste concatenate Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 2 novembre 2017 Violetta Lonati Liste

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Esercizio 1. (3 punti) Fondamenti di Informatica PROVA SCRITTA 25 gennaio 2016 Data l istruzione assembler MIPS add $1,$2,$3, memorizzata all interno della memoria istruzioni della CPU, descrive la sua

Dettagli

Linguaggio C. Esercizio 1

Linguaggio C. Esercizio 1 Linguaggio C Esercizi su puntatori e liste Walter Didimo (e-mail:didimo@dia.uniroma3.it) supplemento al Corso di Calcolatori Elettronici (Riccardo Torlone) 1 Esercizio 1 Siano p e q due puntatori a variabili

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 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

dott. Sabrina Senatore

dott. 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;

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

#include <stdio.h> #include <stdlib.h> //necessaria per la malloc #include <string.h> // costante #define MAX_L 30

#include <stdio.h> #include <stdlib.h> //necessaria per la malloc #include <string.h> // costante #define MAX_L 30 /* Dopo aver definito una lista in grado di contenere i dati di alcune persone (nome, genere e altezza in metri), scrivere un programma che consenta di verificare che inizialmente la lista sia vuota e

Dettagli

Allocazione dinamica memoria

Allocazione 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

Dettagli

Fondamenti di Informatica AA 2016/2017

Fondamenti di Informatica AA 2016/2017 Fondamenti di Informatica AA 2016/2017 Eng. Ph.D. Michela Paolucci DISIT Lab http://www.disit.dinfo.unifi.it Department of Information Engineering, DINFO University of Florence Via S. Marta 3, 50139, Firenze,

Dettagli

Liste concatenate e allocazione dinamica

Liste concatenate e allocazione dinamica Liste concatenate e allocazione dinamica 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, e seguita

Dettagli

Strutture dati dinamiche in C. Emilio Di Giacomo

Strutture dati dinamiche in C. Emilio Di Giacomo Strutture dati dinamiche in C Emilio Di Giacomo Strutture dati Una struttura dati è un contenitore in cui i dati sono organizzati in maniera che possano essere recuperati e manipolati efficientemente Un

Dettagli

Strutture Dinamiche. Fondamenti di Informatica

Strutture 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));

Dettagli

Fondamenti di Informatica II

Fondamenti di Informatica II Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Tipi di dati astratti(adt)- seconda parte Coda Struttura

Dettagli

Strutture Dinamiche. Strutture Dinamiche

Strutture 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

Dettagli

Previously on TDP. LISTA rappresentata mediante "struct e puntatori" Cosa e aux? Di che tipo e e cosa contiene?

Previously on TDP. LISTA rappresentata mediante struct e puntatori Cosa e aux? Di che tipo e e cosa contiene? Previously on TDP lis ^ ^ 7 21 ** ** 14 *** memoria 9 NULL LISTA rappresentata mediante "struct e puntatori" *** lis->info == cosa? lis->next == ^^; /*cosa e ^^?*/ che cosa e' (*lis)? Cosa e aux? Di che

Dettagli

Il linguaggio C Strutture

Il 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

Dettagli

Liste concatenate e allocazione dinamica

Liste concatenate e allocazione dinamica Liste concatenate e allocazione dinamica Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2017/2018 Calendario delle lezioni Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

Previously on TDP. LISTA rappresentata mediante "struct e puntatori" TipoLista lis. Dichiarare DISEGNARE e. DISEGNARE aux.

Previously on TDP. LISTA rappresentata mediante struct e puntatori TipoLista lis. Dichiarare DISEGNARE e. DISEGNARE aux. Previously on TDP lis 7 21 ** ** 14 *** *** memoria 9 LISTA rappresentata mediante "struct e puntatori" TipoLista lis lis->info == cosa? lis->next == ; /*cosa e?*/ che cosa e' (*lis)? Dichiarare DISEGNARE

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018

Esercitazioni 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

Dettagli

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

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste 4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1

Dettagli

Fondamenti di Informatica 2

Fondamenti 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

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright Mirko Viroli Copyright 2017, 2018 Moreno

Dettagli

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica

Dettagli

Esempio di prova scritta di Fondamenti di Informatica

Esempio di prova scritta di Fondamenti di Informatica Università degli Studi di Firenze - Scuola di Ingegneria Corso di laurea in Ingegneria Elettronica e delle Telecomunicazioni - Docente: Ing. Laura Carnevali Esempio di prova scritta di Fondamenti di Informatica

Dettagli

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

Esercizio 1: media di numeri reali (uso funzioni e struct) Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 5 Esercitazione: 2 novembre 2005 Esercizi sulle funzioni Esercizio 1: media di numeri reali (uso funzioni e struct) Le

Dettagli

Lezione 11: Liste a Puntatori e Input/Output

Lezione 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)

Dettagli

Fondamenti di Programmazione

Fondamenti 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

Dettagli

5. Quinta esercitazione autoguidata: liste semplici

5. Quinta esercitazione autoguidata: liste semplici 22 5. Quinta esercitazione autoguidata: liste semplici 5.1. Liste rappresentate mediante strutture e puntatori (LISTE1.C, LISTE2.C) Scrivere un programma che - costruisce una lista di k interi (con k letto

Dettagli

Il linguaggio C. Puntatori e dintorni

Il 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;

Dettagli

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C:

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C: Fondamenti Informatica B Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2 Esercizio 1 tema 1 Siano date le seguenti definizioni di costanti e tipi in linguaggio C: #define MAX_LENGTH 40

Dettagli

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2) ADT LISTA Pochi Linguaggi forniscono tipo lista fra predefiniti (LISP, Prolog); per gli altri, ADT lista si costruisce a partire da altre strutture dati (in C tipicamente vettori o puntatori) OPERAZIONI

Dettagli

10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica

10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Caratteristiche degli array Principali caratteristiche degli array: LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli

Dettagli

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

JAVA. 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

Dettagli

Appunti sul C: le liste

Appunti sul C: le liste Università degli Studi di L Aquila Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica Modulo di Laboratorio di Algoritmi e Strutture Dati Appunti sul C: le liste Giovanna Melideo melideo@di.univaq.it

Dettagli

L'Allocazione Dinamica della Memoria nel linguaggio C

L'Allocazione Dinamica della Memoria nel linguaggio C L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego riochierego@libero.it http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 21 Strutture dinamiche Gli array ci permettono di memorizzare un insieme di dati dello stesso tipo Deve essere noto staticamente il

Dettagli

IMPLEMENTAZIONE CONCATENATE DELLE LISTE

IMPLEMENTAZIONE CONCATENATE DELLE LISTE IMPLEMENTAZIONE CONCATENATE DELLE LISTE Liste collegate Come già visto, la realizzazione sequenziale prevede che la sequenzialità degli elementi della lista venga rappresentata dalla adiacenza delle locazioni

Dettagli

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

Esercizi di programmazione in linguaggio C English Dictionary

Esercizi di programmazione in linguaggio C English Dictionary Esercizi di programmazione in linguaggio C English Dictionary Il file di testo wordnet.txt contiene un certo numero di parole (word) e il corrispondente significato (meaning) secondo il seguente formato:

Dettagli

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

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;

Dettagli

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

Esercizio 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

Dettagli

Strutture dati dinamiche in C (II)

Strutture dati dinamiche in C (II) Strutture dati dinamiche in C (II) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Le liste concatenate (ancora ma in modo più formale) L

Dettagli

Lezione IX Gestione dinamica della memoria

Lezione IX Gestione dinamica della memoria Programmazione e Laboratorio di Programmazione Lezione IX Gestione dinamica della memoria Programmazione e Laboratorio di Programmazione: Gestione dinamica della memoria 1 Operatore sizeof() Buffer: una

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 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

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria 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 Violetta Lonati

Dettagli

Laboratorio di Informatica I

Laboratorio 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

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare

Dettagli

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

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono

Dettagli

Programmazione I - Laboratorio

Programmazione 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

Dettagli

Lezione 6: Array e puntatori

Lezione 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

Dettagli

La Struttura Dati Pila

La Struttura Dati Pila La Struttura Dati Pila La pila o stack è una particolare struttura dati in cui l'inserimento e la cancellazione sono consentite solo in una specifica posizione, chiamata cima (top) dello stack. La gestione

Dettagli

La Struttura Dati Lista

La Struttura Dati Lista La Struttura Dati Lista Introduzione Nella definizione di un programma mirato alla risoluzione di un determinato problema, la scelta delle strutture dati è di fondamentale importanza per un efficiente

Dettagli

Hash Table. Hash Table

Hash 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

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 25 Luglio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,-8,-4; int N = 7; int i; Scrivere la porzione di codice che sostituisca

Dettagli

Lezione IX Gestione dinamica della memoria

Lezione IX Gestione dinamica della memoria Programmazione e Laboratorio di Programmazione Lezione IX Gestione dinamica della memoria Programmazione e Laboratorio di Programmazione: Gestione dinamica della memoria 1 Direttiva per il preprocessore

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto

Dettagli

Strutture Dati Dinamiche

Strutture Dati Dinamiche Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti

Dettagli

PILE E CODE. Pile (stack):

PILE E CODE. Pile (stack): PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):

Dettagli

Laboratorio di algoritmi e strutture dati

Laboratorio di algoritmi e strutture dati Laboratorio di algoritmi e strutture dati G. Melideo CdL in Informatica A.A. 2009/2010 G. Melideo (CdL in Informatica) Laboratorio di algoritmi e strutture dati A.A. 2009/2010 1 / 23 Indice 1 Richiami

Dettagli

Passaggio dei parametri

Passaggio 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

Dettagli

Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet

Passaggio 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

Dettagli

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio RICORSIONE, PUNTATORI E ARRAY Quarto Laboratorio 16 DICEMBRE 2011 SCADENZA TERZA ESERCITAZIONE FUNZIONI RICORSIVE ESERCIZIO Scrivere una funzione ricorsiva che, assegnati due interi N1 ed N2, restituisca

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori

Dettagli

Strutture dati concatenate

Strutture dati concatenate Strutture dati concatenate Strutture dati concatenate Le strutture concatenate sono utilizzate er la creazione e la gestione flessibile di variabili dinamiche Una struttura concatenata contiene almeno

Dettagli

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie

Dettagli

E12 Esercizi su Strutture dati dinamiche in C

E12 Esercizi su Strutture dati dinamiche in C E12 Esercizi su Strutture dati dinamiche in C Esercizio 1. Si vuole realizzare una lista caratteri in C utilizzando una rappresentazione semplicemente collegata. Scrivere una struttura nodo che contiene

Dettagli

Diversi modi di rappresentare sequenze di elementi

Diversi modi di rappresentare sequenze di elementi Liste È molto comune dover rappresentare sequenze di elementi tutti dello stesso tipo e fare operazioni su di esse. Esempi: sequenza di interi (23 46 5 2 3) sequenza di caratteri ( x r f ) sequenza di

Dettagli

Dispensa 18 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA. Laboratori

Dispensa 18 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA. Laboratori ORSO I LURE IN INGEGNERI E SIENZE INFORMTIHE ESEN ORSO I PROGRMMZIONE.. 2016-17 ispensa 18 Laboratori ott. Mirko Ravaioli e-mail: mirko.ravaioli@unibo.it http://www.programmazione.info orso di Programmazione..

Dettagli

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Damiano Macedonio Esercizio 1 Scrivere una funzione che riceve in ingresso un puntatore ad un array di interi e modifica tale array

Dettagli

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011 Gruppo Cognome Riontino Nome Raffaele Cognome Nome TRACCIA 2 ARGOMENTO: LISTE TEMPO: 4h 1. Utilizzando Typedef definire un nuovo tipo di dato

Dettagli

In una coda gli inserimenti si fanno alla fine e le cancellazioni all inizio! First In First Out

In una coda gli inserimenti si fanno alla fine e le cancellazioni all inizio! First In First Out In una coda gli inserimenti si fanno alla e e le cancellazioni all inizio! First In First Out Progr II - Coda 1 CODA: i requisiti Una coda (queue) è un ADT in cui le operazioni sono inserimenti e cancellazioni

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 27 Giugno 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int i; Scrivere la porzione di codice che sostituisca

Dettagli

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Linguaggio C: PUNTATORI

Linguaggio C: PUNTATORI Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori

Dettagli

Corso di Informatica A.A

Corso 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

Dettagli

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 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

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati 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

Dettagli

La gestione della memoria dinamica Heap

La gestione della memoria dinamica Heap Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti

Dettagli

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

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Esercizi. La funzione swapint() primo tentativo

Esercizi. 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

Dettagli

La struttura dati CODA

La struttura dati CODA Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta

Dettagli

Struct, enum, Puntatori e Array dinamici

Struct, 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

Dettagli

Corso 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. 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)

Dettagli

Fondamenti di Informatica AA 2016/2017

Fondamenti di Informatica AA 2016/2017 Fondamenti di Informatica AA 2016/2017 Eng. Ph.D. Michela Paolucci DISIT Lab http://www.disit.dinfo.unifi.it Department of Information Engineering, DINFO University of Florence Via S. Marta 3, 50139, Firenze,

Dettagli

Tutorato Elementi di Informatica 2018

Tutorato Elementi di Informatica 2018 Università degli Studi di Cagliari Pattern Recognition & Application Lab Dipartimento di Ingegneria Elettrica ed Elettronica Tutorato Elementi di Informatica 2018 Esercitazione 2 Introduzione e Tipi di

Dettagli

Esercizio 1. Liste di interi

Esercizio 1. Liste di interi Esercizio 1. Liste di interi Si legga una sequenza di numeri interi da tastiera, dopo ogni inserimento chiedere all'utente se vuole continuare, quindi: Creare due liste L1 e L2 con inserimento ordinato;

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili 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:

Dettagli

Una breve introduzione all implementazione in C di algoritmi su grafo

Una breve introduzione all implementazione in C di algoritmi su grafo Una breve introduzione all implementazione in C di algoritmi su grafo A cura di Gianmaria Leo Introduzione La lezione è un introduzione a concetti e strumenti che permettono l implementazione di algoritmi

Dettagli

Struct e liste concatenate

Struct e liste concatenate Struct e liste concatenate Alessio Orlandi 20 aprile 2010 Tipi complessi Tipi scalari: int, float,... : singolo elemento Contenitori per collezioni di oggetti: array. Quindi: array di interi, array di

Dettagli

9 - 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 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

Dettagli

Esercizi. Filtraggio

Esercizi. Filtraggio Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)

Dettagli