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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6.7. WYPRÓBOWYWANIE DRUGIEJ WERSJI 205<br />

6.7. Wypróbowywanie drugiej wersji<br />

Moemy przetestowa nasz drug wersj programu. Wpisz 2 i znak nowego wiersza. Brak reakcji.<br />

Wpisz jeszcze jeden znak nowego wiersza, aby sprawdzi, czy program nie zasn. Nadal<br />

nic. Wpisz 3 i znak nowego wiersza. Jest odpowied — 2. Spróbuj wyraenia 2+2 ze znakiem<br />

nowego wiersza. Odpowied brzmi 3. Teraz na ekranie znajduj si nastpujce dane:<br />

2<br />

3<br />

=2<br />

2+2<br />

=3<br />

Hmm. Moe wprowadzenie funkcji putback() i uycie jej w funkcjach expression() i term()<br />

nie pomogo w rozwizaniu problemu? Spróbujmy czego innego:<br />

2 3 4 2+3 2*3<br />

=2<br />

=3<br />

=4<br />

=5<br />

Tak, to s poprawne odpowiedzi! Ale brakuje ostatniej (6). Wci mamy problem z tokenami,<br />

ale tym razem nie chodzi o ich zjadanie, lecz o to, e wynik jest zwracany dopiero po wpisaniu<br />

kolejnego wyraenia. Program nie drukuje od razu wyniku. Opónia to do momentu wczytania<br />

pierwszego tokenu nastpnego wyraenia. Niestety nie widzi go, dopóki nie naciniemy klawisza<br />

Enter po wpisaniu nastpnego wyraenia. Wniosek taki, e program nie dziaa le, tylko<br />

odpowiada z opónieniem.<br />

Jak to poprawi? Jednym z oczywistych rozwiza jest wprowadzenie „polecenia drukowania”.<br />

Rol t niech peni rednik, którego pojawienie si bdzie oznaczao koniec wyraenia<br />

i wymuszao wydruk wyniku. Przy okazji dodamy polecenie zamknicia programu. Do tego<br />

celu doskonale nada si znak k (od sowa koniec). Obecnie w funkcji main() mamy taki kod:<br />

while (cin) cout

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

Saved successfully!

Ooh no, something went wrong!