Wprowadzenie do informatyki
Informatyka, I rok, egzamin pisemny
5.02.97, czas: 90 min
  1. Należy skonstruować maszynę Turinga, która mając ciąg wejściowy zaczynający się symbolem L, po którym występuje ciąg symboli x a po nim zera i jedynki, usuwa z niego symbole x i ustawia głowicę na końcu, za ostatnim znakiem ciągu wynikowego. Na przykład, jeżeli na początku mamy ciąg postaci
    L x x 0 1 0 B B ...
    (głowica znajduje się nad symbolem L), to po wykonaniu obliczeń otrzymamy ciąg
    L 0 1 0 B B ....
    i głowica będzie znajdować się nad lewym symbolem B.

    Oto proponowane rozwiązanie:

    Co należy wpisać w miejsca oznaczone literami a i b, aby to rozwiązanie było kompletne i poprawne ?

  2. Należy napisać schemat translacji, który czyta ciąg zawierający najpierw n zer, a po nim dwukropek i ciąg n jedynek (n>=0) i przepisuje na wyjście tylko zera. Na przykład, jeśli na wejściu pojawi się ciąg 000:111, to na wyjściu powinniśmy otrzymać 000. Ciąg 00:111 jest niepoprawny (jedynek jest więcej niż zer). Również niepoprawny jest ciąg 0101:0101 (najpierw mają być same zera a potem dwukropek i same jedynki). Oto rozwiązanie:
    %%
    S:  ***   {writeln('0');}
     | ':'
     ;
    
    Co należy wpisać w miejsce trzech gwiazdek, aby to rozwiązanie było poprawne ?

  3. Niech x będzie niepustą listą, np. (A B C D). Wówczas wartością car[x] jest pierwszy symbol listy x, czyli w naszym przypadku będzie to symbol A. Należy napisać funkcję last[x], której wartością jest ostatni symbol niepustej listy x (w naszym przy- kładzie powinien to być symbol D). Przypomnijmy, ze lista (A B C D) zapisana w notacji kropkowej będzie miała postać (A.(B.(C.(D.NIL)))).
       Oto definicja funkcji last[x]:
    label[last; lambda[[x]; [atom[cdr[x]] -> car[x];
                               T -> ***
         ]           ]       ]
    
    Co należy wpisać w miejsce trzech gwiazdek, aby to rozwiązanie było poprawne ?

  4. Dany jest następujący program w Prologu:
          +D(Z,*X,*X).
          +D(S(*X),*Y,S(*Z)) -D(*X,*Y,*Z).
          -D(S(Z),*Y,S(S(S(Z)))) - SORT(*Y) !
    
    Jaki będzie wynik działania tego programu ?

  5. Funkcja F(x) jest zdefiniowana następująco:

    F(x)= (m a) [x < 2a+1 ]
    Poniższy schemat ma opisywać czytanie nieujemnej liczby x i drukowanie wartości F(x):

    Co należy wpisać w miejsce trzech gwiazdek, aby ten schemat był poprawny ?

UWAGA!Zadania nr 2,3,4 wykraczają poza program wykładów przezentowanych w roku akademickim 1999/2000


Stronę opracowała Ewa Gałkowska. Ostatnia modyfikacja: