Koło informatyczne

Przyspieszony kurs języka C++

Język C++ powstał jako następca języka C. Jego twórcą jest amerykański informatyk Bjarne Stroustrup. Obecnie język ten stał się językiem dojrzałym oraz bardzo potężnym. Pisze się w nim aplikacje, które wymagają dużej szybkości pracy. Jest on obecny standardowo w systemie Linux. Używa się go w konkursach programowania oraz na olimpiadzie informatycznej. Na podstawie języka C++ powstały języki takie jak JavaScript, Java, PHP. Wszystko to sprawia, że poznanie zasad programowania w tym języku powinno być priorytetem w poważnej nauce informatyki.

 

Co powinniśmy wiedzieć o języku C++? Przede wszystkim to, że nie był on tworzony z myślą o początkujących adeptach dziedzin komputerowych. Język jest przeznaczony dla profesjonalistów. Dlatego posiada on wiele mechanizmów ułatwiających pracę programiście, jednakże niezbyt czytelnych dla uczniów. Na szczęście, język C++ można poznawać stopniowo.

Język C++ jest językiem kompilowanym. Co to znaczy? Procesor komputera rozumie tylko język binarny, w którym są zapisane jego instrukcje. Wygląda to mniej więcej tak:

 

101011011100101010101010011110011
010010111101111010101001011101010
111111010101110101001111101001111
111010101000010010010010010001000
101111010101010010111111111000101

 

Przyznasz, że nie jest to dla ludzi specjalnie czytelne. Dlatego właśnie wymyślono języki programowania wysokiego poziomu, w których nie bawimy się w binarne zapisywanie instrukcji dla procesora, lecz opisujemy sposób rozwiązania problemu. Niedogodnością tych języków jest to, że procesor nie "rozumie" bezpośrednio zapisanego w nich programu. Programista tworzy plik tekstowy, w którym umieszcza odpowiednie instrukcje i dyrektywy języka. Tekst ten należy przetłumaczyć na ciąg instrukcji binarnych dla procesora. Operacja ta nosi nazwę kompilacji:

 

tekst programu w języku wysokiego poziomu → kompilacja → instrukcje binarne dla procesora

 

Program wykonujący kompilację nazywa się kompilatorem.

Na upartego w języku C++ można programować, mając do dyspozycji jedynie natywny kompilator g++ (sposób instalacji jest opisany tutaj) oraz dowolny edytor tekstu, np. nano w Lubuntu. Aby nabrać nieco doświadczenia, zróbmy proste ćwiczenie.

 

Najpierw uruchom terminal (lewy Ctrl + lewy Alt + T lub z menu start). Terminal uruchamiany jest z ustawionym katalogiem domowym użytkownika. Jeśli jednak jesteś gdzieś indziej, wpisz polecenie:

 

cd ~

 

Polecenie cd (ang. change directory) ustawia katalog bieżący. Tylda ~ standardowo oznacza katalog domowy użytkownika w systemie Linux. Zatem wykonanie polecenia spowoduje przejście do katalogu domowego. Teraz wpisz nowe polecenie:

 

ls

 

Polecenie ls (ang. list) wyświetla zawartość bieżącego katalogu w postaci listy. Dzięki temu zorientujesz się, co się znajduje w twoim katalogu domowym. Wpisz:

 

mkdir kurscpp
ls

 

Polecenie mkdir (ang. make directory) tworzy nowy katalog o nazwie kurscpp. Drugie polecenie wyświetli jeszcze raz zawartość katalogu domowego. Powinieneś zobaczyć tam swój nowy katalog kurscpp. Wchodzimy do niego i tworzymy w nim katalog projektowy:

 

cd kurscpp
mkdir 01
cd 01

 

Początek wiersza polecenia informuje cię, w którym miejscu struktury plików aktualnie się znajdujesz. Wiersz polecenia powinien posiadać teraz następujący wygląd:

 

uczen@vm:~/kurscpp/01$
 
uczen nazwa konta, na którym pracujesz w systemie Linux
@ znak rozdzielający nazwę konta od nazwy komputera
vm nazwa komputera. U mnie jest to vm (ang. virtual machine), ponieważ na swoim domowym komputerze, na którym przygotowuję materiały dla uczniów, mam zainstalowany tylko system Windows 8.1, natomiast Linux pracuje w obrębie tzw. maszyny wirtualnej vmplayer, czyli symulatora, który pozwala instalować i uruchamiać w aplikacji inne systemy operacyjne. Takie rozwiązanie jest dla mnie bardzo wygodne, gdyż Linuxa Lubuntu uruchamiam w okienku Windows jak każdą inną aplikację.
~ katalog domowy aktualnego użytkownika. W tym przypadku jest to katalog /home/uczen.
kurscpp katalog dla kursu
01 katalog znajdujący się wewnątrz katalogu kurscpp
$ znak zachęty, który informuje cię, że komputer oczekuje na polecenia

 

Teraz uruchomimy edytor nano, w którym utworzymy plik main.cpp zawierający tekst naszego programu:

 

nano main.cpp

 

W edytorze nano wpisz następujący tekst programu (chwilowo nie przejmuj się jego treścią):

 

 

Gdy skończysz wprowadzać program, naciśnij Ctrl + O i potwierdź zapis klawiszem Enter. Powinieneś otrzymać informację, że zapisano 16 wierszy (liczba zapisanych wierszy u ciebie może być inna, jeśli nie przepisałeś dokładnie tekstu programu). Wyjdź z edytora nano za pomocą Ctrl + X. Sprawdź rozkazem ls zawartość bieżącego katalogu. Powinien w nim znajdować się plik main.cpp (rozszerzenie cpp standardowo oznacza pliki z tekstem programu w języku C++).

Teraz uruchomimy kompilator g++, który skompiluje ten tekst do postaci programu binarnego dla procesora. Wpisz:

 

g++ -o powitanie main.cpp
 
g++ nazwa programu kompilatora języka C++
-o powitanie opcja określająca nazwę pliku wynikowego, który powstaje w wyniku kompilacji
main.cpp nazwa pliku źródłowego z tekstem programu, który ma zostać skompilowany

 

Po krótkiej chwili, jeśli w programie nie było błędów, pojawi się nowy wiersz poleceń. Gdy wpiszesz ls, to zobaczysz w swoim katalogu nowy plik powitanie. Jest to właśnie twój program przekonwertowany do postaci binarnej dla procesora. Uruchom go wpisując:

 

./powitanie

 

Na pierwszy rzut oka nie wygląda to skomplikowanie. Racja. Tak też można tworzyć oprogramowanie na szybko. Schody jednak zaczną się, jeśli program posiada błędy lub składa się z wielu modułów. Wpisz:

 

nano main.cpp

 

i usuń średnik z instrukcji return 0. Następnie zapisz program (Ctrl + O), wyjdź z nano (Ctrl + X) i ponownie wykonaj kompilację (uwaga: terminal zapamiętuje w historii wprowadzone polecenia. Dostęp do nich masz strzałką kursora w górę. Nie musisz zatem ponownie wpisywać co dłuższych poleceń, wystarczy je odszukać w historii). Otrzymasz:

 

uczen@vm:~/kurscpp/01$ g++ -o powitanie main.cpp
main.cpp: In function ‘int main()’:
main.cpp:15:1: error: expected ‘;’ before ‘}’ token
 }
 ^

Co to oznacza? Otóż kompilator informuje cię, że w funkcji main (później wyjaśnimy co to jest funkcja) napotkał błąd przed znakiem klamerki w wierszu 15 i kolumnie 1. Musisz sobie zapamiętać tę pozycję, ponownie uruchomić nano main.cpp (strzałką w górę przywołaj to polecenie), przejść do wskazanego wiersza (bieżącą pozycję otrzymasz po naciśnięciu Ctrl + C) i myśleć, co tutaj może być złe. My akurat wiemy – brakuje średnika na końcu poprzedniego wiersza. Średnik w języku C++ oznacza koniec instrukcji. Jego brak powoduje, że klamerka zamykająca zostaje zaliczona do instrukcji return 0, a to w tym przypadku nie ma sensu i jest błędem składni. Dlatego kompilator zaprotestował. Jeśli program zawiera błąd składniowy, to nie będzie skompilowany. Dlatego dopisz ten średnik za instrukcją return 0, zapisz plik i wyjdź do terminala. Jeszcze raz wprowadź polecenie kompilacji. Teraz kompilator nie powinien narzekać.

Terminal zamknij poleceniem:

 

exit

 

Do programowania w języku C++ używa się tzw. środowisk zintegrowanych (ang. IDE = Integrated Developement Environment). Są to aplikacje, które zawierają edytor tekstu do pisania programów, kompilator do ich kompilowania oraz różne narzędzia uruchomieniowe. Takim środowiskiem zintegrowanym jest Code::Blocks.

Uruchom aplikację Code::Blocks (Start → Programowanie → Code::Blocks IDE).

 

 

Wybierz opcję Create a new project. Pojawi się okno dialogowe wyboru typu projektu, czyli rodzaju aplikacji, który chcemy utworzyć.

 

 

Wybierz opcję Console application (aplikacja konsoli, czyli terminal) i kliknij przycisk Go. Pojawi się kolejne okno dialogowe:

 

 

To okienko powitalne. Jeśli nie chcesz go widywać przy następnych projektach, zaznacz opcję Skip this page next time. Kliknij w przycisk Next.

 

 

W kolejnym okienku dialogowym powinna być zaznaczona opcja C++. Określa ona język, którego chcemy używać w naszym programie. Kliknij w przycisk Next.

Następne okno dialogowe jest bardzo ważne.

 

 

W polu Project title wpisz nazwę swojego projektu. Proponuję numerowanie projektów lub nadawanie im krótkich nazw opisowych.

W polu Folder to create project in wpisz ścieżkę do katalogu kurscpp. Jeśli nie znasz tej ścieżki, to ustaw ten katalog za pomocą przycisku z trzema kropkami.

Pozostałych pól nie zmieniaj.

Kliknij przycisk Next.

 

 

W ostatnim oknie dialogowym nic nie zmieniaj. Kliknij przycisk Finish. Projekt został utworzony. Teraz musisz jedynie załadować do edytora plik main.cpp, który powstaje wraz z nowym projektem. Jeśli po lewej stronie nie widzisz panelu Management, to naciśnij Shift + F2. W panelu wybierz zakładkę Projects i otwórz kolejno Workspace, 02 i Sources. Gdy zobaczysz plik main.cpp, kliknij go dwukrotnie lewym przyciskiem myszki. Plik powinien się otworzyć w edytorze. Aby zyskać miejsce, możesz teraz zamknąć panel Management kombinacją klawiszy Shift + F2.

 

 

Kliknij myszką w edytor. Wielkość czcionki dobierasz wciskając Ctrl i kręcąc kółkiem przewijania w myszce. Dobierz taką czcionkę, aby dobrze widzieć tekst programu. Program kompilujesz przez kliknięcie w ikonkę żółtego kółka na pasku narzędziowym u góry ekranu lub wciskając Ctrl + F9. Wykonaj teraz tę operację.

Raport z kompilacji jest widoczny na panelu Logs & others (jeśli jest niewidoczny, wciśnij klawisz F2), zakładka Build log:

 

 

Jeśli kompilacja przebiegła bez błędów, to program został utworzony i jest gotowy do uruchomienia. Z poziomu IDE uruchamiasz program zieloną strzałką.

Teraz zróbmy w programie taki sam błąd jak poprzednio – usuń średnik z końca instrukcji return. Spróbuj program ponownie skompilować:

 

 

Wiersz, w którym kompilator napotkał błąd, jest oznaczany wyraźnie czerwonym kwadratem. Już nie musisz go szukać w swoim programie. Masz go jak na talerzu. Teraz wystarczy przeanalizować informacje wypisywane w okienku Build log, aby zidentyfikować rodzaj błędu i go usunąć.

Jeśli zechcesz uruchomić swój program z poziomu terminala, to znajdziesz go w katalogu: ~/kurscpp/02/bin/Debug.

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.