Typy danych

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

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: true albo false,
  • 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. struct w C++, record w 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ęzykTyp całkowitoliczbowyPrzykład deklaracji
C++int, long, shortint wiek = 30;
JavaScriptnumber (jeden typ dla wszystkich liczb)var wiek = 30;
PHPint / integer$wiek = 30;
SQLINT, INTEGER, BIGINT, SMALLINTwiek INT

W programowaniu zmienna typu integer służy do przechowywania liczb całkowitych — to klasyczna definicja egzaminacyjna.

Liczby zmiennoprzecinkowe

JęzykTyp zmiennoprzecinkowyPrzykład
C++float, doubledouble cena = 19.99;
JavaScriptnumber (ten sam typ co liczby całkowite)var cena = 19.99;
PHPfloat, double, real$cena = 19.99;
SQLFLOAT, DOUBLE, DECIMAL, NUMERICcena DECIMAL(10,2)

Znaki i napisy

JęzykPojedynczy znakNapis (string)
C++char ('A')string lub char[]
JavaScriptbrak osobnego typu — string o długości 1string ("tekst")
PHPbrak osobnego typu — string o długości 1string ("tekst")
SQLCHAR(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ęzykTyp logicznyWartości
C++booltrue, false
JavaScriptbooleantrue, false
PHPbool / booleantrue, false
SQLBOOLEAN, BITTRUE/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ęzykTablicaStruktura / KlasaObiekt
C++int tab[10]struct, classinstancja klasy
JavaScriptvar tab = [1,2,3]class (ES6+)var obj = {x:0, y:0}
PHP$tab = [1,2,3]classinstancja klasy
SQLTABLE (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ęzykTypowanieCo to oznacza
C++statycznetyp deklarujemy przed nazwą zmiennej (int x = 5;) i nie można go zmienić
JavaScriptdynamicznetyp ustala się automatycznie z wartości, można zmieniać w trakcie
PHPdynamicznetyp ustala się z wartości, dostępne są funkcje sprawdzające typ
SQLstatyczne (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

  1. Typy proste przechowują jedną wartość: char, bool, int, float, double.
  2. Typy złożone grupują wiele wartości: tablice, struktury, klasy, obiekty.
  3. class to typ złożony — najczęstsza odpowiedź w pytaniach „wskaż typ złożony”.
  4. integer to typ przechowujący liczby całkowite.
  5. CHAR w SQL to typ stało-znakowy, VARCHAR — zmiennoznakowy.
  6. boolean w JavaScript przyjmuje wartości true lub false.
  7. var x = true; to boolean; var x = "true"; to string (cudzysłowy zmieniają typ).
  8. double *x; w C++ to wskaźnik na zmienną typu double, nie zwykła zmienna.
  9. Aby przechować dane 50 uczniów (imię, nazwisko, średnia) — używamy tablicy struktur.
  10. PHP sprawdza typ funkcjami is_int(), is_string(), is_bool(), gettype().
  11. JavaScript ma jeden typ liczbowy — number (zarówno całkowite, jak i zmiennoprzecinkowe).
  12. JavaScript i PHPdynamicznie typowane; C++ i SQLstatycznie typowane.