Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00079 009756 11028106 na godz. na dobę w sumie
C. Leksykon kieszonkowy - książka
C. Leksykon kieszonkowy - książka
Autor: , Liczba stron: 164
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-083-9 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> c - programowanie
Porównaj ceny (książka, ebook, audiobook).
Książka 'C. Leksykon kieszonkowy' składa się z dwóch części: zwięzłego opisu języka C oraz tematycznie ułożonego przewodnika po bibliotece standardowej. Opis języka został przedstawiony na podstawie standardu ANSI i zawiera wprowadzone później rozszerzenia. Dołączony skorowidz ułatwia szybkie znalezienie informacji na temat funkcji, typów i innych interesujących elementów składni.

Książka przedstawia:

Gdy zawiedzie Cię pamięć i zapomnisz składni danej instrukcji, 'C. Leksykon kieszonkowy' przyjdzie Ci z pomocą. Dzięki tej książce szybko znajdziesz potrzebne informacje, bez konieczności wertowania setek stron podręczników.
Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

C. Leksykon kieszonkowy Autorzy: Peter Prinz, Ulla Kirch-Prinz T³umaczenie: Piotr Imiela ISBN: 83-7361-083-9 Tytu³ orygina³u: C Pocket Reference Format: B5, stron: 164 Ksi¹¿ka „C. Leksykon kieszonkowy” sk³ada siê z dwóch czêġci: zwiêz³ego opisu jêzyka C oraz tematycznie u³o¿onego przewodnika po bibliotece standardowej. Opis jêzyka zosta³ przedstawiony na podstawie standardu ANSI i zawiera wprowadzone póĥniej rozszerzenia. Do³¹czony skorowidz u³atwia szybkie znalezienie informacji na temat funkcji, typów i innych interesuj¹cych elementów sk³adni. Ksi¹¿ka przedstawia: • Podstawy jêzyka C • Typy danych • Wyra¿enia i operatory • Instrukcje jêzyka C • Deklaracje • Funkcje • Dyrektywy preprocesora • Biblioteka standardowa Gdy zawiedzie Ciê pamiêæ i zapomnisz sk³adni danej instrukcji, „C. Leksykon kieszonkowy” przyjdzie Ci z pomoc¹. Dziêki tej ksi¹¿ce szybko znajdziesz potrzebne informacje, bez koniecznoġci wertowania setek stron podrêczników. IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Spis treści Wprowadzenie...................................................n...................... 7 Podstawy...................................................n............................... 9 Struktura programu w języku C...................................................g............9 Zbiory znaków ...................................................g.......................................11 Identyfikatory ...................................................g.........................................13 Rodzaje i zasięg identyfikatorów ...................................................g........15 Podstawowe typy...................................................n.............. 17 Typy całkowite...................................................g.......................................17 Typy rzeczywiste i zespolone...................................................g..............19 Typ void ...................................................g..................................................2g2 Stałe...................................................n...................................... 23 Stałe całkowite...................................................g........................................23 Stałe zmiennopozycyjne ...................................................g.......................25 Stałe znakowe i literały napisowe...................................................g.......26 Wyrażenia i operatory..............................n........................... 28 Operatory arytmetyczne ...................................................g.......................30 Operatory przypisania...................................................g..........................32 Operatory relacji ...................................................g....................................34 Operatory logiczne ...................................................g................................35 Operatory bitowe...................................................g...................................36 Operatory dostępu do pamięci...................................................g............38 Pozostałe operatory ...................................................g...............................39 Konwersje typów...................................................n............... 42 Promocja całkowita....................................g...............................................42 Zwykłe konwersje arytmetyczne........................g....................................43 Konwersja typów w przypadku przypisań i wskaźników ................44 Spis treści 3 Instrukcje...................................................n............................. 45 Bloki i instrukcje wyrażeniowe ...................................................g...........45 Skoki..............................................g...................................................g...........46 Pętle...............................................g...................................................g...........49 Skoki bezwarunkowe ...................................................g............................52 Deklaracje ...................................................n........................... 54 Ogólna składnia i przykłady...................................................g................55 Deklaracje złożone...................................................g.................................56 Zmienne.............................................n...................................... 57 Klasy pamięci ...................................................g.........................................57 Inicjalizacja...................................................g..............................................58 Typy pochodne...................................................n.................... 60 Typy wyliczeniowe ...................................................g...............................60 Struktury, unie i pola bitowe ...................................................g...............61 Tablice..............................................g...................................................g........67 Wskaźniki............................................g...................................................g....70 Kwalifikatory typów oraz definicje typów...........................................74 Funkcje ...................................................n................................. 77 Prototypy funkcji ...................................................g...................................78 Definicje funkcji....................................g...................................................g..79 Wywołania funkcji...................................................g.................................82 Funkcje o zmiennej liczbie argumentów...............................................83 Łączenie identyfikatorów...........................................n......... 86 Dyrektywy preprocesora ...................................................n.. 87 Biblioteka standardowa...................................................n... 97 Standardowe pliki nagłówkowe........................................ 97 Wejście i wyjście.................................................n.................. 98 Obsługa błędów w funkcjach wejścia-wyjścia ...................................100 Ogólne funkcje dostępu do plików...................................................g...101 Plikowe funkcje wejścia-wyjścia..................................................g.........104 4 C. Leksykon kieszonkowy Zakresy liczb oraz ich klasyfikacja................................ 114 Zakresy wartości typów całkowitych ..................................................1g14 Zakres i precyzja typów zmiennopozycyjnych rzeczywistych .......116 Klasyfikacja liczb zmiennopozycyjnych..............................................116 Funkcje matematyczne....................................n................... 119 Funkcje matematyczne dla typów całkowitych .................................119 Funkcje matematyczne dla typów rzeczywistych .............................120 Optymalizacja efektywności wykonywania.......................................123 Funkcje matematyczne dla typów zmiennopozycyjnych zespolonych ...................................................g.......................................124 Makroinstrukcje niezależne od typów ................................................125 Obsługa błędów w funkcjach matematycznych.................................126 Środowisko zmiennopozycyjne..........................g..................................127 Klasyfikacja znaków i zmiana ich wielkości............... 131 Obsługa łańcuchów ...................................................n......... 133 Konwersja pomiędzy łańcuchami i wartościami liczbowymi .........136 Przekształcenia znaków wielobajtowych...................g.........................138 Wyszukiwanie i sortowanie............................................. 140 Obsługa bloków pamięci................................................n... 141 Dynamiczne zarządzanie pamięcią................................. 142 Czas i data...................................................n........................ 143 Sterowanie procesami...................................................n..... 144 Komunikacja z systemem operacyjnym....................g..........................145 Sygnały ...................................................g..................................................1g46 Skoki nielokalne...................................................g...................................148 Obsługa błędów w funkcjach systemowych..........................................149 Ustawienia narodowe...................................................n..... 150 Skorowidz..........................................n................................... 155 Spis treści 5 C. Leksykon kieszonkowy Wprowadzenie Język programowania C został opracowany w latach siedem- dziesiątych przez Dennisa Ritchiego z Bell Labs (w Murray Hill, w stanie New Jersey) podczas przygotowywania implementacji systemu operacyjnego Unix, przeznaczonej dla komputera DEC PDP-11. Korzenie języka C sięgają nieposiadającego typów języka programowania BCPL (ang. Basic Combined Programming Language, którego autorem był M. Richards) oraz języka B (opracowanego przez K. Thompsona). W 1978 roku Brian Kernighan i Dennis Ritchie przedstawili pierwszy dostępny publicznie opis języka C, znany obecnie jako standard K R. C jest językiem o wysokim stopniu przenośności, ukierunkowa- nym na architekturę współczesnych komputerów. Obecnie język sam w sobie jest stosunkowo mały i posiada niewiele elementów związanych ze sprzętem. Nie zawiera na przykład instrukcji wej- ścia-wyjścia ani technik zarządzania pamięcią. Funkcje realizu- jące te zadania są dostępne w obszernej standardowej bibliotece języka C. Konstrukcja języka C posiada istotne zalety: • kod źródłowy jest w dużym stopniu przenośny, • kod maszynowy jest efektywny, • kompilatory języka C są dostępne dla wszystkich istnieją- cych systemów. Wprowadzenie 3 Pierwsza część leksykonu opisuje język C, natomiast jego drugą część poświęcono standardowej bibliotece języka C. Język został opisany na podstawie standardu ISO X3.159. Standard ten odpo- wiada międzynarodowemu standardowi ISO/IEC 9899, który został przyjęty przez Międzynarodową Organizację Normaliza- cyjną w 1990 roku, a następnie został poprawiony w latach 1995 i 1999. Standard ISO/IEC 9899 można zamówić za pośrednic- twem internetowej witryny ANSI, znajdującej się pod adresem http://webstore.ansi.org. Standard ustanowiony w 1995 roku jest obecnie obsługiwany przez wszystkie popularne kompilatory języka C. Natomiast w wielu kompilatorach języka C nie zostały jeszcze zaimplementowane nowe rozszerzenia języka, zdefiniowane w opublikowanej w 1999 roku wersji standardu (nazywanej w skrócie „ANSI C99”), w zwią- zku z czym zostały one w niniejszej książce w specjalny sposób oznaczone. Nowe typy, funkcje i makroinstrukcje, wprowadzone przez standard ANSI C99, oznaczono gwiazdką umieszczoną w nawiasie (*). Konwencje typograficzne W książce stosowane są następujące konwencje typograficzne: Kursywa Jest stosowana przy wprowadzaniu nowych pojęć oraz do wyróżniania nazw plików. Czcionka o stałej szerokości znaków Jest używana w kodzie programów w języku C oraz w na- zwach funkcji i dyrektyw. Kursywa o stałej szerokości znaków Oznacza wymienne elementy w obrębie składni kodu. Pogrubiona czcionka o stałej szerokości znaków Wykorzystywana jest w celu zwrócenia szczególnej uwagi na wyróżnione fragmenty kodu. 4 C. Leksykon kieszonkowy Podstawy Program w języku C składa się z odrębnych bloków składowych, nazywanych funkcjami, mogących się wzajemnie wywoływać. Każda funkcja realizuje określone zadanie. Gotowe funkcje są dostępne w standardowej bibliotece języka; pozostałe funkcje są w miarę potrzeby tworzone przez programistę. Szczególną na- zwą funkcji jest main() — oznacza ona pierwszą funkcję, która jest wywoływana podczas uruchamiania programu. Wszystkie pozostałe funkcje są podprogramami. Struktura programu w języku C Rysunek 1. prezentuje strukturę programu w języku C. Przedsta- wiony program składa się z funkcji: main() oraz showPage(). Program drukuje początek pliku tekstowego, którego nazwa została podana w wierszu poleceń podczas jego uruchomienia. Program źródłowy w języku C składa się z instrukcji (ang. state- ments) tworzących funkcje, a także niezbędnych deklaracji oraz dyrektyw preprocesora. W przypadku niewielkich programów, kod źródłowy jest zapisywany w pojedynczym pliku źródłowym (ang. source file). Większe programy napisane w języku C skła- dają się z wielu plików źródłowych, które mogą być oddzielnie redagowane i kompilowane. Każdy z takich plików źródłowych zawiera funkcje tworzące pewną logiczną całość — np. funkcje wyprowadzające informacje do terminala. Informacje, które są potrzebne w wielu plikach źródłowych — takie jak deklaracje — umieszczane są w plikach nagłówkowych. Mogą one następ- nie zostać włączone do każdego pliku źródłowego za pomocą dyrektywy #include. Nazwy plików źródłowych posiadają zakończenie .c, natomiast nazwy plików nagłówkowych kończą się na .h. Plik źródłowy wraz z włączonymi do niego plikami nagłówkowymi nazywany jest jednostką translacji. Podstawy 5 Rysunek 1. Program w języku C Nie ma określonej z góry kolejności, w której muszą być definio- wane funkcje. Funkcja showPage(), przedstawiona na rysunku 1., mogłaby znajdować się również przed funkcją main(). Funkcje nie mogą być jednak definiowane wewnątrz innych funkcji. Kompilator, przetwarzając kolejno każdy z plików źródłowych, rozkłada jego zawartość na leksemy (elementy leksykalne — ang. tokens), którymi są m.in. nazwy funkcji i operatory. Leksemy mogą być oddzielone od siebie jednym lub większą liczbą niewi- docznych znaków, takich jak spacja, tabulacja lub znak nowego wiersza. Tak więc, znaczenie ma jedynie kolejność leksemów 6 C. Leksykon kieszonkowy w pliku. Układ kodu źródłowego — na przykład miejsca, w któ- rych łamane są wiersze, czy też stosowanie wcięć — jest nie- istotny. Wyjątek od tej reguły stanowią jednak dyrektywy prepro- cesora. Są one poleceniami przeznaczonymi do wykonania przez preprocesor danego programu przed kompilacją, a każde z nich zajmuje jeden wiersz, rozpoczynający się znakiem #. Komentarze są dowolnymi ciągami znaków, zawartymi pomię- dzy parami znaków /* i */ lub znajdującymi się pomiędzy zna- kami // a końcem bieżącego wiersza. Na wstępnych etapach translacji, zanim jeszcze zostanie utworzony jakikolwiek kod wy- nikowy, każdy komentarz jest zastępowany pojedynczą spacją. Następnie wykonywane są dyrektywy preprocesora. Zbiory znaków Język ANSI C określa dwa zbiory znaków. Pierwszym z nich jest źródłowy zbiór znaków (ang. source character set), będący zbiorem znaków, które mogą zostać użyte w pliku źródłowym. Drugim jest natomiast zbiór znaków wykonania programu (ang. execution character set), składający się z wszystkich znaków interpretowa- nych w trakcie wykonywania programu — będących na przy- kład znakami zawartymi w stałych tekstowych. Każdy z tych zbiorów znaków zawiera w sobie podstawowy zbiór znaków (ang. basic character set), obejmujący: • 52 wielkie i małe litery alfabetu łacińskiego: A B C D E F G H I J K L M N O P Q R S T U V W X Y ZI a b c d e f g h i j k l m n o p q r s t u v w x y z • Dziesięć cyfr dziesiętnych (w przypadku których wartość każdego znaku po 0 jest o jeden większa od wartości po- przedniej cyfry): 0 1 2 3 4 5 6 7 8 9 Podstawy 7 • 29 wymienionych poniżej znaków graficznych: ! # ( ) * + , – . / : ; = ? [ ] ^ _ { | } ~ • Pięć niewidocznych znaków: odstęp, tabulacja pozioma, tabulacja pionowa, znak nowego wiersza, znak wysuwu strony. Dodatkowo, podstawowy zbiór znaków wykonania programu zawiera: • Pusty znak , kończący ciąg znaków. • Znaki sterujące, reprezentowane za pomocą prostych sekwen- cji sterujących (ang. escape sequences), przedstawionych w ta- beli 1., umożliwiających sterowanie urządzeniami wyjścio- wymi, takimi jak terminale lub drukarki. Tabela 1. Standardowe sekwencje sterujące Sekwencja sterująca Działanie w przypadku terminalu Sekwencja sterująca Działanie w przypadku terminalu a  f v 8 Alarm (sygnał dźwiękowy) Znak cofania Wysuw strony ? Znak nowego wiersza \ Znak powrotu karetki o oo ooo (o — cyfra ósemkowa) xh.. (h.. — ciąg cyfr szesnastkowych) Tabulacja pozioma Tabulacja pionowa Znak Znak Znak ? Znak Znak o podanym kodzie ósemkowym Znak o podanym kodzie szesnastkowym C. Leksykon kieszonkowy Wszelkie inne znaki — w zależności od konkretnego kompilatora — mogą być używane w komentarzach, ciągach znaków i sta- łych napisowych. Mogą one na przykład zawierać symbol dolara lub znaki diakrytyczne. Użycie takich znaków może mieć jednak wpływ na przenośność programu. Zbiór wszystkich możliwych do wykorzystania znaków jest nazy- wany powiększonym zbiorem znaków (ang. extended character set) i stanowi on zawsze nadzbiór podstawowego zbioru znagków. Niektóre języki wykorzystują znaki, do zapamiętania których potrzeba więcej niż jednego bajtu. Takie znaki wielobajtowe (ang. multibyte characters) mogą znajdować się w powiększonym zbio- rze znaków. Ponadto, standard ANSI C99 udostępnia typ cał- kowity wchar_t (ang. wide character type — rozszerzony typ zna- kowy), o wielkości wystarczającej do reprezentowania znaków zawartych w powiększonym zbiorze znaków. Często stosowany jest nowoczesny system kodowania znaków Unicode, poszerza- jący standardowy kod ASCII w sposób umożliwiający reprezenta- cję około 35 000 znaków pochodzących z 24 krajów. C99 wprowadza również sekwencje trójznaków (ang. trigraph sequen- ces). Sekwencje te, wymienione w tabeli 2., mogą być używane do wprowadzania znaków graficznych, które nie są dostępne na wszystkich klawiaturach. Na przykład, do wprowadzenia sym- bolu „potoku” | można użyć sekwencji ??!. Tabela 2. Sekwencje trójznaków Trójznak Znaczenie ??= ??( ??/ ??) ?? ?? ??! ?? ??– # [ ] ^ { | } ~ Identyfikatory Identyfikatorami są nazwy zmiennych, funkcji, makroinstrukcji, typów itd. Ich tworzenie podlega następującym regułom: Podstawy 9 • Identyfikator składa się z ciągu liter (od A do Z i od a do z), cyfr (od 0 do 9) oraz znaków podkreślenia (_). • Pierwszym znakiem identyfikatora nie może być cyfra. • W identyfikatorach rozróżniane są małe i wielkie litery. • Długość identyfikatora nie jest ograniczona. Jednakże na ogół znaczących jest tylko jego pierwszych 31 znaków. Słowa kluczowe (ang. keywords) są słowami zastrzeżonymi i nie mogą być używane w charakterze identyfikatorów. Poniżej za- mieszczono listę słów kluczowych języka C: auto enum restrict(*) unsigned break extern return void float short volatile case char const for goto continue if signed sizeof static while _Bool(*) _Complex(*) default inline(*) struct _Imaginary(*) do int switch double long typedef else register union Nazwy zewnętrzne, czyli identyfikatory funkcji i zmiennych łączo- nych zewnętrznie, mogą podlegać dodatkowym ograniczeniom, w zależności od używanego programu łączącego — w przeno- śnych programach, napisanych w języku C, nazwy zewnętrzne powinny być dobierane w taki sposób, by znaczenie miało tylko ich pierwszych osiem znaków, również w przypadku gdy pro- gram łączący nie rozróżnia wielkich i małych liter. 10 C. Leksykon kieszonkowy Poniżej podano przykłady identyfikatorów: Poprawne: a, DM, dm, FLOAT, _var1, topOfWindow Niepoprawne: do, 586_cpu, zähler, nl-flag, US_$ Rodzaje i zasięg identyfikatorów Każdy identyfikator należy do jednej z podanych poniżej czte- rech kategorii: • Nazwy etykiet. • Znaczniki (ang. tags) struktur, unii i wyliczeń. Są to identyfi- katory występujące bezpośrednio po słowach kluczowych struct, union lub enum (patrz rozdział „Typy pochodne”). • Nazwy składowych struktur lub unii. Każda struktura i unia posiada odrębną przestrzeń nazw, zawierającą jej składowe. • Wszystkie pozostałe identyfikatory, nazywane zwykłymi iden- tyfikatorami. Identyfikatory należące do różnych kategorii mogą być takie same. Na przykład, nazwa etykiety może zostać również użyta w cha- rakterze nazwy funkcji. Ponowne użycie identyfikatorów zdarza się najczęściej w przypadku struktur — ten sam ciąg znaków może zostać użyty do oznaczenia typu struktury, jednej z jej składowych, oraz zmiennej — jak w poniższym przykładzige: struct person {char *person; /*...*/} person; Te same nazwy mogą być również użyte jako nazwy składo- wych różnych struktur. Każdy identyfikator znajdujący się w kodzie źródłowym posiada swój zasięg (ang. scope). Zasięgiem nazywamy tę część programu, w której można użyć danego identyfikatora. Poniżej wymieniono cztery możliwe zasięgi identyfikatorów: Podstawy 11 Prototyp funkcji Identyfikatory znajdujące się na liście deklaracji argu- mentów prototypu funkcji (nie definicji funkcji) posiadają zasięg prototypu funkcji. Ponieważ identyfikatory te nie mają żadnego znaczenia poza samym prototypem, są tylko czymś więcej niż komentarzami. Funkcja Zasięg funkcji posiadają jedynie nazwy etykiet. Ich użycie jest ograniczone do bloku funkcji, w którym etykiety te zostały zdefiniowane. Nazwy etykiet muszą być unikatowe w obrę- bie funkcji. Instrukcja goto powoduje skok do instrukcji ozna- czonej etykietą, znajdującej się w obrębie tej samej funkcji. Blok Plik Identyfikatory nie będące etykietami, zadeklarowane w obrę- bie bloku, posiadają zasięg bloku. Argumenty definicji funkcji mają również zasięg bloku. Zasięg bloku rozpoczyna się deklaracją identyfikatora, natomiast kończy się zamykają- cym nawiasem klamrowym (}). Identyfikatory zadeklarowane na zewnątrz wszystkich blo- ków i list argumentów posiadają zasięg pliku. Zasięg pliku rozpoczyna się w miejscu deklaracji identyfikatora i roz- ciąga się do końca pliku źródłowego. Identyfikator nie będący nazwą etykiety nie musi być widoczny w całym swoim zasięgu. Jeżeli, na przykład, identyfikator tego samego rodzaju i posiadający taką samą nazwę, jak istniejący już identyfikator, zostanie zadeklarowany w zagnieżdżonym gbloku, to zewnętrzna deklaracja identyfikatora zostanie tymczasowo za- słonięta. Staje się ona ponownie widoczna w miejscu, gdzie kończy się zasięg wewnętrznej deklaracji. 12 C. Leksykon kieszonkowy
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

C. Leksykon kieszonkowy
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: