Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych Autor artykułu: mgr Jerzy Wałaszek |
©2014 mgr
Jerzy Wałaszek
|
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.
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:
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.
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe