---- ***************************************************** ---- ---- ***************************************************** ---- -- SpIPP v.4.0 - Quadrato Magico - Created by EnriKo 1983-2016(r)- italy -- spipp.adb v.4.0 Created By EnriKo -- -- Questo file sorgente viene rilasciato con la sottostante -- licenza CCPL: -- Attribuzione - Non commerciale - -- Non opere derivate - 3.0 Unported (CC BY-NC-ND 3.0) ---- ***************************************************** ---- ---- ***************************************************** ---- -- -- Inizio struttura di calcolo del programma, modificare la funzione -- in base ai risultati delle giocate e verificare le uscite -- del quadrato magico usando gli stessi numeri per ogni giocata. -- -- -- Il programma compila sia sotto Linux che sotto Windows -- con questi parametri di base: -- -- gnat make -j8 -s -gnatv -gnat12 spipp.adb -- -- ricordarsi di fare il bind per una nuova ricompilazione -- con: -- -- gnat bind -x spipp.ali -- -- quindi linkare il file oggetto per renderlo eseguibile -- su piattaforma Linux e Windows: -- -- gnat link spipp.ali -- -- Inserendo lo switch -j possiamo utilizzare migliaia di -- processori per il calcolo parallelo aumentando anche la -- velocita' di compilazione sulle macchine che supportano SMP. -- Si usa -jxxx ovvero: -jnumerodiprocessoripresenti -- sul mio Intel I7 uso -j8 ovvero 8 processori contemporaneamente. -- -- Inserendo lo switch -s possiamo ricompilare il codice sorgente -- anche in presenza di un eseguibile gia' esistente, altrimenti -- Ada non lo permette se non si cancella fisicamente il file -- eseguibile prima di ricompilare il tutto. -- -- Inserendo lo switch -gnatv controlliamo che non ci siano -- errori sul sorgente prima di costruire l'eseguibile di sistema. -- -- Inserendo lo switch -gnat12 compiliamo con il nuovo standard -- Ada 2012, perche' il default e' impostato su standard militare -- Ada 2005. -- -- Esempio di compilazione da finestra di Terminale, uguale su -- Linux e Windows: -- -- enrico@warrior84:~$ gnat make -j8 -gnatv -gnat12 spipp.adb -- gcc-4.6 -c -gnatv -gnat12 spipp.adb -- -- GNAT 4.6.3 -- Copyright 1992-2010, Free Software Foundation, Inc. -- ---- ***************************************************** ---- -- -- enrico@warrior84:~$ gnat make -j8 -s -gnatv -gnat12 spipp.adb -- gcc-4.6 -c -gnatv -gnat12 spipp.adb -- -- GNAT 4.6.3 -- Copyright 1992-2010, Free Software Foundation, Inc. -- -- Compiling: spipp.adb (source file time stamp: 2016-10-29 18:02:08) -- 235 lines: No errors -- gnatbind -x spipp.ali -- gnatlink spipp.ali -- ---- ***************************************************** ---- -- -- Inizio Inserimento librerie usate da Procedura MAIN spipp -- -- libreria standard per leggere (input) -- e scrivere (output) testi WITH Ada.text_io; USE Ada.text_io; -- libreria standard per leggere e -- scrivere numeri interi WITH Ada.integer_text_io; USE Ada.integer_text_io; WITH Ada.float_text_io; USE Ada.float_text_io; -- libreria per input/output numeri reali ---- ***************************************************** ---- -- -- se non diamo il nome del file uguale a quello della procedura -- il compilatore potrebbe non creare l'eseguibile e fermarsi. -- il programma deve chiamarsi "spipp" come la dichiarazione -- di procedura iniziale... :-)) -- -- Ada e' un linguaggio pignolo, se non si seguono le giuste -- regole, il compilatore si ferma continuamente... ;-))) -- BOFH !!! ;-))) -- ---- ***************************************************** ---- -- ************** spipp MAIN program ******************* PROCEDURE spipp IS -- definisco le variabili globali nel programma qm1,qm2,qm3,qm4 : integer := 0; -- numeri introdotti dall’utente per generare la sestina -- di calcolo QM r1,r2,c1,c2,d1,d2 : integer := 0; -- variabili da assegnare per il calcolo QM -- fine definizione variabili -- sc1 : integer; -- ***************************************************** bs1,bs2,bs3,bs4 : integer := 0; -- variabili QMgen -- ***************************************************** -- definisco una procedure di pulizia su schermo terminale procedure CLS is begin Ada.Text_IO.Put(ASCII.ESC & "[2J"); end CLS; -- ***************************************************** -- ***************************************************** -- definisco una procedure per stampare il logo del programma procedure stampalogo is begin new_line; put("**************************************************************************");new_line; put("* SpIPP v.4.0 - Quadrato Magico - Created by EnriKo 1983-2016(r)- italy *");new_line; put("**************************************************************************");new_line; new_line; new_line; end stampalogo; -- ***************************************************** -- ***************************************************** procedure genqm is begin new_line; put("*******************************************************");new_line; put("* Generatore Quadrato Magico - pronto per il calcolo *");new_line; put("*******************************************************");new_line; new_line; new_line; end genqm; -- ***************************************************** -- ***************************************************** -- Il menu' di scelta lo inserisco dopo, prima faccio -- le valutazioni matematiche e verifico i risultati -- giocando lo stesso QM base su 4 schedine da 1 euro -- l'una separate -- -- procedure Menu is -- begin -- New_Line(2) ; --Put_Line("*** Menu' di scelta ***") ; --Put_Line("*** 1 - SpIPP4 ***") ; --Put_Line("*** 2 - Esci dal programma ***") ; --Put_Line("*********************************") ; --New_Line(2) ; --end Menu ; -- ***************************************************** -- ***************************************************** -- -- La procedura di calcolo combinatorio vettoriale -- riscritta totalmente in Ada dal sorgente C -- mi permette di rendere piu' precisa la cadenza -- numerica generando ottimi risultati di calcolo -- sulle previsioni numeriche del QM -- -- ***************************************************** procedure spipp is begin -- inserisco i 4 numeri GQM alla richiesta del programma put("inserire Generatore QM 1: "); get(qm1); put("inserire Generatore QM 2: "); get(qm2); put("inserire Generatore QM 3: "); get(qm3); put("inserire Generatore QM 4: "); get(qm4); CLS; new_line; -- Va a capo genqm; -- pannello genqm -- ***************************************************** -- ***************************************************** -- -- Formo una sottospecie di Quadrato Magico a schermo... ;-)) -- devo simulare quello sulla schedina per capire la definizione -- del calcolo finale -- -- ***************************************************** put("-----------> QM Base");new_line; put(qm1); put(qm2); new_line(2); -- new_line; put(qm3); put(qm4); new_line(3); --new_line; -- inizio calcolo -- r1,r2,c1,c2,d1,d2 : integer; -- variabili da assegnare per il calcolo QM r1 := qm1 + qm2; r2 := qm3 + qm4; -- qm1 qm2 c1 := qm1 + qm3; -- qm3 qm4 c2 := qm2 + qm4; -- fine calcolo riga-colonna -- inizio calcolo diagonali d1 := qm1 + qm4; d2 := qm2 + qm3; -- fine calcolo diagonali -- inizio calcolo 4X3 bs1 := qm1+qm2+qm3; bs2 := qm2+qm4+qm3; bs3 := qm1+qm2+qm4; bs4 := qm1+qm3+qm4; -- fine calcolo 4X3 -- stampo il risultato per formare la sestina -- put("sestina di ricalcolo:");new_line; -- questa sestina serve al ricalcolo per le successive -- sestine giocabili -- ***************************************************** -- put(r1); put(r2); put(c1); put(c2); put(d1); put(d2);new_line(2); -- ***************************************************** -- prima sestina giocabile put(r1-qm1); --meno primo numero put(r1-qm2); --meno secondo numero put(r2-qm3); put(r2-qm4); -- controllo QM ok!! put(d1-qm2); put(d2-qm4); new_line; -- seconda sestina giocabile put(r1-qm1); put(r1-qm2); put(r2-qm3); put(r2-qm4); put(bs1-bs2); put(bs3-bs4);new_line; -- terza sestina giocabile put(r1-qm1); put(r1-qm2); put(r2-qm3); put(r2-qm4); put(bs1-bs2-qm1); put(bs1-bs2-qm3);new_line; -- quarta sestina giocabile end spipp; -- ***************************************************** -- ***************************************************** -- * Procedura MAIN del programma SpIPP4.adb * -- ***************************************************** BEGIN CLS; --cancello lo schermo al terminale stampalogo; --stampo il logo programma spipp; --eseguo la procedura SpIPP4 :-) -- QM Spippolato !!! ;-)) end spipp; -- fine procedura MAIN program -- Termina anche il programma ed esce -- -- File sorgente scritto in fretta (10 minuti) -- per valutare i calcoli e definire una mia -- idea personale sul calcolo QM superenalotto.