Typ – opis rodzaju, struktury i zakresu wartości, jakie może przyjmować dany literał, zmienna, stała, argument, wynik funkcji lub wartość.
Przykładowe typy danych
Przykładowe typy występujące w wielu językach programowania:
- typ całkowity (w C, C++, Javie np. int, w Pascalu np. integer) – typ reprezentujący liczbę całkowitą z jakiegoś zakresu zależnego od języka a nawet konkretnej implementacji.
- typ zmiennoprzecinkowy (w C, C++, Javie np. double, w Pascalu np. real) – typ reprezentujący przybliżoną wartość liczby rzeczywistej.
- typ stałopozycyjny (w PL/1, Cobol) – typ reprezentujący liczbę wymierną o stałym mianowniku.
- typ znakowy (w C, C++, Javie, Pascalu np. char) – typ reprezentujący pojedynczy znak (ASCII lub w nowszych implementacjach Unicode).
- typ tekstowy (w Javie String, w C++, Pascalu np. string) – typ reprezentujący cały tekst. W C jego rolę pełni tablica znaków, na którą wskazuje wskaźnik do typu znakowego – char*, zakończona znakiem o wartości zero – '\0'.
- typ wskaźnikowy – oznacza wskaźnik na zmienną zadanego typu.
- typ referencyjny – odmiana wskaźnika, referencja jest różnie pojmowana w poszczególnych językach.
- typ wyliczeniowy – typ mogący przyjmować jedną z zadanych symbolicznych wartości, np. (czerwony, zielony, niebieski).
- typ tablicowy – ciąg zmiennych zadanego typu indeksowanych liczbą naturalną z pewnego przedziału (w większości języków programowania) lub dowolnym unikalnym kluczem który może być zarówno liczbą jak i ciągiem znaków (w PHP).
- typ strukturalny – zespół połączonych w jedną całość zmiennych zwanych polami struktury. Do każdego pola można się odwoływać oddzielnie.
- klasa (typ obiektowy) – odmiana struktury, w której oprócz zespołu danych dodane są także procedury działających na tych danych. Zmienna typu klasy nazywa się obiektem. Pojęcie klasy spowodowało powstanie nowego paradygmatu programowania, zwanego programowaniem obiektowym i zrewolucjonizowało sposób myślenia programisty, który od tej pory patrzy na program jako na zbiór autonomicznych obiektów.
- typ pusty (np. void w C i C++) – występuje np. w oznaczaniu funkcji nie zwracających żadnych wartości.
- typ logiczny (np. bool w C++) – może przyjmować wartości logiczne 1 (true, t) lub 0 (false, nil).
- typ bitowy reprezentujący ciąg bitów, (np. '01101'B – PL/I).
- typ zbiorowy reprezentujący zbiory elementów (np. [pon, wt, sr, czw, pt] – Pascal).
- typ zespolony reprezentujący liczby zespolone.
- typ etykietowy reprezentujący wartości będące etykietami instrukcji, wskazaniami instrukcji.
Kontrola typów
Część języków programowania stosuje kontrolę typów jako sposób zabezpieczania kodu przed nieprawidłowym działaniem oraz poprawienia jego czytelności (dla języków programowania, w których nie jest konieczna jawna deklaracja typów zmiennych). Kontrola typów może mieć postać typowania dynamicznego lub typowania statycznego.
Przykład kontroli typu w języku C++
int* wskaznik = malloc (sizeof(int));
Próba kompilacji powyższego kodu spowoduje błąd, gdyż funkcja malloc zwraca typ wskaźnikowy void*, natomiast zmienna wskaznik posiada typ int*.
Przykład kontroli typu w języku PHP
function test(MojaKlasa $zmienna) {
/* Kod funkcji */
}
Zastosowanie kontroli typu argumentu funkcji test spowoduje wystąpienie błędu w przypadku, jeśli argument $zmienna nie będzie instancją klasy MojaKlasa.