Struttura.
Ecco come è strutturato il programma. Vedi anche il codice sorgente e le note tecniche. (torna all'indice).
![]()
Come evidenziato dalla figura il programma è composto da più moduli, che hanno consentito un'organizzazione logica del codice.
Alcuni moduli hanno qualcosa in più degli altri: sono delle Form, ossia delle finestre di dialogo con l' utente; esse sono caratterizzate da una particolare configurazione degli oggetti che costituiscono la tipica interfaccia di Windows (configurazione che si può costruire visualmente e memorizzata in file .dfm) e dal codice che li gestisce (ossia il file .cpp e il suo header .h) contenuto nella Unit associata alla Form.
Ho avuto bisogno di tre Form: una per l'immissione e la gestione degli ingressi, una per il controllo dei dati immessi e per la scelta dell'algoritmo, e una per la visualizzazione e la gestione dei risultati.
Le altre unità di codice senza Form contengono i tre algoritmi implementati; infine mi sono servito di una ulteriore unità di codice, la Unit Global, che ha il solo scopo di contenere tutto ciò che è condiviso dalle altre Units (variabili globali, funzioni pubbliche, definizioni).La prima Form che si apre è la Datain, ed è la Finestra principale di programma, attraverso la quale è possibile immettere e gestire (salvare, aprire) i dati di ingresso. La Unit associata contiene anche il codice che elabora il contenuto delle celle editabili della Form: una volta premuto il pulsante di acquisizione vengono prodotte le variabili globali (dichiarate nella Unit Global) di cui si ciberanno gli algoritmi, implementati separatamente nelle diverse Unit.
Le variabili globali sono le seguenti:-Dati di rete immessi-Yc ( matrice complessa delle ammettenze nodali ) Y ( matrice moduli delle ammettenze nodali ) th ( matrice fasi delle ammettenze nodali ) dataval ( matrice valori delle grandezze nodali immesse o inizializzate ) -Dati dedotti-Se durante l' elaborazione non si riscontrano errori, viene passato il "testimone" ad una seconda Form, la Dataok, la quale, oltre a visualizzare i dati elaborati per consentire un controllo da parte dell' utente, permette di avviare l'elaborazione scegliendo l'algoritmo desiderato.n ( numero di nodi ) nP,nQ,nE,nd,ord ( numero di equazioni in P,Q; di incognite E,d; ordine dello Jacobiano ) tiponodo,Jeq,Jinc ( arrays di supporto dei calcoli )
Al termine dell'elaborazione si apre una istanza (relativa all'algoritmo scelto) della Form DataOut, che costituisce il modello delle finestre di visualizzazione.
Il fatto di avere una finestra indipendente per ogni algoritmo consente di confrontare agevolmente i risultati delle diverse elaborazioni, senza avere un'unica pesante finestra di confronto; inoltre è facilitata la gestione dei dati.
E' stata già accennata la presenza della Unit Globalvar: essa è priva di Form e il suo compito è unicamente ospitare il codice delle funzioni globali e la dichiarazione dei tipi e delle variabili visibili a tutte le Unit.
Le funzioni globali sono:double mod ( cplx ) ( restituisce il modulo di un complesso ) double arg ( cplx ) ( restituisce l' argomento di un complesso ) void segnalazione ( int ) ( visualizza un messaggio di errore dipendente dall' intero in ingresso ) void ChiusuraForms ( ) ( chiude tutte le Form tranne la principale ) void invmatr ( **double,**double, int ) ( inverte una matrice double )
Torna all' indice Torna Su