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ę.