Universita' degli Studi di Roma - La Sapienza

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Universita' degli Studi di Roma - La Sapienza"

Transcript

1 Universita' degli Studi di Roma - La Sapienza Corso di laurea in Fisica DISPENSE DEL CORSO DI CALCOLATORI ELETTRONICI (Modulo A) ======================================================== Tenuto dal Prof. Roberto Biancastelli N.B. Per ridurre le dimensioni del file tutta la grafica e' stata realizzata in modalita? testo, usando i caratteri grafici che devono essere disponibili nel programma di visualizzazione. Si puo' usare il programma NotePad, con caratteri Terminal. Anno Accademico Copyright ! PREFAZIONE Il corso e quindi anche le dispense sono suddivisi in tre 'moduli' A, B e C, organizzati come indicato nel programma. I primi due sono per la laurea quadriennale, mentre il modulo C (capitoli 6-14) e' per la laurea triennale (richiede la propedeuticita' dei corsi di Laboratorio di Calcolo e di Comunicazione Scientifica e Tecnologica). La relativa didattica e' stata organizzata in una serie di dispense in vista di un'informatizzazione completa del corso, con tecnologie multimediali e telematiche. Queste dispense, con tutti i programmi delle esercitazioni pratiche, sono distribuite gratuitamente su floppy disk in copia unica e per uso personale esclusivo, ai soli studenti regolarmente iscritti al corso del prof.roberto Biancastelli. Contenendo dei caratteri grafici, le dispense sono visualizzabili e stampabili con i programmi editor standard (in MS-DOS con EDIT o in Windows con NotePad, caratteri 'Terminal' e Formato senza "A capo automatico"). Se la dimensione di un file risultasse 'troppo estesa', occorre modificare le impostazioni di memoria della finestra DOS, cliccando prima con il pul-

2 sante destro sull'icona DOS o sulla barra del titolo della finestra DOS e poi con il pulsante sinistro su Proprieta' ed impostando quindi tutte le opzioni in 'Automatico'). I files scritti in formato Word invece possono essere letti dagli studenti, che non possiedono il programma MS-Word, scaricando gratuitamente dal sito della Microsoft ( --> Office --> Word Downloads ) il programma WordViewer97/2000 (wd97vwr32.exe). E' opportuno precisare che, essendo il resto del corso di laurea in fisica piuttosto povero di insegnamenti informatici, il compito che attende lo studente del corso di Calcolatori Elettronici e' piuttosto impegnativo. Cio' perche' questa materia, a differenza di altre, e' soggetta ad un continuo e rapido progresso tecnologico, che ha ampliato sempre di piu' negli ultimi anni il campo di insegnamento. Poiche' molti studenti arrivano a questo corso con una conoscenza iniziale della materia praticamente nulla, il docente deve risolvere due problemi di non poco conto: insegnare sempre di piu' nello stesso numero di lezioni e gestire didatticamente la crescente complessita' delle nuove tecnologie informatiche. La soluzione finora adottata e' stata quella di inserire gradualmente nel programma una parte su tecnologie avanzate e programmazione ad oggetti ed in rete. Gli studenti che, non avendo avuto una conoscenza iniziale della materia, si trovassero in difficolta' nella preparazione all'esame su quest'ultima parte non dovranno preoccuparsi, perche' nell'esame finale non verra' loro richiesta in modo fiscale una conoscenza approfondita di questi argomenti. Si tenga inoltre presente che in questo corso l'apprendimento non deve essere finalizzato al voto, ma all'acquisizione di una professionalita'in questa materia, che sia spendibile poi nel mondo del lavoro e della ricerca). Tuttavia gli studenti arrivati a questo corso senza precedenti conoscenze propedeutiche all'informatica di base (algebra di Boole, elettronica digitale, ecc.) sono invitati a studiare dall'inizio tutti gli argomenti esposti nel programma e spiegati nelle lezioni, tralasciando eventualmente gli ultimi argomenti riguardanti la programmazione in rete, applet java, ecc. Invece gli studenti arrivati a questo corso, con le conoscenze di base ed una certa esperienza di programmazione in un qualche linguaggio di alto livello precedentemente acquisita, potranno rinfrescare velocemente le loro conoscenze di base, esposte nella prima parte del programma e nelle lezioni, dedicando poi un tempo maggiore sulle ultime parti del programma riguardanti la programmazione ad oggetti, in rete, Internet, ecc. La modalita' di svolgimento delle esercitazioni e' stata organizzata in modo da permettere anche il lavoro parallelo di gruppi di studenti, che trattano argomenti diversificati in funzione della loro preparazione e degli obiettivi proposti (nell'ambito degli argomenti trattati nel corso). Ove possibile, con le cautele sotto indicate per impedire la diffusione di virus informatici, la prosecuzione del lavoro pratico sul computer di casa e' vivamente incoraggiata.! INDICE INDICE GENERALE PROGRAMMA DEL CORSO DI CALCOLATORI ELETTRONICI PROGRAMMA LOGICO DEL CORSO

3 INTRODUZIONE Capitolo 1 - Elementi del linguaggio Pascal Capitolo 2 - Sistemi di numerazione e rappresentazione delle informazioni Capitolo 3 - Strutture di dati Capitolo 4 - Introduzione all'algebre di Boole Capitolo 5 - Circuiti logici digitali Modulo C Capitolo 6 - Architettura di un calcolatore elettronico < Capitolo 7 - Sottoprogrammi e passaggio dei parametri Capitolo 8 - Programmazione Assembly Fine Modulo A Capitolo 9 - Sistema di Input/Output < > Inizio Modulo B Capitolo 10 - Programmazione concorrente Capitolo 11 - Sistema di memoria Capitolo 12 - Sistemi operativi Capitolo 13 - Sistemi in rete Capitolo 14 - Programmazione ad oggetti e linguaggio Java < Capitolo 15 - Programmazione sul Web: Apache, HTML, CGI, Java apple Capitolo 16 - Architetture avanzate Capitolo 17 - Acquisizione di dati sperimentali APPENDICE A - Sigle e definizioni utili APPENDICE B - Il simulatore H6809 APPENDICE C - Programma delle esercitazioni! Programma del Corso di CALCOLATORI ELETTRONICI Prof.R.Biancastelli - Dipartimento di Fisica Universita' di Roma - La Sapienza MODULO A RAPPRESENTAZIONE DELLE INFORMAZIONI (D,W): Sistemi numerici - Rappresentazioni posizionali - Conversioni di base - Rappresentazioni dei negativi Aritmetica binaria in complemento a due -Carry e Overflow - Rappresentazione dei numeri frazionari - Conversioni in virgola fissa e virgola mobile - Rappresentazione BCD - Codici binari. ELEMENTI DI PASCAL (W,D,G): Intestazioni, tipi e dichiarazioni di variabili, istruzioni semplici e composte, diagrammi sintattici - Procedure

4 e funzioni - Parametri formali e passaggio dei parametri. STRUTTURE DI DATI (D,W): Vettori e matrici - Pile (Stack) - Code - Liste (a singolo e doppio 'link') - Gestione delle liste: free list e garbage collection. INTRODUZIONE ALL'ALGEBRA DI BOOLE (C,D): Operazioni e loro proprieta' - Teorema di De Morgan e legge di dualita' - Teorema di sviluppo: Mintermini, Maxtermini e forma canonica - Minimizzazione: il metodo delle mappe di Karnaugh - Operatori universali - Operatore OR-esclusivo (coincidenza e anticoincidenza). CIRCUITI LOGICI DIGITALI (C,D): Circuiti combinatori SSI: Analisi e sintesi - Circuiti combinatori MSI, LSI - Sintesi a ROM e PLA - Circuiti sequenziali - Memorie ROM, RAM statiche, dinamiche e associative. Modulo C < ARCHITETTURA DI UN ELABORATORE (D,W): Organizzazione interna - Bus di memoria - Registri - Contatori di programma e unita' di controllo Unita' aritmetica - I/O bus - Istruzioni - Modi di indirizzamento: a registro, a registro indiretto, assoluto, assoluto indiretto, imme- diato, autoincremento, relativo, a registro base e indexato - Sistema di I/O: sistemi a bus dedicato e memory mapped - Porte di I/O - Proto- colli Handshake - Interruzioni - Microcomputer H6809 e sua simulazione in Pascal. PROGRAMMAZIONE ASSEMBLY (D,W) - Pseudo-istruzioni - Compilazione: PLC, tabella dei simboli e modulo oggetto - Correlatore (Link Editor) - Caricatore (Loader) - Rilocazione - Macro-istruzioni. MODULO B ELABORATORI NUMERICI (D,W): Organizzazione interna dell'unita' centrale - Microcomputer H6809 e sua simulazione in Pascal - Unita' di controllo canalizzate - Gestione della memoria - Memory Management Unit - Paginazione (memory mapping): mappa di traduzione degli indirizzi - Classificazione delle macchine: ad accumulatori (H6809), a registri generali (H8000) ed a stack (H11) - Processori RISC. SISTEMA DI INPUT/OUTPUT (W,D): Sistemi a bus dedicato e memory mapped - Porte di I/O - Protocolli Handshake - Interfacciamenti: Paralleli (Centronix, IEEE 488) e seriali (asincrono RS232C e sincroni BSC) - Programmazione I/O e sovrapposizione - I/O drivers - Sistema di inter- ruzione - Gestione delle priorita': geografica, daisy chain, mask bits, round-robin, polling e interruzioni vettorizzate - Interruzioni interne (traps) e software (system calls) - Programmazione delle interruzioni - Accesso diretto alla memoria (DMA) - Sottosistemi a dischi - Canali di I/O controllati da processori. PROGRAMMAZIONE CONCORRENTE (D,W): Processi e loro stati - Concorrenza con I/O in sovrapposizione - Variabili condivise e sezioni critiche - Errori timing-dependent e stallo (dead-lock) - Protezione delle sezioni critiche - Semafori - Bloccaggio di strutture di dati - Condivisione di struzioni. SISTEMA DI MEMORIA (D,P): Organizzazione gerarchica - Memoria a banchi, interleaved, multiport - Fetch multiplo - Registro di istruzioni a buffer - Memoria cache - Memoria virtuale - Gestione della memoria: partizioni fisse e variabili, paginazione, memoria virtuale.

5 SISTEMI OPERATIVI E RETI (C,D,I): Dedicati, a lotti (batch) e interattivi (time-sharing) - Multitasking e multiprogrammazione - Reti locali - Software di rete ELEMENTI DEL LINGUAGGIO JAVA (D,J): Programmazione ad oggetti - Fondamenti del linguaggio Java: classi, oggetti, variabili e metodi - I/O in Java - Interfaccia grafica Swing (GUI) - Gestione degli eventi e delle eccezioni - Applicazioni e applet - Connessioni in rete e programmazione client-server. < INTERCONNESSIONE DI RETI E INTERNET (D,I,H) - Indirizzamento IP - Protocolli TCP - Inter-reti - Internet - Browser e linguaggio HTML - Web server - Script CGI e Javascript ARCHITETTURE AVANZATE (C,D): Classificazione dei sistemi di elaborazione parallela: MISD, SIMD,MIMD - Tipi di accoppiamento: Multiprocessor, multicomputer e reti locali - Esempi ACQUISIZIONE DI DATI SPERIMENTALI (D): Sistemi standard di acquisizione di dati (NIM, CAMAC, VME e FASTBUS) - Organizzazione di un sistema multitask in tempo reale - Supervisione dell'elaborazione parallela (centralizzata e distribuita) - Multiprocessing (esempi su VME e FASTBUS). ESERCITAZIONI Modulo A: Programmazione in Pascal - Simulatore del computer H Uso pratico del linguaggio binario e mnemonico Assembly del computer H6809 con simulatore e debugger. Modulo B: Programmazione concorrente su rete locale di PC (farm per la simulazione Montecarlo dello scattering coulombiano) - Uso pratico del linguaggio Java - Istallazione ed uso di Web server con uso di applet Java, Javascript e script CGI - Programmazione concorrente (client-server) su rete Intranet. Modulo C: Uso pratico del linguaggio binario e mnemonico Assembly del computer H6809 con simulatore e debugger - Programmazione concorrente su rete locale di PC (farm per la simulazione Montecarlo dello scattering coulombiano) - Uso pratico del linguaggio Java - Programmazione concorrente (client-server) su rete Intranet. PRINCIPALI RIFERIMENTI BIBLIOGRAFICI: Testo base: D: Dispense, esercizi e fotocopie di appunti/trasparenze distribuite gratuitamente dal docente su floppy disk. Testi per consultazione: W: J.Wakerly - Microcomputer Architecture and Programming - Ed. Wiley G: M.Gori et al. - Pascal e C - Ed. Mc Graw Hill C: G.Cioffi,V.Falzone - Manuale di Informatica - Ed. Calderini P: D.A.Patterson et al.- Struttura e progetto...- I/F Hard/Softw. J: Cay Horstmann - JAVA 2, i fondamenti - Ed. Mc Graw Hill I: D.Comer - Internet e reti di calcolatori - Ed. Addison-Wesley H: G.B.Shelly et al. - HTML imparare per progetti Per informazioni, spiegazioni e chiarimenti e' possibile concordare durante tutto l'anno accademico incontri con il professore al

6 anche al di fuori degli orari di ricevimento (studenti lavoratori). Si puo' comunicare con il professore anche all'indirizzo di posta elettronica PROGRAMMA LOGICO DEL CORSO ========================== (Grafo che evidenzia le connessioni logiche tra i vari argomenti) RAPPRESENTAZIONE INFORMAZIONI STRUTTURE DATI ALGEBRA DI BOOLE ELETTRONICA DIGITALE ARCHITETTURA ELABORATORE ^ UNITA' CENTRALE < SISTEMA SISTEMA > Modulo A I/O MEMORIA... PROGRAMMAZIONE Modulo B (ASSEMBLY,PASCAL,JAVA...) SISTEMA > PROGRAMMAZIONE MEMORY D'INTERRUZIONE CONCORRENTE MANAGEMENT v > SISTEMI OPERATIVI< MONOUTENTE SPECIALI ACCORGIMENTI HARDWARE SISTEMI OPERATIVI

7 MULTIUTENTE,MULTITASK SOFTWARE DI RETE MULTIPROGRAMMAZIONE < > MULTIPROCESSING ARCHITETTURE AVANZATE RETI LOCALI/INTERNET/INTRANET > CAMAC ACQUISIZIONE DI DATI SPERIMENTALI > VME ( ed altre applicazioni ) > FASTBUS. > ECC...! INTRODUZIONE Il campo dei calcolatori elettronici e' forse quello che piu' di tutti negli ultimi decenni ha mostrato un progresso sfrenato. Infatti non solo ha raccolto i frutti del rapidissimo progresso della microelettronica, ma ha anche contribuito al progresso della nostra societa' con le grandi innovazioni nel campo del software e della telematica. Questo enorme progresso, unito alla grande rapidita' di evoluzione di idee e sistemi, condiziona a nostro parere le modalita' di una didattica istituzionale in questa materia. Infatti, mentre da un lato gli studenti sono desiderosi di arrivare rapidamente all'apprendimento delle macchine e sistemi piu' moderni, dall'altro questi non risultano adatti ad un efficiente apprendimento di base della materia, poiche' mentre sono destinati ad una rapida obsolescenza, inevitabilmente la loro complessita' pone degli ostacoli, complicando e rallentando inutilmente la comprensione dei concetti di base, la cui acquisizione, anche se fatta in maniera piu' semplice, permette poi di capire meglio e piu' rapidamente il funzionamento non solo dei sistemi attuali (che hanno una VITA LIMITATA) ma anche e soprattutto di quelli futuri. Per questi motivi nel nostro corso adotteremo come macchina di riferimento il miglior processore tra quelli piu' semplici ad 8 bit prodotto alla fine degli anni settanta e addirittura lo semplificheremo ulteriormente riducendone il numero dei registri allo stretto indispensabile. In questo modo, per il nostro corso, il processore ideale H6809 che ne deriva assume lo stesso ruolo che il punto materiale svolge in Meccanica o che il gas perfetto svolge in Termodinamica: un'idealizzazione che non ha riscontro nella realta' ma che ci aiuta a comprendere i meccanismi che stanno alla base della materia. Per meglio comprendere i meccanismi di funzionamento impiegati nei moderni calcolatori elettronici, pur nella loro complessita', seguiremo nella nostra trattazione un criterio di evoluzione 'storica', con cui progrediremo con gradualita', dai sistemi uniprocessor con

8 sistema d'interruzione alla programmazione concorrente ed alla multiprogrammazione per arrivare infine alle architetture avanzate di elaborazione parallela multiprocessore. Essendo nostra convinzione che un apprendimento di questa materia non puo' essere disgiunto dall'acquisizione di capacita' operative sull'uso dei computers, abbiamo associato alle lezioni teoriche delle esercitazioni pratiche svolte su personal computer dotati di un programma simulatore che fa funzionare il PC come se dentro ci fosse un processore H6809. In questo modo lo studente puo' meglio comprendere i principi della programmazione dei calcolatori elettronici che studia a lezione. Un'ultima osservazione riguarda gli studenti del corso di laurea in fisica, ai quali questo corso e' particolarmente diretto: come deve essere gia' loro noto, la fisica si occupa di scoprire e stu- diare le leggi fisiche della Natura ovvero i rapporti quantitativi che intercorrono tra le grandezze osservabili, cioe' suscettibili di misurazione e quindi quantificabili con numeri: per questo, come la matematica ed i calcoli numerici hanno un ruolo fondamentale in fisica, cosi' anche i calcolatori elettronici sono fondamentali per i fisici, come strumenti di calcolo (OFF-LINE). Inoltre i calcolatori elettronici sono anche l'elemento centrale di analisi e controllo in linea (ON-LINE) di tutti i moderni apparati sperimentali e vanno quindi visti come parte essenziale dello stru- mento con cui il fisico misura le grandezze fisiche osservabili, che sono oggetto della fisica sperimentale. Cosi' lo studio dei calcolatori elettronici e dei loro campi e modalita' di impiego va associato allo studio dei trasduttori della informazione fisica (per esempio i rivelatori di particelle), ed alle metodologie di acquisizione ed analisi dei dati sperimentali, che concorrono a formare lo strumento con cui indaghiamo il mondo fisico.! AVVERTENZE IMPORTANTI PER LE ESERCITAZIONI ========================================== Licenza d'uso: Le dispense per loro natura devono fare riferimento ai libri di testo consigliati, sui quali lo studente puo' cosi' trovare, in modo omogeneo, le informazioni per gli ulteriori approfondimenti. Cio' e' stato fatto dal docente con la massima attenzione al rispetto delle disposizioni di legge sul diritto di autore e pertanto il materiale didattico consegnato allo studente non deve essere in nessun caso alterato ne' duplicato o diffuso senza specifica autorizzazione scritta dell'autore. Il software contenuto nei dischetti consegnati dal docente e' di proprieta' dei rispettivi fornitori e concesso in licenza all'universita' di Roma-La Sapienza. Puo' essere usato solo presso questa Universita' nel rispetto delle relative licenze, sui computer assegnati per le esercitazioni, per fini didattici e non puo' essere ne' asportato ne' copiato con qualsiasi mezzo. Lo stesso vale per il testo delle dispense, la cui circolazione deve essere limitata agli studenti iscritti al corso del prof.r.biancastelli. Eventuali responsabilita' civili e penali previste dalle leggi vigenti, conseguenti al mancato rispetto

9 delle disposizioni impartite al riguardo dal docente e dagli organi universitari, sono solo dei trasgressori. Per il materiale scaricato dalla rete devono essere sempre rispettate le restrizioni di copyright indicate dai relativi fornitori. Poiche' spesso tra gli studenti si subiscono questi doveri come ingiuste vessazioni, il docente ritiene utile esprimere la propria opinione al riguardo: nei Paesi in cui e' consentito a liberi imprenditori di investire nella ricerca sul software, ripagandosi poi degli investimenti fatti con i GIUSTI proventi della vendita, una efficace tutela giuridica del software e dei diritti di autore permette, al Paese che la pratica, di sviluppare l'industria del software e di creare con essa numerosi posti di lavoro, che in prospettiva valgono molto di piu' del software trafugato (purche' le Autorita' sappiano contrastare le tendenze ai monopoli nel software per salvaguardare, con la concorrenza, il livello e la giustezza dei prezzi). Virus: Le esercitazioni si svolgeranno usando un dischetto personale per ogni studente: su questo dischetto vi saranno sia il file contenente le dispense del corso, che appunti (LEZ??.PAS) e programmi per le esercitazioni. Lo studente dovra' riconsegnare questo dischetto al docente al termine delle esercitazioni e non usare dischetti propri per ragioni di sicurezza e protezione dai 'virus'. Un virus e' un programma nascosto all'interno di un altro programma usato dell'utente. Quando viene lanciato in esecuzione esso modifica gli altri programmi eseguibili presenti sul dischetto e nel computer installandosi in maniera invisibile nella memoria e nel sistema operativo, in modo da rimanere stabilmente installato nella macchina, che risulta cosi' 'infettata' ed in grado di infettare tutti i programmi eseguibili presenti sui dischetti di utenti ignari. Questo processo di contagio dei dischetti del nostro corso e' possibile anche nei vari computers dei nostri laboratori, poiche' sono aperti a tutti e qualcuno puo' portare dischetti infetti dall'esterno. I vostri dischetti, una volta infettati, se portati fuori del laboratorio possono infettare il vostro computer dell'ufficio, di casa, ecc. Per questi motivi lo studente deve riconsegnare il suo dischetto al docente al termine delle esercitazioni e non portare mai dischetti propri in laboratorio. I tecnici di laboratorio sono i custodi responsabili del funzionamento e del coordinamento nell'uso dei computer. Gli studenti devono pertanto attenersi alle disposizioni da essi impartite e segnalare loro eventuali anomalie riscontrate. PROGRAMMA DI LAVORO DURANTE LE ESERCITAZIONI PRATICHE: Lo svolgimento delle esercitazioni e' basato sul materiale didattico contenuto nel dischetto consegnato dal professore e su software scaricabile gratuitamente da Internet (dopo essersi registrati indicando il proprio indirizzo di E.mail: se non lo avete potete richiederlo ad un fornitore di servizio gratuito di posta elettronica, per esempio Netscape). Bisognera' quindi, al momento stabilito dal professore, eseguire il download dei programmi seguenti, dai siti indicati:

10 Delphi (eserc. Pascal) Java Development Kit (eserc. Java) Apache Web-Server (eserc. Web) Perl (eserc. CGI) Il programma di lavoro, configurato in base alla preparazione dello studente, dovra' contenere, nell'ordine, i seguenti argomenti: 1) Uso dei comandi elementari del Sistema Operativo MS-DOS 2) Uso dell'editor del TURBOPASCAL 3) Prove di uso delle istruzioni Pascal in semplici programmi (xxxdemo.pas) 4) Comprensione ed ampliamento del programma ADDING.PAS 5) Studio del programma Monitor 6) Studio del programma di simulazione H6809BUG.PAS (con BINPROG.PAS); ricerca ed eliminazione degli errori ivi contenuti 7) Studio del microcomputer H6809 simulato su IBM-PC, scrivendo ed eseguendo un semplice programma in linguaggio macchina 8) Ampliamento del simulatore H6809 introducendovi altre istruzioni come quelle di branch condizionato o di I/O o il sistema d'interruzione 9) Uso dell'editor dell'ambiente JDK1.3 (Java Developmenti Kit) 10) Prove di uso delle istruzioni Java in semplici programmi (xxxdemo.java): FirstSample, Welcome, BigDebt, Test0, Root, NewRoot, SwapTest, SwapTest2, ShellSort, VirusLook, LotteryOdds: esempio con input da tastiera e chiamata a metodo EmployeeTest, H6809g: Monitor H6809 scritto in java Root, RootApplet: esempio di applet Prova: programma contenente un errore da trovare 11) Studio del programma Monitor H6809g.java, con particolare attenzione all'uso dell' oggetto Byte (esempio di programmazione ad oggetti) 12) Realizzazione in Basic di un simulatore dello scattering coulombiano con il metodo di Montecarlo 13) Programmazione concorrente del Montecarlo su una LAN in elaborazione parallela ('farm' di computer). 14) Istallazione ed uso del Web server Apache con uso di applet Java e script CGI. 15) Programmazione concorrente su rete Intranet (facoltativo). AVVERTENZA IMPORTANTE ===================== Le esercitazioni si svolgeranno usando un dischetto personale per ogni studente: su questo dischetto vi saranno sia il file contenente le dispense del corso, che appunti (LEZ??.PAS) e programmi per le esercitazioni. Gli esercizi e le dispense su Internet, sulla programmazione ad

11 oggetti e sul linguaggio Java saranno consegnati agli studenti all'inizio del modulo B (subito dopo Pasqua). Lo studente dovr? riconsegnare questo dischetto al docente al termine delle esercitazioni e non portare dischetti propri per ragioni di sicurezza e protezione dai 'virus'. Un virus e' un programma nascosto all'interno di un altro programma usato dell'utente. Quando viene lanciato in esecuzione esso modifica gli altri programmi eseguibili presenti sul dischetto e nel computer, installandosi in maniera invisibile nella memoria e nel sistema operativo in modo da rimanere stabilmente installato nella macchina. Questa risulta così 'infettata' ed in grado di infettare tutti i programmi eseguibili, presenti sui dischetti in essa inseriti da utenti ignari. Questo potenziale processo di contagio dei dischetti del nostro corso e' possibile sia nei computers del nostro laboratorio che in quelli del CATTID, poiche' sono centri aperti a tutti e qualcuno puo' portare dischetti infetti dall'esterno. I vostri dischetti, una volta infettati, se portati fuori dall'universita' possono infettare il vostro computer di casa, dell'ufficio, ecc. Per questi motivi lo studente deve riconsegnare il suo dischetto al docente al termine delle esercitazioni e non portare mai dischetti propri al laboratorio o al CATTID.! Per le esercitazioni si puo' utilizzare anche la sala computers del CATTID, dotata di 20 PC-IBM, ubicata come indicato nella piantina seguente: VIALE DEL POLICLINICO... EDIFICIO CATTID <--- ingresso MINERALOGIA GEOLOGIA SCIENZE POLITICHE F I GIURISPRUDENZA S I C Piazza A della RETTORATO Minerva! CAPITOLO 1 - Elementi del linguaggio PASCAL

12 Riassunto: Scopo essenziale di questo capitolo e' quello di fornire gli elementi minimi necessari per l'uso del linguaggio Pascal nelle esercitazioni di laboratorio di questo corso. Il linguaggio Pascal viene usato per una prima presa di contatto con la programmazione procedurale di alto livello. Nella seconda parte del corso (modulo B) useremo invece il linguaggio Java per comprendere la programmazione ad oggetti (in ambiente multitask ed in rete). Un calcolatore elettronico e' una macchina che si guida con dei comandi che sono le istruzioni. Il loro uso per la soluzione dei vari problemi pratici che si incontrano richiede pero' l'apprendimento di una tecnica particolare, basata sull'uso SEQUENZIALE delle istruzioni, che non essendo intuitiva, si deve acquisire soprattutto con l'esperienza pratica. Per questo motivo costituiscono parte essenziale di questo corso le esercitazioni pratiche di laboratorio, organizzate anche con l'impiego di un programma simulatore di un processore Motorola, scritto in linguaggio Pascal, su PC IBM, per lo studio del linguaggio Assembly. Questo corso, pur non includendo la trattazione dei vari linguaggi di programmazione, che possono essere studiati a parte, comprende tuttavia questo capitolo, che intende fornire gli elementi di base per la comprensione e l'uso dei programmi scritti in Pascal, usati nelle esercitazioni, il cui scopo e' l'apprendimento dell'uso delle istruzioni dei computer per la soluzione dei vari problemi pratici. Il linguaggio Pascal, usato in moderni sistemi di sviluppo quale Delphi della Borland, e' stato preferito ad altri in questo corso, perche' meglio si adatta all'insegnamento della materia: infatti mentre da un lato abitua lo studente ad una disciplina nella programmazione, dall'altro ci e' anche comodo come linguaggio rigoroso e sintetico per esprimere alcuni concetti dell'informatica, meglio dell'italiano o dell'inglese. Inoltre l'assembly ed il Pascal insegnati in questo corso vanno ad aggiungersi al Fortran ed al C insegnati in altri corsi Descrizione della sintassi del linguaggio Pascal: i diagrammi sintattici La sintassi del linguaggio Pascal e' ben descritta da una serie di diagrammi, che per questo vengono chiamati diagrammi sintattici. In essi con una cornice a doppio tratto indichiamo i caratteri o le parole chiave (in maiuscolo) del linguaggio, che devono comparire come sono scritte. In cornice a singolo tratto sono gli elementi definiti dall'utente (per esempio i nomi delle variabili) nel rispetto della sintassi descritta dal relativo diagramma. Un programma risulta descritto dal diagramma seguente: Program heading > Block >. Fig.1 - Programma Pascal Esempio di programma Pascal: Intestazione ---> PROGRAM Example (input,output); (=heading) VAR x,square: real; <--- Variable declaration BEGIN

13 read (x); Block ----> square := x*x; Statements write ('square of',x,'is',square) END. Le parole-chiave BEGIN...END svolgono il ruolo di parentesi aperta e chiusa e racchiudono un insieme di istruzioni (che abbiamo 'indentato', cioe' scritto un po' piu' a destra, per evidenziare visivamente l'insieme delle istruzioni che compongono il blocco tra BEGIN ed END). Sia il 'Program heading' che il 'Block' devono essere scritti rispettando delle regole sintattiche definite dai due diagrammi seguenti: Program heading > PROGRAM > Identifier ( > Identifier > ) ; >, < L'Identifier e' un simbolo introdotto dal programmatore a suo piacere (generalmente e' un nome mnemonico che aiuta a ricordare il significato della costante o variabile) ma nel rispetto della sintassi definita dal diagramma seguente (impone che inizi con una lettera, senza distinzione tra maiuscole e minuscole): < Lettera < Identifier > > Lettera > < Cifra < Il 'Block' costituisce il corpo del programma e puo' contenere gli elementi indicati nel diagramma sintattico seguente: Block > Label declaration > < > Constant definition > < > Type definition > < > Variable declaration > < Procedure/Function

14 > declaration > < > Statements > A loro volta definizioni, dichiarazioni ed istruzioni vanno scritte tutte nel rispetto delle regole sintattiche definite dai rispettivi diagrammi sintattici che seguiranno. Esempio di programma Pascal: PROGRAM Example (input,output); <--- Intestazione VAR x,square: real; <--- Dichiaraz. delle variabili BEGIN read (x); Block ---> square := x*x; Statements write ('square of',x,'is',square) (=istruzioni) END. < > <--> Testo Testo N.B. read,write sono procedure standard (parole riservate) x,square sono le variabili del programma Pascal semplificato: istruzioni Ai fini di questo corso e delle relative esercitazioni, elenchiamo le istruzioni che e' sufficiente imparare per iniziare a programmare in Pascal (i nomi usati come identificatori sono esempi): PROGRAM Adding (input,output); Intestazioni PROCEDURE PrintNums (x,y: real); FUNCTION DigitVal (c:char): integer; LABEL 10,6850,355; Dichiarazioni CONST PI= ; TYPE direction=(nord,sud,est,ovest); VAR i,j:integer; x:real; road:direction; B L Tutte le variabili usate vanno dichiarate. O I tipi standard (predefiniti) che useremo sono: boolean, C integer,real,char,text. K BEGIN statements; Istruzioni... END; ISTRUZIONI (Statements): Si dividono in semplici e strutturate (quelle che contengono uno o piu' statements componenti): := <--- Assegnazione

15 GOTO label <--- Salto (da evitare) SEMPLICI procedure (a,b,c); read (var1,var2...); o readln (var1,var2...); write (var1,var2..); o writeln (var1,var2..); I/O IF condizione THEN stat1 ELSE stat2; FOR n:=n1 TO n2 DO statement; STRUTTURATE WHILE condizione DO statement; Loop REPEAT statement UNTIL condizione; CASE selector OF val1:stat1; val2,val3:stat2; END; composte: BEGIN...(statements)...END La sintassi delle istruzioni strutturate e' bene descritta dai relativi diagrammi sintattici: Istruzione IF > IF > condizione > > THEN > istruzione > > ELSE > istruzione > Istruzione FOR > FOR >variabile > := >espressione > > TO > espressione > DO istruzione > > DOWNTO > Istruzione WHILE > WHILE >condizione > DO >istruzione > Istruzione REPEAT > REPEAT >istruzione > ; <

16 > UNTIL >condizione > (N.B. REPEAT, a differenza di WHILE, esegue sempre l'istruzione almeno una volta) Istruzione CASE > CASE >selector > OF > lista casi > END > dove la 'lista casi' ha la sintassi seguente: > Lista casi >costante > : >istruzione > >, < ; < Tipi di variabili Ogni variabile usata va dichiarata. I tipi usabili nella dichiarazione delle variabili sono i seguenti: ESEMPI integer,real, boolean,char, >Tipo 'standard' > > string(=array of char) Tipi text(=file of char) scalari >Tipo enumerated > TYPE vocale=(a,e,i,o,u); Sottoinsieme di un tipo ---> >Tipo 'subrange' > TYPE indice=1..100; scalare (sottoins.di integer) (non real) > PACKED > < Tipo matrice---> > Tipo 'array' > TYPE vet=array[1..8] OF real > Tipo 'file' > Tipi >Tipo 'record' > strutturati

17 (non trattati) > Tipo 'set' > >Tipo 'pointer' > Esempio di dichiarazioni (vedi programma Arraydem.pas delle esercitazioni): TYPE bit = 0..1; byte=array[0..7] OF bit; word=array[0..15] OF bit; VAR mem : ARRAY[ ] OF byte; PC : word; IR,A: byte; Z : bit; himem: integer; ecc Procedure e funzioni Anche in Pascal, come negli altri linguaggi di alto livello, esistono due tipi di sottoprogrammi, cioe' di insiemi di istruzioni che possono essere richiamati con una solo simbolo. La Function differisce dalla Procedura in quanto calcola un determinato valore e quindi puo' anche essere usato all'interno di formule. Per esempio: y:=2*fact(i)+1 dove Fact(i) e' il valore di uscita della Function Fact corrispondente al valore del parametro di ingresso i. Una Procedura invece e' un blocco di istruzioni che si richiama con una sola istruzione costituita dal nome della Procedura, seguito dalla lista dei parametri passati tra la Procedura ed il programma che la richiama (alcuni parametri costituiscono le variabili di ingresso del sottoprogramma, altre i risultati in uscita del calcolo). La sintassi e' definita dai seguenti diagrammi: > PROCEDURE >intestazione procedura block > > FUNCTION >intestazione function ; < Intestazione procedura >nome >lista parametri > ; > Intestazione >nome >lista parametri > : >tipo > ; > function > > Lista parametri > ( > FUNCTION >nome > )

18 > VAR, < > > : > tipo > > PROCEDURE nome >, < ; < Passaggio di parametri in Pascal Esistono due modalita' di passaggio dei parametri in Pascal. Corrispondentemente parleremo di due tipi di parametri: tipo 'valore' e tipo 'variabile'. Nel primo caso il parametro e' passato al sottoprogramma copiandone il valore in una distinta locazione di memoria in cui lavora il sottoprogramma (Procedura o Function che sia). Quindi le eventuali alterazioni che questo parametro subisce all'interno del sottoprogramma non risultano nel programma chiamante. Invece il passaggio dei parametri di tipo 'variabile' avviene passando al sottoprogramma anziche' il valore l'indirizzo della memoria in cui si trova la variabile passata. In questo modo il sottoprogramma lavora direttamente sulla stessa variabile usata dal programma chiamante e conseguentemente, a differenza dal caso precedente, ogni variazione apportata dal sottoprogramma risultera' anche nel programma chiamante. Esempio di una Procedura che usa parametri di tipo 'variabile': PROGRAM Swapping (input,output); VAR a,b: integer; <---- a,b=variabili globali PROCEDURE Swap (VAR x,y: integer); <-- x,y=param.tipo variabile VAR t:integer; <---- t=variabile locale BEGIN t := x; x := y; y := t; END; BEGIN a := 1; b := 2; Swap (a,b); write (a,b); <----- a,b risultano variati da Swap END. perche' passati di tipo variabile Esempio di una Function che usa parametri di tipo 'valore': PROGRAM Esempio (input,output); VAR n: integer; <---- n=variabile globale FUNCTION Fact (i: integer): real; <---- i=parametro di tipo valore VAR prod: real; <---- prod=variabile locale BEGIN prod := 1;

19 WHILE i>1 DO BEGIN prod:=prod*i; i:=i-1 END; Fact := prod; END; BEGIN read (n); WHILE n>0 DO BEGIN writeln(n,fact(n),n*n); read(n) END; END. < > n non risulta alterato perche' passato tipo valore Esempi di semplici programmi Pascal I seguenti programmi, usati nelle esercitazioni, sono dimostrativi dell'uso delle istruzioni usabili per eseguire dei 'loop'. PROGRAM Forloop (input,output); Output prodotto: VAR i := integer; n := real; n= 1.0 BEGIN n= 2.0 n := 0;... FOR i := 0 TO 10 DO n=11.0 BEGIN fine lavoro n := n+1; > writeln ('n=',n:4:1); <-- Formato=4 car., 1 decimale END; writeln; writeln ('fine lavoro'); END. PROGRAM Whildemo (input,output); Output prodotto: VAR i,n := integer; BEGIN i=1024 (=2 alla 10) i := 1024; n := 10; i=512 (=2 alla 9) WHILE i >= 1 DO... BEGIN i=1 (=2 alla 0) writeln ('i=',i,' (=2 alla ',n,')'); > i := trunc (i/2); n := n - 1; END; END. PROGRAM RepetDemo (output); Output prodotto: VAR n := integer; BEGIN A ASC=65 n := 64; B ASC=66 REPEAT... n := n + 1; K ASC=75 writeln (chr(n),' ASC=',n) > UNTIL n = 75; END Differenze tra i linguaggi Pascal e C Le differenze a livello sintattico tra i due linguaggi sono poche e sono

20 ben evidenziate nel testo "Pascal e C" (Ed. McGraw-Hill). Per averne un'idea ne elenchiamo alcune: 1) Il C (come il Java) distingue tra lettere minuscole e maiuscole nei nomi delle variabili, a differenza del Pascal. 2) Le differenze tra i tipi predefiniti di variabili sono: TIPO C Pascal semplif Intero con segno int integer Intero senza segno unsigned int non esiste Virgola mobile (singola precis.) float real Virgola mobile (doppia precis.) double non esiste 3) L'assegnazione e' fatta: in C con = (esempio a=b[i]+c;) in Pascal con := (esempio a:=b[i]+c;) 4) Operatori logici in aggiunta a quelli aritmetici (+-*/) che esistono in C e ma non in Pascal, dove sono fatti con apposite procedure: OPERATORE C Pascal AND & non esiste OR non esiste NOT ~ non esiste XOR ^ non esiste Shift Left << non esiste Shift Right >> non esiste Siccome in C il simbolo = e' usato per l'assegnazione, per l'uguaglianza nelle espressioni si usa ==, come mostra la tabella seguente: CONFRONTO C Pascal Uguale == = Diverso!= <> Minore < < Minore o uguale <= <= Maggiore > > Maggiore o uguale >= >= Esempio: C Pascal if (i==j) f=g+h; else f=g-h; if i=j then f:=g+h else f:=g-h; 5) Gli operatori tra condizioni logiche sono: OPERATORE C Pascal Prodotto logico && and Somma logica or Negazione! not 6) In C si usano le parentesi graffe al posto di BEGIN...END: C Pascal switch (k) { case k of case 0: f=i+j; break; 0: f:=i+j; case 1: f=i+g; break; 1: f:=i+g;

21 case 2: f=i-h; break; 2: f:=i-h; }; end; 7) Esempi di istruzioni di loop: C Pascal while (i==j) i=i+1; while i=j do i:=i+1; for (i=0, i<n; i=i+1) {...}; for i:=0 to n-1 do begin...end; if (i!=j) goto Loop; if i<>j then goto 10; 8) Anche le procedure sono molto simili: C Pascal swap(int i) procedure swap (i:integer); { var temp:real; float temp; begin }; end; L'evoluzione C++ del linguaggio C (++ e' il simbolo dell'incremento) e' invece molto simile al Java, che spiegheremo piu' avanti, perche' trattandosi di programmazione ad oggetti, costituisce un livello di apprendimento successivo, che risulta un poco piu' complesso per l'introduzione di tre nuovi concetti: incapsulamento (ottenuto con le classi), ereditarieta' e polimorfismo (late binding) CENNI ALLA PROGRAMMAZIONE IN AMBIENTE GRAFICO Nella programmazione di un computer vi sono due approcci, secondo che si usi o no l'interfaccia grafica (mouse, ecc.): 1) La programmazione cosiddetta procedurale, in cui si sviluppa il codice dell'applicazione assemblando le istruzioni che saranno eseguite dalla CPU in maniera sequenziale. Per esempio si scrive su video un menu' di comandi dell'applicazione ed in base all'input ricevuto da tastiera si esegue un salto alla procedura prescelta (ogni programmatore professionale ha dei suoi moduli predisposti per questa, come per altre funzionalita' di uso frequente). 2) La programmazione grafica, in cui il menu' viene sostituito da una serie di pulsanti o da un menu' a tendina in una finestra grafica. In tal caso l'input da tastiera e' sostituito dai pulsanti del mouse. L'interfaccia con l'operatore e' in genere piu' gradevole, ma nell'esempio descritto poco cambia dal punto di vista funzionale. La maggiore complessita' della programmazione grafica impone pero' l'utilizzo di un sistema di sviluppo che sgravi il programmatore dall'onere di gestire i componenti grafici. Nelle esercitazioni intendiamo apprendere l'uso delle istruzioni Pascal e quindi lavoreremo in programmazione procedurale la piu' semplice possibile. Per questo viene proposto come ambiente di sviluppo una delle prime e piu' semplici versioni di TurboPascal degli anni '80 (TURBO.COM ha solo 36Kbytes di codice a 16 bit!) che ha realizzato per primo un editor di pagina con compilatore e parte run-time in linea (tecnica ancora oggi largamente usata). Per chi volesse lavorare con l'ambiente grafico diamo comunque un

22 minimo di informazioni su uno dei moderni sistemi in uso (Delphi), che puo' essere scaricato gratuitamente dal sito della Borland (www.borland.com) in versione dimostrativa. Dall'help on-line si possono ottenere poi tutte le altre informazioni necessarie. Raccomandiamo comunque allo studente di addentrarsi in questo tipo di programmazione, piu' complessa, solo dopo aver completato il programma di esercitazioni pratiche in TurboPascal UN ESEMPIO: L'AMBIENTE DI SVILUPPO DELPHI Programmare applicazioni che usino l'interfaccia grafica (mouse, finestre, pulsanti, ecc.) risulta molto agevolato usando uno degli ambienti di sviluppo (spesso indicati con la sigla IDE=Integrated Development Environment) con interfaccia grafica integrata (dove cioe' con semplici movimenti di mouse il programmatore puo' creare e posizionare finestre e pulsanti sapendo che le relative istruzioni ed i parametri grafici necessari viene generato automaticamente dall'ide). Al programmatore resta il compito di programmare le azioni da intraprendere in risposta agli eventi di I/O (per esempio pressione di un pulsante). Delphi e' uno di questi ambienti di sviluppo, talora indicati anche con la sigla RAD (Rapid Application Developer). Iniziamo con la definizione di alcuni termini usati: APPLICAZIONE e' l'insieme dei programmi e dei dati di istallazione predisposti dal programmatore per eseguire i compiti prestabiliti, elaborando i dati inseriti dall'utente secondo le regole prestabilite. Un'applicazione e' composta da numerosi 'oggetti' (form, menu', controlli, ecc.) e dai moduli di programma che controllano tali oggetti). E' desiderabile quindi una organizzazione razionale di tutti questi componenti. PROGETTO e' l'organizzazione razionale di tutti i files dell'applicazione: ad esso corrisponde un file (diverso in ogni sistema di sviluppo: per esempio.dpr=delphi PRoject in Delphi oppure.vbp=visual Basic Project in Visual Basic) che e' una 'scatola' organizzativa usata per contenere tutte le componenti dell'applicazione (form, files di codice, sorgenti, documentazione, ecc.) UNIT sono i files dei moduli di programmazione (.PAS in Delphi) usati nel programma di controllo (.DPR). Quando si crea un New Project Delphi genera un nuovo programma.dpr ed una Unit che definisce il form iniziale. Ad ogni nuovo form aggiunto al programma viene aggiunta una nuovo modulo di programmaziione Pascal (Unit.PAS). Le units vengono compilate separatamente e 'linked' ai files del programma principale.dpr FORM e' la finestra grafica, contenitore dei componenti di I/O, che possono attivare le varie procedure in risposta alle azioni che avvengono. Un'applicazione e' composta da vari Form a cui corrispondono le Unit di programmazione. Una versione dimostrativa di Delphi puo' essere scaricata dal sito della Borland (www.borland.com) gratuitamente. Altri link dove scaricare materiale didattico di Pascal e Delphi si raggiungono dal sito Borland, tra cui:

23 Delphi produce 3 tipi di file per ogni applicazione sviluppata: 1) Il file Main del progetto: Deplhi PRoject (.DPR) 2) I files dei moduli di programmazione 'unit' (.PAS) (definiscono l'effetto delle azioni sul sistema) 3) I files descrittori dei 'form', in binario (.DFM) (contengono i valori delle proprieta' del form e delle sue componenti, cioe' lo stato iniziale) Essi sono costruiti automaticamente durante il lavoro del programmatore (i files binari.dfm sono visibili in chiaro con appositi comandi in Delphi). Per esempio, quando si aggiunge un pulsante nel Form, Delphi inserisce la definizione del relativo tipo: type TForm1 = class (TForm) Button1: TButton;... Se poi nella finestra Object Inspector cambio il nome del pulsante (da Button1 a BtnHello), Delphi aggiusta automaticamente il codice: type TForm1 = class (TForm) BtnHello: TButton;... (le altre proprieta' vengono invece riportate nel file descrittore del form.dfm). Se poi nella finestra 'Object Inspector' aggiungo un'azione di risposta ad un evento, Delphi aggiunge nella 'unit' di definizione del Form una riga di definizione della procedura nella dichiarazione di 'type' e un metodo vuoto viene aggiunto nella parte 'implementation' (anche il form description file.dfm viene modificato). Una unit inizia con la dichiarazione delle altre units usate ('uses'), dei nuovi tipi di dati (classi) ed una nuova variabile (oggetto della classe) per ogni nuova classe. Per esempio il tipo TForm1, derivato dalla classe TForm, e la variabile Form1 del tipo TForm1: unit Hello; interface uses SysUtils, WinTypes, WinProcs, Messages,Classes, Graphics, Controls,Forms, Dialogs, StdCtrls; type TForm1 = class(tform); var Form1: TForm1; Per capire meglio il metodo di lavoro, una volta istallato Delphi, si puo' scrivere il piu' semplice programma, che scrive un messaggio in risposta al click su un pulsante. Per fare questo bisogna aprire un nuovo progetto: File New Project A questo punto Delphi predispone una finestra vuota (form) in cui possiamo inserire i componenti disponibili nella programmazione grafica (box, pulsanti, menu',ecc.). Inseriamo nel form un pulsante con un doppio click sul pulsante 'Button' nella barra dei comandi standard (la posizione nel form puo' essere variata nel modo usuale drag&drop di Windows). Nella pagina Properties della finestra Object Inspector di Delphi si puo' inserire il testo nel pulsante: Property = Caption ---> inserire 'Hello'

24 Nella pagina Events della finestra Object Inspector di Delphi si puo' inserire l'evento che deve attivare l'azione voluta. Con un doppio click sul pulsante nel form possiamo inserire la 'Unit' di programmazione con il codice che stabilisce le azioni di risposta all'evento (per esempio la pressione del pulsante da parte dell'utente). Nel nostro semplice esempio sara' sufficiente inserire la sola riga seguente: MessageDlg ('Hello world', mtinformation, [mbok], 0); Questa procedura standard apre un box con il messaggio 'Hello world', ed equivale ai writeln(...), che abbiamo usato nei test di programmazione procedurale in Pascal. Come secondo parametro, dopo il testo del messaggio, troviamo le opzioni possibili per il tipo di message box: mtinformation, mtwarning, mterror, mtconfirmation. Il terzo parametro determina il pulsante/i che si vuole usare: mbyes, mbno, mbok, mbcancel, mbhelp. Il quarto parametro indica la pagina dell'helponline richiamata se l'utente batte il tasto F1 (0=no help). L'istruzione BtnHello.Caption := 'Ripete Hello'; e' stata aggiunta nel codice della "unit Hello" per mostrare come una proprieta', in questo caso la Caption, puo' essere variata durante l'elaborazione. Per comprendere il modo di lavorare dell'ambiente di sviluppo Delphi, elenchiamo i corrispondenti listati da esso prodotti in questo semplice esempio Esempio di programma: Form con Button A) Listato del file di progetto HELLOBTN.DPR: program Hellobtn; uses Forms, Hello in 'HELLO.PAS' {Form1}; {$R *.RES} begin Application.CreateForm(TForm1, Form1); Application.Run; end. B) Listato dell'unit file HELLO.PAS: unit Hello; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) BtnHello: TButton; procedure BtnHelloClick(Sender: TObject); private { Private declarations } public { Public declarations }

25 end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.BtnHelloClick(Sender: TObject); begin MessageDlg ('Hello world', mtinformation, [mbok], 0); BtnHello.Caption := 'Ripete Hello'; end; end. Come abbiamo inserito un pulsante, si puo' provare ad inserire nel form anche gli altri componenti (cliccando due volte sul pulsante corrispondente nella barra di controllo standard di Delphi). Dovremo poi attribuire le proprieta' volute (per esempio il nome 'Caption'), l'evento a cui dovra' corrispondere un'azione (per esempio un click del mouse) ed il codice del programma che esegue questa azione (cliccando due volte sul componente nel form). Per esercitarsi con la programmazione (procedurale) Pascal nell'ambiente di sviluppo Delphi si suggerisce di attivare un pulsante sullo standard 'form1' che appare quando si apre un nuovo progetto e di inserire il programma che si vuole scrivere e collaudare come 'evento' dell'azione 'OnClick' su Object Inspector (oppure di 'OnActivate' per lanciarlo all'avvio). Per lavorare in modalita' Console (cioe' per scrivere con write,writeln e leggere con read e readln, come in TurboPascal) occorre usare le 'Console routines' contenute nella unit WinCrt, che Delphi include sempre nella dichiarazione delle units usate (statement 'uses'). Le procedure disponibili sono indicate nell'help di Delphi (le stringhe I/O vanno dichiarate come type TextFile). Tra queste la procedura AssignCrt () associa un TextFile alla finestra CRT sul video, funzionante in modalita' testo (permette una maggiore velocita' di I/O su video).! CAPITOLO 2 - Sistemi di numerazione e rappresentazione delle informazioni Riassunto: Scopo essenziale di questo capitolo e' quello di spiegare come si possano rappresentare tutte le varie informazioni (numeri, istruzioni, testi, ecc.) all'interno di un computer, che per ragioni costruttive puo' essere necessariamente dotato solo di un numero limitato di cifre (bit) e come, malgrado questa limitazione (anche i numeri interi richiederebbero da soli un numero illimitato di bit per poter essere rappresentati tutti) si possano eseguire calcoli di precisione elevata quanto si vuole Sistemi di numerazione Cosi' come un corso di analisi matematica inizia con un capitolo 'noioso' sui numeri reali, perche' tutta la materia tratta poi con i numeri reali, cosi' noi dobbiamo iniziare il nostro corso con un capitolo altrettanto noioso poiche' e' indispensabile capire come numeri e informazioni possano essere rappresentati all'interno di una macchina elettronica dotata, per ragioni costruttive, solo di un numero finito di bit. La risposta risiede nel modo in cui rappresenteremo i numeri e le altre informazioni, utilizzando solo il numero limitato di bit, di cui dispone

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

Il software e la programmazione

Il software e la programmazione Il software e la programmazione Concetti base sul software Elementi di programmazione Cenni sul linguaggio Pascal Che cosa è il software Determina ciò che un computer può fare Include istruzioni memorizzate

Dettagli

Struttura logica di un programma

Struttura logica di un programma Struttura logica di un programma Tutti i programmi per computer prevedono tre operazioni principali: l input di dati (cioè l inserimento delle informazioni da elaborare) il calcolo dei risultati cercati

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Indice degli argomenti del s.o. Software. Software. Buona lezione a tutti!! SISTEMI OPERATIVI

Indice degli argomenti del s.o. Software. Software. Buona lezione a tutti!! SISTEMI OPERATIVI Buona lezione a tutti!! SISTEMI OPERATIVI Gli appunti sono disponibili per tutti gratis sul sito personale del Prof M. Simone al link: www.ascuoladi.135.it nella pagina web programmazione, sezione classi

Dettagli

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni Fondamenti di Informatica Modulo 1 Programma dell'a.a. 2003/2004 Luigi Romano Dipartimento di Informatica

Dettagli

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI Informatica con esercitazioni Prof. Onofrio Greco Modulo 1 Concetti di base dell ICT Modulo 2 Uso del Computer e Gestione dei File Modulo

Dettagli

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it Programmazione II Lezione 4 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 30/09/2011 1/46 Programmazione II Lezione 4 30/09/2011 Sommario 1 Esercitazione 2 Panoramica della Programmazione Ad Oggetti 3

Dettagli

OBIETTIVI SPECIFICI DI APPRENDIMENTO

OBIETTIVI SPECIFICI DI APPRENDIMENTO Disciplina:... Anno scolastico: 20.../20... Classe/i :... Docente:... DI APPRENDIMENTO SEZIONE 1 Premesse matematiche Nozioni fondamentali sui sistemi di numerazione Sistemi di numerazione in base diversa

Dettagli

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi : di base e applicativo L HardWare (monitor, tastiera, circuiti, stampante, ) è il nucleo fondamentale del calcolatore ma da solo non serve a nulla. Bisogna utilizzare il software per poterlo fare funzionare.

Dettagli

PIANO DI LAVORO DEI DOCENTI

PIANO DI LAVORO DEI DOCENTI Pag. 1 di 6 Docente: Materia insegnamento: SISTEMI ELETTRONICI AUTOMATICI Dipartimento: ELETTRONICA Classe Anno scolastico: 1 Livello di partenza (test di ingresso, livelli rilevati) Sono richieste conoscenze

Dettagli

Componenti di una applicazione. Un programma applicativo è strutturato come un insieme organizzato di tre componenti funzionali:

Componenti di una applicazione. Un programma applicativo è strutturato come un insieme organizzato di tre componenti funzionali: Componenti di una applicazione Un programma applicativo è strutturato come un insieme organizzato di tre componenti funzionali: Un sottosistema di interfaccia con l utente (IU, user interface o anche presentation

Dettagli

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50 Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra

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

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma La Sapienza WARNING Questo canale è solo per studenti di Fisica il cui cognome inizia con le lettere A-D Laboratorio

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 Visual Basic Visual Basic Linguaggio di programmazione

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita

LICEO SCIENTIFICO LEONARDO DA VINCI - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Modulo 1: Introduzione all informatica Fondamenti di teoria della elaborazione

Dettagli

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini Introduzione all utilizzo di Visual Basic for Application Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini PROGRAMMAZIONE Insieme delle attività da svolgersi per creare

Dettagli

Connessione ad internet

Connessione ad internet Introduzione al C++ Connessione ad internet Istruzioni per la connessione internet: - una volta connessi, aprire un browser (firefox) - in Modifica/preferenze/avanzate/rete/impostazioni - attivare la modalità

Dettagli

2 - Introduzione al linguaggio Java

2 - Introduzione al linguaggio Java 2 - Introduzione al linguaggio Java 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

Dettagli

Il sistema operativo

Il sistema operativo Il sistema operativo Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Cos è un Sistema Operativo? Per capirlo, immaginiamo inizialmente

Dettagli

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi Evoluzione dei sistemi operativi (4) Sistemi multiprogrammati! più programmi sono caricati in contemporaneamente, e l elaborazione passa periodicamente dall uno all altro Evoluzione dei sistemi operativi

Dettagli

Questa scelta è stata suggerita dal fatto che la stragrande maggioranza dei navigatori usa effettivamente IE come browser predefinito.

Questa scelta è stata suggerita dal fatto che la stragrande maggioranza dei navigatori usa effettivamente IE come browser predefinito. Pagina 1 di 17 Installazione e configurazione di applicazioni Installare e configurare un browser Come già spiegato nelle precedenti parti introduttive di questo modulo un browser è una applicazione (lato

Dettagli

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.

Dettagli

Richiami di informatica e programmazione

Richiami di informatica e programmazione Richiami di informatica e programmazione Il calcolatore E una macchina usata per Analizzare Elaborare Collezionare precisamente e velocemente una grande quantità di informazioni. Non è creativo Occorre

Dettagli

CAPITOLO 1 I SISTEMI OPERATIVI

CAPITOLO 1 I SISTEMI OPERATIVI CAPITOLO 1 I SISTEMI OPERATIVI Introduzione ai sistemi operativi pag. 3 La shell pag. 3 Tipi di sistemi operativi pag. 4 I servizi del sistema operativo pag. 4 La gestione dei file e il file system Il

Dettagli

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Corso di INFORMATICA 2 (Matematica e Applicazioni) Università di Camerino Scuola di Scienze e Tecnologie Sezione di Matematica Corso di INFORMATICA 2 (Matematica e Applicazioni) Anno Accademico 2014/15 3 Anno Primo Semestre Docenti: Paolo Gaspari Roberto

Dettagli

Corso di Laurea in INFORMATICA

Corso di Laurea in INFORMATICA Corso di Laurea in INFORMATICA Algoritmi e Strutture Dati MODULO 2. Algebre di dati Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti. Astrazioni di dati e dati primitivi. Specifica

Dettagli

Proff. Fabio Ciao e Raffaele Bortone

Proff. Fabio Ciao e Raffaele Bortone ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMAZIONE ANNUALE A.S. 2014/2015 Classe IV C Informatica Proff. Fabio Ciao e Raffaele Bortone Libro di testo: Cloud

Dettagli

Registro unico Antiriciclaggio

Registro unico Antiriciclaggio Registro unico Antiriciclaggio VERSIONE PROFESSIONISTI E CED VERSIONE 4.0.0 Sommario Introduzione... 4 Requisiti di sistema... 5 Installazione del software... 6 Verifica automatica dei requisiti di installazione...

Dettagli

4. Un ambiente di sviluppo per Java

4. Un ambiente di sviluppo per Java pag.15 4. Un ambiente di sviluppo per Java Esistono in commercio molti ambienti di sviluppo utilizzati dai programmatori Java, in particolare si tratta di editor complessi che mettono a disposizione tools

Dettagli

FileMaker Server 14. Guida alla configurazione dell installazione in rete

FileMaker Server 14. Guida alla configurazione dell installazione in rete FileMaker Server 14 Guida alla configurazione dell installazione in rete 2007 2015 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati

Dettagli

Universita' degli Studi di Roma - La Sapienza. Corso di laurea in Fisica

Universita' degli Studi di Roma - La Sapienza. Corso di laurea in Fisica Universita' degli Studi di Roma - La Sapienza Corso di laurea in Fisica DISPENSE DEL CORSO DI CALCOLATORI ELETTRONICI (Modulo B) ======================================================== Tenuto dal Prof.

Dettagli

LA RAPPRESENTAZIONE DELLE INFORMAZIONI

LA RAPPRESENTAZIONE DELLE INFORMAZIONI ISTITUTO TECNICO E LICEO SCIENTIFICO TECNOLOGICO ANGIOY LA RAPPRESENTAZIONE DELLE INFORMAZIONI Prof. G. Ciaschetti DATI E INFORMAZIONI Sappiamo che il computer è una macchina stupida, capace di eseguire

Dettagli

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag