Breve Ripasso del linguaggio C
|
|
- Graziano Grilli
- 5 anni fa
- Visualizzazioni
Transcript
1 Breve Ripasso del linguaggio C Michelangelo Diligenti Ingegneria Informatica e dell'informazione diligmic@diism.unisi.it
2 Compilazione, linking, ecc sorgente oggetto librerie sorgente oggetto editor sorgente compiler oggetto linker binario sorgente.cpp,.cc,.c oggetto.obj,.o
3 Compilare Se avete più sorgenti: g++ -o nome_binario nome_programma1.cc... nome_programman.cc Solo un file sorgente deve contenere il main! Vedremo modi migliori per gestire progetti con un elevato numero di file sorgente
4 Funzioni Funzioni si definiscono ed usano come tipo_ritornato NomeFunzione(tipo param1,, tipo paramn); Esempio int Fact(int k) { int res = 1; for (int i = 2; i <=k; ++i) res *= i; return res; int k = Fact(4);
5 Main Main è una funzione speciale int main(int argc, char** argv) { dove argc: numero argomenti passati da linea comando argv: argomenti. argv[0] nome del programma #include <stdlib.h> #include <stdio.h> int main(int argc, char** argv) { int k = atoi(argv[1]); printf( %d\n, k); return 0; Librerie Funzioni di libreria Valore ritornato: 0 vuol dire tutto OK
6 Main e funzioni Esercizio Compilate il programma precedente ed eseguitelo Cosa succede se non si passano argomenti dalla linea di comando? Correggete il programma in modo che funzioni anche se non sono passati argomenti Aggiungete al programma la funzione per calcolare il fattoriale e ritornate il numero fattoriale dell'argomento
7 Puntatori e references & prende indirizzo di una variabile * dereferenzia un indirizzo (puntatore) e prende il contenuto della cella di memoria puntata Esempi int i = 3; valore di i = 3 int *pi = &i; pi uguale ad indirizzo di i (punta ad i) int &ri = i; ri = 4; *pi = 5; ri riferisce all'indirizzo di i cambio valore alla cella riferita da ri, cosa succede al valore di i? dereferenzio pi, e prendo il valore della cella e lo pongo pari a 5. Cosa succede ad i?
8 Passaggio di parametri Chiamante Funzione chiamata void Func(int i) Se func modifica i, cambia una sua copia non k stesso
9 Passaggio di parametri Chiamante Funzione chiamata void Func(int i) Quando func esce la copia viene distrutta
10 Passaggio di parametri Chiamante Funzione chiamata void Func(int* i) Adesso anche i punta alla stessa cella di k. Se func modifica il contenuto di i, modifica anche il contenuto di k! int puntato da k
11 Passaggio di parametri Chiamante Funzione chiamata void Func(int* i) Quando la funzione esce la copia viene eliminata Ma la modifica della cella puntata resta! int puntato da k
12 Passaggio di parametri Tre modi di passare i parametri, per valore, per indirizzo o per riferimento Passaggio per valore void Function(int i); // passo il valore di i, che viene // copiato e reso disponibile nella funzione ATTENZIONE: copia di i distrutta uscendo da Function #include <stdio.h> void Function(int i) { i = 5; int main() { int i = 0; Function(i); printf( %d\n, i);
13 Passaggio di parametri Passaggio per indirizzo void Function(int* i); // passo l'indirizzo di i, il puntatore eliminato uscendo da Function (ma non la cella puntata) #include <stdio.h> void Function(int* i) { *i = 5; int main() { int i = 0; Function(&i); printf( %d\n, i);
14 Passaggio di parametri Passagio per riferimento void Function(int &i); // passo il riferimento all'indirizzo di i #include <stdio.h> void function(int& i) { i = 5; int main() { int i = 0; Function(i); printf( %d\n, i);
15 Passaggio di parametri Esempio #include <stdio.h> #include <sys/time.h> #include <vector> bool function1(std::vector<int> vec) { return (vec.size() == 0); int main() { struct timeval starttime, endtime; gettimeofday(&starttime, NULL); std::vector<int> vec( , 1); for (int i = 0; i < 10000; ++i) function1(vec); gettimeofday(&endtime, NULL); long msec = *(endtime.tv_sec - starttime.tv_sec) + (endtime.tv_usec - starttime.tv_usec); printf("%ld\n", msec); Passo il vettore per valore Dato grande 4* bytes, lo copio volte chiamando la funzione Misuro il tempo in microsecondi
16 Passaggio di parametri Esempio, con passaggio per indirizzo #include <stdio.h> #include <sys/time.h> #include <vector> bool function2(std::vector<int>* vec) { return (vec->size() == 0); int main() { struct timeval starttime, endtime; gettimeofday(&starttime, NULL); std::vector<int> vec( , 1); for (int i = 0; i < 10000; ++i) function2(&vec); gettimeofday(&endtime, NULL); long msec = *(endtime.tv_sec - starttime.tv_sec) + (endtime.tv_usec - starttime.tv_usec); printf("%ld\n", msec); Ora Copio solo il puntatore (8 bytes) Copio volte 8 bytes Chiamando la funzione Misuro il tempo in microsecondi
17 Passaggio di parametri Quando si passa un parametro, si fa una copia dello stesso In genere questo non costa molto: per tipi come int, float, long in, ecc. Si tratta di 4-8 byte. Ma questo può essere costoso. Ad esempio, se un tipo è composto da 4*106 byte
18 Ritornare i risultati Fare attenzione a come si ritornano i risultati di una funzione Stesse attenzioni del passaggio di parametri Per valore: int function() { int i = 0; return i; int j = function(); // il contenuto di i viene copiato // e poi i viene distrutto
19 Ritornare i risultati Per indirizzo o riferimento. Attenzione! int* function() {... return &i; int* j = function(); // attenzione i viene deallocato all'uscita della funzione int& function() { return i; ; int j = function();
20 Ritornare i risultati Per riferimento, fare molta attenzione int& function() { int i = 0; return i; int j = function(); // NO! i viene distrutto per cui il // riferimento non sarà valido fuori Ritornare per riferimento sembra poco utile adesso, ma lo rivedremo quando studieremo il concetto di classe
21 Ritornare i risultati Per indirizzo #include <stdlib.h> #include <stdio.h> int* function() { int* i = (int*)malloc(sizeof(int)); return i; int main() { int* j = function(); // OK! printf( %d\n, *j) free(j); // ricordarsi di deallocare // puntatore distrutto in // uscita ma non cella allocata
22 Ritornare i risultati Per indirizzo Attenzione di nuovo... int* function() { int i = 0; return &i; Come chiamo la funzione? int* j = function(); // NO! i viene eliminato all'uscita. // j punta ad una cella di memoria // non più allocata
23 Ritornare i risultati Alternativa: passare un puntatore alla funzione Specifica dove la funzione mi scrive l'output Esempio void function(int* i) { *i = 0; int i = 5; function(&i); printf( %d, i);
24 Ritornare i risultati Una funzione deve fornirmi un risultato complesso Alternativa 1 struct Point {int x; int y; ; Point* function() { Point* p = (Point*)malloc(sizeof(Point)); p->x = 0; p->y = 0; return p; Point* p = function(); // do something with p free(p);
25 Ritornare i risultati Alternativa 2 struct Point {int x; int y; ; void function(point* p) { p->x = 0; p->y = 0; ; Point p; function(&p); Alternativa 2 va quasi sempre preferita Non si deve allocare dinamicamente si evitano bugs di memoria o leaks perché si scorda di deallocare Chiarezza e leggerezza sintattica
26 Ritornare i risultati Esercizio: scrivere un programma che usa la struct per rappresentare un Punto data in precedenza contiene una funzione che assegna alle coordinate del punto dei valori passati come argomenti la funzione ritorna il punto usando l'alternativa 2 il Main legge le coordinate (x,y) da linea di comando, chiama la funzione e stampa le coordinate del punto sullo schermo
27 Constness Previene che variabile possa essere modificata Utile per prevenire cambiamenti ad una variabile a livello di compilazione. Talvolta si cambia accidentalmente una variabile e si creano bugs difficilmente trovabili Const garantisce che tali bug sono trovati in compilazione void Function (int &i) { i = 5; // credo di fare un'operazione locale ma invece cambio all'esterno void Function (const int &i) { i = 5; // Errore in compilazione, i non può essere cambiata
28 Constness void Function (const int *i) { int j; *i = 5; // errore in compilazione, il puntatore è const i = &j; // si può fare void Function (const int * const i) { int j; *i = 5; // Errore in compilazione i = &j; // Errore in compilazione
29 Constness void Function (const int i) { i = 5; // Errore in compilazione int* j = &i; // Errore in compilazione const int* j = &i; // OK const int k = 3; k = 5; // Errore Non solo per i parametri. Lo si può usare per qualsiasi variabile
30 Passaggio di parametri e const Esempio, con passaggio per riferimento #include <stdio.h> #include <sys/time.h> #include <vector> bool function2(const std::vector<int>& vec) { return (vec.size() == 0); int main() { struct timeval starttime, endtime; gettimeofday(&starttime, NULL); std::vector<int> vec( , 1); for (int i = 0; i < 10000; ++i) function2(vec); gettimeofday(&endtime, NULL); long msec = *(endtime.tv_sec - starttime.tv_sec) + (endtime.tv_usec - starttime.tv_usec); printf("%ld\n", msec); Ora Copio solo il puntatore (8 bytes) Copio volte 8 bytes Chiamando la funzione Misuro il tempo in microsecondi
31 Passaggio di parametri e const Il C/C++ permette di passare i parametri in molti modi simili (es. Riferimento o puntatore) Consiglio di usare solo 2 modi per tipi complessi Passaggio per riferimento const per parametri che non devo poter essere cambiati Passaggio per indirizzo per parametri che devono essere cambiati dalla funzione Vantaggi di questo stile: Massima velocita visto che tutto è passato per indirizzo Chiarezza per il chiamante di cosa potenzialmente cambia Uso consistente del const che evita bugs
32 Passaggio di parametri e const Esempio (seguirò questo stile in seguito) Funzione p1, p2 dati passati che sono non modificabili variabile center viene modificata dalla funzione struct Point {int x; int y; ; void function(const Point& p1, const Point& p2, Point* center); Finite l'esercizio a casa...
33 Consigli di stile (IMPORTANTE) Spezza linee lunghe in più righe che stanno sullo schermo (mio consiglio max 80 caratteri per riga) One definizione/comando per riga Non usare nomi brevi, ma nomi che autospiegano cosa fa una funzione o variabile
34 Consigli di stile (IMPORTANTE) Usa indentazione in modo consistente Usa linee bianche per spezzare il codice in unità semantiche Commenta il codice in modo appropriato Sulle slides spesso non posso seguire lo stile per mancanza di spazio, ma voi FATELO sempre
Breve Ripasso del linguaggio C
Breve Ripasso del linguaggio C Michelangelo Diligenti Ingegneria Informatica e dell'informazione diligmic@diism.unisi.it Compilazione, linking, ecc sorgente oggetto librerie sorgente oggetto editor sorgente
DettagliBreve Ripasso del linguaggio C
Breve Ripasso del linguaggio C Michelangelo Diligenti Ingegneria Informatica e dell'informazione diligmic@diism.unisi.it Compilazione, linking, ecc sorgente oggetto librerie sorgente oggetto binario editor
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
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
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;
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;
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
DettagliIntroduzione ai puntatori in C Definizione
Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il
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
DettagliIntroduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso
Introduzione al C Lezione 4 Allocazione dinamica della memoria Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso
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
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
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
DettagliUso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
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
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
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
DettagliAmbienti di Programmazione per il Software di Base
Ambienti di Programmazione per il Software di Base Le Funzioni in C Esercizi sulle Funzioni svolti Esercizi sulle Funzioni da svolgere A.A. 2011/2012 Ambienti di Programmazione per il Software di Base
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
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
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
DettagliL AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using
DettagliIl linguaggio C Gestione della memoria
Il linguaggio C Gestione della memoria Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - Gestione della memoria
DettagliIndirizzi e tipi puntatore a
Linguaggio C Indirizzi e tipi puntatore a Università degli Studi di Brescia Prof. Massimiliano Giacomin Indirizzo e tipo puntatore a TIPO Indirizzo NOME Valore Indirizzo 0101011110011001 1101011110011111
DettagliIntroduzione alla programmazione in linguaggio C
Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008
DettagliPuntatori (in C) Emilio Di Giacomo
Puntatori (in C) Emilio Di Giacomo Puntatori In questa lezione parleremo di uno dei costrutti più potenti del C: i puntatori I puntatori vengono utilizzati per realizzare il passaggio di parametri per
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliMemoria dinamica. Mauro Fiorentini, Univ. di Milano, 2019 M. Fiorentini Il linguaggio C - 467
Memoria dinamica Mauro Fiorentini, 2019 Univ. di Milano, 2019 M. Fiorentini Il linguaggio C - 467 Gestione della memoria dinamica Totalmente sotto il controllo del programmatore. Basata su due funzioni,
DettagliFunzioni come parametri
Funzioni come parametri Obiettivi: Riprendere il modello computazionale alla base del linguaggio C (e mostrare i parametri del main) Presentare e sperimentare le funzioni come parametri di funzione 1 Modello
DettagliINFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 4 Dott. Michele Zanella Ing. Gian Enrico Conti
INFORMATICA A Titolo presentazione sottotitolo A.A. 2018-19 Milano, XX mese 20XX Laboratorio n 4 Dott. Michele Zanella Ing. Gian Enrico Conti Puntatori I puntatori sono delle variabili che contengono l
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
DettagliFondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme
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
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
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
DettagliFunzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
DettagliFunzioni, puntatori, strutture. Lab. Calc. AA 2006/07
Funzioni, puntatori, strutture sommario In questa lezione integriamo le informazioni fornite su puntatori e funzioni approfondendo i seguenti punti Puntatori a puntatori Puntatori e array come parametri
DettagliDebug di un programma
Debug di un programma Col termine Debug si intende una fase di sviluppo del software, nella quale si cerca di eliminare gli errori dal programma Due tipi di errori: Errori sintattici, rilevati sempre dal
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
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
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
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
DettagliPassaggio dei parametri. Passaggio dei parametri
Per valore Il valore viene copiato dal mondo esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sul mondo esterno rimangono circoscritti all environment
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
DettagliConsideriamo un vettore allocato dinamicamente
Libreria per per la la gestione/manipolazione dei dei vettori Consideriamo un vettore allocato dinamicamente int * v; v = (int *) malloc (n * sizeof (int) ); Conversione di tipo da void * a int * Numero
DettagliCorso di Informatica A.A
Corso di Informatica A.A. 2009-2010 Lezione 10 Lezione 10 1 Inside C : Puntatori Puntatori Referenziazione e Dereferenziazione Pointers: Puntatori Le variabili finora incontrate sono caratterizzate da
DettagliVARIABILI AUTOMATICHE E DINAMICHE. Manuale linguaggio C
VARIABILI AUTOMATICHE E DINAMICHE Manuale linguaggio C Variabili automatiche e dinamiche In C è possibile classificare le variabili in base al loro tempo di vita in: variabili automatiche variabili dinamiche
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;
DettagliInformatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012
Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012 Igor Melatti Cenni sui puntatori in C Per ogni variabile normale dichiarata, il compilatore riserva una precisa quantità di
DettagliFUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice
Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni
DettagliPuntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori
Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per
DettagliPuntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori
Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
DettagliIl puntatore. Il puntatore
Il puntatore È un tipo scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Il dominio di una variabile di tipo puntatore è un insieme di indirizzi: Il valore di una
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Parte 8 Dettagli e Approfondimenti versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima
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
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
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,
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
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
DettagliIntroduzione al C. Unità Gestione Dinamica della Memoria
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità Gestione Dinamica della Memoria D. Bloisi, A. Pennisi, S. Peluso, S. Salza Gestione
DettagliComplementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -
Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin
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 Violetta Lonati
DettagliComplementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -
Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin
DettagliProgrammazione I. De Marco - Zizza. De Prisco - Senatore. Ritirato. Appello di Luglio (prima prova) 18 luglio Cognome: Nome: Matricola:
Programmazione I Appello di Luglio (prima prova) 18 luglio 2014 Cognome: Nome: Matricola: Indicare la classe di appartenenza: De Marco - Zizza De Prisco - Senatore Riservato alla commissione d esame 1
DettagliCorso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica
Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare
DettagliProgrammazione (imperativa)
Programmazione (imperativa) Corso di Laurea in Informatica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Lunedì 12.00-13.00 e 14.00-16.00 Mercoledì 14.00-17.00 Laboratorio: Giovedì 12.00-13.00
DettagliLa programmazione nel linguaggio C. Liste
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 28 3) sequenza di caratteri ( x r f ) sequenza di
DettagliLinguaggio C I puntatori
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C I puntatori 2001 Pier Luca Montessoro - Davide Pierattoni
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
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 puntatori che possono
DettagliL AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout
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.
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
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
DettagliTUTORAGGIO INFORMATICA Settimana 5
Leggenda: //commenti TUTORAGGIO INFORMATICA Settimana 5 Le funzioni e le matrici PROBLEMA 1: matrice simmetrica Una matrice si definisce simmetrica se gli elementi del suo triangolo superiore combaciano
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
DettagliProgrammazione in C. La struttura del programma Variabili, espressioni, operazioni
Programmazione in C La struttura del programma Variabili, espressioni, operazioni Struttura del programma // Area quadrato circoscritto // circonferenza /* Author: Lorenzo Course: info */ #include
DettagliESEMPIO PROCEDURE. return IN UNA PROCEDURA. Disegnare, per un dato n, la seguente figura * *** ***** ******* ********* ***********
Sottoprogrammi I sottoprogrammi possono servire per creare nuovi operatori: funzioni, che possono essere usati nelle espressioni, forniscono un valore di ritorno =4*potenza(2+y,3); nuove istruzioni: procedure,
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
DettagliLa funzione main() (
Funzioni La funzione main() Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2 La funzione
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliProgrammazione C. Puntatori Array come puntatori
Programmazione C Puntatori Array come puntatori Perché usare gli indirizzi Tutto in C ha un valore int a = 4; significa che il valore della variabile a è 4, e che potrà essere modificato dal programma
DettagliStruttura dei programmi e Variabili
Linguaggio C Struttura dei programmi e Variabili 1 La struttura generale dei programmi! Struttura del programma: Direttive Funzioni Dichiarazioni Istruzioni Di assegnamento direttive Di ingresso e uscita
DettagliPassare argomenti al programma
Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di
Dettagli! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente
! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente!!la loro esistenza deve essere prevista e dichiarata a priori! Questo può rappresentare un problema soprattutto per variabili
DettagliUniversità degli Studi di Ferrara
Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2017-2018 Programmazione Lezione 4 il Linguaggio C Docente: Michele Ferrari - michele.ferrari@unife.it Nelle lezioni precedenti Problemi
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
DettagliC++ funzioni Alberto Ferrari. Alberto Ferrari Programmazione di applicazioni SW
C++ funzioni Alberto Ferrari http://en.cppreference.com FUNZIONI le funzioni caratterizzate da nome, parametri (numero, ordine e tipo) e tipo di ritorno le funzioni hanno un prototipo il prototipo non
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)
DettagliProf. G. Ascia. I puntatori. Fondamenti di Informatica
I puntatori 1 Associazione Variabile-Indirizzo Tutte le volte che in un programma si dichiarano delle variabili, l'esecutore associa alla variabile un indirizzo. Es. Dato il programma #include
DettagliIntroduzione alla compilazione ed esecuzione di programmi C con IDE Dev-C++
Introduzione alla compilazione ed esecuzione di programmi C con IDE Dev-C++ Università degli Studi di Brescia Elementi di Informatica e Programmazione Università di Brescia 1 Sviluppo di un programma C
DettagliUnità 11 Allocazione dinamica
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 11 Allocazione dinamica S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi
Dettagli