Przejdź do głównej zawartości

Pierwszy program

Ta lekcja nauczy Cię jak napisać pierwszy prosty program w języku C++, który będzie mógł wyświetlać tekst i wykonywać proste obliczenia.

Kod programu​

Poprzednio skończyliśmy na następującym kodzie:

main.cpp
#include <iostream>

int main()
{
std::cout << "Witaj, świecie!";
}
Wynik (konsola)
Witaj, świecie!

Wyświetla on tekst podany powyżej w okienku "Wynik".

Omówienie​

Funkcja główna​

Zacznijmy od serca naszej aplikacji, czyli tzw. funkcji głównej (ang.: main):

Fragment kodu main.cpp
int main()
{

}

Pierwszą linię rozpoczyna definicja funkcji. Składa się ona z typu zwracanego int, nazwy main oraz jej parametrów wewnątrz () (w naszym przypadku żadnych). O ile większość z tych określeń nie jest teraz ważna, to jedyne na co powinieneś zwrócić uwagę to nazwa main. Zawsze będzie ona wyglądać tak, int main(). Twój program musi zawsze zawierać funkcję main w tym określonym formacie.

Komputer wykonuje program linijka po linijce. Gdy uruchamia aplikację, po kolei realizuje instrukcje z bloku kodu main-a.

Blok kodu w C++, to zbiór instrukcji zawartych wewnątrz nawiasów klamrowych:

{

}

Funkcja główna main ma swój blok kodu i wszystko co znajdzie się pomiędzy tymi nawiasami zostanie wykonane po kolei, od góry do dołu.

important

Kod w środku funkcji main jest zawsze pierwszym kodem, który się wykona.

Nagłówek iostream​

Na samym początku, znajduje się linijka:

#include <iostream>

Pozwoli ona nam dalej korzystać z funkcjonalności wejścia (ang.: input) i wyjścia (ang.: output) (stąd iostream - od input/output stream). W praktyce oznacza to, że będziemy mogli wypisać coś w konsoli oraz pozwolić użytkownikowi wpisać coś do konsoli i to przechwycić. iostream jest plikiem nagłówkowym (ang.: header file). W przyszłości będziemy korzystać z wielu innych nagłówków.

Instrukcje #include <naglowek> prawie zawsze dajemy na samym początku pliku z kodem. O samym #include powiemy sobie w przyszłości więcej.

Konsola​

Konsola lub inaczej "terminal" to najbardziej podstawowe narzędzie pozwalające na komunikację z programem. Pozwala ona stworzyć prosty interfejs, między programem a jego użytkownikiem. Będziesz mieć okazję zapoznać się z tym narzedziem naprawdę dobrze, ponieważ będziesz używać go bardzo często w swojej przygodzie z programowaniem.

Poniżej znajdują się przykłady uruchomienia tego samego kodu

w kilku różnych środowiskach. Mimo, że nie każdy terminal jest taki sam, to wyglądają one podobnie - wyświetlają tekst z małą ilością lub zupełnym brakiem kolorów.

🖼 Przykłady wyglądu konsol​

Przykładowy wygląd konsoli na Windowsie

Wiele edytorów kodu takich jak Visual Studio, VS Code, CLion czy Vim posiadają zintegrowane okno konsoli bezpośrednio w programie.

Wypisywanie do konsoli​

Żeby wyświetlić tekst w konsoli, użyliśmy następującej instrukcji w bloku funkcji main:

std::cout << "Witaj, świecie!";

cout służy do wyświetlania tekstu do konsoli.

Dla ciekawskich 😉

cout jest tzw. strumieniem wyjścia znaków (ang.: character output), jednak na ten moment nie musisz tego pamiętać.

Mogę teraz zduplikować tę linijkę kilka razy:

std::cout << "Witaj, świecie!1";
std::cout << "Witaj, świecie!2";
std::cout << "Witaj, świecie!3";

aby dostać następujący efekt:

Witaj, świecie!1Witaj, świecie!2Witaj, świecie!3
Średnik na końcu instrukcji!

Średnik (;) oznacza koniec pojedynczej instrukcji i tym samym oddziela następujące po sobie instrukcje. Kompilator nie patrzy czy są one napisane w osobnych liniach. Z tego powodu taki kod:

std::cout << "Witaj, świecie!1"; std::cout << "Witaj, świecie!2"; std::cout << "Witaj, świecie!3";

jest akceptowalny, jednak bardzo nieczytelny. Nie pisz kodu w ten sposób!

Prezentacja działania wyżej stworzonego programu:

Zwróć uwagę, że tekst wypisał się do konsoli bez żadnych odstępów, w jednej linii i zawinął się, dopiero pod koniec dostępnego miejsca.

Program robi dokładnie to, co ma napisane w kodzie - nie więcej, nie mniej. My "powiedzieliśmy" mu tylko tyle, że ma wyświetlić podane znaki... i on to robi. Musimy "złamać" linię w odpowiednim miejscu. Sprawi to, że następne znaki będą wyświetlane od samego początku kolejnego wiersza. Aby to zrobić należy wewnątrz tekstu umieścić specjalny znak nowej linii: \n, w ten sposób:

std::cout << "Witaj, świecie!\n";
Backslash

Zwróć uwagę, że użyliśmy backslasha (\n), a nie forward slasha (/n).

Działanie programu po dodaniu znaków nowej linii:

Znak nowej linii

Sekwencja znaków \n reprezentuje pojedynczy znak. W kodzie musimy zapisać dwa znaki, ale dla programu jest to pojedynczy znak specjalny. Dzieje się tak dlatego, że nie możemy po prostu wstawić "entera" bezpospośrednio wewnątrz tekstu w kodzie. Znaku backslash (\) używamy, aby zasygnalizować, że znak, który po nim następuje ma specjalne znaczenie

.

Przedrostek przestrzeni nazw​

std:: to przedrostek tzw. biblioteki standardowej, z której pochodzi cout.

Początkujący zazwyczaj nie przepadają za ciągłym powtarzaniem go. Można go pominąć, jeśli użyjemy wcześniej odpowiedniej linijki kodu:

#include <iostream>
int main()
{
using std::cout;
cout << "Witaj, świecie!";
}

Od miejsca wprowadzenia using std::cout; do końca bloku kodu można pominąć std:: przy używaniu cout.

using namespace std

W wielu innych kursach i źródłach można spotkać się z polecaniem korzystania z using namespace std; na samej górze pliku z kodem. O ile jest to legalne w C++, to doświadczeni programiści zdecydowanie odradzają tej praktyki. Więcej o tym powiemy w dalszej części kursu.

Na ten moment preferuj styl pokazany wyżej.

Wykonywanie obliczeń​

Programowanie służy do automatyzacji pewnych czynności. Na przykład, możemy zlecić komputerowi wykonanie obliczenia matematycznego za nas.

Użyj następującego kodu:

main.cpp
#include <iostream>
int main()
{
std::cout << "120 * 120 + 540";
}
Wynik (konsola)
120 * 120 + 540

Zwróć uwagę na wynik powyższego programu.

Uwaga

Wszystko zawarte w cudzysłowie jest traktowane jako tekst, a nie instrukcje.

Dlatego właśnie zamiast wyświetlić wynik obliczenia, dostaliśmy to co wpisaliśmy do cudzysłowu.

Żeby oznajmić, że chcemy wykonać pewne obliczenie musimy usunąć cudzysłów:

main.cpp
#include <iostream>
int main()
{
std::cout << 120 * 120 + 540;
}
Wynik (konsola)
14940

Po uruchomieniu programu dostaniemy prawidłowy wynik obliczenia znajdującego się w kodzie.

Operatory matematyczne
  • + dodaje do siebie dwie liczby
  • - odejmuje od siebie dwie liczby
  • * mnoży przez siebie dwie liczby
  • / dzieli przez siebie dwie liczby
  • () kontroluje kolejność wykonywania działań

W wykonywaniu działań obowiązuje kolejność znana nam z matematyki:

  1. Najpierw to co w nawiasach okrągłych
  2. Następnie mnożenie i dzielenie, w kolejności od lewej do prawej
  3. Później dodawanie i odejmowanie, w kolejności od lewej do prawej

Podsumowanie​

Poznałeś strukturę kodu pierwszego programu.

dobra rada

Żeby przejść do ćwiczeń odwiedź tę stronę.

Pierwszy program

Ta lekcja nauczy Cię jak napisać pierwszy prosty program w języku C++, który będzie mógł wyświetlać tekst i wykonywać proste obliczenia.

Kod programu​

Poprzednio skończyliśmy na następującym kodzie:

main.cpp
#include <iostream>

int main()
{
std::cout << "Witaj, świecie!";
}
Wynik (konsola)
Witaj, świecie!

Wyświetla on tekst podany powyżej w okienku "Wynik".

Omówienie​

Funkcja główna​

Zacznijmy od serca naszej aplikacji, czyli tzw. funkcji głównej (ang.: main):

Fragment kodu main.cpp
int main()
{

}

Pierwszą linię rozpoczyna definicja funkcji. Składa się ona z typu zwracanego int, nazwy main oraz jej parametrów wewnątrz () (w naszym przypadku żadnych). O ile większość z tych określeń nie jest teraz ważna, to jedyne na co powinieneś zwrócić uwagę to nazwa main. Zawsze będzie ona wyglądać tak, int main(). Twój program musi zawsze zawierać funkcję main w tym określonym formacie.

Komputer wykonuje program linijka po linijce. Gdy uruchamia aplikację, po kolei realizuje instrukcje z bloku kodu main-a.

Blok kodu w C++, to zbiór instrukcji zawartych wewnątrz nawiasów klamrowych:

{

}

Funkcja główna main ma swój blok kodu i wszystko co znajdzie się pomiędzy tymi nawiasami zostanie wykonane po kolei, od góry do dołu.

important

Kod w środku funkcji main jest zawsze pierwszym kodem, który się wykona.

Nagłówek iostream​

Na samym początku, znajduje się linijka:

#include <iostream>

Pozwoli ona nam dalej korzystać z funkcjonalności wejścia (ang.: input) i wyjścia (ang.: output) (stąd iostream - od input/output stream). W praktyce oznacza to, że będziemy mogli wypisać coś w konsoli oraz pozwolić użytkownikowi wpisać coś do konsoli i to przechwycić. iostream jest plikiem nagłówkowym (ang.: header file). W przyszłości będziemy korzystać z wielu innych nagłówków.

Instrukcje #include <naglowek> prawie zawsze dajemy na samym początku pliku z kodem. O samym #include powiemy sobie w przyszłości więcej.

Konsola​

Konsola lub inaczej "terminal" to najbardziej podstawowe narzędzie pozwalające na komunikację z programem. Pozwala ona stworzyć prosty interfejs, między programem a jego użytkownikiem. Będziesz mieć okazję zapoznać się z tym narzedziem naprawdę dobrze, ponieważ będziesz używać go bardzo często w swojej przygodzie z programowaniem.

Poniżej znajdują się przykłady uruchomienia tego samego kodu

w kilku różnych środowiskach. Mimo, że nie każdy terminal jest taki sam, to wyglądają one podobnie - wyświetlają tekst z małą ilością lub zupełnym brakiem kolorów.

🖼 Przykłady wyglądu konsol​

Przykładowy wygląd konsoli na Windowsie

Wiele edytorów kodu takich jak Visual Studio, VS Code, CLion czy Vim posiadają zintegrowane okno konsoli bezpośrednio w programie.

Wypisywanie do konsoli​

Żeby wyświetlić tekst w konsoli, użyliśmy następującej instrukcji w bloku funkcji main:

std::cout << "Witaj, świecie!";

cout służy do wyświetlania tekstu do konsoli.

Dla ciekawskich 😉

cout jest tzw. strumieniem wyjścia znaków (ang.: character output), jednak na ten moment nie musisz tego pamiętać.

Mogę teraz zduplikować tę linijkę kilka razy:

std::cout << "Witaj, świecie!1";
std::cout << "Witaj, świecie!2";
std::cout << "Witaj, świecie!3";

aby dostać następujący efekt:

Witaj, świecie!1Witaj, świecie!2Witaj, świecie!3
Średnik na końcu instrukcji!

Średnik (;) oznacza koniec pojedynczej instrukcji i tym samym oddziela następujące po sobie instrukcje. Kompilator nie patrzy czy są one napisane w osobnych liniach. Z tego powodu taki kod:

std::cout << "Witaj, świecie!1"; std::cout << "Witaj, świecie!2"; std::cout << "Witaj, świecie!3";

jest akceptowalny, jednak bardzo nieczytelny. Nie pisz kodu w ten sposób!

Prezentacja działania wyżej stworzonego programu:

Zwróć uwagę, że tekst wypisał się do konsoli bez żadnych odstępów, w jednej linii i zawinął się, dopiero pod koniec dostępnego miejsca.

Program robi dokładnie to, co ma napisane w kodzie - nie więcej, nie mniej. My "powiedzieliśmy" mu tylko tyle, że ma wyświetlić podane znaki... i on to robi. Musimy "złamać" linię w odpowiednim miejscu. Sprawi to, że następne znaki będą wyświetlane od samego początku kolejnego wiersza. Aby to zrobić należy wewnątrz tekstu umieścić specjalny znak nowej linii: \n, w ten sposób:

std::cout << "Witaj, świecie!\n";
Backslash

Zwróć uwagę, że użyliśmy backslasha (\n), a nie forward slasha (/n).

Działanie programu po dodaniu znaków nowej linii:

Znak nowej linii

Sekwencja znaków \n reprezentuje pojedynczy znak. W kodzie musimy zapisać dwa znaki, ale dla programu jest to pojedynczy znak specjalny. Dzieje się tak dlatego, że nie możemy po prostu wstawić "entera" bezpospośrednio wewnątrz tekstu w kodzie. Znaku backslash (\) używamy, aby zasygnalizować, że znak, który po nim następuje ma specjalne znaczenie

.

Przedrostek przestrzeni nazw​

std:: to przedrostek tzw. biblioteki standardowej, z której pochodzi cout.

Początkujący zazwyczaj nie przepadają za ciągłym powtarzaniem go. Można go pominąć, jeśli użyjemy wcześniej odpowiedniej linijki kodu:

#include <iostream>
int main()
{
using std::cout;
cout << "Witaj, świecie!";
}

Od miejsca wprowadzenia using std::cout; do końca bloku kodu można pominąć std:: przy używaniu cout.

using namespace std

W wielu innych kursach i źródłach można spotkać się z polecaniem korzystania z using namespace std; na samej górze pliku z kodem. O ile jest to legalne w C++, to doświadczeni programiści zdecydowanie odradzają tej praktyki. Więcej o tym powiemy w dalszej części kursu.

Na ten moment preferuj styl pokazany wyżej.

Wykonywanie obliczeń​

Programowanie służy do automatyzacji pewnych czynności. Na przykład, możemy zlecić komputerowi wykonanie obliczenia matematycznego za nas.

Użyj następującego kodu:

main.cpp
#include <iostream>
int main()
{
std::cout << "120 * 120 + 540";
}
Wynik (konsola)
120 * 120 + 540

Zwróć uwagę na wynik powyższego programu.

Uwaga

Wszystko zawarte w cudzysłowie jest traktowane jako tekst, a nie instrukcje.

Dlatego właśnie zamiast wyświetlić wynik obliczenia, dostaliśmy to co wpisaliśmy do cudzysłowu.

Żeby oznajmić, że chcemy wykonać pewne obliczenie musimy usunąć cudzysłów:

main.cpp
#include <iostream>
int main()
{
std::cout << 120 * 120 + 540;
}
Wynik (konsola)
14940

Po uruchomieniu programu dostaniemy prawidłowy wynik obliczenia znajdującego się w kodzie.

Operatory matematyczne
  • + dodaje do siebie dwie liczby
  • - odejmuje od siebie dwie liczby
  • * mnoży przez siebie dwie liczby
  • / dzieli przez siebie dwie liczby
  • () kontroluje kolejność wykonywania działań

W wykonywaniu działań obowiązuje kolejność znana nam z matematyki:

  1. Najpierw to co w nawiasach okrągłych
  2. Następnie mnożenie i dzielenie, w kolejności od lewej do prawej
  3. Później dodawanie i odejmowanie, w kolejności od lewej do prawej

Podsumowanie​

Poznałeś strukturę kodu pierwszego programu.

dobra rada

Żeby przejść do ćwiczeń odwiedź tę stronę.