Kurs C++

1. Wprowadzenie

A więc chcesz nauczyć się tworzyć aplikacje w języku C++. Najpierw jenak powinieneś zaznajomić się z kilkoma informacjami teoretycznymi z zakresu programowania.

1.1. Historia

Programowanie pierwszych komputerów nie było zbyt zachęcające… Było to bardzo czasochłonne zajęcie. Programy powstawały na skutek odpowiedniego stanu napięcia elektrycznego wysyłanego do komputera. Mogło to być 1 ,lub 0. Nie trudno się domyślić, że żeby wyświetlić chociażby literę A potrzeba było wpisać dużą ilość kodu. Oczywiście każdy widział, że nie było to łatwe i dlatego powstał język Asembler. Składa się on z tzw. kodów mnemotechnicznych. Jednak pisanie programów w tym języku również pochłaniało wiele czasu. Każde polecenie w tym języku było jedną operacją dla procesora. Taki język, w którym jedno polecenie odpowiada za niewiele operacji nazywany jest językiem programowania niskiego poziomu. W rzeczywistości procesor nie rozumiał poleceń Asemblera i trzeba było je tłumaczyć na język zrozumiały dla komputera (czyli ciąg 0 i 1) specjalnym programem nazywanym Asemblerem. Mimo, że Asembler znacznie skracał czas pisania programów, wciąż trzeba było długo pisać, żeby stworzyć coś konkretnego.
Obecnie używa się tzw. języków programowania wysokiego poziomu, w których jedno polecenie odpowiada za wiele instrukcji dla procesora. Obecnie istnieje bardzo wiele języków programowania wysokiego poziomu, chociaż języki niskiego poziomu (np.: Asembler, lub Basic (czyt. Bejzik))wciąż są w użyciu( przydają się kiedy trzeba wykonać coś czego nie potrafią języki wysokiego poziomu), ale każdy procesor ma inną budowę, więc każdy procesor ma "swój Asembler", który rozumie tylko on. Z tego powodu wykształciło się więcej języków programowania wysokiego poziomu, postaram się wymienić niektóre:

  • Ada,
  • Simula,
  • C,
  • C++,
  • Java,
  • C#,
  • Smalltalk,
  • Algol,
  • Pascal,
  • COBOL,
  • Perl,
  • Ruby,
  • Fortan.

Pełną ich listę można znaleźć pod adresem //pl.wikipedia.org/wiki/J%C4%99zyk_programowania.

1.2. Teoria programowania

Zakładam, że wiesz co to jest programowanie, ale nie programowałeś(-aś) wcześniej w żadnym języku.
Kod w każdym języku programowania składa się z instrukcji. Instrukcje to polecenia dla komputera. Instrukcje można podzielić na proste i złożone. Instrukcje proste składają się z jednej instrukcji danego języka, a instrukcje złożone - z wielu. Zbiór wielu instrukcji nazywany jest procedurą. Procedurą, która przyjmuje jakieś dane wejściowe (tzn. prosi nas o podanie np. jakiejś liczby) jest funkcją.
Języki programowania można podzielić na proceduralne (w nich każda instrukcja jest wykonywana po poprzedzającej ją, chyba, że napisano program inaczej) i obiektowe. Zrozumienie zasady działania języków obiektowych nie jest już niestety tak łatwe. Program zawsze przechowuje w pamięci RAM jakieś wartości, np. ilość amunicji w grze komputerowej. Każda informacja ma swój umowny typ, przy czym w językach o silnej typizacji ten typ nie może ulec zmianie. Typ danych zazwyczaj określa zakres liczb jakich wartość może przyjmować dana informacja. Na razie dla uproszczenia przyjmijmy, że języki programowania obiektowe to takie, w których możemy tworzyć własne typy przechowywanych danych. Taki "typ zdefiniowany przez użytkownika" nazywany jest klasą.

1.3. Tłumaczenie języków programowania

Już pisałem, że komputer nie rozumiał poleceń Asemblera. Podobnie jest niestety z innymi językami programowania. Istnieją jednak aż dwa sposoby ich tłumaczenia! Omówmy oby dwa.

1.3.1. Kompilacja

Wyobraźmy sobie tłumacza, który dostał jakiś tekst po angielsku i ma go przetłumaczyć na polski. Tłumacz bierze kartkę i tłumaczy zdanie po zdaniu cały dokument. Jeśli napotka jakiś błąd, wtedy oddaje autorowi dokument i autor musi go poprawić zanim tłumacz wróci do pracy. Po całym procesie dostępna jest wersja całkowicie po polsku. Tak postępuje kompilator. Tłumaczy cały kod programu, w razie błędu nakazuje go poprawić, a gdy skończy zamyka go w jednym pliku *.exe.

1.3.2. Interpretacja

Wyobraźmy sobie jeszcze raz ten sam dokument angielski. Kiedy ma być prezentowany w Polsce, wynajmowany jest tłumacz, który zdanie po zdaniu odczytuje tekst. Jednak po prezentacji ten tekst po polsku nie istnieje i kiedy ma być prezentowany jeszcze raz trzeba całą operację zaczynać od początku. Tak postępuje interpretator. Za każdym uruchomieniem programu tłumaczu go na kod zerojedynkowy, ale kiedy jeszcze raz włączamy aplikację, proces jest zaczynany od nowa. Nie trudno się domyśleć, że interpretacja jest procesem wolniejszym i mniej korzystnym niż kompilacja.

1.3.3. Zintegrowane środowisko programistyczne (IDE)

Dziś już nie pisze się programów w notatniku i nie kompiluje się odpowiednim programem przez polecenie Uruchom… systemu Windows. Istnieją tzw. Zintegrowane środowiska programistyczne. Są to edytory danego języka, bądź języków, które kolorują odpowiednio kod. Mają opcję kompilowania i debugowania (system usuwania błędów), a płatne, bardziej profesjonalne mają nawet moduły odpowiedzialne za programowanie wizualne.

1.4. C

Język C został stworzony przez Dennisa Ritchie'ego. Jego poprzednikiem był interpretowany język B (A więc nie istniały jego kompilatory). Powstał na początku lat 70, jako język do tworzenia systemów operacyjnych. Sam on nie jest już tak powszechny w użyciu. Jego "następcy" C++ i Java (początkowo nazywana Javą C z racji podobieństwa), są znacznie bardziej użyteczni. C jest językiem proceduralnym.

1.5. C++

C++ został stworzony przez Bjarne'a Stroustrupa jako obiektowe rozszerzenie języka C. Oprócz C wpływ na rozwój C++'a miały języki Simula (Z niego odzidziczył obiektowość), Ada, Clu, ML i Algol. Jest on nadzbiorem języka C, czyli zawiera wszystkie jego funkcje i jeszcze więcej. Jest to najbardziej uniwersalny język programowania. Można w nim pisać: Gry, programy, usługi, przeglądarki internetowe, kompilatory i systemy operacyjne. Ponadto polecenie asm pozwala na dołączenie kodu Asemblera w kod C++'a.

Strona oparta jest na technologi Wiki; zezwolone jest kopiowanie tekstów na niej przedstawonych; można edytować informacje pojawiające się na stronie.