b) Zadeklaruj infiksowy operator równoważności i sprawdź jego działanie.



Podobne dokumenty
Semantyka i Weryfikacja Programów - Laboratorium 3

Semantyka i Weryfikacja Programów - Laboratorium 3

Algorytmy i struktury danych. Wykład 4

Rekurencja (rekursja)

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

do instrukcja while (wyrażenie);

Wstęp do Programowania potok funkcyjny

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Algorytm. a programowanie -

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Automatyzacja i robotyzacja procesów produkcyjnych

Podstawy Programowania Podstawowa składnia języka C++

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Jarosław Wróblewski Matematyka Elementarna, zima 2012/13

Elementy cyfrowe i układy logiczne

Zadanie 1. Potęgi (14 pkt)

Programowanie obiektowe - zadania

Cw.12 JAVAScript w dokumentach HTML

4. Postęp arytmetyczny i geometryczny. Wartość bezwzględna, potęgowanie i pierwiastkowanie liczb rzeczywistych.

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

lekcja 8a Gry komputerowe MasterMind

Architektura komputerów Wykład 2

Katarzyna Bereźnicka Zastosowanie arkusza kalkulacyjnego w zadaniach matematycznych. Opiekun stypendystki: mgr Jerzy Mil

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Powtórzenie podstawowych zagadnień. związanych ze sprawnością rachunkową *

LibreOffice Calc VBA

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Laboratorium nr 1. i 2.

Algorytmika i Programowanie VBA 1 - podstawy

ALGORYTMY I STRUKTURY DANYCH

Wstęp do Programowania potok funkcyjny

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

LISTA 5. C++ PETLE for, while, do while

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Podstawy Programowania C++

Konstrukcje warunkowe Pętle

Algorytmy i język C++

Bukiety matematyczne dla gimnazjum

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

ZADANIE 1. Ważenie (14 pkt)

Wstęp do informatyki- wykład 2

LEKCJA. TEMAT: Funktory logiczne.

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Podstawy i języki programowania

Warsztaty dla nauczycieli

Podstawowe układy cyfrowe

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

WYRAŻENIA ALGEBRAICZNE

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Język C, instrukcje sterujące (laboratorium)

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Projekt z przedmiotu Systemy akwizycji i przesyłania informacji. Temat pracy: Licznik binarny zliczający do 10.

EGZAMIN MATURALNY Z INFORMATYKI WYBRANE: ... (system operacyjny) ... (program użytkowy) ... (środowisko programistyczne)

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

Proste programy w C++ zadania

Architektura komputerów ćwiczenia Bramki logiczne. Układy kombinacyjne. Kanoniczna postać dysjunkcyjna i koniunkcyjna.

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający różne dziwne znaczki // \ \$ &%.

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Lab 9 Podstawy Programowania

4. Funkcje. Przykłady

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Skrypt 31. Powtórzenie do matury Liczby rzeczywiste

Wojewódzki Konkurs Przedmiotowy z Matematyki dla uczniów szkół podstawowych województwa śląskiego w roku szkolnym 2014/2015

EGZAMIN MATURALNY Z INFORMATYKI

Analiza algorytmów zadania podstawowe

Zbiór liczb rzeczywistych, to zbiór wszystkich liczb - wymiernych i niewymiernych. Zbiór liczb rzeczywistych oznaczamy symbolem R.

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Jarosław Wróblewski Matematyka Elementarna, zima 2014/15

Jarosław Wróblewski Matematyka Elementarna, lato 2012/13. W dniu 21 lutego 2013 r. omawiamy test kwalifikacyjny.

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Wymagania na egzamin poprawkowy z matematyki dla klasy I C LO (Rok szkolny 2015/16) Wykaz zakładanych osiągnięć ucznia klasy I liceum

Skrypt 16. Ciągi: Opracowanie L6

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI STYCZEŃ Arkusz I. Czas pracy: 60 minut Liczba punktów do uzyskania: 15

3. Instrukcje warunkowe

Przykładowe zadania z teorii liczb

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Egzamin z Podstaw informatyki i programowania 2007/2008

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Architektura komputerów. Asembler procesorów rodziny x86

Programowanie - instrukcje sterujące

Indukcja matematyczna. Zasada minimum. Zastosowania.

WIOLETTA NAWROCKA nauczyciel matematyki w Zespole Szkół w Choczewie IDĘ DO GIMNAZJUM ZADANIA TESTOWE Z MATEMATYKI DLA UCZNIÓW KL. VI.

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Funkcja Boolowska a kombinacyjny blok funkcjonalny

Obóz Naukowy Olimpiady Matematycznej Gimnazjalistów

2 Przygotował: mgr inż. Maciej Lasota

Transkrypt:

1. Zmodyfikuj funkcje operujące na ułamkach tak, by wykluczały wystąpienie zera w mianowniku. Wskazówka: zastosuj instrukcję if...then...else i zastosuj wyjątek exception DzieleniePrzezZero. 2. Zadeklaruj typ danych umożliwiający reprezentację ułamków w postaci rekordów. Podaj definicje odpowiednich funkcji. 3. Zmodyfikuj funkcje operujące na ułamkach tak, by następowało każdorazowe skracanie wynikowego ułamka (licznika i mianownika). Użyj funkcji skroc. 4. Ułamki: zmodyfikuj funkcję nastring tak, by ułamek był wyświetlany w postaci właściwej, czyli część całkowita i ułamkowa. Wskazówka: po wyznaczeniu wartości bezwzgl. licznika i mianownika wydziel część całkowitą przez dzielenie div i pozostały licznik reszta z dzielenia, operator mod. 5. Zadeklaruj i przetestuj działanie funkcji rekurencyjnej suma typu : int*int int, gdzie suma(m,n)=m+(m+1)+(m+2)+...+(m+(n-1))+(m+n), m 0, n 0. Wsk.: zapisz dwa warunki dla (m,0) i (m,n). 6. Zadeklaruj samodzielnie infiksową funkcję potęgowania ^^, wskazówka: zastosuj dwa warianty - m^^n = m * m^^(n-1), m^^0=1 7. Opracuj zestaw funkcji arytmetycznych dla liczb zespolonych (++,--,**,// - zob. Wykład 2 Przykłady programów). Sprawdź działanie tych funkcji na kilku przykładach. Uzupełnij zestaw o funkcję sqrt obliczającą pierwiastki liczby zespolonej A+j B. Wsk.: Każdy pierwiastek a+j b musi spełniać równanie (a+j b) (a+j b)=(a+j B) 8. Napisz funkcję obliczającą ułamek do potęgi całkowitej nieujemnej n. Napisz funkcję pomocniczą podnoszącą liczbę do potęgi z dwoma wariantami: - m**n = m * m**(n- 1), m**0=1 9. a) Zadeklaruj i przetestuj działanie funkcji test:int*int*int bool, taką że niepodzielne(a,c) and niepodzielne(a + 1,c)... and niepodzielne(b,c) test(a,b,c) dla b a jest wartością logiczną powyższego wyrażenia. Zatem test(a,b,c) sprawdza, czy liczby w przedziale (a,b) nie są podzielne przez c. b) Zadeklaruj infiksowy operator równoważności i sprawdź jego działanie. 10. Zadeklaruj i przetestuj działanie funkcji pierwsza: int bool, gdzie pierwsza (n)=true wtedy i tylko wtedy, gdy n jest liczba pierwszą. Wsk.: Liczba pierwsza to taka, której podzielnikami są tylko 1 i ona sama. Skonstruuj funkcję pomocniczą pierwsza z dwoma wariantami (kończącym rekurencję) pierwsza (n,2) i pierwsza (n,k) wywoływaną przez zasadniczą: fun pierwsza n = pierwsza' (n,n-1);

11. Zadeklaruj i przetestuj działanie funkcji podzielnaoddo(od,do,dzielnik): int*int*int int, wyszukującej najmniejszą liczbę z przedziału od...do podzielną przez dzielnik. 12. Utwórz następujące funkcje: 1) mnożenia ułamka przez liczbę; 2) dzielenia ułamka przez liczbę; 3) pierwiastkowania ułamka. Napisz funkcję zwracającą odwrotność ułamka. 13. Zadeklaruj i przetestuj działanie funkcji wystodigo:string*int*char int, gdzie wystodigo (str,i,ch)=liczba występowania znaku ch na pozycjach j w stringu str, gdzie j i. Wsk.: Funkcja dla i size str powinna zwracać 0. Zastosuj String.sub. 14. Zadeklaruj funkcję tylkomalelitery: string->bool badającą, czy wszystkie znaki w podanym stringu są małymi literami. Na przykład: tylkomalelitery abc = true tylkomalelitery Abc = false Wsk.: Wykorzystaj funkcję biblioteczną String.sub. Napisz funkcję pomocniczą tylkomale(st,i) wywoływaną przez zasadniczą funkcję: tylkomalelitery(st) = tylkomale(st, size st 1). 15. Zrealizuj funkcję mrn wykonującą mnożenie liczb całkowitych poprzez rekurencyjne dodawanie wykorzystując zależności: m*n = m*0 = 0; dla n=0 m*n = m*1 = m; dla n=1 m*n = m+ m*(n-1) dla n>0 Sprawdź jej działanie dla dodatnich i ujemnych argumentów. Spróbuj zmodyfikować funkcję wzorując się na definicji funkcji silnia. 16. Zadeklaruj kilka rekordów zawierających dane osoby: imię, nazwisko i numer telefonu. Napisz funkcję sprawdzającą, czy dwie osoby mają to samo nazwisko. 17. Zadeklaruj kilka rekordów zawierających dane książki: tytuł, nazwisko autora, rok wydania, cena. Napisz funkcję zmieniającą cenę w podanym rekordzie na nową, jeżeli poprzednio była wpisana wartość większa niż podana. 18. Uzupełnij obsługę wyjątku w funkcji intpprog tak, aby wypisywała wszystkie instrukcje pozostałe jeszcze do wykonania. Wykorzystaj (rekurencyjnie) funkcję wypisz_instr. fun wypisz_instr ( PUSH x) = "PUSH "^(Real.toString x) wypisz_instr ( ^^ ) = " ^^ " wypisz_instr ( ADD ) = " ADD " wypisz_instr ( SUB ) = " SUB " wypisz_instr ( MUL ) = " MUL "; 19. Uzupełnij zestaw instrukcji (deklaracja datatype instruction) o dzielenie. Jak reagować na wyjątek Div zdefiniowany i wywoływany przez moduł biblioteczny Math? Dopisz jego obsługę bezpośrednio w funkcji intinstr stosując konstrukcję handle. Podaj przykład wykonania. Wskazówka: instrukcja handle powinna się znajdować bezpośrednio po operacji y/x.

20. Funkcje arytmetyczne mogą zgłaszać wyjątek Overflow zdefiniowany w module Math. Zastanów się, jak na niego reagować? Napisz obsługę (konstrukcję handle) wyjątku bezpośrednio w funkcji intinstr, dla jednej z instrukcji, aby była zwracana stała wartość (zdefiniowana wcześniej) MAX_REAL. 21. Uzupełnij zestaw instrukcji (deklaracja datatype instruction) o Math.tan. Przy nieprawidłowym argumencie zgłaszany jest przez moduł Math wyjątek Domain (dziedzina). Napisz obsługę wyjątku bezpośrednio w funkcji intinstr, tak aby była zwracana wartość (zdefiniowana wcześniej) MAX_REAL lub ~MAX_REAL. Wskazówka: instrukcja handle powinna się znajdować bezpośrednio po operacji Math.tan x. 22. Wzorując się na programie procesora arytmetycznego zrealizuj procesor logiczny z operatorami koniunkcji i negacji operujący na liście elementów typu bool. Czy możliwe jest zgłaszanie przez nie wyjątków? Oblicz za pomocą programu kalkulatora wartość wyrażenia: not true and true. 23. Wzorując się na programie procesora arytmetycznego zrealizuj procesor logiczny z operatorami alternatywy i negacji operujący na liście elementów typu bool. Czy możliwe jest zgłaszanie przez nie wyjątków? Oblicz pomocą programu kalkulatora wartość wyrażenia: not true or false. 24. Napisz wariant funkcji intpprog, tak aby obliczenia wykonywane były krokowo (kolejny krok po naciśnięciu dowolnego klawisza). Wskazówka: użyj funkcji bibliotecznej TextIO.inputLine w następujący sposób: load "TextIO"; (* wczytanie biblioteki *) (* kontynuacja programu... *) val _ = TextIO.inputLine TextIO.stdIn; (* odczyt linii wystarczy klawisz ENTER *) Powyższą instrukcję należy wpisać w miejscu, w którym rekurencyjnie jest wywoływana funkcja intinstr. Do grupowania instrukcji użyj konstrukcji: ( instr1; instr2;...;instrn); albo zastosuj deklarację let... in...end. 25. Napisz inny wariant modelu procesora (funkcję intinstr), w którym nie występuje instrukcja PUSH of real. Dane powinny być już przy starcie programu umieszczone w pamięci (liście). Instrukcje jak dotychczas pobierają argumenty i składają rezultaty na stosie. Oblicz wartość wyrażenia: 2.0*(3.0+4.0)*5.0. 26. Napisz zmodyfikowaną funkcję intinstr, tak aby zgłaszała brak argumentu (1 lub 2)dla operacji ADD. Wskazówka: dopisz dwa dodatkowe warianty do funkcji intinstr. 27. Dopisz do listy instrukcji operacje na rejestrze X: WRX, RDX. Zmodyfikuj funkcję intinstr. Będzie ona teraz zwracała parę (stos, rejestr) i posiada trzy argumenty (instrukcja, stos, rejestr). Wartość początkową rejestru przyjmij jako zero. Wskazówka: funkcja intinstr może zawierać następujący wariant: intinstr(add, x::y::xs, rejx) = ((x+y)::xs, rejx) Wykonanie WRX oznacza przepisanie wartości z wierzchołka stosu do pola rejx. RDX działa odwrotnie. Zrealizuj z użyciem rejestru obliczenia 3.0*(2.0+3.0) + 4.0*(2.0+3.0) 28. Dopisz do listy instrukcji operacje na rejestrze X: WRX, RDX. Wartość początkowa argumentu jest nieznana. Zabezpiecz program przed odczytem rejestru, który nie był wcześniej

zapisany. Wskazówka: funkcja intinstr będzie posiadała 4 argumenty. Jednym z nich będzie flaga (typu bool) informująca o tym, że rejestr był już zapisywany. 29. Zmodyfikuj funkcję sprawdzającą poprawny tak, aby precyzyjnie informowała (przynajmniej dla jednego wariantu), która instrukcja jest błędna i z jakich powodów. Zastosuj funkcje pomocnicze: fun wypisz_stos ([]:stack) = "nil"^"\n" wypisz_stos (x1::xs) = (Real.toString x1)^" "^wypisz_stos(xs); fun wypisz_instr ( PUSH x) = "PUSH "^(Real.toString x) wypisz_instr ( ^^ ) = " ^^ " wypisz_instr ( ADD ) = " ADD " wypisz_instr ( SUB ) = " SUB " wypisz_instr ( MUL ) = " MUL "; 30. Zdefiniuj wielowariantową funkcję intinstr (drugim argumentem jest dowolna lista il) za pomocą konstrukcji case. Do wyodrębniania elementów listy użyj instrukcji postaci let val (x1::x2::xs) = il in...end; Uwzględnij generowanie wyjątków przy nieprawidłowych wywołaniach funkcji. 31. Zdefiniuj wielowariantową funkcję wypisz_instr za pomocą konstrukcji case. Zmodyfikuj intpprog tak, aby zliczała wykonane instrukcje. Teraz funkcja powinna zwracać parę. 32. Zadeklaruj funkcję usunnieparzyste, taką że: usunnieparzyste[x 1,x 2,x 3,x 4,...]=[x 2,x 4,...] 33. Podaj deklarację funkcji typu int list -> int option odszukującej najmniejszy element z listy liczb całkowitych. 34. Podaj deklarację funkcji typu int list -> int option odszukującej największy element z listy liczb całkowitych. 35. Zadeklaruj funkcję polacz łączącą elementy listy w pary, tzn. polacz [x 1,x 2,x 3,x 4,...]= [(x 1,x 2 ),(x 3,x 4 ),...]. 36. Zaproponuj deklarację funkcji length wyznaczającej długość listy. 37. Zadeklaruj funkcję krotnosc(x,ys), która podaje ile razy element x występuje na liście ys. 38. Napisz funkcję sprawdzającą, czy na podanej liście występują powtórzenia elementów. Działanie zaprezentuj na przykładzie. 39. Zrealizuj funkcję biblioteczną map typu: ('a -> 'b)->'a list -> 'b list wywołującą

podaną funkcję kolejno dla każdego elementu listy: map f [a1,a2,...,an] = [f(a1),f(a2),...,f(an)] 40. Napisz funkcję rev odwracającą kolejność elementów w liście. 41. Podaj definicję funkcji nty typu 'a list*int -> 'a option, która zwraca n-ty element na podanej liście (licząc od zera). 42. Napisz funkcję sprawdzającą, czy wszystkie całkowite elementy listy typu int są nieujemne. 43. Zaproponuj funkcję wstaw typu 'a list * int * 'a: 'a list wstawiającą do listy na podane miejsce (licząc od zera) określony element. 44. Napisz funkcję sprawdzającą, czy w rejestrze w kasie sklepowej nie występują powtórzenia kodów kreskowych. 45. Sprawdź, czy wszystkie ceny artykułów w bazie danych sklepu są nieujemne. 46. Zmień ceny w rejestrze kasy sklepowej, tak by były wartościami typu real. Oblicz średnią cenę artykułu. Wsk.: może to być kilka funkcji. 47. Dokonaj przeceny artykułu o kodzie Kod o 1/5. Napisz odpowiednią funkcję. 48. Wyszukaj wszystkie artykuły o cenach zawartych w podanym zakresie (min,max). 49. Rozszerz rejestr o daną typu int zawierającą informację o liczbie sztuk w magazynie. Napisz funkcję, która zwraca listę artykułów, których liczba jest mniejsza niż MIN. 50. Wyszukaj za pomocą odpowiedniej funkcji najtańszy artykuł w sklepie. 51. Znajdź n-artykułów najtańszych w sklepie. Utwórz odpowiednią funkcję. Wsk.: najpierw posortuj.

52. Znajdź n-artykułów najdroższych w sklepie. Utwórz odpowiednią funkcję. Wsk.: najpierw posortuj. 53. Wyszukaj za pomocą odpowiedniej funkcji najdroższy artykuł w sklepie. 54. Zadeklaruj funkcje ++, ** z funkcjami mnozconst, mnozx jako lokalnymi ( niewidocznymi z zewnątrz).

55. Jaką funkcję realizuje przedstawiony na poniższym rysunku układ? Wykaż formalnie. b a 1 S 0 S 1 MUX 0 1 2 3 f Sprawdź formalnie które z poniższych wzorów są prawdziwe? 56. [( p q) r] [ p ( q r)] 57. [( p q) r] [( p q) ( q r)] Sprawdź formalnie które z poniższych wzorów są prawdziwe? 58. ( p + q) ( p + r) ( q + r) ( p + q) ( p + r) 59. q [( p + q) p] 60.. Dekoder jest układem o n wejściach i 2 n wyjściach. Do dekodera 2:4 dołączono sygnały A, B. Zaproponuj układ, który dołączony do wyjść dekodera odtworzy sygnały A,B. Wykaż formalnie poprawność działania. DX 0 1 A 0? B 1 2 A B 3 61. Wykaż słuszność następującego rozumowania: Jeśli student nie złoży projektu, to nie zaliczy przedmiotu X. Jeśli student nie zaliczy przedmiotu X, to nie przejdzie na następny rok. Zatem jeśli student przeszedł na następny rok, to znaczy, że musiał złożyć projekt z przedmiotu X. Wskazówka. Jako atomy można przyjąć następujące zdania logiczne: 1) student składa projekt, 2) przedmiot X zaliczony, 3) student przechodzi na następny rok.

62. Wykaż, że poniższy układ realizuje podaną funkcję. x = a( b + cd) a b c d x 62. Dwa spośród sześciu sygnałów sterujących odłącznikami transformatorów i odłącznikiem sekcyjnym w stacji dwutransformatorowej mają postać x = a + c, z = e + a + c + b + d + c + d gdzie: a, b stany przekaźników podnapięciowych (1 jest napięcie (true)) c, d stany odłączników transformatorów (1 zamknięty) e stan odłącznika sekcyjnego (1 zamknięty) x z sygnał otwierania odłącznika transformatora I (1 otwieranie) sygnał zamykania odłącznika sekcyjnego (1 zamykanie). Narysuj schemat złożony z dowolnych bramek i zweryfikuj go. 63. Udowodnij formalnie, że następujące dwa układy kombinacyjnie nie generują identycznych wyjść. a b c Y a c Y d 64. Górny moduł wyświetlacza 7-segmentowego jest zapalany zgodnie z funkcją x = abd + acd + bcd + abc Zaproponuj układ złożony z multipleksera 4:1 i bramek, który zrealizuje taką funkcję. Wykaż formalnie jego poprawność.

65. Napisz program w dziedzinie boolowskiej realizujący funkcję przerzutnika D (bez wejścia resetującego) na podstawie zero-jedynkowej tablicy prawdy. Udowodnij formalnie, że program ten odpowiada specyfikacji (zob. Wykł. 6). Użyj funkcji IF_POST(). 66. Napisz program realizujący sterowanie otwieraniem szlabanu kolejowego (U2, Wykł. 7). Przeprowadź kilka testów. Udowodnij poprawność. U2 =!B*B[i-1]*!C + U2[i-1]*!C 67. Przerzutnik D można zrealizować według rysunku obok. Uzasadnij to formalnie (zob. Wykł. 6 i 7). C PULSE D MUX 68. Napisz program w dziedzinie boolowskiej realizujący funkcję przerzutnika SR na podstawie tablicy zero-jedynkowej. Uzasadnij, że jest on poprawny. Użyj funkcji IF_POST(). 69. Zaproponuj program realizujący funkcję blokowanego generatora fali prostokątnej (funkcjonującego jak na rysunku obok). Udowodnij formalnie, jest on poprawny. EN GEN Y EN Y że 70. Jaką funkcję realizuje układ? Uzasadnij na podstawie testów i formalnie. NOT BUF x i x i-1 AND

71. Jaką funkcję realizuje układ? Uzasadnij na podstawie testów i formalnie. A B S R SET 1 CLR S R SET 2 CLR X 72. Jaką funkcję realizuje układ? Uzasadnij na podstawie testów i formalnie. BUF x i x i-1 EXOR 73. Przy pojawieniu się narastającego zbocza na wejściu blok przerzutnika T (uproszczonego) zmienia wyjście. Jak wygląda specyfikacja? Napisz program w dziedzinie boolowskiej realizujący funkcję przerzutnika i wykaż jego poprawność. SET x y T i =y i-1 CLR