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 187<br />

6.3.5. Powrót do tablicy<br />

Jeszcze raz przeanalizujemy problem, tym razem starajc si nie wyrywa z nieprzemylanymi<br />

pomysami. Jedyne, co odkrylimy, to fakt, e obliczenie przez program tylko jednego<br />

wyraenia sprawia nam trudnoci. Chcielibymy mie moliwo obliczenia wielu wyrae<br />

w jednym uruchomieniu programu. W zwizku z tym wzbogacamy nasz pseudokod w nastpujcy<br />

sposób:<br />

while (nie_skoczone) {<br />

wczytaj_wiersz<br />

oblicz // wykonaj prac<br />

wydrukuj_wynik<br />

}<br />

To z pewnoci komplikuje spraw, ale musimy wzi pod uwag fakt, e kalkulatorów zazwyczaj<br />

uywa si do wykonywania kilku oblicze po kolei. Czy mamy kaza uytkownikowi uruchamia<br />

nasz program ponownie, aby wykona kade obliczenie? Moglibymy, ale w wielu<br />

nowoczesnych systemach operacyjnych uruchamianie programów trwa za dugo, a wic lepiej<br />

tego nie robi.<br />

Kiedy patrzymy na nasz pseudokod, nasze pocztkowe próby rozwizania problemu i przykady<br />

uycia, nasuwa si nam kilka pyta (i kilka niemiaych odpowiedzi):<br />

1. Jeli uytkownik wpisze 45+5/7, jak znajdziemy poszczególne elementy — 45, 5, / i 7?<br />

Odpowied: podzielimy na tokeny!<br />

2. W jaki sposób oznaczymy koniec wyraenia? Oczywicie znakiem nowego wiersza (zawsze<br />

podejrzliwie traktuj zwroty typu „oczywicie” — „oczywicie” to nie aden powód!<br />

3. Jak zaprezentujemy wyraenie 45+5/7 jako dane, aby mona byo obliczy wynik? Przed<br />

wykonaniem dodawania musimy w jaki sposób zamieni znaki 4 i 5 w liczb cakowit<br />

45 (tj. 4*10+5). Zatem podzia na tokeny jest czci rozwizania.<br />

4. Jak sprawi, aby wyraenie 45+5/7 byo obliczane jako 45+(5/7), a nie (45+5)/7?<br />

5. Ile wynosi 5/7? Okoo .71, a wic to nie jest liczba cakowita. Z dowiadczenia wiemy,<br />

e uytkownicy kalkulatorów oczekuj wyników zmiennoprzecinkowych. Czy powinnimy<br />

pozwoli na wpisywanie liczb zmiennoprzecinkowych? Oczywicie!<br />

6. Czy moemy pozwoli na uywanie zmiennych? Moglibymy na przykad napisa:<br />

v=7<br />

m=9<br />

v*m<br />

Dobry pomys, ale zostawimy to na póniej. Na razie zajmiemy si podstawow funkcjonalnoci.<br />

Najwaniejsza decyzja to prawdopodobnie odpowied na pytanie w punkcie 6. W rozdziale 7.8<br />

zobaczysz, e odpowied ta pocignie za sob prawie podwojenie rozmiaru wstpnej wersji projektu.<br />

To podwoioby czas potrzebny na uruchomienie wstpnej wersji programu. Podejrzewamy,<br />

e pocztkujcy potrzebowaby nawet cztery razy wicej czasu i niewykluczone, e straciby<br />

w kocu cierpliwo. We wczesnych fazach prac nad projektem naley zawsze unika

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

Saved successfully!

Ooh no, something went wrong!