Ciao a tutti, dopo tanto tempo ho deciso di riprovare a studiare il C++
Premetto che conosco il C e tempo fa ho sviluppato anche dei programmi, poi per motivi di tempo ho abbandonato la programmazione.
Ad oggi mi ritrovo con l'idea di fare due cose:
- togliere la ruggine che si è formata in questi anni di inattività
- riprovare a studiare il C++
Negli anni scorsi avevo provato a studiarlo il C++ almeno un paio di volte, ma effettivamente con un bagaglio di conoscenze e abitudini della programmazione procedurale mi tornava difficile ragionare nei termini che richiede questo linguaggio.
In quest'ultimo periodo mi sono letto un po' di guide e di manuali e oggi dopo tanta teoria mi sono messo a sviluppare un banale programma in C++.
Il programma in questione non fa altro che simulare un conto corrente con le relative operazioni che si possono svolgere.
Volevo un Vostro parere, perchè alcuni dubbi (ovviamente) ci sono...
Questo è il codice:
codice://Main #include <iostream> #include <stdio.h> #include "conto.h" using namespace std; void showmenu(void); void waitchar(void); int main() { int scelta=99; float importo; //Istanzio la classe con saldo=0 tasso interessi =5.1 conto cc(0, 5.1); while(scelta!=0) { showmenu(); cin >> scelta; switch(scelta) { case 0: cout << "\nArrivederci\n\n"; break; case 1: cout << "\nIl saldo attuale è pari a: "<< cc.leggisaldo() << endl; waitchar(); break; case 2: cout << "Importo da versare: "; cin >> importo; cc.versamento(importo); break; case 3: cout << "Importo da prelevare: "; cin >> importo; if(cc.prelevamento(importo) == false) cout << "Il saldo è inferiore a" << importo; break; case 4: cout << "Ad oggi gli interessi ammontano a " << cc.calcolainteressi() << " in un saldo di " << cc.leggisaldo()<<endl; cout << "Tasso applicato: " << cc.leggitasso() << endl; waitchar(); break; case 5: cout << "Saldo prima di applicare gli interessi " << cc.leggisaldo() << endl; cc.applicainteressi(); cout << "Tasso applicato: " << cc.leggitasso() << "%"<<endl; cout << "Saldo attuale con interessi " << cc.leggisaldo()<<endl; waitchar(); break; default: continue; } } return 0; } void showmenu() { cout << string(50, '\n'); cout << "1 - Saldo\n"; cout << "2 - Versamento\n"; cout << "3 - Prelevamento\n"; cout << "4 - Calcolo interessi\n"; cout << "5 - Applica interessi\n"; cout << "0 - Fine\n\n"; cout << "? "; } void waitchar() { char c; cout<< "Premere C+INVIO per continuare"<< endl; cin >> c; }codice://conto.h class conto { private: float saldo; float tasso; public: conto(float, float); ~conto(); bool versamento(float importo); bool prelevamento(float importo); float leggisaldo(); float leggitasso(); float calcolainteressi(); float applicainteressi(); };Ovviamente ci sono le solite immancabili domande...codice://conto.cpp #include <iostream> #include "conto.h" conto::conto(float _saldo, float _tasso) { saldo=_saldo; tasso=_tasso; std::cout << "Saldo attuale: " << saldo << "\n"; std::cout << "Tasso attuale: " << tasso << "\n"; } conto::~conto() {} bool conto::versamento(float importo) { saldo+=importo; return true; } bool conto::prelevamento(float importo) { if (importo <= saldo) { saldo-=importo; return true; } else return false; } float conto::leggisaldo() { return saldo; } float conto::leggitasso() { return tasso; } float conto::calcolainteressi() { return(saldo*tasso/100); } float conto::applicainteressi() { saldo+=(saldo*tasso/100); return(saldo); }
- Come ambiente di sviluppo uso codeblocks che in automatico mi ha messo la riga “using namespace std;” che non ho visto in nessuno dei manuali che ho letto.
Che significato ha questa riga?
- Perchè se la variabile "scelta" (in main) la trasformo da int a char il programma non funziona più?
Il programma apparentemente gira, ma sembra che non accetti nessuna scelta.
- Va bene come ho fatto, e cioè mischiare semplici funzioni stile C (showmenu e waitchar) con le classi?
- La logica di sviluppo del programma può andare così? avreste fatto diversamente?
Purtroppo, la difficoltà più grande che trovo nello scrivere programmi in C++ non è la sintassi o la struttura, ma è capire come implementare una classe.
Cioè, leggendo una qualsiasi guida che fa un qualsiasi esempio sembra tutto bello e chiarissimo, ma non appena mi trovo davanti ad una situazione reale da trasformare in C++ mi blocco perchè non so esattamente come sviluppare la classe per una determinata situazione.
Esiste più che un manuale teorico sulla sintassi ecc. una guida che aiuti a capire e ragionare bene in questo senso?
Vi ringrazio per l'attenzione e penso che non sarà l'ultima volta che mi sentirete
Per questo mi scuso già da ora.
Stefano


Rispondi quotando