Pytania pomocnicze - INF.04
Projektowanie, programowanie i testowanie aplikacji
Pytania pomocnicze rozwijające tematy z pytań egzaminacyjnych. Każde pytanie ma krótką odpowiedź, która pomaga utrwalić wiedzę i przygotować się do egzaminu. Łącznie: 2975.
Strona 32 z 39.
Czym jest typ znakowy w programowaniu?
Typ znakowy przechowuje pojedynczy znak, np. literę, cyfrę, spację lub symbol. Często jest oznaczany jako `char`.
Czym jest typ łańcuchowy?
Typ łańcuchowy przechowuje ciąg znaków, czyli tekst. Może zawierać zero, jeden lub wiele znaków.
Czy znak `'A'` i tekst `"A"` oznaczają to samo?
Nie zawsze. W wielu językach `'A'` jest pojedynczym znakiem typu `char`, a `"A"` jest łańcuchem znaków typu `string` o długości 1.
Do czego używa się typu łańcuchowego w aplikacjach?
Do przechowywania tekstu, np. imion, nazwisk, haseł, komunikatów, opisów, adresów e-mail lub danych wpisanych w formularzu.
Do czego używa się typu znakowego?
Do przechowywania i przetwarzania pojedynczych znaków, np. jednej litery, cyfry albo odpowiedzi użytkownika typu `T` lub `N`.
Czy łańcuch znaków można traktować jako zbiór pojedynczych znaków?
Tak. W wielu językach tekst można indeksować, czyli odwoływać się do konkretnych znaków w łańcuchu, np. do pierwszej litery napisu.
Jak wygląda ogólny schemat deklaracji zmiennej w C++?
Najczęściej stosuje się zapis: `typ nazwa_zmiennej = wartość;`. Przykład: `int liczba = 5;` albo `string name = "Jan";`.
Dlaczego wartość "Jan" powinna być przypisana do zmiennej typu string?
Ponieważ `"Jan"` jest tekstem, czyli ciągiem znaków. Do przechowywania tekstu w C++ używa się typu `string` lub dokładniej `std::string`.
Czym różni się typ string od typu int?
`string` przechowuje tekst, np. `"Jan"`, a `int` przechowuje liczby całkowite, np. `25`. Przypisanie tekstu do `int` jest niezgodnością typów.
Kiedy w C++ trzeba napisać std::string zamiast string?
Gdy nie użyto instrukcji `using namespace std;`, należy zapisać pełną nazwę typu: `std::string`. Typ `string` należy do przestrzeni nazw `std`.
Jaką bibliotekę należy dołączyć, aby korzystać z typu string w C++?
Należy dołączyć nagłówek `#include <string>`. Bez niego kompilator może nie rozpoznać typu `std::string`.
Dlaczego typ bool nie pasuje do wartości "Jan"?
`bool` służy do przechowywania wartości logicznych: `true` albo `false`. Tekst `"Jan"` powinien być zapisany w zmiennej typu `string`.
Do czego służy typ bool w C++?
Typ `bool` służy do przechowywania wartości logicznych: `true` lub `false`. Stosuje się go m.in. w warunkach, flagach i wynikach porównań.
Czym różni się wartość true od tekstu "true"?
`true` bez cudzysłowu jest wartością logiczną typu `bool`. `"true"` w cudzysłowie jest tekstem, czyli napisem.
Jak zadeklarować zmienną logiczną w C++?
Należy użyć typu `bool`, na przykład: `bool poprawny = true;`. Taka zmienna może przyjąć wartość `true` albo `false`.
Gdzie najczęściej wykorzystuje się zmienne typu bool?
Najczęściej używa się ich w instrukcjach warunkowych, pętlach oraz jako flag informujących o stanie programu, np. `czyZalogowany`.
Czy liczba całkowita jest właściwym typem do przechowywania true?
W C++ wartości logiczne mogą być konwertowane na liczby, ale poprawnym i czytelnym typem dla `true` jest `bool`, a nie `int`.
Czym różni się typ prosty od typu złożonego?
Typ prosty przechowuje pojedynczą wartość, np. liczbę lub znak. Typ złożony może składać się z wielu pól lub elementów, np. struktura.
Dlaczego `struct` jest typem złożonym?
`struct` może zawierać wiele pól różnych typów, np. tekst, liczbę i wartość logiczną. Dzięki temu opisuje bardziej rozbudowane dane.
Jakie typy danych są zwykle uznawane za proste?
Do typów prostych należą m.in. `int`, `char`, `bool`, `float` i `double`. Przechowują one pojedyncze wartości.
Do czego można wykorzystać strukturę w programie?
Struktura pozwala grupować powiązane dane, np. dane ucznia, produktu, punktu lub pracownika. Ułatwia to organizację kodu.
Czy pola struktury mogą mieć różne typy?
Tak. Jedna struktura może zawierać pola typu `int`, `string`, `bool` i innych typów.
Dlaczego tablica jest typem danych złożonym?
Tablica jest typem złożonym, ponieważ może przechowywać wiele elementów pod jedną nazwą. Nie reprezentuje pojedynczej wartości jak typ prosty.
Czym różni się typ prosty od typu złożonego?
Typ prosty przechowuje pojedynczą wartość, np. liczbę lub wartość logiczną. Typ złożony składa się z wielu wartości lub bardziej rozbudowanej struktury.
Jak odwołać się do elementu tablicy?
Do elementu tablicy odwołuje się za pomocą indeksu. W wielu językach programowania pierwszy element ma indeks 0.
Czy tablica jest typem logicznym?
Nie. Typ logiczny przechowuje zwykle wartości `true` lub `false`, natomiast tablica przechowuje zbiór elementów.
Do czego używa się tablic w programowaniu?
Tablice służą do przechowywania wielu powiązanych danych, np. ocen ucznia, listy liczb lub nazw produktów. Ułatwiają przetwarzanie danych w pętlach i algorytmach.
Do czego służy tablica jednowymiarowa w programowaniu?
Służy do przechowywania wielu wartości pod jedną nazwą. Każda wartość znajduje się na osobnej pozycji określonej indeksem.
Czym jest indeks w tablicy?
Indeks to numer pozycji elementu w tablicy. W wielu językach programowania pierwszy element ma indeks 0.
Czy jeden indeks tablicy może przechowywać wiele wartości?
Nie. Jeden indeks wskazuje jeden element tablicy. Wiele wartości przechowuje się pod różnymi indeksami.
Jaka jest różnica między zmienną a tablicą?
Zmienna przechowuje zwykle jedną wartość. Tablica może przechowywać wiele wartości tego samego typu.
Co oznacza zapis tablica[2]?
Oznacza odwołanie do elementu tablicy znajdującego się pod indeksem 2. Jeśli indeksowanie zaczyna się od 0, jest to trzeci element tablicy.
Co się stanie, gdy program odwoła się do nieistniejącego indeksu tablicy?
Najczęściej wystąpi błąd wykonania programu, ponieważ indeks znajduje się poza zakresem tablicy. Przykładem jest odwołanie do indeksu 5 w tablicy mającej tylko 5 elementów.
Jak rozpoznać deklarację tablicy dwuwymiarowej w C++?
Tablica dwuwymiarowa ma dwie pary nawiasów kwadratowych, np. `int matrix[3][3];`. Pierwszy rozmiar zwykle oznacza liczbę wierszy, a drugi liczbę kolumn.
Czym różni się `int matrix[3];` od `int matrix[3][3];`?
`int matrix[3];` deklaruje tablicę jednowymiarową z 3 elementami. `int matrix[3][3];` deklaruje tablicę dwuwymiarową z 9 elementami.
Dlaczego `int matrix[3][3][3];` nie jest tablicą dwuwymiarową?
Ten zapis ma trzy pary nawiasów kwadratowych, więc oznacza tablicę trójwymiarową. Tablica dwuwymiarowa ma dokładnie dwa wymiary.
Jak odwołać się do elementu tablicy dwuwymiarowej w C++?
Należy podać dwa indeksy, np. `matrix[1][2]`. Pierwszy indeks wskazuje wiersz, drugi kolumnę.
Od jakiej wartości zaczyna się indeksowanie tablic w C++?
Indeksowanie zaczyna się od 0. Dla tablicy `int matrix[3][3];` poprawne indeksy w każdym wymiarze to `0`, `1` i `2`.
Ile elementów ma tablica zadeklarowana jako `int matrix[3][3];`?
Ma łącznie 9 elementów, ponieważ składa się z 3 wierszy i 3 kolumn. Liczbę elementów oblicza się jako `3 * 3`.
Czym różni się zwykła tablica od tablicy asocjacyjnej?
Zwykła tablica używa najczęściej indeksów liczbowych, np. 0, 1, 2. Tablica asocjacyjna używa kluczy, np. 'imie', 'wiek', 'email'.
Co oznacza para klucz-wartość?
Para klucz-wartość oznacza, że każda dana ma swój identyfikator, czyli klucz, oraz przypisaną do niego wartość. Przykład: klucz 'imie' ma wartość 'Anna'.
Czy klucz w tablicy asocjacyjnej musi być liczbą?
Nie. Klucz może być np. tekstem, dlatego tablica asocjacyjna pozwala opisywać dane bardziej czytelnie niż zwykła tablica indeksowana liczbami.
W jakich sytuacjach warto używać tablicy asocjacyjnej?
Warto jej używać, gdy dane mają nazwy lub etykiety, np. dane użytkownika, konfiguracja aplikacji, koszyk zakupowy albo ustawienia formularza.
Jakie struktury danych są odpowiednikami tablic asocjacyjnych w popularnych językach programowania?
W Pythonie odpowiednikiem jest słownik dict, w C# Dictionary, w Javie HashMap, a w JavaScript obiekt lub Map.
Dlaczego odpowiedź o indeksach numerycznych nie opisuje tablicy asocjacyjnej?
Ponieważ indeksy numeryczne są typowe dla zwykłych tablic indeksowanych. Tablica asocjacyjna pozwala odwoływać się do wartości przez klucze.
Do czego służy funkcja malloc()?
`malloc()` służy do dynamicznego przydzielania określonej liczby bajtów pamięci w czasie działania programu. Zwraca wskaźnik do zaalokowanego obszaru.
Dlaczego przy malloc() dla tablicy używa się sizeof()?
`sizeof()` oblicza rozmiar jednego elementu w bajtach. Aby zaalokować tablicę, trzeba pomnożyć liczbę elementów przez rozmiar pojedynczego elementu, np. `n * sizeof(int)`.
Czy sizeof() dynamicznie przydziela pamięć?
Nie. `sizeof()` tylko zwraca rozmiar typu lub obiektu w bajtach. Nie rezerwuje pamięci.
Do czego służy funkcja free()?
`free()` zwalnia pamięć wcześniej przydzieloną przez `malloc()`, `calloc()` lub `realloc()`. Sama nie przydziela pamięci.
Jaka jest rola operatora delete[]?
`delete[]` służy do zwalniania pamięci zaalokowanej operatorem `new[]`. Nie należy go używać do pamięci przydzielonej przez `malloc()`.
Czym różni się malloc() od new[] w C++?
`malloc()` przydziela surową pamięć i nie wywołuje konstruktorów. `new[]` przydziela pamięć dla tablicy obiektów i wywołuje ich konstruktory.
Co oznacza, że pamięć jest przydzielana dynamicznie?
Oznacza to, że pamięć jest rezerwowana podczas działania programu, a nie na etapie kompilacji. Rozmiar takiej struktury może zależeć np. od danych podanych przez użytkownika.
Czym jest typ rekordowy w programowaniu?
Typ rekordowy to typ złożony, który grupuje kilka pól pod jedną nazwą. Pola mogą mieć różne typy danych.
Dlaczego `struct` w C++ jest typem rekordowym?
`struct` pozwala zdefiniować strukturę składającą się z wielu pól, np. tekstowych i liczbowych. Dzięki temu opisuje jeden złożony obiekt danych.
Czym typ rekordowy różni się od typu prostego?
Typ prosty przechowuje pojedynczą wartość, np. liczbę lub wartość logiczną. Typ rekordowy przechowuje zestaw powiązanych wartości.
Czy `int`, `bool` i `float` są typami rekordowymi?
Nie. Są to typy proste, ponieważ przechowują pojedynczą wartość, a nie zestaw pól.
Do czego można wykorzystać typ rekordowy?
Można go wykorzystać do opisu danych złożonych, np. ucznia, pracownika, produktu, punktu lub daty. Pozwala przechowywać powiązane informacje w jednej strukturze.
Jak odwołać się do pola struktury w C++?
Do pola struktury odwołuje się za pomocą operatora kropki, np. `uczen.wiek`. Oznacza to dostęp do pola `wiek` obiektu `uczen`.