Laboratorio di Linguaggi lezione IX Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.

Slides:



Advertisements
Presentazioni simili
Laboratorio di Linguaggi lezione I: "Hello, world!" Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Advertisements

Laboratorio di Linguaggi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica.
comunità della pianura bresciana
Università degli Studi di Milano - Bicocca Corso di Laurea Magistrale in Teoria e tecnologia della comunicazione Nuovo regolamento didattico per lA.A.
Università degli Studi di Milano - Bicocca Corso di Laurea Magistrale in Teoria e tecnologia della comunicazione Nuovo regolamento didattico per lA.A.
Sistemi informativi e documentazione giuridica italiana Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di laurea in Informatica Anno Accademico.
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Istruzioni iterative For, while.
Laboratorio di Linguaggi lezione IV: tipi definiti dallutente Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 prove.
Laboratorio di Linguaggi lezione VI: puntatori 2/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione VI Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione I: "Hello, world!" Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 prove generali.
Laboratorio di Linguaggi lezione VIII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Laboratorio di Linguaggi lezione III Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Laboratorio di Linguaggi lezione II Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi note sull'uso dell' IDE DevC++ Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione VII: puntatori 3/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione VIII B: Puntatori e Pasticci Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione IX: Dentro le Librerie Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Laboratorio di Linguaggi lezione III: tipi base, espressioni, type-cast Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Laboratorio di Linguaggi lezione V: puntatori (1/3) Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Laboratorio di Linguaggi lezione III Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Laboratorio di Linguaggi lezione XI: I/O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Laboratorio di Linguaggi lezione IX: tipi ricorsivi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2007/08.
Laboratorio di Linguaggi lezione II Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Università degli Studi di Firenze
Prof. Cerulli – Dott.ssa Gentili
UNIVERSITÀ DEGLI STUDI DI BARI
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Prof. Cerulli – Dott.ssa Gentili
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
UNIVERSITÀ DEGLI STUDI DELLINSUBRIA Facoltà di Scienze matematiche, fisiche e naturali Corso di Laurea in SCIENZE DELLA COMUNICAZIONE Dott. Nicola AMATO.
UNIVERSITA' DEGLI STUDI DI MILANO Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Analisi, progettazione e realizzazione.
AMBIENTE E RIUTILIZZO Scuola Media Carozzi - laboratorio di informatica.
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Istruzioni iterative For, while.
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Statistica e Informatica per la Gestione e l’Analisi dei Dati
Lezione 3 Elementi di teoria delle variabili casuali Insegnamento: Statistica Corso di Laurea Magistrale in Matematica Facoltà di Scienze, Università di.
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Laboratorio di Linguaggi... altre D O M A N D E ! Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
LICEO SCIENTIFICO STATALE “J. DA Ponte”
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Laboratorio di Linguaggi lezione XI Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Facoltà di Scienze Matematiche Fisiche e Naturali Corso di laurea triennale in Scienze Biologiche “Papilloma virus umano: relazione tra ciclo vitale e.
ELABORATO FINALE “Analisi comparativa dei profili elettroforetici delle proteine sieriche di diverse specie animali” FACOLTA’ DI SCIENZE MATEMATICHE, FISICHE.
SISTEMI INFORMATIVI AZIENDALI I° biennioII° biennioultimo anno 1^2^3^4^5^ Lingua e letteratura italiana44444 Lingua inglese33333 Storia, Cittadinanza.
UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI LETTERE E FILOSOFIA, SCIENZE POLITICHE, GIURISPRUDENZA, INGEGNERIA, ECONOMIA CORSO DI LAUREA SPECIALISTICA IN.
Corso di Laurea Triennale in Relazioni Economiche Internazionali Facoltà di Scienze Politiche, Sociologia, Comunicazione Prova Finale di Laurea Triennale.
Transcript della presentazione:

Laboratorio di Linguaggi lezione IX Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2004/05

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Espressioni e operatori operatori su numeri -+*/ % >><<&| ==>=<=> < ||&&! != ==!= - + operatori relazionali operatori logici (booleani) unari binari

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Operatori Logici In C la semantica degli operatori logici e' lazy if ((x<5)&&(fscanf(f,"-%c",&c)) ) {... }

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Assegnamenti Assegnamento base = =

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Left values: oggetti dotati di indirizzo Cosa e un left value –una variabile –una espressione di tipo puntatore... deferenziata –un elemento di un vettore –un campo di una variabile di tipo struct Non sono left values: –qualunque altra espressione –(costanti, risultati di operazioni, etc) Test mentale: –posso metterla a sinistra di un assegnamento?

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Left values: oggetti dotati di indirizzo Esempi: –quali sono left values? v[3] v[3+x] 5 const int N=5; int v[15]; int x,y; int * p; Persona r; p *p N x x/5 &x *(p+10) &p (*p) + 10 v[x]+3 5+x&x + 2 *((&x)+2) r r.nome r.eta + 5 x + y

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Left values: Solo un left-value puo' : –essere usato a sx di un assegnamento –subire loperatore –subire operatori di modifica che mutano il valore &

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Operatori unari di modifica operatori su numeri -+*/ % >><<&| ==>=<=> < ||&&! != ==!= - + operatori relazionali operatori logici (booleani) unari binari x+=3; x>>=1; x=x+3; x = x >> 1; -=+=*=/= %=%= >>=<<=&=|= operatori di modifica (scorciatoie sintattiche)

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Operatori unari di modifica incremento - decremento x++x-- ++x--x l'espressione vale il valore non ancora incrementato / decrementato ("prima usa il valore, poi incrementa / decrementa la variabile") l'espressione vale il valore già incrementato / decrementato ("prima incrementa / decrementa la variabile, poi usa il valore ")

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Assegnamenti Assegnamento base = = tipo T 0 tipo T 1 typecast automatico se T 0 diverso da T 1 (ma solo se esiste una conversione automatica). Ma e' sempre meglio (piu' chiaro) usare un typecast esplicito!

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Assegnamenti Assegnamento base = = tipo T 0 tipo T 1 expr di tipo T 0 typecast automatico se T 0 diverso da T 1 (ma solo se esiste una conversione automatica). Ma e' sempre meglio (piu' chiaro) usare un typecast esplicito! x = y = z = 10;

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Esercizio Non esiste il tipo bool Come si puo fare ad aggiungerlo? –in modo che sia possibile scrivere, per esempio: Bool b; int x; int main(){ b = ( x == 0); if (b) {... }; b = !b; } Bool b0,b1,b2 = TRUE; int main(){... b0 = b1 && b2; while (b0) {... }

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Esercizio: alcune soluzioni soluzione 1: soluzione 2: soluzione 3: typedef enum {FALSE, TRUE} Bool; typedef int Bool; const Bool TRUE = 1; const Bool FALSE = 0; #define Bool int #define TRUE 1 #define FALSE 0 Bool b; int x; int main(){ b = ( x == 0); if (b) {... }; b = !b; } Bool b0,b1,b2 = TRUE; int main(){... b0 = b1 && b2; while (b0) {... }

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a file "bool.h" E' gia' una micro-libreria ! typedef enum {FALSE, TRUE} Bool; Bool b; int x; int main(){ b = ( x == 0); if (b) {... }; b = !b; } Bool b0,b1,b2 = TRUE; int main(){... b0 = b1 && b2; while (b0) {... } #include "bool.h"

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Inclusione files #include "bool.h" Due sintassi diverse per "includere" un file #include "inserisci un file che fa parte di questo progetto" (il file verrà cercato nella directory corrente) "inserisci una una libreria esterna" (il file verrà cercato nelle apposite "directories di libreria")

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Inclusione files

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Diamo una occhiata

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Definizioni e dichiarazioni int potenza (int b, int e) { int res=1, i; for (i=1; i<=e; i++) { res = res * b; } return res; } tipo del risultato: intero (output della funzione) lista dei parametri formali, ciascuno preceduto dal tipo (input della funzione) corpo della funzione cosa fa un blocco delimitato da {} comando return: restituzione del risultato, e uscita dalla funzione ci deve essere! variabili locali qui, due visibili solo nel corpo della funzione. dichiarate allinizio! nome (identificatore) della funzione: potenza

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Definizioni e dichiarazioni int potenza (int b, int e) { int res=1, i; for (i=1; i<=e; i++) { res = res * b; } return res; } int potenza (int b, int e); dichiarazione della funzione o prototipo della funzione - "tutto quello che serve sapere per usare la funzione (a scatola chiusa)" definizione della funzione o implementazione della funzione - "le istruzioni dettagliate per eseguire la funzione"

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Definizioni e dichiarazioni Esempio int potenza (int b, int e) { int res=1, i; for (i=1; i<=e; i++) { res = res * b; } return res; } int main(){ int x; x = potenza(5, 6); }

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Definizioni e dichiarazioni Esempio: invertiamo l'ordine per capriccio int main(){ int x; x = potenza(5, 6); } int potenza (int b, int e) { int res=1, i; for (i=1; i<=e; i++) { res = res * b; } return res; } errore in compilazione: identificatore sconosciuto: "potenza"

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Definizioni e dichiarazioni Esempio int potenza (int b, int e ); int main(){ int x; x = potenza(5, 6); } int potenza (int b, int e) { int res=1, i; for (i=1; i<=e; i++) { res = res * b; } return res; } (i nomi dei parametri formali si possono anche omettere)

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a file " main.c " file " potenze.c " Progetti a piu' files Schema #include "potenze.h" int main(){ int x; x = potenza(5, 6); } int potenza(int b,int e) { int res=1, i; for (i=1; i<=e; i++) { res = res * b; } return res; } file " potenze.h " int potenza(int b,int e); #include "potenze.h"

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Struttura della compilazione main.c potenze.c potenze.h pre- process. file precomp. 1 compiler object file main.o pre- process. file precomp. 3 compiler object file potenze.o eseguibile finale exec.exe linker

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Con DevC++ Tasto destro sul progetto

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Con DevC++

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Con DevC++

M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i / 0 5 U n i v e r s i t à d e l l I n s u b r i a Con DevC++ Ripentendo per potenza.h si ottiene: nota: "compile" VS "build" (anche: "make")