Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia Informatica generale 1 Appunti del corso A.A. 2002-2003 Lezione 10 Marco Lazzari Compilatori e interpreti Moltiplica due numeri Somma due numeri Somma 1 ad un numero traduzione dal linguaggio ad alto livello al linguaggio macchina Marco Lazzari – Informatica generale 1 Compilatori e interpreti compilatore: una traduzione, più esecuzioni; dal file sorgente del programma genera un file eseguibile mioprog.c mioprog.exe interprete: traduzione al volo (simultanea) Marco Lazzari – Informatica generale 1 Linguaggi ad alto livello vocabolario (parole chiave, operatori, identificatori, ...) sintassi rappresentazione dei dati (tipi di dati elementari o complessi) Marco Lazzari – Informatica generale 1 Linguaggi ad alto livello calcolo scientifico: FORTRAN (Pascal) applicazioni gestionali: COBOL interfacce grafiche: Visual XYZ intelligenza artificiale: LISP, Prolog ... Marco Lazzari – Informatica generale 1 Linguaggi ad alto livello BASIC (alto?) 10 Totale = 0 20 INPUT "Quante cifre vuoi sommare?";n 30 FOR k = 1 TO n 40 INPUT "Immetti cifra",n 50 Totale = Totale + n 60 NEXT k 70 PRINT 80 PRINT "Il totale è: "; Totale Marco Lazzari – Informatica generale 1 Linguaggi ad alto livello Pascal program totale; var k, n, totale: integer; begin k := 1; write('Quante cifre vuoi sommare?'); readln(n); for k := 1 to n do begin write('Immetti cifra: '); readln(c); totale := totale + c end writeln('Il totale è: ', totale); end. Marco Lazzari – Informatica generale 1 Linguaggi alfabeto: i simboli per costruire le frasi del linguaggio; lessico: sequenze di simboli che compongono le parole del linguaggio; parole chiave (if then else begin end …) sintassi: definisce le frasi ben formate del linguaggio semantica: definisce il significato dei costrutti grammaticali Marco Lazzari – Informatica generale 1 Programmazione problema, analisi, algoritmo, programma algoritmo: insieme ordinato di passi, che descrive i dati che si usano e la sequenza di azioni elementari per risolvere un problema diagrammi di flusso: un linguaggio grafico per la descrizione di algoritmi Marco Lazzari – Informatica generale 1 Diagrammi di flusso: i blocchi START END I/O V AZIONE F CONDIZ. Marco Lazzari – Informatica generale 1 START START START dati A e B dati A e B dati A e B C := A + B C := A * B C := A DIV B risultato C risultato C risultato C END END END somma prodotto divisione intera di due numeri di due numeri di due numeri Marco Lazzari – Informatica generale 1 stampa 30 volte la parola TRE START C := 1 stampa “TRE” C = 30 V END F C := C + 1 Marco Lazzari – Informatica generale 1 START stampa NUMERO volte la parola PAROLA (NUMERO e PAROLA sono valori di ingresso per il programma) dati PAROLA e NUMERO C := 1 stampa PAROLA C = NUMERO V END Marco Lazzari – Informatica generale 1 F C := C + 1 esegue operazioni misteriose usando un registro d’appoggio START dati A B C REG := A + B V REG > C F REG := C - REG stampa REG END Marco Lazzari – Informatica generale 1 AeB>0 somma due numeri avendo a disposizione solo l’operazione di START incremento unitario dati A B (macchina a strati) RIS := A; CON := 1 RIS := RIS + 1 V CON = B stampa RIS END Marco Lazzari – Informatica generale 1 F CON := CON + 1 AeB>0 moltiplica due numeri avendo a disposizione solo START l’operazione di somma dati A B (macchina a strati) RIS := 0; CON := 1 RIS := RIS + A V stampa RIS F CON = B CON := CON + 1 END Marco Lazzari – Informatica generale 1 Dal diagramma al programma START azione 1 begin <azione 1> <azione 2> end azione 2 END Marco Lazzari – Informatica generale 1 Dal diagramma al programma V F condizione azione 1 azione 2 if <condizione> then <azione 1> else <azione 2> Marco Lazzari – Informatica generale 1 Dal diagramma al programma V F condizione azione 1 while <condizione> do <azione 1> Marco Lazzari – Informatica generale 1