Programowanie. Teoria i praktyka z wykorzystaniem C++
Programowanie. Teoria i praktyka z wykorzystaniem C++ Programowanie. Teoria i praktyka z wykorzystaniem C++
6.4. GRAMATYKI 191 Znowu nasz tok rozumowania moemy przedstawi graficznie (pomijamy zasad literau zmiennoprzecinkowego jako liczby dla uproszczenia): Na rysunku przedstawilimy ciek, któr przemierzylimy przez definicje. Odwracajc nasze rozumowanie, moemy powiedzie, e 2+3 jest wyraeniem, poniewa 2 jest skadnikiem, który jest wyraeniem, 3 jest skadnikiem oraz wyraenie ze znakiem + i skadnikiem równie jest wyraeniem. Prawdziwym powodem, dla którego zainteresowalimy si gramatykami, jest fakt, e mog one nam pomóc w rozwizaniu problemu poprawnego przetwarzania wyrae z operatorami * i +. Spróbujemy zatem przeanalizowa wyraenie 45+11.5*7. Zabawa w komputer szczegó- owo sprawdzajcy wszystkie reguy byaby mudna. Dlatego pominiemy niektóre porednie etapy, które opisalimy ju przy analizie 2 i 2+3. Oczywicie 45, 11.5 i 7 to literay zmiennoprzecinkowe, które s liczbami, liczby za s czynnikami, a wic moemy zignorowa wszystkie reguy poniej czynnika (Primary). Otrzymujemy: 1. 45 jest wyraeniem, po którym znajduje si znak +, a wic szukamy wyrazu zamykajcego regu Expression+Term. 2. 11.5 jest skadnikiem, po którym znajduje si znak *, a wic szukamy czynnika koczcego regu Term*Primary. 3. 7 jest czynnikiem, a wic 11.5*7 jest skadnikiem zgodnie z regu Term*Primary. Teraz widzimy, e 45+11.5*7 jest wyraeniem zgodnie z regu Expression+Term. Mówic dokadniej, jest to wyraenie, w którym najpierw jest wykonywane mnoenie 11.5*7, a potem dodawanie 45+11.5*7, dokadnie tak, jak gdybymy napisali 45+(11.5*7). Na nastpnej stronie przedstawiamy graficzn ilustracj naszego rozumowania (znowu pomijamy zasad literau zmiennoprzecinkowego jako liczby dla uproszczenia).
192 ROZDZIA 6 • PISANIE PROGRAMU Powyszy rysunek obrazuje nasz tok rozumowania. Zauwa, jak regua Term*Primary zapewnia, e 11.5 zostanie pomnoone przez 7 zamiast dodane do 45. Pocztkowo moe wydawa Ci si to trudne do zrozumienia, ale ludzie czytaj gramatyki, a te prostsze atwo zrozumie. Naszym celem nie byo jednak nauczy Ci rozumie wyrae 2+2 czy 45+11.5*7. To ju kady potrafi. Szukalimy sposobu na objanienie komputerowi, co oznacza wyraenie 45+11.5*7 i wiele innych skomplikowanych wyrae, które mog zosta mu podsunite do obliczenia. Skomplikowane gramatyki nie nadaj si do odczytu przez czowieka, ale komputery radz sobie z nimi doskonale. Analizuj ich reguy szybko i prawidowo, a przychodzi im to z atwoci. W tym wanie komputery s dobre — w dokadnym wykonywaniu polece. 6.4.1. Dygresja — gramatyka jzyka angielskiego Jeli nigdy dotd nie miae do czynienia z gramatykami, to pewnie czujesz si oszoomiony. W istocie moesz czu si niepewnie, nawet jeli ju si z czym takim spotkae wczeniej. Spójrz na poniszy fragment gramatyki jzyka angielskiego: Sentence : Noun Verb // np. C++ rules Sentence Conjunction Sentence // np. Birds fly but fish swim Conjunction : "and" "or" "but" Noun : "birds" "fish" "C++" Verb : "rules" "fly" "swim"
- Page 1 and 2: Programowanie. Teoria i praktyka z
- Page 3 and 4: 4 SPIS TRECI Rozdzia 1. Komputery,
- Page 5 and 6: 6 SPIS TRECI Rozdzia 6. Pisanie pro
- Page 7 and 8: 8 SPIS TRECI Cz II Wejcie i wyjcie
- Page 9 and 10: 10 SPIS TRECI 14.2. Klasa Shape 448
- Page 11 and 12: 12 SPIS TRECI 18.5.3. Inicjowanie t
- Page 13 and 14: 14 SPIS TRECI 22.2. Krótka histori
- Page 15 and 16: 16 SPIS TRECI 26.3.3. Algorytmy i n
- Page 17 and 18: 18 SPIS TRECI Dodatek D Instalowani
- Page 19 and 20: 176 ROZDZIA 6 • PISANIE PROGRAMU
- Page 21 and 22: 178 ROZDZIA 6 • PISANIE PROGRAMU
- Page 23 and 24: 180 ROZDZIA 6 • PISANIE PROGRAMU
- Page 25 and 26: 182 ROZDZIA 6 • PISANIE PROGRAMU
- Page 27 and 28: 184 ROZDZIA 6 • PISANIE PROGRAMU
- Page 29 and 30: 186 ROZDZIA 6 • PISANIE PROGRAMU
- Page 31 and 32: 188 ROZDZIA 6 • PISANIE PROGRAMU
- Page 33: 190 ROZDZIA 6 • PISANIE PROGRAMU
- Page 37 and 38: 194 ROZDZIA 6 • PISANIE PROGRAMU
- Page 39 and 40: 196 ROZDZIA 6 • PISANIE PROGRAMU
- Page 41 and 42: 198 ROZDZIA 6 • PISANIE PROGRAMU
- Page 43 and 44: 200 ROZDZIA 6 • PISANIE PROGRAMU
- Page 45 and 46: 202 ROZDZIA 6 • PISANIE PROGRAMU
- Page 47 and 48: 204 ROZDZIA 6 • PISANIE PROGRAMU
- Page 49 and 50: 206 ROZDZIA 6 • PISANIE PROGRAMU
- Page 51 and 52: 208 ROZDZIA 6 • PISANIE PROGRAMU
- Page 53 and 54: 210 ROZDZIA 6 • PISANIE PROGRAMU
- Page 55 and 56: w i c z e n i a 212 ROZDZIA 6 • P
- Page 57 and 58: 214 ROZDZIA 6 • PISANIE PROGRAMU
192 ROZDZIA 6 • PISANIE PROGRAMU<br />
Powyszy rysunek obrazuje nasz tok rozumowania. Zauwa, jak regua Term*Primary zapewnia,<br />
e 11.5 zostanie pomnoone przez 7 zamiast dodane do 45.<br />
Pocztkowo moe wydawa Ci si to trudne do zrozumienia, ale ludzie czytaj gramatyki,<br />
a te prostsze atwo zrozumie. Naszym celem nie byo jednak nauczy Ci rozumie wyrae<br />
2+2 czy 45+11.5*7. To ju kady potrafi. Szukalimy sposobu na objanienie komputerowi, co<br />
oznacza wyraenie 45+11.5*7 i wiele innych skomplikowanych wyrae, które mog zosta<br />
mu podsunite do obliczenia. Skomplikowane gramatyki nie nadaj si do odczytu przez<br />
czowieka, ale komputery radz sobie z nimi doskonale. Analizuj ich reguy szybko i prawidowo,<br />
a przychodzi im to z atwoci. W tym wanie komputery s dobre — w dokadnym<br />
wykonywaniu polece.<br />
6.4.1. Dygresja — gramatyka jzyka angielskiego<br />
Jeli nigdy dotd nie miae do czynienia z gramatykami, to pewnie czujesz si oszoomiony.<br />
W istocie moesz czu si niepewnie, nawet jeli ju si z czym takim spotkae wczeniej.<br />
Spójrz na poniszy fragment gramatyki jzyka angielskiego:<br />
Sentence :<br />
Noun Verb<br />
// np. <strong>C++</strong> rules<br />
Sentence Conjunction Sentence // np. Birds fly but fish swim<br />
Conjunction :<br />
"and"<br />
"or"<br />
"but"<br />
Noun :<br />
"birds"<br />
"fish"<br />
"<strong>C++</strong>"<br />
Verb :<br />
"rules"<br />
"fly"<br />
"swim"