Programowanie. Teoria i praktyka z wykorzystaniem C++
Programowanie. Teoria i praktyka z wykorzystaniem C++
Programowanie. Teoria i praktyka z wykorzystaniem C++
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