podstawy programowania C/C++ :: podstawy programowania Unixa/Linuxa :: rzeczy trochę ciekawsze :: graficzny interfejs użytkownika (GUI) :: multimedia :: bliżej sprzętu i jądra :: metody numeryczne :: Linki i moje projekty

Programowanie C/C++ (Linux)

W dziale tym zajmę się programowaniem w C i C++ głównie dla Linuxa (ze względu na wykorzystywane funkcje systemowe tego systemu i testowanie w nim prezentowanych rozwiązań). Nie będzie to jednak typowe omówienie czy kurs tego języka, prócz krótkiego wprowadzenia w podstawy tego języka, zamieszczę tutaj szereg bogato komentowanych, niewielkich programów ilustrujących poszczególne zagadnienia. Omówię również korzystanie z ważniejszych/ciekawszych bibliotek (w tym bibliotek standardowych C i C++). Na wstępie zachęcam do zapoznania się z przykładem zamieszczonym w części "wstępu do techniki" poswięconej porgramowaniu.

podstawy programowania C/C++

  • podstawy.c - podstawy języka - zmienne, instrukcje preprocesora, ...
  • in_out.c - podstawy języka - standardowe wejście i wyjście, również odczyt i zapis plików w C
  • in_out.cpp - podstawy języka - standardowe wejście i wyjście, również odczyt i zapis plików w C++
  • petle.c - podstawy języka - pętle, instrukcje warunkowe, ...
  • wskaznikologia.c - wskaźniki oraz: funkcje, tablice, przekazywanie do funkcji tablic i nazw innych funkcji, zmienne zależące od zmiennej ...
  • numeracja_ip.c - prosty program demonstrujący adresację IPv4 oraz operatory bitowe (konwersje napisów na postać numeryczną opisane w programach dotyczących programowania usług sieciowych)

podstawy programowania Unixa/Linuxa

  • katalogi.c - katalogi, czyli nasze własne ls ;-) + obsługa błędów z wykorzystaniem errno.h (mechanizm bardzo przydatny przy korzystaniu z bardziej zaawansowanych funkcji ... w celu ustalenia dlaczego to nie działa)
  • unix.c - funkcje Unix'owate ... (w tym sygnały, deskryptory i czas)
  • opcje.c - przetwarzanie opcji unix'owych (-h) i GNU (--help)
  • fork.c - wywołania innych programów i pipe
  • watki.c - tworzenie aplikacji wielowątkowych z wykorzystaniem pthread
  • watki_clone.c - tworzenie aplikacji wielowątkowych z wykorzystaniem clone()
  • semafory.c - wykorzystywanie semaforów do komunikacji między procesami,
    więcej o komunikacji międzyprocesorowej w LINUX - Synchronizacja i komunikacja procesów

rzeczy trochę ciekawsze

graficzny interfejs użytkownika (GUI)

GTK jest biblioteką do tworzenia GUI, stworzoną na potrzeby GIMPa oraz wykorzystywaną w projekcie GNOME. Napisana jest w sposób obiektowy w języku C. Inną biblioteką do tworzenia GUI (i nie tylko ma moduły obsługi baz danych, sieci, grafiki 3D - OpenGL, ...) jest Qt, w której powstaje KDE. Jest to w pełni obiektowa biblioteka C++.

  • ncurses_1.c - zaawansowane wyświetlanie na terminalu tekstowym z wykorzystaniem biblioteki termcap; więcej o termcap
  • ncurses_2.c - zaawansowane wyświetlanie na terminalu tekstowym z wykorzystaniem biblioteki terminfo
  • ncurses_3.c - zaawansowane wyświetlanie na terminalu tekstowym z wykorzystaniem biblioteki ncurses

multimedia

Dźwięk w Linuxie obsługiwany jest najczęściej przez sterowniki Alsa lub OSS - w obu przypadkach dostępne jest urządzenie /dev/dsp jednak w przypadku Alsa nie jest ono natywnym sposobem obsługi tego sterownika. Często także powyżej sterownika funkcjonują serwery dźwięku takie jak "jack" lub "arts"

Z kolei SDL jest biblioteka multimedialna, obsługująca grafikę 2D i 3D, dźwięk, urządzenia wejścia/wyjścia. W zastosowaniach graficznych wykorzystuje OpenGL (niskopoziomowy interfejs graficzny). OpenGL posiada również własne wyżej poziomowe biblioteki (GLU, GLUT, GLUI, ...). Można powiedzieć że SDL stanowi swego rodzaju wieloplatformowy odpowiednik dla DirectX (OpenGL jest rozwiązaniem konkurencyjnym dla Direct3D).

W tym miejscu warto też wspomnieć że istnieją również wyżej poziomowe, wieloplatformowe biblioteki wyspecjalizowane w tworzeniu gier, takie jak: Allegro (grafika 2D), Crystal Space (grafika 3D), ... .

bliżej sprzętu i jądra

metody numeryczne

Jest to zbiór funkcji prezentujących podstawy metod numerycznych. Jako że programy te napisałem pewien czas temu nie jestem w stanie obecnie zagwarantować że działają one w pełni poprawnie. Zachęcam do zapoznania się z skryptem z metod numerycznych dostępnym na stronie Strona o Metodach Numerycznych (1) ... więcej o metodach numerycznych także na Strona o Metodach Numerycznych (2).

Linki i moje projekty

Zachęcam także do zapoznania się z moimi projektami związanymi z językiem C/C++: Sterowanie magnetowidem, detekcja radiometeorów, powiadamiacz o IM dla jabberd2 (serwer - mysql, autoryzacja PAM, parsowanie napisów, klient - AVR NutOS), sterownik ogrzewania (AVR), sterownik oświetlenia (AVR).

Zobacz w Sieci: C++ bez cholesterolu, C++ FAQ LITE (PL), C++ w Elektronika Wirtualna, C Programming Reference, Wiki o C/C++, C++ @ Wikibooks, C @ Wikibooks, niekompatybilności między C a C++.


Copyright (c) 1999-2008, Robert Paciorek (http://www.opcode.eu.org/), BSD-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This program is free software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/c_cpp) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: 2008-07-11 01:23:16 (UTC) (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).