Metodyka i Technika Programowania 1

Transkrypt

Metodyka i Technika Programowania 1
Metodyka i Technika
Programowania 1
Pytania zaliczeniowe z wykładu
mgr inż. Leszek Ciopiński
1. Wprowadzenie
Wykład I
1.1. Programowanie imperatywne polega na: (...)
1.2. Czy w programowaniu imperatywnym programista ma kontrolę nad
przepływem sterowania?
1.3. Czy każde programowanie imperatywne jest programowaniem
obiektowym?
1.4. Czy każde programowanie obiektowe jest programowaniem
imperatywnym?
1.5. Co odróżnia programowanie imperatywne od obiektowego?
1.6. Czy programowanie deklaratywne polega na deklarowaniu w jaki
sposób coś ma zostać wykonane?
1.7. Jaki jest cel programowania funkcyjnego?
1.8. Przykładem programowania funkcyjnego jest: (...)
1.9. Co to znaczy, że program napisany w języku imperatywnym jest
sekwencją poleceń? (...)
1.10. „W programowaniu imperatywnym stan pamięci określa stan
programu.” O jakim typie pamięci jest mowa w poprzednim zdaniu?
1.11. Czy każdy program napisany w języku imperatywnym może być
przenoszony między różnymi architekturami sprzętowym?
1.12. Czy zamiana kolejności rozkazów w języku imperatywnym ma
wpływ na skompilowany program?
1.13. Instrukcja sterująca typu if ... then ... pozwala: (...)
1.14. Instrukcja sterująca typu if ... then ... else ... pozwala: (...)
1.15. Dla instrukcji switch/case jako określenie warunku nie można
stosować: (...)
1.16. Czy w instrukcji switch/case zawsze trzeba podawać warunek
„default”, który ma być wykonany, jeśli żaden inny warunek nie jest
spełniony?
1.17. Czy w instrukcji switch/case można przypisać kilka warunków do
jednego bloku instrukcji?
1.18. Czy zalecane jest używanie instrukcji goto w programowaniu
strukturalnym?
1.19. Ile razy wykonuje się klasyczna pętla for? (...)
1.20. Co powoduje rozkaz break w pętli for? (...)
1.21. Co powoduje rozkaz continue w pętli for? (...)
1.22. W pętli while warunek sprawdzany jest (...).
1.23. W pętli do ... while ... warunek sprawdzany jest (...).
1.24. Czy za pomocą każdego rodzaju pętli można uzyskać ten sam
efekt?
!
Metodyka i Technika Programowania 1!
1
1.25. Wiadomo, że pętle nieskończone mogą doprowadzić do
zawieszenia programu. Czy są jednak sytuacje, gdzie użycie tych
pętli jest pożądane?
1.26. Czy działanie programu uzależnione jest od stanu pamięci (wartości
jego zmiennych)?
1.27. Czy zmiana architektury sprzętowej może wymusić zmiany w
oprogramowaniu?
1.28. Czy zmiana architektury sprzętowej zawsze wymusza zmiany w
oprogramowaniu?
1.29. Czy jeśli system komputerowy nie obsługuje danego polecenia, ale
można je rozbić na mniejsze etapy, które system jest w stanie
wykonać, to czy możliwe jest wykonanie takiego polecenia? (...)
1.30. Która architektura jest najszybsza? (...)
1.31. Która architektura jest najbardziej uniwersalna? (...)
1.32. Dlaczego w architekturze von Neumanna połączenie procesora i
pamięci nazywamy wąskim gardłem? (...)
1.33. Czy architektura von Neumanna jest zgodna z maszyną Turinga?
2. Podstawowe struktury danych. Część I
Wykład II
2.1.
2.2.
2.3.
2.4.
Czy zmienna może nie posiada przypisanej wartości?
Co określa typ zmiennej? (...)
Czy zmienna posiada swoje odwzorowanie w pamięci?
Czy w celu użycia zmiennej konieczna jest jej wcześniejsza
deklaracja?
2.5. Czy do zmiennych możemy przypisywać całkowicie dowolne
wartości?
2.6. Czy porównywanie zmiennych zmienia ich wartość?
2.7. Typ złożony może składać się z: (...).
2.8. Czy typ danych ma związek z ilością rezerwowanej pamięci?
2.9. Która z poniższych deklaracji zmiennych jest niepoprawna? (...)
2.10. Czy wszystkim kodom ASCII przypisany jest jakiś znak?
2.11. Czy znak 0 jest równoważny wartości 0?
2.12. Ilu bitowy jest kod ASCII? (...)
2.13. Czy przekroczenie zakresu zmiennej jest wynikiem obcięcia pewnej
części wynikowej?
2.14. Czy wystąpi przekroczenie zakresu jeśli do zmiennej typu byte
o wartości 100 dodamy wartość 200 i wynik zapiszemy w tej samej
zmiennej?
2.15. Czy wystąpi przekroczenie zakresu jeśli do zmiennej typu byte
o wartości 100 dodamy wartość 200 ale wynik zapiszemy w
zmiennej typu integer?
2.16. Czy tablica jest strukturą jednorodną?
2.17. Czy dostęp do tablicy możliwy jest jedynie w sposób sekwencyjny?
2.18. Czy w języku C indeksem tablicy może być ciąg (string)?
2.19. Czy w języku C indeksem tablicy może być znak (char)?
2.20. Czy w języku C deklarując tablicę konieczne jest podanie jawne lub
niejawne jej wielkości?
2.21. Czy tablice mogą imitować macierze?
2.22. Czy rekordy są rodzajem zapisu muzyki?
2.23. Czy do elementów rekordu istnieje niezależny dostęp?
!
Metodyka i Technika Programowania 1!
2
2.24. Czy w języku C można tworzyć struktury anonimowe, tzn. takie,
które nie posiadają nazwy, ale istnieją ich instancje (zmienne)?
2.25. Czy struktura może być nowym typem danych?
2.26. Czy unia zawierająca tylko jedno pole różni się czymś od struktury?
2.27. Czy unia zawierająca wiele pól może zajmować w pamięci mniej
miejsca niż taka sama struktura?
2.28. Czy moc struktury jest nie mniejsza niż moc takiej samej unii?
3. Podstawowe struktury danych. Część II
Wykład III
3.1. Czy do zbioru możliwy jest dostęp sekwencyjny?
3.2. Czy do zbioru możliwy jest dostęp swobodny?
3.3. Czy w typie wyliczeniowym kilka elementów może mieć taką samą
wartość?
3.4. Czy w trybie wyliczeniowym elementom mogą zostać nadane
wartości będące ciągami?
3.5. Na co zamieniane są elementy typu wyliczeniowego w trakcie
kompilacji programu? (...)
3.6. Czy ilość zajmowanej pamięci przez strukturę może być większa niż
suma rozmiarów zajmowanych przez każdy element struktury z
osobna?
3.7. Czy zmniejszenie rozmiaru pamięci zajmowanego przez strukturę
związane jest ze skompresowaniem tej struktury?
3.8. Czy w typie wyliczeniowym można używać liczb
zmiennoprzecinkowych?
3.9. Funkcja sizeof() zwraca wartość informującą o: (...).
3.10. Czy zawartość pliku jest dostępna w programie poprzez
bezpośrednie odczytanie wartości ze zmiennej reprezentującej dany
plik?
3.11. Czy podczas używania funkcji fopen() do zmiennej kopiowana jest
cała zawartość pliku?
3.12. Czy zwrócenie wartości NULL przez funkcję fopen() oznacza, że na
pewno podana została nieprawidłowa ścieżka dostępu do pliku?
3.13. Czy do zapisywania znaków do pliku służy funkcja fputc()?
3.14. Funkcja fputs() zapisuje do pliku: (...).
3.15. Czy jeśli programista nie użyje funkcji fclose(), to plik pozostaje
otwarty „na zawsze”?
3.16. Czy do odczytywania ciągów z pliku służy funkcja getc()?
3.17. Czy przy pomocy funkcji fgets() możemy odczytać z pliku więcej niż
jeden znak?
3.18. Czy odczyt z pliku jest swobodny?
3.19. Czy jedynym sposobem na sprawdzenie, czy osiągnięty został
koniec pliku jest użycie funkcji feof()?
3.20. Czy funkcja ftell() informuje, czy plik istnieje?
3.21. Czy drugi parametr funkcji fseek() może być ujemny?
3.22. Funkcja fseek() powoduje przesunięcie kursora w pliku
względem: (...).
3.23. Czy do zapisu struktur do pliku konieczne jest wykonanie jej
konwersji do postaci tekstowej?
3.24. Czy używając funkcji fwrite() można zapisać tą samą zmienną na
kilka sposobów?
!
Metodyka i Technika Programowania 1!
3
3.25. Co określa iloczyn drugiego i trzeciego parametru funkcji fwrite()?
(...)
3.26. Czy do odczytywania danych z pliku w trybie binarnym służy funkcja
fread()?
4. Sortowanie, część I: Sortowanie tablic
Wykład IV
4.1. Czy wynik sortowania jest uzależniony od wybranego algorytmu?
4.2. Czy posortowanie danych może przyspieszyć wykonywanie
programu?
4.3. Czy w procesie sortowania najbardziej czasochłonną operacją jest
porównywanie kluczy?
4.4. Na jakie grupy dzielimy algorytmy sortowania? (...)
4.5. Czy w algorytmie sortowania przez proste wstawianie istnieje
potencjalnie duża ilość przesuwania elementów?
4.6. Czy algorytm sortowania przez proste wstawianie jest trudny w
implementacji?
4.7. Czy w algorytmie sortowania przez proste wybieranie istnieje
potencjalnie duża ilość przesuwania elementów?
4.8. Czy możliwe jest wykonanie sortowania przy użyciu tylko jednej
pętli?
4.9. Czy jednym z etapów algorytmu sortowania przez proste wybieranie
jest szukanie lokalnej wartości ekstremalnej?
4.10. Czy wstępne posortowanie danych przyspiesza wykonywanie
algorytmu sortowania przez proste wybieranie?
4.11. Czy algorytm sortowania przez prostą zamianę zużywa dużą ilość
pamięci?
4.12. Jaka jest złożoność obliczeniowa algorytmu przez prostą zamianę?
(...)
4.13. Algorytm QuickSort wymaga, aby element dzielący tablicę był: (...).
4.14. Czy klasyczny algorytm QuickSort jest rekurencyjny?
4.15. Jaka jest złożoność obliczeniowa algorytmu QuickSort? (...)
4.16. Czy algorytm QuickSort jest zawsze szybszy od „metod
klasycznych”?
4.17. Czy implementacja algorytmu QuickSort w porównaniu z innymi
metodami sortowania jest prosta?
5. Sortowanie, część II: Sortowanie plików
Wykład V
5.1. Czy algorytmy sortowania tablic mogą być stosowne przy
sortowaniu plików?
5.2. Ile taśm jest potrzebnych przy wykorzystaniu algorytmu przez
łączenie proste? (...)
5.3. Jak dokonujemy podziału przy sortowaniu przez łączenie proste?
(...)
5.4. Czy sortowanie przez łączenie proste uwzględnia fakt
ewentualnego, wstępnego posortowania plików?
5.5. Czy ilość przesunięć w sortowaniu przez łączenie naturalne jest
większa niż w przypadku sortowania przez łączenie proste?
5.6. Z jakiej ilości elementów może składać się najmniejsza seria? (...)
!
Metodyka i Technika Programowania 1!
4
5.7. Czy ilość porównań w algorytmie sortowania przez łączenie
naturalne jest większa niż w algorytmie sortowania przez łączenie
proste?
5.8. Co określamy mianem serii w sortowaniu przez łączenie naturalne?
(...)
5.9. Czy elementy w serii w sortowaniu przez łączenie naturalne są
uporządkowane?
5.10. Jaka jest minimalna ilość taśm potrzebnych do przeprowadzenia
sortowania polifazowego? (...)
5.11. Dla której z wymienionych poniżej ilości taśm sortowanie polifazowe
będzie najszybsze? (...)
5.12. Ile jest w danej chwili taśm docelowych w sortowaniu polifazowym?
(...)
5.13. Który z poniższych zestawów liczb przedstawia kolejne elementy
ciągu Fibonacciego? (...)
Wykład VI
6. Przegląd języków programowania, część I:
Programowanie imperatywne i obiektowe
6.1. Czy każda modyfikacja architektury komputerowej wymusza
wprowadzenie zmian do programu napisanego w asemblerze?
6.2. Czy w języku asembler programista deklaruje typ zmiennej?
6.3. W jaki sposób identyfikowany jest typ zmiennej w języku asembler?
(...)
6.4. Jakie są zalety programowania w języku asembler? (...)
6.5. Jakie są wady programowania w języku asembler? (...)
6.6. Czy kontrola typów zmiennych w języku Pascal jest większa niż w
języku C?
6.7. Czy kod programu w języku Pascal jest czytelny?
6.8. Czy język Pascal umożliwia programiście stosowanie skrótów (np.
wiele zadań do wykonania na raz) w celu szybszego pisania
programów?
6.9. Na jakim etapie ujawniają się błędy niezgodności typów w języku C?
(...)
6.10. Czy w języku C wbudowany jest mechanizm zabezpieczający przed
przypadkowymi błędami programisty?
6.11. Czy preprocesor języka C dokonuje kompilacji programu?
6.12. Jaki jest skutek dla programu używania makr preprocesora języka
C? (...)
6.13. Czy enkapsulacja umożliwia ukrycie części danych w klasie lub
obiekcie przed programistą?
6.14. Czy można powiedzieć, że klasa do obiektu ma się jak typ do
zmiennej?
6.15. Czy dziedziczenie polega na kopiowaniu danej klasy?
6.16. Czy dziedzicząc po danej klasie jest możliwe zmienienie istniejącej
już metody?
6.17. Czy polimorfizm wymusza na programiście kontrolowanie typów
używanych zmiennych podczas wywoływania metod?
6.18. Czy dopuszczalne jest występowanie kilku metod o takiej samej
nazwie?
6.19. Czy można tworzyć obiekty z klas abstrakcyjnych?
!
Metodyka i Technika Programowania 1!
5
6.20. Czy jeśli metoda przyjmuje parametr, który powinien być obiektem
klasy abstrakcyjnej, to czy jako taki parametr można podać obiekt
klasy dziedziczącej po tej klasie wirtualnej?
6.21. Czy użycie klas wirtualnych umożliwia jednorazowe napisanie
algorytmu, który później będzie działał z wieloma obiektami różnych
klas, pod warunkiem, że będą dziedziczyć po danej klasie
abstrakcyjnej?
6.22. Czy w każdym języku można dziedziczyć po dowolnej ilości klas
wirtualnych?
6.23. Czy w klasach wirtualnych wszystkie metody nie mogą posiadać
implementacji?
6.24. Czy w języku C++ można używać poleceń języka C?
6.25. Do czego służy konstruktor w programowaniu obiektowym? (...)
6.26. Czy w języku Smalltalk i Java mogą występować funkcje w taki sam
sposób jak w języku C?
6.27. Jaka jest zaleta używania maszyny wirtualnej? (...)
6.28. Jaka jest wada używania maszyny wirtualnej? (...)
6.29. Do czego służy Garbage Collector? (...)
6.30. Jaka jest zaleta rygorystycznej kontroli typów w języku Java? (...)
6.31. Jaka jest wada rygorystycznej kontroli typów w języku Java? (...)
Oznaczenie (...) informuje, że dla danego pytania przewidzianych jest
kilka możliwych odpowiedzi, ale tylko jedna jest prawidłowa. Jeśli dane
pytanie nie posiada żadnego oznaczenia, to znaczy, że należy na nie
udzielić odpowiedzi TAK lub NIE.
!
Metodyka i Technika Programowania 1!
6