0. Przesunięcie bitowe: 7<<3
a) Wyjście bez zastanowienia 7 << 3 7*2^3= 7*8= 56
b) Zastanawiamy się. Zamień 7 na kod binarny (dwójkowy).
7 to 111.
Teraz 111 przesuń w lewo o 3 pozycje dodając tyle zer na końcu o ile
przesunełeś/aś całość (trzy zera).
111000 111000 to 56
1. Podać wynik 3 & 7
- operator & to bitowa koniunkcja (iloczyn bitowy), więc musimy przejść na kod
dwójkowy.
3 to 11, a 7 to 111.
Iloczyn:
011
& 111
011
Wynik to: 3
2. Zadeklarować zmienną całkowitą o nazwie X, żeby była zawsze dodatnia:
unsigned int X
3. Jaki jest rozmiar zmiennej wskaźnikowej w bajtach:
4 bajty
4. Do czego służą flagi otwierania plików?
Flaga otwarcia pliku, służy do określenia w jaki sposób będziemy korzystać z pliku (odczyt/zapis)
Uwaga! Możliwe jest otwarcie pliku jednocześnie do odczytu i zapisu.
5.Definicja funkcji z użyciem referencji - czy jest poprawna:
void funkcja (float z, int &d, char*tab[])
{…}
Błędna - “char*tab[]” nie jest przekazaniem przez referencję (by MKO)
6. Co powoduje continue w pętli while?
Wyjście z pętli (przejście na jej koniec) i ponowne sprawdzenie warunku.
7. Co powoduje continue w instrukcji switch?
Continue będzie dotyczyło pętli nadrzędnej, a nie switcha; przy braku pętli błąd kompilacji
8. Czym różni się Struktura od Unii(?)
W unii wszystkie składowe obiektu umieszczane są pod tym samym adresem. Zatem w danej chwili dostępna jest tylko jedna składowa, a struktura zawiera wszystkie dane.
Efekt - unia o tych samych elementach co struktura ma mniejszy rozmiar w pamięci; tj. rozmiar największego elementu składowego.
9. Wartość Optymistyczna dla sortowania Quicksort:
O(n log n)
10. Podać wynik 7 >> 3
- 7 / 2^3 = 7/8 (ale „>>” działa tylko na całkowitych (zaokrągla do int)
- (b) 111, przesuwamy o 3 bity w prawo
000, a więc wynik to 0.
11. Rekurencyjne wywołanie funkcji musi być zrealizowane jako jedna z instrukcji w tej
samej funkcji?
Nie, nie musi
12. Co przechowują zmienne wskaźnikowe: (jedna prawdziwa)
a) wskazanie na funkcję systemu operacyjnego, który kontroluje dostęp do zasobów ….
b) adresy na dowolne inne zmienne.
c) wskazania na tablice dla wszystkich innych zmiennych.
d) adresy obszarów pamięci stosu gdzie zapisane są wszystkie zmienne.
e) adresy na inne zmienne nie będące wskaźnikami
f) wskazania na miejsca, gdzie zapisane są adresy do wartości innych zmiennych
13. Do czego służy operator sizeof()
zwraca rozmiar (w bajtach) zmiennej danego typu np. sizeof(int) zwraca rozmiar int, czyli 4 bajty
14. Co należy wstawić w miejsce XXXX?
struct student{
int album;
char *imie[20];
char nazwisko*[40];
}
int funtion Dodaj(){
student*bufor;
bufor = XXXX student;
cin >> bufor -> album;
//itd.
}
new (tworzy nową instancję struktury student)
15. Ile razy wykona się instrukcja do ... while();
int i =0, j =1, k = 2;
do{
k++; // instrukcje cyklu
} while ((((i++) < 10) || (++j < 11 )) && (k > 12 ));
Jeden raz. W pierwszym obiegu pętli k=3, nie spełnia warunku k>12
16. Jakie cechy szczególne są prawdziwe dla struktur dynamicznych nazywanych drzewami
binarnymi (wybrać wszystkie prawdziwe)
a) na początku każdego drzewa występują dwa elementy binarne.
b) niektóre drzewa posiadają specjalny element nazywany korzeniem.
c) na samej górze drzewa występują liście.
d) każdy z elementów może zawierać wskazania na nie więcej niż dwa inne elementy.
e) dla każdego elementu za wyjątkiem korzenia określony jest dokładnie jeden element
poprzedni.
f) na samym końcu drzewa może występować korzeń(np. w drzewach jednoelementowych)
17. Ile razy wykona się pętla while?
int i = 0, j = 0, k =2;
while(i < 51 || j < 101){
…..
i++;
j + = k;
}
51 razy. (Dlaczego: ponieważ liczymy od zera)
18. Rozpoznać która tablica zapełniona liczba ma charakter stogu?
Wszystko jest w 4 wykładzie dr Marcina Głowackiego. Bardzo proste i przyjemne. Wystarczy pamiętać warunek kopca - elementy są posortowane nierosnąco (max-heap) lub niemalejąco (min-heap).
II
1. Wskaż, która z odpowiedzi jest prawdziwa (jedna):
a) w plikach można dowolnie adresować każdy element podczas operacji odczytu i
zapisu.
b) dane zapisane w jednym pliku mogą być tylko jednego typu.
c) pliki binarne nie mogą przechowywać tekstów.
d) pliki można jednocześnie otwierać w trybie do odczytu i zapisu.
e) dostęp do danych w pliku odbywa się sekwencyjnie poprzez wczytywanie danych od
końca do początku.
3. Wskaż prawdziwe stwierdzenia dotyczące plików: (parę do wyboru) (demokratycznie uznano A i C za poprawne odpowiedzi. aczkolwiek pytanie i odpowiedzi pozostawiają duże pole do dowolnej interpretacji. MKO)
a) pliki binarne przechowują kody programów uruchamialnych oraz programy
źródłowe.
b) w C++ już nie istnieją zróżnicowane typy plików.
c) pliki tekstowe przechowują teksty, dowolne struktury oraz programy źródłowe.
d) istnieje pełna dowolność - wszystko zależy od programistów.
e) można definiować nowe typy plików na bazie typów istniejących.
4. W metodzie rekurencyjnej: (jedna)?
a) wykorzystuje się instrukcję cykliczną while() dla kolejnych wywołań rekurencyjnych
b) na początku znana jest liczba kolejnych zagnieżdżeń.
c) definiuje się warunek dla kontynuacji lub przerwania rekurencji i powrotu do
poprzedniego wywołania funkcji rekurencyjnej.
d) wykorzystuje się instrukcję cykliczną for() dla kolejnych wywołań rekurencyjnych.
5. Wybierz prawdę o strukturach danych i uniach: (jedna)
a) można używać zamiennie struktur i unii o tej samej nazwie w programie.
b) struktury mogą być konwertowane do unii.
c) struktury można inicjalizować wartościami domyślnymi dla składników.
d) struktury posiadają większe rozmiary w pamięci niż unie o tych samych
składnikach.
e) unie mogą być konwertowane do struktur.
6. Jaki jest rozmiar zmiennej wskaźnikowej w pamięci wyrażonej w bajtach:(patrz zad 3 cz.I)
a) 32 b) 8 c) 2 d) żaden z wymienionych e) 16
7. Nie mogą istnieć różne funkcje o tej samej nazwie:
a) prawda
b) fałsz
istnieją funkcje przeciążone np.
int nazwa_funkcji(int zmienna1)
int nazwa_funkcji(int zmienna1, int zmienna2)
8. Czym jest lista: (parę)
a) dynamiczną tablicą o zmiennej długości wskazań na kolejne węzły.
b) uporządkowaną sekwencją ponumerowanych elementów.
c) wektorem wskaźników ułożonych w sekwencji jeden po drugim. (można ją tak zrobić, ale raczej to nie o to tu chodziło)
d) dowolnym grafem powiązań zmiennych dynamicznych o zdefiniowanym
początku i końcu (są też takie listy, ale to chyba nie o to chodziło)
e) sekwencyjne powiązanie ze sobą węzłów.
f) ciąg zmiennych dynamicznych powiązanych ze sobą wskaźnikami.
9. Zdefiniuj konwersję jawną istniejącej zmiennej int X do typu double na jeden z
możliwych sposobów: (podaję 3 sposoby)
(double) X double(X) static_cast<double>(X)
10. Stałe wyliczeniowe umożliwiają tworzenie nowych typów, a następnie definiowanie ich
wartości, które ograniczają się do warunków określonych w definicji:
a) prawda b) fałsz
11. czy zmienne globalne mają wartosci domyslne
Tak (0)
12. Róznica miedzy zmiennymi statycznymi i lokalnymi
statyczne pamietają swoj stan między wywołaniami funkcji
13. co to jest konwersja jawna
Napisana w kodzie przez programistę
14. mamy kod:
union schowek{
char c;
int i;
double d;
}
jaki jest rozmiar tej unii?
8 bajtów (bo tyle ma typ double)
15. Złożoność obliczeniowa optymistyczna Selectionsort
odp. n^2
16. Czym różni sie char od char[],
Char to po prostu deklaracja zmiennej typu znakowego, a char [] to tablica takich znaków
III
2. Ile razy wykona się pętla while:
int i = 0, j = 0, k =2;
while(i < 51 || j < 101){
…..
i++;
j + = k;
}
51 razy.
4. Były rysunki algorytmow sortowania i trzeba bylo rozpoznac jaki to jest (rysunki z wykladow)
5. Czym się rożni zmienna double od float
float - 4 bajty, 7 miejsc po przecinku
double - 8 bajtów, 15 miejsc po przecinku
Float (floating point) - zmienny przecinek, Double(double precision - podwójna dokładność
6. Czy typedef tworzy nowy typ, ktorego mozna by bylo uzywac jaka ta nowa nazwe
Nie, tworzy ona synonim danego typu
7. W jaki sposób dostac się do zmiennej i zauważyć ze można tylko do jednej (mowa o unii)
Poprzez operator "."
8. Rozpoznać sortowanie po rysunku z pdf nr 4
11. typ wyliczeniowy czy moze przyjmowac wartosci tylko zadekarowane ?
Tak
12. Różnica miedzy zmiennymi statycznymi i lokalnymi
statyczne pamietaja swoj stan między wywołaniami funkcji ( moga byc zadeklarowane tylko w funkcji)
17. Stałe wyliczeniowe umożliwiają tworzenie nowych typów, a następnie definiowanie ich wartości, które ograniczają się do warunków określonych w definicji:
Prawda
18. Czy przed kompilacja programu trzeba zadeklarowac wszystkie zmienne?
Tak
19. Jak zadeklarowc nowe zmienne w trakcie dzialania programu?
Nie można.
20. Jak działają kolejki? (w dyskusji uznano dwie definicje za poprawne. MKO)
1) Kolejka to liniowa struktura danych, w której nowe dane dopisywane są na końcu kolejki, a z początku kolejki pobierane są dane do dalszego przetwarzania
2) Kolejka, jest to pewnego rodzaju "pojemnik", przygotowany do pracy w kontekście FIFO (first-in, first-out), gdzie elementy w nim umieszczane są w późniejszych fazach naszego algorytmu rozpatrywane.
21. Mamy deklaracje:
const int c=37;
#define c 37
Które zdanie jest prawdziwe?
a) Const int jest wygodniejsze dla kompilatora bo zna typ stałej.
b) deklaracja poprzez define zajmuje mniej miejsca
c) deklaracja poprzez const zajmuje mniej miejsca
d) obie zajmują tyle samo miejsca