Fondamenti di Informatica AA 2016/2017
|
|
- Samuele Costantino
- 6 anni fa
- Visualizzazioni
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 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,
DettagliStrutture 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
DettagliFondamenti 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,
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
DettagliListe 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
DettagliFondamenti 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
DettagliLinguaggio 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
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
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;
DettagliELEMENTI 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
/* 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
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
DettagliFondamenti 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,
DettagliListe 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
DettagliStrutture 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
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));
DettagliFondamenti 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
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
DettagliPreviously 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
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
DettagliListe 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,
DettagliPreviously 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
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
Dettagli4 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
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
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/ Copyright Mirko Viroli Copyright 2017, 2018 Moreno
DettagliLinguaggio 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
DettagliEsempio 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
DettagliEsercizio 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
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)
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
Dettagli5. 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
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;
DettagliSoluzioni 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
DettagliADT 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
Dettagli10/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
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
DettagliAppunti 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
DettagliL'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
DettagliLaboratorio 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
DettagliIMPLEMENTAZIONE 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
DettagliGestione 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.
DettagliEsercizi 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:
DettagliUnità 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;
DettagliEsercizio 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
DettagliStrutture 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
DettagliLezione 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
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
DettagliAllocazione 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
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
DettagliAllocazione 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
DettagliArray. 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
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
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
DettagliLa 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
DettagliLa 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
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
DettagliFondamenti 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
DettagliLezione 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
DettagliArgomenti 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
DettagliStrutture 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
DettagliPILE 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):
DettagliLaboratorio 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
DettagliPassaggio 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
DettagliPassaggio 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
DettagliRICORSIONE, 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
DettagliAllocazione 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
DettagliStrutture 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
Dettagligiapresente( ) 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
DettagliE12 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
DettagliDiversi 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
DettagliDispensa 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..
DettagliLaboratorio 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
DettagliLaboratorio 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
DettagliIn 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
DettagliFondamenti 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
DettagliDefinizione 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
DettagliLinguaggio 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
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
DettagliEsercizio 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
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
DettagliLa 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
DettagliElementi 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
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
DettagliLa 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
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
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)
DettagliFondamenti 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,
DettagliTutorato 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
DettagliEsercizio 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;
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:
DettagliUna 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
DettagliStruct 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
Dettagli9 - 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
DettagliEsercizi. 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