Programmazione. Marco Anisetti. Università degli Studi di Milano, Dipartimento di Informatica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Programmazione. Marco Anisetti. Università degli Studi di Milano, Dipartimento di Informatica"

Transcript

1 Programmazione Marco Anisetti Università degli Studi di Milano, Dipartimento di Informatica Marco Anisetti - 1 / 63

2 Riepilogo lezione 2 Valutazioni su algoritmi semplici e loro rappresentazione in un linguaggio adatto ad un elaboratore automatico Notazione prefissa, infissa e postfissa nelle espressioni matematiche Linguaggio naturale, Flow chart, Linguaggio di Programmazione Grammatica di un linguaggio, BNF, carte sintattiche Marco Anisetti - 2 / 63

3 Algoritmo - Modellazione - Programma La modellazione del problema attraverso flow chart è uno strumento utilissimo, anche per produrre prove di correttezza del funzionamento, ma deve poi essere tradotto in un linguaggio comprensibile all elaboratore Nella lezione 1 abbiamo visto una anticipazione di un programma scritto per un modello di elaboratore (RAM) con prevalenti finalità di valutazione della complessità Il linguaggio comprensibile per un elaboratore è quello quanto più possibile vicino alla sua vera logica di ragionamento Serve un modello meno astratto e più completo su cui sviluppare un linguaggio che permetta la traduzione dell algoritmo il programma Il programmatore anche se agisce con strumenti ad alto livello deve aver molto ben presente come funziona la macchina che eseguirà i programmi da esso sviluppati Marco Anisetti - 3 / 63

4 La macchina di Von Neumann (1946) La macchina di Von Neumann costituisce l architettura della maggior parte dei Calcolatori John Von Neumann realizzò ENIAC (Electronic Numerical Integrator and Computer) ENIAC era in grado di effettuare 300 moltiplicazioni al secondo, ed occupava una stanza lunga più di 30 metri Fino al 1952, l ENIAC fu il calcolatore più potente del mondo. Poi entrarono in servizio due nuovi calcolatori, EDVAC e ORDVAC, e nel 1955 ENIAC fu spento definitivamente Marco Anisetti - 4 / 63

5 Componenti fondamentali CPU, (Central Processing Unit):è in grado di acquisire, interpretare ed eseguire le istruzioni di un Programma La Memoria Centrale: è il dispositivo dove si trovano le informazioni necessarie all esecuzione di un Programma, ossia istruzioni e dati Dispositivi di Input/Output o Periferiche: permettono di trasferire informazioni tra memoria centrale e/o CPU e l ambiente esterno Bus di sistema: collega tra loro i vari componenti Marco Anisetti - 5 / 63

6 Componenti fondamentali (2) Immagine di W Nowicki da wikipedia Marco Anisetti - 6 / 63

7 Funzionamento La CPU coordina le varie attività, ed in particolare si occupa delle fasi di Fetch estrae istruzioni dalla memoria Decode ne comprende il loro significato Execute esegue quanto decodificato I contenuti della memoria sono indirizzati in base alla posizione, indipendentemente dal tipo di dato o istruzione contenuto Le istruzioni vengono eseguite in modo strettamente sequenziale (limitazione principale del modello di Von Neumann) Marco Anisetti - 7 / 63

8 Linguaggio macchina il linguaggio macchina è il linguaggio in cui sono scritti i Programmi che la CPU è in grado di eseguire (è il risultato della decode) Ogni istruzione (es. lettura, somma, etc.) è definita da un codice binario speciale detto codice operativo Ogni processore ha un proprio linguaggio macchina con un proprio formato delle istruzioni Un istruzione è costituita da una stringa di bit contenente: l operazione da eseguire gli operandi su cui tale operazione deve essere eseguita (registri, locazioni di memoria, costanti...) Marco Anisetti - 8 / 63

9 Linguaggio macchina La scrittura di un Programma in linguaggio macchina è un operazione estremamente complessa, per via del fatto di dover indicare istruzioni e operandi in codice binario Il linguaggio assembler di un processore è la versione simbolica del linguaggio macchina Vengono adoperati dei simboli per la rappresentazione del codice operativo (tipo add per la somma) e degli operandi di un istruzione (direttamente il nome di un Registro, es. R01, o un numero in esadecimale per indicare un indirizzo di memoria) Corrispondenza biunivoca tra l insieme delle istruzioni in linguaggio macchina ed in linguaggio assembler per una stessa CPU L assembler deve essere tradotto in linguaggio macchina per essere eseguito dalla CPU. Questa traduzione è effettuata da un programma apposito, chiamato Assemblatore Marco Anisetti - 9 / 63

10 Istruzioni assembler Aritmetico-logiche: manipolano dati in ingresso e restituiscono il risultato in uscita, specificando dove depositare il risultato, solitamente in un Registro della CPU ADD R01, R02 MUL R01,R02... Salti: alterano l esecuzione sequenziale del programma Salto incondizionato: specificano l indirizzo di memoria in cui si trova la prossima istruzione da eseguire JUMP label1... label1:... Salto condizionato: salto soggetto al verificarsi di una condizione che se non verificata lascia proseguire il programma in sequenza. JZERO R01, label1... label1:... ingresso/uscita: servono a trasferire dati da e verso la CPU LOAD R01, x STORE R01, y... Marco Anisetti - 10 / 63

11 M.C.D in assembler LOAD R01, 101 LOAD R02, 102 label1: DIV R01, R02 MUL R01, R02 LOAD R02, 101 SUB R02, R01 JZERO R02, fine LOAD R01, 102 STORE R01, 101 STORE R02, 102 JUMP label1 fine: LOAD R01, 102 STORE R01, 103 Tratto dal Pighizzini, Ferrari Marco Anisetti - 11 / 63

12 Esecuzione nella macchina di Von Neumann(1) Tre fasi: fetch, decode, execute Fetch si svolge a sua volta in quattro passi: Il contenuto del PC (Program Counter) viene trasferito attraverso il Bus indirizzi al Registro Indirizzi della Memoria Centrale. Attraverso il Bus di Controllo viene specificata un operazione di Lettura Avviene l operazione di lettura dalla memoria centrale: il contenuto della cella specificato dal registro indirizzi viene copiato nel registro dati della memoria Attraverso il bus dati viene trasferita la nuova istruzione nell IR (Instruction register) della CPU. Viene incrementato di 1 il valore del PC (ma in caso di salto il PC sarà aggiornato con un altro valore) Marco Anisetti - 12 / 63

13 Esecuzione nella macchina di Von Neumann(2) Decode: analisi dell IR per identificare l operazione da eseguire (il suo codice operativo) Execute: dipende dal tipo di operazione (aritmetico-logica, salto o trasferimento dati) Marco Anisetti - 13 / 63

14 Estensioni alla Macchina di Von Neumann(1) Elementi generali che determinano le prestazioni Dimensione dei Registri Dimensione della RAM La frequenza di clock della CPU Ampiezza del Bus Dati Ampiezza del Bus Indirizzi Elementi architetturali che determinano le prestazioni Esecuzione sequenziale, un istruzione dopo l altra Impiego eccessivo del Bus di sistema per l interscambio delle informazioni con memoria e dispositivi Tempi di accesso alla memoria centrale alti rispetto alla velocità di funzionamento della CPU Marco Anisetti - 14 / 63

15 Estensioni alla Macchina di Von Neumann(2) Architetture di tipo Pipeline: Esecuzione separata ed in parallelo da parte di dispositivi appositi delle varie fasi di un istruzione (fetch, decode e execute): Utilizzo di memorie Cache (estremamente veloci ma costose e di ridotte dimensioni) da inserire tra CPU e Memoria centrale, dove conservare Dati e Istruzioni di uso più frequente Architetture che utilizzano più processori: Processori dedicati (es coprocessori matematici, GPU, DMA) Sistemi multiprocessore: architetture dotate di molteplici CPU indipendenti. Marco Anisetti - 15 / 63

16 Svantaggi del linguaggio macchina Richiedono competenze sui dettagli dell architettura della macchina ed il relativo linguaggio che varia a seconda della CPU I programmi così scritti non sono assolutamente portabili Il programmatore si specializza nella programmazione di una particolare macchina, e ne studia le scorciate algoritmiche e i trucchi ad essa legati I programmi così sviluppati risultano di difficile comprensione e molto difficili da modificare La struttura logica del programma è nascosta, il debugging diventa davvero complesso Il ciclo di vita del programma è limitato alla sola macchina per cui è stato scritto e la sua evoluzione è ostacolata dalla scarsa leggibilità Marco Anisetti - 16 / 63

17 Linguaggi di programmazione: classificazione (1) Linguaggi ad alto livello e linguaggi a basso livello, in base al livello di astrazione che essi forniscono rispetto alla macchina dove verranno eseguiti. La distinzione, in generale, non è così netta I linguaggi a basso livello sono quelli che sono strettamente dipendenti da una specifica macchina hardware Addiziona i numeri nella locazione 10 e 11 e li salva in 12 I linguaggi ad alto livello nascondono, le caratteristiche delle diverse macchine hardware Sono scritti per funzionare su una macchina astratta M e offrono al programmatore una sintassi molto più vicina al linguaggio naturale Marco Anisetti - 17 / 63

18 Linguaggi di programmazione: classificazione (2) General purpose: una caratteristica del linguaggio di programmazione che dice che tale linguaggio può essere adottato per un vasto range di applicazioni. Inizialmente i linguaggi si svilupparono con degli obiettivi ben precisi, in seguito tendettero a diventare general purposes Esempi: Fortran (numerical computing), Lisp (artificial intelligence), Prolog (natural language processing) Benefici linguaggi ad alto livello Leggibilità Indipendenza dalla macchina (portabilità) Possibilità di packaging in librerie Controllo di consistenza durante lo sviluppo Marco Anisetti - 18 / 63

19 Programmazione strutturata E un paradigma di programmazione emerso fra gli anni sessanta e gli anni settanta nel contesto della programmazione procedurale Critica della struttura di controllo del salto incondizionato, che rappresentava, negli anni sessanta, lo strumento fondamentale per la definizione di algoritmi complessi Dijkstra fu tra i primi a evidenziare gli gli effetti deleteri dei salti incondizionati sulla leggibilità e modificabilità del software (spaghetti code) Riprendiamo l esempio della lezione 1 Marco Anisetti - 19 / 63

20 Codice assembler per Macchina (RAM) 1: Mem[0]:=0 2: read(mem[1]) 3: if Mem[1] 0 then goto 5 4: goto 7 5 Mem[3]:=Mem[0]-Mem[1] 6: if Mem[3] 0 then goto 16 7: write(mem[1]) 8: read(mem[2]) 9: Mem[3]:= Mem[2]-Mem[1] 10: if Mem[3] 0 then goto 12 11: goto 14 12: Mem[3]:=Mem[1]-Mem[2] 13: if Mem[3] 0 then goto 8 14: Mem[1]:=Mem[2] +Mem[0] 15: goto 3 16: halt Marco Anisetti - 20 / 63

21 Programmazione strutturata (1) Non è semplice capire cosa il codice fa guardandolo Il problema principale è seguire i goto incondizionati Non sempre posso avere una documentazione addizionale come Flow Chart Il programma deve avere una sua leggibilità indipendente da documentazione aggiuntiva Al crescere delle dimensioni di un programma, diventa sempre più difficile per il programmatore padroneggiarlo nel suo complesso. Il programma precedente prende in ingresso una sequenza di numeri tipo e ritorna la sequenza senza doppioni Marco Anisetti - 21 / 63

22 Programmazione strutturata (2) Obiettivo: ottenere il più possibile un flusso ordinato di istruzioni dall inizio alla fine (abolizione dei salti incondizionati) Idealmente ottenibile considerando una sequenza lineare di operazioni, senza alternative (ridotta potenza degli algoritmi) Nella realtà avviene attraverso regole che portano ad effetti equivalenti all esecuzione sequenziale di operazioni Ogni struttura di controllo ha un solo punto di ingresso e un solo punto d uscita Il flusso di esecuzione è evidente dalla struttura del codice Marco Anisetti - 22 / 63

23 Programma proprio (1) Un programma si definisce proprio se gode delle seguenti proprietà Ha un unico ingresso ed un unica uscita Ogni elemento appartiene ad un percorso che porta dall ingresso all uscita L ingresso è l unica via di accesso al programma e l uscita è l unica via di terminazione del programma Il programma proprio può essere suddiviso in strutture proprie detti blocchi che godono delle stesse due proprietà Marco Anisetti - 23 / 63

24 Programma proprio (2) Marco Anisetti - 24 / 63

25 Programmi equivalenti Due programmi che realizzano lo stesso algoritmo usando operazioni differenti si dicono equivalenti In modo formale due programmi propri P e Q sono equivalenti se: P(X) = Y = Q(X) Ovvero se applicati agli stessi argomenti X forniscono lo stesso risultato Y Marco Anisetti - 25 / 63

26 Strutturazione in moduli La definizione di programma proprio e di blocchi suggerisce una strutturazione modulare dei programmi I moduli hanno usa strutturazione gerarchica ben definita, e definiscono funzioni logiche precise (coesione funzionale) i moduli devo avere dimensioni accettabili (dimensione) Le strutture di controllo presenti nei moduli devono essere tenute d occhio, annidate al max su 3 livelli (profondità) Un modulo è una fase concettuale dell algoritmo (fase temporale) Tutte le attività di un modulo dovrebbero essere eseguite nelle stesse condizioni (stessa base condizionale) Tutte le attività di uno stesso modulo dovrebbero lavorare sugli stessi dati (condivisione dei dati) Marco Anisetti - 26 / 63

27 Teorema di BÖHM JACOPINI Teorema di BÖHM JACOPINI Dato un programma proprio P è possibile costruire un programma strutturato S(P) equivalente a P Il teorema permise di dimostrare che la potenza di calcolo dei programmi strutturati non è inferiore a quella dei programmi che usano il goto (completezza). Il programma strutturato S(P) è costituito da combinazioni di tre oggetti logici fondamentali: Sequenza, Selezione, Iterazione. Completezza Tutti i programmi esprimibili tramite istruzioni di salto (goto) o diagrammi di flusso (flow-chart) possono essere riscritti utilizzando esclusivamente le tre strutture di controllo fondamentali (eliminazione dei salti). Marco Anisetti - 27 / 63

28 Costrutti fondamentali Sequenza permette di eseguire le istruzioni secondo l ordine in cui sono scritte Selezione permette di scegliere l esecuzione di un blocco di istruzioni tra due possibili in base al valore di una condizione Iterazione permette di ripetere l esecuzione di una o più istruzioni in base al valore di una condizione Marco Anisetti - 28 / 63

29 Sequenza Le istruzioni sono eseguite nello stesso ordine in cui compaiono nel programma, cioè secondo la sequenza in cui sono scritte. Moltiplicazione tra due numeri leggi i numeri x e y calcola x y scrivi il risultato Marco Anisetti - 29 / 63

30 Sequenza:esempio Calcolo dell età media dei componenti di un nucleo familiare Marco Anisetti - 30 / 63

31 Selezione (if-then) (1) Sintassi IF condizione THEN blocco 1 ENDIF blocco 2 Marco Anisetti - 31 / 63

32 Selezione (if-then) (2) Esecuzione Valutazione della condizione: vera vengono eseguite le istruzioni del blocco 1 ed in seguito si esegue blocco 2 essendo la prima istruzione che segue il costrutto falsa l esecuzione prosegue direttamente dalla prima istruzione che segue il costrutto ovvero blocco 2 Marco Anisetti - 32 / 63

33 Selezione (if-then-else) (1) Sintassi in pseudocodice IF condizione THEN blocco 1 ELSE blocco 2 ENDIF blocco 3 Marco Anisetti - 33 / 63

34 Selezione (if-then-else) (2) Esecuzione (1) Valutazione della condizione vera vengono eseguite le istruzioni del blocco 1 falsa vengono eseguite quelle del blocco 2 (2) L esecuzione procede con le istruzioni in blocco 3 Marco Anisetti - 34 / 63

35 Selezione (if-then-else) (3) L uso dell else equivale ad un doppio uso dell if-then: esempio in pseudocodice IF condizione THEN blocco 1 ENDIF IF not condizione THEN blocco 2 ENDIF blocco 3 Marco Anisetti - 35 / 63

36 Esempio (1) Calcolo della divisione tra due numeri controllando che il divisore sia diverso da zero: leggi il dividendo e il divisore IF il divisore è diverso da zero THEN calcola dividendo/divisore scrivi il risultato ELSE scrivi errore: divisione per zero ENDIF Marco Anisetti - 36 / 63

37 Esempio (2) Calcolo delle soluzioni reali di ax 2 +bx +c = 0 leggi i valori dei parametri a, b, c calcola il discriminante IF il discriminante è minore di zero THEN scrivi nessuna soluzione reale ELSE IF il discriminante è uguale a zero THEN calcola b 2a scrivi Due soluzioni coincidenti:, il risultato ELSE scrivi Due soluzioni:, calcola b b 2 4ac 2a scrivi il risultato calcola b+ b 2 4ac 2a scrivi il risultato ENDIF ENDIFMarco Anisetti - 37 / 63

38 Esempio: flow chart (1) prima approssimazione della soluzione, approccio modulare Marco Anisetti - 38 / 63

39 Esempio: flow chart (2) Versione completa Marco Anisetti - 39 / 63

40 Iterazione (post-condizionato) (1) Chiamato anche ciclo repeat-until Sintassi DO blocco 1 WHILE condizione blocco 2 Marco Anisetti - 40 / 63

41 Iterazione (post-condizionato) (2) Esecuzione (1) Viene eseguito blocco 1 (2) Viene valutata condizione: vera si ritorna al punto (1) falsa si prosegue con la prima istruzione scritta dopo il costrutto iterativo il blocco 1 è eseguito almeno una volta termina quando la condizione diventa falsa Marco Anisetti - 41 / 63

42 Esempio: somma dei primi 100 numeri interi Calcolo iterativo, senza utilizzare la formula di Gauss ( n i=1 i = n(n+1) 2 ). poni il valore della somma a zero inizia a considerare il numero 1 DO aggiungi alla somma il numero che stai considerando considera il numero successivo WHILE il numero che stai considerando non supera 100 scrivi la somma Marco Anisetti - 42 / 63

43 Iterazione (pre-condizionato) (1) Sintassi WHILE condizione DO blocco 1 ENDWHILE blocco 2 Marco Anisetti - 43 / 63

44 Iterazione (pre-condizionato) (2) Esecuzione (1) Viene valutata la condizione: vera viene eseguito blocco 1 quindi si torna al punto (1) falsa l esecuzione riprende dalla prima l istruzione che segue il costrutto iterativo il blocco 1 può essere eseguito anche zero volte termina quando la condizione diventa falsa Marco Anisetti - 44 / 63

45 Esempi cicli Il comportamento dello schema WHILE... DO... può essere simulato combinando DO...WHILE... e selezione: IF condizione THEN DO blocco 1 WHILE condizione ENDIF Marco Anisetti - 45 / 63

46 Variabili e assegnamenti (1) Fino ad ora abbiamo usato i concetti matematici relativi alle incognite di una espressione per identificare dei valori che evolvono durante il programma In prima approssimazione si può dire che in informatica l equivalente di una incognita matematica è una variabile Una variabile è un contenitore preposto a contenere dei valori che possono variare durante il tempo di esecuzione E una locazione di memoria che ha una dimensione associata e che è riferibile attraverso il suo nome e nella quale si può scrivere attraverso un assegnamento Istruzione di assegnamento variabile espressione Marco Anisetti - 46 / 63

47 Variabili e assegnamenti (2) Semantica assegnamento (1) Viene calcolato il valore dell espressione scritta a destra del simbolo (2) Il risultato ottenuto è assegnato alla variabile a sinistra del simbolo, sovrascrivendo l eventuale valore precedentemente contenuto Molti linguaggi, utilizzano per l assegnamento il simbolo =, usato comunemente per indicare l uguaglianza Marco Anisetti - 47 / 63

48 Esempio x y + z valuta l espressione y+z, recuperando i valori presenti in y e z sommandoli pone il risultato nella variabile x sovrascrivendo il valore precedentemente presente Marco Anisetti - 48 / 63

49 Tipo Il tipo di una variabile specifica La classe di valori che questa può assumere L insieme delle operazioni che possono essere effettuate su di essa. Quanto spazio occupa in memoria Ad esempio una variabile x di tipo intero può assumere come valori solo numeri interi su di essa possono essere effettuate soltanto le operazioni consentite per i numeri interi La sua occupazione di memoria è solitamente uguale alla dimensione dei suoi registri (es. 32, 64 bit) Marco Anisetti - 49 / 63

50 Astrazioni Variabili Il concetto di variabile è un astrazione del concetto di locazione di memoria La variabile è il riferimento mnemonico all indirizzo della locazione di memoria L assegnamento di un valore a una variabile è un astrazione dell operazione STORE di un ipotetico linguaggio macchina Tipi Sebbene tutte le variabili siano rappresentate nella memoria come sequenze di bit, tali sequenze possono essere interpretate diversamente in base ai tipi La tipizzazione delle variabili permette di mantenere il controllo sulla correttezza dello sviluppo La nozione di tipo fornisce un astrazione rispetto alla rappresentazione effettiva dei dati Il programmatore può utilizzare variabili di tipi differenti, senza necessità di conoscerne l effettiva rappresentazione Marco Anisetti - 50 / 63

51 Dichiarazione delle variabili Molti linguaggi richiedono di dichiarare le variabili utilizzate nel programma indicandone il tipo. Alcuni linguaggi (ad esempio Pascal) richiedono che le variabili siano dichiarate tutte all inizio del programma. Alcuni linguaggi richiedono che siano dichiarate prima del loro utilizzo (ad esempio Java). Vantaggi: Accresce la leggibilità dei programmi Diminuisce la possibilità di errori Facilita la realizzazione di compilatori efficienti Marco Anisetti - 51 / 63

52 Esempio: calcolo delle radici variabili a, b, c, discriminante, x, x1, x2: numeri reali leggi a, b, c discriminante b 2-4 * a * c IF discriminante < 0 THEN scrivi nessuna soluzione reale ELSE IF discriminante == 0 THEN x - b / (2 * a) scrivi Soluzioni coincidenti:, x ELSE x1 (- b - discriminante) / (2 * a) x2 (- b + discriminante) / (2 * a) scrivi Due soluzioni distinte:, x1, x2 ENDIF ENDIF Marco Anisetti - 52 / 63

53 Dimostrazione Teorema di BÖHM JACOPINI La dimostrazione del teorema porta a del codice strutturato in maniera da avere un unico ciclo (di tipo WHILE DO) e una serie di variabili booleane di supporto per il mantenimento dell ordine delle operazioni. Le variabili booleane sono a guardia di ogni operazione e permettono di eseguire una istruzione per ogni ciclo WHILE in maniera simile ad un program counter WHILE... IF... THEN istruzione 1 ENDIF... IF... THEN istruzione n ENDIF Marco Anisetti - 53 / 63

54 Dimostrazione Teorema di BÖHM JACOPINI:esempio Marco Anisetti - 54 / 63

55 Dimostrazione Teorema di BÖHM JACOPINI: conclusioni E sempre possibile scrivere un qualsiasi programma usando solo i costrutti della programmazione strutturata Si possono eliminare i salti di un programma non strutturato ottenendo un programma strutturato a patto di inserire un certo numero di selezioni aggiuntive Il risultato di questa trasformazione è un programma strutturato ma la tecnica presentata nella dimostrazione non porta ad un programma meno intircato del programma non strutturato (programma spaghettiforme) Esiste una trasformazione che dimostra il teorema e che porta a risultati più rilevanti Marco Anisetti - 55 / 63

56 La trasformazione di Ashcroft e Manna (1) Tecnica costruttiva per portare alla dimostrazione del teorema di BÖHM JACOPINI sfruttando i concetti di programma proprio e di scomposizione gerarchica di un programma in sottoprogrammi propri. La dimostrazione sfrutta il diagramma di flusso come rappresentazione non considerando gli stati iniziale e finale e permette di preservare la struttura logica del programma. Marco Anisetti - 56 / 63

57 La trasformazione di Ashcroft e Manna (2) Marco Anisetti - 57 / 63

58 La trasformazione di Ashcroft e Manna (2) Marco Anisetti - 58 / 63

59 La trasformazione di Ashcroft e Manna (3) Marco Anisetti - 59 / 63

60 La trasformazione di Ashcroft e Manna (4) Per trasformare questi blocchi ci son due regole 1. Il blocco contiene un solo test (lo sappiamo già trasformare), oppure non contiene cicli, e anche questo caso è banale 2. Il blocco contiene più di un test e almeno un ciclo. Si identificano i punti dell insieme di taglio sulle frecce del blocco in modo tale che ciascun ciclo contenga almeno uno di tali punti e che uno di questi punti stia sull unica freccia uscente. Si traduce il blocco in un pezzo di programma con un while esterno in modo tale che ogni iterazione del ciclo while segua l esecuzione del blocco da un punto dell insieme di taglio al successivo. Si introduce un numero i di variabili booleane sufficiente a distinguere tutti i punti dell insieme di taglio definiti i è il più piccolo intero successivo a log2 n dove n è il numero di punti di taglio. Marco Anisetti - 60 / 63

61 La trasformazione di Ashcroft e Manna (5) Marco Anisetti - 61 / 63

62 La trasformazione di Ashcroft e Manna (6) b 1 controlla il WHILE, quindi è logicamente collegata al punto γ b 2 svolge la funzione di selettore tra i due cicli interni controllati dai punti α e β Dimostrazione è più costruttiva che introduce concetti interessanti di gerarchia Marco Anisetti - 62 / 63

63 Costrutti strutturati minimali In realtà i 3 costrutti visti possono essere ulteriormente ridotti ai soli sequenza e iterazione per codificare qualsiasi algoritmo E possibile rappresentare una selezione come un costrutto iterativo inserendo una variabile (boolean) in aggiunta. IF condizione THEN blocco 1 ENDIF b condizione WHILE b blocco 1 b false ENDWHILE Marco Anisetti - 63 / 63

Lezione 1 - Programmazione non strutturata

Lezione 1 - Programmazione non strutturata Lezione 1 - Programmazione non strutturata Corso Programmazione Programmazione e progettazione Programmazione strutturata Marco Anisetti e-mail: marco.anisetti@unimi.it web: http://homes.di.unimi.it/anisetti/

Dettagli

Lezione 1 - Programmazione non strutturata

Lezione 1 - Programmazione non strutturata Lezione 1 - Programmazione non strutturata Corso Programmazione Programmazione e progettazione Programmazione strutturata Marco Anisetti e-mail: marco.anisetti@unimi.it web: http://homes.di.unimi.it/anisetti/

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

Fondamenti di Informatica A. A / 1 9

Fondamenti di Informatica A. A / 1 9 Fondamenti di Informatica Prof. Marco Lombardi A. A. 2 1 8 / 1 9 Architettura di Von Neumann Architettura di Von Neumann: l Unità di Elaborazione L Unità di Elaborazione L unità di elaborazione (CPU) contiene

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe

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

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

I linguaggi di programmazione

I linguaggi di programmazione I linguaggi di programmazione sono stati introdotti per facilitare ai programmatori il compito di scrittura dei programmi Sono linguaggi simbolici, in continua evoluzione Sono definiti da un insieme di

Dettagli

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H Architettura dei calcolatori e sistemi operativi Architettura MIPS e set istruzioni Capitolo 2 P&H Instruction Set Architecture ISA Linguaggio assemblatore e linguaggio macchina ISA processore MIPS Modello

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice, Paolo Bison, FI06, 2007-01-10 p.1 Pseudo codice linguaggio testuale mix di linguaggio naturale ed elementi

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

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) 1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano

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

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

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria

Dettagli

Componenti principali

Componenti principali Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 29/01/07 Nota Questi lucidi sono tratti

Dettagli

PROBLEMI E ALGORITMI

PROBLEMI E ALGORITMI Fondamenti di Informatica PROBLEMI E ALGORITMI Fondamenti di Informatica - D. Talia - UNICAL 1 Specifica di un algoritmo Primo approccio, scrittura diretta del programma: la soluzione coincide con la codifica

Dettagli

PROGRAMMAZIONE STRUTTURATA

PROGRAMMAZIONE STRUTTURATA PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:

Dettagli

Il processore - CPU (CENTRAL PROCESSING UNIT)

Il processore - CPU (CENTRAL PROCESSING UNIT) Il processore - CPU (CENTRAL PROCESSING UNIT) abbiamo visto Programmi e dati risiedono in file memorizzati in memoria secondaria Per essere eseguiti (i programmi) e usati (i dati) vengono copiati nella

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi FASE 1: Dare un nome al problema partendo dall analisi del problema FASE 2: Scrivere la specifica funzionale FASE 3: Scrittura dell algoritmo FASE 3.1: Introduzione delle variabili

Dettagli

Rappresentazione dell informazione

Rappresentazione dell informazione Rappresentazione dell informazione Codifica dei numeri Rappresentazioni in base 2, 8, 10 e 16 Rappresentazioni M+S, C1 e C2 Algoritmi di conversione di base Algoritmi di somma, moltiplicazione e divisione

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

Lezione n. 2i Informatica e tecnologia informatica Sistema di elaborazione Algoritmo Linguaggi di programmazione Realizzazione di un programma

Lezione n. 2i Informatica e tecnologia informatica Sistema di elaborazione Algoritmo Linguaggi di programmazione Realizzazione di un programma Lezione2i Lezione n. 2i Informatica e tecnologia informatica Sistema di elaborazione Algoritmo Linguaggi di programmazione Realizzazione di un programma Informatica e tecnologia informatica Il termine

Dettagli

Componenti e connessioni. Capitolo 3

Componenti e connessioni. Capitolo 3 Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura

Dettagli

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori

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

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

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

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

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

Elementi di informatica

Elementi di informatica Elementi di informatica Architetture degli elaboratori Il calcolatore Un calcolatore è sistema composto da un elevato numero di componenti Il suo funzionamento può essere descritto se lo si considera come

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Linguaggio macchina e assembler (caso di studio: processore MIPS) slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello Architettura degli Elaboratori 1 1 Istruzioni

Dettagli

Introduzione agli Algoritmi

Introduzione agli Algoritmi Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione

Dettagli

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Introduzione all'architettura dei Calcolatori. Maurizio Palesi Introduzione all'architettura dei Calcolatori Maurizio Palesi 1 Agenda Architettura generale di un Sistema di Elaborazione La memoria principale Il sottosistema di comunicazione La CPU Miglioramento delle

Dettagli

Architettura hardware

Architettura hardware Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).! ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).! MACCHINA DI VON NEUMANN! UNITÀ FUNZIONALI fondamentali! Processore

Dettagli

Caratteristiche di un calcolatore elettronico

Caratteristiche di un calcolatore elettronico Prof. Emanuele Papotto Caratteristiche di un calcolatore elettronico È una macchina, costituita da circuiti elettronici digitali e da componenti elettromeccaniche, ottiche e magnetiche. È velocissimo,

Dettagli

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggi, Traduttori e le Basi della Programmazione Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi

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

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Ciclo di, classificazione e livelli delle architetture di calcolatore Lezioni del Corso di Laurea Triennale in Informatica Per gentilezza del Prof. Sebastiano Pizzutilo (Dipartimento

Dettagli

Organizzazione strutturata

Organizzazione strutturata Organizzazione strutturata Evoluzione storica a.a. 2002-03 L. Borrelli 1 Complessità dei Sistemi di Elaborazione Caratteristica dei Sistemi di Elaborazione: Complessità Per trattare sistemi complessi è

Dettagli

La macchina di Von Neumann. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI "PROGRAMMAZIONE I"

La macchina di Von Neumann. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI PROGRAMMAZIONE I 23/11/218 UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA La macchina di Von Neumann Unità periferiche Memoria Centrale CPU CORSO DI "PROGRAMMAZIONE I" Bus Dati Bus Indirizzi

Dettagli

I linguaggi di programmazione

I linguaggi di programmazione I linguaggi di programmazione sono stati introdotti per facilitare ai programmatori il compito di scrittura dei programmi Sono linguaggi simbolici, in continua evoluzione Sono definiti da un insieme di

Dettagli

Settimana n.2. Obiettivi Esecuzione di un programma. Tutorial su CodeBlocks e ambiente di sviluppo.

Settimana n.2. Obiettivi Esecuzione di un programma. Tutorial su CodeBlocks e ambiente di sviluppo. Settimana n.2 Obiettivi Esecuzione di un programma. Tutorial su CodeBlocks e ambiente di sviluppo. Contenuti Linguaggi di programmazione Dati e istruzioni Architettura di un elaboratore Uso del compilatore

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

Architettura del Calcolatore

Architettura del Calcolatore Giuseppe Manco Lezione 3 17 Ottobre 2003 Architettura del calcolatore Il calcolatore è uno strumento programmabile per la rappresentazione, la memorizzazione e l elaborazione delle informazioni un calcolatore

Dettagli

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II)

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II) 1 Università degli studi di Parma Dipartimento di Ingegneria dell Informazione Informatica a.a. 2012/13 La inserita nella architettura dell elaboratore Informatica Facoltà di Medicina Veterinaria a.a.

Dettagli

Sistemi a microprocessore

Sistemi a microprocessore Sistemi a microprocessore Programma: Segnali analogici e digitali Uso di segnali digitali per la rappresentazione dei numeri interi La memoria e la CPU I programmi in linguaggio macchina La connessione

Dettagli

Architettura dell elaboratore

Architettura dell elaboratore Architettura dell elaboratore Riprendiamo il discorso lasciato in sospeso ad inizio corso Riepilogando I programmi e i dati risiedono nella memoria secondaria Per essere eseguiti (i programmi) e usati

Dettagli

Architettura dell elaboratore

Architettura dell elaboratore Architettura dell elaboratore Riprendiamo il discorso lasciato in sospeso ad inizio corso Riepilogando I programmi e i dati risiedono nella memoria secondaria Per essere eseguiti (i programmi) e usati

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 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic

Dettagli

Appunti di informatica. Lezione 5 anno accademico Mario Verdicchio

Appunti di informatica. Lezione 5 anno accademico Mario Verdicchio Appunti di informatica Lezione 5 anno accademico 2015-2016 Mario Verdicchio L algoritmo di Euclide per l MCD Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. dividere il maggiore

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Lez. 8 La Programmazione Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Dott. Pasquale De Michele Dott. Raffaele Farina Dipartimento di Matematica e Applicazioni Università di Napoli

Dettagli

Istruzioni e linguaggio macchina

Istruzioni e linguaggio macchina Istruzioni e linguaggio macchina I linguaggi macchina sono composti da istruzioni macchina, codificate in binario, con formato ben definito processori diversi hanno linguaggi macchina simili scopo: massimizzare

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo Sviluppo di programmi Per la costruzione di un programma

Dettagli

Architettura del calcolatore (Seconda parte)

Architettura del calcolatore (Seconda parte) Architettura del calcolatore (Seconda parte) Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin LINGUAGGIO E ORGANIZZAZIONE DEL CALCOLATORE Linguaggio assembly

Dettagli

Informatica di base 4 crediti 32 ore!!

Informatica di base 4 crediti 32 ore!! Informatica di base 4 crediti 32 ore!! Programma Architettura dei computer L informazione ed il computer Le reti dei calcolatori I sistemi operativi La programmazione Informazioni utili Utilizzo dei computer

Dettagli

Calcolatore: sottosistemi

Calcolatore: sottosistemi Calcolatore: sottosistemi Processore o CPU (Central Processing Unit) Memoria centrale Sottosistema di input/output (I/O) CPU I/O Memoria Calcolatore: organizzazione a bus Il processore o CPU Unità di controllo

Dettagli

Architettura di von Neumann

Architettura di von Neumann Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Architettura di von Neumann Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università

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

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I A.A. 2012-2013 Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e

Dettagli

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Il processore. Istituzionii di Informatica -- Rossano Gaeta Il processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale

Dettagli

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 10 STRUTTURE DI CONTROLLO REPEAT E WHILE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Architetture degli elaboratori Il calcolatore Un calcolatore è sistema composto da un elevato numero di componenti Il suo funzionamento può essere descritto se lo si considera come

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

CAPITOLO 3 - ALGORITMI E CODIFICA

CAPITOLO 3 - ALGORITMI E CODIFICA FASI DI SVILUPPO DEL SOFTWARE Problema Idea (soluzione) Algoritmo (soluzione formale) Programma (traduzione dell algoritmo in una forma comprensibile da un elaboratore elettronico) Test (criteri di verifica)

Dettagli

informatica di base per le discipline umanistiche

informatica di base per le discipline umanistiche informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università di Pavia (per iniziare ) quinta lezione: la sintassi

Dettagli

Linguaggi di alto livello, compilatori e interpreti

Linguaggi di alto livello, compilatori e interpreti Linguaggi di alto livello, compilatori e interpreti Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Limiti del linguaggio assembler Esempio: gestione

Dettagli

Architettura dei computer

Architettura dei computer Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore la memoria principale la memoria secondaria i dispositivi di input/output 1 Fornisce la capacità di

Dettagli

Esercizi svolti in aula

Esercizi svolti in aula Università degli Studi di Cagliari Corsi di Laurea in Ing. Civile e Ing. per l Ambiente e il Territorio ondamenti d Informatica 1 A.A. 2018/2019 Docente: Giorgio umera Esercizi svolti in aula ormulazione

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione 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 programmazione. In generale, ogni

Dettagli

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini [http://www.di.univaq.it/muccini/labarch] Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a. 2005-2006 Docente: H. Muccini Lecture 2: Prime Istruzioni -Concetti Fondamentali

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

Istruzioni e linguaggio macchina

Istruzioni e linguaggio macchina Istruzioni e linguaggio macchina I linguaggi macchina sono composti da istruzioni macchina, codificate in binario, con formato ben definito processori diversi hanno linguaggi macchina simili scopo: massimizzare

Dettagli

Parte 3. Linguaggio Macchina e Assembler

Parte 3. Linguaggio Macchina e Assembler Parte 3 Linguaggio Macchina e Assembler LINGUAGGIO MACCHINA Descriveremo una CPU MINIMA dotata di un certo insieme di istruzioni I ciascuna realizzata da un corrispondente circuito C I. Questo insieme

Dettagli

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi Istruzioni variabili e tipi Sottoprogrammi Strutture di controllo Ricorsione 1 2 Obiettivo Ciclo di sviluppo di programmi Risoluzione

Dettagli

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile Algoritmi Andrea Passerini passerini@dsi.unifi.it Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile Elaboratore Un elaboratore o computer è una macchina digitale, elettronica,

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN

Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI Fortran Cobol

Dettagli

Informatica. Mario Pavone - Dept. Mathematics & Computer Science - University of Catania. Trasferimento. Ambiente esterno.

Informatica. Mario Pavone - Dept. Mathematics & Computer Science - University of Catania. Trasferimento. Ambiente esterno. Trasferimento Ambiente esterno Controllo Informatica Mario Pavone - Dept. Mathematics & Computer Science - University of Catania mpavone@dmi.unict.it Rappresentazione dell Informazione L informazione viene

Dettagli

Istruzioni condizionali di diramazione in Fortran 90

Istruzioni condizionali di diramazione in Fortran 90 Istruzioni condizionali di diramazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Istruzioni di diramazione DIS - Dipartimento

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

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.) Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale l informazione è rappresentata in forma numerica

Dettagli

Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto

Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto Un quadro della situazione Lezione 14 Il Set di Istruzioni (2) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Input/Output Sistema di Interconnessione Registri

Dettagli

Cos è la programmazione?

Cos è la programmazione? La programmazione Cos è la programmazione? Termine usato per indicare le attività che trasformano l esigenza di risolvere un Problema in un Programma, inteso come sistema informatico capace di risolvere

Dettagli

Fondamenti di Informatica A. A. 2018/19

Fondamenti di Informatica A. A. 2018/19 Fondamenti di Informatica Prof. Marco Lombardi A. A. 2018/19 AlgoBuild: Strutture Iterative e Selettive OUTLINE Blocco condizionale (Struttura selettiva IF - IF/ELSE) Esempi Cicli a condizione iniziale

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

Il Processore. Informatica di Base -- R.Gaeta 27

Il Processore. Informatica di Base -- R.Gaeta 27 Il Processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale

Dettagli

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica Il calcolatore È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica ogni livello di descrizione è caratterizzato da una struttura rappresentante l organizzazione

Dettagli

Capitolo 5 Elementi architetturali di base

Capitolo 5 Elementi architetturali di base Capitolo 5 Elementi architetturali di base Giuseppe Lami Istituto di Scienza e Tecnologie dell Informazione CNR Via Moruzzi, 1 - Pisa giuseppe.lami@isti.cnr.it Struttura - Unità di elaborazione e controllo

Dettagli

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive

Dettagli