szymański,języki i paradygmaty programowania, test.doc

(82 KB) Pobierz
Test 1: Co to jest paradygmat programowania

Test 1: Co to jest paradygmat programowania?

1)      Programowanie imperatywne jest ściśle związane z budową sprzętu komputerowego o architekturze: von Neumanna

2)      Abstrakcją komórek pamięci (w paradygmacie imperatywnym) są: zmienne

3)      Dziedziczenie jest cechą charakterystyczną dla programowania: obiektowego

4)      Obiekt to powiązanie danych z: operacjami na tych danych

5)      W programowaniu funkcyjnym nie występują: pętle

6)      Automatyczne dowodzenie twierdzeń (prostych...) jest możliwe w programowaniu: obiektowym

7)      Język C++ reprezentuje paradygmat: imperatywny i obiektowy

8)      Pierwszym językiem obiektowym był język: Simula 67

9)      Czy optymalizacja kodu wykonywana przez kompilator może poprawić asymptotyczną złożoność obliczeniową programu? tak, ale rzadko

10)   Składnię języków programowania opisuje się za pomocą gramatyk: bezkontekstowych

Test 2: Semantyka zmiennych

11)   Program może zawierać dwie różne zmienne o tej samej nazwie, gdy są to zmienne: lokalne w dwóch różnych blokach

12)   L-wartością nazywamy: bieżący adres zmiennej

13)   Wiązanie statyczne: następuje przed wykonaniem programu

14)   Wnioskowanie o typie zmiennej jest najczęstsze w językach: funkcyjnych

15)   Okres życia zmiennej to: czas pomiędzy alokacją zmiennej a jej realokacją

16)   Obiekty w Javie są alokowane: dynamicznie, na stercie

17)   Spośród wymienionych tu języków najbliższy silnemu typowaniu jest: C#

18)   Silne typowanie bywa ,,osłabiane przez: niejawne konwersje typów

19)   Podtyp to: typ powstały przez ograniczenie zakresu istniejącego typu, zgodny z owym typem

20)   W języku C++ dostęp do przesłoniętej zmiennej nielokalnej można uzyskać za pomocą operatora: :: (dwa dwukropki)

Test 3: Typy, typy abstrakcyjne

21)   Pojęcie typu w językach imperatywnych bliskie jest pojęciu: zbioru skończonego

22)   Który z opisanych poniżej typów można uznać za typ abstrakcyjny? Rzecz dzieje się w języku C: wbudowany typ float

23)   W której sytuacji tablica asocjacyjna byłaby istotnie wygodniejsza niż zwykła tablica? zapisujemy kolor przejeżdżających samochodów, identyfikując je numerami rejestracyjnymi

24)   Ewentualne luki między przechowywanymi w pamięci polami rekordu biorą się z: konieczności umieszczania pól pod adresami, których 1 lub 2 najmniej znaczące bity są zerami

25)   Załóżmy, że w języku C sprawdzamy równość struktur (oczywiście tego samego typu). Dlaczego w ogólności nie można tego zrobić przez porównywanie bloków pamięci? napisy mogą zawierać nieistotne znaki za znacznikiem końca

26)   Który operator języka C jest potrzebny, gdy wykorzystujemy wskaźniki do adresowania pośredniego? &

27)   Załóżmy, że p jest zmienną wskaźnikową. W którym języku wyrażenie ++p jest poprawne? C++

28)   Które stwierdzenie jest fałszywe w odniesieniu do klas w języku C++? konstruktor nie może być przeciążany

29)   W Javie obiekty są alokowane: dynamicznie na stercie

30)   Sparametryzowane typy abstrakcyjne uzyskuje się w C++ za pomocą deklaracji z użyciem słowa kluczowego: template

Test 4: Podprogramy

31)   Który język nie pozwala na użycie parametrów z wartością domyślną? C

32)   Przekazanie funkcji jako parametru można w C# osiągnąć za pomocą mechanizmu: delegatów

33)   Który język nie sprawdza zgodności typów parametrów? PHP

34)   Przy której deklaracji procedury f wywołanie f(2*x + 3) jest poprawne? void f(int n) w języku C

35)   Chcąc w języku C przekazać do funkcji tablicę przez wartość, trzeba: "obudować" ją strukturą i przekazać tę strukturę

36)   Jaką dodatkową cechę mają parametry stałe deklarowane w C++ z użyciem const w stosunku do parametrów w trybie wejściowym w ogóle? nie mogą być zmieniane nawet w obrębie podprogramu

37)   Załóżmy, że x jest parametrem w trybie out w procedurze w Adzie. Która instrukcja ma szansę być poprawna? x := y + 1

38)   Jawne przekazywanie przez referencję jest w C# możliwe, jeśli umieścimy słowo kluczowe ref: i przy parametrze formalnym, i przy aktualnym

39)   W językach z zakresem widoczności zmiennych wiązanym statycznie jako środowiska wykonywania przekazanego przez parametr podprogramu najczęściej używa się: środowiska definicji przekazanego podprogramu

40)   W implementacji podprogramów bez zagnieżdżeń, ale z rekurencją i z dynamicznymi zmiennymi lokalnymi na stosie potrzebne jest przechowywanie w rekordzie aktywacyjnym: tylko łącza dynamicznego

 

 

 

Test 5: Programowanie obiektowe — przegląd

41)   Której cechy język obiektowy nie musi posiadać? podprogramy rodzajowe

42)   Jakie ograniczenie na przedefiniowywanie metod trzeba narzucić w języku silnie typowanym? przedefiniowana metoda musi zachować taki sam protokół

43)   Rozstrzyganie odwołań do bytów o takiej samej nazwie mających definicje w dwóch klasach bazowych odbywa się w C++ za pomocą: operatora :: (dwa dwukropki)

44)   W języku C++ obiekty zaalokowane na stosie dealokowane są: niejawnie

45)   Językiem, w którym stosowane jest zawsze dynamiczne wiązanie wywołań z metodami, jest: Smalltalk

46)   Językiem, w któym klasa może być samoistna (tzn. nie mieć nadklasy), jest: C++

47)   W języku C++ metody, które mają być wiązane dynamicznie, deklaruje się za pomocą: słowa virtual

48)   Który nagłówek poprawnie deklaruje w C++ metodę abstrakcyjną? virtual void p()=0;

49)   Klasy "lekkie", deklarowane jako struct, alokowane na stosie i nie pozwalające na dziedziczenie występują w: C#

50)   Który element nie występuje w JavaScripcie? Klasy

Test 6: Programowanie funkcyjne — przegląd

51)   Czego z zasady nie ma w językach funkcyjnych? Pętli

52)   Która cecha jest typowa dla języków funkcyjnych, a rzadko występuje w językach imperatywnych i obiektowych? możliwość używania funkcji wyższego rzędu

53)   Listy służą w Lispie do zapisywania: i danych, i kodu

54)   Wywołanie ((LAMBDA (x) (* x x)) 2) w języku Scheme: wyświetli 4

55)   Funkcja DISPLAY w języku Scheme: wyświetla swój argument na ekranie

56)   Wartością wyrażenia (CAR ‘(A B C)) w języku Scheme jest: A

57)   Wartością wyrażenia (CONS ‘(A B) ‘(C D)) w języku Scheme jest: ((A B) C D)

58)   Jak w języku Scheme należy zapisać wywołanie złożenia funkcji f z samą sobą na argumencie x, czyli (f o f)(x)? (f (f x))

59)   Które stwierdzenie nie jest prawdziwe w odniesieniu do języka ML? lista może zawierać elementy różnych typów

60)   Do łączenia list w Haskellu służy: operator ++

Test 7: Programowanie w logice - przegląd

61)   Używane w Prologu klauzule Horna mają w następniku: zero lub jeden term

62)   Stosowana w Prologu metoda wnioskowania to: rezolucja

63)   Klauzula "dziadek(X, Z) :- ojciec(X, Y), ojciec(Y, Z).": mówi tylko, że jeśli X jest ojcem Y i Y jest ojcem Z, to X jest dziadkiem Z

64)   Do tworzenia i rozkładania list w Prologu stosuje się: operator | i odpowiednie dopasowania

65)   Zapis "X is 3 * Y + 4" w Prologu powoduje: utożsamienie (lub sprawdzenie utożsamienia) zmiennej X z wartością wyrażenia 3*Y+4

66)   Jeśli Prologowi nie uda się udowodnić jednego z podcelów, to: wraca do poprzednich podcelów, próbując znaleźć alternatywne rozwiązania

67)   Dla stwierdzeń złożonych Prolog stosuje: przeszukiwanie w głąb

68)   Zapis [X | Y] w Prologu oznacza: listę, gdzie X jest głową, a Y -- ogonem listy

69)   Jaką klauzulę należałoby dopisać przed ,,f(X, [_ | Y]) :- f(X, Y).", by otrzymać funktor sprawdzający przynależność elementu do listy? f(X, [X | _]).

70)   Lista [1, [2, 3], 4, []] ma długość: 4

Test 8: U podstaw programowania funkcyjnego — rachunek lambda

71)   Jeśli \displaystyle Mjest termem rachunku lambda, zaś \displaystyle xjest zmienną, to \displaystyle \lambda M.xnazywamy: abstrakcją

72)   W termie \displaystyle \lambda xy.yzwolna jest zmienna:               \displaystyle z

73)   Który term jest wynikiem \displaystyle \alpha-konwersji termu \displaystyle \lambda x.xy?               \displaystyle \lambda z.zy

74)   Wynikiem \displaystyle \beta-redukcji termu \displaystyle (\lambda xy.xy)zjest term:               \displaystyle \lambda y.zy

75)   Aplikacja \displaystyle PQzwana jest redeksem, jeśli: \displaystyle Pjest w postaci abstrakcji

76)   Mówimy, że term jest w postaci normalnej, jeśli: żaden jego podterm nie jest redeksem

77)   Postać normalna (o ile istnieje) jest unikalna z dokładnością do: \displaystyle \alpha-konwersji

78)   Przymując standardową reprezentację liczb naturalnych w rachunku lambda, term \displaystyle \lambda mnsx.(ms)(nsx)reprezentuje: dodawanie

79)   Funkcje reprezentowalne w rachunku lambda (klasycznym, beztypowym) odpowiadają dokładnie modelowi: funkcji obliczalnych totalnych (nieczęściowych)

80)   Operator punktu stałego to term \displaystyle Ytaki, że dla dowolnego termu \displaystyle Maplikacja \displaystyle YMjest równa, modulo \displaystyle \beta-redukcja: \displaystyle M(YM)

 

 

Test 9: U podstaw programowania obiektowego — rachunek sigma

81)   Rachunek sigma opisuje obiekty na poziomie abstrakcji podobnym do tego, na którym funkcje są opisywane przez: rachunek lambda

82)   Podobnie jak w rachunku sigma, obiekty bez klas pojawiają się w języku: JavaScript

83)   Która relacja nie pasuje do pozostałych w kontekście języka C++? relacja zawierania bloków kodu

84)   W rachunku sigma obiekt to zbiór metod, dla których mamy dwie operacje — wywołanie i: nadpisanie

85)   W rachunku sigma każda metoda posiada ciało oraz parametr reprezentujący: jaźń obiektu

86)   Zapis \displaystyle [l=\varsigma(x)[]]oznacza: obiekt zawierający jedną metodę, zwracającą obiekt pusty

87)   Jeśli \displaystyle ojest obiektem \displaystyle [l=\varsigma(x)x.l], to wywołanie \displaystyle o.lda w wyniku:wywołanie to nie da wyniku, gdyż obliczenia nie kończą się

88)   Jeśli \displaystyle ojest obiektem \displaystyle [l=\varsigma(x)x], to wywołanie \displaystyle o.lda w wyniku: obiekt \displaystyle o

89)   Relacja redukcji (rozszerzona, z gwiazdką) w rachunku sigma spełnia własność Churcha-Rossera. Oznacza to, że jeśli \displaystyle a \to^* bi \displaystyle a \to^* c, to: istnieje \displaystyle d...

Zgłoś jeśli naruszono regulamin