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