21
A

A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

A

Page 2: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …
Page 3: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Pierpaolo Palka

Storia di Fotorad

Realizzazione di una piattaformagrafica proprietaria

Prefazione diCarmine D’Ottavio

Page 4: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Copyright © MMXIIARACNE editrice S.r.l.

[email protected]

via Raffaele Garofalo, /A–B Roma()

----

I diritti di traduzione, di memorizzazione elettronica,di riproduzione e di adattamento anche parziale,

con qualsiasi mezzo, sono riservati per tutti i Paesi.

Non sono assolutamente consentite le fotocopiesenza il permesso scritto dell’Editore.

I edizione: giugno

Page 5: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Indice

Prefazionedi Carmine D’Ottavio

Introduzione

Capitolo II linguaggi di programmazione

.. Come viene usato lo strumento di programmazione nel-le scuole, – .. Ricerca di un dato in una rubrica o in unprogramma di disegno automatico, .

Capitolo IIAlgoritmi di ricerca

.. Data–Base anagrafici sequenziali. Algoritmo in pseudo codi-ce, – .. Data–Base sequenziali per entità grafiche. Algoritmoin pseudo codice, .

Capitolo IIICattura del punto

Capitolo IVUn po’ di storia

Capitolo VPremessa

Capitolo VIIdeazione ed evoluzione di Fotorad

Page 6: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Indice

Esperienze di User Interface Designdi Emilio Rossi

. Le interfacce grafiche, – . Il ruolo del progettista nella pro-grammazione delle interfacce, – . Caratteristiche delle inter-facce grafiche, – . L’importanza delle interfacce grafiche neldisegno vettoriale, – . Elementi distintivi delle interfacce gra-fiche per il disegno vettoriale, – . Il progetto dell’interfacciagrafica per il software Fotorad, – . Conclusioni, .

Page 7: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Prefazione

Le esperienze maturate dall’uomo nelle varie attività lavorativemeritano sempre di essere conosciute e, qualche volta, ancherielaborate, per divenire fonte di progresso e miglioramento nelmondo attuale. Non è pensabile che a questa “legge” sfugga lanostra attività di ricerca universitaria che ha proprio il compitodi perfezionare i contenuti delle discipline di sua competenza ele relative metodologie.

Da vari anni nella nostra università si sta lavorando intornoad un progetto di ricerca scientifica nel campo dell’informaticai cui risultati sono stati applicati sia al tema del rilievo archi-tettonico e sia al campo della gestione di dati territoriali conla realizzazione di due software: Fotorad e Fotorad Gis al finedi rendere più facile o possibile un’operazione necessaria peropere di ristrutturazione di un manufatto considerando an-che le problematiche inerenti un suo inserimento nel contestoterritoriale.

È doveroso rilevare che la ricerca è durata molti anni, sia informa teorica sia nella sperimentazione pratica, con risultati, anostro avviso, molto buoni ed ottenuti con il contributo deglistudi professionali privati e la collaborazione degli studentidel corso di matematica ed informatica tenuti nella facoltà diarchitettura di Pescara.

Da quanto si può dedurre dalla lettura del presente pam-phlet, nel corso degli anni a seguire, i passaggi sono stati molte-plici e sono divenuti componenti organici del nostro software,che è stato immesso nel vasto mercato dei programmi. Esso hala peculiarità di poter essere implementato con funzioni specifi-

Page 8: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Prefazione

che studiate per la risoluzione delle problematiche tipiche delnostro territorio nazionale ed in particolare di quelle riferiteai nostri centri storici minori localizzati in contesti ambientalimolto tipici.

C D’O

Page 9: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Introduzione

Da anni nel laboratorio informatico LABINF, sotto la guida delresponsabile scientifico Prof. Pierpaolo Palka, si porta avantila ricerca in merito alla realizzazione di una piattaforma gra-fica proprietaria la cui realizzazione inevitabilmente richiedela conoscenza approfondita degli algoritmi generali che necostituiscono la base fondamentale e la capacità di scriverli.

La motivazione più importante per l’ideazione e realizza-zione di tale piattaforma è l’avere a disposizione uno “spazio”operativo ove poter inserire e sperimentare algoritmi finalizzatial disegno automatico. Questa ricerca ci ha aperto un orizzontea noi ignoto in cui da tempo hanno lavorato e continuano alavorare altri ricercatori.

Prima di entrare nel pieno merito della questione tematicaè doveroso chiarire, innanzi tutto, il significato specifico dei varitermini che di volta in volta verranno impiegati, al fine di evitareequivoci e per rendere espliciti i concetti che ci interessano.

Cominciamo, quindi con il chiederci: Cosa intendiamo perpiattaforma grafica?

Nel nostro caso, per piattaforma grafica si intende un soft-ware che possegga gli strumenti necessari a compiere azioninel campo della computer–grafica,con l’implementazione gra-duale di algoritmi studiati e realizzati da noi stessi senza lanecessità di dover ricorrere a librerie di terze parti.

Ma di quali azioni stiamo parlando?In generale sono azioni che permettono interventi di dise-

gno, cancellazione, recupero, duplicazione, spostamento, etc,azioni comuni a software adibiti a funzioni differenti come

Page 10: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Introduzione

programmi di scrittura, programmi database per archiviazionedati, programmi di disegno automatico; addirittura lo stessosistema operativo possiede comandi comuni come: cancella,ripristina, salva col nome, copia, cattura, etc. per compiere delleazioni.

Le evoluzioni in questo campo specifico sono state notevolied il nostro sforzo è quello di cercare di conoscere questo ar-gomento in modo più approfondito con i suoi aspetti teoricie pratico–operativi che sono alla base della realizzazione deisoftware. Senza dubbio, in questo lavoro non è pensabile pre-scindere dal prendere come punto di riferimento e di partenzail percorso storico dettagliato, fin qui scoperto dalla ricerca incampo grafico–matematico e già esistente.

È evidente che occorrono particolari strumenti d’ausilio, chesono poi i linguaggi di programmazione, per poter realizzareprogrammi con i quali operare sul computer.

Ad esempio quando era in essere ancora il DOS, comesistema operativo, all’accensione del p.c. veniva visualizzatouno schermo nero con una freccia chiamata PROMPT deicomandi, ed era possibile, tramite tastiera, impartire al p.c.comandi con cui l’utente poteva far girare programmi eseguitiappositamente compilati adibiti a diverse funzioni come quelledi scrittura, di disegno, etc.

Figura .

Page 11: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Introduzione

Sin dall’inizio dell’uso del pc. erano e sono due le catego-rie di utenti: la prima, composta prevalentemente da esperticonoscitori dei programmi, che si chiedevano, ed ancora sichiedono quanti e quali tipi di comandi possiede un softwareal fine di un utilizzo completo del programma.

E la seconda composta da studiosi che si chiedevano e sichiedono come vengono realizzati tali software ponendosi allaricerca del tipo di linguaggio di programmazione più idoneoper poter realizzare un software. Tra questi ultimi ci siamoinseriti noi con la nascita del laboratorio LABINF.

Page 12: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …
Page 13: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Capitolo I

I linguaggi di programmazione

Il nostro scopo finale del presente studio non è quello di ana-lizzare nei dettagli i vari tipi di linguaggio di programmazioneesistenti, quanto, piuttosto occuparci dell’uso, più ampio pos-sibile, di uno dei linguaggi di programmazione che può esse-re definito come compromesso tra facilità d’uso e la potenzaintrinseca. Parliamo infatti del linguaggio Pascal.

Il linguaggio Pascal nasce nel / e pubblicato nel daNiklaus Wirth come un semplice compilatore per programmi strut-turati. Un suo noto derivato è l’Object Pascal compilatore orientatoalla programmazione ad oggetti.

Ancora oggi è diffuso presso le scuole superiori ad indirizzoscientifico. Noi, però, ci riferiremo ad una sua evoluzione checon l’avvento di Windows (Sistema Operativo Ad Icone) prendeil nome di Delphi.

Il nuovo sistema operativo Windows ha portato un cambia-mento anche in altri linguaggi di programmazione già noti.Infatti il famoso linguaggio di programmazione BASIC si èevoluto in Visual–Basic ed il programma C, il più potente pereccellenza, ma nello stesso tempo il più farraginoso nell’uso, siè evoluto nel Visual C++.

.. Come viene usato lo strumento di programmazionenelle scuole

Se analizziamo un qualsiasi programma scolastico curricularedi informatica, da sviluppare nel corso di un quinquennio delle

Page 14: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Storia di Fotorad

scuole superiori, scopriamo che i testi adottati a supporto dellevarie lezioni tenute dai docenti sono fatti bene e che i percorsididattici oltre ad essere dedicati alla conoscenza della multime-dialità in genere, o a programmi di video scrittura, sono ricchidi informazioni relative proprio ai linguaggi di programmazio-ne e in particolare al linguaggio Pascal, nato proprio per scopididattici.

Tali testi non solo approfondiscono l’argomento inerente lascrittura di procedure o funzioni con introduzioni di variabilianche di tipo complesso, ma suggeriscono algoritmi completi,quali elementi base, per la manipolazione di dati generici.

Ne è un esempio l’algoritmo relativo alla registrazione diinformazioni che si avvale dell’uso di array (vettore) monodi-mensionali, bidimensionali o tridimensionali.

Tramite l’uso di uno o più indici è possibile associare ad ununico elemento array più informazioni. Ad esempio assegnatoun array monodimensionale “a” (generico)ed un indice “i”(progressivo intero) è possibile assegnare ad “a” una serie dinomi al variare di “i” in modo progressivo:

a[i] = Nome con “i” che va da . . . a N con N appartenente allaclasse dei numeri naturali.a[] = Annaa[] = Marioa[] = Maria. . . . . . . . . . . . . . .a[n] = Giovanni

Notiamo in tal modo come sia possibile creare una speciedi archivio in cui immagazzinare qualsiasi tipo di informazione.Nel nostro caso nomi di persone.

Resta evidente che un archivio di tal genere al variare di“n” può registrare una gran mole di informazioni in modotemporaneo sulla cosiddetta RAM (Random Access Memory)che è in funzione della potenza di memoria del computer sucui sono impiegati.

Page 15: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

. I linguaggi di programmazione

In questa sede non vogliamo entrare nel particolare inerentela conservazione e registrazione permanente su un supportodi memoria di massa dei dati incamerati in un array, essendotale problema di semplice soluzione.

Vogliamo invece proseguire con il mostrare l’utilità dell’algoritmo di recupero di un dato al fine di ottenere una gestioneefficiente di una banca–dati inerente l’argomento trattato.

Di conseguenza sorge spontanea la domanda sui comandifondamentali per la gestione di dati archiviati tramite array eper avere la relativa risposta occorrerà, ad esempio, introdurreun algoritmo di ricerca dati, o un algoritmo di ordinamentoalfabetico o d’altro tipo, come quello di cancellazione di un datoo l’inserimento di un dato nuovo all’interno dell’archivio stesso.Come già detto gli algoritmi citati sono facilmente reperibili suqualsiasi testo scolastico di informatica:

procedure TPlkStrumenti.OrdinaSel;var

skip,ski,i,j: Integer;Temp: TNomi;InOrder: Boolean;

beginSetLength(temp,length(GruppoNomi));skip:=;ski:=;repeatskip := Max(skip, ski);InOrder := True;For i := To (length(GruppoNomi)-) - skip dobeginJ := i + skip;if i<length(GruppoNomi) thenbeginif (GruppoNomi [i]> GruppoNomi l[j]) thenbeginInOrder := False;Temp[i] := GruppoNomi [j];GruppoNomi [j] := [i];GruppoNomi [i] := Temp[i];end;end;end;

until (InOrder=True) and (skip=);end;

Page 16: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Storia di Fotorad

Al contrario, è facile imbattersi nella difficoltà di reperimen-to di un algoritmo che aiuti a recuperare un dato cancellatoinavvertitamente. Tale algoritmo, peraltro indispensabile, nonè, però, di facile ed immediata realizzazione poiché richiede unattento studio per la manipolazione e conservazione tempo-ranea in memoria di dati in parallelo perché gli stessi possanoessere opportunamente recuperati nel caso di cancellazioneaccidentale.

A questo punto vogliamo azzardare una distinzione deicomandi in due categorie:

— quelli di immediata scrittura, come ad es.: inserisci, can-cella – ricerca –;

— quelli che richiedono un’attenta analisi del contesto incui vengono chiamati ad operare, come: recupera –copia – taglia – incolla –.

Se, però, per la realizzazione di una semplice rubrica si po-trebbe fare a meno dei comandi copia – taglia – recupera –perché la cancellazione casuale di un array contenente infor-mazioni anagrafiche, anche in assenza del comando “ recupera“ non comporta un grande danno poiché il nominativo perdu-to può essere sempre reinserito con una nuova sua scrittura,mentre non altrettanto può essere fatto in un programma didisegno automatico. In tal caso, a seguito di una accidentale can-cellazione di un disegno complesso o di una sola sua parte, glistessi comandi risultano indispensabili per non essere costrettia rifare tutto il lavoro daccapo.

.. Ricerca di un dato in una rubrica o in un programmadi disegno automatico

Riprendendo il discorso precedente in merito alla distinzionetra algoritmi di immediata realizzazione e quelli richiedenti

Page 17: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

. I linguaggi di programmazione

uno studio più attento e passaggi più complessi, è bene fareuna ulteriore distinzione tra:

a) comandi appartenenti a software che gestiscono Da-ta–Base di tipo anagrafico sequenziale o relazionale;

b) comandi appartenenti a software che gestiscono entitàgrafiche nel disegno automatico.

Se prendiamo in esame, ad esempio, il comando “ricerca”,applicato a Data–Base di tipo anagrafico, esso non presentaparticolari difficoltà né dal punto di vista teorico né da quellodella realizzazione dell’algoritmo relativo.

Non è altrettanto semplice l’algoritmo di ricerca applicatoad una Data–Base che gestisce informazioni relative ad entitàgrafiche. Analizzando attentamente molti testi scolastici di in-formatica si può notare, in essi, carenza di capitoli o di eserciziriguardanti lo sviluppo di algoritmi ritenuti molto importantinel campo della ricerca in architettura e inerenti la cattura, ilrecupero o lo spostamento di un parziale elemento grafico.

Page 18: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …
Page 19: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Capitolo II

Algoritmi di ricerca

.. Data–Base anagrafici sequenziali. Algoritmo in pseudocodice

In una raccolta di nominativi, di titoli, o di altri elementi in unData–Base, utilizzando un algoritmo ricorsivo come ciclo FOR,atto a mettere in ordine una serie di indicatori alfabetici, siscorrono tutti i nominativi al fine di trovare ed utilizzare quellocorrispondente alla scelta dell’utente.

A comparazione avvenuta e trovato il nominativo si esce dalciclo e si mostrano tutte le informazioni legate ad esso.

La stessa operazione può essere eseguita con riferimenti aqualsiasi altro dato esistente nel Data–Base. Tale algoritmo siavvale della semplice comparazione di due dati che dal puntodi vista della programmazione non presenta alcun problema eviene riportato su quasi tutti i testi di informatica per le scuolesuperiori. Nei casi di Data–Base relazionali, formati da diversetabelle contenenti dati, la ricerca può essere fatta in manierapiù complessa, anche per argomenti, grazie alle relazioni cheesistono tra i vari key (chiavi di ricerca) appartenenti alle varietabelle. In ogni modo anche in questo caso l’algoritmo si avvaledi mere comparazioni.

.. Data–Base sequenziali per entità grafiche. Algoritmoin pseudo codice

Anche in questo caso ci si serve di un ciclo FOR — che scorrecontinuamente tutte le informazioni — ma senza poter compa-

Page 20: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

Storia di Fotorad

rare alcun elemento in quanto le entità grafiche (punto, linee,polilinee, rettangoli, cerchi, archi, etc.) possono essere indivi-duate sulla finestra di disegno solo dalle loro posizioni caratte-rizzate dalle coordinate D o D e non da nomi, pur restando lanecessità di poter intervenire per modificare il disegno secondole necessità del momento.

In tal caso possiamo procedere avvalendoci della conoscen-za delle coordinate che individuano la posizione delle varieentità.

L’individuazione di ciascuna di esse presenta un diversogrado di difficoltà in funzione dell’entità da catturare.

A tale scopo possiamo dividere la cattura degli elementigrafici in due casi operativi:

Page 21: A08 388 · Indice 7 Prefazione diCarmine D’Ottavio 9 Introduzione 13 Capitolo I Ilinguaggidiprogrammazione 1.1. Come viene usato lo strumento di programmazione nel-le …

. Algoritmi di ricerca

Figura .. La cattura dei punti

Figura .. La cattura di tutte le altre entità