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

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

Laboratorio di Linguaggi lezione I: "Hello, world!" Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica.
Una applicazione complessa non può essere sviluppata in un unico file: sarebbe ingestibile! Deve necessariamente essere strutturata su più file sorgente.
Introduzione al linguaggio C
Code::Blocks Ambiente di sviluppo.
Code::Blocks Ambiente di sviluppo.
I linguaggi di programmazione
Introduzione al linguaggio C
Concetti di base: header file, funzione main(),set caratteri C++, token, operatori, espressioni etc. Flusso di controllo, cicli, costrutti.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Laboratorio di Linguaggi lezione IV: tipi definiti dallutente Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di.
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.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione IX Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
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.
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 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.
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.
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.
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 III: tipi base, espressioni, type-cast Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e.
Laboratorio di Linguaggi lezione V: puntatori (1/3) Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
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.
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica
Introduzione al linguaggio C++ 5 lezioni
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Corso di Informatica Applicata Lezione 6
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Argomenti Direttive di Preprocessore: Compilazione Condizionale
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Espressioni condizionali
Laboratorio di informatica 1
PROGRAMMARE IN C Un ambiente di sviluppo `e un software che serve per scrivere ed eseguire programmi. Generalmente integra almeno 3 funzionalita’: Editor:
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
Unità Didattica 1 Linguaggio C
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Anno accademico Le istruzioni di controllo in C.
Programmazione in linguaggio C
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Sistemi e Tecnologie Informatiche Verifica di correttezza di un programma.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
Scrivere e compilare programmi
Concetti Fondamentali sulla Programmazione
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Il preprocessore. 2 Viene invocato dal gcc prima della compilazione vera e propria ( cpp ) Esegue delle manipolazioni testuali sul file –sostituisce.
1 Laboratorio di Programmazione di Sistema - C Susanna Pelagatti Ricevimento: Me ,
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.
Fabio Scotti – Università degli Studi di Milano 1 Lezione 1 e 2 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
Laboratorio di Linguaggi lezione XI Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Laboratorio di Linguaggi lezione II Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Università di Ferrara Facoltà di Ingegneria Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B Rita Riccardo
Transcript della presentazione:

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

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 / U n i v e r s i t à d e l l I n s u b r i a Laboratorio di Linguaggi docente: Marco Tarini ricevimento: Mercoledì 11: :00 o anche su appuntamento libro di testo consigliato: Kelley Al, Pohl Ira: "C Didattica e Programmazione" ("A Book on C") quarta edizione - anche la terza va bene

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 / U n i v e r s i t à d e l l I n s u b r i a Laboratorio di Linguaggi Pagina del corso: – (oppure: google for "Marco Tarini" => "Teaching" => "Linguaggi-07")

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 / U n i v e r s i t à d e l l I n s u b r i a Laboratorio di Linguaggi piccola guida pratica di C –guida essensiale di alcuni emementi di C v = argomanto già trattato

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 / U n i v e r s i t à d e l l I n s u b r i a Prima di andare avanti in questi lucidi le reserved words sono in blu! –non si possono usare per gli identificatori –ma, ricordiamoci, il C è case sensitive " " non si è un nome lecito per una nuova var, ma " " si. int potenza (int b, int e) { int res=1, i; for (i=1; i<=e; i++) { res = res * b; } return res; } int Int

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 / U n i v e r s i t à d e l l I n s u b r i a Passaggio di parametri Sempre per copia –mai per riferimento ! –esempio... void raddoppia (int x) { x = x*2; } int main(){ int incassi = 5; raddoppia( incassi );... } –...di errore – nota: compila perfettamente!

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 / U n i v e r s i t à d e l l I n s u b r i a Commenti Usare /* e */ per delimitare i commenti int main(){ /* commento ansi C */ int x=10,y; while (x<6) {... }; /* commento ansi C lungo due righe */ y = x / 2; // tentativo di commento } commento stile C++ facile che non vada bene per il vs compilatore C non ANSI !

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 / U n i v e r s i t à d e l l I n s u b r i a Commento sui Commenti Usetali ! /* funzione potenza: dati due numeri interi B e E restituisce (B elevato alla E) */ int potenza (int b, int e) { int res=1, i; for (i=1; i<=e; i++) { res = res * b; } return res; } int main(){ int base=10, milione; /* modo scemo di calcolare un milione */ milione = potenza( base, 6); /*resto del codice... */ }

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 / U n i v e r s i t à d e l l I n s u b r i a Un programma completo il famigerato "hello world" #include int main(int argc, char *argv[]) { printf("Ciao Mondo!\n"); return 0; } printf = scrivi sullo STANDARD OUTPUT (esempio di funzione che NON fa parte del core del lingauggio, è definito in stdio.h) dichiaria che verranno usate due librerie standard: standard Input Output e Standard Library

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 / U n i v e r s i t à d e l l I n s u b r i a Compilazione (build) file main.c #include int main(int argc, char *argv[]) { printf("Ciao Mondo!\n"); return 0; } sorgente ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? COMPILAZIONE main.exe binario C:\> main.exe C:\> Ciao Mondo! C:\> ESECUZIONE

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 / U n i v e r s i t à d e l l I n s u b r i a Cosa è successo esattamente quando abbiamo "complilato" il progetto? Source File "main.c" precompilatore file precomp. compiler object file "main.o" Solo operazioni sintattiche: –inclusioni di files di header –risoluzioni delle macro –codici alternativi per esempio, per le varie piattaforme La compilazione vera e propria in Cancora in C (quasi) linguaggio macchia

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 / U n i v e r s i t à d e l l I n s u b r i a Cosa fa il precompilatore 1/3 precompilator const int LIRE_PER_EURO = 1955; int da_euri_a_lire (int euri) { return euri * LIRE_PER_EURO; } Inclusione file di header file cambi.h const int LIRE_PER_EURO = 1955; file main.c #include "cambi.h" int da_euri_a_lire (int euri) { return euri * LIRE_PER_EURO; }

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 / U n i v e r s i t à d e l l I n s u b r i a Cosa fa il precompilatore 1/3 precompilator const int LIRE_PER_EURO = 1955; pernacchia :P prrrrrr int da_euri_a_lire (int euri) { return euri * LIRE_PER_EURO; } Inclusione file di header file cambi.h const int LIRE_PER_EURO = 1955; pernacchia :P prrrrrr file main.c #include "cambi.h" int da_euri_a_lire (int euri) { return euri * LIRE_PER_EURO; } pura, meccanica, manipolazione sintattica !

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 / U n i v e r s i t à d e l l I n s u b r i a Cosa fa il precompilatore 2/3 Sostituzioni delle macro (costanti simboliche) –puramente sintattiche! #define LIMIT 10 int main() {... if (x < LIMIT) {... } else {... }... } # = istruzione per il preprocessore: >

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 / U n i v e r s i t à d e l l I n s u b r i a Cosa fa il precompilatore 2/3 Sostituzioni delle macro (costanti simboliche) –puramente sintattiche! #define LIMIT 10 int main() {... if (x < LIMIT) {... } else {... }... } precompilator int main() {... if (x < 10) {... } else {... }... }

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 / U n i v e r s i t à d e l l I n s u b r i a Cosa fa il precompilatore 2/3 Sostituzioni delle macro (costanti simboliche) –puramente sintattiche! #define LIMIT x int main() {... if (LIMIT < 10) {... } else {... }... } precompilator int main() {... if (x < 10) {... } else {... }... }

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 / U n i v e r s i t à d e l l I n s u b r i a Cosa fa il precompilatore 3/3 Costrutti condizionali –statici, fatti prima del compilatore! #define DEBUG 1 int fattoriale(int a) { int res=1; #if DEBUG printf("valore di a:%d \n",a); #endif while (a>1) { res*= (a--); } return res; } precompilator int fattoriale(int a) { int res=1; printf("valore di a:%d \n",a); while (a>1) { res*= (a--); } return res; }

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 / U n i v e r s i t à d e l l I n s u b r i a Cosa fa il precompilatore 3/3 Costrutti condizionali –statici, fatti prima del compilatore! #define DEBUG 0 int fattoriale(int a) { int res=1; #if DEBUG printf("valore di a:%d \n",a); #endif while (a>1) { res*= (a--); } return res; } precompilator int fattoriale(int a) { int res=1; while (a>1) { res*= (a--); } return res; }

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 / U n i v e r s i t à d e l l I n s u b r i a Cosa fa il precompilatore 3/3 Costrutti condizionali statici –perchè é una tale furbata? #define DEBUG 0 int fattoriale(int a) { int res=1; #if DEBUG printf("valore di a:%d \n",a); #endif while (a>1) { res*= (a--); } return res; } int DEBUG = 0; int fattoriale(int a) { int res=1; if (DEBUG) { printf("valore di a:%d \n",a); } while (a>1) { res*= (a--); } return res; } VS. la guardia viene controllata solo durante la compilazione risultato: programma efficiente! la guardia viene controllata durante ogni esecuzione! risultato: programma inefficiente!

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 / U n i v e r s i t à d e l l I n s u b r i a Cosa fa il precompilatore 3/3 Costrutti condizionali statici –due forme sintattiche equivalenti #define DEBUG 1 int fattoriale(int a) { int res=1; #if DEBUG printf("valore di a:%d \n",a); #endif while (a>1) { res*= (a--); } return res; } #define DEBUG int fattoriale(int a) { int res=1; #ifdef DEBUG printf("valore di a:%d \n",a); #endif while (a>1) { res*= (a--); } return res; } –si possono anche usare #ifndef DEBUG#undef DEBUG#if defined (DEBUG)

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 / U n i v e r s i t à d e l l I n s u b r i a Cosa fa il precompilatore 3/3 Costrutti condizionali statici –altro tipico uso: specializzazione del codice per architetture specifiche –(remember: niente macchine virtuali in C)... #if defined (HP9000) || defined(SUN) /* codice funzionante SOLO per le sun o per le HP9000 */... #else /* codice buono per le altre architettutre */... #endif... questo tipo di flags (SUN, HP ) sono definite nellambiente. Il compilatore lo sa. Non vanno specificate a mano nel codice

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 / U n i v e r s i t à d e l l I n s u b r i a Compilazione (build): 1 files sorgente solo? Source File "main.c" precompiler file precomp. compiler object file "main.o" in Cancora in C (quasi) linguaggio macchia

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 / U n i v e r s i t à d e l l I n s u b r i a Compilazione (build): più files file main.c [ codice in C ] file main.h [ altro codice ] COMPILAZIONE (BUILD) sorgenti main.exe binario

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 / U n i v e r s i t à d e l l I n s u b r i a Compilazione (build): più files file main.c [ codice in C ] file main.h [ altro codice ] file zap.c [ altro codice ] COMPILAZIONE (BUILD) sorgenti main.exe binario file pippo.c [ altro codice ] Progetto con più file sorgenti !

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 / U n i v e r s i t à d e l l I n s u b r i a Building a project Source File 1 "main.c" Source File 2 "pippo.c" Source File 3 pluto.c" compiler object file "main.o" compiler object file "pippo.o" compiler object file pluto.o" eseguibile finale "prova.exe" linker Header File 1 caio.h" pre- compil. file precomp. 1 pre- compil. file precomp. 2 pre- compil. file precomp. 3

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 / U n i v e r s i t à d e l l I n s u b r i a Il ruolo delle librerie Source File 1 "main.c" Source File 2 "pippo.c" Source File 3 pluto.c" pre- compil. file precomp. 1 compiler object file "main.o" pre- compil. file precomp. 2 compiler object file "pippo.o" pre- compil. file precomp. 3 compiler object file pluto.o" eseguibile finale "prova.exe" linker libreria A stdlib.a libreria B Header File 1 caio.h" Header Lib File 1 stdlib.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 / U n i v e r s i t à d e l l I n s u b r i a Risassumendo Compilazione (build) (TRE FASI) 1.Precompliazione (di ogni file sorgente ".c") (utilizzando anche i file headers ".h") 2.Compilazione (vera e propria) (per ogni file sorgente ".c" risultante) 3.Linking (di tutti i ".o" risultanti insieme) (utilizzando anche i file di libreria)