Programmi con argomenti passati da linea di comando

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Programmi con argomenti passati da linea di comando"

Transcript

1 Programmi con argomenti passati da linea di comando Parametri del main() Quando compiliamo un programma viene generato un file eseguibile (estensione.exe nei sistemi Windows). I programmi possono prendere degli argomenti dalla riga di comando con la quale vengono eseguiti. Esempio: copy file1 file2 I programmi visti finora non prendevano argomenti. La funzione main non prendeva parametri: int main(void) {... Fondamenti di Informatica 2 1

2 Parametri del main() Per poter usare gli argomenti con cui il programma è stato lanciato, la definizione di main deve diventare: int main(int argc, char *argv[]) {... argc... numero di argomenti con cui il programma è stato lanciato più 1 argv... vettore di argc stringhe che compongono la riga di comando argv[0] è il nome del programma stesso argv[1],, argv[argc-1] sono gli argomenti (separati da spazio) ogni argv[i] è una stringa (terminata da \0 ) argc e argv vengono inizializzati dal sistema operativo (le stringhe di argv sono allocate dinamicamente) Fondamenti di Informatica 3 Parametri del main(): esempio 1 Stampa del numero di argomenti ricevuti da linea di comando /* File: argnum.c */ #include <stdio.h> int main(int argc, char *argv[]) { printf("ho ricevuto %d argomenti\n", argc-1); return 0; Compilando si ottiene argnum.exe, che può essere eseguito: > argnum primo secondo terzo > Ho ricevuto 3 argomenti Fondamenti di Informatica 4 2

3 Parametri del main(): esempio 2 Stampa degli argomenti ricevuti da linea di comando /* File: argprint.c */ #include <stdio.h> int main(int argc, char* argv[]) { int i; printf("ho ricevuto %d argomenti\n", argc-1); printf("questi argomenti sono:\n"); for (i = 1; i <= argc-1; i++) printf("%s\n", argv[i]); return 0; Compilando si ottiene argprint.exe, che può essere eseguito: > argprint primo secondo terzo > Ho ricevuto 3 argomenti > Questi argomenti sono: > primo > secondo > terzo Fondamenti di Informatica 5 Precompilazione 3

4 Precompilatore Il preprocessore C modifica il codice sorgente in base a "direttive delpreprocessore" inserite nel codice le direttive del preprocessore iniziano con il carattere '#' il preprocessore crea un nuovo "codice sorgente" che è il testo che viene effettivamente compilato questo "codice intermedio" normalmente non viene mandato in output è possibile forzare il compilatore a dare in output questo codice per vedere cosa produce Fondamenti di Informatica 7 Precompilazione La direttiva #include prevede due varianti: #include <nomefile> #include nomefile tale direttiva include il contenuto di un file il file incluso può contenere a sua volte direttive #include nella variante <nomefile> ricerca il file solo negli include delle librerie standard (/usr/include) nella variante nomefile il file nella directory corrente e quindi negli altri path. è possibile specificare path di ricerca aggiuntivi per gli include file tramite opzioni di compilazione Fondamenti di Informatica 8 4

5 Precompilazione La direttiva #define può essere usata per definire macro sostituzioni. #define text1 text2 chiede al preprocessore di trovare tutte le occorrenze di text1 e di sostituirle con text2. Esempio: #define MAX 1000 Si può usare per macro più complesse (con parametri): #define square(x) ((x)*(x)) La direttiva #undef rimuove la definizione di una certa macro. Fondamenti di Informatica 9 Precompilazione Le direttive #if, #elif, #else, #endif informano il preprocessore di compilare solo alcune parti del codice, al verificarsi o meno di opportune condizioni; possono essere utilizzate per creare codice più efficiente e più portabile: #if condition_1 source_block_1 #elif condition_2 source_block_2... #elif condition_n source_block_n #else default_source_block #endif Fondamenti di Informatica 10 5

6 Precompilazione E' possibile testare il valore di macro definite con #define Esempio #define ENGLAND 0 #define ITALY 1 #if ENGLAND # include "england.h" #elif ITALY # include "italy.h" #else # include "default.h" #endif Fondamenti di Informatica 11 Precompilazione E' possibile testare l esistenza, a prescindere dal suo valore di una macro con la direttiva #ifdef(macroname) / #ifndef(macroname) #ifdef(debug) some useful debug code #endif oppure con l espressione #if defined(macroname) #if defined(debug) some useful debug code #endif Fondamenti di Informatica 12 6

7 Precompilazione Uso tipico negli header files per prevenire la doppia inclusione, ad esempio nell header file myheader.h si può scrivere: #if!defined(_myheader_h_included_) #define _myheader_h_included_ contenuto dell header file.. #endif Fondamenti di Informatica 13 Struttura completa di un programma C Ambienti, Variabili globali, Variabili statiche, Dichiarazione e definizioni, Compilazione su più file 7

8 Struttura di un programma File: prova.c #include <stdio.h>... int m; int f(int); int g(int x){... /* ambiente locale a g */ main(){... /* ambiente locale del main */ int f(int x){... /* ambiente locale a f */ Direttive del preprocessore Dichiarazioni variabili globali e dichiarazioni funzioni (prototipi) Definizione di funzioni Definizione main Definizione di funzioni Fondamenti di Informatica 15 Struttura di un programma Il main è l unica parte obbligatoria Le direttive sono gestite dal preprocessore Le variabili globali sono visibili in tutti gli ambienti del programma Fondamenti di Informatica 16 8

9 Ambienti Esistono delle regole di visibilità per gli identificatori (nomi di variabili, di funzioni, costanti) che definiscono in quali parti del programma tali identificatori possono essere usati In un programma esistono diversi ambienti: Area globale Main Ogni singola funzione Ogni blocco (delimitato da { e ) Fondamenti di Informatica 17 Ambienti Ambiente globale Dichiarazioni e definizioni che compaiono a livello esterno ( livello di file ), cioè fuori da qualunque funzione. Ambiente locale Dichiarazioni e definizioni che compaiono all interno di una funzione (compresa la sua intestazione) Ambiente di un blocco Dichiarazioni e definizioni che compaiono in un blocco Le definizioni di funzioni non possono essere innestate in altre funzioni o blocchi. E invece possibile inserire dichiarazioni dentro a funzioni o blocchi. Fondamenti di Informatica 18 9

10 Regole di visibilità (richiami) Un identificatore non è visibile prima della sua dichiarazione Un identificatore definito in un ambiente è visibile in tutti gli ambienti in esso contenuti Se in un ambiente sono visibili due definizioni dello stesso identificatore, la definizione valida è quella dell ambiente più vicino al punto di utilizzo In ambienti diversi si può definire lo stesso identificatore per denotare due oggetti diversi In ciascun ambiente un identificatore può essere definito una sola volta Fondamenti di Informatica 19 Visibilità variabili: considerazioni In C, le variabili della funzione main vivono quanto la funzione main ma non sono visibili in qualunque procedura o funzione, perché il main è una funzione come le altre visibilità delle variabili limitata al blocco in cui sono definite necessità di passarle sempre come parametro alle funzioni che devono usarle Fondamenti di Informatica 20 10

11 Variabili globali: considerazioni Il C consente di definire delle VARIABILI GLOBALI, ossia delle entità definite fuori da qualunque funzione ( a livello di file ) Esempio: int k; /* VARIABILE GLOBALE */ void modify(void){ k++; /* k è visibile qui... */ main(){ modify(); k *= 5; /*...e anche qui! */ Il C si appoggia al concetto di FILE (fornito dal sistema operativo) come contenitore su cui definire le visibilità k è visibile nel file dove è definita, dal punto in cui è definita in avanti (non sopra!) Fondamenti di Informatica 21 Variabili globali e visibilità int k = 5; /* VARIABILE GLOBALE */ int getvalue(void); main(){ ++k; /* ora k vale 6 */ k = getvalue(); /* valore finale di k = 8 */ int n = 8; /* VARIABILE GLOBALE */ int getvalue(void){ return n; la variabile globale n non è visibile nel main solo getvalue può operare su di essa protezione tuttavia, k e n hanno lo stesso tempo di vita, pari a quello dell intero programma Fondamenti di Informatica 22 11

12 Variabili globali e visibilità a differenza delle variabili locali alle funzioni (main inclusa!), le variabili globali sono inizializzate automaticamente a zero, se non diversamente specificato int k; /* VARIABILE GLOBALE = 0 */ ma le inizializzazioni implicite non sono leggibili! preferire sempre le inizializzazioni esplicite! int k = 0; /* VARIABILE GLOBALE */ tanto, le inizializzazioni di variabili globali sono calcolate a compile time nessuna inefficienza! Fondamenti di Informatica 23 Variabili globali e visibilità Una variabile globale può essere nascosta da una variabile locale omonima int k = 5; /* VARIABILE GLOBALE */ int getvalue(void); main(){ ++k; /* ora k vale 6 */ k = getvalue(); /* valore finale di k = 8 */ int n = 7; /* VARIABILE GLOBALE */ int getvalue(void){ int k = 1; return k+n; /* è la variabile k locale */ la variabile k definita entro getvalue nasconde quella globale con lo stesso nome dentro getvalue diventa impossibile accedere alla variabile k globale NB: ovviamente, questa getvalue potrebbe evitare di definire k, per l uso che ne fa... Fondamenti di Informatica 24 12

13 Visibilità variabili locali e globali Riassumendo: Variabili locali e parametri formali sono visibili SOLO all'interno della funzione di cui fanno parte Viceversa, le variabili globali sono visibili ANCHE dentro le funzioni scritte fisicamente di seguito alla definizione della variabile globale stessa, a meno che non siano mascherate da variabili locali omonime Fondamenti di Informatica 25 Variabili globali vs. passaggio dei parametri Le variabili globali rappresentano un altro modo (oltre al classico meccanismo di passaggio dei parametri) con cui far interagire tra loro diversi componenti software: Permettono di restituire in modo diretto i risultati al chiamante. Evitano lunghe liste di parametri (da copiare se passati per valore). ma Fondamenti di Informatica 26 13

14 Variabili globali vs. passaggio dei parametri ma Il componente non è più autonomo: il suo funzionamento dipende dall esistenza, FUORI DA ESSO, di certi simboli con un certo nome Generalità, riusabilità e portabilità diminuiscono Interazione tra i diversi componenti meno chiara Il componente presenta effetti collaterali Si chiama effetto collaterale (side effect) provocato dalla attivazione di una funzione una qualunque modifica delle variabili non locali a tale funzione Se una funzione ha effetti collaterali, non è più tale in senso matematico. L uso di variabili globali rappresenta dunque una scelta di progetto, legata alla rappresentazione del dominio applicativo Fondamenti di Informatica 27 Tempo di vita delle variabili È legato al luogo di definizione della variabile. Variabili globali: sono allocate all'inizio del programma e vengono distrutte quando il programma termina. Variabili locali e parametri formali delle funzioni: sono allocati ogni volta che si invoca la funzione e distrutti al termine della funzione Non c'è correlazione tra i valori che variabili locali e parametri formali di una funzione assumono nelle diverse attivazioni della funzione stessa. Il loro tempo di vita è quindi pari alla durata dell attivazione della funzione in cui compare la definizione della variabile. Fondamenti di Informatica 28 14

15 Ancora sulle variabili globali Le variabili globali possono servire anche per costruire componenti software dotati di stato (vedremo più avanti un modo più sicuro per tale realizzazione) Esempio Si vuole costruire una funzione int prossimodispari(void) che restituisca via via il "successivo" dispari Per fare questo, tale componente deve tenere memoria al suo interno dell'ultimo valore fornito Dunque, non è una funzione in senso matematico, perché, interrogata più volte, dà ogni volta una risposta diversa Fondamenti di Informatica 29 Esempio Si utilizza una variabile globale per mantenere lo stato: int ultimovalore = 0; int prossimodispari(void){ return * ultimovalore++; /* (sfrutta il fatto che i dispari hanno la forma 2k+1) */ int main(){ int i, a; for (i=0; i<30; i++){ a = prossimodispari(); printf( numero dispari: %d\n, a); Fondamenti di Informatica 30 15

16 Ambiente globale e protezione Il fatto che le variabili globali in C siano potenzialmente visibili in tutti i file dell applicazione pone dei problemi di protezione: Cosa succede se un componente dell'applicazione altera una variabile globale essenziale? Nel nostro esempio: cosa succede se qualcuno altera ultimovalore? Fondamenti di Informatica 31 Ambiente globale e protezione Potrebbe essere utile avere variabili: globali nel senso di permanenti come tempo di vita (per poter costruire componenti dotati di stato)... ma anche protette, nel senso che non tutti possano accedervi Variabili statiche Fondamenti di Informatica 32 16

17 Variabili statiche (static) In C, una variabile può essere dichiarata static: è permanente come tempo di vita ma è protetta, in quanto è visibile solo entro il suo scope di definizione Nel caso di una variabile statica globale, ogni tentativo di accedervi da altri file, tramite dichiarazioni extern, sarà impedito dal compilatore Fondamenti di Informatica 33 Esempio rivisitato Realizzazione alternativa del componente precedente static int ultimovalore = 0; int prossimodispari(void){ return * ultimovalore++; /* (sfrutta il fatto che i dispari hanno la forma 2k+1) */ int main(){ int i, a; for (i=0; i<30; i++){ a = prossimodispari(); printf( numero dispari: %d\n, a); Fondamenti di Informatica 34 17

18 Esempio rivisitato In che senso la variabile static è "protetta"? La variabile ultimovalore èora inaccessibile dall'esterno di questo file: l unico modo di accedervi è tramite prossimodispari() Ma in questo esempio, essendo ultimovalore anche variabile globale, è ancora modificabile dalle altre funzioni Fondamenti di Informatica 35 Variabili statiche dentro a funzioni Una variabile statica può essere definita anche dentro a una funzione. Così: è comunque protetta, in quanto visibile solo dentro alla funzione (come ogni variabile locale) ma è anche permanente, in quanto il suo tempo di vita diventa quello dell intero programma Consente di costruire componenti (funzioni) dotati di stato, ma indipendenti dall'esterno Fondamenti di Informatica 36 18

19 Esempio rivisitato (2) Ulteriore realizzazione alternativa del componente int prossimodispari(void){ static int ultimovalore = 0; return * ultimovalore++; /* (sfrutta il fatto che i dispari hanno la forma 2k+1) */ int main(){ int i, a; for (i=0; i<30; i++){ a = prossimodispari(); printf( numero dispari: %d\n, a); Fondamenti di Informatica 37 Variabili statiche: conclusioni Quindi, la parola chiave static ha sempre e comunque due effetti rende l oggetto permanente rende l oggetto protetto (invisibile fuori dal suo scope di definizione) ma se ne vede sempre uno solo per volta una variabile definita in una funzione, che è comunque protetta, viene resa permanente una variabile globale, già di per sé permanente, viene resa protetta Fondamenti di Informatica 38 19

20 Funzioni come componenti software Una funzione è un componente software (servitore) riutilizzabile: costituisce una unità di traduzione: può essere definita in un unico file e compilata per proprio conto pronta per essere usata da chiunque Fondamenti di Informatica 39 Funzioni come componenti software Per usare tale componente software, il cliente: Non ha bisogno di sapere come è fatto (cioè di conoscerne la definizione) Deve conoscerne solo l interfaccia: Nome Numero e tipo dei parametri Tipo del risultato Fondamenti di Informatica 40 20

21 Dichiarazione di funzione La dichiarazione (o prototipo) di una funzione è costituita dalla sola interfaccia, senza corpo (sostituito da un ;) <dichiarazione-di-funzione> ::= <tipovalore> <nome>(<parametri>) ; Fondamenti di Informatica 41 Dichiarazione di funzione Dunque, per usare una funzione non occorre conoscere tutta la definizione basta conoscere la dichiarazione, perché essa specifica proprio il contratto di servizio Fondamenti di Informatica 42 21

22 Dichiarazione di funzione La definizione di una funzione costituisce l effettiva realizzazione del componente: dice come è fatto il componente La dichiarazione specifica il contratto di servizio fra cliente e servitore, esprimendo le proprietà essenziali della funzione. dice come si usa il componente Per usare una funzione non e necessario sapere come è fatta, anzi è controproducente Fondamenti di Informatica 43 Dichiarazione di funzione La dichiarazione specifica: il nome della funzione numero e tipo dei parametri (non necessariamente il nome) il tipo del risultato interfaccia Il nome avrebbe significato solo nell environment della funzione che qui non c è Fondamenti di Informatica 44 22

23 Dichiarazione vs. Definizione La definizione di una funzione costituisce l effettiva realizzazione del componente: Non può essere duplicata Ogni applicazione deve contenere una e una sola definizione per ogni funzione utilizzata La compilazione della definizione genera il codice macchina che verrà eseguito ogni volta che la funzione verrà chiamata. Fondamenti di Informatica 45 Dichiarazione vs. Definizione La dichiarazione di una funzione costituisce solo una specifica delle proprietà del componente: Può essere duplicata senza danni Una applicazione può contenerne più di una La compilazione di una dichiarazione non genera codice macchina Fondamenti di Informatica 46 23

24 Dichiarazione vs. Definizione La definizione è molto più di una dichiarazione definizione = dichiarazione + corpo La definizione funge anche da dichiarazione (ma non viceversa) Fondamenti di Informatica 47 Funzioni e file Un programma C è, in prima battuta, una collezione di funzioni una delle quali è il main Il testo del programma deve essere scritto in uno o più file di testo il file è un concetto del sistema operativo, non del linguaggio C Quali regole osservare? Fondamenti di Informatica 48 24

25 Funzioni e file Il main può essere scritto dove si vuole nel file viene chiamato dal sistema operativo, il quale sa come identificarlo Una funzione, invece, deve rispettare una regola fondamentale di visibilità prima che qualcuno possa chiamarla, la funzione deve essere stata dichiarata altrimenti, si ha errore di compilazione. Fondamenti di Informatica 49 Esempio scorretto (singolo file) File max.c int main() { int m; m = max(5, 8); NOTA: All atto della chiamata, max non è ancora stata definita Errore di compilazione int max (int x, int y ){ if (x>y) return x ; else return y; Fondamenti di Informatica 50 25

26 Esempio corretto (singolo file) File max.c int max (int x, int y ){ if (x>y) return x ; else return y; NOTA: Prima definisco max poi la uso int main() { int m; m = max(5, 8); Fondamenti di Informatica 51 Esempio corretto (singolo file) File max.c int max (int, int); int main() { int m; m = max(5, 8); prototipo OPPURE: Prima dichiaro max tramite un prototipo, poi la uso e dopo la definisco int max (int x, int y ){ if (x>y) return x ; else return y; Fondamenti di Informatica 52 26

27 Altro esempio scorretto File prova.c int f(int x){ if (x > 0) return g(x); else return x; ATTENZIONE: f chiama g e g chiama f Quale definisco prima? int g(int x) { return f(x-2); int main() { int y = f(3); Fondamenti di Informatica 53 Esempio corretto (utilità dei prototipi) int g(int); /* prototipo di g */ int f(int x){ if (x > 0) return g(x); else return x; int g(int x) { return f(x-2); int main() { int y = f(3); Fondamenti di Informatica 54 27

28 Funzioni e file Regola di visibilità prima che qualcuno possa chiamarla, la funzione deve essere stata dichiarata altrimenti, si ha errore di compilazione. Caso particolare: se la definizione funge anche da dichiarazione, la regola è rispettata se la definizione appare prima della chiamata Fondamenti di Informatica 55 Progetti su più file Una applicazione complessa non può essere sviluppata in un unico file: sarebbe ingestibile! Deve necessariamente essere strutturata su più file sorgente compilabili separatamente da fondere poi insieme per costruire l applicazione Fondamenti di Informatica 56 28

29 Progetti su più file Per strutturare una applicazione su più file sorgente, occorre che ogni file possa essere compilato separatamente dagli altri Poi, i singoli componenti così ottenuti saranno legati (dal linker) per costruire l applicazione Affinchè un file possa essere compilato singolarmente, tutte le funzioni usate devono essere dichiarate prima dell uso - non necessariamente definite! Fondamenti di Informatica 57 Esempio su due file File prog.c int max (int, int); int main() { int m; m = max(5, 8); File max.c Dichiarazione della funzione Chiamata della funzione Definizione della funzione int max (int x, int y ){ if (x>y) return x ; else return y; Fondamenti di Informatica 58 29

30 Costruzione di una applicazione a partire da più file 1) Compilare i singoli file che costituiscono l applicazione File sorgente: estensione.c File oggetto: estensione.o o.obj f1.c compilatore f1.obj f2.c compilatore f2.obj f3.c compilatore f3.obj Fondamenti di Informatica 59 Costruzione di una applicazione a partire da più file 2) Collegare i file oggetto fra loro e con le librerie di sistema: File oggetto: estensione.o o.obj File eseguibile: estensione.exe o nessuna f1.obj f2.obj linker prog.exe f3.obj Fondamenti di Informatica 60 30

31 Compilazione di una applicazione Perché la costruzione vada a buon fine: ogni funzione deve essere definita una e una sola volta in uno e uno solo dei file sorgente se la definizione manca, si ha errore di linking ogni cliente che usa una funzione deve incorporare la dichiarazione opportuna se la dichiarazione manca, si ha errore di compilazione nel file del cliente (..forse...!!) Fondamenti di Informatica 61 Header file Per automatizzare la gestione delle dichiarazioni, si introduce il concetto di header file (file di intestazione) contenente tutte le dichiarazioni relative alle funzioni definite nel componente software medesimo scopo: evitare ai clienti di dover trascrivere riga per riga le dichiarazioni necessarie basterà quindi includere l header file tramite una direttiva #include Fondamenti di Informatica 62 31

32 Header file Il file di intestazione (header) ha estensione.h ha (per convenzione) nome uguale al file.c di cui fornisce le dichiarazioni Ad esempio: se la funzione max è definita nel file max.c il corrispondente header file, che i clienti potranno includere per usare la funzione max, dovrebbe chiamarsi max.h Fondamenti di Informatica 63 Esempio (singolo file) Singolo file int max (int x, int y ){ if (x>y) return x ; else return y; int main() { int m; m = max(5, 8); Fondamenti di Informatica 64 32

33 Esempio (due file separati) File prog.c (cliente) int max (int, int); int main() { int m; m = max(5, 8); File max.c (servitore) int max (int x, int y ){ if (x>y) return x ; else return y; Fondamenti di Informatica 65 Esempio (due file separati + header) Per includere automaticamente la dichiarazione occorre introdurre un file header File prog.c (cliente) #include max.h int main() { int m; m = max(5, 8); File max.h (header) int max(int, int); Il file max.c rimane invariato! Fondamenti di Informatica 66 33

34 Riassumendo Convenzione: Se un componente è definito in xyz.c Il file header che lo dichiara, che i clienti dovranno includere, si chiama xyz.h Fondamenti di Informatica 67 Riassumendo struttura dell esempio Struttura finale dell applicazione: un main definito in prog.c una funzione definita in max.c un file header max.h incluso da prog.c max.h prog.c max.c Fondamenti di Informatica 68 34

35 File header Esistono due formati per l inclusione degli header: #include <libreria.h> include l header di una libreria di sistema il sistema sa già dove trovarlo #include "miofile.h" include uno header scritto da noi occorre indicare dove reperirlo (attenzione al formato dei percorsi..!!) Fondamenti di Informatica 69 35

STRUTTURA DI UN PROGRAMMA!

STRUTTURA DI UN PROGRAMMA! STRUTTURA DI UN PROGRAMMA! File prova1.c Area globale #include ... int m; int f(int); int g(int x){.../*ambiente locale a g*/} int main(){...} int f(int x){.../*ambiente locale a f*/} Direttive

Dettagli

STRUTTURA DI UN PROGRAMMA

STRUTTURA DI UN PROGRAMMA STRUTTURA DI UN PROGRAMMA File prova1.c #include ... int m; int f(int); int g(int x){ Area globale Direttive Dichiarazioni globali e prototipi di funzioni Definizioni di funzioni.../*ambiente

Dettagli

f2.obj compilatore compilatore linker f3.obj compilatore

f2.obj compilatore compilatore linker f3.obj compilatore ...quando il gioco si fa duro Sono considerate applicazioni i i di piccola dimensione, applicazioni con qualche migliaio di linee di codice Un applicazione anche di piccola dimensione non può essere sviluppata

Dettagli

Progetti su più File Sorgenti

Progetti su più File Sorgenti Progetti su più File Sorgenti Sono considerate applicazioni di piccola dimensione, applicazioni con qualche migliaio di linee di codice Un applicazione anche di piccola dimensione non può essere sviluppata

Dettagli

deve conoscerne solo l interfaccia:

deve conoscerne solo l interfaccia: Progetti su più File Sorgenti Sono considerate applicazioni i i di piccola dimensione, applicazioni con qualche migliaio di linee di codice Un applicazione anche di piccola dimensione non può essere sviluppata

Dettagli

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali AMBIENTE LOCALE E GLOBALE In C, ogni funzione ha il suo ambiente locale che comprende i parametri e le variabili definite localmente alla funzione Esiste però anche un ambiente globale: quello dove tutte

Dettagli

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali AMBIENTE LOCALE E GLOBALE In C, ogni funzione ha il suo ambiente locale che comprende i parametri e le variabili definite localmente alla funzione Esiste però anche un ambiente globale: quello dove tutte

Dettagli

PROGETTI SU PIU` FILE

PROGETTI SU PIU` FILE PROGETTI SU PIU` FILE Un applicazione complessa non può essere fatta in un unico file.c: sarebbe ingestibile Meglio dividerla in vari moduli, che si occupano di aspetti diversi Ordinamento Interfaccia

Dettagli

per costruire specifici componenti software

per costruire specifici componenti software VARIABILI LOCALI & Come è noto, in C le variabili possono essere: locali, se definite dentro a una funzione (inclusi i parametri) tempo di vita = l attivazione della funzione visibilità = entro la funzione

Dettagli

Esiste però anche un ambiente globale:! quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali!

Esiste però anche un ambiente globale:! quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali! In C, ogni funzione ha il suo ambiente locale che comprende i parametri e le variabili definite localmente alla funzione" Esiste però anche un ambiente globale:! quello dove tutte le funzioni sono definite.

Dettagli

PROCEDURE. Una procedura permette di. void p(int x) { x = x * 2; printf( %d, x); }

PROCEDURE. Una procedura permette di. void p(int x) { x = x * 2; printf( %d, x); } PROCEDURE Una procedura permette di dare un nome a una istruzione rendendola parametrica non denota un valore, quindi non c è tipo di ritorno void void p(int x) { x = x * 2; printf( %d, x); } 1 PROCEDURE

Dettagli

PROCEDURE. Una procedura permette di. void p(int x) { x = x * 2; printf( %d, x); }

PROCEDURE. Una procedura permette di. void p(int x) { x = x * 2; printf( %d, x); } PROCEDURE Una procedura permette di dare un nome a una istruzione rendendola parametrica non denota un valore, quindi non c è tipo di ritorno void void p(int x) { x = x * 2; printf( %d, x); } 1 PROCEDURE

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità 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

Dettagli

Preprocessore, linker e libreria standard

Preprocessore, linker e libreria standard Preprocessore, linker e libreria standard Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 IL PREPROCESSORE Programma sorgente

Dettagli

Preprocessore, linker e libreria standard

Preprocessore, linker e libreria standard Preprocessore, linker e libreria standard Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 IL PREPROCESSORE Programma sorgente

Dettagli

Perché il linguaggio C?

Perché 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

Dettagli

FUNZIONI. Esempi (pseudo-c): dare un nome a una espressione rendere tale espressione parametrica. float f(){ * sin(0.75); } float f1(int x) {

FUNZIONI. Esempi (pseudo-c): dare un nome a una espressione rendere tale espressione parametrica. float f(){ * sin(0.75); } float f1(int x) { Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione

Dettagli

Una funzione riceve dati di ingresso in corrispondenza ai parametri

Una funzione riceve dati di ingresso in corrispondenza ai parametri FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione

Dettagli

Perché il linguaggio C?

Perché 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

Dettagli

FUNZIONI. Esempi (pseudo-c): dare un nome a una espressione rendere tale espressione parametrica. float f(){ * sin(0.75); } float f1(int x) {

FUNZIONI. Esempi (pseudo-c): dare un nome a una espressione rendere tale espressione parametrica. float f(){ * sin(0.75); } float f1(int x) { Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione

Dettagli

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Sistema C e organizzazione del codice Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Un programma C è costituito da un insieme

Dettagli

FUNZIONI COME COMPONENTI SW FUNZIONI COME COMPONENTI SW FUNZIONI MODELLO CLIENTE/SERVITORE

FUNZIONI COME COMPONENTI SW FUNZIONI COME COMPONENTI SW FUNZIONI MODELLO CLIENTE/SERVITORE FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione

Dettagli

FUNZIONI FUNZIONI COME COMPONENTI SW

FUNZIONI FUNZIONI COME COMPONENTI SW FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione

Dettagli

Le direttive del Preprocessore

Le direttive del Preprocessore Le direttive del Preprocessore Prof. Orazio Mirabella Direttive Un compilatore traduce le istruzioni di un programma sorgente in linguaggio macchina Talvolta è conveniente prendere coscienza dell esistenza

Dettagli

Unix e comandi di base

Unix e comandi di base Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Unix e comandi di base Lab19 1 Unix - Shell dei comandi Es. 1 Utilizzando il comando ls Elencare a video il contenuto

Dettagli

FUNZIONI FUNZIONI COME COMPONENTI SW

FUNZIONI FUNZIONI COME COMPONENTI SW FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema. Una funzione permette di dare un nome a una espressione rendendola parametrica

Dettagli

Il linguaggio C Funzioni e procedure

Il linguaggio C Funzioni e procedure Il linguaggio C Funzioni e procedure modello cliente-servitore risultato Ambiente condiviso cliente servitore richiesta di servizio Sottoprogrammi Spesso può essere utile avere la possibilità di costruire

Dettagli

Introduzione al C. Unità 10 Preprocessore

Introduzione al C. Unità 10 Preprocessore Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 10 Preprocessore D. Bloisi, A. Pennisi, S. Peluso, S. Salza Processo di compilazione

Dettagli

FUNZIONI COME COMPONENTI SW FUNZIONI COME COMPONENTI SW FUNZIONI MODELLO CLIENTE/SERVITORE

FUNZIONI COME COMPONENTI SW FUNZIONI COME COMPONENTI SW FUNZIONI MODELLO CLIENTE/SERVITORE FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione

Dettagli

Introduzione al C. Unità 10 Preprocessore. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Introduzione al C. Unità 10 Preprocessore. D. Bloisi, S. Peluso, A. Pennisi, S. Salza Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 10 Preprocessore D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Processo

Dettagli

Lab 01 Introduzione a Codelite

Lab 01 Introduzione a Codelite Fondamenti di Informatica e Laboratorio T-AB e Fondamenti di Informatica T1 Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2011/2012 Lab 01 Introduzione a Codelite Lab01

Dettagli

Il preprocessore. Direttiva define Direttiva include Direttiva if

Il preprocessore. Direttiva define Direttiva include Direttiva if Il preprocessore Direttiva define Direttiva include Direttiva if Il preprocessore Il preprocessore è un processore di testi che elabora il contenuto di un file sorgente prima della compilazione vera e

Dettagli

PER UTILIZZARE LCC IN LAB

PER UTILIZZARE LCC IN LAB PER UTILIZZARE LCC IN LAB La prima volta che un utente utilizza lcc-win32 deve impostare una chiave nel registro utente. Per fare questo occorre semplicemente: Aprire con il gestione risorse la cartella

Dettagli

Funzionalità. Il preprocessore C. Inclusione di file. Inclusione di file

Funzionalità. Il preprocessore C. Inclusione di file. Inclusione di file Il preprocessore C Ver. 2.4 Funzionalità Modifica il codice C prima che venga eseguita la traduzione vera a propria Le direttive al preprocessore riguardano: inclusione di file (#include) definizione di

Dettagli

Lezione 19: Il preprocessore

Lezione 19: Il preprocessore Lezione 19: Il preprocessore Vittorio Scarano Corso di Laurea in Informatica Università di Salerno Struttura della lezione Il debugger gdb Il preprocessore direttive #include e #define macro con parametri

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

Esempi (pseudo-c):! float f(){ * sin(0.75); } float f1(int x) { 2 + x * sin(0.75); } Esempio

Esempi (pseudo-c):! float f(){ * sin(0.75); } float f1(int x) { 2 + x * sin(0.75); } Esempio Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema! Una funzione permette di"! dare un nome a una espressione!! rendere tale espressione

Dettagli

Il linguaggio C. Il preprocessore...

Il linguaggio C. Il preprocessore... Il linguaggio C Il preprocessore... 1 Il preprocessore Viene invocato prima della compilazione vera e propria Esegue delle manipolazioni testuali sul file sostituisce nomi con testo elimina e inserisce

Dettagli

#include <stdio.h> main() { - 1 -

#include <stdio.h> main() { - 1 - Un primo esempio di programma Ogni programma C deve contenere una funzione speciale chiamata main che indica il punto in cui inizia l esecuzione del programma. La funzione main è unica all interno di ogni

Dettagli

prova.c #include <stdio.h> char funzione(char); codice oggetto del main()

prova.c #include <stdio.h> char funzione(char); codice oggetto del main() prova.c #include char funzione(char); {char c= a ; printf( Ecco il carattere: %c\n,c); c=funzione(c); printf( Ecco il carattere modificato: %c\n,c); char funzione(char tmp) {if(tmp

Dettagli

Linguaggio di Riferimento: C

Linguaggio di Riferimento: C Programmazione procedurale Linguaggio di Riferimento: C 1 Linguaggio macchina Il linguaggio macchina costituisce la forma espressiva atta a descrivere programmi e ad essere direttamente interpretata dall

Dettagli

Introduzione al linguaggio C Funzioni

Introduzione al linguaggio C Funzioni Introduzione al linguaggio C Funzioni Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati

Dettagli

C: primi elementi. Lezione 4

C: primi elementi. Lezione 4 C: primi elementi Lezione 4 Evoluzione del BCPL (1967) e B (1970), entrambi typeless Sviluppato da Dennis Ritchie nel 1972 ed implementato per il PDP-11 Usato per lo sviluppo del sistema operativo UNIX

Dettagli

Lezione 5: Introduzione alla programmazione in C

Lezione 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

Dettagli

Il linguaggio C. Il preprocessore...

Il linguaggio C. Il preprocessore... Il linguaggio C Il preprocessore... C : un semplice programma Il più semplice programma C è costituito da una singola funzione (main) memorizzata in un singolo file C : un semplice programma (2) DIRETTIVE

Dettagli

Cenni sul preprocessore e il suo utilizzo

Cenni sul preprocessore e il suo utilizzo Alessio Bechini - Corso di - Cenni sul preprocessore e il suo utilizzo Il preprocessore: cenni Il preprocessore Storicamente, i compilatori C operavano con passaggi multipli. Il primo passaggio eseguiva

Dettagli

Preprocessore. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi

Preprocessore. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi Corso di Laboratorio di Informatica Ingegneria Clinica BCLR Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica,

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Passare argomenti al programma

Passare 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

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Programmazione modulare (top-down) Fondamenti di Informatica 15. Funzioni in C++ (parte 1) Problemi complessi Conviene suddividere il programma in sottoprogrammi piu semplici mediante la metodologia di

Dettagli

MS Visual Studio: Linea di Comando

MS Visual Studio: Linea di Comando MS Visual Studio: Linea di Comando Aprire una shell di DOS tramite: Start MS VisualStudio 2010 Visual Studio Tools è una normale shell di DOS con aggiunte al path ed alle variabili d ambiente Digitare

Dettagli

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati Caratteristiche Il Linguaggio C Linguaggio sequenziale (lineare), imperativo, strutturato a blocchi usabile anche come linguaggio di sistema software di base sistemi operativi compilatori... FI - Algoritmi

Dettagli

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define Primo passo: il preprocessor Source code Preprocessor Pre-processed source code Compiler Libraries Linker Executable code 1 Il preprocessore Il preprocessore compie delle manipolazioni sul codice del programma.

Dettagli

Complementi. - 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 - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

C funzioni à scope di variabili

C funzioni à scope di variabili C funzioni à scope di variabili Per questo motivo il parametro di una function può avere lo stesso nome del parametro effettivo del processo chiamante. Possiamo definire anche delle variabili globali e

Dettagli

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22 Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Introduzione alle lezioni in laboratorio Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti

Dettagli

Funzioni come parametri

Funzioni 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

Dettagli

Complementi. - 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 - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

Il linguaggio C. Notate che...

Il 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

Dettagli

Struttura di un. Struttura dei programmi C

Struttura di un. Struttura dei programmi C Parte 4 Struttura di un Programma Struttura dei programmi C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume in un file): 1. Una parte contenente direttive

Dettagli

Esercitazione. Uso di funzioni e librerie di funzioni

Esercitazione. Uso di funzioni e librerie di funzioni Esercitazione Uso di funzioni e librerie di funzioni Prof. Paolo Mancarella Informatica I Corso di Laurea in Fisica A.A. 2007/2008 1 Uso di funzioni e librerie di funzioni Funzioni 1.1 Funzioni Il meccanismo

Dettagli

passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in

passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in I Parametri di tipo vettore I Il meccanismo del passaggio per valore di un indirizzo consente il passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad

Dettagli

Client - Interfaccia - Implementazione

Client - Interfaccia - Implementazione Client - Interfaccia - Implementazione Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Ambienti di Programmazione per il Software di Base

Ambienti 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

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Corso di Fondamenti di Informatica L-B

Corso di Fondamenti di Informatica L-B Università degli Studi di Bologna Facoltà di Ingegneria Corso di Fondamenti di Informatica L-B Corso di Laurea in Ingegneria delle Telecomunicazioni Prof. Rebecca Montanari Anno accademico 2002/2003 Introduzione

Dettagli

Primi passi col linguaggio C

Primi 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

Dettagli

Allocazione dinamica della memoria

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

Dettagli

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo

Dettagli

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

Dettagli

I/O da tastiera e direttive processore. Alessandra Giordani Lunedì 3 maggio

I/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

Dettagli

Lezione 8: Stringhe ed array multidimensionali

Lezione 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

Dettagli

COSTRUZIONE DI UN APPLICAZIONE

COSTRUZIONE DI UN APPLICAZIONE COSTRUZIONE DI UN APPLICAZIONE Per costruire un applicazione occorre: compilare il file (o i file se più d uno) che contengono il testo del programma (file sorgente) Il risultato sono uno o più file oggetto.

Dettagli

Linea di comando. Compilazione. Aprire una shell di DOS tramite:

Linea di comando. Compilazione. Aprire una shell di DOS tramite: Linea di comando Aprire una shell di DOS tramite: Start MS VisualStudio 2005 Visual Studio Tools E una normale shell di DOS con aggiunte al path ed alle variabili d ambiented Digitare cl /? per vedere

Dettagli

C: panoramica. Violetta Lonati

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

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C Materiale disponibile sul sito http://www.fisica.unile.it/~martello/corsi/dottorato/tecnooo/tecnooo_03-04/index.html

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

Uso di GCC da riga di comando

Uso di GCC da riga di comando Uso di GCC da riga di comando Stefano Ferrari Università degli Studi di Milano stefanoferrari@unimiit Programmazione anno accademico 2016 2017 Shell La shell è una interfaccia utente per accedere ai servizi

Dettagli

Sunto della scorsa lezione Il linguaggio C. Un Programma con Errori. Il preprocessore. Linguaggi di Programmazione I.

Sunto della scorsa lezione Il linguaggio C. Un Programma con Errori. Il preprocessore. Linguaggi di Programmazione I. Sunto della scorsa lezione 06-10-2003 Il linguaggio C Matricole 2-3 Un programma C è un insieme di funzioni. La funzione è sempre presente Una funzione è un insieme di istruzioni racchiuse tra ogni istruzione

Dettagli

Linguaggio C: Variabili e assegnamento e semplici comandi di I/O

Linguaggio C: Variabili e assegnamento e semplici comandi di I/O Linguaggio C: Variabili e assegnamento e semplici comandi di I/O Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Un programma

Dettagli

Primi passi Output formattato Le quattro operazioni. Programmazione 1. Lezione 2 Parte 2. Vincenzo Marra.

Primi passi Output formattato Le quattro operazioni. Programmazione 1. Lezione 2 Parte 2. Vincenzo Marra. Programmazione 1 Lezione 2 Parte 2 Vincenzo Marra vincenzo.marra@unimi.it Dipartimento di Matematica Federigo Enriques Università degli Studi di Milano 12 marzo 2014 Struttura del sorgente Un programma

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione 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

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 4 24/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University

Dettagli

Fondamenti di Informatica II 3. Funzioni in C++ (parte 1)

Fondamenti di Informatica II 3. Funzioni in C++ (parte 1) Introduzione alle funzioni in C++ Fondamenti di Informatica II 3. Funzioni in C++ (parte 1) Corso di Laurea in Ingegneria Informatica A.A. 2008-2009 2 Semestre Corso (A-M) int main() int n, fattoriale=1;

Dettagli

Funzioni in C. Architetture multi-componente

Funzioni in C. Architetture multi-componente Funzioni in C Architetture multi-componente In generale, una applicazione informatica complessa è organizzata come insieme di componenti software che cooperano per raggiungere un fine comune. Ogni componente

Dettagli

Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio:

Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio: Variabili locali Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. void leggivettore(int v[], int dim) int i; /* i E UNA VARIABILE LOCALE */ for (i

Dettagli

Strategie di programmazione

Strategie 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

Dettagli

10. Visibilità e tempo di vita delle variabili. Andrea Marongiu Paolo Valente

10. Visibilità e tempo di vita delle variabili. Andrea Marongiu Paolo Valente 10. Visibilità e tempo di vita delle variabili Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente Ripasso dichiarazioni oggetti Finora abbiamo scritto le dichiarazioni di variabili e costanti con

Dettagli