Typy danych w programowaniu
Typy danych definiują rodzaj, strukturę i zakres wartości, które mogą przyjmować literały, zmienne, stałe oraz wyniki funkcji w programowaniu. Oto najważniejsze typy danych:
Przykładowe typy danych
- Typ całkowity (np. int, integer) – reprezentuje liczby całkowite w określonym zakresie.
- Typ zmiennoprzecinkowy (np. double, real) – reprezentuje przybliżone wartości liczb rzeczywistych.
- Typ znakowy (np. char) – reprezentuje pojedynczy znak, zazwyczaj w formacie ASCII lub Unicode.
- Typ tekstowy (np. String, string) – reprezentuje ciąg znaków lub tekst. W C jest to tablica znaków zakończona znakiem NULL.
- Typ wskaźnikowy – wskazuje na zmienną określonego typu.
- Typ referencyjny – jest to odmiana wskaźnika, różnie interpretowana w różnych językach.
- Typ wyliczeniowy – może przyjmować jedną z zdefiniowanych wartości (np. kolory).
- Typ tablicowy – zbiór zmiennych tego samego typu, indeksowanych liczbą naturalną lub kluczem.
- Typ strukturalny – zestaw zmiennych połączonych w jedną całość, z dostępem do każdego pola oddzielnie.
- Typ obiektowy (klasa) – łączy dane i procedury operujące na tych danych, wprowadzając paradygmat programowania obiektowego.
- Typ pusty (np. void) – używany w funkcjach, które nie zwracają wartości.
- Typ logiczny (np. bool) – przyjmuje wartości logiczne true (1) lub false (0).
- Typ bitowy – reprezentuje ciąg bitów.
- Typ zbiorowy – reprezentuje zbiory elementów.
- Typ zespolony – reprezentuje liczby zespolone.
- Typ etykietowy – wartości służące jako etykiety instrukcji.
Kontrola typów
Niektóre języki programowania stosują kontrolę typów, aby zapewnić poprawność działania kodu i poprawić jego czytelność. Kontrola typów może być realizowana jako typowanie dynamiczne lub statyczne.
Przykłady kontroli typów
W języku C++:
int* wskaznik = malloc(sizeof(int));
Powyższy kod spowoduje błąd kompilacji, ponieważ malloc zwraca typ void*, a wskaznik jest typu int*.
W języku PHP:
function test(MojaKlasa $zmienna) {
/* Kod funkcji */
}
W tym przypadku, jeśli argument $zmienna nie jest instancją klasy MojaKlasa, wystąpi błąd.