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();
};
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);
}
Ovviamente ci sono le solite immancabili domande...
- 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