Zajęcia P3. Kalkulator
Transkrypt
Zajęcia P3. Kalkulator
Zajęcia P3. Kalkulator 1. Cel ćwiczeń Celem ćwiczeń jest utrwalenie dotychczas poznanych wiadomości i zapoznanie się z mechanizmem przekazywania wartości pomiędzy analizatorem leksykalnym i składniowym oraz w trakcie tworzenia drzewa składniowego. Efektem pracy będzie programowy kalkulator naukowy. 2. Zadania do realizacji indywidualnej Tworzony kalkulator przetwarza dane wejściowe wiersz po wierszu. Poszczególne wiersze mogą zawierać: - nic (są puste), błąd (token ‘error’), wyrażenie arytmetyczne z liczbami całkowitymi (Zad.3.1), wyrażenie arytmetyczne z liczbami zmiennoprzecinkowymi (Zad.3.2-4), wyrażenie arytmetyczne wzbogacone funkcjami (Zad. 3.3-4), podstawienie do pamięci wyrażenia arytmetycznego, które może zawierać odwołania do pamięci (Zad.3.4). Wiersze danych kończą się znakiem ‘\n’. W związku z tym nie należy go usuwać z wejścia, ale przekazywać jako token jednoznakowy. Wszystkie pozostałe białe znaki należy usuwać. Zad. 2.1. Uprzejmy kalkulator dla liczb całkowitych realizujący podstawowe operacje arytmetyczne (+,,*,/, neg) oraz grupowanie podwyrażeń (nawiasy). Kalkulator powinien witać użytkownika miłymi słowami, wyświetlać znak zachęty ‘>’ na początku każdego wiersza, w którym użytkownik może wprowadzić dane oraz podziękować za współpracę po zakończeniu pracy jedną z komend „Bye”, „Exit” lub „Quit”. Zad. 2.2. Kalkulator dla liczb całkowitych i zmiennoprzecinkowych realizujący podstawowe operacje arytmetyczne (+,-,*,/, neg) oraz grupowanie podwyrażeń (nawiasy). Zad. 2.3. Wzbogacenie kalkulatora o możliwość wywołania funkcji trygonometrycznych (sin(•), cos(•), tg(•), ctg(•)), pierwiastka sqrt(•) i kwadratu sqr(•). Zad. 2.4. Wzbogacenie kalkulatora o możliwość podstawiania wartości wyrażenia do pamięci oraz wykorzystywania zawartości pamięci w wyrażeniach. Przykładowa ‘sesja’ kalkulatora: Witam! Proszę wprowadzić w osobnych wierszach wyrażenia arytmetyczne. Można korzystać z pamięci M1..M100: > 11 + 2 * ( 3 + 5 ) /* liczby całkowite */ Wynik = 27 /* liczby rzeczywiste */ > 12.34 + 45. + .67 Wynik = 58.01 > sqr(sin(4.1+0.9))+sqr(cos(5*1)) /* jedynka trygonometryczna */ Wynik = 1 > M1 = sqrt( sqr(3) + sqr(4)) /* podstawienie wyniku wyrażenia do pamięci */ M1 = 5 > M100 = sqrt(121) M100 = 11 > M100 – M1 Wynik = 6 > Exit Dziękuję za współpracę ;-) 3. Zadania do samodzielnego wykonania: Zad. 3.1. Rozszerzenie kalkulatora o możliwość obliczania wyrażeń logicznych (<, >, <=, >=, =, <>), które zwracają wartość 1 (true) lub 0 (false).