I puntatori e l allocazione dinamica di memoria
|
|
- Evangelista Santi
- 4 anni fa
- Visualizzazioni
Transcript
1 I puntatori e l allocazione dinamica di memoria Vettore = puntatore Vettore come parametro a funzione Puntatori e stringhe Vettori di puntatori Politecnico di Torino 1
2 Vettore = puntatore Data una variabile di tipo vettore Es. int dati[100]; Il nome della variabile corrisponde al puntatore al primo elemento del vettore stesso dati equivale a &<dati>[0] *dati equivale a <dati>[0] Politecnico di Torino 2
3 Puntatore al primo dato &dati[0] = dati 35 dati[0] dati[7] 5 I-esimo dato dati dati+7 dati 35 *dati *(dati+7) Politecnico di Torino 3
4 Esempio 1 v int dati[100], *v; v = dati; for (i=0;i<100;i++) scanf( %d,v+i); dati dati[0] dati[7] 7 Esempio 1 dati = &dati[0] v int dati[100], *v; v = dati; for (i=0;i<100;i++) scanf( %d,v+i); dati dati[0] dati[7] Politecnico di Torino 4
5 Esempio 1 v dati dati = &dati[0] int dati[100], *v; v = dati; for (i=0;i<100;i++) scanf( %d,v+i); v+i = &v[i] dati[0] dati[7] 9 Esempio 2 v dati dati[0] int dati[100], *v, i; v = &dati[3]; for (i=0;i<97;i++) scanf( %d,&v[i]); for (i=0;i<97;i++) printf( %d,v[i]); dati[7] Politecnico di Torino 5
6 Esempio 2 (variante) v dati dati[0] int dati[100], *v, i; v = dati+3; for (i=0;i<97;i++) scanf( %d,v++); v = dati+3; for (i=0;i<97;i++) printf( %d,*v++); dati[7] Politecnico di Torino 6
7 Parametro formale vettore Ad un parametro formale vettore può corrispondere un parametro attuale puntatore Consente di generare un vettore (per una funzione) da un sotto-vettore, oppure da un puntatore (a memoria contigua) void ordinaint(int v[], int n); int dati[100]; for (i=0;i<100;i+=10) ordinaint(&dati[i],10); 13 Parametro formale vettore Ad un parametro In formale un parametro vettore formale può vettore corrispondere un (monodimensionale) parametro attuale èpuntatore possibile Consente di generare omettere un la vettore dimensione (per una del vettore funzione) da un sotto-vettore, oppure da un puntatore (a memoria contigua) void ordinaint(int v[], int n); int dati[100]; for (i=0;i<100;i+=10) ordinaint(&dati[i],10); Politecnico di Torino 7
8 Parametro formale vettore Ad un parametro formale vettore può corrispondere un parametro attuale puntatore Consente di generare un vettore (per una funzione) da un sotto-vettore, oppure da un Ordinamento applicato a puntatore (a memoria contigua) sotto-vettori di 10 elementi void ordinaint(int v[], int n); int dati[100]; for (i=0;i<100;i+=10) ordinaint(&dati[i],10); 15 Parametro formale puntatore Ad un parametro formale puntatore può corrispondere un parametro attuale vettore Il puntatore, a sua volta, può essere trattato internamente come vettore (purchè punti a dati contigui in memoria) void leggiint(int *p, int n); int dati[100]; leggiint(dati,100); Politecnico di Torino 8
9 Stringa come vettore Una stringa è (formalmente) un vettore di caratteri (terminato da \0 ) int strlenmia (char s[]) int cnt; for (cnt=0;s[cnt]!= \0 ;cnt++); return cnt; Politecnico di Torino 9
10 Stringa come puntatore Una stringa (vettore) può essere rappresentata (e manipolata) mediante puntatori int strlenmia (char *s) int cnt=0; while (*s++!= \0 ) cnt++; return cnt; 19 Stringa e aritmetica dei puntatori La lunghezza di una stringa può essere calcolata mediante aritmetica dei puntatori int strlenmia (char *s) char *p=s; while (*p!= \0 ) p++; return p-s; Politecnico di Torino 10
11 Esempio 1: confronto tra stringhe Date due stringhe, confrontarne i contenuti, ritornando: 0 se le stringhe sono uguali <0 se la prima stringa precede la seconda >0 se la prima stringa segue la seconda Se le stringhe differiscono si ritorna la differenza tra i codici dei primi caratteri diversi 21 Confronto tra stringhe (vettori) Strategia: Iterazione confrontare i caratteri sino alla prima differenza, oppure al terminatore di stringa Si ritorna la differenza tra i caratteri diversi (o i terminatori) int strcmpmia (char s0[], char s1[]) int i=0; while (s0[i]==s1[i] && s0[i]!= \0 ) i++; return (s1[i]-s0[i]); Politecnico di Torino 11
12 Confronto tra stringhe (puntatori) Stessa strategia ma iterazione con avanzamento dei puntatori int strcmpmia (char *s0, char *s1) while ((*s0==*s1) && (*s0!= \0 )) s0++; s1++; return (*s1-*s0); 23 Confronto tra stringhe con limite (vettori) Strategia: Come strcmpmia, ma il confronto si limita ai primi n caratteri int strncmpmia (char *s0, char *s1, int n) int i=0; while (s0[i]==s1[i] && s0[i]!= \0 ) if (i<n) i++; else return 0; return (s1[i]-s0[i]); Politecnico di Torino 12
13 Esempio 2: ricerca di sottostringa Date due stringhe, cercare la prima occorrenza della seconda stringa all interno della prima, ritornando un puntatore: NULL se non viene trovata la seconda stringa all interno della prima Al primo carattere della sottostringa trovata 25 Ricerca di sottostringa Strategia: Iterazione che, per l i-esimo carattere della prima stringa, determina se si tratta dell inizio della sotto-stringa cercata (usando strncmpmia) int strstrmia (char s[], char cerca[]) int i,ns=strlen(s),nc=strlen(cerca); for (i=0; i<=ns-nc; i++) if (strncmpmia(&s[i],cerca,nc)==0) return (&s[i]); return (NULL); Politecnico di Torino 13
14 Vettore di puntatori = matrice Siccome un puntatore può corrispondere ad un vettore Allora un vettore di puntatori può corrispondere a un vettore di vettori (una matrice) Esempio: Dato un vettore di 7 puntatori a carattere Inizializzarlo con puntatori alle stringhe che rappresentano i giorni della settimana Stampare l i-esimo carattere di tutti i nomi di giorni (i letto da tastiera, con valori ammessi da 1 a 6) Politecnico di Torino 14
15 Esempio: vettore di stringhe void main (void) int i,g; char *giorni[7]= lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica ; printf( quale carattere (1-6)? ); scanf( %d,&i); for (g=0; g<7; g++) printf( %c, giorni[g][i]); 29 Esempio: vettore di stringhe Vettore di puntatori a char void main (void) int i,g; char *giorni[7]= lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica ; printf( quale carattere (1-6)? ); scanf( %d,&i); for (g=0; g<7; g++) printf( %c, giorni[g][i]); Politecnico di Torino 15
16 void main (void) int i,g; Esempio: vettore di stringhe Inizializzazione con puntatori a stringhe (costanti) char *giorni[7]= lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica ; printf( quale carattere (1-6)? ); scanf( %d,&i); for (g=0; g<7; g++) printf( %c, giorni[g][i]); 31 Esempio: vettore di stringhe void main (void) int i,g; giorni[g]: stringa di ordine g char *giorni[7]= lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica ; printf( quale carattere (1-6)? ); scanf( %d,&i); for (g=0; g<7; g++) printf( %c, giorni[g][i]); Politecnico di Torino 16
17 Esempio: vettore di stringhe void main (void) int i,g; (giorni[g])[i]: i-esimo char *giorni[7]= lunedì, martedì, mercoledì, giovedì, venerdì, carattere della stringa di ordine g sabato, domenica ; printf( quale carattere (1-6)? ); scanf( %d,&i); for (g=0; g<7; g++) printf( %c, giorni[g][i]); 33 Esempio: vettore di stringhe void main (void) int i,g; giorni[g][i]: vettore di stringhe char *giorni[7]= lunedì, martedì, utilizzato come matrice di caratteri mercoledì, giovedì, venerdì, sabato, domenica ; printf( quale carattere (1-6)? ); scanf( %d,&i); for (g=0; g<7; g++) printf( %c, giorni[g][i]); Politecnico di Torino 17
18 Vettore di stringhe Un vettore di stringhe può essere realizzato come Matrice di caratteri: vettore bidimensionale (righe, colonne). Le righe hanno tutte la stessa lunghezza (vanno sovradimensionate sulla stringa più lunga) Vettore di puntatori a stringhe: ogni elemento del vettore punta a una stringa distinta. Le stringhe possono avere lunghezze diverse Con entrambi i metodi si può utilizzare la notazione matriciale 35 Esempio: ordinamento di stringhe Leggere da tastiera delle stringhe: Al massimo 20 stringhe Ognuna al massimo di 50 caratteri La somma delle lunghezze delle stringhe è <= 500 L input termina con una stringa vuota Ordinare le stringhe in ordine crescente (secondo strcmp) Visualizzarle (secondo l ordine precedente) su video Politecnico di Torino 18
19 Ordinamento di stringhe (con matrice) void main (void) int i,ns; char m[20][50]; printf( scrivi stringhe:\n ); for (ns=0; ns<20; ns++) gets(m[ns]); if (strlen(m[ns])==0) break; ordinamatrice(m,ns); printf( stringhe ordinate:\n ); for (i=0; i<ns; i++) printf( %s\n, m[i]); 37 Ordinamento di stringhe (con matrice) void main (void) int i,ns; char m[20][50]; printf( scrivi stringhe:\n ); for (ns=0; ns<20; ns++) gets(m[ns]); 50 colonne if (strlen(m[ns])==0) break; ordinamatrice(m,ns); printf( stringhe ordinate:\n ); for (i=0; i<ns; i++) printf( %s\n, m[i]); 20 righe Politecnico di Torino 19
20 Ordinamento di stringhe (con matrice) void main (void) int i,ns; char m[20][50]; printf( scrivi stringhe:\n ); for (ns=0; ns<20; ns++) gets(m[ns]); if (strlen(m[ns])==0) break; ordinamatrice(m,ns); m[ns] = &(m[ns][0]) printf( stringhe ordinate:\n ); for (i=0; i<ns; i++) printf( %s\n, m[i]); 39 Ordinamento di stringhe (con matrice) void main (void) int i,ns; char m[20][50]; printf( scrivi stringhe:\n ); for (ns=0; ns<20; ns++) gets(m[ns]); if (strlen(m[ns])==0) break; ordinamatrice(m,ns); printf( stringhe ordinate:\n ); for (i=0; i<ns; i++) printf( %s\n, m[i]); Politecnico di Torino 20
21 Ordinamento di stringhe (con vettore) void main (void) int i,ns; char *v[20], buf[520]; printf( scrivi stringhe:\n ); for (ns=i=0; ns<20; ns++) v[ns]=buf+i; gets(v[ns]); if (strlen(v[ns])==0) break; i = i+strlen(v[ns])+1; ordinavettore(v,ns); printf( stringhe ordinate:\n ); for (i=0; i<ns; i++) printf( %s\n, v[i]); 41 Ordinamento di stringhe (con vettore) void main (void) int i,ns; char *v[20], buf[520]; printf( scrivi stringhe:\n ); for (ns=i=0; ns<20; ns++) v[ns]=buf+i; gets(v[ns]); if (strlen(v[ns])==0) buf(520 break; char) i = i+strlen(v[ns])+1; ordinavettore(v,ns); printf( stringhe ordinate:\n ); for (i=0; i<ns; i++) printf( %s\n, v[i]); V(20 punt.) Politecnico di Torino 21
22 Ordinamento di stringhe (con vettore) void main (void) int i,ns; char *v[20], buf[520]; printf( scrivi stringhe:\n ); for (ns=i=0; ns<20; ns++) v[ns]=buf+i; gets(v[ns]); if (strlen(v[ns])==0) break; i = i+strlen(v[ns])+1; ordinavettore(v,ns); printf( stringhe ordinate:\n ); for (i=0; i<ns; i++) printf( %s\n, v[i]); 43 Ordinamento di stringhe (con vettore) void main (void) int i,ns; char *v[20], buf[520]; printf( scrivi stringhe:\n ); for (ns=i=0; ns<20; ns++) v[ns]=buf+i; gets(v[ns]); if (strlen(v[ns])==0) break; i = i+strlen(v[ns])+1; ordinavettore(v,ns); buf+i = &buf[i] printf( stringhe ordinate:\n ); for (i=0; i<ns; i++) printf( %s\n, v[i]); Politecnico di Torino 22
23 Ordinamento di stringhe (con vettore) void main (void) int i,ns; char *v[20], buf[520]; printf( scrivi stringhe:\n ); for (ns=i=0; ns<20; ns++) v[ns]=buf+i; gets(v[ns]); if (strlen(v[ns])==0) break; i = i+strlen(v[ns])+1; ordinavettore(v,ns); printf( stringhe Avanza ordinate:\n ); buf saltando stringa for (i=0; i<ns; corrente i++) più terminatore ( \0 ) printf( %s\n, v[i]); 45 Ordinamento di stringhe (con vettore) void main (void) int i,ns; char *v[20], buf[520]; printf( scrivi stringhe:\n ); for (ns=i=0; ns<20; ns++) v[ns]=buf+i; gets(v[ns]); if (strlen(v[ns])==0) break; i = i+strlen(v[ns])+1; ordinavettore(v,ns); printf( stringhe ordinate:\n ); for (i=0; i<ns; i++) printf( %s\n, v[i]); Politecnico di Torino 23
24 Confronto tra le soluzioni Matrice di caratteri 20 righe: massimo numero di stringhe 50 colonne: massima lunghezza di stringa 20*50 = 1000 caratteri: dimensione matrice Vettore di puntatori a stringhe 20 puntatori: dimensione vettore di puntatori 520 caratteri: dimensione di caratteri contenente le stringhe (500 caratteri per le stringhe + 20 terminatori) 47 Confronto tra le soluzioni Matrice di caratteri 20 righe: massimo numero di stringhe 50 colonne: massima lunghezza di stringa 20*50 = 1000 caratteri: dimensione matrice Vettore di puntatori a stringhe 20 puntatori: dimensione vettore di puntatori 520 caratteri: dimensione di caratteri contenente le stringhe (500 caratteri per le stringhe + 20 terminatori 20 puntatori caratteri < 1000 caratteri! Politecnico di Torino 24
25 Ordinamento (con matrice) void ordinamatrice (char m[][50], int n) int i, j, min; char tmp[50]; for (i=0; i<n-1; i++) min = i; for (j=i+1; j<n; j++) if (strcmp(m[min],m[j])>0) min = j; strcpy(tmp,m[i]); strcpy(m[i],m[min]); strcpy(m[min].tmp); 49 Ordinamento (con matrice) void ordinamatrice (char m[][50], int n) int i, j, min; char tmp[50]; for (i=0; i<n-1; i++) min = i; for (j=i+1; Con la j<n; matrice j++) di caratteri gli scambi di if (strcmp(m[min],m[j])>0) stringa sono realizzati mediante copia min = j; strcpy(tmp,m[i]); strcpy(m[i],m[min]); strcpy(m[min].tmp); Politecnico di Torino 25
26 Ordinamento (con vettore) void ordinavettore (char *m[20], int n) int i, j, min; char *tmp; for (i=0; i<n-1; i++) min = i; for (j=i+1; j<n; j++) if (strcmp(m[min],m[j])>0) min = j; tmp = m[i]; m[i] = m[min]; m[min] = tmp; 51 Ordinamento (con vettore) void ordinavettore (char *m[20], int n) int i, j, min; char *tmp; for (i=0; i<n-1; i++) min = i; Con il vettore di puntatori gli scambi for (j=i+1; di stringa j<n; j++) sono realizzati mediante if (strcmp(m[min],m[j])>0) scambio di puntatori min = j; tmp = m[i]; m[i] = m[min]; m[min] = tmp; Politecnico di Torino 26
I puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria Il tipo di dato puntatore Identificare una variabile in C I puntatori come riferimento a dati Definizione e operatori su puntatori 4 Il tipo di dato puntatore
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
DettagliLezione 8: I Puntatori
Lezione 8: I Puntatori Laboratorio di Elementi di Architettura e Sistemi Operativi 2 Maggio 2012 Esercizi della lezione scorsa Esercizio 3: la calcolatrice 1. Realizzare un insieme di funzioni per gestire
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
DettagliTipi strutturati in C. Stringhe
Tipi strutturati in C Stringhe Stringhe Una stringa di caratteri in C è un array di caratteri terminato dal carattere \0 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1 caratteri,
DettagliEsercitazioni di Programmazione II. Chiara Petrioli
Esercitazioni di Programmazione II Chiara Petrioli Ricevimento e info Martedi dalle 13 alle 14.30 Via Salaria 113, terzo piano, stanza 311 Homework: 3-4 ogni due settimane Primo homework da consegnare
DettagliI puntatori e l allocazione dinamica di memoria. Esercizi risolti
I puntatori e l allocazione dinamica di memoria Esercizi risolti 1 Esercizio Si vuole realizzare un tipo struct, utilizzato per informazioni su operazioni di vendita, avente i seguenti campi: codice: numero
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
DettagliEsercitazione di Reti degli elaboratori
Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione
DettagliUna stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0
STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1
DettagliEsercizi. Stringhe. Stringhe Ricerca binaria
Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)
DettagliRIPRENDIAMO I PUNTATORI
RIPRENDIAMO I PUNTATORI Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 =&a Esistono in C particolari variabili dette
Dettaglichar *s; s = (char *) malloc(5*sizeof(char)); scanf( %s, s); Stringhe
char *s; s = (char *) malloc(5*sizeof(char)); scanf( %s, s); Stringhe Stringhe s char *s; s = (char *) malloc(5*sizeof(char)); scanf( %s, s); c i a o \0 Scrivere un programma che legga da input un array
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
DettagliStrutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.
Operatori di incremento e decremento ++ e -- Esempi y=x++ il contenuto della variabile x viene inizialmente usata per l assegnazione y, e solo dopo incrementata y=--x il contenuto della variabile x viene
DettagliEsercitazione 12. Esercizi di Ricapitolazione
Esercitazione 12 Esercizi di Ricapitolazione Esercizio Scrivere un programma che, dato un numero intero positivo, stampa la sua rappresentazione binaria. ALGORITMO Scriviamo una procedura stampa_bin che,
DettagliI puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
DettagliLezione 10 Liste. Rossano Venturini. Pagina web del corso.
Lezione 10 Liste Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Prova del 18/05/2009 Scrivere un programma che legga
DettagliLezione 8 Liste. Rossano Venturini. Pagina web del corso.
Lezione 8 Liste Rossano Venturini rossano.venturini@unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Prova del 18/05/2009 Scrivere un programma
DettagliSTRINGHE: ARRAY DI CARATTERI! a p e \0
STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più
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
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
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;
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 3 - Array 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
DettagliI puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria Allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 Allocazione dinamica
DettagliCorso Programmazione
Corso Programmazione 2011-2012 (docente) Fabio Aiolli E-mail: aiolli@math.unipd.it Web: www.math.unipd.it/~aiolli Dipartimento di Matematica Pura ed Applicata Torre Archimede, Via Trieste 63 Puntatori,
DettagliTipi di dato STRUTTURATI
Tipi di dato STRUTTURATI I tipi di dato si differenziano in scalari e strutturati In C si possono definire tipi strutturati: array e strutture [ ] (array) Un array è una collezione finita di N variabili
DettagliI puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria Vettori dinamici Matrici dinamiche Liste 2 2006 Politecnico di Torino 1 Vettore dinamico Si dice vettore dinamico un vettore la cui dimensione è nota solo
Dettaglia = 6; b = 7; c = a b; [ ] il risultato è indefinito [ ] c = 12 [ ] c = 13 [X] c = 14 a = 8; b = 9; c = a b;
Università degli Studi di Udine Corsi di laurea in Ing. Elettronica e Ing. Gestionale Fondamenti di programmazione 18 novembre 2016 - Prova intermedia NOTA: nel seguito le risposte corrette e le note sono
DettagliStringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10
Stringhe in C Luca Abeni Informatica Luca Abeni 1 / 10 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe
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
DettagliSTRINGHE: ARRAY DI CARATTERI STRINGHE: ARRAY DI CARATTERI. a p e \0
STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1
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
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
DettagliArray. Aggragati di variabili omogenee...
Array Aggragati di variabili omogenee... Cosa è un array È un insieme di variabili omogenee identificato da un indice, ad esempio Se devo leggere 1 numeri dallo standard input e memorizzarli all'interno
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
DettagliArray. Definizione e utilizzo di vettori
Array Definizione e utilizzo di vettori Array (1/2) Un array o vettore rappresenta un insieme di elementi dello stesso tipo. Sintassi per la creazione di un array: tipo_elementi[] nome; nome = new tipo_elementi[numero_elementi];
Dettaglisoluzioneluglio.txt 1. Scrivere una funzione che restituisce la data dinascita di un determinato studente.
Testo esercizio: Si supponga di avere a disposizione un vettore contenente l elenco degli alunni iscritti al Politecnico, con la relativa data di nascita. Ogni nome è separato dalla data dal carattere
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
DettagliI Vettori (Array) Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
I Vettori (Array) Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Variabili I tipi di variabili che abbiamo usato finora hanno la caratteristica comune di non essere strutturate: ogni
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
DettagliESERCIZIO: Lettura/Scrittura Array
ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti
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
DettagliOperazioni sulle stringhe
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliInformatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Stringhe Ricerca binaria
Informatica A (per gestionali) A.A. 2004/2005 Esercizi di programmazione C Stringhe Ricerca binaria Indice 1 Stringhe... 3 1.1 Codice di Cesare...3 1.2 Ricerca binaria...4 1.3 Indirizzi Internet...7 1.4
DettagliIntroduzione al C Lez. 4
Introduzione al C Lez. 4 Allocazione Dinamica della memoria http://www.di.unipi.it/~rossano/algo1/lez4.pdf Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso
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)
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
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
DettagliEsercizi C su array e matrici
Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]
DettagliProblem solving elementare su dati vettoriali. Esercizi risolti
1 Esercizio: Prodotto di matrici Esercizi risolti Si scriva un programma che, lette da tastiera le dimensioni di due matrici di interi e acquisite le due matrici, ne calcoli la matrice prodotto e la visualizzi.
DettagliInformatica (A-K) 14. 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 Informatica (A-K) 14. Linguaggio C -4 Strutture Dati tipiche
DettagliCaratteri e stringhe
Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un
DettagliL'allocazione dinamica della memoria
L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria
DettagliAggregati di dati eterogenei: il tipo struct. Esercizi risolti
Esercizi risolti 1 Esercizio Si vuole realizzare un tipo utilizzato per informazioni su operazioni di vendita, avente i seguenti campi: codice: numero intero indicante il codice di riferimento dell articolo
DettagliProgrammazione di base
Fondamenti di Informatica Quinto Appello 016-1 1 Luglio 01 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene 10 domande,
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,
DettagliStringhe di caratteri
Linguaggio C Stringhe di caratteri 1 Variabili e costanti stringa! Una stringa letterale è una sequenza di caratteri racchiusa tra doppi apici! Può essere scritta su più righe utilizzando il backslash
DettagliL'allocazione dinamica della memoria
L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria
DettagliInformatica B Esercitazione 5
Informatica B Esercitazione 5 17 ottobre 2018 Array, Stringhe e Matrici 5.1 Si scriva un programma C per calcolare la media pesata dei voti di uno studente. Il programma chiede innanzitutto all'utente
DettagliAnche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto:
ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti
DettagliINFORMATICA. Esercizi. Esempio: giorni nell anno. Esempio: giorni nell anno. Esempio: giorni nell anno
INFORMATICA Esercizi Realizzare un programma che legga da tastiera l anno di riferimento e la sigla del primo giorno di quell anno (1 gennaio) composta dai primi tre caratteri del nome (ad esempio: 2003
DettagliIl linguaggio C Puntatori
Il linguaggio C Puntatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - puntatori 2 Ringraziamenti Questi
DettagliDa problema a programma: introduzione al problemsolving
Da problema a programma: introduzione al problemsolving in linguaggio C Capitolo 2: L essenziale del linguaggio C G. Cabodi, P. Camurati, P. Pasini, D. Patti, D. Vendraminetto 2016 1 Il linguaggio C In
DettagliIntroduzione al C Lez. 4. Allocazione Dinamica della memoria
Introduzione al C Lez. 4 Allocazione Dinamica della memoria Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso l allocazione esplicita di blocchi di memoria
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
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
DettagliProgrammazione di base
Fondamenti di Informatica Testo A Secondo Appello 016-17 febbraio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene
DettagliCapitolo 16 Iterazione
Capitolo 16 Accesso a sequenze I problemi esaminati in questo capitolo hanno lo scopo di accedere ed elaborare delle sequenze sequenze immesse dall utente lette dalla tastiera di lunghezza nota con un
DettagliPolitecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904]
Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale Informatica B [079904] Prof. P. Plebani Allievi Ingegneria Civile e Ambientale II prova in itinere (04 Febbraio 2009) Cognome
DettagliPolitecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica (ICA-LC) [083668]
Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale Informatica (ICA-LC) [083668] Prof. P. Plebani Allievi Ingegneria Civile e Ambientale II prova in itinere (04 Febbraio 2009)
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi
DettagliLinguaggi di programmazione + laboratorio a.a. 2012/2013
Linguaggi di programmazione + laboratorio a.a. 2012/2013 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a
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
Dettagliint ninv; /* numero di inventario */
1) Scrivere il programma C che legga da un file di testo ("dati.dat") i record con dati relativi ad un archivio di dischi (utilizzando la struttura data) e scriva il file dati1.dat con i nomi degli artisti
DettagliFondamenti di Informatica
Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile
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 2016
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
DettagliUniversità degli Studi di Brescia. Vettori di variabili. ! Sono variabili aggregate in grado di memorizzare una collezione (organizzata) di oggetti
Linguaggio C 1! Sono variabili aggregate in grado di memorizzare una collezione (organizzata) di oggetti Oggetti dello stesso tipo Identificazione univoca degli oggetti! Il tipo più semplice ha una sola
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
DettagliLinguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin
Linguaggio C Vettori, Puntatori e Funzioni Stringhe Università degli Studi di Brescia Prof. Massimiliano Giacomin SCHEMA DELLA LEZIONE RELAZIONE TRA VETTORI E PUNTATORI (e le stringhe letterali come caso
DettagliIstruzioni per il trasferimento del controllo: break e continue
Istruzioni per il trasferimento del controllo: break e continue Istruzione break: L'istruzione break provoca l'uscita immediata dal ciclo (o da un'istruzione switch) in cui è racchiusa. Esempio: fattoriale
DettagliStringhe in C. Emilio Di Giacomo
Stringhe in C Emilio Di Giacomo Stringhe Una stringa è una sequenza finita di caratteri Le stringhe sono un tipo di dati talmente importante e utile che fanno parte di quasi tutti i linguaggi di programmazione
DettagliLiceo B.Russell Classe 2 I VETTORI. ORDINAMENTO DI UN VETTORE: Metodo ingenuo o sequenziale
Fondamenti: I VETTORI Riempimento di un vettore con numeri acquisiti da tastiera; Riempimento di un vettore lungo N con i numeri da 0 a N; Riempimento di un vettore lungo N con i numeri da N a 0; Riempimento
DettagliStringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14
Stringhe in C Nicu Sebe Informatica Nicu Sebe 1 / 14 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe
DettagliLezione di Laboratorio di Prgrammazione: /03/2019 a.a. 2018/2019 R.Prevete
Lezione di Laboratorio di Prgrammazione: 12 19/03/2019 a.a. 2018/2019 R.Prevete Esercizio 1 (lezione 11): soluzione -- Scrivere un programma che prima permetta ad un utente di riempire una matrice di interi
DettagliCicli annidati ed Array multidimensionali
Linguaggio C Cicli annidati ed Array multidimensionali Cicli Annidati In C abbiamo 3 tipi di cicli: while(exp) { do { while(exp); for(exp;exp;exp3) { Cicli annidati: un ciclo all interno del corpo di un
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-K) 5. Algoritmi e pseudocodifica
Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliInformatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi gianluca.rossi@uniroma2.it Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)
Dettagliaccesso * leggiaccessi(char * nomefile, int * dim);
Fondamenti di Informatica L-A (A.A. precedenti al 2008/2009) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista Prova d Esame di Martedì 22 Dicembre 2009 durata 2h ESERCIZIO 1 (10 punti) Un'azienda
DettagliProgrammazione di base
Fondamenti di Informatica Primo Appello 01-17 8 febbraio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene 10 domande,
DettagliARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C
A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C Es typedef ; typedef char stringa[10]; dichiara che il tipo stringa è un array
DettagliStringhe e tipi di dati strutturati
Stringhe e tipi di dati strutturati Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 21 Marzo 2013 Info sui Labs http://tinyurl.com/ieimlabextra Ricordate di portare un adattatore!
DettagliArray e Matrici. Perchè usare gli array?
Array e Matrici Perchè usare gli array? 2 float venditegennaio, venditefebbraio, venditemarzo, venditeaprile, venditemaggio, venditegiugno, venditeluglio, venditeagosto, venditesettembre, venditeottobre,
Dettagli