Trucchi_ Esperienze e Magheggi in c++ Builder 6.0

download Trucchi_ Esperienze e Magheggi in c++ Builder 6.0

of 134

  • date post

    11-Jul-2015
  • Category

    Documents

  • view

    166
  • download

    1

Embed Size (px)

Transcript of Trucchi_ Esperienze e Magheggi in c++ Builder 6.0

Giorgio Mariano Albano

Trucchi, Esperienze e Magheggi in c++ Builder 6.0

2005 Giorgio Mariano Albano Editore, Locri (RC) Tutti i diritti riservati Prima edizione 24 Gennaio 2005Giorgio Mariano Albano - www.albanosoftware.it Pag. 1 email: [email protected]

Stampato in Italia

PrefazioneLa vita degli sviluppatori , giorno dopo giorno, diventa sempre pi erta di ostacoli, spesso si investono numerose risorse nellacquisizione di un linguaggio per trovarsi poi un giorno a guardare il proprio linguaggio mutare sintassi o ad assistere a politiche di marketing coercitive nellacquisto di nuovi linguaggi sorti dalle ceneri dei vecchi. Oggi come non mai una grande confusione arieggia intorno al mondo dellinformatica. Questo dovuto a diversi fattori: la scarsa professionalit di alcuni programmatori improvvisati, la superbia di coloro che credono di essere arrivati e di sapere tutto, le spietate politiche di marketing delle aziende costrette a tagliare oltre losso, eccetera eccetera. Qui la lista potrebbe diventare molto lunga. Il manuale che scrivo lesperienza maturata in pi di sette anni passati a lavorare davanti al monitor. Non mi sento di dire che ci che scrivo verit, ma sono pi che altro consigli, trucchi, magheggi di programmazione che mi hanno portato a produrre due software (MagazziX gestionale per piccole e medie aziende e GeGymnox gestionale per palestre e piscine.). Ho lavorato su c, c++, visual basic, crystal report, mysql, php, access ed ho trovato nel c++ builder 6.0 una valida opportunit di lavoro. La semplicit dellinterfaccia grafica e la potenza del linguaggio forgiato da Borland fanno di questo strumento, a mio avviso, uno dei migliori linguaggi tuttora esistenti nel mercato. Amo il c++ builder 6.0 perch ha mantenuto i contatti con le procedure del Passato. Oggi in c++ builder 6.0 ancora si possono compilare ed eseguire programmi Dos che abbiano la sola libreria stdio.h. E cosa dire dei programmi che funzionano anche su 486? Forse questa pu sembrare una problematica anacronista, in quanto oggi i computer sono molto potenti, tuttavia vedo che tanti miei clienti ancora utilizzano Windows 98. Cosa succederebbe se creassi un software allavanguardia che non funziona su Windows 98? Cosa penserebbe un mio cliente allatto della dimostrazione di un software vedendo problematiche di vario genere? (Penserebbe sicuramente che io sono poco raccomandabile). A dire il vero per due anni, per motivi di lavoro, ho lavorato su visual basic. Chi non conosce visual basic dice che un linguaggio facilissimo. Chi lavora in visual basic sa che non c nulla di facile e scontato. Per cui con luscita di .NET ho deciso di abbandonare il visual basic e dedicarmi solamente al c++ , linguaggio che ritengo molto solido e potente. Qualcuno potrebbe dirmi che non mantengo il passo con i tempi, che .NET sar il futuro e che il c++ verr rimpiazzato dal c# Non so se le cose andranno cos, il futuro non lo si pu predire, tuttavia io credo che il c++ non sparir, e se cos dovesse essere.. Vorr dire che lavorer su kilyx (c++ per linux). Mi auguro che il lettore di questa mia opera possa trarne utilit. Prego che non vengano effettuate copie non autorizzate. Questa opera stata scritta dopo 7 anni di lavoro.Giorgio Mariano Albano - www.albanosoftware.it Pag. 2 email: [email protected]

Capitolo 1: Introduzione al linguaggio c++ e sintassiNon mi dilungher su questa parte, voglio pensare che chi legge, gi ha una infarinatura di c++, quindi gi al corrente della sintassi basilare, come la dichiarazione di variabili, lutilizzo di puntatori, ecc.ecc. Focalizzer la mia attenzione su aspetti poco documentati dagli altri editori e che io ho trovato siano indispensabili per poter lavorare. Inoltre dar molti consigli per poter affrontare problematiche tecniche inerenti le basi del c++.

Giorgio Mariano Albano - www.albanosoftware.it Pag. 3

email: [email protected]

1) Inizializzazione variabiliNon bisogna mai dimenticare di assegnare un valore alle variabili appena dichiarate, ad esempio int numero; numero=0; Questo pi un consiglio pratico che una regola in quanto spesso, soprattutto chi viene dal visual basic, omette linizializzazione della variabile. La mancata assegnazione di un valore alla variabile appena dichiarata potrebbe causare il malfunzionamento di un intero programma. Non un caso che spesso programmi molto complessi, allapparenza perfetti nella loro sintassi, a volte a causa di una simile banalit non funzionino perfettamente. Vediamo nello specifico cosa potrebbe causare questo malfunzionamento: Creiamo un nuovo progetto con c++ builder 6.0. Disegniamo un bottone all interno della form. Effettuiamo un doppio click sul bottone e digitiamo il seguente codice: float var; Button1->Caption=var; Mandiamo in esecuzione il programma e clicchiamo sul bottone. Il risultato sar il seguente:

Dalla figura possibile vedere che allinterno del bottone viene visualizzato il valore della variabile var che non stata inizializzata. Inizializzando la variabile var a 5 , nel bottone verr visualizzato esattamente il valore voluto. float var; var=5; Button1->Caption=var;Giorgio Mariano Albano - www.albanosoftware.it Pag. 4 email: [email protected]

2) Errori nei calcoliGiorgio Mariano Albano - www.albanosoftware.it Pag. 5 email: [email protected]

Spesso si creano calcoli che apparentemente devono funzionare correttamente. Non sempre cos limportante sapere perch. Creiamo un nuovo progetto con c++ builder 6.0. Disegniamo un bottone all interno della form. Effettuiamo un doppio click sul bottone e digitiamo il seguente codice: int var1=3; int var2=2; float risultato=0; risultato= var1/var2; Button1->Caption=risultato; Mandiamo in esecuzione il programma e clicchiamo sul bottone. Il risultato sar il seguente:

Come possibile ? il risultato non deve essere 1 ma 1.5. Perch? Eppure la variabile risultato di tipo float, per cui al suo interno possono venire immagazzinati valori con la virgola. Ebbene la motivazione la seguente: le moltiplicazioni e le divisioni tra interi vengono ritornate come interi, per cui var1/var2 perder il valore decimale. Per ovviare a questo problema ci sono due soluzioni: a) Dichiarare var1 e var2 come float. b) Fare in modo che valori delle variabili intere, per loperazione da effettuare, risultino come float. La prima soluzione ovvia, vediamo come eseguire la seconda soluzione: modifichiamo la seguente riga risultato= var1/var2; con la seguente linea di codice: risultato=float( var1)/float(var2); il risultato sar il seguente:

Giorgio Mariano Albano - www.albanosoftware.it Pag. 6

email: [email protected]

Ora il valore corretto

Giorgio Mariano Albano - www.albanosoftware.it Pag. 7

email: [email protected]

3) Utilizzo di variabili externLe variabili di tipo extern sono dei link a variabili dichiarate in una altra parte di programma. Sono utilissime per condividere variabili tra pi form. Vediamo un esempio pratico per il loro utilizzo. Creiamo un nuovo progetto con c++ builder 6.0. Disegniamo un bottone all interno della form. Digitiamo F12 oppure clicchiamo sullicona toggle Form Dopo la riga #include "Unit1.h" dichiariamo una variabile: int VariabileCondivisa=0;

Creiamo una seconda Form o dal menu a tendina File New Form

oppure direttamente dalla Icona New Form Disegniamo un bottone all interno della form.Giorgio Mariano Albano - www.albanosoftware.it Pag. 8 email: [email protected]

Digitiamo F12 oppure clicchiamo sullicona toggle Form Dopo la riga #include "Unit1.h" dichiariamo una variabile esterna: extern int VariabileCondivisa;

Per ritornare in modalit grafica Digitiamo nuovamente F12 oppure clicchiamo sullicona toggle Form , Effettuiamo un doppio click sul bottone e digitiamo il seguente codice: VariabileCondivisa= VariabileCondivisa + 2; Button1->Caption= VariabileCondivisa; Ok a questo punto il progetto potrebbe funzionare, tuttavia mancano ancora un passo: devo trovare il modo per visualizzare la seconda form. Ritorniamo alla prima form tramite View -Forms

Giorgio Mariano Albano - www.albanosoftware.it Pag. 9

email: [email protected]

e scegliamo Form1. Dopodich includiamo la seconda Form all interno della prima tramite File include unit

Per fare questa operazione manualmente basta scrivere #include "Unit2.h" appena prima della dichiarazione della variabile VariabileCondivisa. PS. Ho notato che nei progetti a pi forms possa capitare che nellelenco delle forms da includere non vengano visualizzate tutte, per cui se si volesse includere , ad esempio, la Form5 , baster prima visualizzarla eppoi la si potr includere allinterno della form desiderata. A questo punto effettuiamo un doppio click sul bottone e digitiamo il seguente codice: VariabileCondivisa=8; Form2->Show();Giorgio Mariano Albano - www.albanosoftware.it Pag. 10 email: [email protected]

Adesso tutto completo, mandiamo in esecuzione il programma, effettuiamo un click sul bottone presente allinterno della prima form, esso ci far visualizzare la seconda form. effettuiamo un click sul bottone presente allinterno della seconda form. A questo punto il risultato dovrebbe essere come limmagine seguente

NB Per comodit di lavoro pi opportuno dare dei nomi ai vari controlli in modo da non avere Form1, Form2 o Button1, Button2. In piccoli progetti di esempio questo pu ancora andare bene, ma in progetti pi professionali se avessi 10 forms diverse, chiamate Form1,Form2,Form3,Form4 ecc.ecc., nel momento di visualizzarle o di includerle, non saprei mai a quale form dovrei riferirmi. Modificandone invece i nomi, ad esempio frmFattura, frmInizio, frmSplash, frmChiusura, ecc.ecc., saprei subito muovermi bene allinterno del programma.

Giorgio Mariano Albano - www.albanosoftware.it Pag. 11