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.

188 ROZDZIA 6 • PISANIE PROGRAMU<br />

przesady z liczb funkcji. Wstpna wersja zawsze powinna by prosta i zawiera tylko najwaniejsze<br />

funkcje. Kiedy uda Ci si zmusi co do dziaania, moesz postawi sobie bardziej ambitne<br />

wymagania. Budowa programu etapami jest znacznie atwiejsza ni wszystkiego na raz.<br />

Odpowied „tak” na pytanie 6. miaaby jeszcze jeden zy wynik: mogoby by trudno oprze<br />

si pokusie dodania jeszcze innych funkcji. Moe warto pomyle o funkcjach matematycznych<br />

albo o ptlach? Gdy zacznie si dodawa kolejne „fajne” funkcje, trudno przesta.<br />

Z programistycznego punktu widzenia najbardziej kopotliwe s punkty 1, 3 i 4. Ponadto<br />

s ze sob powizane, poniewa gdy znajdziemy ju 45 i +, co mamy z nimi zrobi? Tzn., jak<br />

zapisa je w programie? Oczywicie czciowym rozwizaniem tego problemu jest podzia na<br />

tokeny, ale tylko czciowym.<br />

Co zrobiby dowiadczony programista? Gdy mamy do rozwizania jaki trudny techniczny<br />

problem, czsto mona znale jakie standardowe rozwizanie. Wiemy, e ludzie pisz kalkulatory,<br />

przynajmniej od kiedy istniej komputery przyjmujce dane symboliczne z klawiatury,<br />

a wic od 50 lat. Musi by jakie standardowe rozwizanie! W takiej sytuacji dowiadczony<br />

programista konsultuje si z kolegami i przeszukuje dostpn literatur. Byoby gupstwem<br />

myle, e w jeden dzie uda si wymyle co lepszego, ni inni wymylili przez 50 lat.<br />

6.4. Gramatyki<br />

Istnieje standardowa odpowied na pytanie, jak rozszyfrowa znaczenie wyraenia: najpierw<br />

wprowadzone znaki naley zebra i podzieli na tokeny (to ju sami odkrylimy). Jeli uytkownik<br />

wpisze:<br />

45+11.5/7<br />

program powinien utworzy nastpujc list tokenów:<br />

45<br />

+<br />

11.5<br />

/<br />

7<br />

Token to sekwencja znaków, któr uwaamy za jak jednostk, np. operator lub liczb.<br />

Po utworzeniu tokenów program musi upewnia si, e cae wyraenie jest poprawnie<br />

rozumiane. Na przykad wiemy, e wyraenie 45+11.5/7 oznacza 45+(11.5/7), a nie<br />

(45+11.5)/7. Sk w tym, jak nauczy program tej przydatnej zasady (dzielenie „wie mocniej”<br />

ni dodawanie)? Standardowa odpowied jest taka, e piszemy gramatyk definiujc skadni<br />

naszych danych wejciowych, a nastpnie piszemy program, w którym implementujemy zasady<br />

tej gramatyki. Na przykad:<br />

// Prosta gramatyka wyrae:<br />

Expression:<br />

Term<br />

Expression "+" Term // dodawanie<br />

Expression "–" Term // odejmowanie<br />

Term:<br />

Primary

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

Saved successfully!

Ooh no, something went wrong!