Test GR: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Rogoda (dyskusja | edycje)
Nie podano opisu zmian
Rogoda (dyskusja | edycje)
Nie podano opisu zmian
Linia 5: Linia 5:




<quiz type="exclusive">
Której cechy język obiektowy nie musi posiadać?
<wrongoption reply="Źle">abstrakcyjne typy danych</wrongoption>
<wrongoption reply="Źle">dynamiczne wiązanie wywołań metod z metodami</wrongoption>
<wrongoption reply="Źle">dziedziczenie</wrongoption>
<rightoption reply="Dobrze">podprogramy rodzajowe</rightoption>
</quiz>
<quiz type="exclusive">
Jakie ograniczenie na przedefiniowywanie metod trzeba narzucić
w języku silnie typowanym?
<wrongoption reply="Źle">przedefiniowana metoda musi być bezparametrowa</wrongoption>
<wrongoption reply="Źle">przedefiniowana metoda musi być typu void</wrongoption>
<rightoption reply="Dobrze">przedefiniowana metoda musi zachować taki sam protokół</rightoption>
<wrongoption reply="Źle">nie trzeba narzucać żadnych ograniczeń</wrongoption>
</quiz>
<quiz type="exclusive">
Rozstrzyganie odwołań do bytów o takiej samej nazwie mających definicje w dwóch klasach bazowych odbywa się w C++ za pomocą:
<rightoption reply="Dobrze">operatora \:\: (dwa dwukropki)</rightoption>
<wrongoption reply="Źle">operatora . (kropka)</wrongoption>
<wrongoption reply="Źle">tego nie da się zrobić</wrongoption>
<wrongoption reply="Źle">dziedziczenie wielokrotne nie jest w C++ dozwolone</wrongoption>
</quiz>
<quiz type="exclusive">
W języku C++ obiekty zaalokowane na stosie dealokowane są:
<rightoption reply="Dobrze">niejawnie</rightoption>
<wrongoption reply="Źle">za pomocą delete</wrongoption>
<wrongoption reply="Źle">za pomocą free</wrongoption>
<wrongoption reply="Źle">w C++ nie ma takich obiektów</wrongoption>
</quiz>
<quiz type="exclusive">
Językiem, w którym stosowane jest zawsze dynamiczne wiązanie
wywołań z metodami, jest:
<wrongoption reply="Źle">C++</wrongoption>
<wrongoption reply="Źle">C\#</wrongoption>
<wrongoption reply="Źle">Java</wrongoption>
<rightoption reply="Dobrze">Smalltalk</rightoption>
</quiz>
<quiz type="exclusive">
Językiem, w któym klasa może być samoistna (tzn. nie mieć nadlasy), jest:
<rightoption reply="Dobrze">C++</rightoption>
<wrongoption reply="Źle">C\#</wrongoption>
<wrongoption reply="Źle">Java</wrongoption>
<wrongoption reply="Źle">Smalltalk</wrongoption>
</quiz>
<quiz type="exclusive">
W języku C++ metody, które mają być wiązane dynamicznie, deklaruje się za pomocą:
<wrongoption reply="Źle">operatora -> (strzałka)</wrongoption>
<wrongoption reply="Źle">słowa abstract</wrongoption>
<wrongoption reply="Źle">słowa dynamic</wrongoption>
<rightoption reply="Dobrze">słowa virtual</rightoption>
</quiz>
<quiz type="exclusive">
Który nagłówek poprawnie deklaruje w C++ metodę abstrakcyjną?
<wrongoption reply="Źle">virtual void p();</wrongoption>
<rightoption reply="Dobrze">virtual void p() \=0;</rightoption>
<wrongoption reply="Źle">void p() \=0;</wrongoption>
<wrongoption reply="Źle">abstract void p();</wrongoption>
</quiz>
<quiz type="exclusive">
Klasy ,,lekkie'', deklarowane jako struct, alokowane na stosie i nie
pozwalające na dziedziczenie występują w:
<wrongoption reply="Źle">C++</wrongoption>
<rightoption reply="Dobrze">C\#</rightoption>
<wrongoption reply="Źle">Javie</wrongoption>
<wrongoption reply="Źle">we wszystkich wymienionych tu językach</wrongoption>
</quiz>
<quiz type="exclusive">
Który element nie występuje w JavaScripcie?
<rightoption reply="Dobrze">klasy</rightoption>
<wrongoption reply="Źle">obiekty złożone z par (nazwa własności, wartość)</wrongoption>
<wrongoption reply="Źle">operator new</wrongoption>
<wrongoption reply="Źle">zmienne</wrongoption>
</quiz>
Test 4
<quiz type="exclusive">
<quiz type="exclusive">
Który język nie pozwala na użycie parametrów z wartością domyślną?
Który język nie pozwala na użycie parametrów z wartością domyślną?

Wersja z 21:38, 12 wrz 2006



Której cechy język obiektowy nie musi posiadać?

abstrakcyjne typy danych

dynamiczne wiązanie wywołań metod z metodami

dziedziczenie

podprogramy rodzajowe

Jakie ograniczenie na przedefiniowywanie metod trzeba narzucić w języku silnie typowanym?

przedefiniowana metoda musi być bezparametrowa

przedefiniowana metoda musi być typu void

przedefiniowana metoda musi zachować taki sam protokół

nie trzeba narzucać żadnych ograniczeń

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)

operatora . (kropka)

tego nie da się zrobić

dziedziczenie wielokrotne nie jest w C++ dozwolone

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

niejawnie

za pomocą delete

za pomocą free

w C++ nie ma takich obiektów

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

C++

C\#

Java

Smalltalk

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

C++

C\#

Java

Smalltalk

W języku C++ metody, które mają być wiązane dynamicznie, deklaruje się za pomocą:

operatora -> (strzałka)

słowa abstract

słowa dynamic

słowa virtual

Który nagłówek poprawnie deklaruje w C++ metodę abstrakcyjną?

virtual void p();

virtual void p() \=0;

void p() \=0;

abstract void p();

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

C++

C\#

Javie

we wszystkich wymienionych tu językach

Który element nie występuje w JavaScripcie?

klasy

obiekty złożone z par (nazwa własności, wartość)

operator new

zmienne







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

Ada

C

C++

PHP

Przekazanie funkcji jako parametru można w C\# osiągnąć za pomocą mechanizmu:

bezpośrednio, bez dodatkowych mechanizmów

delegatów

tablic wielowymiarowych

wskaźników do funkcji

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

Ada

C#

Java

PHP

Przy której deklaracji procedury f wywołanie f(2*x + 3) jest poprawne?

procedure f(n: in out Integer) w Adzie

procedure f(n: out Integer) w Adzie

void f(int n) w języku C

void f(int *n) w języku C

Chcąc w języku C przekazać do funkcji tablicę przez wartość, trzeba:

,,obudować ją strukturą i przekazać tę strukturę

użyć nawiasów kwadratowych po nazwie tablicy w wywołaniu funkcji

użyć nawiasów kwadratowych po nazwie parametru w nagłówku funkcji

nie trzeba robić niczego szczególnego

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

są zawsze alokowane statycznie

wymuszają statyczne sprawdzenie zgodności typu

nie mają żadnej dodatkowej cechy


Załóżmy, że x jest parametrem w trybie out w procedurze w Adzie. Która instrukcja ma szansę być poprawna?

x \:\= x + 1

x \:\= y + 1

y \:\= x + 1

y \:\= T(x)

Jawne przekazywanie przez referencję jest w C\# możliwe, jeśli umieścimy słowo kluczowe ref:

przy parametrze aktualnym

przy parametrze formalnym

i przy parametrze formalnym, i przy aktualnym

to w ogóle nie jest możliwe

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

środowiska instrukcji (w podprogramie), wywołującej przekazany podprogram

środowiska definicji przekazanego podprogramu

środowiska instrukcji, która przekazała podprogram jako parametr

żadnego z wymienioinych środowisk

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

tylko łącza statycznego

łącza dynamicznego i statycznego

żadnego z nich






Test 3 Pojęcie typu w językach imperatywnych bliskie jest pojęciu:

całki Riemanna

pary uporządkowanej

zbioru nieskończonego

zbioru skończonego

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

struktura wraz z kilkoma działającymi na niej funkcjami

typ wskaźnikowy T *, gdzie T jest zdefiniowane następująco\: typedef int T[10];

wbudowany typ float

unia złożona z pól tego samego typu

W której sytuacji tablica asocjacyjna byłaby istotnie wygodniejsza niż zwykła tablica?

mamy katalogi ponumerowane od 1 do 100 i zapisujemy ich rozmiar

sortujemy obszerną tablicę liczb typu double

wyszukujemy największą liczbę w tablicy

zapisujemy kolor przejeżdżających samochodów, identyfikując je numerami rejestracyjnymi

Ewentualne luki między przechowywanymi w pamięci polami rekordu biorą się z:

konieczności sprawdzenia zgodności typów

konieczności umieszczania pól pod adresami, których 1 lub 2 najmniej znaczące bity są zerami

niedoskonałości kompilatorów

szybkich przesunięć cyklicznych w jednostce arytmetyczno-logicznej procesora

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?

istnieje kilka rozmiarów liczb całkowitych

napisy mogą zawierać nieistotne znaki za znacznikiem końca

nie można z góry przewidzieć, czy napisy są zapisane w kodzie ASCII, czy Unicode

reprezentacja liczb float i double nie jest jednoznaczna

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

&

++

--

nawiasy kwadratowe do indeksowania

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

C++

C\#

Java

Pascal

Które stwierdzenie jest fałszywe w odniesieniu do klas w języku C++?

definicja klasy nie musi zawierać destruktora

funkcje z klasy mogą być kompilowane jako inline

konstruktor ma taką samą nazwę jak klasa

konstruktor nie może być przeciążany

W Javie obiekty są alokowane:

dynamicznie na stercie

dynamicznie na stosie

statycznie na stercie

statycznie na stosie

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

args

generic

params

template







Test 2 Program może zawierać dwie różne zmienne o tej samej nazwie, gdy są to zmienne:

alokowane dynamicznie

globalne

lokalne w dwóch różnych blokach

lokalne w tym samym bloku

L-wartością nazywamy:

bieżący adres zmiennej

wynik wyrażenia arytmetycznego

indeks tablicy

wartość zmiennej po dokonaniu podstawienia

Wiązanie statyczne:

może zmienić się w trakcie wykonania programu

następuje w trakcie wykonania programu

następuje przed wykonaniem programu

odnosi się tylko do zmiennych globalnych

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

funkcyjnych

logicznych

obiektowych

nie występuje w żadnym przyzwoitym języku

Okres życia zmiennej to:

czas pomiędzy alokacją zmiennej a jej dealokacją

czas od uruchomienia programu do chwili wykonania na tej zmiennej delete, free itp.

obszar kodu pomiędzy deklaracją zmiennej a końcem zawierającego ją bloku

czas od pierwszego podstawienia pod tę zmienną do ostatniego jej użycia w programie

Obiekty w Javie są alokowane:

dynamicznie, na stercie

dynamicznie, na stosie

dynamicznie, na stosie lub na stercie (decyzję podejmuje kompilator)

statycznie

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

C

C++

C\#

PHP

Silne typowanie bywa ,,osłabiane przez:

jawne konwersje typów

niejawne konwersje typów

dynamiczne sprawdzanie zgodności typów

statyczne sprawdzanie zgodności typów

Podtyp to:

typ powstały przez ograniczenie zakresu istniejącego typu, zgodny z owym typem

nowy typ oparty na już istniejącym, niezgodny z dotychczasowym

typ tablicowy, w którym ograniczono zakres indeksów

jedno z pól unii

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

\:\: (dwa dwukropki)

. (kropka)

* (gwiazdka)

-> (strzałka)