Skip to content

opcode-eu-org-website/C_Cpp-examples

Repository files navigation

Repozytorium zawiera zbiór opisanych w komentarzach programów demonstrujących podstawowy programowania w C i C++ (w sporej części przeznaczonych dla środowisk Unixowych, ze względu na wykorzystanie oferowanych przez nie funkcji systemowych). Osoby zaczynające dopiero naukę tych języków zachęcam najpierw do zapoznania się z bardziej uporządkowanym opisem podstaw w http://www.opcode.eu.org/Podstawy_C.pdf. Zachęcam także do zapoznania się z wielojęzykowym wprowadzeniem do programowania zawartym w ramach vademecum informatyki praktycznej.

Przykłady w repozytorium są stworzone z myślą o zapoznaniu się z kodem (oraz komentarzami w nim zawartymi), uruchomieniu go, a następnie wykonywania na nim własnych eksperymentów (zmieniania wartości, warunków itd). Takie eksperymenty pozwolą dużo lepiej zapoznać się z prezentowanymi w przykładach konstrukcjami i funkcjami biblioteki standardowej. Warto zauważyć że część zagadnień jest jedynie opisana w komentarzach i wręcz wymaga samodzielnego dodania do kodu, eksperymentowania z nim.

Część programów nie przypadkowo zachowuje się trochę dziwnie po uruchomieniu (np. wypisując dość przypadkowe teksty czy ich fragmenty). Należy patrzeć w ich kod i starać się zrozumieć dlaczego zachowują się w taki sposób. Bardzo pomocne będzie w tym eksperymentowanie z kodem.

spis treści

Repozytorium zawiera kilka katalogów, grupujących przykłady związane z danym typem zagadnienia. Każdy z nich zawiera plik README.md z opisem plików znajdujących się w danym katalogu w sugerowanej kolejności zapoznawania się z nimi. Są to:

  1. Podstawy C – Przykładowe programy prezentujące podstawowe zagadnienia z programowania w ("czystym") C. Takie jak definiowanie zmiennych, funkcji, podstawowe operacje wejścia wyjścia.
  2. Podstawy C++ – Podstawy C++ różne od C, czyli tylko rzeczy dodane w C++ (część wspólna jest pominięta – zapoznaj się z "Podstawy C").
  3. Trochę więcej niż podstawy C – Troszkę bardziej zaawansowane zagadnienia z C (alokacja pamięci, obsługa błędów, operacje bitowe).
  4. Podstawy programowania Unixa/Linuxa – Podstawowe tematy związane z funkcjami systemów POSIX (Linux, Unix, ...) takie jak: funkcje daty i czasu, czytanie katalogu, tworzenie nowych procesów, sygnały, deskryptory plików, obsługa opcji linii poleceń.
  5. Sieci TCP/IP – Wysyłanie i odbiór po UDP oraz TCP, zamiana nazw domenowych na adresy.
  6. Trochę więcej niż podstawy programowania Unixa/Linuxa – Bardziej zaawansowane zagadnienia związane z funckjami systemów POSIX (wielowątkowość, komunikacja międzyprocesowa, terminale tty).
  7. Różne, inne i trochę bardziej zaawansowane tematy – używanie języków skryptowych z poziomu C, wątki i wyrażenia regularne w C++, praktyczna komunikacja TCP (wraz z obsługą napisów) w C++, resolver DNS, adresacja IPv6
  8. Bliżej sprzętu i jądra – jak alokowana jest pamięć, porty I/O, blokowanie przerwań, precyzyjny pomiar czasu, USB, moduły jądra, ...
  9. (Graficzny) interfejs użytkownika – graficzny (GTK i Qt), pseudograficzny (ncurses) interfejs użytkownika i okolice (sekwencje sterujące terminala, rysowanie po framebufferze, rendering napisów)
  10. Multimedia – audio, grafika, obsługa plików PNG, grafika 3d w OpenGL, ...
  11. Podstawy metod numerycznych – zbiór funkcji prezentujących podstawy metod numerycznych

kompilacja i uruchomienie przykładów

Większość przykładów można skompilować po pobraniu (sklonowaniu) repozytorium uruchamiając w linii poleceń:

clang ścieżka/do/przykładu.c

albo dla C++:

clang++ ścieżka/do/przykładu.cpp

Można także korzystać z narzędzi GCC:

gcc ścieżka/do/przykładu.c

a dla C++:

g++ ścieżka/do/przykładu.cpp

W wyniku kompilacji powstanie plik wykonywalny a.out, który należy uruchomić poleceniem ./a.out. Na przykład:

clang 1-podstawy_C/podstawy.c
./a.out

Część bardziej zaawansowanych przykładów może wymagać dodania opcji (np. dodatkowych bibliotek). Wówczas przykładowe polecenie do ich kompilacji znajduje się w komentarzu na początku takiego przykładu.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published