Typy danych Przemysław Gawroński D-10, p. 234 Wykład 1 25 lutego 2019 (Wykład 1) Typy danych 25 lutego 2019 1 / 11
Outline 1 Literatura 2 Programowanie proceduralne 3 Podstawowe typy danych (Wykład 1) Typy danych 25 lutego 2019 2 / 11
Literatura 1 Stephen Prata - Język C: szkoła programowania 2 K.N. King C Programming. A Modern Approach 3 Ben Klemens - 21st Century C: C Tips from the New School 4 Richard M. Reese - Understanding and Using C Pointers (Wykład 1) Typy danych 25 lutego 2019 3 / 11
Literatura 1 Stephen Prata - Język C: szkoła programowania 2 K.N. King C Programming. A Modern Approach 3 Ben Klemens - 21st Century C: C Tips from the New School 4 Richard M. Reese - Understanding and Using C Pointers 5 Steve Oualline - Język C. Programowanie 6 Kenneth A. Reek - Język C: wskaźniki: vademecum profesjonalisty 7 Herbert Schildt - Programowanie C 8 Brian W. Kernighan, Dennis M. Ritchie - Język ANSI C (Wykład 1) Typy danych 25 lutego 2019 3 / 11
Literatura 1 Stephen Prata - Język C: szkoła programowania 2 K.N. King C Programming. A Modern Approach 3 Ben Klemens - 21st Century C: C Tips from the New School 4 Richard M. Reese - Understanding and Using C Pointers 5 Steve Oualline - Język C. Programowanie 6 Kenneth A. Reek - Język C: wskaźniki: vademecum profesjonalisty 7 Herbert Schildt - Programowanie C 8 Brian W. Kernighan, Dennis M. Ritchie - Język ANSI C 9 Kyle Loudon - Algorytmy w C 10 Frantisek Franek - Pamięć w językach C i C++ 11 John Viega, Matt Messier C i C++. Bezpieczne programowanie. Receptury (Wykład 1) Typy danych 25 lutego 2019 3 / 11
Literatura 1 Stephen Prata - Język C: szkoła programowania 2 K.N. King C Programming. A Modern Approach 3 Ben Klemens - 21st Century C: C Tips from the New School 4 Richard M. Reese - Understanding and Using C Pointers 5 Steve Oualline - Język C. Programowanie 6 Kenneth A. Reek - Język C: wskaźniki: vademecum profesjonalisty 7 Herbert Schildt - Programowanie C 8 Brian W. Kernighan, Dennis M. Ritchie - Język ANSI C 9 Kyle Loudon - Algorytmy w C 10 Frantisek Franek - Pamięć w językach C i C++ 11 John Viega, Matt Messier C i C++. Bezpieczne programowanie. Receptury 12 Steve Summit Programowanie w języku C. FAQ 13 Peter van der Linden - Expert C Programming. Deep C Secrets (Wykład 1) Typy danych 25 lutego 2019 3 / 11
Literatura 1 Stephen Prata - Język C: szkoła programowania 2 K.N. King C Programming. A Modern Approach 3 Ben Klemens - 21st Century C: C Tips from the New School 4 Richard M. Reese - Understanding and Using C Pointers 5 Steve Oualline - Język C. Programowanie 6 Kenneth A. Reek - Język C: wskaźniki: vademecum profesjonalisty 7 Herbert Schildt - Programowanie C 8 Brian W. Kernighan, Dennis M. Ritchie - Język ANSI C 9 Kyle Loudon - Algorytmy w C 10 Frantisek Franek - Pamięć w językach C i C++ 11 John Viega, Matt Messier C i C++. Bezpieczne programowanie. Receptury 12 Steve Summit Programowanie w języku C. FAQ 13 Peter van der Linden - Expert C Programming. Deep C Secrets 14 http://stackoverflow.com/questions/tagged/c (Wykład 1) Typy danych 25 lutego 2019 3 / 11
TIOBE INDEX - http://www.tiobe.com (Wykład 1) Typy danych 25 lutego 2019 4 / 11
Czym jest programowanie? (Wykład 1) Typy danych 25 lutego 2019 5 / 11
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: (Wykład 1) Typy danych 25 lutego 2019 5 / 11
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): (Wykład 1) Typy danych 25 lutego 2019 5 / 11
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), (Wykład 1) Typy danych 25 lutego 2019 5 / 11
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), dynamiczna (malloc, realloc) (Wykład 1) Typy danych 25 lutego 2019 5 / 11
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), dynamiczna (malloc, realloc) Operacje na zmiennych, modyfikacja wartości zmiennych, zmiana stanu programu: (Wykład 1) Typy danych 25 lutego 2019 5 / 11
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), dynamiczna (malloc, realloc) Operacje na zmiennych, modyfikacja wartości zmiennych, zmiana stanu programu: operatory, (Wykład 1) Typy danych 25 lutego 2019 5 / 11
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), dynamiczna (malloc, realloc) Operacje na zmiennych, modyfikacja wartości zmiennych, zmiana stanu programu: operatory, funkcje (przekazywanie i zwracanie zmiennych). (Wykład 1) Typy danych 25 lutego 2019 5 / 11
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), dynamiczna (malloc, realloc) Operacje na zmiennych, modyfikacja wartości zmiennych, zmiana stanu programu: operatory, funkcje (przekazywanie i zwracanie zmiennych). Dealokacja pamięci (free). (Wykład 1) Typy danych 25 lutego 2019 5 / 11
Podstawowe typy danych W C89 zdefiniowanych jest 5 podstawowych typów danych: (Wykład 1) Typy danych 25 lutego 2019 6 / 11
Podstawowe typy danych W C89 zdefiniowanych jest 5 podstawowych typów danych: 1 brak wartości - void, (Wykład 1) Typy danych 25 lutego 2019 6 / 11
Podstawowe typy danych W C89 zdefiniowanych jest 5 podstawowych typów danych: 1 brak wartości - void, 2 znak - char (Wykład 1) Typy danych 25 lutego 2019 6 / 11
Podstawowe typy danych W C89 zdefiniowanych jest 5 podstawowych typów danych: 1 brak wartości - void, 2 znak - char You can pronounce the C keyword char in at least three ways: like the English words char, care, or car (or maybe even character); the choice is arbitrary. (Wykład 1) Typy danych 25 lutego 2019 6 / 11
Podstawowe typy danych W C89 zdefiniowanych jest 5 podstawowych typów danych: 1 brak wartości - void, 2 znak - char You can pronounce the C keyword char in at least three ways: like the English words char, care, or car (or maybe even character); the choice is arbitrary. 3 liczba całkowita - int, (Wykład 1) Typy danych 25 lutego 2019 6 / 11
Podstawowe typy danych W C89 zdefiniowanych jest 5 podstawowych typów danych: 1 brak wartości - void, 2 znak - char You can pronounce the C keyword char in at least three ways: like the English words char, care, or car (or maybe even character); the choice is arbitrary. 3 liczba całkowita - int, 4 liczba zmiennoprzecinkowa - float, (Wykład 1) Typy danych 25 lutego 2019 6 / 11
Podstawowe typy danych W C89 zdefiniowanych jest 5 podstawowych typów danych: 1 brak wartości - void, 2 znak - char You can pronounce the C keyword char in at least three ways: like the English words char, care, or car (or maybe even character); the choice is arbitrary. 3 liczba całkowita - int, 4 liczba zmiennoprzecinkowa - float, 5 liczba zmiennoprzecinkowa podwójnej precyzji - double. (Wykład 1) Typy danych 25 lutego 2019 6 / 11
Modyfikatory typów Typy podstawowe stanowią bazę do budowania typów złożonych i typów zmodyfikowanych. (Wykład 1) Typy danych 25 lutego 2019 7 / 11
Modyfikatory typów Typy podstawowe stanowią bazę do budowania typów złożonych i typów zmodyfikowanych. Rozmiar oraz zakres zmieniają się w zależności od procesora oraz kompilatora. Nie można przyjmować żadnych założeń odnośnie rozmiaru typów, jeżeli chcemy zapewnić przenośność programu między środowiskami wykonania. (Wykład 1) Typy danych 25 lutego 2019 7 / 11
Modyfikatory typów Typy podstawowe stanowią bazę do budowania typów złożonych i typów zmodyfikowanych. Rozmiar oraz zakres zmieniają się w zależności od procesora oraz kompilatora. Nie można przyjmować żadnych założeń odnośnie rozmiaru typów, jeżeli chcemy zapewnić przenośność programu między środowiskami wykonania. Standard języka C definiuje jedynie minimalny zakres typu, a nie rozmiar w bajtach. (Wykład 1) Typy danych 25 lutego 2019 7 / 11
Modyfikatory typów Typy podstawowe stanowią bazę do budowania typów złożonych i typów zmodyfikowanych. Rozmiar oraz zakres zmieniają się w zależności od procesora oraz kompilatora. Nie można przyjmować żadnych założeń odnośnie rozmiaru typów, jeżeli chcemy zapewnić przenośność programu między środowiskami wykonania. Standard języka C definiuje jedynie minimalny zakres typu, a nie rozmiar w bajtach. Modyfikatory typów zmieniają znaczenie typu podstawowego, w celu lepszego dostosowania go do rozwiązywanego problemu. (Wykład 1) Typy danych 25 lutego 2019 7 / 11
Modyfikatory typów Typy podstawowe stanowią bazę do budowania typów złożonych i typów zmodyfikowanych. Rozmiar oraz zakres zmieniają się w zależności od procesora oraz kompilatora. Nie można przyjmować żadnych założeń odnośnie rozmiaru typów, jeżeli chcemy zapewnić przenośność programu między środowiskami wykonania. Standard języka C definiuje jedynie minimalny zakres typu, a nie rozmiar w bajtach. Modyfikatory typów zmieniają znaczenie typu podstawowego, w celu lepszego dostosowania go do rozwiązywanego problemu. Modyfikatory typu int signed, unsigned, long, short. (Wykład 1) Typy danych 25 lutego 2019 7 / 11
Modyfikatory typów Typy podstawowe stanowią bazę do budowania typów złożonych i typów zmodyfikowanych. Rozmiar oraz zakres zmieniają się w zależności od procesora oraz kompilatora. Nie można przyjmować żadnych założeń odnośnie rozmiaru typów, jeżeli chcemy zapewnić przenośność programu między środowiskami wykonania. Standard języka C definiuje jedynie minimalny zakres typu, a nie rozmiar w bajtach. Modyfikatory typów zmieniają znaczenie typu podstawowego, w celu lepszego dostosowania go do rozwiązywanego problemu. Modyfikatory typu int signed, unsigned, long, short. Modyfikatory typu char signed, unsigned. (Wykład 1) Typy danych 25 lutego 2019 7 / 11
Modyfikatory typów Typy podstawowe stanowią bazę do budowania typów złożonych i typów zmodyfikowanych. Rozmiar oraz zakres zmieniają się w zależności od procesora oraz kompilatora. Nie można przyjmować żadnych założeń odnośnie rozmiaru typów, jeżeli chcemy zapewnić przenośność programu między środowiskami wykonania. Standard języka C definiuje jedynie minimalny zakres typu, a nie rozmiar w bajtach. Modyfikatory typów zmieniają znaczenie typu podstawowego, w celu lepszego dostosowania go do rozwiązywanego problemu. Modyfikatory typu int signed, unsigned, long, short. Modyfikatory typu char signed, unsigned. Modyfikator long stosujemy z typem double (oraz w standardzie C99 z typem long int). (Wykład 1) Typy danych 25 lutego 2019 7 / 11
Typy całkowite - <limits.h>(gcc 8.2.0, 64bit) Typ Typowy rozmiar Minimalny zakres w bitach char 8 128 127 unsigned char 8 0 255 signed char 8 128 127 short int 16 32768 32767 signed short int 16 32768 32767 unsigned short int 16 0 65535 int 32 2147483648 2147483647 signed int 32 2147483648 2147483647 unsigned int 32 0 4294967295 (Wykład 1) Typy danych 25 lutego 2019 8 / 11
Typy całkowite - <limits.h>(gcc 8.2.0, 64bit) Typ Typowy rozmiar Minimalny zakres w bitach long int 64 9223372036854775808 9223372036854775807 unsigned long int 64 0 2 64 1 signed long int 64 9223372036854775808 9223372036854775807 Typ Typowy rozmiar Minimalny zakres (C99) w bitach long long int 64 2 63 2 63 1 unsigned long long int 64 0 2 64 1 signed long long int 64 9223372036854775808 9223372036854775807 (Wykład 1) Typy danych 25 lutego 2019 9 / 11
Typy rzeczywiste - <float.h>(gcc 8.2.0, 64bit) Typowy Minimalna Minimalna Maksymalna Typ rozmiar liczba cyfr wartość wartość w bitach znaczących wykładnika wykładnika float 32 6-38 +38 double 64 15-308 +308 long double 128 18-4932 +4932 (Wykład 1) Typy danych 25 lutego 2019 10 / 11
Identyfikatory Identyfikatory to nazwy zmiennych, funkcji, etykiet, itp. (Wykład 1) Typy danych 25 lutego 2019 11 / 11
Identyfikatory Identyfikatory to nazwy zmiennych, funkcji, etykiet, itp. Identyfikator może zawierać jeden lub więcej znaków. (Wykład 1) Typy danych 25 lutego 2019 11 / 11
Identyfikatory Identyfikatory to nazwy zmiennych, funkcji, etykiet, itp. Identyfikator może zawierać jeden lub więcej znaków. Pierwszy znak musi być literą lub znakiem podkreślenia, pozostałe muszą być literami, cyframi lub znakami podkreślenia. (Wykład 1) Typy danych 25 lutego 2019 11 / 11
Identyfikatory Identyfikatory to nazwy zmiennych, funkcji, etykiet, itp. Identyfikator może zawierać jeden lub więcej znaków. Pierwszy znak musi być literą lub znakiem podkreślenia, pozostałe muszą być literami, cyframi lub znakami podkreślenia. Identyfikatory zewnętrzne, używane w procesie konsolidacji, to nazwy funkcji oraz zmiennych globalnych współdzielonych przez pliki źródłowe. (Wykład 1) Typy danych 25 lutego 2019 11 / 11
Identyfikatory Identyfikatory to nazwy zmiennych, funkcji, etykiet, itp. Identyfikator może zawierać jeden lub więcej znaków. Pierwszy znak musi być literą lub znakiem podkreślenia, pozostałe muszą być literami, cyframi lub znakami podkreślenia. Identyfikatory zewnętrzne, używane w procesie konsolidacji, to nazwy funkcji oraz zmiennych globalnych współdzielonych przez pliki źródłowe. Identyfikatory wewnętrzne nieużywane w procesie konsolidacji, np. nazwy zmiennych lokalnych. (Wykład 1) Typy danych 25 lutego 2019 11 / 11
Identyfikatory Identyfikatory to nazwy zmiennych, funkcji, etykiet, itp. Identyfikator może zawierać jeden lub więcej znaków. Pierwszy znak musi być literą lub znakiem podkreślenia, pozostałe muszą być literami, cyframi lub znakami podkreślenia. Identyfikatory zewnętrzne, używane w procesie konsolidacji, to nazwy funkcji oraz zmiennych globalnych współdzielonych przez pliki źródłowe. Identyfikatory wewnętrzne nieużywane w procesie konsolidacji, np. nazwy zmiennych lokalnych. W C89 znaczących jest co najmniej 6 (C99-31) pierwszych znaków identyfikatora zewnętrznego i 31 (C99-63) pierwszych znaków identyfikatora wewnętrznego. W C++ znaczące są co najmniej 1024 początkowe znaki. (Wykład 1) Typy danych 25 lutego 2019 11 / 11
Identyfikatory Identyfikatory to nazwy zmiennych, funkcji, etykiet, itp. Identyfikator może zawierać jeden lub więcej znaków. Pierwszy znak musi być literą lub znakiem podkreślenia, pozostałe muszą być literami, cyframi lub znakami podkreślenia. Identyfikatory zewnętrzne, używane w procesie konsolidacji, to nazwy funkcji oraz zmiennych globalnych współdzielonych przez pliki źródłowe. Identyfikatory wewnętrzne nieużywane w procesie konsolidacji, np. nazwy zmiennych lokalnych. W C89 znaczących jest co najmniej 6 (C99-31) pierwszych znaków identyfikatora zewnętrznego i 31 (C99-63) pierwszych znaków identyfikatora wewnętrznego. W C++ znaczące są co najmniej 1024 początkowe znaki. W identyfikatorach rozróżniana jest wielkość znaków. (Wykład 1) Typy danych 25 lutego 2019 11 / 11
Identyfikatory Identyfikatory to nazwy zmiennych, funkcji, etykiet, itp. Identyfikator może zawierać jeden lub więcej znaków. Pierwszy znak musi być literą lub znakiem podkreślenia, pozostałe muszą być literami, cyframi lub znakami podkreślenia. Identyfikatory zewnętrzne, używane w procesie konsolidacji, to nazwy funkcji oraz zmiennych globalnych współdzielonych przez pliki źródłowe. Identyfikatory wewnętrzne nieużywane w procesie konsolidacji, np. nazwy zmiennych lokalnych. W C89 znaczących jest co najmniej 6 (C99-31) pierwszych znaków identyfikatora zewnętrznego i 31 (C99-63) pierwszych znaków identyfikatora wewnętrznego. W C++ znaczące są co najmniej 1024 początkowe znaki. W identyfikatorach rozróżniana jest wielkość znaków. Identyfikator nie może być identyczny ze słowem kluczowym języka C/C++, ani z nazwą funkcji bibliotecznej. (Wykład 1) Typy danych 25 lutego 2019 11 / 11