I linguaggi di programmazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "I linguaggi di programmazione"

Transcript

1 I linguaggi di programmazione 1

2 Lessico, sintassi e semantica Lessico: l insieme di regole formali per la scrittura di parole in un linguaggio Sintassi: l insieme di regole formali per la scrittura di frasi in un linguaggio, che stabiliscono cioè la grammatica del linguaggio stesso Semantica: l insieme dei significati da attribuire alle frasi (sintatticamente corrette) costruite nel linguaggio Nota: una frase può essere sintatticamente corretta e tuttavia non avere significato! Sento il micino che cinguetta e annaffio nel giardino le mie mimose blu 2

3 Esempio: la sintassi di un numero naturale <cifra-non-nulla> := <cifra> := 0 <cifra-non-nulla> <naturale> := 0 <cifra-non-nulla>{<cifra>} Diagramma sintattico 3

4 I linguaggi di programmazione: Cenni storici 1 Benché siano macchine in grado di compiere operazioni complesse, i calcolatori devono essere guidati per mezzo di istruzioni appartenenti ad un linguaggio specifico e limitato, a loro comprensibile Un linguaggio di programmazione è costituito, come ogni altro tipo di linguaggio, da un alfabeto, con cui viene costruito un insieme di parole chiave (il vocabolario) e da un insieme di regole sintattiche per l uso corretto delle parole del linguaggio A livello hardware, i calcolatori riconoscono solo comandi semplici, del tipo copia un numero, addiziona due numeri, confronta due numeri 4

5 I linguaggi di programmazione: Cenni storici 2 I primi linguaggi di programmazione coincidevano con l insieme delle istruzioni eseguibili dall hardware Le istruzioni hardware sono codificate in codice binario: ogni informazione è rappresentata, all interno della macchina, come una sequenza di bit Enorme sforzo programmativo richiesto per codificare algoritmi semplici I comandi realizzati in hardware definiscono il set di istruzioni macchina e i programmi che li utilizzano direttamente sono i programmi in linguaggio macchina 5

6 I linguaggi di programmazione: Cenni storici 3 In linguaggio macchina ogni operazione richiede l attivazione di numerose istruzioni base qualunque entità, istruzioni, variabili, dati, è rappresentata da numeri binari: i programmi sono difficili da scrivere, leggere e manutenere Il linguaggio macchina riflette l organizzazione della macchina più che la natura del problema da risolvere Dalla nascita dei primi calcolatori, si è cercato di diminuire lo sforzo ed aumentare la produttività dell utente, anche a costo di caricare la macchina di maggiori compiti 6

7 I linguaggi di programmazione: Cenni storici 4 La prima evoluzione dei linguaggi di programmazione ha portato ad una codifica di tipo simbolico, anziché binaria, dei programmi Tali versioni simboliche dei linguaggi hardware sono note come linguaggi assemblatori, dal termine usato per indicare i programmi traduttori che, ricevendo come dato la versione simbolica di un programma, producono come risultato la corrispondente forma binaria direttamente eseguibile dalla macchina Per la prima volta, con la nascita degli assembler, fu applicato il principio che è meglio risparmiare il tempo dell uomo anche a costo di sprecare tempo macchina (una parte del tempo è dedicata alla traduzione di programmi, non alla loro esecuzione) 7

8 I linguaggi di programmazione: Cenni storici 5 Negli anni 50, tutti i programmi erano scritti in linguaggio macchina o in assembly In assembly le istruzioni corrispondono univocamente alle istruzioni macchina, ma vengono espresse tramite nomi simbolici (parole chiave) piuttosto che mediante codici numerici il riferimento alle variabili viene effettuato per mezzo di nomi piuttosto che con indirizzi di memoria I programmi scritti in assembly necessitano di un apposito programma assemblatore per tradurre le istruzioni tipiche del linguaggio in istruzioni macchina 8

9 I linguaggi di programmazione: Cenni storici 6 Il passo successivo nell evoluzione dei linguaggi di programmazione tese a rendere la codifica degli algoritmi il più possibile vicina al problema da risolvere, anziché all architettura della macchina destinata all esecuzione del programma I primi due linguaggi di alto livello, FORTRAN e COBOL, hanno costrutti fortemente ispirati alla notazione usata, negli anni 50, per l elaborazione numerica e gestionale 9

10 I linguaggi di programmazione: Cenni storici 6 Il passo successivo nell evoluzione dei linguaggi di programmazione Formula Translation tese (o Translator), a rendere la codifica degli algoritmi cioè traduzione/traduttore il più possibile di vicina al problema da risolvere, formule (matematiche) anziché all architettura in algoritmi della macchina computazionali destinata all esecuzione del programma I primi due linguaggi di alto livello, FORTRAN e COBOL, hanno costrutti fortemente ispirati alla notazione usata, negli anni 50, per l elaborazione numerica e gestionale COmmon Business-Oriented Language, ossia, letteralmente, "linguaggio comune orientato alle applicazioni commerciali" 10

11 I linguaggi di programmazione: Cenni storici 7 Negli anni 70: Si diffondono i linguaggi strutturati, quali il SIMULA 67, capostipite dei linguaggi Object Oriented, l ALGOL 68, ma soprattutto il PASCAL, primo esempio di prodotto di origine accademica che abbia conosciuto vasto successo ed applicazione nel mondo dell industria In modo simile, il C, concepito come un assembler strutturato per trasportare facilmente UNIX, ha finito per diventare il linguaggio più affermato nella programmazione di sistema 11

12 I linguaggi di programmazione: Cenni storici 8 Nel periodo a cavallo tra gli anni 70 ed 80: Si moltiplicano i nuovi linguaggi tesi a rendere più gradevole ed efficiente la programmazione tradizionale e si ha l affermarsi definitivo dei linguaggi object oriented (C++ ++, Visual BASIC, Java) 12

13 I linguaggi di programmazione: Cenni storici 9 Python è un potente linguaggio di programmazione (paragonabile al C++ e Java) orientato agli oggetti e pseudocompilato. Nacque verso la fine degli anni 80 nell'istituto di matematica e informatica (CWI) di Amsterdam e fu il frutto del lavoro di alcuni ricercatori tra cui spicca particolarmente Guido van Rossum (creatore, ideatore del linguaggio e capo del team), ispirandosi al "Monty Python's Flying Circus" (una serie televisiva del periodo) Guido decise di dare un tocco di misteriosità al linguaggio e infatti lo chiamò Python (in italiano Pitone). 13

14 I linguaggi di programmazione: Cenni storici 9 Python è free Python è portabile Python è veloce Python gestisce la memoria automaticamente Python ha una sintassi chiara Python è ricco di librerie La NASA usa python per implementare i sistemi di controllo delle proprie missioni 14

15 Da basso verso alto livello In informatica si parla di programmazione di basso livello quando si utilizza un linguaggio molto vicino alla macchina Si parla invece di programmazione di alto livello quando si utilizzano linguaggi più sofisticati ed astratti, slegati dal funzionamento fisico della macchina Si viene così a creare una gerarchia di linguaggi, dai meno evoluti (il linguaggio macchina o l assembler) ai più evoluti (Pascal, Perl, Java, Python, etc.) 15

16 Linguaggi di programmazione di alto livello 1 Consentono al programmatore di trattare oggetti complessi senza doversi preoccupare dei dettagli della particolare macchina sulla quale il programma viene eseguito Richiedono un compilatore o un interprete che sia in grado di tradurre le istruzioni del linguaggio di alto livello in istruzioni macchina di basso livello, eseguibili dal calcolatore Un compilatore è un programma traduttore complesso, infatti mentre esiste una corrispondenza biunivoca fra istruzioni in assembler ed istruzioni macchina ogni singola istruzione di un linguaggio di alto livello corrisponde a molte istruzioni in linguaggio macchina: quanto più il linguaggio si discosta dal linguaggio macchina, tanto più il lavoro di traduzione del compilatore è difficile 16

17 Linguaggi di programmazione di alto livello 2 I linguaggi che non dipendono dall architettura della macchina offrono due vantaggi fondamentali: i programmatori non devono cimentarsi con i dettagli architetturali di ogni calcolatore i programmi risultano più semplici da leggere e da modificare portabilità, leggibilità, manutenibilità 17

18 Linguaggi di programmazione di alto livello 3 Eventuale svantaggio dell uso dei linguaggi di alto livello è la riduzione di efficienza È possibile utilizzare successioni di istruzioni macchina diverse per scrivere programmi funzionalmente equivalenti: il programmatore ha un controllo limitato sulle modalità con cui il compilatore traduce il codice Tuttavia i compilatori attuali ricorrono a trucchi di cui molti programmatori ignorano l esistenza La ragione fondamentale per decretare la superiorità dei linguaggi di alto livello consiste nel fatto che la maggior parte dei costi di produzione del software è localizzata nella fase di manutenzione, per la quale leggibilità e portabilità sono cruciali 18

19 Linguaggi di programmazione di alto livello 4 Sulla base dell ambito in cui si colloca il problema da risolvere, è opportuno adottare un linguaggio piuttosto che un altro: Calcolo scientifico: Fortran, python Intelligenza artificiale: Prolog, Lisp, python Applicazioni gestionali: Cobol, SQL, python 19

20 I programmi traduttori 1 Affinché un programma scritto in un qualsiasi linguaggio di programmazione sia comprensibile (e quindi eseguibile) da parte di un calcolatore, occorre tradurlo dal linguaggio originario al linguaggio della macchina Ogni traduttore è in grado di comprendere e tradurre un solo linguaggio Il traduttore converte il testo di un programma scritto in un particolare linguaggio di programmazione (sorgente) nella corrispondente rappresentazione in linguaggio macchina (eseguibile) 20

21 I programmi traduttori 2 Compilatore: opera la traduzione di un programma sorgente (scritto in linguaggio di alto livello) in un programma direttamente eseguibile dal calcolatore PRIMA si traduce tutto il programma POI si esegue la versione tradotta Interprete: traduce ed esegue il programma sorgente, istruzione per istruzione Traduzione ed esecuzione sono intercalate 21

22 I programmi traduttori 3 22

23 Il compilatore Eseguire un programma scritto in un linguaggio compilato Il programma P scritto in linguaggio L viene dato in ingresso a un programma P Comp P Comp è il programma compilatore del linguaggio L (ad esempio il programma compilatore del C) L esecuzione da parte di un calcolatore di P Comp su P (dove P è il dato di ingresso) produce P exe FASE di COMPILAZIONE (compile time) L esecuzione da parte di un calcolatore di P exe su particolari dati in input produce i relativi risultati FASE di ESECUZIONE (run time) 23

24 LINGUAGGIO MACCHINA e ASSEMBLER Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA

25 Istruzioni di una CPU minima Insieme minimale di istruzioni Ogni istruzione memorizzata in una parola di memoria

26 CPU ALU C I R 0 R 1... R 7 RC PC IR ALU riconosce la prossima istruzione e chiama il C I corrispondente BUS RAM Dati Programma in linguaggio macchina

27 3 tipi di istruzioni macchina: 1) di trasferimento tra RAM e registri di calcolo della CPU 2) aritmetiche: somma,differenza, moltiplicazione, e divisione 3) di controllo (confronto, salto e stop)

28 Attenzione: Le istruzioni vengono eseguite una di seguito all'altra nell'ordine in cui esse sono memorizzate nella RAM Il terzo gruppo di istruzioni (confronto e salto) permette di modificare questo ordine.

29 Istruzioni di trasferimento: registri RAM ALU R 0 R 1 R LOAD STORE PC IR STORE LOAD LOAD STORE STOP

30 in binario! Formato: codice-op n. registro indirizzo parola RAM Codici: Esempio: 8 bit 4 bit 20 bit 1 parola LOAD STORE

31 ARITMETICHE eseguono somma, differenza, moltiplicazione e divisione usando i registri come operandi C I R i R j INTADD FLOATADD INTSUB FLOATSUB INTMULT FLOATMULT INTDIV FLOATDIV

32 FORMATO: codice-op reg 1 reg 2 8 bit 4 bit 4 bit inutilizzati 1 parola Esempio: xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx

33 Confronto paragona il contenuto di 2 registri R ed R e: i j se R < R mette -1 nel registro RC i j se R = R mette 0 in RC i j se R i > R j mette 1 in RC C Cf R i R j RC Codici: INTCOMPARE FLOATCOMPARE

34 FORMATO codice-op reg 1 reg 2 8 bit 4 bit 4 bit inutilizzati 1 parola Esempio: xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx

35 Salto istruzioni che permettono di saltare ad un altra istruzione del programma a seconda del contenuto di RC (cioè a seconda del risultato di un confronto) BRLT BRNE BRLE BRGE BREQ BRGT BRANCH Anche salto incondizionato!

36 FORMATO codice-op indirizzo RAM 8 bits inutilizzati 20 bit 1 parola Esempio: xxxx xxxx

37 BRLT J: se RC=-1 pone P=J altrimenti incrementa P di 1 BRLE J:se RC<1 pone P=J altrimenti incrementa P di 1 BREQ J:se RC=0 pone P=J altrimenti incrementa P di 1 BRGT J:se RC=1 pone P=J altrimenti incrementa P di 1 BRGE J:se RC>-1 pone P=J altrimenti incrementa P di 1

38 STOP termina il programma Codice: STOP

39 codice-op FORMATO 8 bits inutilizzati 1 parola Esempio: xxxxxxxxxxxxxxxxxxxxxxxx

40 esempio scriviamo un programma in linguaggio macchina che: trasferisce il contenuto delle 2 parole della RAM di indirizzi 64 e 68 nei registri R ed R 0 1 somma i contenuti dei registri R 0 ed R 1 trasferisce il risultato nella parola della RAM all indirizzo 60

41 byte byte parola Copia 64 in R0 Copia 68 in R1 Somma R0 e R1 Copia R0 in RAM RAM

42 Problemi del linguaggio macchina: i programmi in binario sono difficili da scrivere, capire e modificare. il programmatore deve occuparsi di gestire la RAM (visto che I loro indirizzi devono far parte del programma) : difficile ed inefficiente. primo passo Assembler

43 Caratteristiche dell Assembler codici mnemonici per le operazioni nomi mnemonici (identificatori) al posto degli indirizzi RAM dei dati nomi mnemonici (etichette) al posto degli indirizzi RAM delle istruzioni (usati nei salti) avanzate: tipi dei dati INT e FLOAT (normalmente non presenti)

44 codice-op mnemonici: trasferimento: LOAD (RAM CPU) e STORE (CPU RAM) aritmetiche: INTADD,INTSUB,INTMULT,INTDIV,FLOA TADD,FLOATSUB,FLOATMULT,FLOATDIV test: INTCOMPARE,FLOATCOMPARE salto: BREQ,BRGT,BRLT,BRGE,BRLE, BRANCH terminazione: STOP

45 stesso esempio del linguaggio macchina Z : INT ; X : INT 38; Y : INT 8 ; LOAD R0 X; LOAD R1 Y; INTADD R0 R1; STORE R0 Z; dichiarazioni degli identificatori dei dati Riga vuota istruzioni assembler

46 Il programma scritto in assembler rispecchia molto da vicino il programma scritto in linguaggio macchina Inoltre è facile riconoscere la sua struttura e rappresentarla con un diagramma di flusso ATTENZIONE: il programma assembler non può essere eseguito direttamente dall'hardware di un computer!!!!!!

47 esempio carica due valori dalla RAM, li somma e mette il risultato al posto del maggiore dei 2 numeri sommati (nel caso siano uguali, non importa in quale dei due si mette la somma)

48 X: INT 38; Y: INT 8; LOAD R0 X; LOAD R1 Y; LOAD R2 X; INTADD R2 R1; INTCOMPARE R0 R1; BRGE maggiore; STORE R2 Y; STOP; maggiore: STORE R2 X; STOP;

49 flowchart LOAD R0 X; LOAD R1 Y; LOAD R2 X; INTADD R2 R1; SI R0 R1? NO STORE R2 X; STORE R2 Y; test STOP

50 esempio Caricato in memoria un valore reale x ne calcola il valore assoluto e lo stampa.

51 ZeroF : FLOAT 0; X: FLOAT ; AbsX: FLOAT; LOAD R0 ZeroF; LOAD R1 X; FLOATCOMPARE R1 R0; BRGE maggiore; FLOATSUB R0 R1; STORE R0 AbsX; BRANCH fine; maggiore: STORE R1 AbsX; fine: STOP; RAM ZeroF: 0 X: ? Absx: ? R0: ? 0 R1: ? RC: CPU -1?

52 flowchart LOAD R0 ZeroF; LOAD R1 X; NO R1 R0? SI FLOATSUB R0 R1; STORE R0 AbsX; maggiore: STORE R1 AbsX; STOP;

53 NO R1 R0? SI FLOATSUB R0 R1; STORE R0 AbsX; STORE R1 AbsX; condizione o test

54 Cicli e complessità Leggere un reale x ed un intero positivo n e calcolare la potenza x n Esempio potenza

55 X: FLOAT 3; N: INT 4; Ris: FLOAT ; Uno : INT 1; Unofl: FLOAT 1.0; LOAD R0 Uno; INTSUB R0 R0; LOAD R1 Uno; LOAD R2 X; LOAD R3 N; LOAD R4 Unofl; X: 3,0 N: 4 Ris:? Uno: 1 Unofl: 1,0 R0: 0 R1: 1 R2: 3,0 R3: 4 R4: 1,0 RC:?

56 All inizio del ciclo: R4 = X N-R3 Ciclo: INTCOMPARE R3 R0; BREQ Esci; FLOATMULT R4 R2; INTSUB R3 R1; BRANCH Ciclo; Esci: STORE R4 Ris; STOP; Durante il ciclo: R4 = X N-R3 Alla fine del ciclo: R3=0 ed R4 = X N X: 3,0 N: 4 Ris: 81,0? Uno: 1 Unofl: 1,0 R0: 0 R1: 1 R2: 3,0 R3: R4: 27,0 81,0 3,0 9,0 RC:? 10

57 flowchart LOAD R0 Uno; LOAD R1 Uno; LOAD R2 X; LOAD R3 N; LOAD R4 Unofl; INTSUB R0 R0; Ciclo: R3 = R0? NO SI FLOATMULT R4 R2; INTSUB R3 R1; Esci: STORE R4 Ris; STOP

58 Nel programma precedente, per calcolare x n, il ciclo viene ripetuto n volte. Il numero di operazioni eseguite, e quindi il tempo calcolo richiesto, aumenterà proporzionalmente con l aumentare di n. Diciamo che il programma ha complessità tempo O(n). Vediamo un altro modo per calcolare x n.

59 Useremo un metodo più veloce che usa la rappresentazione binaria b k-1 b k-2 b 1 b 0 di N per scomporre la potenza come segue b b b b b b b b N X X X X X X k k k k k k k k = = dove = = = 1 se 0 se i i b b X b X i i i

60 Per calcolare: = b b b b N X X X X X k k k k R2 R2 R = = X X R2 R2 R = = X X R2 R2 R = = X X = = = 1 se R2 R4 0 se R4 R b b X b X X X = = R2 1.0 R4 = = = 1 se R2 R4 0 se R4 R b b X X b b = = = 1 se R2 R4 0 se R4 R b b X X X b b b

61 Il registro R3 ha inizialmente il valore N Ad ogni esecuzione viene diviso per 2 (per assumere alla fine il valore 0 che fa uscire dal ciclo) Ad ogni iterazione viene calcolato in R5 il resto della divisione per 2 di R3 (il bit b i ) Il registro R4 viene moltiplicato per R2 solo se R5 è diverso da zero

62 X: FLOAT 3; N: INT 5; Ris: FLOAT ; Due : INT 2; Unofl: FLOAT 1.0; App: INT; LOAD R0 Due; INTSUB R0 R0; LOAD R1 Due; LOAD R2 X; LOAD R3 N; LOAD R4 Unofl; LOAD R5 Due; X: 3,0? N:? 5 Ris:? Due: 2 Unofl: 1,0 R0:? 20 R1:? 2 R2: 3,0? R3:? 5 R4: 1,0? R5:? 2 RC:?

63 Ciclo:INTCOMPARE R3 R0; BREQ Esci; INTSUB R5 R5; INTADD R5 R3; MOD R5 R1; INTCOMPARE R5 R0; BREQ Pari; FLOATMULT R4 R2; Pari: FLOATMULT R2 R2; INTDIV R3 R1; BRANCH Ciclo; X: 3,0 N: 5 Ris:? Due: 2 Unofl: 1,0 R0: 0 R1: 2 R2: 6561,0 81,0 3,0 9,0 R3: R4: 243,0 1,0 R5: RC:? 10

64 Ciclo:INTCOMPARE R3 R0; BREQ Esci; INTSUB R5 R5; INTADD R5 R3; MOD R5 R1; INTCOMPARE R5 R0; BREQ Pari; FLOATMULT R4 R2; Pari: FLOATMULT R2 R2; INTDIV R3 R1; BRANCH Ciclo; X: 3,0 N: 5 Ris:? Due: 2 Unofl: 1,0 STORE R3 APP; LOAD R6 APP; INTDIV R6 R1; INTMULT R6 R1; INTSUB R5 R6; R2: 6561,0 81,0 3,0 9,0 R0: 0 R1: 2 R3: R4: 243,0 1,0 R5: RC:? 10

65 Esci: STORE R4 Ris; STOP; X: 3,0 N: 5 Ris: 243,0? Due: 2 Unofl: 1,0 R0: 0 R1: 2 R2: 6561,0 R3: 0 R4: 243,0 R5: 1 RC: 0

66 flowchart LOAD R0 Due; LOAD R1 Due; LOAD R2 X; LOAD R3 N; LOAD R4 Unofl; LOAD R5 Due; INTSUB R0 R0; Quante volte viene ripetuto il ciclo? R3 = R0? NO INTSUB R5 R5; INTADD R5 R3; MOD R5 R1; R5 = R0? NO FLOATMULT R4 R2; FLOATMULT R2 R2; DIV R3 R1; SI SI STORE R4 Ris; STOP;

67 All inizio R3 = n (intero), ad ogni iterazione R3 è diviso per 2 e ci si ferma quando R3 = 0, ossia quando il un numero di iterazioni k eseguite è tale che 2 k n ma 2 k+1 > n. Quindi il ciclo viene ripetuto k log n volte. 2 Il tempo calcolo richiesto aumenterà proporzionalmente a log n. 2 Diciamo che il programma ha complessità tempo O(log n). 2

68 Come aumenta il tempo al variare di n. Tabelle complessità (Processore a 1 Mips (milioni di istruzioni al secondo).) NumIstr(n) n=10 n=100 n=1000 n=10 6 n=10 9 log 2 n 3 µs 6 µs 9 µs 18 µs 27 µs n 10 µs 100 µs 1 ms 1 s 17 m n µs 10 ms 1 s 278 ore > anni n 3 1 ms 1 s 17 m > anni 2 n 1 ms >10 16 anni 10 n 17 min >10 92 anni

69 Complessità Problemi INTRATTABILI: problemi computazionali la cui complessità è espressa da una funzione esponenziale o più che esponenziale

70 La CPU non capisce l assembler!! il programma assembler deve essere tradotto in un programma macchina programma assembler assemblatore macchina hardware

71 Programma assembler P Dati D interprete Gli stessi risultati che si otterrebbero eseguendo il programma P con i dati D Siccome la CPU MINIMA è una CPU virtuale noi usiamo un interprete per eseguire i programmi assembler.

72 OSSERVAZIONE Esistono quindi programmi che hanno programmi come dati.

73 Ha senso quindi cercare un programma Test che sia in grado di leggere un qualsiasi programma P e i relativi dati D e dire se, eseguendo il programma P con i dati D, esso termina oppure entra in un ciclo infinito e quindi non termina. Test READ INP P READ INP D P(D) termina? WRITE OUT SI WRITE OUT NO

74 Il programma Coppia legge un programma P e stampa due copie dello stesso programma P. Componendolo con un interprete Iterpr otteniamo il programma Riflex che con input un programma P lo esegue con dati il programma stesso P. P P Coppia READ INP P WRITE OUT P Riflex Coppia P P WRITE OUT P P P Interpr P(P)

75 Usando il programma ipotetico Test ed il programma Riflex costruiamo un programma Assurdo nel modo seguente. P READ INP P Assurdo Prefix Invert WRITE OUT Riflex WRITE OUT P Riflex P Si o No READ INP RISP Si RISP? No Prefix Test P Invert Riflex P Si o No

76 Quindi il programma Assurdo, con input un qualsiasi programma P, si comporta nel modo seguente: Se P con input P non termina allora Assurdo con input P termina. Se P con input P termina allora Assurdo con input P non termina. Se Assurdo con input Assurdo non termina allora Assurdo con input Assurdo termina. Se Assurdo con input Assurdo termina allora Assurdo con input Assurdo non termina.

77 COMPUTABILITA' Problemi computazionali INSOLUBILI: problemi per i quali non esiste alcun programma che li risolva

78 L arte della programmazione 1 La soluzione di un problema tramite un programma è un procedimento che non si esaurisce nello scrivere codice in un dato linguaggio di programmazione, ma comprende una fase di progetto, che precede, e di verifica, che segue, la scrittura del codice Definizione del problema Algoritmo per la soluzione del problema Analisi Codifica Debugging Validazione Programmazione Documentazione Manutenzione 78

79 L arte della programmazione 2 Definizione del problema Definizione degli ingressi e delle uscite quali variabili quale dominio per ogni variabile Risoluzione delle ambiguità Scomposizione in (sotto )problemi più semplici Definizione dell algoritmo Soluzione in pseudocodice Soluzione mediante diagramma a blocchi strutturato 79

80 L arte della programmazione 3 Codifica Traduzione dell algoritmo in istruzioni del linguaggio di programmazione Debugging, correzione degli errori sintattici e semantici Errori sintattici Espressioni non valide o non ben formate nel linguaggio di programmazione Errori semantici Comportamento non aderente alle aspettative/alla intenzionalità del programmatore 80

81 L arte della programmazione 4 Validazione Test su tutte le condizioni operative del programma Test su input estremi (es., vettori di dimensione 0 o 1, variabili nulle) Documentazione Inserimento di commenti esplicativi nelle varie parti del programma per facilitarne la comprensione (dopo molto tempo dalla stesura o per terze persone) Manutenzione Modifica del programma per soddisfare al cambiamento delle specifiche con cui deve operare 81

82 I commenti 1 Perché commentare e documentare i programmi? I programmi vengono utilizzati più volte nel corso di tempi lunghi (mesi, anni) per fare cambiamenti (aggiunta di caratteristiche) risolvere errori Commentare il programma serve a rendere chiaro ed evidente lo scopo delle diverse parti del codice 82

83 I commenti 2 Inoltre: Si devono evitare commenti inutili Si deve evitare di inserirne troppo pochi Un buon metodo per verificare il livello di documentazione è quello di leggere solo i commenti (e non il codice) ed ottenere una chiara idea su cosa fa un programma e come lo fa 83

LINGUAGGIO MACCHINA e ASSEMBLER. Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA

LINGUAGGIO MACCHINA e ASSEMBLER. Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA LINGUAGGIO MACCHINA e ASSEMBLER Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA Nel computer non vengono memorizzati soltanto i dati da elaborare ma anche il programma

Dettagli

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina

Dettagli

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni Istruzioni macchina Linguaggio macchina Insieme delle istruzioni (instruction set) che la CPU puo eseguire Capitolo 10 1 2 Elementi di un istruzione macchina Codice operativo Specifica l operazione da

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada

Dettagli

Sorgenti di errore. Laboratorio di Informatica 1

Sorgenti di errore. Laboratorio di Informatica 1 Sorgenti di errore Semplificazioni introdotte nel modello Errori nei dati (errore inerente) Errori di arrotondamento nei dati e nei calcoli (errori dovuti alla precisione finita) Errori di troncamento:procedimento

Dettagli

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche 3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni

Dettagli

Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri

Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri Concetti di Base sulla Programmazione Prof.Ing.S.Cavalieri 1 La Programmazione Dato un problema INFORMATICO, programmare significa: Definire i dati in ingresso e il risultato che si vuole raggiungere Definire

Dettagli

I linguaggi di alto livello

I linguaggi di alto livello I linguaggi di alto livello 1 Sommario Introduzione alla programmazione Caratteristiche dei linguaggi di programmazione I linguaggi di programmazione di alto livello Compilatori e interpreti L arte della

Dettagli

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione DAGLI ALGORITMI AI LINGUAGGI Linguaggi di Programmazione E` una notazione con cui e` possibile descrivere gli algoritmi. Programma: e` la rappresentazione di un algoritmo in un particolare linguaggio di

Dettagli

Il linguaggio di programmazione Python

Il linguaggio di programmazione Python Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio

Dettagli

Informatica (A-K) 6. Linguaggi di programmazione

Informatica (A-K) 6. Linguaggi di programmazione I linguaggi di alto livello Informatica (A-K) 6. Linguaggi di programmazione Introduzione alla programmazione Caratteristiche dei linguaggi di programmazione I linguaggi di programmazione di alto livello

Dettagli

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C

Dettagli

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lez. 5 La Programmazione. Prof. Salvatore CUOMO Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

Unità Didattica 2 I Linguaggi di Programmazione

Unità Didattica 2 I Linguaggi di Programmazione Unità Didattica 2 I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche

Dettagli

Programmazione: Sommario

Programmazione: Sommario Programmazione: Sommario Concetti di Base della Programmazione; Algoritmi; Diagrammi di Flusso; Istruzioni Sequenziali, Condizionali, Cicliche; Logo Variabili, Procedure e Parametri; 1 Il Problema computazionale

Dettagli

Introduzione alla programmazione. Walter Didimo

Introduzione alla programmazione. Walter Didimo Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata

Dettagli

Fondamenti di Algoritmi

Fondamenti di Algoritmi Fondamenti di Algoritmi Corsi di Informatica Grafica Prof. Manuel Roveri Dipartimento di Elettronica e Informazione roveri@elet.polimi.it Indice Algoritmi: Definizione Diagrammi di Flusso Esempi ed esercizi

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Parte 2 Linguaggi di programmazione Livello di Astrazione per la Codifica di un Algoritmo Si può risolvere un problema senza prima fissare un insieme di azioni, di mosse elementari possibili per l elaboratore?

Dettagli

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo Algoritmi, linguaggi e programmi Emilio Di Giacomo e Walter Didimo Risolvere i problemi Il calcolatore permette di risolvere molti problemi, ma sfortunatamente non tutti Il concetto di algoritmo consente

Dettagli

Introduzione alla programmazione PROGRAMMAZIONE

Introduzione alla programmazione PROGRAMMAZIONE Introduzione alla programmazione PROGRAMMAZIONE 1 Introduzione alla programmazione Definizione Un algoritmo è una collezione ordinata di operazioni non ambigue e computabili che, una volta eseguite, producono

Dettagli

Il calcolatore. Architettura di un calcolatore (Hardware)

Il calcolatore. Architettura di un calcolatore (Hardware) Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti

Dettagli

Teoria dell Informazione

Teoria dell Informazione Corso di Laurea Magistrale in Scienze dell Informazione Editoriale, Pubblica e Sociale Teoria dell Informazione Cosa è l informazione L informazione è qualcosa che si possiede e si può dare ad un altro

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

Dettagli

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione Corso di Fondamenti di Informatica Linguaggi di Programmazione Anno Accademico Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di

Dettagli

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono

Dettagli

; programma MOV AX, DATO_1. ; somma al contenuto dell' accumulatore il contenuto del registro B

; programma MOV AX, DATO_1. ; somma al contenuto dell' accumulatore il contenuto del registro B Linguaggi di programmazione Il linguaggio base di un elaboratore è il linguaggio macchina. Linguaggio macchina: insieme di istruzioni espresse nel formato numerico (binario) di un particolare processore.

Dettagli

Programmazione strutturata

Programmazione strutturata Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Gestionale (L-Z) 3. (testo di riferimento: Bellini-Guidi) Ing. Michele Ruta 1di 29 Linguaggi di programmazione Un programma è un algoritmo

Dettagli

Programmazione C Massimo Callisto De Donato

Programmazione C Massimo Callisto De Donato Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

la traduzione dei programmi ed introduzione a Java

la traduzione dei programmi ed introduzione a Java la traduzione dei programmi ed introduzione a Java programmi descrizioni di algoritmi effettuate tramite linguaggi di programmazione lo stesso algoritmo, fissato un linguaggio di programmazione, può essere

Dettagli

Informatica Generale Andrea Corradini I linguaggi di programmazione

Informatica Generale Andrea Corradini I linguaggi di programmazione Informatica Generale Andrea Corradini 17 - I linguaggi di programmazione Sommario Cos'è un linguaggio di programmazione? Una prospettiva storica: linguaggi di prima, seconda e terza generazione I paradigmi

Dettagli

Introduzione alla Programmazione. Giselda De Vita

Introduzione alla Programmazione. Giselda De Vita Introduzione alla Programmazione Giselda De Vita - 2015 1 Sulla base dell ambito in cui si colloca il problema da risolvere, è opportuno adottare un linguaggio piuttosto che un altro: ² Calcolo scientifico:

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende

Dettagli

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI Giacomo Piscitelli pag. 1/10 Dall Algoritmo al Programma Metodo risolutivo problema algoritmo Linguaggio programma Individuazione di un metodo risolutivo

Dettagli

Introduzione al Calcolo Scientifico

Introduzione al Calcolo Scientifico Introduzione al Calcolo Scientifico Francesca Mazzia Dipartimento di Matematica Università di Bari Francesca Mazzia (Univ. Bari) Introduzione al Calcolo Scientifico 1 / 14 Calcolo Scientifico Insieme degli

Dettagli

LA CODIFICA DELLE INFORMAZIONI

LA CODIFICA DELLE INFORMAZIONI LA CODIFICA DELLE INFORMAZIONI Linguaggio Elaborazione delle informazioni: operazioni che possono essere effettuate sulle informazioni: inserimento, archiviazione, modifica, ordinamento, calcolo, ecc.

Dettagli

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE Riccardo Dondi Dipartimento di Scienze dei linguaggi, della comunicazione e degli studi culturali Università degli Studi di Bergamo Informazione sul corso

Dettagli

Cos è. In un linguaggio di programmazione si possono distinguere:

Cos è. In un linguaggio di programmazione si possono distinguere: Cos è Un linguaggio di programmazione è un linguaggio dotato di un insieme di regole per scrivere programmi per computer, ovvero un insieme di istruzioni che a partire da un insieme di dati di input, applicando

Dettagli

Traduzione ed Interpretazione

Traduzione ed Interpretazione Traduzione ed Interpretazione Queste sconosciute Siano L Linguaggio ad alto livello M L Macchina astratta di L M 0 Macchina ospite Implementazione interpretativa di L Implementazione compilativa di L Simulazione

Dettagli

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema Algoritmo 2 Procedimento di risoluzione di un problema La programmazione Ver. 2.4 Permette di ottenere un risultato eseguendo una sequenza finita di operazioni elementari Esempi: Una ricetta di cucina

Dettagli

Linguaggi di programmazione e astrazione

Linguaggi di programmazione e astrazione Linguaggi di programmazione e astrazione i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori che possono, con un solo

Dettagli

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli

Dettagli

Fondamenti di Informatica 7. Linguaggi di programmazione

Fondamenti di Informatica 7. Linguaggi di programmazione I linguaggi di alto livello Fondamenti di Informatica 7. Linguaggi di programmazione Introduzione alla programmazione Caratteristiche dei linguaggi di programmazione I linguaggi di programmazione di alto

Dettagli

Linguaggi, compilatori e interpreti

Linguaggi, compilatori e interpreti Linguaggi, compilatori e interpreti 1 Il codice macchina Ciascun calcolatore ha un ampio insieme di istruzioni che è in grado di eseguire. Le istruzioni vengono rappresentate mediante sequenze di bit 001000100011

Dettagli

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1 Data: 12-10-2016 Pag: 8 10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1 1. Definizioni a) Linguaggi Naturali = i linguaggi degli esseri umani Lessico = le parole che si usano Sintassi = le regole con cui si

Dettagli

Cosa è l Informatica?

Cosa è l Informatica? Cosa è l Informatica? Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Scienza della rappresentazione, memorizzazione, elaborazione e trasmissione dell informazione Elaboratore

Dettagli

Concetti Introduttivi. Il Computer

Concetti Introduttivi. Il Computer Concetti Introduttivi Il Computer Introduzione Informazione Notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere Messaggio Tutto ciò che porta

Dettagli

Unità di apprendimento 6. Il software: dal linguaggio alla applicazione

Unità di apprendimento 6. Il software: dal linguaggio alla applicazione Unità di apprendimento 6 Il software: dal linguaggio alla applicazione Unità di apprendimento 6 Lezione 2 Conosciamo i linguaggi di programmazione In questa lezione impareremo: che cos è un linguaggio

Dettagli

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Richiamo sull

Dettagli

Linguaggi di alto livello, compilatori e interpreti

Linguaggi di alto livello, compilatori e interpreti Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

AMBIENTI DI PROGRAMMAZIONE

AMBIENTI DI PROGRAMMAZIONE AMBIENTI DI PROGRAMMAZIONE È l'insieme dei programmi che consentono la scrittura, la verifica e l'esecuzione di nuovi programmi (fasi di sviluppo) Sviluppo di un programma Affinché un programma scritto

Dettagli

Marta Capiluppi Dipartimento di Informatica Università di Verona

Marta Capiluppi Dipartimento di Informatica Università di Verona Marta Capiluppi marta.capiluppi@univr.it Dipartimento di Informatica Università di Verona I Dati Ogni variabile è caratterizzata da Nome Valori Tipo Numeri naturali o interi o reali (1, -2, 0.34) Caratteri

Dettagli

Macchine Astratte. Luca Abeni. February 22, 2017

Macchine Astratte. Luca Abeni. February 22, 2017 Macchine Astratte February 22, 2017 Architettura dei Calcolatori - 1 Un computer è composto almeno da: Un processore (CPU) Esegue le istruzioni macchina Per fare questo, può muovere dati da/verso la memoria

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine astratte, linguaggi, interpretazione, compilazione Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta

Dettagli

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Introduzione a Java IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Linguaggi di programmazione Ogni programma viene scritto utilizzando un linguaggio specializzato, formale e comprensibile da

Dettagli

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1 Concetti base della Tecnologia dell informazione Algoritmi Come interpreta un computer un problema? Algoritmi Algoritmo: sequenza ordinata di istruzioni per risolvere un problema (tradotto: sequenza di

Dettagli

Programmazione. Andrea Passerini Informatica. Programmazione

Programmazione. Andrea Passerini Informatica. Programmazione Andrea Passerini passerini@disi.unitn.it Informatica Linguaggi di programmazione Il calcolatore è in grado di comprendere solo istruzioni in linguaggio macchina. Il linguaggio macchina non è adatto alla

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Programmi. Algoritmi scritti in un linguaggio di programmazione

Programmi. Algoritmi scritti in un linguaggio di programmazione Programmi Algoritmi scritti in un linguaggio di programmazione Sistema operativo:programma supervisore che coordina tutte le operazioni del calcolatore Programmi applicativi esistenti Sistemi di videoscrittura

Dettagli

Concetti di base dell ICT

Concetti di base dell ICT Informatica Linguaggio di programmazione Computer Bit Algoritmo Linguaggio macchina Informatica: Informazione automatica Gli anglosassoni usano il termine Computer Science = Scienza dei Calcolatori Computer:

Dettagli

Programmazione al livello del CPU

Programmazione al livello del CPU Corsi di Laurea in Biologia e Biologia Molecolare Università di Padova, AA 2012/2013 Programmazione al livello del CPU www.stoianov.it info@stoianov.it 1 Esecuzione condizionale Eseguire blocco A o blocco

Dettagli

Lecture 2: Prime Istruzioni

Lecture 2: Prime Istruzioni [http://www.di.univaq.it/muccini/labarch] Modulo di Laboratorio di Architettura degli Elaboratori Corso di Architettura degli Elaboratori con Laboratorio Docente: H. Muccini Lecture 2: Prime Istruzioni

Dettagli

Linguaggi e moduli. Dott. Franco Liberati

Linguaggi e moduli. Dott. Franco Liberati (canale A-D) A Linguaggi e moduli Dott. Franco Liberati Linguaggi di programmazione Compilatore Assemblatore Linker (collegatore) LINKER COMPILATORE ASSEMBLATORE LINGUAGGI DI PROGRAMMAZIONE Linguaggio

Dettagli

Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione con i diagrammi di flusso (Flow - chart) Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo

Dettagli

COMPILAZIONE. Tarsformazione di linguaggi

COMPILAZIONE. Tarsformazione di linguaggi COMPILAZIONE Tarsformazione di linguaggi Le fasi della compilazione File sorgente Compilazione File sorgente File sorgente File sorgente Compilazione Compilazione Compilazione Libreria di run-time File

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Problema Algoritmo Programma Progettista Programmatore Progetto Programma Esecutore Computer Comittente Utente Dal problema all algoritmo Problema Risolutore ed esecutore Algoritmo

Dettagli

PROBLEMI ALGORITMI E PROGRAMMAZIONE

PROBLEMI ALGORITMI E PROGRAMMAZIONE PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

INFORMATICA. Scienza degli elaboratori elettronici (Computer. informazione

INFORMATICA. Scienza degli elaboratori elettronici (Computer. informazione Varie definizioni: INFORMATICA Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione informazione Definizione proposta: Scienza della rappresentazione e dell elaborazione elaborazione

Dettagli

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Calcolatori Elettronici Parte VIII: linguaggi assemblativi Anno Accademico 2013/2014 Calcolatori Elettronici Parte VIII: linguaggi assemblativi Prof. Riccardo Torlone Universita di Roma Tre Linguaggi di Programmazione Linguaggi ad alto livello Maggiore espressività

Dettagli

Dall algoritmo al programma

Dall algoritmo al programma Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione

Dettagli

Algoritmi e Linguaggi

Algoritmi e Linguaggi Algoritmi e Linguaggi Programmi e linguaggi Un calcolatore è solo un esecutore rapidissimo di istruzioni Un programma è un insieme di istruzioni codificate in un opportuno linguaggio 2 / 21 Linguaggi e

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia talia@deis.unical.it A.A. 2002-2003 Facoltà di Ingegneria UNICAL Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica

Dettagli

Come ragiona il computer. Problemi e algoritmi

Come ragiona il computer. Problemi e algoritmi Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Per risolvere il problema

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Introduzione al funzionamento di un calcolatore elettronico

Introduzione al funzionamento di un calcolatore elettronico 1 / 21 Introduzione al funzionamento di un calcolatore elettronico Natascia Piroso 23 settembre 2009 2 / 21 Sommario Che cos è un calcolatore? 1 Che cos è un calcolatore? Definizioni preliminari Il calcolatore

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO Rappresentazione degli algoritmi Problema Algoritmo Algoritmo descritto con una qualche notazione Programma Defne del procedimento

Dettagli

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi Lezione 8 Introduzione agli algoritmi Lezione tratta dal libro: D. Sciuto, G. Buonanno, W. Fornaciari, L. Mari Introduzione ai sistemi informatici Seconda Edizione, McGraw-Hill Capitolo 2: La formalizzazione

Dettagli

Corso di Architettura (Prof. Scarano) 09/04/2002

Corso di Architettura (Prof. Scarano) 09/04/2002 Corso di Architettura (Prof. Scarano) 09/0/2002 Un quadro della situazione Lezione 15 Il Set di Istruzioni (1) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno

Dettagli

Corso di Informatica di Base

Corso di Informatica di Base Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere

Dettagli

Valutazione delle prestazioni

Valutazione delle prestazioni Valutazione delle prestazioni Architetture dei Calcolatori (lettere A-I) Valutazione delle prestazioni Misura/valutazione di un insieme di parametri quantitativi per Quantificare le caratteristiche di

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Problemi, algoritmi e programmi 1 L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni elementari le azioni vengono eseguite

Dettagli

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione di Cassino e del Lazio Meridionale Corso di Informatica Linguaggi di Programmazione Anno Accademico 2014/2015 Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann

Dettagli

Fondamenti VBA. Che cos è VBA

Fondamenti VBA. Che cos è VBA Fondamenti VBA Che cos è VBA VBA, Visual Basic for Application è un linguaggio di programmazione, inserito nelle applicazioni Office di Microsoft (Ms Word, Ms Excel, Ms PowerPoint, Visio). VBA è una implementazione

Dettagli

LABORATORIO di INFORMATICA

LABORATORIO di INFORMATICA Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto ALGORITMI E LINGUAGGI http://www.diee.unica.it/giacinto/lab

Dettagli

Rapida Nota sulla Rappresentazione dei Caratteri

Rapida Nota sulla Rappresentazione dei Caratteri TECNOLOGIA DIGITALE TECNOLOGIA DIGITALE (segue) CPU, memoria centrale e dispositivi sono realizzati con tecnologia elettronica digitale Dati ed operazioni vengono codificati tramite sequenze di bit 8 bit

Dettagli

Il software: dall algoritmo al linguaggio macchina

Il software: dall algoritmo al linguaggio macchina Il software: dall algoritmo al linguaggio macchina Raffaella Brighi, a.a. 2007/08 Lezione II 3 ottobre 2007 Corso di Informatica A.A. 2007-08 CdL Operatore Giuridico d Impresa. Linguaggi di programmazione

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

La codifica digitale

La codifica digitale La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore

Dettagli

Prof.Claudio Maccherani 1995

Prof.Claudio Maccherani 1995 I.T.C. "V.Emanuele II" - Perugia Prof.Claudio Maccherani 1995 2004 / 05 INDICE LINGUAGGI di PROGRAMMAZIONE...1 TRADUTTORI...1 INTERPRETE...2 COMPILATORE (e LINK)...3 ASSEMBLATORE...4 Confronto tra Assembler

Dettagli

Corso di Linguaggi di Programmazione + Laboratorio

Corso di Linguaggi di Programmazione + Laboratorio Corso di inguaggi di Programmazione + aboratorio Capitolo 1 - Introduzione Si ringrazia il Dott. Marco de Gemmis per la collaborazione nella predisposizione del materiale didattico Apprendimento di un

Dettagli

Fondamenti di programmazione!! Parte 2!

Fondamenti di programmazione!! Parte 2! Fondamenti di programmazione!! Parte 2! 1! Definizione intuitiva di algoritmo! n Elenco finito di istruzioni che specificano una serie di operazioni, eseguendo le quali e possibile risolvere ogni istanza

Dettagli