Paradygmaty programowania/Test 3: Typy, typy abstrakcyjne

From Studia Informatyczne

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