Typ danych
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
[edytuj | edytuj kod]![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/10/Python_3._The_standard_type_hierarchy.png/220px-Python_3._The_standard_type_hierarchy.png)
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
[edytuj | edytuj kod]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++
[edytuj | edytuj kod] 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
[edytuj | edytuj kod] 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.