Programowanie. Teoria i praktyka z wykorzystaniem C++

Programowanie. Teoria i praktyka z wykorzystaniem C++ Programowanie. Teoria i praktyka z wykorzystaniem C++

pdf.helion.pl
from pdf.helion.pl More from this publisher
16.07.2014 Views

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"

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"

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

Saved successfully!

Ooh no, something went wrong!