Appunti di FORTRAN 77. Maria Grazia Gasparo Aprile 2011

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Appunti di FORTRAN 77. Maria Grazia Gasparo Aprile 2011"

Transcript

1 Appunti di FORTRAN 77 Maria Grazia Gasparo Aprile 2011 i

2 ii

3 Indice 1 Linguaggio macchina e assembly 1 2 Linguaggi interpretati e compilati 3 3 Storia del FORTRAN 5 4 Perché insegnare il FORTRAN 77? 7 5 Realizzazione di un programma FORTRAN Compilazione Collegamento Elementi di base del FORTRAN Alfabeto Struttura delle linee Struttura delle unità di programma Costanti, variabili e loro tipo Variabili dimensionate (arrays) Espressioni e istruzione di assegnazione Espressioni aritmetiche Assegnazione aritmetica Fortran 90: operazioni fra arrays Controllo del flusso di esecuzione Istruzione GO TO Istruzioni IF IF logico IF THEN IF IF THEN ELSE IF IF concatenati Fortran 90: istruzione SELECT CASE Istruzione DO DO impliciti Fortran 90: DO illimitato e DO WHILE Esempi riassuntivi Esempio Esempio Esempio iii

4 10 L istruzione WRITE(u,f) Scrivere su un file Scegliere il formato di scrittura Alcuni esempi Sottoprogrammi Sottoprogrammi FUNCTION Sottoprogrammi SUBROUTINE Associazione fra argomenti muti e argomenti attuali Argomenti muti dimensionati Dimensionamento variabile e indefinito per vettori Dimensionamento variabile e indefinito per matrici Alcune regole di buona programmazione Istruzioni di scrittura nei sottoprogrammi Istruzioni STOP e RETURN Arrays di lavoro Esempi di programmi con sottoprogrammi Esempio Esempio Esempio Esempio Istruzione EXTERNAL Istruzione COMMON 82 Bibliografia 85 iv

5 assembly 1 Linguaggio macchina e assembly Un linguaggio di programmazione è un linguaggio utilizzabile per scrivere algoritmi che il computer può capire (direttamente o tramite una traduzione) e eseguire. Nell accezione più semplice, che in questo momento ci basta, un programma è un algoritmo scritto in un linguaggio di programmazione. Il fatto che tutte le informazioni debbano essere memorizzate su un computer come sequenze di bits implica che anche le istruzioni di un algoritmo, per poter essere direttamente eseguite dal computer, devono essere scritte in un linguaggio il cui alfabeto è composto soltanto dai simboli 0 e 1. Non solo, ma la sintassi di questo linguaggio è strettamente dipendente dall architettura della macchina ed è quindi diversa per ogni processore, o famiglia di processori. Data questa dipendenza, ci si riferisce a questo linguaggio con l espressione generica linguaggio macchina. In un linguaggio di questo tipo, ad ogni operazione elementare (aritmetica, logica, di assegnazione, di salto, etc...) corrisponde un codice operativo e ogni operando è identificato tramite l indirizzo della locazione in cui è memorizzato 1. Codici operativi e indirizzi sono sequenze di 0 e 1 di lunghezza prefissata. Scrivere o leggere un programma in linguaggio macchina è estremamente difficile: si tratta in generale di programmi molto lunghi e complessi, incomprensibili per i non addetti ai lavori. Il primo passo per superare questa difficoltà fu la definizione dei cosiddetti linguaggi assembly, che nacquero praticamente insieme ai primi computers negli anni 40. Questi sono ancora linguaggi dipendenti dall hardware della macchina per cui sono progettati, perché le istruzioni sono in corrispondenza biunivoca con quelle del linguaggio macchina; d altra parte sono linguaggi simbolici e il loro utilizzo è decisamente più facile. Con l espressione linguaggio simbolico si intende che i codici operativi binari sono sostituiti da codici alfanumerici mnemonici detti parole chiave (es: ADD per l addizione, STO per la memorizzazione) e i riferimenti alle locazioni di memoria avvengono attraverso nomi simbolici, o identificatori, scelti dall utente rispettando le regole stabilite dal linguaggio. Per poter essere eseguito, un programma assembly deve essere tradotto in linguaggio macchina da un opportuno programma detto assembler. È importante aver presente che i linguaggi assembly non sono nient altro che versioni simboliche dei linguaggi macchina e non sono quindi portabili, nel senso che un programma scritto per un computer non può essere eseguito su un altro computer con un processore diverso. Il vero salto di qualità, dal punto di vista della portabilità dei programmi e della facilità di programmazione, si ebbe negli anni 50, quando nacquero i primi linguaggi di programmazione ad alto livello. L idea di fondo era definire dei linguaggi la cui sintassi prescindesse dall architettura di un par- 1 Un dato può essere anche un istruzione del programma stesso. Si pensi ad esempio a un istruzione di salto Vai all istruzione tal dei tali, nella quale l operazione è espressa dalla parola Vai e l operando è l istruzione tal dei tali. 1

6 ticolare computer e fosse invece vicina al linguaggio parlato usato per descrivere gli algoritmi. Siccome il tipo di algoritmi e di conseguenza il linguaggio comune utilizzato per descriverli era diverso a seconda degli ambiti applicativi in cui un programmatore si trovava a lavorare, furono creati diversi linguaggi ad alto livello destinati a settori diversi. I primi linguaggi furono : FORTRAN (FORtran TRANslation), destinato ad algoritmi di natura matematico/computazionale e sviluppato intorno al 1955 in ambiente IBM da un gruppo di lavoro guidato da J. Backus. LISP (LISt Processing), per applicazioni nell ambito dell intelligenza artificiale, sviluppato intorno al 1958 al Massachussets Institute of Technology da J. McCarthy e collaboratori. COBOL (COmmon Business Oriented Language), finalizzato alla stesura di programmi in ambito commerciale e imprenditoriale, sviluppato nel 1959 da un comitato pubblico-privato noto come Short Range Committee. ALGOL 60 (ALGOrithmic Language), nato nel 1958 come IAL (International Algorithmic Language) grazie agli sforzi congiunti di una organizzazione europea (GAMM) e una statunitense (ACM) per creare un linguaggio universale di descrizione degli algoritmi, non orientato a una particolare classe di problemi. IAL fu successivamente modificato fino a dar luogo a ALGOL 60, che è stato molto importante non tanto come linguaggio in se stesso (le versioni commerciali non hanno avuto successo) quanto come primo esempio di linguaggio indipendente dalla macchina e dal problema, con costrutti sofisticati (scelte, cicli) non ancora previsti dagli altri linguaggi di alto livello. BASIC (Beginners All-purpose Symbolic Instruction Code), sviluppato nel 1964 al Darthmouth College da J. Kemeny e T. Kurtz come linguaggio didattico, che facilitava l avvicinamento alla programmazione di studenti di qualunque provenienza e formazione culturale. Con l evolversi della tecnologia e delle architetture dei computers, i linguaggi di programmazione si sono evoluti, spesso dando luogo a numerosi dialetti anche molto diversi dal linguaggio originale, e molti altri linguaggi sono nati. ALGOL 60 influenzò in molti casi l evoluzione dei linguaggi preesistenti e la definizione di quelli nuovi. Ad esempio, un discendente diretto di ALGOL è il PASCAL, sviluppato negli anni da N. Wirth come linguaggio per insegnare i principi della programmazione nello spirito di ALGOL, e molto diffuso nelle scuole statunitensi ed europee negli anni Negli stessi anni nacque il linguaggio C, ad opera di D.M. Richtie e K. Thompson, come linguaggio per la programmazione di sistema nell ambito dello sviluppo del nascente sistema operativo Unix. La fortuna del C 2

7 e la sua evoluzione sono dovute al fatto che, pur essendo un linguaggio di alto livello, permette di accedere ad aspetti di basso livello del computer, come fanno i linguaggi assembly. Negli anni 80, con l affermarsi dei Personal computers e delle interfacce grafiche, si sono sviluppati linguaggi orientati agli oggetti, come C++ (un discendente del C sviluppato intorno al 1979 da B. Straustrup) e Java (1995, J. Gosling). Vogliamo infine citare MATLAB (MATrix LABoratory), un linguaggio, o meglio dire un ambiente di programmazione, attualmente molto usato nell insegnamento dell analisi numerica e dell algebra lineare anche teorica. Il progetto MATLAB partì verso la fine degli anni 70 ad opera di C. Moler per permettere ai suoi studenti di usare le librerie FORTRAN per l algebra lineare senza dover imparare il linguaggio FORTRAN. Visto il successo dell operazione, negli anni 80 la proprietà fu acquisita dal gruppo Mathworks, che da allora ha curato lo sviluppo e la vendita di MATLAB. Più o meno negli anni in cui MATLAB diventava un linguaggio di proprietà, nasceva il linguaggio GNU Octave, che ha molto in comune con MATLAB ed è open-source. 2 Linguaggi interpretati e compilati Come già detto per i programmi assembly, anche i programmi scritti in un linguaggio di programmazione ad alto livello devono essere tradotti nel loro equivalente in linguaggio macchina per poter essere eseguiti. La traduzione è molto più onerosa che per i programmi assembly dal momento che i linguaggi ad alto livello prevedono l utilizzo di costrutti e istruzioni che non hanno una controparte diretta nei linguaggi macchina. Ad esempio, la semplice istruzione di assegnazione Assegna a c il valore di a+b, che in un linguaggio più algoritmico potremmo esprimere come oppure Poni c = a + b, c a + b, ha una traduzione immediata del tipo c = a + b (1) assegnazione in tutti i linguaggi ad alto livello, ma non nel contesto di un linguaggio macchina, dove ad essa corrisponde una sequenza di più operazioni di basso livello. Per chiarire meglio questo punto, ricordiamo che l operazione di assegnazione si divide in due fasi: il calcolo del valore dell espressione alla destra del segno di = e la memorizzazione del risultato nella locazione associata al nome simbolico indicato a sinistra del segno di =. Ricordiamo 3

8 anche che per eseguire le operazioni aritmetiche i processori utilizzano locazioni speciali chiamate registri, con un numero di bits più alto che nelle normali locazioni adibite alla memorizzazione dei numeri floating point (ad esempio, 80 bits contro i 32 o 64 dei numeri reali in precisione semplice o doppia). Lo scopo di questa maggiore lunghezza è ovviamente quello di accumulare un risultato più preciso, la cui mantissa verrà poi approssimata per arrotondamento al momento della memorizzazione in una normale locazione floating point. Supponiamo per semplicità di lavorare su un computer con un solo registro, dove viene copiato un operando, mentre l altro resta nella sua locazione (situazioni più realistiche, nelle quali i processori usano più di un registro, sono descritte nel libro [3]). Overton Allora, l istruzione ( 1) assegnazione viene spezzata in una sequenza di tre operazioni di un livello sufficientemente basso da avere una codifica in linguaggio macchina: 1. Copia nel registro il contenuto della locazione corrispondente all identificatore a; 2. Somma al contenuto del registro il contenuto della locazione individuata dal nome b, memorizzando il risultato nel registro stesso; 3. Trasferisci il contenuto del registro nella locazione corrispondente all identificatore c. Esistono due modalità per la traduzione di un programma in linguaggio macchina: l interpretazione e la compilazione. Nel primo caso la traduzione e l esecuzione vanno di pari passo: un interprete traduce un istruzione per volta e, in assenza di errori di sintassi, la esegue immediatamente; le istruzioni in linguaggio macchina non vengono conservate in memoria. Nel secondo caso un compilatore traduce tutto il programma, generando un programma in linguaggio macchina equivalente a quello originale, che può essere conservato in memoria. La compilazione talvolta prevede due passaggi: prima il programma viene tradotto in linguaggio assembly e poi l assembler traduce in linguaggio macchina. Sia gli interpreti che i compilatori sono a loro volta programmi, spesso originariamente scritti in un linguaggio di programmazione, tradotti in linguaggio macchina e definitivamente memorizzati sul computer. In linea di principio, dato un qualsiasi linguaggio L e un qualsiasi processore P, si potrebbe progettare sia un interprete che un compilatore per tradurre programmi scritti in L nel linguaggio macchina di P. In pratica, alcuni linguaggi vengono tipicamente tradotti mediante interpretazione (linguaggi interpretati) e altri mediante compilazione (linguaggi compilati). Ad esempio MATLAB e la sua controparte GNU Octave sono interpretati, mentre FORTRAN, C e C++ sono compilati. In realtà, molti informatici ritengono superata questa classificazione perché oggigiorno le due modalità di traduzione spesso sono mescolate; ad esempio, il compilatore traduce il programma in un linguaggio intermedio fra quello originale e l assembly, e 4

9 poi la traduzione in linguaggio macchina viene affidata a un interprete. 3 Storia del FORTRAN Come già accennato, il FORTRAN fu sviluppato, primo fra i linguaggi di programmazione ad alto livello, intorno al 1955 all IBM, destinato all allora nuovo computer IBM-704. Il primo compilatore fu elaborato nel Il successo di questo linguaggio rivoluzionario, che permetteva ai programmatori di scrivere istruzioni più vicine al linguaggio matematico (e inglese) che al linguaggio macchina, fu tale che negli anni immediatamente successivi cominciarono a proliferare dialetti, e corrispondenti compilatori, destinati ai diversi computers allora disponibili. L esistenza di dialetti diversi impediva la portabilità dei programmi, vanificando in larga misura il fatto dell essersi affrancati dalla sintassi del linguaggio macchina. Si cominciò allora a progettare uno standard del linguaggio, ovvero un insieme di regole sintattiche che avrebbero dovuto essere riconosciute da tutti i compilatori: un programma scritto rispettando rigorosamente quelle regole sarebbe stato traducibile da qualunque compilatore che si adeguasse ad esse, e quindi estremamente portabile. Nel 1962 fu fondata a tale scopo una commissione nell ambito dell ANSI 2 che lavorò fino al 1966, quando vide la luce il primo FORTRAN standard, noto come FORTRAN 66. Era un linguaggio ancora molto rozzo rispetto ai linguaggi attuali. Basti pensare che non prevedeva istruzioni per descrivere in modo immediato situazioni di scelta fra più percorsi alternativi, ma soltanto un istruzione tramite la quale si esegue o meno una singola azione, in base al verificarsi o meno di una determinata condizione (cfr. paragrafo 8.2.1). iflogico Per intendersi, un costrutto del tipo Se a > b, allora: max = a altrimenti: max = b Fine scelta non aveva un immediata traduzione in FORTRAN 66; per ottenere il risultato desiderato si doveva concepire l algoritmo nel seguente modo, equivalente al precedente ma molto più complicato: 2 L ANSI (American National Standard Institute) è un organizzazione fondata nel 1918 con il nome American Engineering Standards Committee allo scopo di sviluppare standards per prodotti, servizi, procedure, etc.. in diversi settori dell ingegneria. Il nome subì diverse variazioni negli anni, fino a diventare quello attuale nel Oggi nell ANSI sono rappresentate alcune agenzie governative statunitensi, corporations, università e soggetti privati. 5

10 Se a b, vai all istruzione 10 max = a vai all istruzione max = b Nel 1969 fu deciso di por mano alla definizione di un nuovo standard per tener conto delle tante importanti estensioni del FORTRAN 66 fiorite in quegli anni e anche del fatto che nel frattempo erano nati altri linguaggi, fra cui il C, che erano decisamente avanti rispetto al FORTRAN 66, ed era imperativo adeguarsi se non si voleva che il linguaggio morisse. Il nuovo standard, noto come FORTRAN 77, fu pubblicato nel Le novità rispetto alla precedente versione erano moltissime. Fra queste ricordiamo l introduzione di istruzioni di scelta articolate e la possibilità di gestire abbastanza agevolmente stringhe di caratteri. Il FORTRAN 77 è stato il FORTRAN per molti anni, e per certi aspetti lo è ancora, in quanto molti programmi di pubblico dominio sono scritti in FORTRAN 77 e molti programmatori continuano a usarlo anche se nel frattempo il linguaggio si è ulteriormente evoluto. Il successivo standard, noto come Fortran 90, fu pubblicato nel Ancora una volta, per stare al passo con altri linguaggi saliti prepotentemente alla ribalta, quali il C++ e il MATLAB, furono introdotte innovazioni sostanziali: gli autori del nuovo standard hanno voluto cambiare la sigla da FORTRAN a Fortran, probabilmente per evidenziare che il nuovo standard è talmente diverso dal precedente da poter essere quasi considerato un nuovo linguaggio. Fra le principali innovazioni ricordiamo: le operazioni sugli array (variabili dimensionate quali vettori, matrici, etc.) o sezioni di array (ad esempio gruppi di righe e/o colonne di una matrice) che possono snellire la stesura dei programmi e migliorarne l efficienza su computers con adeguate architetture; la gestione dinamica della memoria contrapposta a quella statica del FORTRAN 77 3 ; i tipi di dati definiti dall utente; i puntatori. Gli estensori del Fortran 90 hanno comunque mantenuto il FORTRAN 77 come sottinsieme del nuovo standard, per ovvii motivi di compatibilità: una scelta diversa avrebbe significato dover buttare alle ortiche o tradurre tutto il (tanto) software scritto in FORTRAN 77, il che avrebbe probabilmente provocato la rivolta degli utilizzatori. In alcuni ambienti si parla di Fortran 90/95 invece che Fortran 90. Questo è dovuto al fatto che negli anni immediatamente successivi al 1992 il Fortan 90 subì un primo aggiustamento, mirato essenzialmente ad eliminare alcune ambiguità che complicavano la costruzione dei compilatori e rischiavano di compromettere la portabilità 3 Con gestione statica della memoria si intende che la memoria per le variabili coinvolte in un programma viene allocata dal compilatore, prima dell esecuzione. Questo implica fra l altro che il programmatore deve decidere in fase di stesura del programma le dimensioni di tutte le variabili dimensionate coinvolte. Con la gestione dinamica invece la memoria per le variabili viene allocata durante l esecuzione, via via che si rende necessaria. 6

11 dei programmi. Si arrivò così al nuovo standard Fortran 95, in cui comunque non ci sono novità di rilievo rispetto al Fortran 90. Concludiamo questo excursus citando gli aggiornamenti più recenti: il Fortran 2003, che ha introdotto alcuni elementi di programmazione a oggetti, e il Fortran 2008 che ne aggiusta le ambiguità. 4 Perché insegnare il FORTRAN 77? Queste dispense raccolgono gli elementi essenziali di FORTRAN 77, anche se talvolta verranno indicate delle alternative proprie del Fortran 90 ormai accettate da molti compilatori oggi in uso. Per tutti i dettagli che qui non vengono discussi, gli studenti possono ricorrere ai libri [1] AGM e [2] MR citati in bibliografia, o al numeroso materiale reperibile in rete (da prendersi con molto spirito critico, come tutte le informazioni diffuse in Internet). Per quanto riguarda i compilatori FORTRAN, faremo spesso riferimento in queste dispense a due di essi, entrambi liberamente scaricabili da Internet, che presumibilmente saranno usati dagli studenti a cui questi appunti sono destinati: il compilatore Open WATCOM, che è utilizzabile in ambiente Windows e realizza un FORTRAN 77 stretto, e il compilatore gfortran, che è utilizzabile in ambiente Linux e realizza il Fortran 90/95. Perché continuare a insegnare uno standard ormai vecchio come il FORTRAN 77? Ci sono diverse risposte a questa domanda. 1) Molte importanti librerie matematiche, prima fra tutte LAPACK per l algebra lineare, sono scritte in FORTRAN 77 e, per poterle usare bene, occorre conoscere questo linguaggio. 2) La gestione statica della memoria prevista dal FORTRAN 77 talvolta complica un po la stesura dei programmi perché il programmatore deve decidere fin dall inizio le dimensioni di tutte le variabili dimensionate coinvolte nel programma. Questa necessità fu eliminata nel Fortran 90 introducendo la possibilità di gestire dinamicamente la memoria, già prevista da altri linguaggi come il C++ e il MATLAB. D altra parte, la gestione dinamica ha un potenziale svantaggio pratico, tristemente noto a molti programmatori che ne hanno fatto esperienza: la quantità di memoria richiesta per l esecuzione di un programma è spesso decisamente maggiore di quella richiesta in regime statico, con il risultato che su macchine con risorse limitate (ad esempio un normale Personal Computer) diventa impossibile far eseguire il programma. 3) Alcuni compilatori open-source oggi molto usati, come gfortran, consentono l allocazione dinamica della memoria ma non la realizzano bene. Il risultato è che l esecuzione di un programma può essere interrotta dal sistema per violazioni della memoria anche se non contiene errori. 7

12 4) Una volta che si conosce bene un linguaggio di programmazione rigido come il FORTRAN 77, diventa assolutamente facile imparare il Fortran 90. realizza 5 Realizzazione di un programma FORTRAN Con il termine realizzazione, o implementazione, di un programma scritto in FORTRAN si intende la sequenza di operazioni da fare per arrivare all esecuzione del programma. Per i linguaggi compilati come il FORTRAN le operazioni sono due: compilazione e collegamento. Per spiegare in cosa consistono queste due operazioni, faremo riferimento al seguente semplice programma: C C PROGRAM ERONE Programma che calcola l area di uno o più triangoli usando la formula di Erone REAL A,B,C,SP,AREA INTEGER LEGGI 10 PRINT, immettere le lunghezze dei lati READ, A,B,C SP=(A+B+C)/2. AREA=SQRT(SP (SP-A) (SP-B) (SP-C)) PRINT, area=, AREA PRINT, ancora? (1/0= si/no) READ,LEGGI IF(LEGGI.EQ.1) GOTO 10 STOP Lo scopo del programma è calcolare e stampare l area di uno o più triangoli con la formula di Erone secondo la quale, ricordiamolo, l area è data da s(s a)(s b)(s c), dove a,b, e c sono le lunghezze dei lati e s è il semiperimetro. Nel programma usiamo i nomi A,B e C per a,b e c e SP per s. Senza entrare nei dettagli, diamo un cenno al significato di tutte le istruzioni contenute nel programma: L istruzione PROGRAM ERONE dà un nome al programma; Le istruzioni REAL A,B,C,SP,AREA e INTEGER LEGGI mettono in evidenza che A,B,C,SP e AREA rappresentano grandezze a valori reali, mentre LEGGI identifica una grandezza a valori interi; Le istruzioni caratterizzate dalla parola chiave PRINT, sono istruzioni di scrittura sul video: le stringhe racchiuse fra apici (come immettere le lunghezze dei lati ) vengono riprodotte pari pari, mentre delle variabili come AREA viene stampato il valore; 8

13 Le istruzioni caratterizzate dalla parola chiave READ, sono istruzioni di lettura: i dati vengono scritti sulla tastiera separati da virgole o spazi bianchi, su una o più righe; L istruzione IF(LEGGI.EQ.1) GOTO 10 realizza una situazione di scelta: se il valore della variabile LEGGI è uguale a 1, viene eseguita l istruzione GOTO 10, per effetto della quale l esecuzione del programma riprende dall istruzione 10 PRINT, immettere le lunghezze dei lati ; altrimenti l esecuzione prosegue con la successiva istruzione STOP che fa fermare il programma. Questo significa che il numero di triangoli non è fissato in anticipo: dopo aver calcolato l area di un triangolo, il programma chiede se si deve continuare; in caso affermativo, si leggono le lunghezze dei lati di un nuovo triangolo, altrimenti ci si ferma 4. L istruzione che indica la fine del programma. compila 5.1 Compilazione La compilazione consiste nella traduzione del programma FORTRAN, detto programma sorgente, nel suo equivalente in linguaggio macchina, detto programma oggetto. La traduzione è un operazione complessa perché coinvolge l analisi lessicale, sintattica e semantica del programma sorgente. Il compilatore ha anche il compito di allocare la memoria per il programma. Per semplificare, possiamo sintetizzare la compilazione nel modo seguente. Il compilatore effettua una prima scansione del programma, durante la quale vengono distinti gli identificatori scelti dal programmatore dalle parole chiave e simboli di operazioni aritmetiche/logiche. Durante questa scansione viene creata la tavola dei simboli nella quale vengono elencati gli identificatori, ciascuno con i suoi attributi (informazioni utili a interpretarne il significato nelle fasi successive) e l indirizzo di memoria assegnatogli. Osserviamo il programma ERONE, scorrendo il quale il compilatore trova i seguenti identificatori: il nome simbolico ERONE, che identifica il programma; i nomi simbolici A, B, C, SP e AREA, che il programmatore ha scelto per identificare le grandezze variabili su cui il programma opera; il compilatore inserisce nella tavola dei simboli tutti questi identificatori e per ognuno indica la dimensione (scalare), il tipo (reale) e l indirizzo della locazione di memoria che gli viene associata; 4 Dal punto di vista algoritmico, questo si configura come un ciclo while, in cui il proseguimento o l interruzione delle ripetizioni dipendono dal verificarsi o meno di una determinata condizione. Il FORTRAN 77 non prevede un istruzione che realizzi questo tipo di ciclo, che pertanto viene realizzato tramite l istruzione di scelta IF e quella di salto GOTO. Il Fortran 90 ha invece introdotto un apposita istruzione. 9

14 il nome simbolico LEGGI, scelto dal programmatore per gestire l interruzione del programma; il compilatore lo inserisce nella tavola dei simboli indicando la dimensione (scalare), il tipo (intero) e l indirizzo della locazione di memoria che gli viene associata. il numero 10 che precede l istruzione PRINT,...; il compilatore classifica questo identificatore come etichetta (in inglese, label) e lo inserisce nella tavola dei simboli insieme all indirizzo in memoria dell istruzione corrispondente; il numero 2. nell istruzione SP=(A+B+C)/2.; il compilatore lo classifica come identificatore di una costante reale e lo inserisce nella tavola insieme all indirizzo della locazione di memoria in cui tale valore è memorizzato; il nome simbolico SQRT, che identifica una procedura, più precisamente una funzione intrinseca, per il calcolo della radice quadrata di un numero reale 5 ; il compilatore lo inserisce nella tavola insieme alle indicazioni utili per l aggancio alla procedura nella successiva fase di collegamento; Dopo aver costruito la tavola dei simboli, il compilatore scandisce nuovamente il programma per effettuare la traduzione vera e propria: le parole chiave e i simboli di operazioni aritmetiche e logiche vengono sostituiti dal loro equivalente in linguaggio macchina e gli identificatori vengono sostituiti dagli indirizzi delle locazioni di memoria ad essi associati durante la prima scansione. Il risultato è il programma oggetto. La traduzione non può ovviamente essere portata a termine se una o più istruzioni non sono sintatticamente corrette. In questo caso, al posto del programma oggetto viene generato un elenco degli errori di sintassi presenti nel programma e delle istruzioni in cui tali errori si trovano (diagnostico). Usando questo elenco, il programmatore può correggere gli errori e risottoporre il programma al compilatore, fino a quando tutti gli errori non siano stati eliminati. La forma in cui il diagnostico viene presentato e il livello di dettaglio variano da compilatore a compilatore. Alcuni compilatori prevedono anche la segnalazione, attraverso messaggi di avvertimento (Warning), della presenza nel programma di eventuali situazioni sospette, che non sono classificabili come errori di sintassi ma potrebbero nascondere qualche svista del programmatore; ad esempio, se nello scrivere l istruzione PRINT, area=, AREA nel programma ERONE si facesse un errore di battitura e l istruzione risultasse PRINT, area=, ARRA 5 Ogni compilatore è accompagnato da un insieme di procedure, dette funzioni intrinseche, che realizzano funzioni matematiche (e non solo) di interesse comune. 10

15 qualche compilatore avvertirebbe la variabile ARRA viene usata senza che le sia stato attribuito alcun valore in precedenza (uninitialized variable). La presenza di situazioni anomale come questa non impedisce la traduzione del programma e la creazione del programma oggetto; d altra parte, i messaggi di Warnings sono molto utili per individuare veri e propri errori, di battitura o di altra natura. Per quanto riguarda i due compilatori di riferimento, il gfortran segnala i messaggi di Warning soltanto se usato con l opzione Wall (che raccomandiamo vivamente di usare sempre), mentre l Open WATCOM li segnala automaticamente. Come impareremo più avanti, un programma FORTRAN è spesso composto da più unità di programma, o moduli sorgenti, ciascuno dei quali è la traduzione in FORTRAN di un algoritmo. Ad esempio, se dobbiamo scrivere un programma che prevede la risoluzione di un certo numero di equazioni di secondo grado, possiamo organizzarlo in due unità di programma: una che, dati i coefficienti a,b e c di un equazione, ne calcola le soluzioni; l altra che legge i coefficienti di tutte le equazioni, le risolve ad una ad una usando la prima unità, ed eventualmente stampa i risultati. Il secondo modulo è il programma principale, quello che gestisce le operazioni; il primo modulo si configura invece come un sottoprogramma, che non agisce autonomamente ma solo quando chiamato in causa dal programma principale. L unione dei due moduli sorgenti forma il programma sorgente. Ebbene, in presenza di un programma costituito da più unità di programma, il compilatore le traduce separatamente e indipendentemente l una dall altra, creando per ciascuna di esse una tavola dei simboli e un modulo oggetto (o un diagnostico in presenza di errori di sintassi). Quando tutti i moduli sorgenti sono privi di errori, l unione dei moduli oggetto corrispondenti forma il programma oggetto. link 5.2 Collegamento Pur essendo scritto in linguaggio macchina, il programma oggetto non è ancora eseguibile. Infatti, il compilatore non è in grado di stabilire a priori le richieste di memoria di un unità di programma, e tantomeno del programma nel suo complesso; segue da questo che gli indirizzi memorizzati nella tavola dei simboli relativa a un unità di programma sono virtuali, in quanto fanno riferimento all indirizzo 0 in cui si considera memorizzata la prima istruzione dell unità di programma stessa. Trasformare questi indirizzi virtuali in indirizzi effettivi è il compito principale del linker (il collegatore ), il quale assolve a questo incarico essenzialmente tramite le seguenti operazioni: 1) crea una tabella dei moduli oggetto che compongono il programma; 2) assegna un indirizzo effettivo di inizio ad ogni modulo; 11

16 3) modifica di conseguenza gli indirizzi virtuali all interno di ogni modulo; 4) cerca in tutti i moduli le istruzioni che fanno riferimento ad altri moduli e vi inserisce l indirizzo di inizio dei moduli richiamati. Se il programma fa riferimento a moduli inesistenti, o se occupa troppa memoria, il linker segnala la situazione di errore, altrimenti genera il programma eseguibile. A questo punto si può dare avvio all esecuzione. 6 Elementi di base del FORTRAN 6.1 Alfabeto L insieme dei caratteri utilizzabili in un programma FORTRAN è il seguente: 26 lettere maiuscole: A, B, C,..., W, Z 26 lettere minuscole: a, b, c,..., w, z 10 cifre: 0, 1,..., 9 12 caratteri speciali: = + - / ( )., $ : Alcuni altri caratteri speciali, fra cui!, < e >, sono stati aggiunti all alfabeto nel Fortran 90. Dal punto di vista della scrittura dei programmi, due cose sono importanti: I compilatori FORTRAN non fanno distinzione fra lettere maiuscole e minuscole (si dice che il linguaggio è case-insensitive): le parole chiave possono essere scritte con caratteri maiuscoli o minuscoli indifferentemente e nomi simbolici come ANNA, Anna o anna sono la stessa cosa; Esattamente come quando si scrive in italiano, nello scrivere un programma FORTRAN si devono separare le parole, intese come parole chiave e identificatori, tramite spazi bianchi, a meno che non ci sia già un simbolo (ad esempio una virgola o una parentesi aperta o chiusa) che funge da separatore. Durante la prima scansione del programma, il compilatore analizza le istruzioni in modo da distinguere le parole chiave dai separatori e dagli identificatori. A questo fine, gli spazi bianchi in eccesso vengono ignorati ( GOTO 10 o GOTO 10 sono considerati la stessa cosa); d altra parte, l assenza di uno spazio bianco necessario può causare malintesi, per cui nella scrittura GOTO10 il compilatore non riesce a separare la parola chiave dall identificatore e registra GOTO10 come un identificatore da inserire nella tavola dei simboli. 6.2 Struttura delle linee Un programma FORTRAN è una successione di linee su cui sono scritte le istruzioni (in inglese, statements). Non è prevista punteggiatura per separare 12

17 un istruzione dalla successiva: la regola è che, finita un istruzione, si va a capo e si inizia a scrivere la successiva. Le istruzioni vanno scritte sulle linee rispettando il cosiddetto formato fisso, ereditato dall epoca in cui non esistevano terminali e tastiere e i programmi venivano scritti usando le schede perforate 6 ; questo formato, che è stato poi abbandonato dal Fortran 90, prescrive le seguenti regole per l uso delle colonne: Colonne da 1 a 5: sono riservate alle eventuali etichette delle istruzioni (cfr. l istruzione 10 PRINT,... del programma ERONE). Un etichetta può essere un qualunque numero naturale da 1 a e può essere collocata dovunque in queste colonne. Colonna 6: abitualmente è vuota; se contiene un (qualsiasi) carattere, la linea viene considerata dal compilatore una continuazione di quella precedente. Colonne da 7 a 72: in queste colonne vengono scritte le istruzioni. In virtù di quanto detto sull utilizzo degli spazi, un istruzione può iniziare in qualsiasi colonna dalla 7 in poi. Se l istruzione è troppo lunga e va oltre la colonna 72, può essere continuata sulla linea successiva. Colonne da 73 in poi: sono ignorate dal compilatore. Ogni programmatore sa che per rendere più comprensibile un programma è buona regola inserire dei commenti che ne spieghino lo scopo e il flusso. In FORTRAN 77 questo scopo è raggiunto inserendo delle linee di commento, ovvero linee che contengono un carattere C o a colonna 1. In Fortran 90 è considerato commento anche qualunque carattere scritto dopo un punto esclamativo, in qualunque punto di una linea. I commenti sono ignorati dal compilatore. struttura 6.3 Struttura delle unità di programma Le istruzioni FORTRAN si dividono in due categorie: le istruzioni eseguibili descrivono azioni che dovranno essere compiute durante l esecuzione del programma e vengono tradotte dal compilatore nelle equivalenti istruzioni del linguaggio macchina; le istruzioni non eseguibili invece forniscono informazioni di cui il compilatore deve tener conto durante la traduzione, ma non vengono tradotte di per sé (sono istruzioni di questa natura, ad esempio, le intestazioni delle unità di programma come PROGRAM ERONE e le specificazioni di tipo, come REAL A,B,C,SP,AREA e INTEGER LEGGI). Le istruzioni non eseguibili diverse da un intestazione di unità di programma e 6 Ogni scheda serviva a scrivere un istruzione e aveva 80 colonne, su ciascuna delle quali veniva perforato un carattere. Le ultime 8 colonne non venivano usate per le istruzioni del programma, ma per numerare le schede, in modo da poterle rimettere nell ordine giusto se per un motivo qualsiasi venivano mescolate. 13

18 dalle FORMAT (di cui parleremo nel paragrafo write 10) sono chiamate istruzioni di specificazione o dichiarative. Tenendo conto di questa classificazione, ogni unità di programma è divisa in quattro parti: l intestazione, che è la prima istruzione nella quale si specifica se l unità di programma è un programma principale o un sottoprogramma e, in questo caso, di quale tipo di sottoprogramma si tratta (cfr. paragrafo 11). sottoprog L intestazione è facoltativa in un programma principale e obbligatoria in un sottoprogramma; la sezione dichiarativa, che raccoglie tutte le eventuali istruzioni dichiarative relative a nomi simbolici usati nell unità di programma; la sezione esecutiva, che raccoglie tutte le istruzioni eseguibili; la fine dell unità di programma, rappresentata dall istruzione. Le istruzioni FORMAT possono comparire in qualsiasi punto dell unità di programma. Queste regole sono schematizzate qui sotto, con riferimento in particolare al programma ERONE. intestazione PROGRAM ERONE sezione dichiarativa INTEGER LEGGI REAL A,B,C,SP,AREA sezione esecutiva 10 PRINT, immettere le lunghezze dei lati fine. STOP Per ERONE, l intestazione potrebbe non esserci perché si tratta di un programma principale. Notiamo inoltre che la sezione esecutiva del programma finisce con l istruzione STOP, e subito dopo viene l istruzione. A questo proposito, è importante puntualizzare la differenza fra STOP e. L istruzione STOP è un istruzione eseguibile che corrisponde all azione ferma l esecuzione del programma, e può comparire in qualunque punto dell unitàs di programma (eventualmente anche in più punti), dovunque l algoritmo richieda di fermarsi. L istruzione rappresenta invece la fine fisica dell unità di programma e compare sempre e soltanto alla fine; essa non corrisponde a nessuna azione, ma dice al compilatore che l unità di programma finisce in questo punto, e qualunque cosa sia scritta dopo la non ne fa parte. Un istruzione STOP che preceda immediatamente la può essere omessa. 6.4 Costanti, variabili e loro tipo Le grandezze su cui un programma opera possono essere costanti o variabili. Una costante è una grandezza il cui valore è definito prima dell esecuzione e 14

19 non può cambiare durante l esecuzione. Una variabile è invece una grandezza il cui valore viene definito in fase di esecuzione e può variare nel corso della stessa. Il compilatore assegna una locazione di memoria sia alle costanti che alle variabili; la differenza sta nel fatto che nella locazione di una costante viene subito memorizzato il valore, mentre in quella destinata a una variabile non viene memorizzato alcun valore 7. Sia le costanti che le variabili hanno un tipo che può essere: intero, reale in precisione semplice (o, semplicemente, reale), reale in precisione doppia (o, semplicemente, doppia precisione), complesso, logico, carattere. Costanti. La forma in cui una costante è scritta ne determina tipo e valore. Una costante intera è un numero senza punti o virgole decimali, eventualmente preceduto da un segno. Sono esempi validi i seguenti: mentre non lo sono o 1,345 perché contengono il punto o la virgola. Una costante reale è un numero in cui compare un punto decimale, eventualmente preceduto da un segno. Essa può essere scritta in forma esponenziale o non esponenziale; nel primo caso l esponente consiste nella lettera E seguita da un intero positivo o negativo. Sono esempi validi i seguenti: E E E0 1.E 6 1.E6 mentre non sono validi 1,04 (perché contiene la virgola invece del punto) e -12.3E0.5 (perché l esponente è un numero reale). Nel formato esponenziale si può evitare il punto decimale; ad esempio 5E3 è un alternativa valida a 5.E3. Questa possibilità non esisteva in FORTRAN 66 ed è stata eliminata in Fortran 90. Una costante doppia precisione si presenta come una costante reale in formato esponenziale, con la lettera D al posto di E. La differenza sta nel modo in cui il valore viene convertito in binario e memorizzato. Ad esempio, su una macchina a 32 bits la costante 0.1D 4, che corrisponde al valore , viene memorizzata su 64 bits, di cui 52 dedicati alla mantissa e 11 alla caratteristica, mentre la costante 0.1E 4, che corrisponde al solito valore, viene memorizzata su 32 bits, di cui 23 per la mantissa e 8 per la caratteristica. Una costante complessa è data da una coppia di costanti reali separate da una virgola e racchiuse fra parentesi tonde: la prima costante rappresenta la parte reale del numero e la seconda la parte immaginaria. Ad esempio, la costante ( 0.1, 2.5E 2) identifica il numero complesso i. Il 7 Alcuni compilatori, ma non tutti, inseriscono il valore 0 (zero) nelle locazioni destinate alle variabili. 15

20 compilatore riserva a una costante di questo tipo due locazioni di memoria consecutive atte a contenere la rappresentazione floating point di un numero reale 8. Una costante logica può assumere solo due valori, vero e falso, che in FORTRAN sono scritti rispettivamente come.true. e.false. Una costante carattere è una stringa di caratteri racchiusa fra apici. Sono esempi di costanti carattere le stringhe immettere le lunghezze dei lati, area= e ancora? (1/0= si/no) che compaiono nel programma ERONE del paragrafo 5. realizza Talvolta è utile identificare una costante con un nome simbolico, pur senza cambiarne la natura di costante. Immaginiamo di aver scritto un programma in cui compare molte volte la costante reale 1.E 3, e di volerlo cambiare in modo che tutte le grandezze reali siano in doppia precisione. Allora tutte le occorrenze di 1.E 3 devono essere cambiate in 1.D 3 e dobbiamo usare a questo scopo la funzionalità sostituisci degli editori di testo. Un alternativa è quella di scrivere il programma usando un nome simbolico, ad esempio COST, al posto della costante 1.E 3 e associare il nome alla costante tramite l istruzione dichiarativa PARAMETER che ha in questo caso la forma PARAMETER(COST=1.E 3) Se organizziamo così il programma, per cambiare il tipo della costante sarà sufficiente intervenire sull istruzione PARAMETER, facendola diventare PARAMETER(COST=1.D 3) Il fatto che COST, pur essendo un nome simbolico, identifichi una costante implica che qualunque istruzione che tenti di cambiarne il valore provocherà una situazione di errore in fase di compilazione (nel qual caso il modulo oggetto non viene creato) o in fase di esecuzione (nel qual caso l esecuzione del programma viene bloccata dal sistema). Variabili. Una variabile è identificata da un nome simbolico che può contenere solo lettere e cifre per un massimo di 6 caratteri e deve iniziare con una lettera. I nomi sono validi, mentre A1 B somma WORK n2p1 Norma2 1c Norma 2 Spaziolavoro n2&1 8 Alcuni compilatori accettano anche costanti di tipo complesso-doppia precisione, come ad esempio (1.D2, 5.1D0), a cui vengono riservate due locazioni per numeri floating point doppia precisione. 16

21 non lo sono. Alcune restrizioni sono state allentate nei dialetti nati dal FORTRAN 77 e le estensioni sono state poi recepite in Fortran 90; così molti compilatori accettano oggi nomi con un massimo di 31 caratteri e contenenti il carattere underscore ( ). Cosa dire del tipo di una variabile? Se si vuole che essa sia considerata dal compilatore intera o reale, si può sfruttare la regola di default seguente, in base alla quale l iniziale del nome determina il tipo: iniziale da A a H : tipo reale iniziale I,J, K, L, M o N : tipo intero iniziale da O a Z : tipo reale. Così, in assenza di altre indicazioni, il compilatore classifica come reali le variabili A1, WORK, FLAG, e come intere le variabili NORMA, L, MAX. Da questo punto di vista, le istruzioni di specificazione REAL A,B,C,SP,AREA e INTEGER LEGGI nel programma ERONE del paragrafo 5 realizza sono inutili, perché i tipi delle variabili coinvolte sarebbero per default quelli specificati. A questo proposito i programmatori FORTRAN si dividono grosso modo in due categorie. Ci sono quelli che rispettano rigorosamente la regola di default nella scelta dei nomi delle variabili intere e reali e di conseguenza non hanno bisogno di istruzione dichiarative al riguardo. Al contrario, ci sono alcuni che, indipendentemente dal rispetto della regola di default, preferiscono dichiarare il tipo di tutte le variabili; questa scelta di solito ha un carattere puramente estetico, ma acquista maggiore utilità se si utilizza l istruzione dichiarativa (che non fa parte della standard FORTRAN 77, ed è invece standard per il Fortran 90) IMPLICIT NONE il cui effetto è annullare la regola di default, costringendo quindi a dichiarare esplicitamente il tipo di tutte le variabili. Siccome in questa situazione il compilatore segnala un errore se il tipo di una variabile non è specificato, si ha un controllo immediato sulla presenza di eventuali errori di battitura nei nomi simbolici nella sezione esecutiva del programma. L istruzione IMPLICIT NONE deve precedere tutte le altre istruzioni dichiarative. La regola di default contempla soltanto i tipi intero e reale. Per qualunque altro tipo bisogna ricorrere a un istruzione di specificazione di tipo usando il dichiaratore che ci interessa fra DOUBLE PRECISION, COMPLEX, LOGICAL e CHARACTER. Le istruzioni in questione vanno inserite nella sezione dichiarativa dell unità di programma a cui si riferiscono e sono formate dalla parola chiave, ovvero il dichiaratore, seguito dall elenco delle variabili a cui si vuole attribuire quel tipo. Consideriamo alcuni esempi: 17

22 DOUBLE PRECISION A, W1, W2, NORMA COMPLEX RAD LOGICAL CONDIZ, IND CHARACTER 10 NOME Le prime tre frasi non hanno bisogno di spiegazione. L ultima dice che NOME identifica una variabile di tipo carattere di lunghezza 10, e pertanto i valori che NOME può assumere sono stringhe di al più 10 caratteri. Non ci dilungheremo oltre sulle variabili di tipo carattere, rimandando a [1] AGM o [2] MR per ulteriori dettagli. Un altro strumento utilizzabile per specificare il tipo delle variabili è l istruzione IMPLICIT, che permette di associare un tipo particolare alle variabili il cui nome inizia con una particolare lettera dell alfabeto o con una lettera appartenente ad un particolare gruppo. Per esempio, le istruzioni IMPLICIT DOUBLE PRECISION D IMPLICIT REAL M,N dicono al compilatore che tutti i nomi simbolici che iniziano per D identificano variabili di tipo doppia precisione e quelli che iniziano per M o N corrispondono a variabili reali; l istruzione IMPLICIT INTEGER (A-C) attribuisce tipo reale a tutte le variabili il cui nome inizia per A, B o C; infine l istruzione IMPLICIT DOUBLE PRECISION (A-H,O-Z) dichiara di tipo doppia precisione tutte le variabili il cui nome comincia per una lettera fra A e H oppure fra O e Z (in pratica tutte le variabili che la regola di default definirebbe come reali). arrays 6.5 Variabili dimensionate (arrays) Finora abbiamo parlato delle variabili FORTRAN come di grandezze scalari, a cui il compilatore associa una locazione di memoria. In realtà capita molto spesso di dover tradurre in FORTRAN algoritmi che operano anche su vettori e matrici e, più raramente, su variabili a tre o più dimensioni (il massimo numero di dimensioni consentito in FORTRAN 77 è 7). A questo proposito, dobbiamo imparare due cose: come avvertire il compilatore che un nome simbolico corrisponde a una variabile dimensionata (il termine tecnico è array) e come tradurre in FORTRAN l usuale notazione vettoriale con gli indici. Per quanto riguarda la prima questione, si può usare un apposita istruzione dichiarativa, caratterizzata dalla parola chiave 18

23 DIMENSION, tramite la quale si danno al compilatore tutte le informazioni che gli occorrono per allocare la memoria e tradurre poi nel modo corretto le istruzioni eseguibili che coinvolgono elementi dell array. Consideriamo ad esempio l istruzione DIMENSION X(3), M(4,2) Essa dice al compilatore che X è un vettore composto da 3 elementi e M è una matrice di 4 righe e 2 colonne. Il compilatore assegna a X tre locazioni di memoria consecutive in cui sono memorizzati gli elementi di X: nella prima c è l elemento di indice 1, nella seconda quello di indice 2, e nella terza quello di indice 3. Per la matrice M il compilatore riserva invece 8 locazioni di memoria consecutive, nelle quali dobbiamo immaginare la matrice memorizzata per colonne, come descritto nello schema seguente: locazione: indici: (1,1) (2,1) (3,1) (4,1) (1,2) (2,2) (3,2) (4,2) Esattamente come una variabile scalare, così anche una variabile dimensionata ha un tipo che viene attribuito dal compilatore in base alle stesse regole viste per le variabili scalari. Ad esempio, in assenza di dichiarazioni, X è un vettore reale e M è una matrice intera, con il che si intende che tutti gli elementi di X sono reali e tutti gli elementi di M sono interi. Per informare il compilatore che una variabile è dimensionata, si possono usare anche istruzioni dichiarative diverse dalla DIMENSION; ad esempio l istruzione DOUBLE PRECISION VET1(20) è equivalente alla coppia di istruzioni DOUBLE PRECISION VET1 DIMENSION VET1(20) Negli esempi precedenti gli indici degli elementi dell array vanno da 1 fino alla dimensione stabilita nella dichiarazione dell array. D altra parte, talvolta può essere comodo poter usare indici che variano fra estremi diversi. Ad esempio, spesso in matematica si usano scritture del tipo x 0,x 1,...,x n per indicare i primi elementi di una successione, che possono essere assimilati agli elementi di un vettore x di n + 1 elementi, in cui gli indici partono da 0 e arrivano a n. Oppure, se si deve creare un vettore in cui memorizzare quanti abitanti di un paese sono nati negli anni dal 1991 al 2010, può essere comodo usare gli indici da 1991 a 2010 invece che da 1 a 20. In FORTRAN è possibile dire al compilatore che gli indici non partono da 1, esprimendo esplicitamente nella dichiarazione dell array il primo e l ultimo valore che l indice può assumere. Nel primo dei due esempi precedenti, supponendo n 10 si potrebbe usare la dichiarazione 19

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

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

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

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

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

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Lezioni di Matematica 1 - I modulo

Lezioni di Matematica 1 - I modulo Lezioni di Matematica 1 - I modulo Luciano Battaia 16 ottobre 2008 Luciano Battaia - http://www.batmath.it Matematica 1 - I modulo. Lezione del 16/10/2008 1 / 13 L introduzione dei numeri reali si può

Dettagli

Introduzione. Informatica B. Daniele Loiacono

Introduzione. Informatica B. Daniele Loiacono Introduzione Informatica B Perchè studiare l informatica? Perchè ha a che fare con quasi tutto quello con cui abbiamo a che fare ogni giorno Perché è uno strumento fondamentale per progettare l innovazione

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Metodologie di programmazione in Fortran 90

Metodologie di programmazione in Fortran 90 Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C. Fondamenti. Struttura di un programma. Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p. 3/43 M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p.

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via B. Castiglione 59-00142 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) Un insieme è una collezione di oggetti. Il concetto di insieme è un concetto primitivo. Deve esistere un criterio chiaro, preciso, non ambiguo, inequivocabile,

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Scopo della lezione. Informatica. Informatica - def. 1. Informatica Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni

Dettagli

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1 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

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

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 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete. Le equazioni Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete. Definizione e caratteristiche Chiamiamo equazione l uguaglianza tra due espressioni algebriche,

Dettagli

Matematica generale CTF

Matematica generale CTF Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) 3. (testo di riferimento: Bellini-Guidi) Ing. Agnese Pinto 1 di 28 Linguaggi di programmazione Un programma è un algoritmo

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

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 Problema Strategia

Dettagli

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi

Dettagli

Introduzione a Dev-C++

Introduzione a Dev-C++ Introduzione a Dev-C++ Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Note: Dev-C++ richiede Windows 95/98/NT/2000/XP

Dettagli

MAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica.

MAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica. MAPPE DI KARNAUGH 1. Generalità Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica. E ovvio che più semplice è la funzione e più semplice

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B 23.XI.2012 VINCENZO MARRA Indice Esercizio 1 1 Menu 1 Tempo: 35 min. 2 Commento 1 2 Esercizio 2 2 Ordinamento e ricerca binaria con la classe

Dettagli

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Introduzione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Argomenti trattati Che cosa è python Variabili Assegnazione Condizionale Iterazione in una lista di

Dettagli

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano

Dettagli

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL In informatica il Pascal è un linguaggio di programmazione creato da Niklaus Wirth ed é un linguaggio di programmazione strutturata. I linguaggi di programmazione

Dettagli

L analisi dei dati. Capitolo 4. 4.1 Il foglio elettronico

L analisi dei dati. Capitolo 4. 4.1 Il foglio elettronico Capitolo 4 4.1 Il foglio elettronico Le più importanti operazioni richieste dall analisi matematica dei dati sperimentali possono essere agevolmente portate a termine da un comune foglio elettronico. Prenderemo

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Guida Compilazione Piani di Studio on-line

Guida Compilazione Piani di Studio on-line Guida Compilazione Piani di Studio on-line SIA (Sistemi Informativi d Ateneo) Visualizzazione e presentazione piani di studio ordinamento 509 e 270 Università della Calabria (Unità organizzativa complessa-

Dettagli

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza vers.3 in lavorazione Docente SAFFI FABIO Contenuti 01.Esercizi generici sul diagramma di flusso - flow chart... 2

Dettagli

La Macchina Virtuale

La Macchina Virtuale Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Anno Accademico 2008/2009 Docente: ing. Salvatore

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0.

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0. EQUAZIONI E DISEQUAZIONI Le uguaglianze fra espressioni numeriche si chiamano equazioni. Cercare le soluzioni dell equazione vuol dire cercare quelle combinazioni delle lettere che vi compaiono che la

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools Una breve introduzione operativa a STGraph Luca Mari, versione 5.3.11 STGraph è un sistema software per creare, modificare ed eseguire modelli di sistemi dinamici descritti secondo l approccio agli stati

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

MANUALE EDICOLA 04.05

MANUALE EDICOLA 04.05 MANUALE EDICOLA 04.05 Questo è il video che si presenta avviando il programma di Gestione Edicola. Questo primo video è relativo alle operazioni di carico. CARICO Nello schermo di carico, in alto a sinistra

Dettagli

Sistemi Informativi Territoriali. Map Algebra

Sistemi Informativi Territoriali. Map Algebra Paolo Mogorovich Sistemi Informativi Territoriali Appunti dalle lezioni Map Algebra Cod.735 - Vers.E57 1 Definizione di Map Algebra 2 Operatori locali 3 Operatori zonali 4 Operatori focali 5 Operatori

Dettagli

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni Linguaggi per COMUNICARE Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni Sintassi e semantica dei linguaggi Un informazione può : Essere

Dettagli

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro, EXCEL PER WINDOWS95 1.Introduzione ai fogli elettronici I fogli elettronici sono delle applicazioni che permettono di sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

Alcune regole di base per scrivere un programma in linguaggio C

Alcune regole di base per scrivere un programma in linguaggio C Alcune regole di base per scrivere un programma in linguaggio C Un programma il linguaggio C (listato) viene scritto in formato testo ed archiviato in un file: *.c Per scrivere un listato C si utilizza

Dettagli

Gli algoritmi: definizioni e proprietà

Gli algoritmi: definizioni e proprietà Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

ISTITUTO COMPRENSIVO MONTEGROTTO TERME SCUOLA PRIMARIA DISCIPLINA: MATEMATICA - CLASSE PRIMA OBIETTIVI DI APPRENDIMENTO

ISTITUTO COMPRENSIVO MONTEGROTTO TERME SCUOLA PRIMARIA DISCIPLINA: MATEMATICA - CLASSE PRIMA OBIETTIVI DI APPRENDIMENTO PRIMA DELLA DISCIPLINA: MATEMATICA - CLASSE PRIMA L alunno si muove con sicurezza nel calcolo scritto e mentale con i numeri naturali. Legge e comprende testi che coinvolgono aspetti logici e matematici.

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Come masterizzare dischi con Nero 11

Come masterizzare dischi con Nero 11 Come masterizzare dischi con Nero 11 Non c è dubbio che Nero è diventato un sinonimo di masterizzatore di dischi, data la lunga esperienza sul mercato. Molte persone pensano in questo programma nel momento

Dettagli

OCCUPATI SETTORE DI ATTIVITA' ECONOMICA

OCCUPATI SETTORE DI ATTIVITA' ECONOMICA ESERCIZIO 1 La tabella seguente contiene i dati relativi alla composizione degli occupati in Italia relativamente ai tre macrosettori di attività (agricoltura, industria e altre attività) negli anni 1971

Dettagli

Sistemi Operativi. 5 Gestione della memoria

Sistemi Operativi. 5 Gestione della memoria Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria

Dettagli

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software: 1 SOFTWARE È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software: SOFTWARE DI SISTEMA (o di base), che deve gestire le funzioni

Dettagli

( x) ( x) 0. Equazioni irrazionali

( x) ( x) 0. Equazioni irrazionali Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza

Dettagli

Tipi di dato-prima parte

Tipi di dato-prima parte Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) Tipi di dato-prima parte Ing. Agnese Pinto 1 di 15 Tipi di dato Sommario Tipi di dato Classificazione dei tipi di dato Tipi

Dettagli

Introduzione al Foglio Elettronico

Introduzione al Foglio Elettronico Microsoft Excel Introduzione al Foglio Elettronico Il Foglio Elettronico Si presenta come una grande tabella su un foglio di carta Le celle contengono differenti dati Numeri Testo Date Ecc I dati possono

Dettagli

Cap. 3. APERTURA NUOVO PROGETTO

Cap. 3. APERTURA NUOVO PROGETTO GUIDA ALL USO DI CSM.1 Cap. 3. APERTURA NUOVO PROGETTO 1 3.1 Inizio della procedura 3. PERCORSO: APERTURA NUOVO PROGETTO/CORSI Dopo essersi iscritti ed avere inserito i dati inerenti l Agenzia / Ente di

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri.

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. A partire da questa lezione, ci occuperemo di come si riescono a codificare con sequenze binarie, quindi con sequenze di 0 e 1,

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

Problemi, Algoritmi e Programmi

Problemi, Algoritmi e Programmi MASTER Information Technology Excellence Road (I.T.E.R.) Problemi, Algoritmi e Programmi Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Introduzione

Dettagli

Plate Locator Riconoscimento Automatico di Targhe

Plate Locator Riconoscimento Automatico di Targhe Progetto per Laboratorio di Informatica 3 - Rimotti Daniele, Santinelli Gabriele Plate Locator Riconoscimento Automatico di Targhe Il programma plate_locator.m prende come input: l immagine della targa

Dettagli

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi. E. Calabrese: Fondamenti di Informatica Problemi-1 Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi. L'informatica

Dettagli

Nozione di algoritmo. Gabriella Trucco

Nozione di algoritmo. Gabriella Trucco Nozione di algoritmo Gabriella Trucco Programmazione Attività con cui si predispone l'elaboratore ad eseguire un particolare insieme di azioni su particolari informazioni (dati), allo scopo di risolvere

Dettagli