pk wiedza

0.0(0)
Studied by 0 people
call kaiCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/23

encourage image

There's no tags or description

Looks like no tags are added yet.

Last updated 7:40 AM on 6/21/26
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai

No analytics yet

Send a link to your students to track their progress

24 Terms

1
New cards
  1. Proszę wyjaśnić, czym jest jednostka translacji w C++ oraz jak jest zbudowana, a następnie omówić zasady podziału kodu w obrębie jednostki translacji dla pojedynczej klasy.

Jednostka translacji to pojedynczy plik .cpp wraz z dołączonymi nagłówkami (.h). Kod klasy dzieli się na plik nagłówkowy (wizytówka klasy deklarująca ciało pól i metody) oraz plik implementacji (zawierający zewnętrzne definicje metod oraz zawsze dołączony własny plik nagłówkowy klasy).

2
New cards
  1. Proszę omówić, czym jest polimorfizm proceduralny statyczny w C/C++ oraz w jaki sposób można go uzyskać.

Jest to przeciążanie nazw funkcji oparte na sztywnym wiązaniu w trakcie kompilacji. Uzyskuje się go poprzez definiowanie wielu funkcji o tej samej nazwie lecz różniących się listą argumentów (ich liczbą typami lub kolejnością).

3
New cards
  1. Proszę omówić, czym jest polimorfizm proceduralny dynamiczny w C/C++ oraz w jaki sposób można go uzyskać.

Opiera się na wskaźnikach na funkcje a wiązanie jest elastyczne i następuje podczas działania programu. Uzyskuje się go przypisując adres wybranej funkcji o identycznym interfejsie (zwracany typ i argumenty) do wskaźnika funkcyjnego.

4
New cards
  1. Proszę wymienić sposoby przekazywania tablic jedno- i dwuwymiarowych (zwykłych i dynamicznych) do funkcji oraz podać składnię nagłówków funkcji dla tych sposobów.

Zwykła 1D: przez wskaźnik (void f(double tab, int size)) lub referencję C++ (void f(double (&tab)[SIZE])). Zwykła 2D: wskaźnik na tablicę (void f(double (tab)[COLS], int rows)) lub referencję. Dynamiczna 1D: wskaźnik pierwszego stopnia (void f(int *tab, int n)). Dynamiczna 2D: wskaźnik drugiego stopnia (void f(double **tab, int r, int c)).

5
New cards
  1. Proszę omówić składnię alokacji i dealokacji dynamicznej instancji oraz tablic instancji typów fundamentalnych i złożonych w języku C++.

Pojedyncza zmienna/instancja: Typ* wsk = new Typ{wartość} / delete wsk. Tablica 1D: Typ* wsk = new Typ[rozmiar]{wartości} / delete[] wsk. Alokacja obiektów (typów złożonych) ma identyczną składnię jak typów fundamentalnych.

6
New cards
  1. Proszę zdefiniować „czas życia” alokacji pamięci dynamicznej oraz wyjaśnić, czym jest wyciek pamięci.

Czas życia to okres od użycia operatora new do momentu ręcznego zwolnienia pamięci operatorem delete/delete[]. Wyciek pamięci to bezpowrotna utrata wskaźnika kontaktowego przed jej zwolnieniem co blokuje bezużyteczny obszar aż do zamknięcia programu.

7
New cards
  1. Proszę, przy pomocy rysunku, omówić budowę poznanych typów alokacji dynamicznych tablic dwuwymiarowych w C++.

Fragmentaryczna: główny wskaźnik 2. stopnia przechowuje wskaźniki z których każdy oddzielnie alokuje osobną tablicę (wiersz) w losowym miejscu pamięci. Ciągła: powołany jest jeden długi ciągły blok pamięci po którym wskaźniki z tablicy głównej są po prostu ustawiane w odpowiednich odstępach (partycjonowanie).

8
New cards
  1. Proszę wymienić i omówić składnię oraz działanie podstawowych operacji bitowych w C/C++.

AND (&): zwraca 1 gdy oba bity to 1. OR (|): zwraca 1 gdy min. jeden bit to 1. XOR (^): zwraca 1 gdy bity są różne. NOT (~): odwraca wszystkie bity (zera na jedynki). Przesunięcia (>> i <<): przesuwają całą sekwencję bitów a puste miejsca uzupełniają zerami.

9
New cards
  1. Proszę wyjaśnić, czym jest maska bitowa, jak się ją tworzy oraz do czego jest wykorzystywana.

Maska bitowa to wzór (kombinacja zer i jedynek) wyznaczający bity do manipulacji. Tworzy się ją np. przez przesunięcie bitowe (1 << n) lub stałą szesnastkową. Służy do celowej zmiany wybranych bitów: ustawiania na 1 (|=) zerowania (&= ~) przełączania na przeciwne (^=) i odczytu.

10
New cards
  1. Proszę wymienić i krótko omówić sposoby komunikacji z plikami w języku C.

Tryb tekstowy: operacje na czytelnym dla człowieka sformatowanym tekście (funkcje: fprintf fscanf fputs fgets). Tryb binarny: dane to szybka wierna i niesformatowana kopia bajtów prosto z pamięci (dopisek 'b' w trybie otwarcia; funkcje: fwrite fread).

11
New cards
  1. Proszę omówić pojęcia: klasa, instancja, akcesor oraz zdefiniować zasadę enkapsulacji w odniesieniu do pojedynczej klasy.

Klasa: koncepcyjny zbiór danych i zachowań. Instancja: konkretny obiekt klasy powołany do życia w pamięci. Akcesor: publiczna metoda do bezpiecznego odczytu/zapisu pola prywatnego. Enkapsulacja: zasada zamykania wszystkich pól jako prywatne (private) z udostępnianiem dostępu do nich wyłącznie przez publiczne metody.

12
New cards
  1. Proszę wyjaśnić, czym różnią się składniki statyczne od składników instancyjnych w klasie, jak się je inicjalizuje oraz jaka jest składnia dostępu do nich.

Instancyjne: każda instancja ma osobną niezależną kopię (inicjalizowane zazwyczaj przy tworzeniu instancji np. w konstruktorze; dostęp przez (.) lub (->)). Statyczne: tylko jedna współdzielona kopia dla całej klasy bez względu na instancje (wymagają zewnętrznej inicjalizacji w pliku .cpp; dostęp operatorem zakresu np. Klasa::pole).

13
New cards
  1. Proszę wymienić, omówić przeznaczenie oraz zaprezentować składnię nagłówków wszystkich poznanych typów konstruktorów.

Domyślny: wstępnie konfiguruje klasę bez argumentów zewnętrznych (Klasa();). Argumentowy: narzuca wstępny stan startowy używając przekazanych zmiennych (Klasa(int x);). Kopiujący: powołuje całkowicie nową instancję na podstawie danych innej istniejącej już instancji (Klasa(const Klasa&);).

14
New cards
  1. Proszę omówić działanie specyfikatora const po nagłówku metody oraz działanie specyfikatora mutable przed nazwą pola klasy.

Const za metodą blokuje jej możliwość zmiany wewnętrznych pól klasy oraz pozwala działać na 'stałych instancjach'. Mutable przed polem to odgórny wyjątek pozwalający na nadpisywanie tego konkretnego pola nawet kiedy wywołana metoda to const lub instancja jest stała.

15
New cards
  1. Proszę wymienić i omówić reguły dziedziczenia składników klasy oraz definiowanie i działanie wyjątków od tych reguł.

Publiczne (sekcje zostają bez zmian) Chronione (publiczne stają się chronionymi) Prywatne (domyślne - wszystko staje się prywatne). Prywatne składniki z klasy bazowej zawsze wpadają do niedostępnej 'sekcji zabronionej'. Wyjątek (słowo kluczowe using KlasaBazowa::pole;) przywraca dawną widoczność dla składników niebędących oryginalnie prywatnymi.

16
New cards
  1. Proszę przedstawić graficzne schematy poznanych hierarchii dziedziczenia i wyjaśnić, z jakich typów dziedziczenia korzystają.

Elementarna: proste jednokrotne przedłużenie bazy. Drzewiasta jednopoziomowa: kilka klas pochodnych budowanych od tego samego korzenia. Drzewiasta wielopoziomowa: tworzenie kolejnych pokoleń (pochodna staje się bazą dla innej). Diamentowa: dziedziczenie dwóch odgałęzień w jednym punkcie wymagające dziedziczenia wielobazowego oraz specyfikatora virtual by nie dublować korzenia.

17
New cards
  1. Proszę wyjaśnić, czym jest i do czego służy klasa abstrakcyjna.

To wysoce uogólniona 'niedokończona' baza (z minimum jedną metodą czysto wirtualną '=0' lub ochronionymi konstruktorami) z której nie można zbudować samodzielnej instancji. Służy wyłącznie jako fundament (wspólny interfejs) do dziedziczenia i uruchamiania zachowań z użyciem polimorfizmu.

18
New cards
  1. Proszę wyjaśnić, jak działa polimorfizm obiektowy dynamiczny oraz podać przykład kodu prowadzący do jego zadziałania.

Polega na automatycznym wyborze (nadpisanej) metody dopiero podczas pracy programu bazując na faktycznym rzeczywistym typie schowanym we wskaźniku. Wymaga definicji wirtualnych (virtual w bazie i override w pochodnej). Idea: Baza* wsk = new Pochodna; wsk->wirtualna_metoda();.

19
New cards
  1. Proszę wymienić i krótko omówić poznane podstawowe relacje obiektowe.

Zależność: słabe i tymczasowe użycie klasy (np. jako argument). Asocjacja: swobodna współpraca równorzędnych i żyjących obok siebie bytów. Agregacja: relacja całość-część gdzie usunięcie agregatu nie niszczy elementów grupy. Kompozycja: bardzo ścisła relacja własności – usunięcie całości niszczy nieodwracalnie wszystkie wewnętrzne składowe moduły.

20
New cards
  1. Proszę, przy pomocy rysunku, pokazać, jak zbudowana jest tablica instancji klasy pochodnej.

Ciągłe ułożenie pełnych rozbudowanych instancji pochodnych w których początek to oryginalny mały 'klocek' z klasy bazowej po którym występuje strefa dopisana w klasie pochodnej. To tworzy w pamięci strukturalne "dziury" z punktu widzenia klasy bazowej przez co jej bezpieczna iteracja przy użyciu wskaźnika rzuconego w dół jest niemożliwa.

21
New cards
  1. Proszę podać składnię obu sposobów definiowania operatorów dla typów złożonych oraz podać przykłady operatorów jedno-, dwu- i wieloargumentowych.

Jako metoda klasy (gdzie lewy argument to obiekt pod this) oraz jako wolna zaprzyjaźniona globalna funkcja. 1-arg: Typ operator!(). 2-arg z klasy: Typ operator+(const Typ&). 2-arg jako funkcja: friend ostream& operator<<(ostream& const Typ&). Wieloargumentowy dozwolony tylko jako przeciążenie nawiasów ( ) np. Typ operator()(int a int b).

22
New cards
  1. Proszę zdefiniować, czym są konwersje formalne i nieformalne oraz w jaki sposób możemy zdefiniować jedne i drugie.

Nieformalne to ręczne wywoływanie typowych metod użytkownika (np. double toDouble()). Formalne to wbudowane silnikowo algorytmy rzutujące automatycznie w czasie kompilacji obejmujące konstruktory konwertujące (np. Klasa(int z zewnątrz)) oraz specyficzne operatory konwersji wymuszające wydanie oczekiwanej wartości (np. operator double() { }).

23
New cards
  1. Proszę wyjaśnić, jak wykonać kopię element po elemencie oraz jak wykonać kopię binarną tablicy.

Element po elemencie: ręczne bezpieczne kopiowanie komórek z użyciem standardowej pętli (np. cel[i] = org[i]). Kopia binarna: radykalne błyskawiczne i masowe przepisywanie czystych bajtów pamięci przez gotowe funkcje jak np. memcpy dozwolone tylko na prostych spłaszczonych strukturach.

24
New cards
  1. Proszę wymienić i omówić zastosowanie sposobów rzutowania typów dostępnych w C++.

static_cast: bezpieczne kompilacyjne przejścia. const_cast: zdejmowanie kłódki 'const' blokującej edycję wskaźników/referencji. reinterpret_cast: omijające wszelkie zasady i silnie inwazyjne forsowanie interpretacji pamięci. dynamic_cast: do polimorfizmu podczas wykonywania programu gdzie niezgodność zwraca nullptr. bit_cast: szybka weryfikowana na bieżąco przed kompilacją binarna kopia struktury obiektu.@