1 linguaggi di programmazione. 2 da linguaggio macchina a linguaggio assembly linguaggi macchina...
TRANSCRIPT
![Page 1: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/1.jpg)
1
Linguaggi di programmazione
![Page 2: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/2.jpg)
2
Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori al posto
di indirizzi di memoria, nomi per i registri All’inizio, solo su carta e poi traduzione in
lunguaggio macchina Poi, traduzione automatica (programma
assemblatore) Linguaggi assembly (seconda generazione)
![Page 3: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/3.jpg)
3
Linguaggi assembly
Dipendenti da Numero dei registri Istruzioni del linguaggio macchina
Non trasportabili su un altro calcolatore Descrizione di un algoritmo con primitive che
rappresentano passi molto piccoli Meglio primitive piu’ ad alto livello, e poi
traduzione in concetti piu’ dettagliati
![Page 4: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/4.jpg)
4
Linguaggi di terza generazione Es.: FORTRAN (FORmula TRANslator), COBOL (COmmon
Business Language) Insieme di primitive ad alto livello, ognuna traducibile in una
sequenza di primitive in linguaggio macchina Es.: pesolordo pesocarico + pesoveicolo Due load, una add, una store
Programma traduttore (compilatore): traduce il programma in linguaggio macchina
Interprete: traduce ogni primitiva ed esegue subito le primitive corrispondenti del l.m., senza memorizzare la traduzione
Trasportabili da una macchina all’altra, basta cambiare compilatore
![Page 5: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/5.jpg)
5
Paradigmi di programmazione
Imperativo (procedurale): programma = sequenza di comandi che descrive un
algoritmo pensato dal programmatore Es.: pseudocodice, linguaggio macchina, Pascal, C
Dichiarativo: Basta descrivere il problema e non il suo algoritmo Algoritmo generale per risolvere i problemi Ambiti ristretti o linguaggi basati su logica matematica
(programmazione logica, Prolog)
![Page 6: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/6.jpg)
6
Paradigma funzionale
Funzioni, con ingresso e uscita Connesse in modo da costruire funzioni
complesse a partire da funzioni elementari Es.: media di una lista di valori
Somma: dato un elenco di valori, genera la somma Conta: data una lista di valori, gnera il loro numero Dividi: dati due valori, genera il quoziente della loro
divisione In LISP: (dividi (somma numeri) (conta numeri))
![Page 7: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/7.jpg)
7
![Page 8: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/8.jpg)
8
Paradigma orientato agli oggetti
Dati associati a procedure per gestirli (oggetti)
Es.: elenco di nomiProcedure per inserire un nuovo nome,
eliminarne uno, vedere se l’elenco e’ vuoto, ordinare l’elenco, ...
Un programma accede all’elenco e usa le sue procedure per gestirlo
![Page 9: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/9.jpg)
9
Paradigma orientato agli oggetti
Es.: interfaccia grafica Icone: oggetti, con procedure che vengono attivate da
eventi (clic del mouse, ...) Ogni oggetto e’ un’entita’ autonoma
Costruzione modulare del software Comunicazione tra oggetti tramite messaggi Adatta al sistema client-server Ogni procedura: programma imperativo C++: C con funzionalita’ orientate agli oggetti
![Page 10: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/10.jpg)
10
Cronologia dei paradigmi
![Page 11: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/11.jpg)
11
Concetti dei programmi imperativi
Tre categorie di istruzioni: Istruzioni dichiarative: dichiarano i nomi usati
nel programma, di solito all’inizio Istruzioni imperative: passi dell’algoritmoCommenti: spiegano i passi del programma
![Page 12: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/12.jpg)
12
Variabili e tipi
Nomi che indicano una cella di memoria Cambiando il valore in una posizione di
memoria, cambia il valore associato al nome variabile
Dichiarazione di una variabile e del tipo di dato che sara’ memorizzato nella posizione di memoria associata alla variabile
Es.: tipo intero (integer), reale (real o float), ... Operazioni diverse su tipi diversi (es. ADD e
FADD)
![Page 13: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/13.jpg)
13
Variabili e tipi
Es.: LimitePeso variabile con valore interoC, C++, Java, C#: int LimitePeso;
Es.: FineDellaLista variabile con tipo booleano (vero o falso)
Tipi usati per selezionare le operazioni giuste e per scoprire erroriEs.: somma di due variabili di tipi carattere
![Page 14: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/14.jpg)
14
![Page 15: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/15.jpg)
15
Strutture dati Variabili come nomi per dati o strutture dati
vari dati organizzaties: una lista di numeri o una matrice di nomi
Array omogeneo: blocco di valori dello stesso tipo Lista monodimensionaleTabella bidimensionale con righe e colonneTabella multidimensionale
Per creare un array: nome, lunghezza delle dimensioni Es.: (C)
int Punteggio[2] [9]; In FORTRAN: INTEGER Punteggio(2,9)
![Page 16: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/16.jpg)
16
Accesso ad un array Nome per l’intero array Nome + indici (tanti quante le dimensioni) per un singolo
elemento Linguaggi diversi hanno diversi valori iniziali degli indici Es.: per elemento in riga 2 e colonna 4:
In C: Punteggio[1][3] In FORTRAN: Punteggio(2,4)
Flessibilita’ nell’intervallo degli indici Es. (Pascal):
Punteggio: array [3..4,12..20] of integer;Elemento in seconda riga e quarta colonna: Punteggio[4,15]
![Page 17: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/17.jpg)
17
Array eterogeneo (record)
Blocco di dati di tipo possibilmente diverso Es.: Dipendente
Nome, tipo carattere Eta, tipo intero Valutazione, tipo reale
Accesso tramite nome del campo e non indice Es.: Dipendente.Eta
![Page 18: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/18.jpg)
18
![Page 19: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/19.jpg)
19
Costanti
Nome associato ad un valore costante Es.:
Ada: Max constant Integer := 200; Java: final int Max = 200; C++ e C#: cost Max = 200;
Uso della costante: A < Max
Se si vuole modificare il massimo, basta cambiare la dichiarazione della costante
![Page 20: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/20.jpg)
20
Istruzioni di assegnamento
Mette un valore nell’area di memoria associata ad una variabile
Es. (C, C++, C#, Java) Z = X + Y;
Ada, Pascal Z := X + Y;
APL Z X + Y
![Page 21: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/21.jpg)
21
Espressione nell’assegnamento
Qualunque espressione algebrica, con +, -, *, / ES.: 2*4+6/2
7 se valutata da sinistra a destra, 14 se da destra a sinistra
Precedenza degli operatori (prima * e /, poi + e -) 11
Parentesi nei linguaggi Es.: 2*(4+6)/2 10
![Page 22: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/22.jpg)
22
Istruzioni di controllo
Passi elementari dell’algoritmo Istruzione goto: salto incondizionato Pericolosa in un linguaggio ad altro livello Genera programmi difficili da capire,
modificare e correggere
![Page 23: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/23.jpg)
23
Esempio di goto
goto 4020: Applica la procedure Scappa goto 7040: If (livello < max) then goto 60 goto 2060: Applica la procedura Salva70: ...
![Page 24: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/24.jpg)
24
Esempio di goto
Programma equivalente:
If (livello < max)
then (applica la procedura Salva)
else (applica la procedura Scappa)
![Page 25: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/25.jpg)
25
Strutture di controllo (C, C++, C#, Java)
![Page 26: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/26.jpg)
26
Strutture di controllo (C, C++, C#, Java): case
![Page 27: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/27.jpg)
27
For Il corpo del ciclo viene eseguito un numero
fissato di volte, per tutti i valori di una variabile intera (contatore) in un certo intervallo
![Page 28: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/28.jpg)
28
Esempio di for in vari linguaggi
![Page 29: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/29.jpg)
29
Procedure
Programma + nome, che puo’ essere eseguito in vari posti del programma
Chiamata o attivazione di procedura Programma chiamante e chiamato La chiamata fa iniziare l’esecuzione della
procedura chiamata e sospende l’esecuzione del programma chiamante
Alla fine, si ritorna all’esecuzione del programma chiamante
![Page 30: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/30.jpg)
30
Programma chiamante e procedura chiamata
![Page 31: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/31.jpg)
31
Procedure
Una procedura e’ fatta come un programma: dichiarazioni e istruzioni
Variabili dichiarate nella procedura: variabili locali Usabili solo all’interno di quella procedura
![Page 32: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/32.jpg)
32
Parametri
Le procedure sono scritte usando parametri generici (formali)
Al momento della chiamata si dicono i dati su cui eseguire la procedura (parametri attuali)
Es.: procedure Ordina(Lista)Lista puo’ essere una lista di nomi, o un
elenco di numeri telefonici, ...
![Page 33: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/33.jpg)
33
Esempio di procedura in C
Es. di chiamata: ProjectPopulation(0.03)
![Page 34: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/34.jpg)
34
Passaggio dei parametri
Trasferimento dati tra parameri attuali e formali
Un modo (passaggio per valore): duplicato dei parametri attuali, passato alla procedura modifiche fatte dalla procedura non si riflettono sui dati del programma chiamante
![Page 35: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/35.jpg)
35
![Page 36: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/36.jpg)
36
Passaggio dei parametri
Parametri di grandi dimensioni non efficiente fare un duplicato accesso diretto ai dati del programma chiamante (passaggio per riferimento)
La procedura puo’ modificare i dati del programma chiamante
Es.: Ordina(Lista)
![Page 37: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/37.jpg)
37
![Page 38: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/38.jpg)
38
EsercizioProcedura: Procedure Modifica(Y) Y 7; Stampa(Y).Programma chiamante: X 5; Modifica(X); Stampa(X).
Parametro passato per valore: 7, 5 Parametro passato per riferimento: 7, 7
![Page 39: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/39.jpg)
39
Funzioni Scopo di una procedura: eseguire vari comandi Scopo di una funzione: calcolare un valore Una funzione passa questo valore all’unita’ chiamante Es.: nel programma chiamante:
A = Somma(Lista);Somma calcola la somma dei valori nella listaOppure: if (A < Somma(Lista)) then ...
Dichiarazione: nome + parametri + tipo del risultato Istruzione che calcola il risultato (es.: return)
![Page 40: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/40.jpg)
40
Esempio di funzione (C)
Float volumecilindro(float raggio, float altezza);{float volume;volume = 3.14 * raggio * raggio * altezza;return volume;}
Uso nel programma chiamante:Costo = costounitario * volumecilindro(3.45,12.7);
![Page 41: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/41.jpg)
41
Input/output
Le procedure piu’ usate sono predefinite Ad esempio quelle di input/output Es. (Pascal)
Readln(Valore) legge dalla tastiera e lo assegna alla variabile Valore
Writeln(Valore) visualizza sullo schermo il valore della variabile Valore
In C: scanf e printf
![Page 42: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/42.jpg)
42
Traduzione
Traduzione di un programma da un linguaggio ad un altro
Da programma sorgente a programma oggetto
Tre fasi: Analisi lessicaleAnalisi sintattica (parsing)Generazione di codice
![Page 43: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/43.jpg)
43
Fasi della traduzione
![Page 44: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/44.jpg)
44
Analisi lessicale
Da programma come stringa di caratteri a sequenza di entita’ (ognuna una stringa di caratteri)
Es.: 154 vano visti come una singola entita’, un numero
Unita’ singole (token): numeri, parole chiave, nomi di comandi, identificatori, ...
![Page 45: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/45.jpg)
45
Analisi sintattica
Input: sequenza di token Raggruppa i token in istruzioni Aiuto: parole chiave per indicare l’inizio delle
istruzioni, punto e virgola per la fine, ... Regole per definire la sintassi di un linguaggio Diagrammi sintattici per definire le regole
![Page 46: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/46.jpg)
46
Diagramma sintattico per if-then-else
![Page 47: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/47.jpg)
47
Diagrammi sintattici per le espressioni
![Page 48: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/48.jpg)
48
Albero sintattico per x+(y*z)
•Fa vedere come una stringa di tokens rispetta le regole•Analisi sintattica: costruisce l’albero sintattico del programma sorgente
![Page 49: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/49.jpg)
49
Generazione del codice
Da istruzioni generate dall’analisi sintattica a istruzioni in linguaggio macchina
Anche ottimizzazione del codice
![Page 50: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/50.jpg)
50
Programmazione orientata agli oggetti Oggetto: dato + procedure che agiscono
sul dato Esempi in C++, Java, C#
![Page 51: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/51.jpg)
51
Esempio
Videogioco: dobbiamo proteggere la terra da alcune meteore sparando con un laser
Il laser ha una sorgente di alimentazione interna, limitata
Ogni volta che il laser spara, consuma parte della sua energia
Quando l’energia finisce, il laser non puo’ piu’ sparare Il laser deve poter rispondere a comandi per puntare
a destra, a sinistra, e per ativare il raggio laser
![Page 52: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/52.jpg)
52
Esempio
Ogni laser e’ un oggetto con Valore della potenza rimasta Procedure per modificare la direzione e sparare
Classe per descrivere un laser generico Sintassi (C++, Java, C#):
Class Nome
{ ...}
![Page 53: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/53.jpg)
53
Esempio
classe Laser{ int Potenzarimasta = 100; void puntadestra ( ) {...} void puntasinistra ( ) {...} void fuoco ( ) {...}}
![Page 54: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/54.jpg)
54
Esempio
Qualsiasi oggetto creato secondo lo schema della classe Laser contiene:Una variabile intera PotenzarimastaTre procedure (metodi) puntadestra,
puntasinistra, fuoco Oggetto: istanza di una classe
![Page 55: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/55.jpg)
55
Esempio
Nel programma, tre variabili L1, L2, L3 di tipo Laser
Sintassi: Laser L1, L2, L3; Vengono creati tre oggetti secondo lo schema
della classe Laser Per far sparare il laser 1: L1.fuoco(); Per far spostare a sinistra il laser 2:
L2.puntasinistra();
![Page 56: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/56.jpg)
56
Programmazione dichiarativa
Algoritmo generale basato sulla logica formale
Es.: Carlo e’ al lavoro o e’ ammalatoCarlo non e’ al lavoro Carlo e’ ammalato
Risoluzione
![Page 57: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/57.jpg)
57
Simboli A e not(A), OR, AND, (per implicazione): asserzioni Risoluzione:
P OR QR OR not(Q)P OR R
Se (P OR Q) e (P OR not(Q)) sono vere, allora (P OR R) veraQ vero not(Q) falso R veroQ falso P vero O R o P sono vere
![Page 58: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/58.jpg)
58
Risoluzione
![Page 59: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/59.jpg)
59
Clausole
Si applica solo ad asserzioni del tipo A OR B (clausole)
Qualunque formula della logica del primo ordine puo’ essere scritta come una clausolaEs.: P Q diventa not(P) OR Q
![Page 60: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/60.jpg)
60
Consistenza
Un insieme di asserzioni e’ inconsistente se non e’ possibile che tutte le asserzioni siano vere
Es.: P e not(P) Usando la risoluzione ripetutamente,
posso scroprire se l’insieme e’ inconsistente: se produco la clausola vuota
![Page 61: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/61.jpg)
61
Esempio di inconsistenza
![Page 62: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/62.jpg)
62
Implicazione
Vogliamo provare che un insieme di asserzioni S implica P
Implicare P equivale a contraddire not(P), cioe’ far vedere che S unito a not(P) e’ inconsistente
Applico la risoluzione a S unito not(P), e vedo se genero la clausola vuota
![Page 63: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/63.jpg)
63
Unificazione
Per applicare la risoluzione a(Carlo e’ un X) OR not(Paolo e’ un X)(Paolo e’ uno studente)
Devo solo fare l’associazione X=studente Il risultato e’ (Carlo e’ uno studente) Unificazione: assegnazione di valori a
variabili
![Page 64: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/64.jpg)
64
Prolog
PROgramming in LOGic: linguaggio di programmazione dichiarativa il cui algoritmo generale e’ basato sull’uso ripetuto della risoluzione
Programma Prolog: insieme di asserzioni S Goal: asserzione P di cui provare l’implicazione Esecuzione del programma: risoluzione ripetuta
applicata a S unito not(P)
![Page 65: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/65.jpg)
65
Asserzioni in Prolog Predicati e argomenti, con valore vero o falso
Es.: genitore(bruno, maria).Vero se bruno e’ genitore di maria
Fatto Prolog: singolo predicato Regola Prolog: implicazione
Es.: saggio(X) :- vecchio(X).Significa: se X e’ vecchio, allora X e’ saggio
Es. regole e fatti: piuveloce(X,Y) :- piuveloce(X,Y), piuveloce(y,z). piuveloce(coniglio, tartaruga).
Programma Prolog: fatti e regole
![Page 66: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/66.jpg)
66
Esempiopiuveloce(tartaruga,lumaca).piuveloce(coniglio, tartaruga).piuveloce(X,Z) :- piuveloce(X,Y), piuveloce(Y,Z).
Goal1: piuveloce(tartaruga, lumaca). OK Goal2: piuveloce(coniglio, tartaruga). OK Goal3: piuveloce(consiglio, lumaca). OK Goal4: piuveloce(X, lumaca). OK se X=tartaruga o
X=coniglio Goal5: piuveloce(coniglio,Z) OK se Z=lumaca Goal6: piuveloce(V,W) Ok se ...
![Page 67: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/67.jpg)
67
Esercizio
Insieme di asserzioni consistente?P OR Q OR Rnot(R) OR QR OR not(P)not(Q)
![Page 68: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/68.jpg)
68
Esercizio
femmina(carla).femmina(susanna).maschio(bruno).maschio(giovanni).genitore(giovanni,carla).genitore(susanna, carla).mamma(X,Y) :- genitore(X,Y), femmina(X).papa(X,Y) :- genitore(X,Y), maschio(X).Goal1: mamma(susanna, carla).Goal2: papa(giovanni,bruno).
![Page 69: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/69.jpg)
69
Esempi su linguaggi
![Page 70: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/70.jpg)
70
1. Leggi n2. Inizializza S a 03. Inizializza I a 14. Esegui S = S+I5. Incrementa I (I=I+1)6. Se I<n torna a 4, altrimenti se I=n esegui 77. Stampa SRichiede n somme O(n)
Efficienza:somma dei primi n numeri 1, ..., n
![Page 71: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/71.jpg)
71
Uso la proprieta’ S = n x (n+1) /21. Leggi n2. Calcola S = n x (n+1)/23. Stampa SUna sola somma, 1 prodotto, 1 divisione: solo 3 operazioni aritmetiche piu’ efficiente (tempo costante)
Secondo algoritmo
![Page 72: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/72.jpg)
72
Main()
{
Int X=10, Y=25, Zero=0;
X=X+Y;
If (X > Zero) Y=X);
}
Esercizio: programma per somma (C++)
![Page 73: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/73.jpg)
73
Esercizio: minimo esponente e tale che 2 alla e superi X (C++)
Main()
{
Int X=10, p=1, e=0;
While (X>p)
{
p=p*2;
esponente++;
}
}
![Page 74: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/74.jpg)
74
main() { Int i; For (i=0;i<10;i++) Printf(“%d\n,i+1); }
Esempio: stampa dei numeri da 1 a 10
![Page 75: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/75.jpg)
75
Function potenza (base: real, esponente: integer): real;Var risultato: real;begin risultato := 1; While (esponente >0) begin Risultato := risultato * base; Esponente := esponente –1; End; Potenza : = risultatoEnd;
Esempio: funzione per xy (in Pascal)
![Page 76: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/76.jpg)
76
Float potenza (float base, int esponente){ Float risultato = 1.0; While (esponente >0) { Risultato = risultato * base; Esponente = esponente –1; } Return risultato;}
Esempio: funzione per xy (in C)
Es. di chiamata: z = potenza(x,3);
![Page 77: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/77.jpg)
77
Esempio (C): inizializzazione a 0 degli elementi di una matrice 20x20
#define Max 20#define zero 0.0;main(){ int i,j; float A[Max][Max]; for (i=0;i<Max;i++) for j=0; j<Max; J++) A[i][j] = zero}
Macro: ogni occorrenza di Max e zero viene sostituita con 20 e 0.0 prima di iniziare a compilare (pre-processore)
![Page 78: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/78.jpg)
78
Esempio (C++): determinare la posizione del massimo in un array di interi (while)
#include <iostream> il pre-processore include la libreria di funzioni iostream main(){ int a[]={10,0,5,-12,45,-9,23}; int i=1, max=A[0], pos_max=0; while (i<7) { if (A[i]>max) { max=A[i]; pos_max=i; } i++; } cout<<‘’Il massimo e’:’’<<max<<‘’ in posizione:’’ <<pos_max<<endI;}
Output standard (video)
Funzione << di scrittura
![Page 79: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/79.jpg)
79
Esempio (C++): determinare la posizione del massimo in un array di interi (for)
#include <iostream>main(){ int a[]={10,0,5,-12,45,-9,23}; int max=A[0], pos_max=0; for (int i=1;i<7;i++) if (A[i]>max) { max=A[i]; pos_max=i; } cout<<‘’Il massimo e’:’’<<max<<‘’ in posizione:’’ <<pos_max<< endI;}
![Page 80: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/80.jpg)
80
Esempio (C): prodotto degli elementi di un vettore di interi
main(){ int num[100]={10,0,5,-12,45,-9,23, ...}; float prod = 1.0; for (i=0;i<100;i++) prod= prod*num[i]; printf(“il Prodotto e’”,prod);}
![Page 81: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/81.jpg)
81
Esempio (C): minimo e massimo di un vettore
main(){ int V[10]={10,0,5,-12,45,-9,23,8,10,9}; int min=max=V[0]; for (i=1;i<10;i++) { if (V[i]<min) min=V[i]; if (V[i]>max) max=V[i]; }}
![Page 82: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/82.jpg)
82
Esempio (C): trovare la posizione di un elemento in un vettore
main(){ int val = 45, pos, i, T[10]={10,0,5,-12,45,-9,23,8,10,9}; pos=-1; i=0; do { if (val ==T[i]) pos=i; i++; }}
Numero di confronti O(n): 1 nel caso migliore, n nel caso pessimo (val non e’ contenuto in T)
![Page 83: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/83.jpg)
83
Esempio (C): trovare la posizione di un elemento in un vettore ordinato – ricerca binariamain( ){ int sn, dx, ct, N=10, val = 45, pos, i, T[10]={10,0,5,-12,45, 9,23,8,10,9}; pos=-1; sn = 0; dx = N-1; do { ct = (sn+dx+1)/2; if (val ==T[ct]) pos = ct; if (val < T[ct]) dx = ct-1 else sn=ct+1; } while (sn<=dx);}
Numero di confronti O(log2(n))
![Page 84: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/84.jpg)
84
Esempio (C++): numero di elementi <0 in un array
main(){ int num=0,T[10]={10,0,5,-12,45, 9,23,8,10,9}; for (i=0;i<10;i++) if (T[i] < 0) num=num+1;}
![Page 85: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/85.jpg)
85
Esercizio: trovare il minimo e il massimo di una matrice
main(){ int V[10][20]={10,0,5, ...}; int min=max=V[0][0]; for (i=0;i<10;i++) for (j=0;j<20;j++) { if (V[i][j]<min) min=V[i][j]; if (V[i][j]>max) max=V[i][j]; }}
![Page 86: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/86.jpg)
86
Esercizio: inizializzare una matrice a righe crescenti
main(){ int V[4][4]; for (i=0;i<4;i++) for (j=0;j<4;j++) { V[i][j] = j +1 + i*4; }}
9 10 11 12
5 6 7 8
1 2 3 4
13 14 15 16
![Page 87: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/87.jpg)
87
Domande
Cos’e’ un algoritmo? Che differenza c’e’ tra un algoritmo e un programma?Come si misura l’efficienza di un algoritmo?Un algoritmo che ha complessita’ O(n) e’ piu’ o meno efficiente di uno che ha complessita’ O(logn)? E di uno che e’ O(n2) o O(2n)?Cosa sono le parole chiave di un linguaggio di programmazione?
![Page 88: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/88.jpg)
88
Domande
Cos’e’ la sintassi di un linguaggio di programmazione? E la semantica?Cosa si intende per linguaggi imperativi?Cos’e’ una variabile?Cos’e’ un’espressione Booleana?Cos’e’ un assegnamento?
![Page 89: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/89.jpg)
89
Domande
Descrivere il costrutto di selezione a uno, due o piu’ ramiDescrivere i tre costrutti per l’iterazione, specificando le loro differenzeA cosa servono le dichiarazioni in un programma?Cos’e’ un sottoprogramma?Che differenza c’e’ tra una procedura e una funzione?Cosa succede quando viene chiamato un sottoprogramma?Cosa si intende per sottoprogramma ricorsivo?
![Page 90: 1 Linguaggi di programmazione. 2 Da linguaggio macchina a linguaggio assembly Linguaggi macchina (prima generazione) Codici operativi mnemonici, identificatori](https://reader035.vdocuments.pub/reader035/viewer/2022081505/5542eb4f497959361e8bf2df/html5/thumbnails/90.jpg)
90
Domande
Qual e’ la funzione di un compilatore?Cosa succede durante la fase di analisi lessicale?E quella di analisi sintattica?Fare degli esempi di tipi di dati sempliciCosa sono i tipi di dati strutturati? Fare degli esempiQuali sono le principali caratteristiche di un array?Cosa contiene la dichiarazione di un array?Quali sono le principali differenze tra array e record?