Typ danych określa, jakie wartości może przechowywać zmienna oraz jakie operacje można na niej wykonywać. W programowaniu typy danych dzieli się najczęściej na proste (przechowujące jedną wartość) i złożone (grupujące wiele wartości lub opisujące strukturę).
W kontekście egzaminu INF.03 typy danych pojawiają się w pytaniach dotyczących C++, JavaScript, PHP oraz SQL — i to właśnie te cztery języki warto znać w zestawieniu.
Proste typy danych
Proste typy danych przechowują pojedynczą wartość. Najczęściej spotykane:
char— pojedynczy znak, np.'A',bool— wartość logiczna:truealbofalse,int(integer) — liczba całkowita, np.42,-7,float/double— liczba zmiennoprzecinkowa, np.19.99,string— napis (w wielu językach typ prosty, technicznie sekwencja znaków).
Przykład w C++:
char znak = 'A';
bool aktywny = true;
int liczba = 42;
float cena = 19.99;
Każda z tych zmiennych przechowuje jedną konkretną wartość określonego typu.
Złożone typy danych
Złożone typy danych mogą grupować wiele wartości lub opisywać bardziej rozbudowane struktury. Do typów złożonych zalicza się m.in.:
- tablice — uporządkowane zbiory wartości tego samego typu,
- struktury — grupy pól różnych typów (np.
structw C++,recordw Pascalu), - klasy i obiekty — w językach obiektowych,
- rekordy w bazach danych.
Przykład klasy (typ złożony) w C++:
class Uzytkownik {
public:
string login;
int wiek;
bool aktywny;
};
Klasa Uzytkownik składa się z kilku pól różnych typów, więc jest typem złożonym. Pozwala opisać bardziej skomplikowany obiekt niż pojedyncza liczba czy znak.
Częste pytanie egzaminacyjne: aby przechować dane 50 uczniów (imię, nazwisko, średnia ocen), należy użyć tablicy struktur — czyli typu złożonego, który łączy tablicę z rekordem.
Typy danych w różnych językach programowania
Na egzaminie INF.03 pojawiają się pytania o typy danych w czterech językach: C++, JavaScript, PHP i SQL. Poniższe zestawienie pomaga je porównać.
Liczby całkowite
| Język | Typ całkowitoliczbowy | Przykład deklaracji |
|---|---|---|
| C++ | int, long, short | int wiek = 30; |
| JavaScript | number (jeden typ dla wszystkich liczb) | var wiek = 30; |
| PHP | int / integer | $wiek = 30; |
| SQL | INT, INTEGER, BIGINT, SMALLINT | wiek INT |
W programowaniu zmienna typu integer służy do przechowywania liczb całkowitych — to klasyczna definicja egzaminacyjna.
Liczby zmiennoprzecinkowe
| Język | Typ zmiennoprzecinkowy | Przykład |
|---|---|---|
| C++ | float, double | double cena = 19.99; |
| JavaScript | number (ten sam typ co liczby całkowite) | var cena = 19.99; |
| PHP | float, double, real | $cena = 19.99; |
| SQL | FLOAT, DOUBLE, DECIMAL, NUMERIC | cena DECIMAL(10,2) |
Znaki i napisy
| Język | Pojedynczy znak | Napis (string) |
|---|---|---|
| C++ | char ('A') | string lub char[] |
| JavaScript | brak osobnego typu — string o długości 1 | string ("tekst") |
| PHP | brak osobnego typu — string o długości 1 | string ("tekst") |
| SQL | CHAR(1) | CHAR(n), VARCHAR(n), TEXT |
Typ stało-znakowy w SQL to CHAR (lub CHAR(n)) — w przeciwieństwie do VARCHAR, który jest zmiennoznakowy (przechowuje napis o zmiennej długości).
Wartości logiczne (boolean)
| Język | Typ logiczny | Wartości |
|---|---|---|
| C++ | bool | true, false |
| JavaScript | boolean | true, false |
| PHP | bool / boolean | true, false |
| SQL | BOOLEAN, BIT | TRUE/FALSE, 1/0 |
W języku JavaScript wartość typu boolean może być reprezentowana wyłącznie przez true lub false. Uwaga na pułapkę: var x = true; to boolean, ale var x = "true"; z cudzysłowami to string (napis), nie wartość logiczna.
Typy złożone
| Język | Tablica | Struktura / Klasa | Obiekt |
|---|---|---|---|
| C++ | int tab[10] | struct, class | instancja klasy |
| JavaScript | var tab = [1,2,3] | class (ES6+) | var obj = {x:0, y:0} |
| PHP | $tab = [1,2,3] | class | instancja klasy |
| SQL | — | TABLE (rekord = wiersz) | — |
W JavaScript obiekt zapisany jako var obiekt = { x: 0, y: 0, wsp: function(){...} } zawiera właściwości (x, y) i metodę (wsp) — całość jest typem złożonym.
Dynamiczne kontra statyczne typowanie
Cztery omawiane języki różnią się sposobem zarządzania typami:
| Język | Typowanie | Co to oznacza |
|---|---|---|
| C++ | statyczne | typ deklarujemy przed nazwą zmiennej (int x = 5;) i nie można go zmienić |
| JavaScript | dynamiczne | typ ustala się automatycznie z wartości, można zmieniać w trakcie |
| PHP | dynamiczne | typ ustala się z wartości, dostępne są funkcje sprawdzające typ |
| SQL | statyczne (na poziomie schematu) | typ kolumny określa się w CREATE TABLE |
Sprawdzanie typu w PHP
PHP, mimo dynamicznego typowania, udostępnia rodzinę funkcji do weryfikacji wartości i typu zmiennej:
is_int($x); // czy liczba całkowita
is_string($x); // czy napis
is_bool($x); // czy wartość logiczna
is_array($x); // czy tablica
is_null($x); // czy NULL
gettype($x); // zwraca nazwę typu jako string
Specjalne przypadki — wskaźniki w C++
W C++ istnieją wskaźniki — zmienne przechowujące adres innej zmiennej:
double *x;
Zapis double *x; deklaruje wskaźnik na zmienną typu double — sam x nie przechowuje liczby, lecz adres pamięci, pod którym znajduje się liczba typu double.
Co warto zapamiętać na egzamin INF.03
- Typy proste przechowują jedną wartość:
char,bool,int,float,double. - Typy złożone grupują wiele wartości: tablice, struktury, klasy, obiekty.
classto typ złożony — najczęstsza odpowiedź w pytaniach „wskaż typ złożony”.integerto typ przechowujący liczby całkowite.CHARw SQL to typ stało-znakowy,VARCHAR— zmiennoznakowy.booleanw JavaScript przyjmuje wartościtruelubfalse.var x = true;to boolean;var x = "true";to string (cudzysłowy zmieniają typ).double *x;w C++ to wskaźnik na zmienną typu double, nie zwykła zmienna.- Aby przechować dane 50 uczniów (imię, nazwisko, średnia) — używamy tablicy struktur.
- PHP sprawdza typ funkcjami
is_int(),is_string(),is_bool(),gettype(). - JavaScript ma jeden typ liczbowy —
number(zarówno całkowite, jak i zmiennoprzecinkowe). - JavaScript i PHP są dynamicznie typowane; C++ i SQL — statycznie typowane.