MANUALE OPERATIVO DI PROCONTE
) INTRODUZIONE
) CREARE
UN PROGRAMMA DA ESEGUIRE IN AMBIENTE DI SVILUPPO
) IL PROGRAMMA UTENTE
) MODELLI
DI CONTESTO = "ModCtx" , ( COGNITIVO, DI INTERFACCIA, BASE)
) CREAZIONE
DI UN MODELLO DI CONTESTO DI INTERFACCIA
) CREAZIONE
DI UN MODELLO DI CONTESTO COGNITIVO
) COPIA E MODIFICA
DI MODELLI DI CONTESTO
) CONTROLLO
DEL CONTENUTO BINARIO DEGLI RLTP PER RICONOSCERE I MODELLI
) EVENTI
) CREAZIONE DI UNA FORM_MAIN
) CREAZIONE DI UNA DIALCUSTOM
) AGGIUNGERE
CONTROLLI ALLE FINESTRE (FORM_MAIN O DIALCUSTOM)
) TOGLIERE
CONTROLLI A FORM_MAIN O DIALCUSTOM
) CONVENZIONI DEI NOMI
) IL CONTESTO CORRENTE
) MODELLI DI DATI
) TIPI BINARI
) LA DENOMINAZIONE DEGLI RLTP
) LA
DENOMINAZIONE DEGLI RLTP E LA LINGUA NATURALE
) MEMORIZZAZIONE DI RECORDS
) PARAGONE COI DATABASE
) PICCOLI ESEMPI DI
PROGRAMMI PROCONTE
) GLOSSARIO
INTRODUZIONE
Questa sezione riguarda il manuale operativo di ProConte che serve per comprendere gli strumenti tecnici ed operativi,
per una spiegazione dei principi teorici di ProConte, delle ragioni per cui e' stato creato, a cosa serve ,
quali sono i vantaggi e svantaggi nel suo uso, ecc. ... , vedere la sezione "Principi teorici di ProConte" .
"ProConte" e' un nuovo tipo di linguaggio di programmazione creato da Stefano Sampietro,
si tratta di un linguaggio di programmazione contestuale,
("Pro-Conte" : "Pro" = programmazione, "Conte" = contestuale),
creato prendendo spunto da come funzionano i cervelli biologici, tra cui il cervello umano .
I cervelli biologici sono macchine "stimolo-risposta",
vale a dire che reagiscono agli stimoli che derivano dall'ambiente in cui l'individuo e' immerso,
piu' precisamente, il cervello biologico, reagisce all'insieme di stimoli (percezioni) che riceve.
L'implementazione pratica in informatica di questo modo di operare,
ha comportato la creazione di un linguaggio di programmazione ove si afferma il concetto che :
un determinato insieme di dati informatici in un dato momento, corrisponda ad un "contesto ambientale" ,
il quale stimola il programma operante a reagire relativamente, finendo la sua reazione modificando i dati del contesto ambientale,
da cui riparte un nuovo ciclo di analisi contestuale che produrra' un nuovo ciclo di reazione relativa, continuando in modo perpetuo,
almeno fino a quando non si provvede a fare terminare i cicli con opportuni accorgimenti .
Abbiamo quindi :
Il "contesto dati" e i "modelli di contesto dati" :
Il "contesto dati" e' semplicemente l'insieme dei dati che si vengono a creare man mano che il programma
esegue aggiunte o eliminazioni dei dati da elaborare .
I "modelli di contesto dati" (chiamati piu' avanti "Modelli di contesto" o "ModCtx"),
sono delle definizioni formali di un contesto dati, memorizzate nel programma e che fungono
da modello di riferimento per stabilire se il contesto dati corrisponde ad una determinata conformazione .
Inoltre, i Modelli di contesto, nella loro definizione formale,
contengono anche la reazione stabilita per il contesto a cui si riferiscono,
vale a dire che contengono l'indicazione delle procedure da eseguire nel programma
quando il contesto dati assume una determinata conformazione .
ProConte e' un linguaggio interpretato, vale a dire che vi e' un programma (l'interprete Proconte (ProConte.exe)),
che esegue il codice ProConte trasformando le istruzioni ProConte in codice macchina .
L'interprete ProConte , fondamentalmente, esegue un ciclo
ove si controlla il contesto dati cercando il modello di contesto che gli corrisponde, se viene trovato,
vengono eseguite le istruzioni di reazione contenute nel modello di contesto .
Pertanto , l'attivita' di programmazione di ProConte,
dopo avere creato un contesto dati di partenza per ogni "programma utente",
consiste sopratutto nel creare i modelli di contesto .
Purtroppo la grande complessita' di questo linguaggio di programmazione non mi consente di
creare al momento un manuale completo e ben fatto
come anche molte cose dell'ambiente di programmazione stesso,
( Il codice C++ che produce l'interprete "ProConte.exe" e' di circa 60000 righe
di codice ed e' il frutto di un lungo e complesso lavoro iniziato nel 1994 per arrivare
nel 2006 ad essere presentabile, sono quindi circa 12 anni, senza contare gli anni che ci
sono voluti prima ancora per sviluppare quel bagaglio di conoscenze che sono servite per
concepire ProConte ), spero che coloro che intendono usare questo linguaggio di programmazione siano comprensivi
di cio' e si armino della pazienza necessaria per superare le difficolta' concernenti le
carenze pocanzi citate, naturalmente, appena possibile, apportero' quanti piu' miglioramenti potro' .
Per il necessario per sviluppare in ProConte, spedire una e-mail a :
info@1111az.com
CREARE UN PROGRAMMA DA
ESEGUIRE IN AMBIENTE DI SVILUPPO
Un programma utente ProConte e' basato su di un file *.Ctx ,
che viene lanciato e da cui parte il caricamento di quello specifico programma nell'ambiente di sviluppo di ProConte .
Per lanciare il programma si apre la finestra "Start Programmi"
Si clicca sul bottone "Load Ctx Da File" e comparira' una comune finestra windows
per la apertura di files, si seleziona il file *.Ctx desiderato e verra' caricato il programma in ProConte,
Se non esiste ancora il file *.Ctx, lo si puo' creare digitando il nome del file che si vuole creare,
in tal caso, non trovando il file vengono avviate delle procedure che richiedono varie impostazioni
e conducono a creare il file *.Ctx del nuovo programma che si vuole creare .
IL PROGRAMMA UTENTE
Il programma utente e' il risultato di un programma ProConte e in generale corrisponde ad un comune programma windows.
Per confezionare un programma utente, in modo che l'utente lanci il programma come un comune programma windows, si deve :
Creare una cartella che contiene :
il file : ProConte.exe
la cartella : Data
la cartella : DataSave
la cartella : Hlp
Copiare nella dir "Data" alcuni files della dir "Data" dell'ambiente
di sviluppo Proconte, che sono :
MC.bin
MM.bin
Inoltre puo' risultare necessario creare altre cartelle e files che dipendono specificamente dal programma creato .
Supponendo di avere creato un programma ProConte denominato "MioProgramma"
e il cui file Ctx e' "MioProgramma.Ctx",
creare un programma esterno o un file *.bat che esegua la chiamata "ProConte.exe
MioProgramma.Ctx",
rispettando ovviamente le regole del sistema operativo per le path in modo che alla chiamata
vengano trovati i files .
Questo programma puo' essere lanciato come si lancia comunemente un programma windows,
per esempio da una icona sul desktop .
MODELLI
DI CONTESTO = "ModCtx" , ( COGNITIVO, DI INTERFACCIA, BASE)
I modelli di contesto sono di tre tipi :
MODELLI DI CONTESTO BASE
Sono funzioni C o C++ che eseguono realmente i dati che gli passano i
modelli di contesto di interfaccia,
devono essere fatti dentro una DLL o dati alla societa' di gestione
dello standard ProConte da compilare
in ProConte.exe .
MODELLI DI CONTESTO DI INTERFACCIA
Contengono gli "RLTP di interfaccia" ( (RLTP COGNITIVO) -> (RLTP BASE) ) .
La sequenza con cui vengono inseriti gli RLTP non e' importante per il riconoscimento del contesto .
I modelli di contesto di interfaccia, fanno riferimento ad un "modello di contesto base",
a cui passano i dati mediante la creazione degli "RLTP di interfaccia" ( (RLTP COGNITIVO) -> (RLTP BASE) ) .
vale a dire che viene stabilita l'associazione tra i dati del
modello di contesto di interfaccia e quelli del modello di contesto base,
in modo da potere passare i dati al modello di contesto base
il quale e' una funzione C che elabora realmente i dati .
MODELLI DI CONTESTO COGNITIVI
Contengono gli RLTP dei dati che rappresentano il contesto dati che li deve richiamare .
La sequenza con cui vengono inseriti gli RLTP non e' importante per il riconoscimento del contesto .
Possono contenere anche delle chiamate alla esecuzione di altri modelli di contesto che in
questo caso vengono usati come "SUB -> modelli di contesto"
e che corrispondono alla esecuzione di "sub-procedure"
CREAZIONE DI UN MODELLO DI CONTESTO DI INTERFACCIA
Nella finestra "Creazione Modelli di Contesto di Interfaccia"
La procedura e' la seguente :
) Scegliere il contesto base cliccando sul bottone [CB],
comparira'una finestra che consente di scegliere un CB ,
dopo avere scelto cliccare su [OK] e si ritornera' nella finestra precedente dove si potra'
notare che nella combobox [RLTP CTX Base ( ? = Facoltativo)]
e' stata introdotta la parte base degli RLTP obbligatori o facoltativi del CB selezionato.
) Si procede quindi cliccando nella combobox sugli RLTP che si devono applicare al modello,
si notera' che il testo della riga selezionata sara' replicato nella editbox della combobox,
a questo punto bisogna selezionare il RLTP da applicare cliccando sulla combobox RLTP o sul
bottone [RLTP] , al ritorno della scelta fatta si notera' che il testo del RLTP
sara' composto da "RLTP TipoBin -> RLTPBase TipoBinBase" .
) Abbiamo fatto un "RLTP Base" per il nostro modello di interfaccia che inseriamo col bottone [->],
quindi vedremo nella listbox "Contesto di interfaccia" aggiungersi il testo che descrive l'RLTP .
) Si ripete l'operazione per ogni RLTP che si vuole introdurre .
) Si nomina il modello creato nella casella "Nome modello di contesto di interfaccia"
) Quindi si clicca su [Salva ModCtx Interf] poi [OK] ed il modello e' fatto .
) Si puo' notare che nella finestra vi sono molte altre cose , ma si avra' modo di comprendere
cosa siano man mano che si procedera' nella pratica .
CREAZIONE DI UN MODELLO DI CONTESTO COGNITIVO
Nella finestra "Creazione Modelli di Contesto cognitivi"
La procedura e' la seguente :
) Selezionare il RLTP da applicare cliccando sulla combobox RLTP o sul bottone [RLTP] .
) Selezionare il Tipo Binario dalla combobox "Tipo BIN"
) Inserire col tasto [<-] il RLTP nella listbox "Modello di contesto" .
) Volendo si possono aggiungere dei ModCtx come SubModCtx selezionandoli dalla combobox
"Modelli di subcontesto"
e cliccando il bottone [<- Add ID ModCtx come Sub] .
) Si nomina il modello creato nella casella "Nome modello di contesto"
) Quindi si clicca su [Salva ModCtx] poi [OK] ed il modello e' fatto .
) Si puo' notare che nella finestra vi sono molte altre cose , ma si avra' modo di comprendere
cosa siano man mano che si procedera' nella pratica .
COPIA E MODIFICA DI MODELLI DI CONTESTO
Modifica :
Nella finestra "Creazione Modelli di Contesto Cognitivi",
si puo' modificare un modello di contesto gia fatto in precedenza,
prima selezionandolo dalla lista dei modelli e poi
mediante il bottone "<- Modifica Mod Ctx" si ottiene il caricamento del modello nella
finestra, da cui si puo' modificare cio' che si vuole e salvare .
Per la finestra "Creazione Modelli di Contesto di interfaccia",
abbiamo la stessa cosa col bottone "<- Carica Sub Ctx Per Modifica" .
Copia :
Nella finestra "Creazione Modelli di Contesto Cognitivi",
si puo' copiare un modello di contesto gia fatto in precedenza,
prima selezionandolo dalla lista dei modelli e poi
mediante "<- Carica RLTP ModCtx" si caricheranno i dati del modello scelto nella finestra ,
da cui si potranno fare le modifiche desiderate,
(ovviamente non e' possibile salvare un modello copiato identico ad un'altro,
si avrebbe un messaggio di errore, in quanto non ha senso fare due modelli uguali,
la copia serve per facilitare la creazione di un modello simile ad uno gia esistente) .
Infine si puo' salvare .
Per la finestra "Creazione Modelli di Contesto di interfaccia",
abbiamo la stessa cosa col bottone "<- Add RLTP Del ModCtx" .
CONTROLLO
DEL CONTENUTO BINARIO DEGLI RLTP PER RICONOSCERE I MODELLI
Quando si decide di creare un modello di contesto ove il suo riconoscimento contestuale sia
determinato anche dal contenuto binario delle variabili,
le variabili da controllare in binario del modello vengono confrontate con quelle del contesto corrente,
l'operatore di confronto scelto nella definizione del modello viene applicato mettendo il dato binario del
modello a desta dell'operatore, vale a dire che viene operato il confronto mettendo
il dato binario del contesto corrente viene a sinistra e il dato binario del modello a destra ,
il risultato del confronto , se positivo, promuove quel RLTP come valido per il riconoscimento del modello .
EVENTI
In un programma tradizionale, il processo avviene secondo sequenze varie che
vengono eseguite tutte in una volta, dal momento in cui viene lanciato il programma
al momento in cui il processo finisce .
Nei programmi piu' complessi, che hanno una interfaccia utente ,
ci sono diversi processi che vengono lanciati da eventi sull'interfaccia o altro,
pertanto i processi vengono lanciati da eventi .
Nella programmazione contestuale,
per implementare processi scatenati dall'interfaccia,
bisogna creare delle interfacce di input sempre presenti,
che mettano a disposizione delle finestre di dialogo che all'interno della loro chiamata
consentano di scatenare eventi che rilanciano processi
contestuali (vedi le "DIALCUSTOM" o la "FORM_MAIN").
CREAZIONE DI UNA FORM_MAIN
Procedura:
) Aprire la Win "Creazione Modelli di Contesto Di Interfaccia",
) Selezionare il contesto base "FORM_MAIN : 2"
) Compilare gli RLTP del contesto base e nominare il modello cominciando con "Form Main Start ..... " .
CREAZIONE DI UNA DIALCUSTOM
Procedura:
) Aprire la Win "Creazione Modelli di Contesto Di Interfaccia",
) Selezionare il contesto base "DIALCUSTOM : 15"
) Compilare gli RLTP del contesto base e nominare il modello cominciando con "Dial Start ..... " .
Nota :
Ogni programma utente deve essere creato a partire da una form main .
AGGIUNGERE CONTROLLI
ALLE FINESTRE (FORM_MAIN O DIALCUSTOM)
Per aggiungere ai Modelli di una finestra gli RLTP di uno o piu' controls,
si puo' creare un Modello di interfaccia con "CB_ADD_CONTROLS_CTX_CUR_SU_WIN_E_CTX_CURR_O_SEL",
assegnare gli RLTP-ctrls obbligatori del contesto base piu' gli RLTP-ctrls che si vogliono aggiungere
e nominare il modello "Add Ctrls ...."
La aggiunta degli RLTP-ctrls avverra' al momento che il modello viene eseguito e gli RLTP-ctrls verranno messi
o sulla Win corrente o su altre a seconda di come vengono impostati alcuni
RLTP obbligatori di "CB_ADD_CONTROLS_CTX_CUR_SU_WIN_E_CTX_CURR_O_SEL" .
TOGLIERE CONTROLLI A FORM_MAIN O DIALCUSTOM
) Creare un Modello di interfaccia con "CB_ELIMINA_CONTROLS_SU_WIN_CURR",
compilare gli RLTP del contesto base e nominare il modello "Elimina Ctrls ...."
CONVENZIONI DEI NOMI
Le convenzioni da seguire per una migliore leggibilita' e comprensibilita' dei modelli sono le seguenti:
(I tre punti "..." indicano il nome specifico che di volta in volta si da al modello) .
Form Main Start ... // Modello di start del programma (FORM_MAIN).
Form Main Ctrls ... // Modello che carica dei Ctrls nel form del programma .
Salva ... // Modello per il salvataggio di un record nella memoria .
Salva Edit ... // Modello per il salvataggio di un RLTP BIN_Edit nella memoria
(CB_SALVA_IN_MEM_RLTP_EDIT_CON_CAT).
Ctrls ... // Modello di Ctrls da caricare su una Win .
Crea Categoria ... // Modello per creare una categoria per mettere in memoria un record
(CB_GENERATORE_CATEGORIE).
Add Ctrls ... // Modello per aggiungere controlli ad una DialCustom
(CB_AGGIUNGE_CONTROLS_SU_DIALCUSTOM) .
Add Cat ... // Modello per aggiugere una categoria a una RLTP (CB_ADD_CAT_A_RLTP_EDIT) .
MODELLI DI DATI
I modelli di dati sono i soliti ModCtx che pero' vengono usati come modelli di dati .
Possono essere usati per caricare un form dei Ctrls da compilare dall'utente o altro .
Ci sono funzioni CB che caricano un ModCtx su una win , la scaricano, ecc.
TIPI BINARI
I tipi binari sono stati espansi ai tipi BIN_Static, BIN_Edit, ecc.
pertanto il contesto puo' essere fatto oltre che di dati ,
anche di controls , il cui contenuto equivale alla variabile del dato,
per esempio, una BIN_Edit contiene una stringa,
quindi come contenuto di variabile equivale a BIN_string .
Ecco la lista dei tipi Binari :
BIN_null
BIN_bool
BIN_char
BIN_uchar
BIN_short
BIN_ushort
BIN_int
BIN_uint
BIN_long
BIN_ulong
BIN_float
BIN_double
BIN_string
BIN_Static
BIN_Edit
BIN_Button
BIN_ListBox
BIN_Combo
BIN_Categoria
BIN_FILE
BIN_DataOra
BIN_RichEdit
BIN_IDModCtx
BIN_pDialCustom
BIN_CheckListBox
BIN_ScrollBar
BIN_SliderCtrl
LA DENOMINAZIONE DEGLI RLTP
La denominazione degli RLTP e' una fase critica,
in quanto la tendenza generale e' quella di denominare in modo troppo generico .
Di conseguenza, in un tempo successivo, ci si puo trovare ad avere molti dati di natura troppo diversa
da quella che ci si aspetta nei modelli creati per quel RLTP, per esempio:
supponiamo il caso di un programma che deve gestire una azienda di confezionamento,
di primo acchito, il programmatore ProConte, e' tentato di fare un RLTP per gli articoli
denominandolo semplicemente "ARTICOLI", ma gli articoli di una azienda di confezionamento
sono diversi degli articoli di una azienda di dolciumi, o altro .
In situazioni di questo tipo, sopratutto se i modelli e gli RLTP sono standard e i dati sono stati creati da altri utenti,
e' facile che arrivino dei dati che sono molto piu' variegati di quello che dovrebbero rispetto alla loro definizione,
se negli articoli ci sono anche dei dolciumi,
il programma per gestire il confezionamento di abiti non sa che farsene dei dolciumi,
oppure, peggio ancora, li usa a sproposito .
Pertanto, ci si puo' trovare a dovere rivedere la assegnazione delle denominazioni degli RLTP,
in questo caso, si deve ampliare o restringere il significato di un RLTP,
l'ampliamento non comporta solitamente problemi,
mentre il restringimento solitamente comporta il problema che oramai
ci sono dei dati assegnati a quel RLTP che non sarebbero congrui al nuovo significato ridotto del RLTP .
In tal caso si deve evitare di modificare la denominazione del RLTP e lasciarla come e',
mentre si deve creare un nuovo RLTP, la cui descrizione sia piu' ristretta e bisogna
creare nuovi modelli che usino il nuovo RLTP .
LA DENOMINAZIONE DEGLI RLTP E
LA LINGUA NATURALE
La definizione di un RLTP controls e' meglio che sia nella lingua con la quale si crea il
programma, in quanto agli RLTP sono associate anche le stringhe che contengono le scritte del controls,
per esempio , quando facciamo un controllo Edit per scrivere il nome in una anagrafica,
normalmente sull'interfaccia, si mette anche una scritta descrttiva
per far capire all'utente cosa mettere in quella casella di testo,
quindi nella scritta probabilmente c'e' una stringa contenente "Nome" oppure "Introdurre il Nome".
Se ci si lascia tentare dall'idea di dare definizioni anglofone agli RLTP,
come per esempio :
INPUT_NAME - BIN_Edit
possiamo pensare che questo renda ,meglio riutilizzabile l'RLTP, ma la scritta contenuta e' in italiano,
quindi se viene inserito in un programma in lingua inglese o altro ovviamente non va bene.
Pertanto, e' meglio nominare il RLTP-controls con un ID sensilile alla lingua,
come per esempio :
INPUT_NOME - BIN_Edit
o meglio
INSERIMENTO_NOME - BIN_Edit
Il fatto che un programma scritto per una lingua debba essere piu' o meno riscritto
per un'altra lingua puo' sembrare una limitazione della riusabilita del codice,
ma invece e' una peculiarita' che consente automatismi anche sulla lingua,
in virtu' dei quali si potra' anche fare programmi che "comprendono la lingua",
in quanto "percepiscono" la lingua naturale in uso .
IL CONTESTO CORRENTE
Il contesto corrente e' determinato dagli RLTP dell'ultimo modello di contesto caricato
e dagli RLTP aggiunti o tolti alla fine della esecuzione di un modello di contesto cognitivo .
MEMORIZZAZIONE DI RECORDS
Quando si devono introdurre in memoria dei dati in input come un sistema database,
per esempio come quando si deve introdurre un record di una anagrafica,
e' necessario classificare in una categoria apposita il record stesso,
in quanto, per distinguere quel record da un'altro, bisogna farlo appartenere
ad una apposita categoria, ragione per cui, per rendere pratica la cosa,
si usa un generatore di categorie automatico,
che inventa da se' un nome di categoria con determinati criteri (vedi :
"CB_GENERATORE_CATEGORIE")
e poi si assegna la categoria agli RLTP del record .
In futuro, quando servono delle ricerche, mediante la categoria creata unicamente
per quel record si potra' ritrovarlo.
Bisogna quindi creare un ModCtx con :
) un RLTP che contenga la categoria da creare (es. CATEGORIA_GRUPPO_ANAGRAFICA) .
) il RLTP a cui assegnare la categoria (es. COGNOME) .
) la chiamata al SubModCtx di interfaccia che aggiorna le variabili dai Ctrls "Dial Ctrls->Var ..." .
) la chiamata al SubModCtx di interfaccia che aggiunge la categoria al RLTP "Add ..." .
) la chiamata al SubModCtx di interfaccia che salva il RLTP "Salva ..." .
Esempio di ModCtx cognitivo :
"
8 : Salva Anagrafica Clienti
CATEGORIA_GRUPPO_ANAGRAFICA 1035 BIN_string 12 ,
COGNOME 1021 BIN_Edit 14 ,
NOME 1022 BIN_Edit 14 ,
13 SubCtx : Dial Ctrls->Var Inp Materiali
5 SubCtx : Crea Categoria Gruppo Anagrafica
9 SubCtx : Add Cat a Nome
10 SubCtx : Add Cat a Cognome
6 SubCtx : Salva Edit Nome
7 SubCtx : Salva Edit Cognome
"
Nota: oltre alla categoria creata per il gruppo della anagrafica,
ci devono essere altre categorie che distinguono il RLTP,
come per esempio per il RLTP "COGNOME", ci puo' essere la categoria "cognome",
quindi, queste categorie devono essere gia presenti nel RLTP al momento della
memorizzazione, per esempio possono essere introdotte in fase di creazione del file *.Ctx.
Nota: Nel caso di finestre con Ctrls variabili a seconda delle scelte dell'utente,
come per esempio nel caso della listbox "Forma del materiale" che consente di attivare
"Barre" o "lamine" o altro, in base alle scelte dell'utente vengono caricati sulla finestra
vari Ctrls, nel modello "Salva Materiali ..." ci devono essere tutti i possibili Ctrls
caricabili sulla finestra, ma i Ctrls non caricati non vengono salvati,
questo implica una concezione di "Records" variabili nella loro struttura .
La identificazione di un record deve avvenire mediante la categoria con la quale e' stato archiviato,
quindi, per leggere il record, bisogna trovare la stringa della sua categoria .
Pertanto la stringa della categoria, deve essere archiviata in modo da essere associata all'evento o altro .
Nelle ListBox :
per ogni elemento ci deve essere una stringa per la categoria del record "_AryCatRec"
RECORD CURR
Siccome il record deve essere messo negli RLTP del ctx globale,
si deve introdurre il concetto di record corrente come e' stato fatto per le Win,
quindi ci deve essere la gestione di un ID del record corrente .
Allo stesso modo ci deve essere la stringa della categoria del record corrente .
Per un migliore comprensione del complesso meccanismo dei records,
la cosa piu' semplice e' osservare gli esempi preparati .
PARAGONE COI DATABASE
Nei database relazionali classici come Access,
i dati vengono organizzati in tabelle e record,
dove il record costituisce una prima forma di raggruppamento,
la tabella una altra forma di raggruppamento di livello piu generale,
il file "*.mdb" la forma ancora piu' generale di raggruppamento .
Le ricerche dei dati, in un database classico avvengono mediante una
prima selezione dei raggruppamenti prestabiliti operata dal programmatore
mediante la scelta di "file\tabella", poi la ricerca prosegue dinamicamente
mediante un filtro a runtime che estrae i records che soddisfano i tests
condizionali sui dati dei vari campi .
Questi pre-raggruppamenti prestabiliti "Files\tabelle\records"
consentono una riduzione del carico di lavoro di filtraggio dei dati,
pero' sono raggruppamenti prestabiliti e devono essere gestiti
in modo prestabilito dal programma .
Volendo, nella programmazione contestuale,
si potrebbe implementare qualcosa di equivalente,
Ma i cervelli biologici a cui si ispira ProConte non archiviano come nei database .
PICCOLI ESEMPI DI PROGRAMMI PROCONTE
) "VisualizzaScrittaSuFormMain.Ctx" :
Piccolo esempio di visualizzazione di una scritta sul form principale .
) "FormMain.Ctx" :
Creazione e cancellazione nella finestra principale di alcuni controls.
) "DialCustom.Ctx" :
Creazione e cancellazione di una finestra mobile con alcuni controls .
) "Button.Ctx"
Esecuzione di eventi a seguito del clic su un bottone .
) "ListBox.Ctx"
Esecuzione di eventi a seguito della selezione su ListBox .
) "Anagrafiche.Ctx" :
Piccolo esempio di interfaccia per la archiviazione e il ritrovamento di dati anagrafici
(uso del database in modo simile ai database tradizionali, dove i dati vengono archiviati raggruppati in records).
) "CalcoliMatematici.Ctx" :
Piccolo esempio di come eseguire dei calcoli matematici sui dati .
) "LeggeFileTxt.Ctx" :
Piccolo esempio di lettura di un file *.Txt ove vi sono delle righe di dati da visualizzare .
) "ScriveFileTxt.Ctx" :
Piccolo esempio di scrittura di un file *.Txt ove vengono immessi dei dati estratti dal database di Proconte .
) "VisualizzaSuFormMainUnaImmagine.Ctx" :
Visualizza una immagine contenuta in un file *.bmp sul form principale.
) "VisualizzaSuDialCustomUnaImmagine.Ctx" :
Visualizza una immagine contenuta in un file *.bmp su una finestra di dialogo .
) "AutodeterminazioneDiProcessoSuiRuoli.Ctx" :
Piccolo esempio di programma dove i processi vengono autodeterminati dall'analisi contestuale dei "Ruoli"
e dove i contesti vengono analizzati solo mediante i ruoli dei dati .
In questo esempio sono state messe sull'interfaccia delle caselle di testo col testo che descrive
la definizione interna del ruolotipo a cui appartengono, questo per far vedere direttamente sull'interfaccia
quello che succede di nascosto in proconte .
Viene fatto il semplicissimo caso di calcolare il costo di una vendita in due passaggi :
inizialmente abbiamo un contesto dati composto dal numero di prodotti da vendere, dal prezzo del prodotto,
dal bottone di start e dalla casella del risultato,
cliccando sul bottone start, proconte esegue un modello di contesto
che fa la moltiplicazione tra numero di prodotti e prezzo del prodotto e che a fine lavoro
aggiorna la casella del risultato e aggiunge al contesto corrente la scritta "Moltiplicazione Eseguita",
quindi vedremo aggiungersi all'interfaccia la scritta .
Poi viene eseguita una nuova fase di controllo contestuale da parte di proconte, il quale trova che
a quel nuovo stato contestuale corrisponde un modello di contesto che applica l'IVA al totale ,
quindi (sempre per motivi esemplificativi) viene messa una nuova casella di testo sull'interfaccia che
visualizza il totale+IVA .
Dopo di che finisce il programma .
Nota: Per esemplificare meglio il processo sono stati inseriti due ritardi di 1 secondo per fare vedere
la sequenza in cui avvengono le cose, altrimenti il tutto risulterebbe talmente veloce da essere percepito
come una fase unica .
) "AutodeterminazioneDiProcessoSuiRuoliESuiDati.Ctx" :
Piccolo esempio di programma dove i processi vengono autodeterminati
dall'analisi contestuale dei "Ruoli" e dei dati,
e dove i contesti vengono analizzati sia mediante i ruoli dei dati che mediante
il contenuto binario delle variabili dei dati .
In questo esempio sono state messe sull'interfaccia delle caselle di testo col testo che descrive
la definizione interna del ruolotipo a cui appartengono, questo per far vedere direttamente sull'interfaccia
quello che succede di nascosto in proconte .
Viene fatto il semplicissimo caso di calcolare il costo di una vendita in due passaggi :
inizialmente abbiamo un contesto dati composto dal numero di prodotti da vendere, dal prezzo del prodotto,
dal bottone di start e dalla casella del risultato,
cliccando sul bottone start, proconte esegue un modello di contesto
che fa la moltiplicazione tra numero di prodotti e prezzo del prodotto e che a fine lavoro
aggiorna la casella del risultato e aggiunge al contesto corrente la scritta "Moltiplicazione Eseguita",
quindi vedremo aggiungersi all'interfaccia la scritta .
Poi viene eseguita una nuova fase di controllo contestuale da parte di proconte, il quale trova che
a quel nuovo stato contestuale corrisponde un modello di contesto che applica l'IVA al totale ,
quindi (sempre per motivi esemplificativi) viene messa una nuova casella di testo sull'interfaccia che
visualizza il totale+IVA .
Dopo di che finisce il programma .
Nota: Per esemplificare meglio il processo sono stati inseriti due ritardi di 1 secondo per fare vedere
la sequenza in cui avvengono le cose, altrimenti il tutto risulterebbe talmente veloce da essere percepito
come una fase unica .
Ecco come si presenta l'interfaccia di ProConte in modalita Sviluppo
(versione per programmatori ProConte, che contiene in piu' rispetto alla versione User, la
barra delle icone per gli strumenti di programmazione).
Vediamo il semplice caso di "AutodeterminazioneDiProcessoSuiRuoliESuiDati.Ctx"
Diritti d'autore
I diritti sono riservati, come da legge sul Diritto d'Autore n.518 del 1992 e successive modifiche.
Nessuna parte di questo sito potrà essere copiata, modificata, riprodotta e archiviata
su mezzi e modalita diverse da quelle acconsentite dall'autore .
E' consentito scaricare, conservare e stampare per uso personale e privato del fruitore dell'opera .
E' consentita la citazione del sito e/o di alcune sue pagine interne, senza preventiva autorizzazione,
purchè sia chiaramente identificabile il nome del dominio ufficiale (www.1111az.com/ProConte) .