Generazione di Codice
|
|
- Clemente Nicolosi
- 4 anni fa
- Visualizzazioni
Transcript
1 Generazione di Codice module prog(a: int, b: string): int var v1:...,..., vm:...; const c1:... =...,..., cp:... =...; Programma Tela Traduttore T-code module f1(...): int var...; const...; module f2(...): real... begin f2... end f2 begin f1... end f1 module f3(...): void... begin prog... end prog TCODE size PUSH num-formals num-locals -1 GOTO ^prog POP HALT prog f1 f2... static chain 1
2 Generazione di Codice (ii) Scelte di progetto: Programma trattato come modulo (chiamabile da altri moduli) Parametri del modulo trattati come variabili locali Codice indirizzabile direttamente (senza label) Indirizzo di una istruzione T-code = posizione della istruzione nel codice generato Descrittori degli oggetti allocati nell'ordine in cui vengono dichiarati (formali, variabili, costanti) Oggetti (parametri, variabili, costanti) trattati uniformemente dalla macchina astratta (T-machine) Identificazione degli oggetti (parametri, variabili, costanti): offset-env, oid 2
3 Dichiarazione di Variabili var c1, c2: char; i, j: int; x, y: real; nome, cognome: string; ok, flag: bool; NEW char NEW char NEW int NEW int NEW float NEW float NEW string NEW string NEW int NEW int Note: Dichiarazione di una variabile avente dimensione type-size: NEW type-size Variabile di tipo bool: trattata come int 3
4 Generazione di NEW (come per variabili) Dichiarazione di Costanti Generazione di codice per l'espressione di inizializzazione (dopo tutte le NEW ) const MAX: int = 10; a, b: real = 10.25; linguaggio: string = "Tela"; media: real = somma / num; FACT: int = fattoriale(max); NEW int NEW float NEW float NEW string NEW float NEW int istanziazione di MAX istanziazione di a istanziazione di b istanziazione di linguaggio istanziazione di media istanziazione di FACT 4
5 Referenza a Costante 1. Costante carattere x = 'c'; LDC 'c' 2. Costante intera y = 25; LDI Costante reale z = 3.14; LDR Costante stringa s = "alpha"; LDS "alpha" 5. Costante booleana b = true; LDI 1 Nota: Valori booleani: true, false surrogati da interi: 1, 0 5
6 Referenza a Identificatore 1. Oggetto locale x = y + 1; LOD 0 ^y 2. Oggetto non locale x = z + 1; LOD 2 ^z Nota: Argomenti di LOD = env-offset, oid (object identifier) 6
7 Assegnamento Computazione della espressione di assegnamento + store (STO) 1. Assegnamento di oggetto locale (variabile, parametro): x = expr; expr STO 0 ^x 2. Assegnamento di oggetto non locale (variabile, parametro): y = expr; expr STO 2 ^y Nota: Argomento di STO = env-offset, oid (dell'oggetto assegnato) 7
8 Operazioni Logiche (and, or) and logic-expr expr 1 expr 2 JMF offset JMP 2 LDI 0 or JMF 3 LDI 1 JMP exit var a, b, c: bool; a = (b and c) or g; LOD 0 ^b JMF 3 LOD 0 ^c JMP 2 LDI 0 JMF 3 LDI 1 JMP 2 LOD 2 ^g STO 0 ^a Note: Valutazione in corto circuito JMP = salto incondizionato JMF = salto condizionato (a false) Argomento di JMP, JMF = lunghezza del salto (offset) exit = + 1 offset = + 2 8
9 Operazioni Relazionali: ==,!= rel-expr expr 1 expr 2 ==!= EQU NEQ var i, j: int; b: bool; b = (i == j or j!= k); LOD 0 ^i EQU JMF 3 LDI 1 JMP 4 LOD 2 ^k NEQ STO 0 ^b Nota: EQU, NEQ: polimorfi per tutti i tipi di oggetti 9
10 Operazioni Relazionali: >, >=, <, <= > >= < <= char CGT CGE CLT CLE int IGT IGE ILT ILE rel-expr expr 1 expr 2 real RGT RGE RLT RLE string SGT SGE SLT SLE var i, j: int; x, y: real b: bool; b = (i > j or x < y); LOD 0 ^i IGT JMF 3 LDI 1 JMP 4 LOD 0 ^x LOD 0 ^y RLT STO 0 ^b 10
11 Operazioni Aritmetiche: +,, *, / + * / int IADD ISUB IMUL IDIV math -expr expr 1 expr 2 real RADD RSUB RMUL RDIV var i, j, k: int; x, y: real; i = (i + 5) * (j k); x = (y ) / (x + y); LOD 0 ^i LDI 5 IADD LOD 0 ^k ISUB IMUL STO 0 ^i LOD 0 ^y LDR 3.14 RADD LOD 0 ^x LOD 0 ^y RADD RDIV STO 0 ^x 11
12 Operazioni di Negazione:, not (int) (real) NOT neg-expr expr expr IUMI expr RUMI expr LNEG var i, j, k: int; a, b: bool; b = i > j * k and not (a or j == k); LOD 0 ^i LOD 0 ^k IMUL IGT JMF 11 LOD 0 ^a JMF 3 LDI 1 JMP 5 LOD 0 ^k IUMI EQU LNEG JMP 2 LDI 0 STO 0 ^b 12
13 Chiamata di Modulo module-call id expr 1... expr n expr n PUSH num-formals num-locals chain GOTO entry POP Scenario Chain m1 genitore di m2 0 m1 fratello di m2 1 otherwise Level(m1) - Level(m2) + 1 Note: var i, j, k: int; k = j m(i+j, x, j i); LOD 0 ^i IADD LOD 1 ^x LOD 0 i ISUB PUSH GOTO ^m POP IMINUS STO 0 ^k m1 chiama m2 num-formals = numero di parametri formali num-locals = numero di oggetti locali (non parametri) chain = distanza tra l'ambiente della chiamata e l'ambiente in cui è definito il modulo chiamato entry = indirizzo (entry point ) del modulo chiamato (corpo) 13
14 cond-expr expr 1 expr 2 opt-elsif-expr-list expr 3 opt-elsif-expr-list expr 1i, expr 2i } Note: JMF next 1 JMP exit 1 expr 11 JMF next 2 expr 21 JMP exit 2 expr 12 JMF next 3 expr 22 JMP exit 3 expr 1n JMF next n+1 expr 2n JMP exit n+1 expr 3 Espressione Condizionale var i, j, k: int; a, b, c: bool; w = if a or b then i + 48; elsif c and j > 20 then j k; elsif i!= j / k then k * i; else 36; endif; next i = distanza dalla condizione successiva (o dal default) exit i = distanza dall'uscita della espressione condizionale LOD 0 ^a JMF 3 LDI 1 JMP 2 LOD 0 ^b JMF 5 LOD 0 ^i LDI 48 IADD JMP 24 LOD 0 ^c JMF 5 LDI 20 IGT JMP 2 LDI 0 JMF 5 LOD 0 ^k ISUB JMP 12 LOD 0 ^i LOD 0 ^k IDIV NEQ JMF 5 LOD 0 ^k LOD 0 ^i IMUL JMP 2 LDI 36 14
15 Cast cast expr expr TOINT expr TOREA var i, j: int; x: real; x = real(i+j); LOD 0 ^i IADD TOREA STO 0 ^x 15
16 Read read-stat id1... idn READ format env-offset oid 1... READ format env-offset oid n var lettera: char; tot: int; media: real; nome: string; ok: bool; read(lettera, tot, media, nome, ok); READ c 0 ^lettera READ i 0 ^tot READ r 0 ^media READ s 0 ^nome READ b 0 ^ok Note: oid = identificatore dell'oggetto da istanziare env-offset = distanza nella catena statica format = carattere (c, i, r, s, b) che indica il tipo di oggetto da istanziare 16
17 Write write-stat expr 1... expr n... expr n WRITE format var i, j: int; x: real; nome: string; write(i+j, x z, nome); LOD 0 ^i IADD LOD 0 ^x LOD 2 ^z RSUB LOD 0 ^nome WRITE "irs" Nota: format = stringa dei caratteri che identificano i tipi dei valori delle espressioni da stampare 17
18 Istruzione Condizionale Nota: if-stat expr stat-list 1 opt-elsif-stat-list [ stat-list 2 ] opt-elsif-stat-list expr 1i stat-list 2i } expr JMF next 1 stat-list 1 JMP exit 1 expr 11 JMF next 2 stat-list 21 JMP exit 2 expr 12 JMF next 3 stat-list 22 JMP exit 3... expr 1n JMF next n+1 stat-list 2n JMP exit n+1 [ stat-list 2 ] Se stat-list 2 non specificata var i, j, k: int; if i == j then j = j + 3; elsif i > j then i = i 2; j = i + k ; else i = j * k; end;... expr 1n JMF exit n+1 stat-list 2n LOD 0 ^i EQU JMF 6 LDI 3 IADD STO 0 ^j JMP 18 LOD 0 ^i IGT JMF 10 LOD 0 ^i LDI 2 ISUB STO 0 ^j LOD 0 ^i LOD 0 ^k IADD STO 0 ^j JMP 5 LOD 0 ^k IMUL STO 0 ^i 18
19 Ciclo While while-stat expr stat-list expr JMF exit stat-list JMP up a, b, ris: int; ris = 0; while a >= b do ris = ris + 1; a = a b; end; LDI 0 STO 0 ^ris LOD 0 ^a LOD 0 ^b IGE JMF 10 LOD 0 ^ris LDI 1 IADD STO 0 ^ris LOD 0 ^a LOD 0 ^b ISUB STO 0 ^a JMP 12 19
20 Note: module-decl id opt-param-list type opt-var-sect opt-const-sect opt-module-list module-body mid = identificatore del modulo Dichiarazione di Modulo module alfa(i: int, j: int, k: int): int var n, m: int; const msg: string = "Hello!" begin alfa write(msg); n = i + k; m = n k; j = n * m; k = k / j; return n+m k; end alfa MOD mid new-variables new-constants assign-constants module-body RETURN MOD ^alfa NEW n NEW m NEW msg LDS "Hello!" STO 0 ^msg LOD 0 ^msg WRITE "s" LOD 0 ^i LOD 0 ^k IADD STO 0 ^n LOD 0 ^n LOD 0 ^k ISUB STO 0 ^m LOD 0 ^n LOD 0 ^m IMUL STO 0 ^j LOD 0 ^k IDIV STO 0 ^k LOD 0 ^n LOD 0 ^m IADD LOD 0 ^k ISUB RETURN Se return non è istruzione finale JMP a RETURN 20
21 Strutture Dati per Generazione di Codice address op args next Stat: Code: head size tail Rappresentazione di un segmento di codice (sequenza di istruzioni T-code): head size tail
22 Libreria di Funzioni per Generazione di Codice void relocate_address(code code, int offset) Code appcode(code code1, Code code2) Code endcode() Code concode(code code1, Code code2,...) Stat *newstat(operator op) Code makecode(operator op) Code makecode1(operator op, int arg) Code makecode2(operator op, int arg1, int arg2) Code makecode3(operator op, int arg1, int arg, int arg3) Code make_push_pop(int nformals, int nlocals, int chain, int entry) Code make_ldc(char c) Code make_ldi(int i) Code make_ldr(float r) Code make_lds(char *s) 22
23 relocate_address() void relocate_address(code code, int offset) Stat *pt = code.head; int i; } for(i = 1; i <= code.size; i++) pt >address += offset; pt = pt >next; } 23
24 appcode() Code appcode(code code1, Code code2) Code rescode; } relocate_address(code2, code1.size); rescode.head = code1.head; rescode.tail = code2.tail; code1.tail >next = code2.head; rescode.size = code1.size + code2.size; return rescode; 24
25 endcode(), concode() Code endcode() static Code code = NULL, 0, NULL}; } return code; Code concode(code code1, Code code2,...) Code rescode = code1, *pcode = &code2; } while(pcode >head!= NULL) rescode = appcode(rescode, *pcode); pcode++; } return rescode; 25
26 newstat(), makecode() Stat *newstat(operator op) Stat *pstat; } pstat = (Stat*) malloc(sizeof(stat)); pstat >address = 0; pstat >op = op; pstat >next = NULL; return pstat; Code makecode(operator op) Code code; } code.head = code.tail = newstat(op); code.size = 1; return code; 26
27 makecode1(), makecode2(), makecode3() Code makecode1(operator op, int arg) Code code; } code = makecode(op); code.head >args[0].ival = arg; return code; Code makecode2(operator op, int arg1, int arg2) Code code; } code = makecode1(op, arg1); code.head >args[1].ival = arg2; return code; Code makecode3(operator op, int arg1, int arg2, int arg3) Code code; } code = makecode2(op, arg1, arg2); code.head >args[2].ival = arg3; return code; 27
28 make_push_pop() Code make_push_pop(int nformals, int nlocals, int chain, int entry) return concode(makecode3(push, nformals, nlocals, chain), makecode1(goto, entry), makecode(pop), endcode()); } 28
29 make_ldc(), make_ldi(), make_ldr(), make_lds() Code make_ldc(char c) Code code; Code make_ldr(float r) Code code; } code = makecode(ldc); code.head >args[0].cval = c; return code; } code = makecode(lds); code.head >args[0].rval = r; return code; Code make_ldi(int i) return makecode1(ldi, i); } Code make_lds(char *s) Code code; } code = makecode(lds); code.head >args[0].sval = s; return code; 29
30 Macchina Astratta Dati Programma T-code T-machine Risultato Architettura: Memoria codice Activation Stack Object Stack 30
31 Memoria Codice Tcode: op args typedef struct Operator op; Lexval args[maxargs]; } Tcode; Tcode *prog; Allocata nella inizializzazione della T-machine TCODE size 31
32 Struttura Pile numobj objects raddr alink size val ap 3 op 'c' astack ostack 32
Tela (Teaching Language)
Tela (Teaching Language) Paradigma imperativo Dichiarazioni di variabili, costanti, moduli Programma strutturato in moduli innestati Scope statico Passaggio dei parametri per valore Corpo del modulo =
DettagliIl linguaggio C. Istruzioni, funzioni, dati strutturati
Il linguaggio C Istruzioni, funzioni, dati strutturati Istruzioni Servono a dirigere il flusso di esecuzione di un programma controllano l ordine di esecuzione delle espressioni, quindi dei loro side effects
DettagliEspressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!
Espressioni Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Valutazione automatica di expr aritmetiche = obiettivo primario dei primi LP
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliGenerazione Codice Intermedio
Generazione Codice Intermedio Front-end generazione codice intermedio programma sorgente Analizzatore lessicale Analizzatore sintattico Analizzatore semantico Generatore codice int. rappresentazione intermedia
DettagliBreve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
DettagliEsercitazioni di Linguaggi e Traduttori
1 Codici intermedi 2 Three-address code 3-address code: rappresentazione a quadruple Tipologie di quadruple Implementazione Espressioni matematiche e logiche Puntatori, strutture ed array Trasformazione
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliDal linguaggio macchina al linguaggio C
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi di Udine Dal linguaggio macchina al linguaggio C Programma sorgente, compilatore, file oggetto, file eseguibile programma sorgente
DettagliLezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
DettagliUn esempio di compilatore realizzato con flex e bison
POLITECNICO DI MILANO Dipartimento di Elettronica e Informazione Corso di Linguaggi Formali e Compilatori - Esercitazioni Un esempio di compilatore realizzato con flex e bison Progetto di Vincenzo Martena
DettagliLa sintassi del C APPENDICE H
APPENDICE H La sintassi del C Nella notazione della sintassi utilizzata, le categorie sintattiche (non terminali) sono state indicate da uno stile tipografico in corsivo, mentre le parole letterali e i
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliCorso di. Stack: Procedure e variabili locali. Architetture degli Elaboratori. Uno stack anche per i calcoli. Lo stack di esecuzione
Corso di Architettura degli Elaboratori Il livello della microarchitettura: l'isa IJVM Stack: Procedure e variabili locali ambiente di esecuzione procedura A variabili locali di A variabili locali di B
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliLinguaggi e Traduttori Esercitazione di laboratorio N.2 - soluzione
Linguaggi e Traduttori Esercitazione di laboratorio N.2 - soluzione Esercizio Si scriva, usando LEX e YACC, un programma in grado riconoscere la sintassi di un sottoinsieme del linguaggio C. Dato un file
DettagliEsercizio 1. a * 10 + (20 b) a b. Tecnologie dei Linguaggi Artificiali Esercizi Yacc
Esercizio 1 Usando Yacc e Lex, codificare un generatore di alberi astratti relativi alla seguente grammatica: program expr expr expr + term expr term term term term * term / ( expr ) num Ecco un esempio
DettagliAlgebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
Dettaglicout << "Inserisci un numero:" << endl; cin >> n; ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;
Funzioni int n, ris; cout n; ris = n*2; cout
DettagliEsercizio 1. Dato il linguaggio definito dalla seguente BNF,
Dato il linguaggio definito dalla seguente BNF, Esercizio 1 program stat-list stat-list stat stat-list stat stat declaration assignment loop declaration type id-list type int real bool id-list id, id-list
DettagliCast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double
Il cast Cast implicito Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto Per esempio: byte short int long float double int x = 10; float f; f = x; Il valore di
DettagliCominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi
Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono l algoritmo Cominciamo ad analizzare la
DettagliINFORMATICA 3 Prof.ssa Sara Comai
INFORMATICA 3 Prof.ssa Sara Comai ESERCIZI SESSIONE LIVE 1 Sintassi e semantica operazionale Ing. Paola Spoletini 1. Sintassi Utilizzando il linguaggio descritto dalla seguente EBNF: REGOLE SINTATTICHE:
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliLinguaggi di Programmazione I Lezione 9
Linguaggi di Programmazione I Lezione 9 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 6 maggio 28 Variabili 3 Ambiti................................................................
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento
DettagliOggetti e dati primitivi 1
I membri delle classi Oggetti e dati primitivi Corso di laurea in Le classi contengono 2 tipi di membri, definiti per l intera classe o per le singole istanze Le variabili o i campi, che rappresentano
DettagliStruttura di un programma C++
Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout
DettagliLinguaggio C: Espressioni
Linguaggio C: Espressioni Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 / 34 Ringraziamenti prof. Mirko Viroli, Università
DettagliUn esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)
Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore) Macchina astratta: un linguaggio di programmazione trasforma un calcolatore in una macchina
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
DettagliEsercitazioni di Informatica 3
Esercitazioni di Informatica 3 Part I: Programming Languages Syntax and semantics Laurea in Ingegneria Informatica Politecnico di Milano Polo di Milano Leonardo Esercizio 1: EBNF Utilizzando il linguaggio
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
Dettagliif else Fondamenti di Informatica (Modulo B) !""#$ % ( #if else ) " *+ #switch if (Condizione) Istruzione
#$ % '' # ( #if else ) *+ #switch 50 if else * if * # if (Condizione) Istruzione Condizione bool Istruzione ( Condizione true + Istruzione ( Condizione false + Istruzione +, -+.// x.//# if (x == 100) if
DettagliLinguaggi e grammatiche. Esercizi. Linguaggi e grammatiche. Linguaggi e grammatiche
Esercizi Grammatiche, scoping Univ. di Udine Grammatiche, scoping (Univ. di Udine) Esercizi 1 / 29 Linguaggi e grammatiche Definire i numeri divisibili per 2 in base 3, come grammatica libera da contesto
DettagliProgrammazione in linguaggio assembly per architetture Intel 8088
Programmazione in linguaggio assembly per architetture Intel 8088 Marco Di Felice 1 Università of Bologna Dipartimento di Scienze dell Informazione Corso di Architettura degli Elaboratori mail: difelice@cs.unibo.it
DettagliEsercizi. Grammatiche, scoping. Univ. di Udine. Grammatiche, scoping (Univ. di Udine) Esercizi 1 / 29
Esercizi Grammatiche, scoping Univ. di Udine Grammatiche, scoping (Univ. di Udine) Esercizi 1 / 29 Linguaggi e grammatiche Definire i numeri divisibili per 2 in base 3, come grammatica libera da contesto
DettagliIL LINGUAGGIO JAVA. Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per scrivere frasi ben formate
Fondamenti di Informatica IL LINGUAGGIO JAVA Sintassi, Semantica, Input, Tipi Elementari e Istruzione Condizionale 1 Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per
DettagliArchitettura degli Elaboratori Lez. 3 ASM: Strutture di controllo. Prof. Andrea Sterbini
Architettura degli Elaboratori Lez. 3 ASM: Strutture di controllo Prof. Andrea Sterbini sterbini@di.uniroma1.it Argomenti Argomenti della lezione - Il simulatore MARS - Le strutture di controllo - Esempi
DettagliProcedure e variabili locali. Corso di Architettura degli Elaboratori. Uno stack anche per i calcoli. Lo stack di esecuzione
Corso di Architettura degli Elaboratori Il livello della microarchitettura: l'isa IJVM Dipartimento di Informatica Università degli Studi di Torino C.so Svizzera, 85 I-04 Torino baldoni@di.unito.it http://www.di.unito.it/
DettagliDal linguaggio macchina al linguaggio C
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Dal linguaggio macchina al linguaggio C 2000 Pier Luca Montessoro (si veda la nota di copyright
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 25 Le liste in C struct nodo { int info; struct nodo *next; }; typedef struct nodo Nodo; typedef Nodo *PNodo; Inserimento in ordine
DettagliEsercizio 1. Specificare la grammatica ad attributi del linguaggio definito dalla seguente BNF: Nota: Nella tabella non sono ammessi campi omonimi.
Esercizio 1 Specificare la grammatica ad attributi del linguaggio definito dalla seguente BNF: def : ( attr-list ) attr-list decl, attr-list decl decl : int string bool def R: (a: int, b: string, c: bool)
DettagliLinguaggio C: Espressioni
Linguaggio C: Espressioni Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Ringraziamenti prof. Mirko Viroli, Università
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
Dettagli3. La sintassi di Java
pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer
DettagliI costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni
Classi di istruzioni In maniera simile a quanto fatto per i dati, un linguaggio mette a disposizione dei costrutti per realizzare la parte esecutiva dell algoritmo. Questa consiste di: Leggi i valori di
DettagliDichiarazioni e tipi predefiniti nel linguaggio C
Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo. Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori:
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliProva scritta di Fondamenti di Informatica - 4 aprile Fila A
Università degli Studi di Firenze - Scuola di Ingegneria Corso di laurea in Ingegneria Elettronica e delle Telecomunicazioni Esercizio 1 (6 punti) Prova scritta di Fondamenti di Informatica - 4 aprile
DettagliVariabili e Funzioni. Informatica 1 / 19
Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:
DettagliIL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 33 Le liste in C struct nodo { int info; struct nodo *next; }; typedef struct nodo Nodo; typedef Nodo *PNodo; Pila (Stack ) La struttura
DettagliInformatica Generale Andrea Corradini Ancora sui linguaggi di programmazione
Informatica Generale Andrea Corradini 18 - Ancora sui linguaggi di programmazione Sommario Principali componenti di un linguaggio di programmazione Variabili e costanti Strutture dati: array e record Strutture
DettagliSOMMARIO STACK. STACK: specifica STACK
SOMMARIO STACK Pila (stack): una struttura dati lineare a cui si può accedere soltanto mediante uno dei suoi capi per memorizzare e per estrarre dati. Specifica (descrizione). Implementazione (realizzazione).
DettagliJavascript: il browser
Javascript: il browser Un browser è un programma Un browser interpreta il linguaggio HTML e visualizza le pagine sullo schermo Per la visualizzazione delle pagine un browser si appoggia al software di
DettagliEsercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018
Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercizi sull allocazione dinamica della memoria in C Il codice di questi esercizi é contenuto nella cartella parte1 1. Implementare una lista
DettagliIL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
DettagliProgrammazione ad Oggetti. Java Parte II
Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una
DettagliEsercizio 1. int x = 3, num = 100; string A = "alfa", B = "beta"; boolean ok = false; Linguaggi di Programmazione Esercizi BNF
Esercizio 1 Specificare la grammatica BNF del linguaggio L, in cui ogni frase corrisponde ad una o più dichiarazioni. Ogni dichiarazione è composta da un tipo (int, string o boolean) e da una lista di
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli email:emanuela.merelli@unicam.it Argomenti della lezione Elementi di un linguaggio
DettagliFondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati
Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario
DettagliUnità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso
Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile
DettagliProgrammazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
DettagliLinguaggio C: Espressioni
Linguaggio C: Espressioni Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Ringraziamenti prof. Mirko Viroli, Università
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Strutture di Controllo Parte 4 Conclusioni G. Mecca M. Samela Università della Basilicata Strutture di Controllo >> Sommario Sommario Ricapitolazione Alcune
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica Introduzione versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliJavascript: il browser
Javascript: il browser Un browser è un programma Un browser interpreta il linguaggio HTML e visualizza le pagine sullo schermo Per la visualizzazione delle pagine un browser si appoggia al software di
DettagliFondamenti di Informatica
Esercizio 1. (3 punti) Fondamenti di Informatica PROVA SCRITTA 25 gennaio 2016 Data l istruzione assembler MIPS add $1,$2,$3, memorizzata all interno della memoria istruzioni della CPU, descrive la sua
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliProgrammazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript
Programmazione lato client Netscape: Microsoft: JScript ECMAScript (ECMA-262) (European Computer Manufactures Association) 1 Linguaggio di script interpretato con alcune caratteristiche Object Oriented
DettagliPILE E CODE. Pile (stack):
PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
DettagliEsercizio 1. int x = 3, num = 100; string A = "alfa", B = "beta"; boolean ok = true, end = false; Tecnologie dei Linguaggi Artificiali Esercizi Lex
Esercizio 1 Codificare in Lex l'analizzatore lessicale di un linguaggio in cui ogni frase è composta da una o più dichiarazioni, come nel seguente esempio: int x = 3, num = 100; string A = "alfa", B =
DettagliSommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...
Sommario PREFAZIONE...XI Aggiornamenti e novità... xi Lo scopo di questo libro... xii Diagramma delle dipendenze... xii La metodologia di insegnamento... xiii Panoramica sul libro... xvi Ringraziamenti...
DettagliIntroduzione a Java e all'ambiente di sviluppo
Introduzione a Java e all'ambiente di sviluppo Programmazione 2, a.a. 2006-2007 Nota: per esclusivo uso interno al corso, riferimenti bibliografici forniti a lezione Schema minimo di un applicazione public
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA 1 Struttura di un programma Java Un programma Java consiste in un insieme di definizioni di classi. In genere
DettagliNel seguito, istruzione1 e istruzione2 possono essere un blocco di codice { }, cioè più istruzioni
INTRODUZIONE A C++ Nel seguito, istruzione1 e istruzione2 possono essere un blocco di codice, cioè più istruzioni Istruzione - Esempi Significato int a; float f; double d; char c; int x=0; variabile =
DettagliStrutture dati. Le liste
Strutture dati Le liste Introduzione Una lista è una successione finita di valori di un tipo (insieme di valori e ordine). Come tipo di dato è qualificata dalle operazioni che ci si possono svolgere: inserimento
DettagliIL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma
DettagliStrutture di Controllo Condizionali e Operatori Logici e Relazionali
Linguaggio C Strutture di Controllo Condizionali e Operatori Logici e Relazionali 1 Strutture di Controllo n Controllano il flusso di esecuzione di un programma Istruzioni di selezione: permettono di selezionare
DettagliSommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C
Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...
DettagliTipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:
Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere
DettagliAnalisi Semantica. Fase che computa informazione aggiuntiva (necessaria per la compilazione), nota la struttura sintattica del programma
Analisi Semantica Fase che computa informazione aggiuntiva (necessaria per la compilazione), nota la struttura sintattica del programma Computazione di informazione che non può essere computata con metodi
DettagliFondamenti di Programmazione
Fondamenti di Programmazione (con linguaggio di riferimento C++) Gianfranco Rossi Università di Parma Dip. di Matematica e Informatica 43100 Parma (Italy) gianfranco.rossi@unipr.it Indice 1 Introduzione
DettagliSemantiche dei linguaggi di programmazione
Semantiche dei linguaggi di programmazione By Giulia Costantini (819048) e Giuseppe Maggiore (819050) Contents La semantica del linguaggio... 1 Tipi di semantica... 1 Esempio di semantica operazionale...
DettagliMETODI in Java. Prof.Angela Bonifati. Metodi e Sottoprogrammi
Fondamenti di Informatica METODI in Java Prof.Angela Bonifati 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile definire nuovi tipi di dati, tramite i metodi è possibile
DettagliArchitetture dei Calcolatori
Architetture dei Calcolatori Lezione 11 -- 10/12/2011 Procedure Emiliano Casalicchio emiliano.casalicchio@uniroma2.it Fattoriale: risparmiamo sull uso dei registri q Rispetto alla soluzione precedente
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 3 Analisi dettagliata di un programma /* commento */ Possono estendersi su più linee apparire in qualsiasi parte del programma. Alternativamente
DettagliIstruzioni di trasferimento dati
Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:
DettagliIL TEOREMA DI BOEHM-JACOPINI
IL TEOREMA DI BOEHM-JACOPINI Un qualunque algoritmo può essere descritto unicamente attraverso le tre strutture: Sequenza Diramazione Ciclo o iterazione Le tre strutture sono complete. Un qualunque linguaggio
DettagliAlgoritmi e Programmazione Avanzata. Pile e code. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario ADT Pile Code. A.A. 2001/2002 APA - 2 1 Sommario ADT Pile Code. A.A. 2001/2002 APA - 3 ADT Le regole che
DettagliTIPI DI DATO TIPI DEFINITI DALL UTENTE
Ogni elaboratore è intrinsecamente capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti, mediante
DettagliEsercizi Strutture dati di tipo astratto
Salvatore Cuomo Esercizi Strutture dati di tipo astratto Lezione n. 20 Parole chiave: Strutture dati, pile code, liste Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio
DettagliJavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript
Programmazione lato client Netscape: Microsoft: JScript ECMAScript (ECMA-262) (European Computer Manufactures Association) Linguaggio di script interpretato con alcune caratteristiche Object Oriented HTTP
DettagliStrutture di controllo e cicli
AA 2012-2013 IF logico L IF logico rappresenta il tipo piú semplice di istruzione condizionale IF logico L IF logico rappresenta il tipo piú semplice di istruzione condizionale Sintassi IF ( e s p r e
Dettagli