Wstęp do programowania Flashcards
Wstęp do programowania
Jakie są wbudowane typy danych w C/C++ i czym się różnią?
P235
Dla C:
* int
* char
* float
* double
* void
Dla C++ również:
* bool
* wchar_t (przechowywanie znaków większych niż ASCII)
* short
* long
* long long
* long double
Wstęp do programowania
Jakie instrukcje pętli są zdefiniowane w języku C/C++ i czym się różnią?
P236
Pętla for - gdy znana jest liczba iteracji
Pętla while - dopóki spełniony jest warunek to pętla wykonuje działania
Pętla do … while - wykonuje przynajmniej jedną iterację i dopiero weryfikuje warunek
Wstęp do programowania
Jaka jest różnica między zmienną globalną, zmienną lokalną a zmienną lokalną statyczną w C/C++?
P237
Zmienna globalna - definiowana poza funkcjami, dostępna w każdej funkcji w pliku (jeśli będzie extern to również w innych plikach źródłowych); aktywna przez cały czas działania programu; domyślnie inicjalizowana zerem
Zmienna lokalna - definiowana w obrębie funkcji; używana w obrębie bloku kodu, aktywna tylko w trakcie wykonywania danego bloku kodu; musi być zainicjowana przez programistę
Zmienna lokalna statyczna - ograniczona do bloku kodu, ale żywotność jak cały program - wartość jest przechowywana między wywołaniami funkcji; domyślnie inicjowana zerem
Wstęp do programowania
Jakie są metody przekazywania argumentów do funkcji w C/C++ i jakie są między nimi różnice?
P238
Przekazywanie przez wartość - argument kopiowany do zmiennej lokalnej (zmiany nie wpływają na oryginał); domyślna metoda przekazywania argumentów
Przekazywanie przez referencję - referencje do oryginalnej zmiennej, co umożliwia jej edycję
Przekazywanie przez wskaźnik - wskaźnik do oryginalnej zmiennej, co umożliwia pośredni dostęp do wartości i adresu zmiennej. Większa kontrola nad pamięcią;
Wstęp do programowania
Wyjaśnij, co to jest wywołanie funkcji rekurencyjnej w C/C++ i jakie są korzyści i koszty na przykładzie.
P239
Rekurencja to technika programowania, w której funkcja wywołuje samą siebie. Funkcja rekurencyjna musi zawierać warunek brzegowy, który powoduje zakończenie rekursji.
Korzyści:
* Zwięzłość kodu
* Naturalność rozwiązań dla pewnych problemów (np. liczenie silnii)
Koszty:
* Złożoność pamięciowa - każde wywołanie to nowa ramka stosu
* Złożoność czasu - powtarzanie cały czas tych samych instrukcji