Tullio Nicolussi. Il COBOL. J u r a s s i c B o o k s

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Tullio Nicolussi. Il COBOL. J u r a s s i c B o o k s"

Transcript

1 Tullio Nicolussi Il COBOL J u r a s s i c B o o k s

2 Title: Il COBOL Author: Tullio Nicolussi Acquisitions Editor: Bes Delsec Technical Editor: Tullio Nicolussi Production Editor:Bes Delsec Production Manager: Tullio Nicolussi Book Designer: Anna Cover Designer: Anna Copyright 2008 by Jurassic News Published in Italy First edition 2009 ISBN: na This publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, only in integral form. Distribution on-line from Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifically disclaim all warranties, including without limitation warranties of fitness for a particular purpose. For general information on our other products and services or to obtain technical support, please contact our Customer Care Department at Library of Congress Cataloging-in-Publication Data Nicolussi, Tullio. Il COBOL / Tullio Nicolussi. - 1st ed. ISBN na 1. Computer programming 2. Computer language 3. Computer manual. TRADEMARKS: Jurassic News, is not associated with any product or vendor mentioned in this book

3 Sommario Introduzione...4 Overview...6 Il primo programma...10 Il Bubble Sort in COBOL...12 Le Variabili Strutturate...19 La Gestione dei File...26 La Gestione del Video...32 Conclusione

4 COBOL Introduzione Rileggendo la prima stesura di questo articolo ho visto (con orrore) che avevo scritto le solite cose che si dicono quando si spolvera un vecchio software e in particolare un linguaggio di programmazione che non gode più dei favori degli sviluppatori, cioè qualcosa come: - che questo è un peccato, che in realtà il linguaggio non ha nulla da invidiare ai più moderni idiomi, che ancora viene usato con profitto,... e via di questo passo fra un rammarico e un sospiro. Il bello è che per il COBOL tutto questo corrisponde alla verità! Ma perché allora quando se ne sussurra il nome gli studenti sghignazzano, i guro della programmazione si fanno due volte il segno della croce (che vuol dire che invocano il dio C++) e i colleghi più giovani scuotono il capo e mentre si allontanano si coglie chiara la frase...pronto per la pensione...? Ehi, un po di rispetto, che diamine! Per essere onesti non si deve negare che qualche acciacco ahinoi il linguaggio per eccellenza della programmazione gestionale non riesce a nasconderlo. Qualche iniezione di Gerovital in forma di query SQL è valsa a migliorarne taluni aspetti nascondendo le artriti reumatoidi dei file indexed. Parimenti le stampelle della programmazione per eventi sono valse a traghettare l idioma nelle acque assai agitate della programmazione Windows. Per finire la clonazione sotto forma di linguaggi embedded nei sistemi ERP (vedi ad esempio SAP), hanno arginato il fuggi fuggi generale dei cervelli programmatoidi che rischiava di lasciare milioni di righe di codice prive di qualsiasi possibilità di manutenzione. Eppure ancora oggi dove l idea di classe regna indiscussa, il COBOL rimane una buona scelta in molte circostanze. Questa considerazione è valida per la quasi totalità dei linguaggi di programmazione che sono stati inventati nella storia dell informatica (parecchie centinaia se contiamo anche i dialetti). Dipende tutto dalle circostanze in cui si opera, dai sistemi di cui si dispone e dalle prestazioni dei tool di sviluppo dei quali possiamo avvalerci. La fortuna di un linguaggio è determinata da una serie di circostanze contingenti che dipendono molto anche dalle mode, oltre che naturalmente dallo scopo con il quale esso viene progettato. L Assembly ad esempio nasce con i microprocessori e rimane l indiscusso re della programmazione a basso livello. Non è stato inventato niente di meglio perché è perfetto 4

5 così com è. I problemi di concorrenza si pongono quando più linguaggi si sovrappongono per funzionalità specifiche dell ambiente in cui operano. Ad esempio VBSCRIPT piuttosto che PHP, Python piuttosto che Ruby, etc, nella programmazione Web. Il COBOL ha rappresentato per un paio di decenni la soluzione indiscussa nell ambito della programmazione gestionale e rimane tutt ora uno strumento molto usato in questo ambito. Fino a pochi anni fa si calcolava esistessero molte più righe di COBOL al mondo di quante ne potesse vantare il C. Non sono a conoscenza del rapporto esistente in questo momento ma credo che sebbene il C possa vantare la palma del vincitore in questa gara, il COBOL non sia molto distante dal podio. 5

6 COBOL - Overview L insegnamento del linguaggio COBOL è stato per anni appannaggio della scuola secondaria a indirizzo tecnico. Qualunque istituto pretendesse di sfornare programmatori doveva tenerne conto ed approntare per esso specifici corsi. Le banche e la finanza in genere hanno assorbito moltissima forza lavoro dedicata al settore dell elaborazione dei dati e se andavi a lavorare lì non avevi speranza: era COBOL a pranzo e cena! Appena possibile le scuole si sono liberare da questo fardello, perché? A mio giudizio le cause sono diverse ma fra le principali non mancano le seguenti: - una pretesa di modernità, visto che ad un certo punto, come detto prima, se parlavi di COBOL venivi deriso; - la mancanza di insegnanti preparati unita ad una certa difficoltà, peraltro obiettiva, di insegnare la programmazione usando questo linguaggio; - la diffusione del Personal Computer e la conseguente diffusione di linguaggi più semplici, anche e meno potenti, come ad esempio il Basic. Delle tre a mio giudizio l ultima è quella chiave: se trovi il Basic nella macchina finirai per usare solo quello! Che dire della difficoltà di apprendimento della quale il linguaggio è stato accusato? Il problema nasce tutto dalla sua prolissità. Infatti il COBOL nasce con intenti molto ambiziosi come la cross-compilation ad esempio; è possibile sviluppare su un sistema e trasferire su un altra macchina, purché supportata. Il contesto dove viene messo a punto è quello dei sistemi mainframe e mini dipartimentali e soprattutto per i primi la cross-compilation è essenziale. La pesantezza della sintassi viene, diciamo così, aggravata dalla ricchezza delle estensioni. Una istruzione può essere usata in forma semplice ma può essere estremamente strutturata per svolgere molteplici compiti, essenzialmente di tipo ripetitivo. Facciamo un esempio per capire meglio questo punto. Prendiamo l istruzione di addizione che si può scrivere con l seguente sintassi: ADD A TO B. che tradotto sarebbe somma il contenuto della variabile A con il contenuto della variabile B e metti il risultato in B. Qualcosa come: B = B + A Per incrementare un contatore di una unità si userebbe: ADD 1 TO INDICE Fino a qui nulla di particolarmente sconvolgente, la sintassi è leggermente diversa rispetto ai linguaggi correnti che per la maggior parte 6

7 utilizzano una notazione tipo formula, che fra l altro è possibile utilizzare anche in COBOL scrivendo l istruzione precedente come: COMPUTE IND = IND + 1. E se dobbiamo sommare una serie di numeri? ADD N1 N2 N3 TO RIS. ADD 123,67 TO R1 ROUNDED R2 R3. Ancora, è anche possibile che non si voglia sporcare il valore dell operando ottenendo un comportamento più classico che prevede lo store del risultato in una variabile a parte. Per fare ciò si usa una variante dell istruzione ADD: Che, come avrete certo capito significa: ADD IMPORTO IVA GIVING IMPORTO-IVATO. RIS = RIS + N1 + N2 + N3 Ma le possibilità non si esauriscono qui. Consideriamo lo statement seguente: ADD A1 A2 A3 TO B1 B2 B3 B4. Questa sintassi è meno intuibile e significa: somma i valori A1, A2 e A3 poi aggiungi questo risultato alle variabile B1, B2, B3 e B4. Ovviamente è sempre possibile espandere l istruzione in più statement ottendeno ad esempio: ADD A1 A2 A3 TO R. ADD R TO B1. ADD R TO B2. ADD R TO B3. ADD R TO B4. Qualcuno degli operandi che accoglieranno il risultato possono essere arrotondati aggiungendo la specifica opzione ROUNDED dopo i nome, come in: Si capisce che la sintassi del linguaggio è molto articolata e questo mette sicuramente in difficoltà chi cerchi di utilizzarlo leggendo un manuale. L istruzione MOVE è l esempio più eclatante, se vogliamo, ad onta della sua semplicità (serve per caricare i valori nelle variabili), infatti essa è ricchissima di varianti, al punto che le pagine dei manuali ad essa dedicata scoraggiano il malcapitato che volesse imparare il linguaggio da autodidatta basandosi solo sulla documentazione tecnica. L istruzione MOVE carica i valori nelle variabili, come in: MOVE 1 TO INDICE. MOVE N1 TO R2. Niente di più semplice, apparentemente. Però qualsiasi manuale COBOL che ne riporta la descrizione e sintassi completa occuperà pagine e pagine! Un altro aspetto del linguaggio può essere chiamato in causa per 7

8 giustificarne la difficoltà di apprendimento, ed è la sintassi rigida detta in gergo informatico a campi. Significa che ogni elemento del linguaggio deve stare in certe zone definite della riga. Retaggio derivato dall uso delle schede perforate come la lunghezza di 72 caratteri massima e la necessità di distinguere fisicamente gli elementi di un programma. Per creare un programmatore COBOL professionista una azienda deve essere disposta ad investire almeno tre anni di formazione/ affiancamento e questo oggigiorno viene considerato un costo, piuttosto che un investimento. C è da dire un ultima cosa sull uso del linguaggio, che è la seguente: pochi, se non addirittura pochissimi, programmatori utilizzano la ricchezza sintattica del linguaggio. Nel tempo si è creato in tutte le aziende una sorta di lessico famigliare, per dirla alla Gizburg, che prevede l utilizzo di costrutti il più elementare possibile, anche per una ragione di manutenzione del software stesso. Le nuove generazioni di programmatori e i tempi di consegna sempre più stringenti non lasciano speranze di procedere altrimenti. Forse esiste un assioma che implica la longevità di un linguaggio di programmazione direttamente correlata con la ricchezza sintattica. Succede che all inizio esce una versione spartana e minimale, poi a furia di aggiungere features si finisce per snatuare l idea originale e si rende la curva di apprendimento sempre più ripida e lunga. Autorevoli esempi li troviamo nel Perl, nel PHP e nel Basic. Dovuta alla ricchezza della sintassi deriva la difficoltà nel costruire un compilatore, aumentata dal fatto che il linguaggio possiede obbligatoriamente embedded capacità di gestione per i file indicizzati (che come vedremo nel prosieguo di questa serie è la vera forza del COBOL). I compilatori professionali sono costosi e inizialmente indisponibili sulle piattaforme micro, con la lodevole eccezione dei sistemi che supportano il CP/M. La diffusione del personal computer in ambito professionistico ha cambiato molto le cose. In fondo una rete di PC vale quanto un mainframe (non sempre, ma è un discorso che ci porterebbe lontano). Per quanto accennato sopra il COBOL si è fatta una cattiva fama e gli ambienti, diciamo così, progressisti non hanno esitato a vituperarne l utilizzo. Se questo è stato un bene o il contrario non sta a me decidere. Da un lato si è persa una professionalitè elevata, dall altro i nuovi idiomi, più facili all approccio, hanno permesso a molte persone l avvicinarsi alla programmazione. Ci sono dei pro e dei contro, come in tutte le cose. Dopo questa lunga ma doverosa panoramica sulla filosofia del linguaggio COBOL veniamo a parlare di cose pratiche. Prima di tutto 8

9 bisogna procurarsi un compilatore se si vuole seguire con profitto il corso che proponiamo. - Bravo! E dove ne trovo uno?. Tranquilli, è più semplice di quanto si creda. Rivolgendosi all Open Source è possibile recuperare un buon compilatore che gira con GCC (che erroneamente viene considerato un compilatore di codice C, in realtà è uno dei cross compiler più flessibili che ci sono in giro). Se decidete di seguire questa strada il prodotto si chiama OpenCobol e si possono scaricare i sorgenti da questo link: Scelte alternative possono essere le versioni datate che qualche utente a volte svende (anche se teoricamente non sarebbe legalmente ineccepibile) su ebay. La Microsoft ha commercializzato per un certo tempo un compilatore per Windows chiamato Microsoft COBOL. Altra ditta specializzata è la MicroFocus che costruisce compilatori per tutte le piattaforme ed ha anche una versione educational molto bella chiamata Personal COBOL che viene venduta in libreria (non in Italia). Si veda la prova software in questo fascicolo. Un compilatore molto diffuso all epoca delle reti Novell era un certo MBP COBOL, prodotto da una ditta tedesca (la MBP, appunto), il cui acronimo non chiedetemi per cosa sta :-). Una fonte alternativa ma molto valida è fornita dal retro computing (se no che ci staremmo a fare?). E possibile che se il vostro retro computer preferito supporta il CP/M, troviate in giro le immagini di un compilatore. magari non sarà una scheggia, ma che importa? Ad esempio per Apple IIe sotto CP/M la Microsoft (sì, sempre lei) ha commercializzato un compilatore chiamato COBOL-80, elemento di una serie di prodotti il cui esponente più famoso è il BASIC-80. Su SurgeForce.org si possono reperire vari progetti che hanno a che fare con l argomento. Uno di questi propone un compilatore minimale per Windows, chiamato Tiny Cobol. Lo abbiamo scaricato e provato trovandolo per la verità non troppo esaltante... Ancora, all indirizzo: si trova un prodotto commerciale chiamato NETCobol, adatto all ambiente.net che sfrutta la IDE di Visual Studio. Ne esiste anche una versione Student, se volete provarci... Insomma non ci sono scuse del tipo non trovo un compilatore in giro :-) 9

10 10 Il primo programma A seconda dell ambiente operativo che avete scelto dovete cominciare a scrivere il sorgente dei programmi. Alcuni tools prevedono un input guidato, ad esempio con i tab impostati per muoversi fra le varie zone nelle quali è divisa la riga. Vi ricordo che i primi sei catarreri della riga sono riservati alle label. Il settimo carattere contiene un eventuale controllo di riga: il simbolo - per la continuazione dalla riga precedente, * per una riga di commento (da qui il verbo asteriscare che usano i veri programmatori), / per ordinare il salto pagina alla stampante sulla quale andiamo a ottenere il listing del sorgente. Dall ottavo carattere inizia la ZONA A e al 12 carattere la ZONA B. Il primo programma è visibile nel riquadro Listato 1 che ora andiamo ad eseminare in dettaglio AAAABBBBBBBBBBBBBBBBBBBB... IDENTIFICATION DIVISION. PROGRAM-ID HELLOWORLD. ENVIRONMENTAL DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. DECIMAL POINT IS COMMA. DATA DIVISION. PROCEDURE DIVISION. MAIN SECTION. INIZIO. DISPLAY HELLO WORLD. Abbiamo scritto il classico programma hello World e come si vede l idea della prolissità colpisce abbastanza. Rispetto ad un Basic che con una semplice istruzione: 10 PRINT HELLO WORLD avrebbe fornito lo stesso risultato, in COBOL sono state necessarie molte più righe. L utilità dell organizzazione del sorgente con molte parti dichiarative sarà molto più chiara nel prosieguo del corso che abbiamo per ora solo introdotto. C è da dire comunque, a consolazione di chi si è spaventato da subito, che i programmatori si limitano fare un copia incolla da un template. Oserei dire che moltissimi di essi nemmeno sarebbero capaci di scrivere da zero l intera parte dichiarativa: semplicemente non la possono ricordare, dopo anni che non se ne preoccupano! Esaminando il primo sorgente evidenziamo gli aspetti essenziali del linguaggio. Prima di tutto il token di chiusura di uno statement è il punto e ogni riga, come si diceva, deve concludersi entro 72 caratteri, punto compreso. La regola dei compilatori è ignorare tutto ciò che eccede il 72-simo carattere. Il sorgente è diviso in DIVISION che ne indi-

11 viduano le quattro parti principali. L IDENTIFICATION DIVISION come dice il nome è deputata a contenere delle meta-istruzioni che servono all identificazione del programma. Una di queste informazioni è il nome del programma stesso la cui composizione segue le regole dell ambiente operativo. Non necessariamente il PROGRAM-ID corrisponde al nome del binario compilato sul file system, esso è un nome interno al quale fare riferimento ad esempio se il sorgente fosse in una libreria di funzioni. La ENVIRONMENT DIVISION specifica l ambiente dove il programma viene sviluppato rispetto alla sua destinazione finale. Ricordate che il COBOL è crossplatform? In ambiente Personal Computer queste specifiche hanno ormai poco senso e anzi i compilatori sono stati di fatto alleggeriti della capacità di compilare per diversa piattaforma. Rimane quindi sostanzialmente una divisione figurativa che serve al più per specificare alcune particolarità che si intendono usare, come ad esempio l utilizzo della virgola come separatore dei decimali. La DATA DIVISION non è altro che la parte di sorgente dove si dichiarano le variabili. In COBOL variabili e costanti devono essere dichiarate tutte in questa divisione dove trovano posto anche altre strutture informative come ad esempio i file sequenziali o con chiave, le specifiche di ordinamento, etc... Infine la PROCEDURE DIVISION ospita il codice che viene organizzato in sezioni. Tradizionalmente si nomina la prima sezione MAIN SECTION, anche se il nome MAIN non è obbligatorio (potrebbe essere chiamata INIZIO o qualsiasi altra cosa piaccia). Poi abbiamo inserito anche la parola INIZIO che funge da label. Si usa, ma anche questo non è obbligatorio. Per completare la disamina del primo sorgente diciamo che l istruzione DISPLAY stampa a video una costante letterale (è il nostro caso) o il valore di una variabile. Il programma viene eseguito dalla prima sezione che si incontra fino al termine della stessa o fino alla conclusione del sorgente. Esiste una specifica istruzione STOP PRO- GRAM o semplicemente STOP che conclude l elaborazione. Tradizionalmente i sorgenti vengono scritti in maiuscolo in omaggio ai vecchi terminali dei mainframe anni 60. I compilatori oggigiorno accettano anche il minuscolo che negli ultimi anni è diventata una pratica seguita da moltissimi programmatori, specialmente se appartenenti alle nuove generazioni, abituati ai linguaggi correnti. Il Cobol rimane però unsensitive, come il Basic: non distingue fra maiuscole e minuscole. Pur esistendo qualche approccio alla pratica dell interpretazione, il COBOL nasce come linguaggio 11

12 compilato. La rigida organizzazione dei sorgenti è a supporto della creazione del codice binario. Il COBOL si presenta quindi praticamente sempre con la classica configurazione di sviluppo editorcompilazione-esecuzione. L ambiente di eccellenza per l esecuzione di programmi COBOL è l interfaccia a caratteri, proprio per la forma spartana dell I/O tipica del linguaggio. Come abbiamo detto nell introduzione non mancano comunque implementazioni a finestre realizzate con opportune estensioni del linguaggio stesso che dimostra una certa dose di adattabilità grazie soprattutto alle estensioni ad-hoc che le aziende produttrici vi inseriscono a forza per dare al loro prodotto una parvenza di modernità. Già dalla nascita comunque è stata prevista una sorta di gestione a form del video. Una specifica SECTION, esattamente la SCREEN SEC- TION, è deputata alla descrizione dell interfaccia. Il bubble sort in COBOL Un esempio più articolato è riportato per intero nei box delle pagine seguenti. Si tratta di una implementazione dell algoritmo classico di bubble sort. Penso sia noto a tutti il meccanismo di questo semplice algoritmo di ordinamento: si tratta di spostare degli elementi in un vettore effettuando dei ripetuti scambi con gli elementi adiacenti fino ad ottenere un vettore ordinato. Maggiori approfondimenti si possono trovare sul fascicolo numero 1 di Jurassic News. Commentiamo ora le righe che incontriamo nel sorgente per introdurre le novità rispetto a quanto visto finora. Nella WORKING-STORAGE SECTION abbiamo dichiarato due costanti (in realtà non esiste una dichiarazione speciale per variabili immodificabili, il fatto che siano costanti lo decidiamo noi). 01 MAX COMP-1 VALUE LIMITE COMP-1 VALUE Il tipo COMP-1 è il classico Integer che occupa una o più coppie di byte a seconda dell implementazione del compilatore. Sono variabili numeriche senza una definizione di formato. A cominciare dalla variabile VET- TORE abbiamo il primo esempio di variabile strutturata. VETTORE è il nome della nostra variabile dichiarata a livello 01 che contiene un sotto-livello, individuato dal livello 12

13 05 che ne rappresenta il contenuto strutturato. 01 VETTORE. 10 ELEMENTO COMP-1 OCCURS VETTORE. 05 EL-VETTORE COMP-1 OCCURS EL-VETTORE è vettore di elementi di tipo COMP-1. Quando in una istruzione ci si riferisce alla variabile VETTORE si sta parlando dell intera struttura; quando ci si riferisce a EL-VETTORE si sta parlando di una componente che andrà individuata tramite il classico meccanismo degli indici: MOVE 12 TO EL-VETTORE(34) In questo specifico caso, cioè nella necessità di dichiarare vettori o matrici la strutturazione è obbligatoria. Infatti lo standard prevede che una variabile di livello 01 non possa essere indicizzata. C è un motivo pratico per questo: il livello 01 indica al compilatore anche la classe di storage della variabile, cioè i livelli 01 sono immagazzinati a partire dall indirizzo intero di memoria, cosa che non succede per i sotto-livelli. Se avessimo ad esempio un ambiente a 64 bit, quindi con word di quattro byte e il tipo COMP-1 fosse un intero da due byte, allora ogni dichiarazione di COMP-1 a livello 01 occuperebbe comunque una word, sprecando due byte di memoria. Una dichiarazione 01 VETTORE COMP-1 OCCURS 1000 occuperebbe 4000 byte di memoria, contro i 2000 occupati dalla dichiarazione: Un altro esempio di variabile strutturata è quella che contiene un orario: 01 ORA. 05 ORA-HH COMP ORA-MM COMP ORA-SS COMP ORA-CC COMP-1. In questo caso quattro variabili semplici di tipo COMP-1 sono raggruppate al solo fine di chiarezza, ma verranno elaborate singolarmente. Nella dichiarazione della variabile TOT-SECONDI troviamo un altra forma di dichiarazione di variabile numerica. 01 TOT-SECONDI PIC 9(12)V9(2) VALUE ZERO. PIC 9(12)V9(2) significa 12 cifre intere seguite da due decimali. Passiamo ora alla desamina del codice premettendo che esso è stato strutturato in maniera molto spinta (tipo Pascal per intenderci) cercando di introdurre i concetti di esecuzione dei singoli pezzi come fossero parti staccate (procedure o funzioni). INIZIO. * --- loop iterazioni PERFORM ESEGUI THRU ESEGUI-EXIT MAX TIMES. * --- calcolo della media COMPUTE MEDIA = TOT-SECONDI / MAX. * --- display dei risultati. DISPLAY TOTALE SECONDI IMPIEGATI: TOT-SECONDI. DISPLAY 13

14 IDENTIFICATION DIVISION. 14 PROGRAM-ID. BUBBLE. *********************************** * Titolo : Bubble Sort *********************************** DATE-WRITTEN. DATE-COMPILED. DIC/97. GEN/98. *********************************** ENVIRONMENT DIVISION. *********************************** CONFIGURATION SECTION. * SOURCE-COMPUTER. PENTIUM-PC166. OBJECT-COMPUTER. PENTIUM-PC166. SPECIAL-NAMES. DECIMAL-POINT IS COMMA. /********************************** DATA DIVISION. *********************************** WORKING-STORAGE SECTION. *********************************** * ---- costanti 01 MAX COMP-1 VALUE LIMITE COMP-1 VALUE * --- variabili 01 VETTORE. 05 EL-VETTORE COMP-1 OCCURS I COMP SCAMBI COMP TOT-ITERAZIONI PIC 9(12). 01 J COMP TOT-SCAMBI PIC 9(12). 01 TEMP COMP ORA. 05 ORA-HH COMP ORA-MM COMP ORA-SS COMP ORA-CC COMP ORA-I. 05 ORA-I-HH COMP ORA-I-MM COMP ORA-I-SS COMP ORA-I-CC COMP ORA-F. 05 ORA-F-HH COMP ORA-F-MM COMP ORA-F-SS COMP ORA-F-CC COMP TOT-SECONDI PIC 9(12)V9(2) VALUE ZERO. 01 MEDIA PIC 9(5)V9(2) VALUE ZERO. 01 DIFF-SECONDI PIC 9(12). 01 SECONDI-INIZIALI PIC 9(12). 01 SECONDI-FINALI PIC 9(12). * ---- Variabili per il generatore di numeri casuali 01 MODULO COMP-1 VALUE MOLTIPLICATORE COMP INCREMENTO COMP SEME COMP-1. /**************************************** PROCEDURE DIVISION. **************************************** MAIN SECTION. **************************************** INIZIO. **************************************** * --- loop iterazioni PERFORM ESEGUI THRU ESEGUI-EXIT MAX TIMES. * --- calcolo della media COMPUTE MEDIA = TOT-SECONDI / MAX. * --- display dei risultati. DISPLAY TOTALE SECONDI IMPIEGATI: TOT-SECONDI. DISPLAY MEDIA PER VETTORE : MEDIA USCITA. STOP RUN. ESEGUI. PERFORM CARICA-VETTORE THRU CARICA-VETTORE-EXIT. * --- esecuzione sort CALL GTIME USING ORA-I. display ora iniziale: ORA-I-HH : ORA-I-MM : ORA-I-SS : ORA-I-CC. MOVE 1 TO SCAMBI. PERFORM LOOP-SCAMBIO THRU LOOP-SCAMBIO-EXIT UNTIL SCAMBI IS EQUAL ZERO. CALL GTIME USING ORA-F. display ora finale : ORA-F-HH : ORA-F-MM : ORA-F-SS : ORA-F-CC. MOVE ZERO TO DIFF-SECONDI. PERFORM CALCOLA-SECONDI THRU CALCOLA-SECONDI-EXIT. COMPUTE TOT-SECONDI = TOT-SECONDI + (DIFF-SECONDI / 100). DISPLAY TOTALE SECONDI : TOT-SECONDI. ESEGUI-EXIT. EXIT. LOOP-SCAMBIO. MOVE ZERO TO SCAMBI. PERFORM CONFRONTA THRU CONFRONTA-EXIT

15 LOOP-SCAMBIO-EXIT. EXIT. CONFRONTA. VARYING I FROM 1 BY 1 UNTIL I = LIMITE. IF EL-VETTORE( I + 1 ) IS < EL-VETTORE( I ) MOVE EL-VETTORE( I + 1 ) TO TEMP MOVE EL-VETTORE( I ) TO EL-VETTORE( I + 1 ) MOVE TEMP TO EL-VETTORE( I ) MOVE 1 TO SCAMBI. CONFRONTA-EXIT. EXIT. CARICA-VETTORE. CALL GTIME USING ORA. COMPUTE MOLTIPLICATORE = ORA-SS * ORA-MM. COMPUTE SEME = ORA-CC * ORA-SS. COMPUTE INCREMENTO = ORA-CC * ORA-MM. PERFORM NUMERO-RANDOM THRU NUMERO-RANDOM-EXIT VARYING I FROM 1 BY 1 UNTIL I > LIMITE. CARICA-VETTORE-EXIT. EXIT. NUMERO-RANDOM. MOVE SEME TO EL-VETTORE(I). COMPUTE SEME = (MOLTIPLICATORE * SEME + INCREMENTO). COMPUTE SEME = MODULO - (SEME / MODULO) * SEME. IF SEME < 0 COMPUTE SEME = -SEME. NUMERO-RANDOM-EXIT. EXIT. CALCOLA-SECONDI. * --- calcola il numero di secondi occorsi fra i due orari. COMPUTE SECONDI-INIZIALI = ORA-I-HH * ORA-I-MM * 60 + ORA-I-SS. COMPUTE SECONDI-INIZIALI = SECONDI-INIZIALI * ORA-I-CC. COMPUTE SECONDI-FINALI = ORA-F-HH * ORA-F-MM * 60 + ORA-F-SS. COMPUTE SECONDI-FINALI = SECONDI-FINALI * ORA-F-CC. COMPUTE DIFF-SECONDI = SECONDI-FINALI - SECONDI-INIZIALI. CALCOLA-SECONDI-EXIT. EXIT. 15

16 MEDIA PER VETTORE: MEDIA. USCITA. STOP RUN. C è una iterazione iniziale che richiama la sezione ESEGUI. La sintassi PERFORM ESEGUI THRU ESEGUI- EXIT MAX TIMES. Significa: esegui un numero di iterazioni pari al valore contenuto in MAX (che abbiamo dichiarato nella Working al valore ) delle istruzioni comprese nella sezione INIZIO per finire con quelle nella sezione ESEGUI-EXIT. Fatta questa iterazione c e un calcolo dei secondi medi impiegati, la stampa a video dei risultati e l uscita dal programma. La sezione ESEGUI, che abbiamo visto viene iterata volte, per avere un risultato medio attendibile, prevede i seguenti passaggi: caricamento del vettore con numeri pseudo-casuali, la rilevazione del tempo iniziale, il sort del vettore, la rilevazione del tempo impiegato. L algoritmo di ordinamento vero e proprio è costituito dai seguenti statement: MOVE 1 TO SCAMBI. PERFORM LOOP-SCAMBIO THRU LOOP-SCAMBIO-EXIT UNTIL SCAMBI IS EQUAL ZERO. Se vi è chiaro come procede il bubble sort, semplicemente si continua a fare scambi di elementi fino a che una spazzolatura finale del vettore non da luogo a nessuno scambio. Le istruzioni di iterazione innescate dall istruzione PERFORM vengono eseguite continuamente fino a che non si verifica la condizione descritta nell UNTIL. Si noti la sintassi usata per controllare la condizione di uscita. Si sarebbe potuto anche scrivere: UNTIL SCAMBI = 0 Concedendo un certo vantaggio ai programmatori moderni, ma perché dovremmo? La sintassi usata qui è molto più chiara per chi è avvezzo a leggere i sorgenti COBOL, infatti se ci pensate assomiglia molto di più ad una sintassi letterale. E dimostrato inoltre che molti errori di codifica nei programmi derivano dalla scrittura di condizioni al contorno errate dovute ad una errata interpretazione delle specifiche o all impiego di operatori di confronto simbolici che richiedono un quid di attenzione maggiore a chi codifica. Il caricamento dei dati nel vettore avviene nella form CARICA-VET- TORE chiamata dallo statement: PERFORM CARICA-VETTORE THRU CARICA-VETTORE-EXIT. Essa contiene un loop che interessa uno ad uno gli elementi del vettore e vi inserisce un numero pseudo-casuale. L istruzione che effettua il loop di caricamento è la seguente: PERFORM NUMERO-RANDOM THRU NUMERO-RANDOM-EXIT VARYING I FROM 1 BY 1 UNTIL I > LIMITE. 16

17 Questa sintassi prevede l incremento automatico di un indice rappresentato dalla variabile I che viene incrementato partendo dal valore 1 fino a superare il limite previsto, che è la dimensione del vettore stesso. Implicitamente abbiamo introdotto un ulteriore concetto: le variabili indicizzate hanno indice che inizia da 1. Il cuore dell algoritmo di bubble sort è contenuto nella form CON- FRONTA: CONFRONTA. IF EL-VETTORE( I + 1 ) IS < EL-VETTORE( I ) MOVE EL-VETTORE( I + 1 ) TO TEMP MOVE EL-VETTORE( I ) TO EL-VETTORE( I + 1 ) MOVE TEMP TO EL-VETTORE( I ) MOVE 1 TO SCAMBI. CONFRONTA-EXIT. EXIT. Qui si vede come l indicizzazione delle variabili avviene indicando l elemento con indice fra parentesi, eventualmente calcolando il valore stesso dell indice. Gli operatori di confronto in CO- BOL sono quelli classici: =, <, >, >=, <=, <>. Esiste tuttavia una forma letterale di questi operatori: altri linguaggi. Una particolarità che vale la pena spiegare è l utilizzo dello statement MOVE 1 TO SCAMBI All interno della form di confronto. Un valore diverso da zero della variabile SCAMBI serve per ordinare un ulteriore loop sugli elementi del vettore. Infatti l algoritmo si basa proprio sull iterazione dei confronti elemento per elemento del vettore fino a che un ultima iterazione non effettua alcuno scambio, segno che il vettore è ordinato. Non sarebbe stato meglio incrementare il valore di SCAMBI con una istruzione del tipo: ADD 1 TO SCAMBI In effetti se servisse anche tracciare quanti scambi vengono fatti in ogni iterazione, allora l istruzione di incremento sarebbe stata necessaria. In caso contrario è inutile una istruzione matematica, che consuma certo più tempo, rispetto ad una istruzione di assegnazione. = IS EQUAL > IS GREATHER THAN < IS LESS THAN >= IS GREATHER OR EQUAL, IS NOT LESS <= IS LESS OR EQUAL, IS NOT GREATHER <> IS NOT EQUAL La forma prolissa della sintassi è poco usata attualmente, dato che le nuove generazioni di programmatori sono ormai abituate alle forme matematiche più simili agli 17

18 Listato 1 L uso di variabili strutturate, come matrici e vettori, è incoraggiata in COBOL. C è chi addirittura struttura tutto, perfino i semplici contatori interi. Qualcosa come: 01 CONTATORE. 10 CONT PIC COMP-1. La multidimensionalità si ottiene inserendo una dichiarazione strutturata in un altra. Ecco un esempio: 01 MATRICE. 10 RIGA-MATRICE OCCURS EL-MATRICE PIC 9(5) OCCURS 100. Qui abbiamo dichiarato una matrice di dimensione 100 per 100 i cui elementi sono dei valori numerici di cinque cifre. E c c o un loop che carica gli elementi della matrice c o m e f o s s e una tavola pitagorica (listato 1). /**************************************** PROCEDURE DIVISION. **************************************** MAIN SECTION. **************************************** INIZIO. **************************************** PERFORM SCAN-RIGHE THRU SCAN-RIGHE-EXIT VARYING RIGA FROM 1 BY 1 UNTIL RIGA <= 10. USCITA. STOP RUN. SCAN-RIGA. PERFORM SCAN-COL THRU SCAN-COL-EXIT VARYING COLONNA FROM 1 BY 1 UNTIL COLONNA <= 10. SCAN-RIGHE-EXIT. EXIT. SCAN-COL. COMPUTE EL-MATRICE(RIGA, COLONNA) = RIGA * COLONNA. SCAN-COL-EXIT. EXIT. Variabili strutturate Un alt r o aspetto legato alla strutturazione del dato è la possibilità di ridefinire la memoria indirizzata da una variabile in modo che questa sia usabile con due o più nomi. Ad esempio: 01 CODICE. 02 COD-FIS PIC X(16). 02 PARTITA-IVA REDEFINES COD-FIS. 05 P-IVA PIC 9(12). 05 FILLER X(4). Incontriamo per la prima volta una parola chiave molto usata nella definizione delle variabili strutturate del COBOL: FILLER. Questa viene utilizzata come riempitivo. Nel nostro esempio, dato che la ridefinizione di un area di memoria deve essere coerente, cioè utilizzare tutto lo spazio, riempiamo con un nome simbolico FILLER quella parte di dato che nel caso stessimo trattando una partita IVA non ci interessa. E chiaro che COD-FIS e PARTI- TA-IVA condividono lo stesso spazio di memoria, è lo stesso meccanismo implementato con le union nel linguaggio C. Nel listato numero 2 riportiamo un esempio di definizione di un record anagrafico che contiene un po tutte le cose viste finora nella definizione dei tipi di dato in COBOL. 01 REC-ANAG. è la definizione del livello base, appunto 01, che identifica l inizio di un dato strutturato. 05 TIPO-RECORD PIC XX. è un tipo di secondo livello di formato due caratteri alfanumerici. 18

19 05 MATRICOLA. 10 NUMERO PIC 9(5). 10 CONTROLLO PIC X. MATRICOLA è un dato strutturato formato da due sotto-livelli che nell esempio sono identificato dal numero di livello 10. Ci si potrà riferire a questo dato indicando il singolo sotto-livello o il dato intero MATRICOLA. Ad esempio: MOVE 12345A TO MATRICOLA. MOVE TO NUMERO. MOVE A TO CONTROLLO. I due campi GENERALITA e NO- MINATIVO sono ridefiniti, cioè identificano la stessa locazione di memoria per una lunghezza di 50 caratteri alfanumerici. Mentre GE- NERALITA è stato sotto specificato in due sottocampi NOME e CO- GNOME, il campo NOMINATIVO, che possiamo pensare come un alias del campo GENERALITA, è definito come unico. Seguono tre livelli chiamati rispettivamente NASCITA, ASSUNZIONE e DIMISSIONI. Tutti e tre contengono una data definita con sottocampi che hanno lo stesso nome: ANNO, MESE e GIORNO. 10 DATA-NASCITA. 15 ANNO PIC MESE PIC GIORNO PIC DATA-ASSUNZIONE. 15 ANNO PIC MESE PIC ANNO PIC DATA-DIMISSIONI. 15 ANNO PIC MESE PIC ANNO PIC 99. Come si fa a riferirsi ad un particolare anno, mese o giorno? Purtroppo il COBOL non prevede un meccanismo di dereferenziazione del dato, come succede nei linguaggi di programmazione più moderni. Ad esempio nel C si usa il punto come separatore e indicatore di riferimento per il cosidetto Spazio di validità del dato. In C si scriverebbe qualcosa come: REC-ANAG.ASSUNZIONE.DATA-ASSUN- ZIONE.ANNO = Dato che il COBOL non dispone di questo meccanismo è fortemente consigliato differenziare i nomi dei campi in maniera nativa, cioè chiamandoli diversamente. Quando questo non è possibile si ricorre alla clausula OF come nell esempio seguente: MOVE 1975 TO ANNO OF DATA-NA- SCITA. Sembra complicato ma non lo è a f f a t t o, a n c h e considerando che la sintassi mantiene una o t t i m a leggibilità. Nel record che abbiamo esam i n a t o c o m e Listato 2 01 REC-ANAG. 05 TIPO-RECORD PIC XX. 05 MATRICOLA. 10 NUMERO PIC 9(5). 10 CONTROLLO PIC X. 05 GENERALITA. 10 NOME PIC X(25). 10 COGNOME PIC X(25). 05 NOMINATIVO REDEFINES GENERALITA. 10 FILLER PIC X(50). 05 SESSO PIC X. 05 NASCITA. 10 DATA-NASCITA. 15 ANNO PIC MESE PIC GIORNO PIC LUOGO-DI-NASCITA. 15 CITTA PIC X(25). 15 CAP PIC Z(5). 15 PROVINCIA PIC XX. 15 NAZIONE PIC X(25). 05 ASSUNZIONE. 10 DATA-ASSUNZIONE. 15 ANNO PIC MESE PIC ANNO PIC DIMISSIONI. 10 DATA-DIMISSIONI. 15 ANNO PIC MESE PIC ANNO PIC

20 esempio è presente una dichiarazione di USAGE PIC Z. Il tipo Z è un numerico che mantiene gli zeri non significativi. Serve nei casi in cui, come in questo, il valore numerico sia in realtà un alfabetico di sole cifre. Possiamo assegnare al campo il valore e la stampa ci mostrerebbe anche i due zeri leading, cioè davanti. Per chiudere il discorso sulla rappresentazione dei dati e cioè sull uso della specifica USAGE, che a volte viene omessa facciamo questo altri esempi significativi: USAGE IS PIC 9(5)V99. E in valore numerico con segno con cinque cifre intere e due cifre decimali. USAGE IS PIC AAAXX999. E un campo misto lungo otto caratteri dei quali i primi tre sono alfabetici (solo lettere), seguono due caratteri alfanumerici (lettere e numeri) e infine tre caratteri numerici. Infine USAGE IS PIC A(5)9(3)X(2). E un valore che contiene cinque caratteri alfabetici, seguiti da tre cifre ed infine due ulteriori caratteri alfanumerici. La clausula PICTURES, abbreviata in PIC, serve anche per definire una rappresentazione del dato su video al momento dell output o della stampa. PIC indica che vogliamo una rappresentazione con numeri di separazione per le migliaia. PIC indica che il dato è rappresentato con il segno alla fine (trailing), un uso molto comune nelle liste di cifre dei bilanci e il simbolo sarà un meno se il dato è negativo, uno spazio altrimenti. PIC indica che vogliamo il segno in coda al numero ma questa volta il segno esisterà sia per i valori positivi che per quelli negativi. C è un altra forma possibile per la rappresentazione dei valori positivi e negativi, anche se non molto usata in Italia, ed è quella di indicare due lettere CR che starebbe per credito e DB per debito. PIC 999CR. PIC 999DB. La stampa di CR e DB avviene solo se il dato è negativo e non come si potrebbe pensare DB se negativo e CR se positivo. PIC 999Z. sta ad indicare che vogliamo stampare la cifra zero a fronte di un valore nullo. Nell assegnazione dei valori sono consentite delle abbreviazioni e l uso di due costanti figurative per lo spazio (blank) e per lo zero. VALUE IS ZERO. VALUE IS ZEROES. VALUE IS SPACE. 20

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

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa di Ilaria Lorenzo e Alessandra Palma Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa Code::Blocks

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

ALGORITMI 1 a Parte. di Ippolito Perlasca. Algoritmo:

ALGORITMI 1 a Parte. di Ippolito Perlasca. Algoritmo: ALGORITMI 1 a Parte di Ippolito Perlasca Algoritmo: Insieme di regole che forniscono una sequenza di operazioni atte a risolvere un particolare problema (De Mauro) Procedimento che consente di ottenere

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Import Dati Release 4.0

Import Dati Release 4.0 Piattaforma Applicativa Gestionale Import Dati Release 4.0 COPYRIGHT 2000-2005 by ZUCCHETTI S.p.A. Tutti i diritti sono riservati.questa pubblicazione contiene informazioni protette da copyright. Nessuna

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

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

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare

Dettagli

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t. Il programma MATLAB In queste pagine si introduce in maniera molto breve il programma di simulazione MAT- LAB (una abbreviazione di MATrix LABoratory). Introduzione MATLAB è un programma interattivo di

Dettagli

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

Dall italiano alla logica proposizionale

Dall italiano alla logica proposizionale Rappresentare l italiano in LP Dall italiano alla logica proposizionale Sandro Zucchi 2009-10 In questa lezione, vediamo come fare uso del linguaggio LP per rappresentare frasi dell italiano. Questo ci

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

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

Guida rapida all uso di ECM Titanium

Guida rapida all uso di ECM Titanium Guida rapida all uso di ECM Titanium Introduzione Questa guida contiene una spiegazione semplificata del funzionamento del software per Chiputilizzare al meglio il Tuning ECM Titanium ed include tutte

Dettagli

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email.

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email. La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net di Emanuele Mattei (emanuele.mattei[at]email.it) Introduzione In questa serie di articoli, vedremo come utilizzare

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

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

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

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

Integrated Development Environment (IDE) DevC++ 4.9.9.2

Integrated Development Environment (IDE) DevC++ 4.9.9.2 Integrated Development Environment (IDE) DevC++ 4.9.9.2 Manuale utente Data ultima revisione: 22/10/2008 Fondamenti di informatica Università Facoltà Corso di laurea Politecnico di Bari 1 a Facoltà di

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

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

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1 Il gestionale come l'avete sempre sognato... Pag. 1 Le funzionalità di X-Cross La sofisticata tecnologia di CrossModel, oltre a permettere di lavorare in Internet come nel proprio ufficio e ad avere una

Dettagli

MANUALE DOS INTRODUZIONE

MANUALE DOS INTRODUZIONE MANUALE DOS INTRODUZIONE Il DOS è il vecchio sistema operativo, che fino a qualche anno fa era il più diffuso sui PC, prima dell avvento di Windows 95 e successori. Le caratteristiche principali di questo

Dettagli

Software Emeris Communication Manager

Software Emeris Communication Manager ecm Software Emeris Communication Manager Manuale operativo Fantini Cosmi S.p.A. Via dell Osio 6 20090 Caleppio di Settala MI Tel 02.956821 - Fax 02.95307006 e-mail: info@fantinicosmi.it http://www.fantinicosmi.it

Dettagli

Architettura dei Calcolatori

Architettura dei Calcolatori Architettura dei Calcolatori Sistema di memoria parte prima Ing. dell Automazione A.A. 2011/12 Gabriele Cecchetti Sistema di memoria parte prima Sommario: Banco di registri Generalità sulla memoria Tecnologie

Dettagli

Editor vi. Editor vi

Editor vi. Editor vi Editor vi vi 1 Editor vi Il vi è l editor di testo standard per UNIX, è presente in tutte le versioni base e funziona con qualsiasi terminale a caratteri Permette di visualizzare una schermata alla volta

Dettagli

Guida all'uso di StarOffice 5.2

Guida all'uso di StarOffice 5.2 Eraldo Bonavitacola Guida all'uso di StarOffice 5.2 Introduzione Dicembre 2001 Copyright 2001 Eraldo Bonavitacola-CODINF CODINF COordinamento Docenti INFormati(ci) Introduzione Pag. 1 INTRODUZIONE COS'È

Dettagli

ASTA IN GRIGLIA PRO. COSA PERMETTE DI FARE (per ora) Asta In Griglia PRO:

ASTA IN GRIGLIA PRO. COSA PERMETTE DI FARE (per ora) Asta In Griglia PRO: ASTA IN GRIGLIA PRO Asta in Griglia PRO è un software creato per aiutare il venditore Ebay nella fase di post-vendita, da quando l inserzione finisce con una vendita fino alla spedizione. Il programma

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Dettagli

Manipolazione di testi: espressioni regolari

Manipolazione di testi: espressioni regolari Manipolazione di testi: espressioni regolari Un meccanismo per specificare un pattern, che, di fatto, è la rappresentazione sintetica di un insieme (eventualmente infinito) di stringhe: il pattern viene

Dettagli

FUNZIONI AVANZATE DI EXCEL

FUNZIONI AVANZATE DI EXCEL FUNZIONI AVANZATE DI EXCEL Inserire una funzione dalla barra dei menu Clicca sulla scheda "Formule" e clicca su "Fx" (Inserisci Funzione). Dalla finestra di dialogo "Inserisci Funzione" clicca sulla categoria

Dettagli

Dipartimento di Sistemi e Informatica Università degli Studi di Firenze. Dev-C++ Ing. Michele Banci 27/03/2007 1

Dipartimento di Sistemi e Informatica Università degli Studi di Firenze. Dev-C++ Ing. Michele Banci 27/03/2007 1 Dipartimento di Sistemi e Informatica Università degli Studi di Firenze Dev-C++ Ing. Michele Banci 27/03/2007 1 Utilizzare Dev-C++ Tutti i programmi che seranno realizzati richiedono progetti separati

Dettagli

GUIDA RAPIDA emagister-agora Edizione BASIC

GUIDA RAPIDA emagister-agora Edizione BASIC GUIDA RAPIDA emagister-agora Edizione BASIC Introduzione a emagister-agora Interfaccia di emagister-agora Configurazione dell offerta didattica Richieste d informazioni Gestione delle richieste d informazioni

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

Test di comunicazione tra due LOGO! 0BA7: Master - Master

Test di comunicazione tra due LOGO! 0BA7: Master - Master Industry Test di comunicazione tra due LOGO! 0BA7: Master - Master Dispositivi utilizzati: - 2 LOGO! 0BA7 (6ED1 052-1MD00-0AB7) - Scalance X-208 LOGO! 0BA7 Client IP: 192.168.0.1 LOGO! 0BA7 Server IP:

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

INFORMATIVA FINANZIARIA

INFORMATIVA FINANZIARIA Capitolo 10 INFORMATIVA FINANZIARIA In questa sezione sono riportate le quotazioni e le informazioni relative ai titoli inseriti nella SELEZIONE PERSONALE attiva.tramite la funzione RICERCA TITOLI è possibile

Dettagli

I Grafici. La creazione di un grafico

I Grafici. La creazione di un grafico I Grafici I grafici servono per illustrare meglio un concetto o per visualizzare una situazione di fatto e pertanto la scelta del tipo di grafico assume notevole importanza. Creare grafici con Excel è

Dettagli

INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02

INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02 INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02 Download Si può scaricare gratuitamente la versione per il proprio sistema operativo (Windows, MacOS, Linux) dal sito: http://www.codeblocks.org

Dettagli

RefWorks Guida all utente Versione 4.0

RefWorks Guida all utente Versione 4.0 Accesso a RefWorks per utenti registrati RefWorks Guida all utente Versione 4.0 Dalla pagina web www.refworks.com/refworks Inserire il proprio username (indirizzo e-mail) e password NB: Agli utenti remoti

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

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

Parte 2. Determinante e matrice inversa

Parte 2. Determinante e matrice inversa Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice

Dettagli

Studente: SANTORO MC. Matricola : 528

Studente: SANTORO MC. Matricola : 528 CORSO di LAUREA in INFORMATICA Corso di CALCOLO NUMERICO a.a. 2004-05 Studente: SANTORO MC. Matricola : 528 PROGETTO PER L ESAME 1. Sviluppare una versione dell algoritmo di Gauss per sistemi con matrice

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Appunti di Logica Matematica

Appunti di Logica Matematica Appunti di Logica Matematica Francesco Bottacin 1 Logica Proposizionale Una proposizione è un affermazione che esprime un valore di verità, cioè una affermazione che è VERA oppure FALSA. Ad esempio: 5

Dettagli

WINDOWS - Comandi rapidi da tastiera più utilizzati.

WINDOWS - Comandi rapidi da tastiera più utilizzati. WINDOWS - Comandi rapidi da tastiera più utilizzati. La prima colonna indica il tasto da premere singolarmente e poi rilasciare. La seconda e terza colonna rappresenta la combinazione dei i tasti da premere

Dettagli

La Valutazione Euristica

La Valutazione Euristica 1/38 E un metodo ispettivo di tipo discount effettuato da esperti di usabilità. Consiste nel valutare se una serie di principi di buona progettazione sono stati applicati correttamente. Si basa sull uso

Dettagli

Energy risk management

Energy risk management Il sistema di supporto alle tue decisioni Energy risk management Un approccio orientato agli attori M.B.I. Srl, Via Francesco Squartini 7-56121 Pisa, Italia - tel. 050 3870888 - fax. 050 3870808 www.powerschedo.it

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Come realizzare una buona presentazione (traduzione libera a cura della redazione di EpiCentro)

Come realizzare una buona presentazione (traduzione libera a cura della redazione di EpiCentro) Come realizzare una buona presentazione (traduzione libera a cura della redazione di EpiCentro) Quando si realizzano dei documenti visivi per illustrare dati e informazioni chiave, bisogna sforzarsi di

Dettagli

Semantica operazionale dei linguaggi di Programmazione

Semantica operazionale dei linguaggi di Programmazione Semantica operazionale dei linguaggi di Programmazione Oggetti sintattici e oggetti semantici Rosario Culmone, Luca Tesei Lucidi tratti dalla dispensa Elementi di Semantica Operazionale R. Barbuti, P.

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 1.1 Che cos è un algoritmo CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 Gli algoritmi sono metodi per la soluzione di problemi. Possiamo caratterizzare un problema mediante i dati di cui si dispone all inizio

Dettagli

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Se a e b sono numeri interi, si dice che a divide b, in simboli: a b, se e solo se esiste c Z tale che b = ac. Si può subito notare che:

Dettagli

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma Dev C++ Note di utilizzo 1 Prerequisiti Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma 2 1 Introduzione Lo scopo di queste note è quello di diffondere la conoscenza

Dettagli

Prof. Like you. Prof. Like you. Tel. +39 075 801 23 18 / Fax +39 075 801 29 01. Email info@zerounoinformatica.it / Web www.hottimo.

Prof. Like you. Prof. Like you. Tel. +39 075 801 23 18 / Fax +39 075 801 29 01. Email info@zerounoinformatica.it / Web www.hottimo. Pag. 1/7 Prof. Like you Tel. +39 075 801 23 18 / Fax +39 075 801 29 01 Email / Web / Social Pag. 2/7 hottimo.crm Con CRM (Customer Relationship Management) si indicano tutti gli aspetti di interazione

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Traduzione di TeamLab in altre lingue

Traduzione di TeamLab in altre lingue Lingue disponibili TeamLab è disponibile nelle seguenti lingue nel mese di gennaio 2012: Traduzioni complete Lingue tradotte parzialmente Inglese Tedesco Francese Spagnolo Russo Lettone Italiano Cinese

Dettagli

Da una a più variabili: derivate

Da una a più variabili: derivate Da una a più variabili: derivate ( ) 5 gennaio 2011 Scopo di questo articolo è di evidenziare le analogie e le differenze, relativamente al calcolo differenziale, fra le funzioni di una variabile reale

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore Cicli in Visual Basic for Application Le strutture del programma che ripetono l'esecuzione di una o più istruzioni sono chiamate Cicli. Alcune strutture per i cicli sono costruite in modo da venire eseguite

Dettagli

Database Manager Guida utente DMAN-IT-01/09/10

Database Manager Guida utente DMAN-IT-01/09/10 Database Manager Guida utente DMAN-IT-01/09/10 Le informazioni contenute in questo manuale di documentazione non sono contrattuali e possono essere modificate senza preavviso. La fornitura del software

Dettagli

Esercizi Capitolo 5 - Alberi

Esercizi Capitolo 5 - Alberi Esercizi Capitolo 5 - Alberi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle

Dettagli

Corso di Amministrazione di Sistema Parte I ITIL 3

Corso di Amministrazione di Sistema Parte I ITIL 3 Corso di Amministrazione di Sistema Parte I ITIL 3 Francesco Clabot Responsabile erogazione servizi tecnici 1 francesco.clabot@netcom-srl.it Fondamenti di ITIL per la Gestione dei Servizi Informatici Il

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org.

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Nuovo documento Anteprima di stampa Annulla Galleria Apri Controllo ortografico Ripristina Sorgente dati Salva Controllo

Dettagli

AMBIENTE DEV PASCAL. Dev-Pascal 1.9.2. Finestra di apertura

AMBIENTE DEV PASCAL. Dev-Pascal 1.9.2. Finestra di apertura Dev-Pascal 1.9.2 1 Dev-Pascal è un ambiente di sviluppo integrato per la programmazione in linguaggio Pascal sotto Windows prodotto dalla Bloodshed con licenza GNU e liberamente scaricabile al link http://www.bloodshed.net/dev/devpas192.exe

Dettagli

Algebra Relazionale. algebra relazionale

Algebra Relazionale. algebra relazionale Algebra Relazionale algebra relazionale Linguaggi di Interrogazione linguaggi formali Algebra relazionale Calcolo relazionale Programmazione logica linguaggi programmativi SQL: Structured Query Language

Dettagli

GESTIRE LA BIBLIOGRAFIA

GESTIRE LA BIBLIOGRAFIA GESTIRE LA BIBLIOGRAFIA STRUMENTI DI GESTIONE BIBLIOGRAFICA I software di gestione bibliografica permettono di raccogliere, catalogare e organizzare diverse tipologie di materiali, prendere appunti, formattare

Dettagli

CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA

CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA Supponiamo di voler eseguire una istantanea del nostro desktop, quella che in gergo si chiama Screenshot (da screen, schermo, e shot, scatto fotografico).

Dettagli

Guida all utilizzo del dispositivo USB

Guida all utilizzo del dispositivo USB Guida all utilizzo del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1. Glossario... 3 2. Guida all utilizzo del dispositivo USB... 4 2.1 Funzionamento del

Dettagli

Specifiche tecniche per la trasmissione telematica della certificazione Unica 2015

Specifiche tecniche per la trasmissione telematica della certificazione Unica 2015 ALLEGATO A Specifiche tecniche per la trasmissione telematica della certificazione Unica 2015 per i redditi di lavoro dipendente/assimilati e di lavoro autonomo/provvigioni e diversi Specifiche tecniche

Dettagli

Bus di sistema. Bus di sistema

Bus di sistema. Bus di sistema Bus di sistema Permette la comunicazione (scambio di dati) tra i diversi dispositivi che costituiscono il calcolatore E costituito da un insieme di fili metallici che danno luogo ad un collegamento aperto

Dettagli

Lab. 1 - Introduzione a Matlab

Lab. 1 - Introduzione a Matlab Lab. 1 - Introduzione a Matlab Alcune informazioni su Matlab Matlab è uno strumento per il calcolo scientifico utilizzabile a più livelli, dalla calcolatrice tascabile, alla simulazione ed analisi di sistemi

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

CHIAVETTA INTERNET ONDA MT503HSA

CHIAVETTA INTERNET ONDA MT503HSA CHIAVETTA INTERNET ONDA MT503HSA Manuale Utente Linux Debian, Fedora, Ubuntu www.ondacommunication.com Chiavet ta Internet MT503HSA Guida rapida sistema operativo LINUX V 1.1 33080, Roveredo in Piano (PN)

Dettagli

ALGEBRA I: CARDINALITÀ DI INSIEMI

ALGEBRA I: CARDINALITÀ DI INSIEMI ALGEBRA I: CARDINALITÀ DI INSIEMI 1. CONFRONTO DI CARDINALITÀ E chiaro a tutti che esistono insiemi finiti cioè con un numero finito di elementi) ed insiemi infiniti. E anche chiaro che ogni insieme infinito

Dettagli

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i Esercizi PHP 1. Scrivere uno script PHP che produca in output: 1. La tabellina del 5 2. La tavola Pitagorica contenuta in una tabella 3. La tabellina di un numero ricevuto in input tramite un modulo. Lo

Dettagli

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT Introduzione Un file batch è un file di testo di tipo ASCII che contiene una sequenza di comandi DOS. I file batch devono avere estensione.bat I comandi DOS all interno dei programmi batch sono eseguiti

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli