Variabili e Costanti. Esempio Programma C++ Lezione 1. Direttive al Preprocessore
|
|
- Federico Volpi
- 4 anni fa
- Visualizzazioni
Transcript
1 Esempio Programma C++ Lezione 1 Variabili e Costanti Gestione archivio di una libreria. Il programma deve periodicamente aggiornare il file di magazzino e fornire dati sulle vendite. legge la lista dei volumi venduti ordina la lista per autore e titolo conta il numero di copie vendute di ciascun volume e cancella duplicati aggiorna il file di magazzino stampa i risultati LASD 1 Blundo Carlo LASD 2002/03 4 Struttura di un Programma C++ Un programma descrive una sequenza di azioni ogni azione è descritta da una espressione un insieme di espressioni seguite da ; è un istruzione fiespressione = più piccola unitàdi programma di significato autonomo Esempi di espressioni fidichiarazioni (int i;) fiassegnamento (i = 7+1;) fiinput/output (cout << i;) ficontrollo di flusso (for, while, if, etc.) Blundo Carlo LASD 2002/03 2 Esempio Programma C++ #include <iostream> using namespace std; void leggi() { cout << sto leggendo ; } void ordina() { cout << sto ordinando ; } void conteggia() { cout << sto contando ; } void stampa() { cout << sto stampando ; } int main() { leggi(); ordina(); conteggia(); stampa(); return 0; } Blundo Carlo LASD 2002/03 5 Struttura di un Programma C++ Istruzioni raggruppate in unità logiche dette funzioni Una funzione consiste di quattro parti tipo di dati da restituire nome della funzione lista degli argomenti corpo della funzione Ogni programma deve contenere una funzione main() Direttive al Preprocessore #include <iostream> è una direttiva al preprocessore include il contenuto del file iostream.h nel file del programma prima della compilazione Se il file da includere non ha estensione fa parte della libreria standard le direttive al preprocessore sono istruzioni eseguite prima della compilazione #include, #define, #ifdef, #ifnotdef, #else, #endif, #pragma sono tutte direttive al preprocessore # deve essere il primo carattere della linea non c è ; al termine dell istruzione Blundo Carlo LASD 2002/03 3 Blundo Carlo LASD 2002/03 6 1
2 Spazi dei nomi Ogni variabile è definita all interno di un namespace Il nome della variabile è formato dal nome del namespace e dall identificatore della variabile Dati Un dato ha un tipo ed un indirizzo L indirizzo specifica dove il dato risiede in memoria Il tipo di un dato specifica come il dato è memorizzato e quali sono le operazioni legali su di esso std::cout << ciao ; L istruzione using namespace std specifica il namespace di default Se non specificato l identificatore della variabile viene ricercato all interno del namespace di default indirizzo tipo int: 4 byte rappresentazione in complemento a 2 Blundo Carlo LASD 2002/03 7 Blundo Carlo LASD 2002/03 10 Compilazione ed Esecuzione di un Programma C++ Per compilare g++ (-g) (-o out) (-c) file1.c file2.c file3.cpp (-llib) -g ---> debugger -o ---> eseguibile in out (per default in a.out) -c ----> compila ma non linka i file.o -l ----> linka libreria lib -I ----> modifica path di ricerca nel file system Il compilatore opera due passi compilazione linkaggio Il compilatore esegue controlli lessicali e sintattici sul codice del programma Blundo Carlo LASD 2002/03 8 Indirizzo di un Dato La memoria è una sequenza di celle un bit per cella Le celle sono raggruppate in gruppi byte (8 bit) e word (4-8 byte) ad ogni byte è assegnato un numero d ordine (indirizzo) il byte è la minima unità di memoria indirizzabile L indirizzo di un dato è l indirizzo del primo byte in cui è contenuta la rappresentazione del dato Dati e istruzioni sono memorizzati nella stessa memoria (modello di Von Neumann) Blundo Carlo LASD 2002/03 11 Elementi Essenziali del Linguaggio Dati su cui operare Operazioni per manipolare i dati Istruzioni per controllare il flusso del programma Librerie per implementare operazioni non predefinite Tipo di un Dato Il Tipo di un dato specifica quanti byte sono necessari a rappresentarlo come il dato è rappresentato quali operazioni sono possibili su quel dato come tali operazioni sono realizzate Blundo Carlo LASD 2002/03 9 Blundo Carlo LASD 2002/
3 Tipi di Dati Predefiniti Variabili Simboliche Tipo char int short long float double long double Dimensione 1 byte 1 word dipende dalla macchina dipende dalla macchina 1 word 2 word 3-4 word Utilizzo caratteri o piccoli interi interi reali in singola precisione reali in doppia precisione reali in multipla precisione Dato memorizzato ed indirizzabile tramite l indirizzo si può recuperare il dato e modificarlo Si definisce anche oggetto Una variabile è identificata da un nome (identificatore) fornito dal programma Ad un identificatore sono associati un indirizzo ed un tipo specificati al momento della definizione del dato char ch; ch identifica il valore di un area di memoria lunga 1 byte, localizzata ad un certo indirizzo memorizzata come un carattere (codice ASCII) Blundo Carlo LASD 2002/03 13 Blundo Carlo LASD 2002/03 16 Costanti Letterali Dato memorizzato ma non indirizzabile ha comunque un tipo int i = 2; // 2 costante letterale Costanti letterali intere sono signed int per default fi possono essere rappresentate in decimale, ottale o esadecimale fi possono anche essere di altro tipo 12, 010, 0xFF, 128u, 3e1, 1024Ul Costanti letterali in virgola mobile sono double per default (possono anche essere di altro tipo) 1.0f, 3.14l, 3e1, 1.4E-2 Blundo Carlo LASD 2002/03 14 Identificatori Il nome della variabile può contenere lettere, cifre o _ Il compilatore distingue tra maiuscole e minuscole Il primo carattere deve essere una lettera oppure _ Nessun limite di lunghezza Stili più diffusi variabili in minuscolo, tipi con iniziale maiuscola, costanti in maiuscolo nomi composti voti_esame votiesame Blundo Carlo LASD 2002/03 17 Costanti Letterali L indica che a è un wide-character Costanti letterali carattere stampabile sono scritte tra apici A, b,.,?, L a I caratteri non stampabili, gli apici ed il backslash sono rappresentate da sequenze di escape \n, \t, \, \\, \0 (null), \12 (return) Costanti letterali stringhe sono scritte tra doppi apici ciao mondo, L città Una stringa è un array di caratteri seguito dal carattere \0 Blundo Carlo LASD 2002/03 15 Variabili Simboliche Ad ogni variabile sono associati R-value valore della variabile L-value indirizzo della variabile ch = ch + 0 ; l espressione a destra dell operatore considera il valore della variabile l espressione a sinistra dell operatore considera l indirizzo della variabile. È possibile specificare la stessa variabile su entrambi i lati di un assegnamento Blundo Carlo LASD 2002/
4 Definizione di Variabili Simboliche introduce il nome ed il tipo di una variabile il compilatore alloca memoria sufficiente a contenere il dato ed assegna l indirizzo di questa memoria all identificatore della variabile char ch; nome tipo indir. ch char Una variabile può essere definita una sola volta in tutto il programma Blundo Carlo LASD 2002/03 19 Definizioni ed Inizializzazioni Il valore assegnato ad una variabile al momento della definizione è arbitrario È possibile assegnare un valore iniziale alla variabile risultato di una qualunque espressione char ch = a ; int i(10); double prezzo_vendita(prezzo*sconto); char c = c; // cosa fa? È possibile concatenare più definizioni sulla stessa linea di codice double prezzo = 100.5, sconto = 0.15; Blundo Carlo LASD 2002/03 22 Dichiarazione di Variabili Simboliche introduce il nome di una variabile che è stata definita da qualche altra parte nel programma il compilatore non alloca memoria extern char ch; nome tipo indir. ch char ---- Una variabile può essere dichiarata più volte nello stesso programma Blundo Carlo LASD 2002/03 20 Inizializzazioni di Default È pericoloso definire una variabile senza inizializzarla È vietato definire oggetti di tipo classe non inizializzati Le variabili globali definite al di fuori delle funzioni sono inizializzate per default a 0 Le variabili locali non sono inizializzate Tutti i tipi predefiniti possono essere inizializzati a 0 da un costruttore di default int ival = int(); // inizializza ival a 0 vector<int> ivec(10); /* definisce un vettore di 10 interi inizializzati a 0 */ Blundo Carlo LASD 2002/03 23 Dichiarazioni e header file In un progetto strutturato su più file in ogni file vengono dichiarate (o definite) tutte le variabili utilizzate La stessa variabile è dichiarata in file diversi Se modifichiamo il tipo della variabile dobbiamo modificare tutte le dichiarazioni Per agevolare la manutenzione del codice conviene concentrare le dichiarazioni delle variabili in un solo file Le variabili sono dichiarate in un header file Tutti i file del progetto includono l header file Per modificare il tipo di una variabile basta modificare l header file Blundo Carlo LASD 2002/03 21 Costanti Simboliche Dati memorizzati ed indirizzabili che non possono essere modificati (variabili a sola lettura). const int buffersize = 512; L uso delle costanti simboliche aumenta notevolmente la leggibilità del codice Il compilatore non permette di modificare il valore di una costante simbolica definire una costante simbolica non inizializzata assegnare l indirizzo di una costante simbolica ad un puntatore che non sia puntatore a costante Blundo Carlo LASD 2002/
5 Puntatori Una variabile di tipo puntatore contiene un indirizzo fitramite una variabile puntatore si può referenziare indirettamente una variabile nome tipo indir. ptr char* Un puntatore può contenere l indirizzo di un oggetto o di una funzione Blundo Carlo LASD 2002/03 25 Inizializzazioni Illegali Il C++ è un linguaggio strongly typed Il compilatore controlla che in ogni assegnazione o inizializzazione l R-value del lato destro sia dello stesso tipo dell L-value del lato sinistro Sono errate tutte le istruzioni che assegnano ad un puntatore l R-value di una variabile o l indirizzo di una variabile di tipo diverso int i = 24; int *ip1 = &ip; /* ERRORE */ char *cp = ip; int *ip2 = i; // Errato ma consentito da molti compilatori Blundo Carlo LASD 2002/03 28 Puntatori Un puntatore viene definito facendo precedere l identificatore dall operatore di dereferenziazione (*) int *ip1, *ip2; // ip1 e ip2 puntano ad int unsigned char *ucp; // ucp punta ad un char senza segno float fp, *fp1; // fp è un float, fp1 punta ad un float char* cp, cp1; // cp punta a char, cp1 è un char La dimensione di un puntatore ad un oggetto è sufficiente a contenere un indirizzo fi 4 byte su macchine a 32 bit Il tipo di un puntatore ad un oggetto è il tipo della variabile puntata fi tutti i puntatori ad oggetti hanno la stessa dimensione Blundo Carlo LASD 2002/03 26 Indirizzamento Indiretto (Lettura) Accede al valore di un oggetto tramite un puntatore che indirizza l oggetto. Si usa l operatore (*) int i = 1024; // ip contiene l indirizzo di i int k = *ip; // k = 1024 k = ip; ip = i; Blundo Carlo LASD 2002/03 29 Inizializzazioni di Puntatori Un puntatore può essere inizializzato con l indirizzo (L-value) di una variabile dello stesso tipo Per ottenere l L-value di una variabile si applica l operatore di indirizzo (&) int i = 1024; int *p = &i; int *ip = p; char *cp = 0; // inizializza a NIL Indirizzamento Indiretto (Scrittura) Tramite l operatore di indirizzamento indiretto è possibile assegnare un valore ad un oggetto indirettamente int i = 1024; // ip punta ad i *ip = k; // i = k *ip = abs(*ip); // i = abs(i) *ip = *ip + 1; // i = i + 1 Blundo Carlo LASD 2002/03 27 Blundo Carlo LASD 2002/
6 Puntatori a Puntatori Un puntatore può contenere l indirizzo di un puntatore Se dereferenziato restituisce un puntatore int i = 1024; // ip punta ad i int **ipp = &ip; **ipp = 100; // i = 100 ip = ipp; Cast Il cast cambia il tipo di una variabile il contenuto della memoria resta inalterato cambia la quantità di memoria letta e il modo in cui viene interpretata Il cast è un operazione pericolosa ed il compilatore non la esegue mai automaticamente int i = 1000; char c = *(char *)ip; double d = *(double *)ip; // legge solo primo byte di i // legge 4 byte oltre i Blundo Carlo LASD 2002/03 31 Blundo Carlo LASD 2002/03 34 Puntatori Generici Un puntatore generico è di tipo void* ad un puntatore generico possono essere assegnati indirizzi di oggetti di qualsiasi tipo Un puntatore generico non può essere utilizzato per accessi alla memoria non ha le informazioni sul tipo di oggetto indirizzato int *pi; double *pd; void *pv = pi; pv = pd; *pv = 3.14; I puntatori generici sono usati per passare ad una funzione puntatori di tipi differenti o confrontare indirizzi di memoria Blundo Carlo LASD 2002/03 32 Puntatori a Costante Un puntatore a costante può essere utilizzato solo per accedere indirettamente ad un oggetto in lettura non in scrittura const double *pc; L indirizzo di una costante simbolica può essere assegnato solo ad un puntatore a costante const double d = 3.14; pc = &d; // pc punta alla costante d *pc = *pc + 1;, cerca di modificare d double d1 = 1.2; pc = &d1; // pc punta alla variabile d1 *pc = d1*2; /* ERRORE, cerca di modificare d1 tramite pc */ Blundo Carlo LASD 2002/03 35 Aritmetica dei Puntatori È possibile effettuare delle manipolazioni sui valori dei puntatori L unità di misura nelle manipolazioni dei puntatori è la dimensione del tipo del puntatore int i = 100; // ip punta ad i *ip = *ip + 2; // i = i + 2 ip = ip + 2; // ip punta 8 byte più avanti di i int *ip2 = ip - 4; // ip2 punta 16 byte dietro ad ip int k = ip - ip2; // k = 4 Blundo Carlo LASD 2002/03 33 Puntatori Costanti Un puntatore costante non può essere modificato ma può essere utilizzato per modificare l oggetto puntato Un puntatore a costante può essere modificato ma non può essere usato per modificare il contenuto dell oggetto puntato int errnum; int *const err = &errnum; *err = *err + 1; err = err + 1; // incrementa il valore di errnum, modifica err Blundo Carlo LASD 2002/
7 Puntatori Costanti a Costante Un puntatore costante a costante non può essere modificato e non può essere utilizzato per modificare l oggetto puntato const int passo = 1; const int *const ptr = &passo; Operazioni su Variabili Riferimento Ogni operazione sulla variabile riferimento equivale ad una operazione sull oggetto associato Equivale a definire un puntatore costante senza usare la sintassi dei puntatori ref = ref + 1; // incrementa i di 1 Non è possibile modificare la variabile a cui il riferimento è associato Blundo Carlo LASD 2002/03 37 Blundo Carlo LASD 2002/03 40 Utilizzo dei Puntatori Costanti I puntatori a costante vengono usati per indirizzare delle variabili che non devono essere modificate passaggio per riferimento ad una funzione senza side effect I puntatori costanti sono utilizzati per legare un puntatore ad un oggetto ed impedire che possa essere spostato indirizzamento di informazioni relative alla gestione degli errori Blundo Carlo LASD 2002/03 38 Utilizzo Variabili Riferimento Sono usate per passare argomenti ad una funzione per riferimento la funzione può operare sugli argomenti passati per riferimento senza usare la sintassi dei puntatori il codice è più chiaro e leggibile void scambia(int& x, int& y) { int tmp = x; x = y; y = tmp; } void scambia(int* x, int* y) { int tmp = *x; *x = *y; *y = tmp; } Blundo Carlo LASD 2002/03 41 Variabili Riferimento (Indirizzo) Una variabile di tipo riferimento fornisce un alias per il nome della variabile con cui è stata inizializzata int i = 1; int &ref = i nome tipo indir. i ref int int& Costanti Riferimento È possibile definire variabili riferimento costanti non consentono di modificare il valore dell oggetto associato const int& cri = i; cri = cri + 1; Una variabile riferimento deve essere inizializzata Blundo Carlo LASD 2002/03 39 Blundo Carlo LASD 2002/
8 Definizioni di Variabili Riferimento In una lista di definizioni ogni riferimento deve essere preceduto da (&) int i; int &ip1 = i, &ip2 = i; int &ip3 = i, ip4 = i; // ip4 non èun riferimento Un riferimento ad una variabile è inizializzato con l L-value di una variabile dello stesso tipo int& ri = i; char c = a ; int& ri2 = c; Blundo Carlo LASD 2002/03 43 Inizializzazione di Riferimenti con Variabili Temporanee Un riferimento costante può essere inizializzato con costanti letterali e variabili di tipo diverso ma compatibile Gli oggetti non indirizzabili vengono memorizzati in variabili temporanee prima di essere utilizzati per l inizializzazione La variabile temporanea può essere convertita Le operazioni hanno effetto solo sulla variabile temporanea const int &ir = 1024; double d1, d2; // int temp = 1024; const int &ir = temp; // double temp = d1+d2; const double &d = d1 + d2; // const double &d = temp; const int &ci = d1; // int temp = d1; const int &ci = temp; Blundo Carlo LASD 2002/
Variabili e Costanti
Struttura di un Programma C++ Un programma descrive una sequenza di azioni ogni azione è descritta da una espressione un insieme di espressioni seguite da ; è un istruzione espressione = più piccola unità
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
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
DettagliIntroduzione al linguaggio C
Linguaggio C Introduzione al linguaggio C Sistemi di sviluppo integrati Noti anche come IDE: Integrated Development Environment Un pacchetto software che permette di scrivere, preprocessare, compilare,
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
DettagliLe variabili nel linguaggio C
Linguaggio C Le variabili nel linguaggio C Per iniziare Stampa le parole Hello world printf( Salve gente...\n"); 1 2 Elementi di Base Le Variabili Elementi di base che caratterizzano i programmi scritti
DettagliStruttura di un programma C++
Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout
DettagliLezione 5: Introduzione alla programmazione in C
Lezione 5: Introduzione alla programmazione in C Laboratorio di Elementi di Architettura e Sistemi Operativi 4 Aprile 2012 Introduzione al C C vs. Java Java: linguaggio ad oggetti C: linguaggio procedurale
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
DettagliI Fondamenti del Linguaggio
Linguaggio C I Fondamenti del Linguaggio Linguaggio di Programmazione Linguaggio formale per la descrizione di programmi per calcolatori Sintassi vicina al linguaggio umano Se non ci fossero, bisognerebbe
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
DettagliUn esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)
Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore) Macchina astratta: un linguaggio di programmazione trasforma un calcolatore in una macchina
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento
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
DettagliDichiarazioni e tipi predefiniti nel linguaggio C
Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo. Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori:
DettagliPuntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a
Puntatori in C Puntatori Variabili tradizionali indirizzo int a = 5; A00E... Proprietà della variabile a: nome: a A010 A012 5 tipo: int A014 valore: 5 indirizzo: A010 Finora abbiamo usato solo le prime
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
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
DettagliIntroduzione al linguaggio C Primi programmi
Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
Dettagli1
Manuali di C Linguaggio C B. W. Kernigan, D. M. Ritchie Jackson La guida completa al C H. Schildt McGraw-Hill Fondamenti di Informatica 1 Linguaggio C Creato nei primi anni 70 per sviluppare il S.O. Unix
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:
DettagliVariabili. Tipi di dati di base. Variabili. Variabili
Variabili 2 Tipi di dati di base Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Porzioni di memoria RAM usate per mantenere dati variabili nel tempo La definizione di una variabile riserva
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA 1 Struttura di un programma Java Un programma Java consiste in un insieme di definizioni di classi. In genere
DettagliLaboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011
Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I puntatori Variabili e parametri Parametri formali
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;
DettagliPrimi programmi in C
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Uso del compilatore gcc Struttura di un programma
DettagliLa sintassi del C APPENDICE H
APPENDICE H La sintassi del C Nella notazione della sintassi utilizzata, le categorie sintattiche (non terminali) sono state indicate da uno stile tipografico in corsivo, mentre le parole letterali e i
DettagliPuntatori in C Lucidi della Pof.ssa Pazienza
Puntatori in C Lucidi della Pof.ssa Pazienza http://www.uniroma2.it/didattica/foi2/ Puntatori L operatore di indirizzo & Indirizzi, puntatori Aritmetica dei puntatori L operatore di dereferenziazione *
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University
DettagliQuando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2;
Array Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2; Il C supporta questo uso attraverso il tipo di dati array (o vettore): int
DettagliInformatica. Stefano Lodi. 16 novembre in linguaggio C
Informatica in linguaggio C Stefano Lodi 16 novembre 2005 0-0 Algoritmi, linguaggi, programmi, processi trasformazione di un insieme di dati iniziali in un insieme di risultati finali mediante istruzioni
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliIntroduzione alla programmazione. Alice Pavarani
Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello
DettagliTipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010
Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi
DettagliManualistica 01 Variabili e costanti
Programmazione e Laboratorio di Programmazione Manualistica 01 Variabili e costanti Programmazione e Laboratorio di Programmazione: Variabili e costanti 1 Definizione di una variabile Sintassi: tipo_variabile
DettagliCostanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
DettagliLaboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi
Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Università degli Studi La Sapienza Fondamenti di
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliSintassi: Per la dichiarazione di variabili dei tipi fondamentali:
Sintassi: Per la dichiarazione di variabili dei tipi fondamentali: declaration ::= type declarator list ; declarator list ::= declarator {, declarator} opt declarator ::= identif ier identif ier = initializer
DettagliManualistica 1 Variabili e costanti
Programmazione e Laboratorio di Programmazione Manualistica 1 Variabili e costanti Programmazione e Laboratorio di Programmazione: Variabili e costanti 1 Definizione di una variabile Sintassi: tipo_variabile
DettagliVariabili e input/ Alessandra Giordani Lunedì 18 marzo
Variabili e input/ output da tastiera Alessandra Giordani agiordani@disi.unitn.it Lunedì 18 marzo 2013 http://disi.unitn.it/~agiordani/ Es. compilazione helloworld.c 2 Variabili e valori Una variabile
DettagliLaboratorio di Informatica
-- Conversione di tipo in C (V) -- Laboratorio di Informatica Ingegneria Meccanica Lezione 7, 22 novembre 2007 versione 24 novembre 2007 Renato Menicocci
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliInformatica Applicata
Ing. Irina Trubitsyna Elementi di base di un programma Dichiarazione dei dati in un programma Sommario Panoramica Elementi di Base di un Programma Struttura Direttive Elementi Sintattici di Base Commenti
DettagliLaboratorio di informatica Ingegneria meccanica
Interi in complemento a 2 () Laboratorio di informatica Ingegneria meccanica Lezione 5 29 ottobre 2007 Con N bit sono rappresentabili tutti gli interi nell'intervallo [-2^(N-), 2^(N-)-] Esempio: 6 bit,
DettagliIl C nel C++ Struttura di un linguaggio. regole per la definizione i simboli. regole per la composizione dei simboli
Il C nel C++ Struttura di un linguaggio Livello lessicale: regole per la definizione i simboli Livello sintattico: regole per la composizione dei simboli Livello semantico: significato delle strutture
DettagliStruttura di un linguaggio
Il C nel C++ Struttura di un linguaggio Livello lessicale: regole per la definizione i simboli Livello sintattico: regole per la composizione dei simboli Livello semantico: significato delle strutture
DettagliVerso i puntatori: Cosa è una variabile?
Verso i puntatori: Cosa è una variabile? Quando si dichiara una variabile, ad es. int a; si rende noto il nome e il tipo della variabile. Il compilatore alloca l opportuno numero di byte di memoria per
DettagliInformatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande/ VERSIONE 1 1) Nell uso dei puntatori in C++ la scrittura -> vuol dire: a) riferimento
Dettagliciclo di vita della soluzione (informatica) di un problema
Università di Roma Tor Vergata L2-1 ciclo di vita della soluzione (informatica) di un problema errori run-time errori sintattici codice editor codice C++ compilatore esegui eseguibile OK risultati scorretti
DettagliTipi di dato semplici
Tipi di dato semplici Perché dichiarare una variabile? 2 Una variabile rappresenta uno spazio di memoria centrale Prima dell esecuzione del programma deve essere chiaro quanto spazio serve al programma
DettagliQualsiasi programma in C++ segue lo schema: Variabili
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliI/O da tastiera + Alessandra Giordani Lunedì 2 maggio
I/O da tastiera + costrutti while e if Alessandra Giordani agiordani@disi.unitn.it Lunedì 2 maggio 2011 http://disi.unitn.it/~agiordani/ Ripasso funzione printf() Usata per stampare il contenuto di una
DettagliCorso Programmazione
Corso Programmazione 2009-2010 (docente) E-mail: aiolli@math.unipd.it Web: www.math.unipd.it/~aiolli Dipartimento di Matematica Pura ed Applicata Torre Archimede, Via Trieste 63 PARTE 3 2 Variabili Le
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliTipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
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
DettagliIntroduzione al Linguaggio C
INFORMATICA 1 Lezione 3 (Introduzione al Linguaggio C, Introduzione ai Tipi di dato, Cenni alla codifica binaria) Introduzione al Linguaggio C 1 Passi fondamentali del C Definito nel 1972 (AT&T Bell Labs)
DettagliTipi di dato, Alessandra Giordani Lunedì 7 maggio 2011
Tipi di dato, memoria e conversioni Alessandra Giordani agiordani@disi.unitn.it Lunedì 7 maggio 2011 http://disi.unitn.it/~agiordani/ Il linguaggio C è esplicitamente tipato: occorre esplicitamente associare
DettagliCaratteristiche di un linguaggio ad alto livello
Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono
DettagliPrecisazione sui tipi in ANSi C
Precisazione sui tipi in ANSi C Tipi primitivi del C Un tipo è costituito da un insieme di valori ed un insieme di operazioni su questi valori. Classificazione dei tipi primitivi del C scalari aritmetici:
DettagliVariabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliI puntatori. DD Cap.7 pp KP Cap.6 pp
I puntatori DD Cap.7 pp.245-280 KP Cap.6 pp.219-235 Cos è un puntatore Un puntatore è una variabile che assume come valore un indirizzo di memoria. Il nome di una variabile fa quindi riferimento ad un
DettagliCominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi
Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono l algoritmo Cominciamo ad analizzare la
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
DettagliI/O da tastiera e direttive processore. Alessandra Giordani Lunedì 3 maggio
I/O da tastiera e direttive processore Alessandra Giordani agiordani@disi.unitn.it Lunedì 3 maggio 2010 http://disi.unitn.it/~agiordani/ Ripasso funzione printf() Usata per stampare il contenuto di una
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
DettagliAssegnazione di una variabile
Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliCorso di Fondamenti di Informatica Università degli Studi di Cassino
Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono l algoritmo Cominciamo ad analizzare la
DettagliIdentificatori. Fondamenti di Informatica e laboratorio Intro C
Identificatori Sequenza (di lunghezza maggiore o uguale a 1) di lettere e cifre che inizia obbligatoriamente con una lettera. E' ammesso anche l'utilizzo dell'undescore _ Maiuscole e minuscole sono diverse
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
DettagliIntroduzione al C. Lezione 1 Elementi. Rossano Venturini. Pagina web del corso
Introduzione al C Lezione 1 Elementi 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 C Mercoledì 19 Giovedì
DettagliIl primo programma C. Un programma utile. Compilazione & linking con il compilatore GNU. Introduzione alla programmazione in linguaggio C
Introduzione alla programmazione in linguaggio C Il primo programma C /* Hello world: il mio primo programma C */ Commento su più righe; il compilatore ignorerà tutto quanto compreso fra /* e */. Il primo
DettagliUnità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.
Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti
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
DettagliTipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.
Tipi di dato Le variabili in C KP Cap.3 pp.95-129 Cap.5 pp.190-193 DD Cap. 9 pp.352-355 Abbiamo già parlato delle variabili, ed abbiamo fin ora usato il tipo int, ma abbiamo molte altre possibiltà I tipi
DettagliLinguaggio C Variabili e tipi di dato
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Variabili e tipi di dato 2001 Pier Luca Montessoro - Davide
DettagliPer fare riferimento ad un elemento, specificare il nomedel vettore. numerodi posizione(indice)
Vettore(Array monodimensionale) Sequenza di posizioniconsecutive (o locazioni di memoria) che vengono chiamate elementi del vettore Gli elementi hanno tutti lo stesso nomee sono tutti dell stesso tipo
DettagliPrimi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione
Primi esempi di programmi Il tipo int Le variabili Altri tipi interi Operatori di assegnazione Il tipo int Un int permette di trattare numeri interi 4 byte (32 bit) con la tecnica del complemento a 2 (ma
DettagliVariabili e assegnazione
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Variabili e assegnazione Carla Limongelli Marzo 2009 Variabili e assegnazione 1 Contenuti Variabili a ab e assegnazionea e Variabili e aree di
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
DettagliSono variabili il cui valore corrisponde ad un indirizzo di memoria. Puntatori
Sono variabili il cui valore corrisponde ad un indirizzo di memoria Puntatori Dichiarazione di variabile puntatore Esistono puntatori per ogni tipo di variabile puntata Un dato puntatore può puntare solo
DettagliIl linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1
Il linguaggio C I linguaggi di programmazione ad alto livello sono linguaggi formali ( sintassi e semantica formalmente definite) però sono compatti e comprensibili. Le tipologie di linguaggi sono: procedurali
DettagliTipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna
Tipi e Valori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Tipi e Valori 2 / 26 Ringraziamenti prof. Mirko Viroli, Università
DettagliEsercizi Programmazione I
Esercizi Programmazione I 0 Ottobre 016 Esercizio 1 Funzione valore assoluto Il file.c di questo esercizio deve contenere nell ordine, il prototipo (dichiarazione) di una una funzione abs, che prende in
DettagliAlfabeto ed elementi lessicali del linguaggio C
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Alfabeto ed elementi lessicali del linguaggio C Pietro Di Lena - pietro.dilena@unibo.it s t a t i c s h o r t l e g s ; i n
Dettagli#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()
Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine
DettagliTipi di dato semplici
Tipi di dato semplici Informatica B Tipi di dati q In C esistono diversi tipi di dato built-in, tra cui int: numeri interi float: numeri con virgola (singola precisione) double : numeri con virgola (doppia
DettagliVariabili intere, funzioni e input/ Alessandra Giordani Lunedì 19 marzo
Variabili intere, funzioni e input/ output da tastiera Alessandra Giordani agiordani@disi.unitn.it Lunedì 19 marzo 2012 http://disi.unitn.it/~agiordani/ Variabili e valori Una variabile è un nome logico
DettagliTipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.
Tipi di dati fondamentali Tipi di dati fondamentali Linguaggi di Programmazione I Ferdinando Cicalese caratteri: char signed char unsigned char interi short int long interi unsigned short unsigned unsigned
DettagliIngegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo
Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo In C++ è possibile distinguere due aree distinte di memoria: memoria stack e memoria heap E
DettagliIl primo programma C++
Il primo programma C++ Un programma in qualsiasi linguaggio evoluto è una sequenza di istruzioni che la CPU dopo opportune conversioni esegue. La sintassi dei linguaggi di programmazione è molto piu rigida
DettagliSommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C
Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...
DettagliPuntatori. Fondamenti di Programmazione
Puntatori Fondamenti di Programmazione Funzioni utili stdio.h c = getchar(); restituisce un carattere letto da tastiera. Equivale a: scanf( %c, &c); putchar(c); scrive un carattere sullo schermo. Equivale
Dettagli