Www.physd.amu.edu.pl



PYTANIA NA EGZAMIN MAGISTERSKI

Z INFORMATYKI

OPRACOWANIE

Spis treści

1. Podstawowe typy danych (rozmiar w pamięci, zakres), wskaźniki. 4

2. Podstawowe instrukcje (for, while, do, if) złożone warunki (suma i iloczyn logiczny, zaprzeczenie) 7

3. Struktury oraz unie; dostęp do przechowywanych danych (także poprzez wskaźnik). Na czym polega różnica w traktowaniu struktur i unii w języku C i C++? 15

4. Tworzenie i inicjowanie tablic (statycznych, dynamicznych); zależność pomiędzy tablicami i wskaźnikami; tablice wielowymiarowe. 19

5. Reprezentacja łańcuchów w komputerze. 25

6. Funkcje; przeładowywanie (overloading) funkcji; funkcje statyczne; wartości domyślne argumentów; sposoby przekazywania danych do funkcji. 27

7. Operacje na bitach: przesuwanie bitowe, suma i iloczyn bitowy, maski. 36

8. Tworzenie klas; różnica pomiędzy sekcjami publicznymi, chronionymi oraz prywatnymi 38

9. Konstruktor: domyslny, kopiujący (kiedy są tworzone automatycznie? kiedy są automatycznie wywoływane?); lista inicjalizacyjna konstruktora; destruktor. 42

10. Statyczne składniki klas, sposoby odwoływania się do tych składników; funkcje statyczne. 45

11. Funkcje zaprzyjaźnione, klasy zaprzyjaźnione. 46

12. Mechanizm konwersji za pomocą konstruktora oraz operatora konwersji, jawne wywoływanie konwersji. 49

13. Przeładowywanie operatorów; przykłady operatorów jedno, dwu i wielo-argumentowych; priorytety. 54

14. Ocena złożoności obliczeniowej algorytmów i operacji na strukturach danych. 57

15. Listy jednokierunkowe i dwukierunkowe; posortowane i nieposortowane; z wartownikiem i bez wartownika; cykliczne. 62

16. Stos i kolejka (wykorzystanie tablicy oraz listy). 65

17. Algorytmy rekurencyjne (algorytmy zachłanne, strategia „dziel i rządź”, programowanie dynamiczne, metoda powrotów). 67

18. Wybrane metody sortowania (przez wstawianie, przez wybór, bąbelkowe, przez kopcowanie, szybkie). 69

19. Algorytmy na wyszukiwanie elementów 77

20. Słowniki i ich reprezentacje. 81

21. Kolejki priorytetowe. 84

22. Drzewa binarne; dodawanie, szukanie, usuwanie elementów; przechodzenie drzewa w głąb i wszerz, równoważenie drzewa. 86

23. Grafy nieskierowane i skierowane; reprezentacja w komputerze; przechodzenie grafu w głąb i wszerz; składowe spójne oraz słabe i silne spójne. 89

24. Model ISO/OSI. 92

25. Stos TCP/IP 95

26. Ramka Ethernet 97

27. Adresowanie IP – klasy, CIDR, maska sieci. 98

28. Urządzenia sieciowe – koncentrator, przełącznik, router. 101

29. Protokół TCP 103

30. Bezpieczeństwo sieci komputerowych – polityka bezpieczeństwa, technologie (VPN, NAT, Proxy, Firewall, IPSec, IDS, DMZ) 107

31. Podać definicje: zbiór identyfikujący relacji, klucz schematu relacji, klucz prosty i złożony, klucze potencjalne, klucz główny. Algorytm X-domkniętości. Przykład znajdowania klucza relcji. 125

32. Podać podstawowe modele baz danych. Na czym polegają różnice. Który z nich jest najbardziej rozpowszechniony wśród systemów zarządzania bazami danych (Database engines)? 130

33. Omówić podstawowe komendy SQL zaliczane do DML (data manipulation language) i do DDL (data definition language). Podać przykłady. 132

34. Określić czym są procedury składowane (stored procedures) i procedury wyzwalane (triggers). Na czym polega różnica między nimi? Podać przykłady. 135

35. Podać przykłady instrukcji (konstrukcji) SQL’a, które mogą być wykorzystywane w procedurach, a nie mogę się pojawić w zapytaniach wykonywanych w trybie interakcyjnym. 142

36. Kodowanie informacji – systemy liczbowe 143

37. Bramki logiczne, sumator wielobitowy 150

38. Język asembler 157

39. Architektura harwardzka a architektura von Neumana 159

40. Różnice między komputerami CISC a RISC 163

1. Podstawowe typy danych (rozmiar w pamięci, zakres), wskaźniki.

Typy danych

Najczęściej chyba używanym typem jest int (typ całkowity). Jest on poza tym domyślnym typem, jeżeli nie został podany. Skoncentrujemy się na razie na typach liczbowych.

Typ char jest typem znakowym (JEDEN znak!), ale również liczbowym całkowitym, obsługującym zakres od -128 do 127 (uwaga: ta informacja może być nieprawdziwa jeśli chodzi o liczby ujemne; patrz niżej).

Rozmiar (a więc i zakres) typu int zależy od implementacji, w przypadku systemów 32-bitowych ma on 4 bajty i obsługuje zakres -2147483648 do 2147483647. Jeśli masz ten tekst w edytorze `vim', możesz inkrementować lub dekrementować liczby na których stoi kursor klawiszami odpowiednio Control-a (pod screenem: Control-a a) i Control-x. Możesz sprawdzić, że dla tych liczb operacje te powodują "przekręcenie licznika".

Typ int może również posiadać modyfikatory: short oznacza liczbę krótką całkowitą (zazwyczaj 2 bajty), long długą (4 bajty). Podane wielkości jednak nie są standardowe, lecz zależne od implementacji. Wielkość danych konkretnego typu można sprawdzać za pomocą operatora sizeof:

• sizeof (typ) - zwraca wielkość danej tego typu

• sizeof dana - zwraca wielkość danej

Standard co do wielkości typów zakłada jedynie, że:

• sizeof (char) == 1 (nie musi to oznaczać jednocześnie 8 bitów!)

• sizeof (short int) < sizeof (long int)

• sizeof (short int) .

TPunkt::a = 2; //odwołanie do pola statycznego przez ::

TPunkt p1;

p1.a =2; //odwołanie do pola statycznego przez .

TPunkt *wsk;

wsk = new TPunkt;

wsk->a=10; //odwołanie do pola statycznego przez ->

delete wsk;

Dwa ostatnie sposoby (operator . i -> ) są takie same jak odwoływania do zwykłych pól niestatycznych.

funkcje statyczne ( patrz p. 8 :)

11. Funkcje zaprzyjaźnione, klasy zaprzyjaźnione.

Funkcja zaprzyjaźniona z klasą to funkcja, która (mimo, że nie jest składnikiem klasy) ma dostęp do wszystkich (nawet prywatnych) składników klasy.

Konstruując klasę ustalamy, że pewne składniki będą prywatne. Mogą więc na nich pracować funkcje składowe tej klasy. Inne nie.

W pewnych jednak sytuacjach może być korzystne, by jakaś funkcja spoza zakresu tej klasy miała także dostęp do składników prywatnych. Robi się to bardzo prosto. Wewnątrz definicji klasy wystarczy umieścić deklarację tej funkcji poprzedzoną słowem friend. Dzięki temu ta zwykła funkcja ma prawo dostępu do prywatnych składników klasy. Tak, jakby składniki te stały się dla niej publiczne.

Ważne jest to, że to nie funkcja ma twierdzić, że jest zaprzyjaźniona. To klasa ma za zadeklarować, że przyjaźni się z tą funkcją i nadaje jej prawo dostępu do składników prywatnych. Zatem słowo friend pojawia się tylko wewnątrz definicji klasy.

Funkcja zaprzyjaźniona na mocy tej przyjaźni ma oczywiście także dostęp do składników protected.

Przykład

klasa pionek wzbogacona o deklarację funkcji:

class pionek {

int x, y;

//jakieś deklaracje

//........

friend void raport(pionek &);

};

funkcja jest gdzieś w programie zdefiniowana tak:

void raport(pionek & p)

{

cout ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download