Programowanie Studia Licencjackie Lista 1.
Transkrypt
Programowanie Studia Licencjackie Lista 1.
Programowanie Studia Licencjackie Lista 1. W poniższych programach licznikowych dane bed , a, znajdować sie, w zmiennych X oraz Y , po zakończeniu działania wynik powinien znajdować sie, w zmiennej W . Zadanie 1. Napisz program licznikowy, który oblicza iloczyn X · Y . Zadanie 2. Napisz program licznikowy, który oblicza X −̇Y , gdzie ( X − Y, jeśli X ≥ Y, X −̇Y = 0 w przeciwnym przypadku. Zadanie 3. Napisz program licznikowy, który oblicza max(X, Y ), czyli wartość wiekszego ze swoich dwóch argumentów. , Zadanie 4. Zdefiniuj gramatyke, bezkontekstowa, generujac wszystkich palindromów nad alfabetem {a, b}. Słowo , a, jezyk , jest palindromem, jeżeli przeczytane wspak jest sobie równe. Zadanie 5. Zdefiniuj gramatyke, bezkontekstowa, generujac tych słów nad alfabetem {0, 1}, które zawieraja, , a, jezyk , parzysta, liczbe, znaków 0, a nieparzysta, znaków 1. (Jak zobaczymy, że do wygenerowania tego jezyka wystarcza dużo , prostszy od gramatyk bezkontekstowych mechanizm.) Zadanie 6. Słowo x nad alfabetem {<, >} jest ciagiem poprawnie rozstawionych nawiasów katowych, jeżeli bilans(x) = , , 0, oraz dla każdego prefiksu1 y słowa x mamy bilans(y) ≥ 0. Funkcja bilans(·) zdefiniowana jest w nastepuj acy sposób: , , bilans(ε) = 0 bilans(<w) = bilans(w) + 1 bilans(>w) = bilans(w) − 1 Zdefinuj gramatyke, generujac poprawnie rozstawionych nawiasów katowych. , a, wszystkie ciagi , , Zadanie 7. Podaj wszystkie drzewa rozbioru słowa 1 − 0 − 0 − 1 dla gramatyki zawierającej produkcje E → 1, E → 0, E → E − E. Zadanie 8. Niech G bedzie gramatyka, nad alfabetem terminalnym {a, b}, ze zbiorem symboli nieterminalnych {A, B, S}, , sybolem poczatkowym S oraz zbiorem produkcji , P = {S → ε, S → aB, S → bA, A → aS, A → bAA, B → bS, B → aBB} Znajdź (jakieś) wyprowadzenie słowa abbaababba w tej gramatyce. Zadanie 9. Poniższa gramatyka w notacji EBNF opisuje fragment języka Modula-2: S = Id := E | if E then SI [{ elsif E then SI}] [ else SI ] end | loop SI end | while E do SI end SI = S[{;S}] Symbol nieterminalny Id reprezentuje identyfikator, E zaś — wyrażenie. oznacza pusty napis. Przepisz powyższą gramatykę do „czystego” BNF. Narysuj diagram syntaktyczny opisujący ten język. Zadanie 10. Nastepuj ace wyrażenie przedstaw w notacji przyrostkowej i przedrostkowej. Wykorzystując to, że doda, , wanie i mnożenie jest łączne, przedstaw te wyrażenia w możliwie najzwięźlejszy sposób używając przedrostkowej notacji z języka LISP. a) (23 + 45) ∗ (53 + 17) b) 1 + 2 + 3 ∗ 4 ∗ 5 c) 12 − 7 ∗ (13 + 5) ∗ 4 d) 45 + (60 − 34) − 12 Zadanie a) 1 2 + b) 3 4 2 c) 3 5 + d) 1 2 3 1 Słowo 11. Oblicz wartości poniższych wyrażeń. Wyrażenia zapisz w postaci infiksowej. 4 3 - 5 ^ * + * 4 ^ 2 * 12 3 5 - * 2 2 2 ^ ^ * 4 7 - - 3 2 1 0 - - - - prefiks oznacza cześć poczatkow a, słowa, x jest prefiksem słowa xy. , ,