16.07.2014 Views

Programowanie. Teoria i praktyka z wykorzystaniem C++

Programowanie. Teoria i praktyka z wykorzystaniem C++

Programowanie. Teoria i praktyka z wykorzystaniem C++

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

6.3. WRACAJC DO KALKULATORA 179<br />

zdefiniowane przez uytkownika (Token i Token_stream). Jeszcze wicej takich przykadów<br />

znajduje si w rozdziaach 8. oraz 13. – 15., w których zostan opisane techniki<br />

ich tworzenia. Na razie zastanów si nad tak analogi — gdybymy projektowali<br />

samochód, zaczlibymy od opisu jego podzespoów, takich jak koa, silnik, fotele,<br />

klamki do drzwi itp. Kad z nich wyprodukowalibymy osobno, aby nastpnie<br />

uy jej do zoenia caego pojazdu. W nowoczesnym samochodzie wykorzystuje<br />

si dziesitki tysicy takich czci. Realne programy nie róni si w niczym od<br />

samochodów pod tym wzgldem (poza tym, e czciami s fragmenty kodu). Nie<br />

przyszo by nam do gowy budowa samochodu z surowych materiaów, jak elazo,<br />

plastik i drewno. Analogicznie nie tworzymy powanych programów, bezporednio<br />

uywajc wyrae, instrukcji typów wbudowanych w jzyk. Projektowanie i implementowanie<br />

takich czci jest najwaniejszym tematem tej ksiki, a nawet w ogólne<br />

programowania. Zajrzyj te do rozdziaów 9. (typy definiowane przez uytkownika),<br />

14. (hierarchie klas) oraz 20. (typy ogólne).<br />

Zbuduj niewielk wersj programu z ograniczon funkcjonalnoci, która rozwizuje<br />

najwaniejsz cz problemu. Rzadko si zdarza, abymy od samego pocztku dokadnie<br />

znali charakter problemu. Czsto nam si tak wydaje (chyba wiadomo, co to jest program<br />

kalkulator?), ale w rzeczywistoci jest inaczej. Tylko dziki wytonemu myleniu<br />

o problemie (analiza) i eksperymentowaniu (projekt i implementacja) mona na tyle<br />

dokadnie zrozumie problem, aby napisa dobry program. Dlatego tworzymy ograniczon<br />

wersj, aby:<br />

Odkry wasne braki w rozumowaniu, pojmowaniu problemu oraz narzdziach.<br />

Sprawdzi, czy nie trzeba zmieni niektórych szczegóów w specyfikacji problemu,<br />

aby zadanie byo wykonalne. Rzadko si zdarza, aby w czasie analizy i we wstpnej<br />

fazie projektowania udao si przewidzie wszystkie moliwe trudnoci. Naley<br />

skorzysta z informacji, które zyskujemy podczas pisania i testowania kodu.<br />

Tak wstpn wersj o ograniczonej funkcjonalnoci czasami nazywa si prototypem.<br />

Jeli (co jest prawdopodobne) ta pierwsza wersja nie dziaa lub jest tak brzydka, e nie<br />

mamy ochoty si ni duej zajmowa, wyrzucamy j i tworzymy nowy prototyp, tym razem<br />

wzbogaceni o nowe dowiadczenia. Powtarzamy ten proces a do uzyskania zadowalajcego<br />

wyniku. Nie kontynuuj pracy w baaganie, który z czasem tylko si pogorszy.<br />

Zbuduj pen wersj, najlepiej wykorzystujc w tym celu czci z wersji wstpnej.<br />

Chodzi o to, aby program tworzy z dziaajcych czci, a nie pisa cay kod na raz.<br />

Mona oczywicie mie nadziej, e jakim cudem nieprzetestowane fragmenty kodu<br />

bd dziaa i na dodatek robi to, co zaplanowano.<br />

6.3. Wracajc do kalkulatora<br />

W jaki sposób bdziemy komunikowa si z kalkulatorem? To atwe — wiemy ju, jak posugiwa<br />

si strumieniami cin i cout, a graficzne interfejsy uytkownika (GUI) zostan opisane<br />

dopiero w rozdziale 16. W zwizku z tym wybór pad na okno konsoli. Program bdzie pobiera<br />

z klawiatury wyraenia, oblicza ich warto i drukowa wynik na ekranie. Na przykad:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!