Dizionario A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Enciclopedia
Matematica Informatica Caratteristiche dei Linguaggi di ProgrammazioneIL LINGUAGGIO PASCALIl linguaggio Pascal è stato definito da Niklaus Wirth del politecnico di Zurigo nel 1971; è un linguaggio compilato, di uso generale, molto adatto anche per imparare a programmare. Una delle versioni più diffuse su personal computer è sicuramente il Turbo Pascal della Borland International diffuso per la prima volta nel 1983 e ormai arrivato alla versione 7. Nella versione attuale il Turbo Pascal offre un ambiente di sviluppo a menu e finestre, gestibile da tastiera o con il mouse, con funzioni integrate per il debug dei programmi. Le novità fondamentali delle ultime versioni sono l'introduzione della programmazione ad oggetti e la libreria Turbo Vision: una libreria di oggetti predefiniti da utilizzare come base di partenza per sviluppare applicazioni con interfaccia grafica. Inoltre i programmi si possono dividere in Unit (moduli) da compilare separatamente; le Unit racchiudono procedure o funzioni e permettono di creare librerie di funzioni predefinite da utilizzare in altri programmi e di superare la limitazione prima esistente di 64 Kbyte per la grandezza dei programmi. Alcune Unit sono standard e racchiudono gruppi di istruzioni per la gestione del video e della tastiera, della stampante, delle funzioni del DOS oltre a quelle per la gestione della grafica.STRUTTURA DEL PROGRAMMA IN PASCALIl programma comincia con la parola Program seguita dal nome del programma; si hanno poi le definizioni dei tipi di dati, delle variabili e delle procedure e funzioni; le istruzioni del programma cominciano con la parola riservata begin e terminano con la parola end. E' importante anche la punteggiatura: il punto segnala la fine del programma; il punto e virgola segnala la fine di ciascuna istruzione. Ogni procedura e funzione ha la stessa struttura: definizione dei tipi di dati, definizione delle variabili, definizione delle procedure e funzioni che sono locali al modulo. Le parole a scelta del programmatore possono essere formate da lettere, cifre e il trattino di sottolineatura. I commenti possono essere scritti in qualsiasi punto del programma e devono essere racchiusi tra parentesi graffe.I DATI IN PASCALUn programma può essere diviso in moduli (procedure e funzioni); le variabili possono essere dichiarate in modo globale o in modo locale ai moduli. I tipi di dati offerti sono molteplici; si ha quindi a disposizione un linguaggio molto flessibile che si presta a svariate applicazioni. I dati si possono raggruppare in: - tipi di dati semplici; - tipi di dati strutturati; - puntatori; - file; - oggetti. Tra i tipi di dati semplici sono presenti tipi standard o predefiniti (i numeri interi, i numeri reali, i caratteri, le stringhe e i dati booleani) ma è possibile anche definire dei nuovi tipi di dati. I tipi di dati definibili dall'utente rientrano in due tipologie: subrange ed enumerativi; i dati di tipo subrange sono un sottoinsieme di uno dei tipi scalari predefiniti (per esempio un intervallo più ristretto di numeri interi o un sottoinsieme dei caratteri); i tipi di dati enumerativi prevedono la creazione di un tipo di dato a partire dall'elenco di tuti i valori ammessi. ESEMPI Programma che definisce il tipo di dati COLORI; i valori ammessi da questo tipo di dati sono soltanto quelli inidicati esplicitamente tra parentesi. Si può definire una variabile del tipo COLORI e poi assegnarle uno dei colori definiti; una variabile del tipo COLORI si può usare in qualsiasi punto del programma ma non in istruzioni di stampa; per stampare il valore della variabile bisogna ricorrere ad artifici come l'uso di una istruzione condizionale. Program provacolore; type COLORI = (BIANCO, ROSSO, GIALLO, VERDE, BLU, GRIGIO, NERO) var COLORE: COLORI; begin COLORE := ROSSO if COLORE = ROSSO then write (+rossò); end. Tra i tipi strutturati sono disponibili vettori, matrici, record e insiemi. Il tipo insieme o set è un insieme di dati presi da un tipo scalare (numeri interi, caratteri o tipi defniti dall'utente), chiamato insieme di base dell'insieme. Sui dati di tipo set sono definite molte delle operazioni definite in matematica sugli insiemi: l'unione, l'intersezione, la differenza più la possibilità di eseguire confronti per stabilire se due insiemi sono uguali o se uno è contenuto nell'altro. Il tipo record raggruppa dati di tipo diverso: i campi del record. Al record si può far riferimento col suo nome, oppure utilizzando ciascun campo del record, individuato dal nome del record e del campo, separati da un punto. E' possibile fare riferimento ai nomi dei campi in modo più semplice utilizzando l'istruzione WITH. Si possono costruire anche record con una parte che varia in base ad una condizione (noti come record varianti o variant record). Il tipo puntatore permette di gestire strutture di dati più complesse e non immediatamente disponibili come liste e alberi. Si può definire un record in cui una parte sia composta dai dati che si vogliono gestire e una parte sia composta da un puntatore; in questo modo si è creato l'elemento di una lista, che si può facilmente gestire definendo delle procedure per compiere le operazioni essenziali di ricerca, inserimento, cancellazione di elementi ecc. Per definire un albero binario basta un record con una parte di dati e due puntatori che punteranno ciascuno ad un sottoalbero; anche qui basterà definire le procedure necessarie per l'inserimento di un nodo o l'attraversamento di un albero.LE ISTRUZIONI IN PASCALLe istruzioni di assegnazione vengono indicate dal simbolo ":="; le operazioni aritmetiche vengono scritte semplicemente utilizzando i simboli +, -, * e / o DIV (la barra serve per la divisione tra numeri reali, la parola DIV per la divisione tra numeri interi). Le istruzioni di input/output sono READ per la lettura e WRITE per la scrittura. Le istruzioni di controllo permettono di codificare facilmente gli schemi di composizione fondamentale della programmazione strutturata; sono disponibili l'istruzione IF/THEN/ELSE per la codifica della struttura condizionale e l'istruzione CASE/OF per la codifica di scelte multiple, l'istruzione WHILE/DO per la codifica del ciclo while, l'istruzione REPEAT/UNTIL per la codifica del ciclo until e l'istruzione FOR/DO per la codifica del ciclo for. Ognuna di queste istruzioni può contenere al suo interno una sola istruzione; se si devono indicare gruppi di istruzioni bisogna scriverle come un'unica istruzione composta che inizia con la parola begin e termina con la parola end; lo stesso programma principale è formato da un'unica istruzione composta. La programmazione modulare è permessa dalla possibilità di definire procedure e funzioni. Le funzioni e le procedure, come le variabili, possono essere globali o definite soltanto localmente all'interno di un altro modulo. Si parla di ambito di visibilità di una variabile o di una procedura per indicare l'insieme dei moduli in cui viene riconosciuta. Le procedure e le funzioni possono lavorare su parametri; i parametri possono venire passati per valore o per indirizzo; i parametri passati per valore non vengono modificati all'esterno della procedura mentre i parametri passati per indirizzo mantengono le modifiche che sono state effettuate all'interno della procedura. Una procedura o una funzione può richiamare se stessa, in modo diretto o indiretto, permettendo di utilizzare tutta la potenza della ricorsività. Sono disponibili anche molte funzioni predefinite come la radice quadrata, le funzioni trigonometriche, logaritmiche ed esponenziali, funzioni di conversione da un tipo all'altro di dati (poiché il Pascal è molto rigoroso sui tipi di dati che si possono usare nelle espressioni) e funzioni di generazione di numeri casuali. ESEMPI Codifica in Pascal del programma di simulazione di una calcolatrice tascabile descritto in precedenza1 Program calcolatrice; 2 var RISPOSTA: char; 3 procedure operazione; 4 var A, B, C: real; 5 OPERATORE: char; 6 ERRORE: boolean; 7 procedure divisione(X, Y: real; var Z: real; var ERRORE: boolean); 8 begin 9 if Y > 0 then 10 Z := X/Y 11 else 12 ERRORE := true; 13 end; 14 begin 15 ERRORE := false; 16 write (+Inserire il primo operando +); 17 readln(A); LA GESTIONE DEI FILE IN PASCALLa gestione dei file prevede file di testo, file tipizzati o strutturati e file non tipizzati. I file di testo (text file) contengono sequenze di caratteri, organizzati per righe; ogni riga termina con un carattere di controllo (costituito da un CR/LF (carriage Return/Line Feed cioè ritorno carrello, nuova linea). I dati possono essere scritti e letti soltanto sequenzialmente; è possibile anche aggiungere dati in fondo a un file esistente aprendolo con la modalità append. Due funzioni, eof, e eol, permettono di riconoscere la fine del file o la fine di una delle righe in cui è suddiviso il file. I file tipizzati permettono di definire file con componenti di un certo tipo (per esempio file di numeri interi); definendo un file di tipo record si ottiene un file del tipo che si è abituati a trattare con gli altri linguaggi; per file di questo tipo sono possibili l'accesso sequenziale e l'accesso random per numero di record. ESEMPI Definizione in Pascal del file RUBRICA per il programma di creazione di una rubrica telefonica descritto precedentemente1 type REC_RUBRICA = 2 record 3 NOMINATIVO : string[20]; 4 INDIRIZZO : string[60]; 5 TELEFONO : string[10] 6 end; 7 FILERUBRICA = file of REC_RUBRICA; 8 var RUBRICA: FILERUBRICA;da 1 a 7 Definizione di tipo. da 1 a 6 Viene definito un tipo record chiamato REC_RUBRICA; il record è suddiviso in 3 campi alfanumerici. 7 Definizione di un tipo di file composto da record del tipo appena definito. 8 Nel programma si deve usare una variabile di un certo tipo; viene defnito il file RUBRICA di tipo FILERUBRICA. IL LINGUAGGIO COBOLIl linguaggio Cobol (COmmon Business Oriented Language) è un linguaggio compilato, orientato alla realizzazione di programmi di gestione aziendale. Fu realizzato nel 1959, su incarico del governo degli Stati Uniti. Le istruzioni standard del Cobol sono stabilite rigidamente dall'ANSI (American National Standard Institute), l'istituto nazionale americano per gli standard. Nel 1974 è stato fissato uno standard (chiamato ANSI +74) che è stato utilizzato per anni; con questo standard non si avevano a disposizione molte istruzioni per codificare gli schemi di composizione fondamentali della programmazione strutturata e spesso di doveva far ricorso all'istruzione GOTO per saltare da un punto all'altro del programma. Lo standard più recente fissato nel 1985 (chiamato ANSI +85) ha esteso le istruzioni disponibili rendendo possibile anche in Cobol la programmazione strutturata.LA STRUTTURA DEL PROGRAMMA IN COBOLIl programma in Cobol ha una struttura rigida; ogni programma è composto da quattro divisioni: l'IDENTIFICATION DIVISION, l'ENVIRONMENT DIVISION, la DATA DIVISION e la PROCEDURE DIVISION. Ogni divisione è suddivisa in sezioni e in paragrafi, predefiniti nelle prime tre divisioni, a scelta del programmatore nella procedure division; alcune sezioni e paragrafi sono obbligatori, altri sono opzionali e vanno indicati soltanto in casi particolari. I nomi a scelta del programmatore possono essere formati da lettere, cifre e dal trattino. La riga di programma ha un formato prestabilito, piuttosto rigido. E' importante anche la punteggiatura; ogni istruzione e molte altre parti del programma (nomi di divisioni, sezioni e paragrafi, definizioni di dati ecc.) devono terminare con un punto.FORMATO DELLA RIGA DI PROGRAMMA IN COBOLI primi sei caratteri possono venire utilizzati per numerare in sequenza le righe di programma, ma in genere vengono lasciati bianchi; il settimo carattere può contenere un trattino per indicare che la riga è una continuazione della riga precedente o un asterisco per indicare che si tratta di una riga di commento. I caratteri dalla posizione 8 alla 11 costituiscono l'area A, quelli dalla posizione 12 alla 73 costituiscono l'area B; in queste due zone vengono scritte le istruzioni del programma; alcune devono iniziare in area A (come i nomi di divisioni, sezioni e paragrafi), altre devono iniziare in area B (come le istruzioni della procedure division); nei caratteri da 73 a 80 può essere scritto il nome del programma, ma in genere vengono lasciati bianchi. La struttura così rigida della riga di programma deriva dal fatto che inizialmente i programmi venivano scritti sulle schede perforate, un'istruzione su ciascuna scheda; il fatto che alla fine della scheda fosse scritto il nome del programma e che tutte le schede fossero numerate permetteva di ricomporre facilmente il programma se il pacco di schede fosse caduto, sparpagliandosi.IDENTIFICATION ED ENVIRONMENT DIVISIONL'IDENTIFICATION DIVISION serve a indicare il nome del programma e varie altre informazioni di commento come l'autore del programma, la data in cui è stato scritto, la data in cui è stato compilato; deve contenere sempre almeno il paragrafo che indica il nome del programma (il paragrafo PROGRAM-ID). L'ENVIRONMENT DIVISION serve a descrivere l'ambiente in cui si realizza il programma; è suddivisa in sezioni: la CONFIGURATION SECTION serve a descrivere la macchina utilizzata per scrivere e compilare il programma, l'INPUT-OUTPUT SECTION serve a descrivere i file utilizzati dal programma. ESEMPI Inizio di qualsiasi programma Cobol.IDENTIFICATION DIVISION. PROGRAM-ID. nome-programma. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. sigla. OBJECT-COMPUTER. sigla. I DATI IN COBOLI dati in Cobol vengono defniti tutti nella DATA DIVISION; si possono usare soltanto variabili globali; cioè qualsiasi dato descritto nella data division è definito in qualsiasi punto del programma: non esistono variabili locali alle procedure. La DATA DIVISION è suddivisa in sezioni; nella WORKING-STORAGE SECTION vengono definite le variabili di lavoro, mentre nella FILE SECTION vengono descritti i tracciati record dei file utilizzati dal programma. I dati vengono descritti con un sistema di numeri di livello e di maschere chiamate anche PICTURE dal nome dell'istruzione con cui vengono indicate. Per definire le maschere si possono usare principalmente i simboli 9 per indicare ua cifra e X per indicare un carattere, ripetuti tante volte quante sono le cifre del numero da definire o i caratteri della stringa. Altri simboli permettono di indicare i numeri con la virgola e con il segno, ma le maschere si differenziano per i dati usati nell'input o nei calcoli e per i dati usati nell'output; per usare un dato numerico all'interno del programma e poi stamparlo secondo un formato prestabilito bisogna quindi definire due variabili, una che utilizzi soltanto i simboli 9, S per il segno e V per la virgola, e uno con i simboli (chiamati di editing) per la formattazione in output (per esempio i simboli + e - per il segno, il punto e la virgola per i separatori della parte frazionaria e dei gruppi di migliaia, la Z per indicare che gli zeri non significativi devono essere soppressi ecc.). I numeri di livello permettono di definire variabili semplici e strutturate; le variabili semplici iniziano con il numero di livello 77, le variabili strutturate con il numero di livello 01. Come variabili strutturate è possibile definire soltanto vettori e matrici (che in questo linguaggio vengono chiamati tabelle) e record (chiamati anche campi di gruppo). Molto potente invece è la gestione dei file che offre file ad organizzazione sequenziale, ad organizzazione indexed e ad organizzazione relative. ESEMPI Alcune definizioni di dati in Cobol.DATA DIVISION. 1 WORKING-STORAGE SECTION. 2 77 PAROLA PICTURE X(10). 3 77 NUMERO PIC IS 9(3) VALUE IS 0. 4 77 NUMERO-SEGNO PIC IS S999 SIGN IS LEADING. 5 77 NUMERO-SEGNO-STAMPA PIC IS +ZZ9. 6 01 DATA. 7 02 GIORNO PIC 99. 8 02 MESE PIC 99. 9 02 ANNO PIC 99.1 Nella WORKING-STORAGE SECTION sono definite le variabili di lavoro del programma. 2 Definizione di una variabile alfanumerica; la variabile PAROLA può contenere fino a 10 caratteri; il numero tra parentesi indica il numero di ripetizioni del simbolo X, ma si può scrivere anche XXXXXXXXXX. 3 Definizione di una variabile numerica; la parola PICTURE può essere abbreviata in PIC; la variabile NUMERO può contenere un numero di 3 cifre al massimo; il numero tra parentesi indica il numero di ripetizioni del simbolo 9, ma si poteva scrivere anche 999. La frase VALUE IS permette di assegnare un valore alla variabile al momento della definizione. 4 Definizione di una variabile numerica; la variabile NUMERO-SEGNO può contenere un numero di 3 cifre positivo o negativo; la frase SIGN IS LEADING indica che il segno va posto davanti al numero (si può indicare anche il formato opposto, con il segno in coda). 5 Definizione di una variabile editata, cioè una variabile da utilizzare per la stampa; la variabile NUMERO-SEGNO-STAMPA potrebbe essere utilizzata per stampare il contenuto della variabile NUMERO-SEGNO; il simbolo + indica che deve sempre essere stampato il segno, i due simboli Z indicano che se ci sono degli zeri non significativi non devono essere stampati; l'ultimo simbolo 9 indica che se il numero è 0 deve essere stampata comunque una cifra. 6 Definizione di un campo di gruppo contenente la data; il campo è sottodefnito in tre campi numerici di due cifre ciascuno; quindi la variabile DATA è formata da 6 caratteri (e non è un campo numerico bensì alfanumerico); nel programma si può far riferimento sia al campo di gruppo che ai suoi sottocampi. LE ISTRUZIONI IN COBOLLe istruzioni del programma vengono scritte nella PROCEDURE DIVISION e possono essere raggruppate in sezioni o paragrafi. Esistono istruzioni specifiche anche per l'assegnazione (istruzione MOVE), per il calcolo di una espressione (istruzione COMPUTE) e per l'esecuzione delle operazioni aritmetiche (istruzioni ADD, SUBTRACT, MULTIPLY e DIVIDE). Le istruzioni per l'input/output sono ACCEPT per la lettura e DISPLAY per la scrittura. Le istruzioni di controllo non sono molto sviluppate; esiste l'istruzione IF/ELSE per la codifica della struttura condizionale e l'istruzione PERFORM, in vari formati per la codifica di tutti i tipi di ripetizione e per il richiamo delle procedure. Una procedura è costituita semplicemente da un paragrafo; non è possibile fare nessuna definizione locale alla procedura; una procedura è quindi soltanto un raggruppamento di istruzioni che si possono richiamare in altri punti. Le procedure vanno definite dopo il programma principale e non possono richiamare se stesse, non sono cioè ammesse le chiamate ricorsive. ESEMPI Codifica in Cobol del programma di simulazione di un registratore di cassa descritto in precedenza1 IDENTIFICATION DIVISION. 2 PROGRAM-ID. REGCASSA. 3 ENVIRONMENT DIVISION. 4 CONFIGURATION SECTION. 5 SOURCE-COMPUTER. 486-IBM. 6 OBJECT-COMPUTER. 486-IBM. 7 SPECIAL-NAMES. 8 DECIMAL-POINT IS COMMA. 9 DATA DIVISION. 10 WORKING-STORAGE SECTION. 11 77 NUMERO-PEZZI PIC 99. 12 77 COSTO PIC 9(6). 13 77 PREZZO-UNITARIO PIC 9(5). 14 77 COSTO-TOTALE PIC 9(7). 15 77 STAMPA-COSTO-TOTALE PIC ZZ.ZZZ.ZZ9. 16 77 RISPOSTA PIC X VALUE IS +S'. 17 77 CASSA PIC 9(10). 18 77 STAMPA-CASSA PIC Z.ZZZ.ZZZ.ZZZ. 19 PROCEDURE DIVISION. 20 INIZIO. 21 DISPLAY +Inserire la somma iniziale presente in cassa'. 22 ACCEPT CASSA. 23 DISPLAY +Ci sono altri clienti? (S/N)'. 24 ACCEPT RISPOSTA. 25 PERFORM UNTIL RISPOSTA = +N' 26 PERFORM GESTIONE-CLIENTE THRU EX-GESTIONE- CLIENTE 27 DISPLAY +Ci sono altri clienti? (S/N)' 28 ACCEPT RISPOSTA 29 END-PERFORM. 30 MOVE CASSA TO STAMPA-CASSA. 31 DISPLAY +La somma finale presente in cassa è' +STAMPA-CASSA. 32 STOP RUN. 33 GESTIONE-CLIENTE. 34 MOVE 0 TO COSTO-TOTALE. 35 DISPLAY +Inserire il numero di pezzì. 36 ACCEPT NUMERO-PEZZI. 37 PERFORM UNTIL NUMERO-PEZZI NOT = 0 38 PERFORM GESTIONE-PRODOTTO THRU EX- GESTIONE-PRODOTTO 39 DISPLAY +Inserire il numero di pezzì 40 ACCEPT NUMERO-PEZZI 41 END-PERFORM. 42 MOVE COSTO-TOTALE TO STAMPA-COSTO-TOTALE. 43 DISPLAY +Il cliente paga L. + STAMPA-COSTO- TOTALE. 44 ADD COSTO-TOTALE TO CASSA. 45 EX-GESTIONE-CLIENTE. 46 EXIT. 47 GESTIONE-PRODOTTO. 48 DISPLAY +Inserire il prezzo di un pezzò. 49 ACCEPT PREZZO-UNITARIO. 50 COMPUTE COSTO = NUMERO-PEZZI * PREZZO- UNITARIO. 51 ADD COSTO TO COSTO-TOTALE. 52 EX-GESTIONE-PRODOTTO. 53 EXIT.da 1 a 6 Righe di intestazione del programma. 7-8 Il paragrafo SPECIAL-NAMES nella CONFIGURATION SECTION permette di scambiare l'uso del punto e della virgola nel formato dei numeri; se non si indica nulla il punto viene usato come separatore della parte frazionaria e la virgola come separatore dei gruppi di migliaia, come nella notazione anglosassone; inserendo la frase DECIMAL-POINT IS COMMA si può usare il punto come separatore delle migliaia. da 9 a 18 Definizione delle variabili di lavoro. 19 Inizio della PROCEDURE DIVISION. 20 La PROCEDURE DIVISION inizia con un nome di paragrafo a scelta del programmatore; i nomi di paragrafo iniziano in area A, tutte le istruzioni iniziano in area B. 21 Emissione di un messaggio con l'istruzione DISPLAY. 22 Lettura di una variabile con l'istruzione ACCEPT. da 25 a 29 Codifica di un ciclo WHILE; l'uscita dal ciclo si verifica quando la condizione è vera; questo formato dell'istruzione PERFORM è standard +85. 26 Richiamo della procedura GESTIONE-CLIENTE. 30 Assegnazione del valore della variabile CASSA alla variabile STAMPA-CASSA con l'istruzione MOVE. 31 Stampa della variabile STAMPA-CASSA; per l'output viene usata la variabile editata che stampa il numero con i separatori delle migliaia e trascurando gli zeri non significativi. 32 L'istruzione STOP RUN indica la fine del programma; qui finisce il programma principale. da 33 a 46 Definizione della procedura GESTIONE-CLIENTE. La procedura inizia con un nome di paragrafo. 44 Somma del valore COSTO-TOTALE alla variabile CASSA (non si potrebbe usare STAMPA-CASSA perché una variabile editata non viene più considerata numerica e non può essere usata in operazioni aritmetiche. 45-46 Queste istruzioni non sono indispensabili ma servono a indicare dove finisce la procedura GESTIONE-CLIENTE; il paragrafo potrebbe avere un altro nome e serve perché l'istruzione EXIT che indica il rientro al modulo chiamante deve essere l'unica istruzione in un paragrafo. da 47 a 53 Definizione della procedura GESTIONE-PRODOTTO. 50 L'istruzione COMPUTE permette di specificare qualsiasi espressione numerica. LA GESTIONE DEI FILE IN COBOLIn un programma Cobol si possono utilizzare file ad organizzazione sequenziale, ad organizzazione indexed e ad organizzazione relative. Ogni file va descritto con una istruzione SELECT nel paragrafo FILE-CONTROL della INPUT-OUTPUT SECTION nella ENVIRONMENT DIVISION. L'istruzione SELECT permette di specificare il dispositivo a cui è associato il file (può essere il nastro o il disco oppure la stampante per i file di stampa), il tipo di organizzazione del file e il tipo di accesso utilizzato nel programma; se il file è ad organizzazione indexed deve essere indicato anche il campo chiave, mentre se è ad organizzazione relative va indicata la variabile utilizzata per gestire il numero di record. Il tracciato record del file viene descritto nella FILE SECTION della DATA DIVISION con l'istruzione FD (File description). Il nome dato ai file nel programma è un nome logico; bisogna realizzare un collegamento con il nome fisico che il file ha su disco; il collegamento può essere realizzato in modi differenti in versioni diverse del linguaggio, ma un modo molto comune è quello di utilizzare la frase VALUE OF FILE-ID IS +nomefile' nella File Description del file. ESEMPI Codifica in Cobol del programma di creazione di una rubrica telefonica descritto precedentemente1 IDENTIFICATION DIVISION. 2 PROGRAM-ID. RUBRICA 3 ENVIRONMENT DIVISION. 4 CONFIGURATION SECTION. 5 SOURCE-COMPUTER. 486-IBM. 6 OBJECT-COMPUTER. 486-IBM. 7 INPUT-OUTPUT SECTION. 8 FILE-CONTROL. 9 SELECT RUBRICA ASSIGN TO DISK 10 ORGANIZATION IS SEQUENTIAL 11 ACCESS MODE IS SEQUENTIAL. 12 DATA DIVISION. 13 FILE SECTION. 14 FD RUBRICA 15 LABEL RECORD IS STANDARD 16 VALUE OF FILE-ID IS +RUBRICA.DAT'. 17 01 REC-RUBRICA. 18 02 NOMINATIVO PIC X(20). 19 02 INDIRIZZO PIC X(60). 20 02 TELEFONO PIC X(10). 21 WORKING-STORAGE SECTION. 22 77 RISPOSTA PIC X. 23 PROCEDURE DIVISION. 24 INIZIO. 25 OPEN OUTPUT RUBRICA. 26 DISPLAY +Ci sono dati da inserire?'. 27 ACCEPT RISPOSTA. 28 PERFORM UNTIL RISPOSTA NOT= +S' 29 DISPLAY +Inserire nome e cognomè 30 ACCEPT NOMINATIVO 31 DISPLAY +Inserire l''indirizzò 32 ACCEPT INDIRIZZO 33 DISPLAY +Inserire il numero di telefono' 34 ACCEPT TELEFONO 35 WRITE REC-RUBRICA 36 DISPLAY +Ci sono ancora dati da inserire?' 37 ACCEPT RISPOSTA 38 END-PERFORM. 39 CLOSE RUBRICA. 40 STOP RUN.7-8 Nel paragrafo FILE-CONTROL della INPUT-OUTPUT SECTION vengono indicati i file utilizzati dal programma. da 9 a 11 Istruzione SELECT per la definizione di un file; il file è un file di dati associato al disco; l'organizzazione è sequenziale e l'accesso è sequenziale (l'unico possibile per i file sequenziali); si sarebbe potuto fare a meno di indicare il tipo di organizzazione e di accesso dato che se non viene specificato nulla il file viene considerato sequenziale per default. 13 Nella FILE SECTION viene descritto il tracciato record dei file. da 14 a 16 Istruzione FILE DESCRIPTION per il file RUBRICA; viene specificato che l'etichetta del file è standard e viene realizzato il collegamento tra il nome logico del file RUBRICA utilizzato nel programma e il nome fisico del file RUBRICA.DAT utilizzato su disco. da 17 a 20 Tracciato record del file RUBRICA; il record è composto da tre campi alfanumerici rispettivamente di 20, 60 e 10 caratteri. Il nome del record viene definito col numero di livello 01; i campi del record con numeri di livello a partire da 02 (potrebbero esserci campi suddivisi in sottocampi). 21 Nella WORKING-STORAGE SECTION vengono descritte le variabili di lavoro. 23 Inizio della PROCEDURE DIVISION. 25 Apertura in output del file RUBRICA per la registrazione dei dati; se il file esiste già i dati contenuti vengono cancellati; per continuare ad aggiungere dati ad un file già esistente bisogna aprirlo con la modalità extend. da 28 a 38 Ciclo per l'inserimento dei dati. da 29 a 34 Richiesta ed inserimento dei dati di una persona. 35 Registrazione dei dati di una persona (contenuti nel record REC-RUBRICA) nel file. 39 Chiusura del file RUBRICA. I FILE DI STAMPAI file sequenziali vengono utilizzati anche per definire il formato delle righe di stampa per gli output sulla stampante. Alla stampante viene associato un file sequenziale e le istruzioni di scrittura sul file corrispondono ad uscite sulla stampante. Il tracciato della riga di stampa coincide con il tracciato record del file di stampa. Naturalmente una stampa può essere composta da righe di formato diverso e quindi si possono definire più tracciati record diversi all'interno del file da usare in alternativa. ESEMPI Codifica in Cobol del programma di stampa di una rubrica telefonica descritto precedentemente.1 IDENTIFICATION DIVISION. 2 PROGRAM-ID. RUBRICA 3 ENVIRONMENT DIVISION. 4 CONFIGURATION SECTION. 5 SOURCE-COMPUTER. 486-IBM. 6 OBJECT-COMPUTER. 486-IBM. 7 INPUT-OUTPUT SECTION. 8 FILE-CONTROL. 9 SELECT RUBRICA ASSIGN TO DISK 10 ORGANIZATION IS SEQUENTIAL 11 ACCESS MODE IS SEQUENTIAL. 12 SELECT STAMPA ASSIGN TO PRINTER. 13 DATA DIVISION. 14 FILE SECTION. 15 FD RUBRICA 16 LABEL RECORD IS STANDARD 17 VALUE OF FILE-ID IS +RUBRICA.DAT'. 18 01 REC-RUBRICA. 19 02 NOMINATIVO PIC X(20). 20 02 INDIRIZZO PIC X(60). 21 02 TELEFONO PIC X(10). 22 FD STAMPA 23 LABEL RECORD IS OMITTED. 24 01 REC-STAMPA. 25 02 ST-NOMINATIVO PIC X(20). 26 02 FILLER PIC X(2). 27 02 ST-INDIRIZZO PIC X(60). 28 02 FILLER PIC X(2). 29 02 ST-TELEFONO PIC X(10). 30 WORKING-STORAGE SECTION. 31 77 FINE-FILE PIC 9 VALUE IS 0. 32 PROCEDURE DIVISION. 33 INIZIO. 34 OPEN INPUT RUBRICA. 35 OPEN OUTPUT STAMPA. 36 READ PRODOTTI AT END MOVE 1 TO FINE-FILE. 37 PERFORM UNTIL FINE-FILE = 1 38 MOVE SPACE TO REC-STAMPA 39 MOVE NOMINATIVO TO ST-NOMINATIVO 40 MOVE INDIRIZZO TO ST-INDIRIZZO 41 MOVE TELEFONO TO ST-TELEFONO 42 WRITE REC-STAMPA 43 READ PRODOTTI AT END MOVE 1 TO FINE-FILE 44 END-PERFORM. 45 CLOSE RUBRICA. 46 CLOSE STAMPA. 47 STOP RUN.da 7 a 12 Definizione dei file utilizzati dal programma. da 9 a 11 Il file RUBRICA è il file sequenziale su disco contenente i dati della rubrica. 12 Il file STAMPA non è un file fisico; viene utilizzato per predisporre la stampa dei dati sulla stampante (PRINTER). da 15 a 21 Descrizione del file RUBRICA. da 22 a 29 Descrizione del file utilizzato per la stampa. 23 Per i file di stampa l'etichetta è omitted (cioè non c'è). da 25 a 29 Tracciato record del file di stampa; nel tracciato record viene descritto il formato della riga che si desidera stampare. Nel record sono indicati i campi corrispondenti ai dati da stampare e dei campi chiamati FILLER destinati a contenere delle spaziature tra i campi. Il nome FILLER può essere dato a qualsiasi campo a cui non si faccia riferimento nel corso del programma in modo da evitare di dover definire molti nomi diversi e inutili. 31 La variabile FINE-FILE numerica viene utilizzata come una variabile booleana per segnalare la fine del file; inizialmente viene posta a zero che significa che il file non è finito. 34 Apertura del file RUBRICA in input per la lettura dei dati. 35 Apertura del file STAMPA in output per la stampa dei dati. 36 Lettura di un record dal file RUBRICA; se il file è finito vengono eseguite le istruzioni poste dopo la frase AT END cioè viene impostata a 1 la variabile FINE-FILE; la fine del file viene riconosciuta dopo l'operazione di lettura, cioè quando si cerca di leggere un record successivo all'ultimo. da 37 a 44 Ciclo di stampa dei dati. 38 Il record REC-STAMPA viene riempito di spazi. da 39 a 41 Trasferimento dei dati dai campi del record del file RUBRICA ai campi del record del file di stampa. 42 Scrittura del record REC-STAMPA; ogni volta che viene eseguita questa istruzione viene stampata una riga sulla stampante. 45-46 Chiusura dei file RUBRICA e STAMPA. IL LINGUAGGIO PROLOGIl PROLOG è un linguaggio logico molto usato in applicazioni di intelligenza artificiale. Utilizzare un linguaggio logico significa che per risolvere un problema bisogna soltanto descrivere la logica della soluzione e non il procedimento che bisogna seguire per arrivarci. Un programma è composto da fatti e regole. Un fatto è un'affermazione sempre vera (per esempio Marco è il padre di Giulia, o Anna è la madre di Giulia); una regola è una legge che permette di trarre una conclusione a partire da fatti noti (per esempio una persona è nonna di Giulia se è madre di Marco o madre di Anna). Le regole possono essere composte da più definizioni alternative e possono essere definite in modo ricorsivo. L'interprete del Prolog lavora sul database composto da fatti e regole per rispondere ad una domanda (del tipo: chi sono le nonne di Giulia?). In Prolog non esiste l'operazione di assegnazione di un valore ad una variabile; le variabili assumono un valore per effetto di un processo di confronto tra la forma della domanda e la forma con cui sono definiti fatti e regole (chiamato processo di unificazione). ESEMPI Un semplice programma in Prolog che permette di verificare se un dato appartiene a una lista; la lista è rappresentata tra parentesi quadre; la barra separa il primo elemento della lista (X nella prima riga) dal resto della lista (Y nella prima riga). Ogni riga viene chiamata clausola e le due clausole definiscono una relazione (la relazione di appartenenza); la relazione è definita in modo ricorsivo; infatti la seconda clausola è definita in base a se stessa. appartiene(X, [X|Y]). appartiene(X, [Z|Y]):_ appartiene(X, Y). La relazione ha questo significato: un elemento X appartiene a una lista se è il primo elemento della lista; oppure un elemento X appartiene a una lista se appartiene al resto della lista. L'esecuzione comincia con una richiesta chiamata goal; per esempio: ?- appartiene(b, [a, b, c, d, e]) verifica se l'elemento b appartiene alla lista di elementi specificata. Ma la stessa relazione può essere utilizzata anche per generare gli elementi comuni a due liste, per esempio con la richiesta: ?- appartiene(X, [a, b, c, d, e, f]), appartiene (X, [h, b, l, m, e])ALTRI LINGUAGGI DI PROGRAMMAZIONEAltri noti linguaggi di programmazione sono: - Il FORTAN (FORmula TRAnslator system, o sistema traduttore di formule) è un linguaggio compilato nato tra il 1953 e il 1954; è uno dei linguaggi più vecchi e il più usato per problemi di tipo scientifico. - L'ALGOL (ALGOrithmic Language, o linguaggio algoritmico) è un linguaggio a carattere generale, cioè sviluppato per descrivere qualsiasi tipo di algoritmo, definito teoricamente nel 1958 (senza considerare le operazioni di lettura e scrittura dei dati) ma realizzato in pratica soltanto successivamente (ALGOL 60 e ALGOL 68). - L'APL (A Programming Language, o un linguaggio di programmazione) sviluppato da Kenneth E. Iverson nel 1960 (anche se le implementazioni pratiche risalgono soltanto a dopo il '64). E' un linguaggio, basato su notazioni matematiche, sviluppato per trattare in modo semplice vettori e matrici. - Il LOGO è un linguaggio utilizzato ampiamente nella didattica, sviluppato nei laboratori del MIT (Massachussets Institute) nel 1967 da Seymur Papert. I comandi sono molto semplici e intuitivi, adatti anche a bambini piccoli; particolare importanza riveste l'idea della "tartaruga grafica", un triangolo che si muove sullo schermo in base ai comandi impartiti e può essere usato per l'apprendimento dei concetti fondamentali della geometria. - Il LISP (LISt Processor o elaboratore di liste) ideato da John McCartthy nel 1958 è un linguaggio interpretato nato come metodo per manipolare espressioni simboliche. E' uno dei linguaggi più utilizzati per sviluppare applicazioni di intelligenza artificiale. Esistono macchine realizzate appositamente per facilitare l'esecuzione di programmi in Lisp (Lisp machine). Il LISP è un linguaggio funzionale: esistono alcune funzioni primitive e ogni istruzione deve essere definita costruendo nuove funzioni. - Il C, sviluppato presso i Bell laboratories da Dennis Ritchie nel 1972, è un linguaggio che pur essendo ad alto livello permette anche operazioni a basso livello come il linguaggio macchina; per questo il C viene utilizzato moltissimo soprattutto per sviluppare software di base; per esempio il sistema operativo Unix è realizzato in C. ESEMPI Programma in Logo per ottenere il disegno di un rettangolo. Le istruzioni del programma guidano la "tartaruga" nell'esecuzione del disegno.1 TO RETTANGOLO 2 PENUP ; 3 HOME ; 4 RIGHT 90 ; 5 FORWARD 40 ; 6 RIGHT 90 ; 7 FORWARD 20 ; 8 PENDOWN ; 9 FORWARD 75 ; 10 RIGHT 90 ; 11 FORWARD 50 ; 12 RIGHT 90 ; 13 FORWARD 75 ; 14 RIGHT 90 ; 15 FORWARD 50 ; 16 HIDETURTLE ; 17 END1 Programma per il disegno di un rettangolo. 2 L'istruzione significa alza la penna e fa in modo che la tartaruga non scriva mentre si sposta. 3 La tartaruga deve tornare a casa al centro del video. 4 Rotazione verso destra di 90 gradi. 5 Spostamento di 40 pixel nella direzione in cui si trova la tartaruga (verso destra) per raggiungere la posizione in cui si desidera iniziare il disegno. 6 Rotazione verso destra di 90 gradi (la tartaruga guarda verso il basso). 7 Spostamento di 20 pixel nella direzione in cui si trova la tartaruga (verso il basso) per raggiungere la posizione in cui si desidera iniziare il disegno. 8 L'istruzione significa "abbassa la penna" e fa in modo che nei successivi spostamenti della tartaruga venga lasciata una traccia sul video. 9 Vengono disegnati 75 pixel durante l'avanzamanto della tartaruga verso il basso, disegnando il primo lato del rettangolo. 10 Rotazione verso destra di 90 gradi; la tartaruga guarda verso sinistra. 11 Vengono disegnati 50 pixel durante l'avanzamento della tartaruga verso sinistra, disegnando il secondo lato del rettangolo. 12 Rotazione verso destra di 90 gradi; la tartaruga guarda verso l'alto. 13 Vengono disegnati 75 pixel durante l'avanzamento della tartaruga verso l'alto, disegnando il terzo lato del rettangolo. 14 Rotazione verso destra di 90 gradi; la tartaruga guarda verso destra. 15 Vengono disegnati 50 pixel durante l'avanzamento della tartaruga verso destra, disegnando l'ultimo lato del rettangolo. 16 Viene nascosta la tartaruga lasciando sul video il rettangolo disegnato. 17 Fine del programma. ![]() |
|
Ai sensi dell'art. 5 della legge 22 aprile 1941 n. 633 sulla protezione del diritto d'autore, i testi degli atti ufficiali dello Stato e delle amministrazioni pubbliche, italiane o straniere, non sono coperti da diritti d'autore. Il copyright, ove indicato, si riferisce all'elaborazione e alla forma di presentazione dei testi stessi. L'inserimento di dati personali, commerciali, collegamenti (link) a domini o pagine web personali, nel contesto delle Yellow Pages Trapaninfo.it (TpsGuide), deve essere liberamente richiesto dai rispettivi proprietari. In questa pagina, oltre ai link autorizzati, vengono inseriti solo gli indirizzi dei siti, recensiti dal WebMaster, dei quali i proprietari non hanno richiesto l'inserimento in trapaninfo.it. Il WebMaster, in osservanza delle leggi inerenti i diritti d'autore e le norme che regolano la proprietà industriale ed intellettuale, non effettua collegamenti in surface deep o frame link ai siti recensiti, senza la dovuta autorizzazione. Framing e Deep Link: che cosa è lecito - Avvocato Gabriele FAGGIOLI. Il webmaster, proprietario e gestore dello spazio web nel quale viene mostrata questa URL, non è responsabile dei siti collegati in questa pagina. Le immagini, le foto e i logos mostrati appartengono ai legittimi proprietari. La legge sulla privacy, la legge sui diritti d'autore, le regole del Galateo della Rete (Netiquette), le norme a protezione della proprietà industriale ed intellettuale, limitano il contenuto delle Yellow Pages Trapaninfo.it Portale Provider Web Brochure e Silloge del web inerente Trapani e la sua provincia, ai soli dati di utenti che ne hanno liberamente richiesto l'inserimento. Chiunque, vanti diritti o rileva che le anzidette regole siano state violate, può contattare il WebMaster. Note legali trapaninfo.it contiene collegamenti a siti controllati da soggetti diversi i siti ai quali ci si può collegare non sono sotto il controllo di trapaninfo.it che non è responsabile dei loro contenuti. trapaninfo.it |