Archiwum kategorii: Kurs programowania C++

Wprowadzenie do języka C++. Składnia, tworzenie zmiennych.

C++ to uniwersalny język programowania, stworzony jako rozszerzenie języka C o
mechanizmy programowania obiektowego. Umożliwia łączenie różnych
paradygmatów programowania (proceduralnego, obiektowego, generycznego) w
jednym kodzie. Język zaprojektował Bjarne Stroustrup na początku lat 80. XX w. (pierwsza wersja
powstała w 1979 r.) w laboratoriach Bell Labs. Początkowo nazywał się „C z
klasami”, później nazwę zmieniono na C++ Nazwa „C++” nawiązuje do operatora inkrementacji ++ (zwiększania wartości o 1) – symbolicznie oznacza „C zwiększony o jeden”, czyli ulepszony następca języka C. C++ jest językiem kompilowanym – kod źródłowy tłumaczony jest przez kompilator na kod maszynowy. Dzięki temu programy napisane w C++ działają bardzo szybko i
wydajnie. C++ znajduje zastosowanie wszędzie tam, gdzie liczy się wysoka wydajność i
kontrola nad sprzętem. Używa się go do tworzenia systemów operacyjnych (np.
Microsoft Windows, Apple macOS), gier i silników gier, aplikacji desktopowych
(pakiet Microsoft Office) czy oprogramowania wymagającego bezpośredniego
dostępu do pamięci.

Składnia języka C++

  • Średnik (;) – każda instrukcja w C++ musi być zakończona średnikiem, który
    oznacza koniec polecenia dla kompilatora. Brak średnika na końcu instrukcji
    spowoduje błąd kompilacji.
  • Nawiasy klamrowe { } – wyznaczają bloki kodu, np. ciało funkcji lub pętli,
    obejmując zestaw instrukcji. Nawiasy okrągłe () używane są przy definicjach i
    wywołaniach funkcji oraz do otaczania warunków w instrukcjach sterujących (if,
    while, for itp.).
  • C++ rozróżnia duże i małe litery w nazwach (tzw. case-sensitive). Przykładowo
    nazwy liczba i Liczba to dwie różne zmienne. Należy konsekwentnie stosować
    jednolitą pisownię identyfikatorów.
  • Komentarze – fragmenty kodu, które nie są wykonywane przez program. W C++
    komentarz jednoliniowy rozpoczyna się od //, a komentarz blokowy otaczamy
    między /* a */. Służą one do opisywania działania kodu dla programisty i są
    ignorowane przez kompilator.
    Struktura programu w C++
  • Dyrektywy dołączenia – na początku pliku źródłowego umieszczamy poleceniainclude dodające potrzebne biblioteki nagłówkowe. Np. #include dołącza standardową bibliotekę wejścia-wyjścia, co umożliwia użycie funkcji do
    obsługi konsoli.
  • Funkcja main() – każdy program C++ musi zawierać funkcję główną o nazwie
    main. To od niej zaczyna się wykonanie programu. Najczęściej definiujemy ją jako
    int main(), co oznacza funkcję zwracającą wartość całkowitą (kod wyjścia
    programu).
  • Ciało funkcji – instrukcje składające się na działanie programu umieszczamy
    wewnątrz nawiasów klamrowych { } funkcji main. Każda instrukcja kończy się ;
    zgodnie ze składnią języka. Przykład minimalnej struktury:

int main() {
// … (ciało programu)
return 0;
}
  • Zakończenie programu – w końcowej części main często umieszczamy return 0;,
    co zwraca do systemu kod 0 oznaczający poprawne wykonanie programu. W
    nowszych standardach C++ instrukcja return 0; w main nie jest obowiązkowa
    (domyślnie i tak zwracane jest 0), ale jej dodanie poprawia czytelność kodu.
  • Wejście/wyjście – aby wypisać tekst lub wartości na ekran, możemy użyć
    standardowego strumienia wyjścia. Np. wyrażenie std::cout << „Tekst”; wypisze podany tekst do konsoli (wymaga dołączenia ).

Przykład programu – Hello, World!

Poniżej przedstawiono prosty program w C++, który wypisuje napis „Hello,
World!”. Kod ten można skompilować i uruchomić w środowisku Code::Blocks lub
innym kompilatorze zgodnym z C++:

using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}

Pierwsza linia using namespace std; ustawia domyślne używanie przestrzeni nazw
std, dzięki czemu można pisać cout zamiast std::cout. Deklarujemy funkcję główną programu: int main() { … }. W nawiasach klamrowych umieszczone są instrukcje, które zostaną wykonane po uruchomieniu programu. Wewnątrz funkcji, linia cout << „Hello, World!” << endl; wypisuje na ekran konsoli tekst Hello, World! (instrukcja endl powoduje przejście do nowej linii po wypisaniu tekstu). Na końcu return 0; zwraca kod wyjścia 0 do systemu operacyjnego, informując o poprawnym zakończeniu działania programu. Program po wykonaniu tej instrukcji kończy swoje działanie. Po skompilowaniu program wyświetli w oknie konsoli napis Hello, World! i natychmiast się zakończy. (W Code::Blocks wynik można zobaczyć w oknie Console, a aby zobaczyć rezultat, często trzeba dodać pauzę lub uruchamiać program poprzez Debug/Run).

Podstawowe typy danych w C++

  • int – typ całkowitoliczbowy (integer). Przechowuje liczby całkowite (bez części
    ułamkowej), np. -10, 0, 42. Zakres możliwych wartości zależy od implementacji
    (typowo 32-bitowy, około od -2 miliardów do 2 miliardów).
  • float – typ zmiennoprzecinkowy pojedynczej precyzji (float). Służy do
    przechowywania liczb rzeczywistych z częścią ułamkową, z ograniczoną precyzją
    (~7 cyfr znaczących). Przykład wartości: 3.14F, -0.5F.
  • double – typ zmiennoprzecinkowy podwójnej precyzji. Pozwala przechowywać
    liczby rzeczywiste z większą precyzją (~15 cyfr znaczących) niż float. Np.
    3.1415926535 (domyślnie literały zmiennoprzecinkowe traktowane są jako double).
  • char – typ znakowy (character). Przechowuje pojedynczy znak (literę, cyfrę,
    symbol) w kodowaniu ASCII/Unicode – na przykład 'A’, '9′, '$’. Technicznie jest to
    najmniejszy typ całkowity (1 bajt = 8 bitów) reprezentujący kod znaku.
  • bool – typ logiczny (boolean). Może przyjmować tylko dwie wartości: true (prawda)
    albo false (fałsz)ww2.ii.uj.edu.pl. Używany jest do wyrażania wyników porównań i
    warunków logicznych.

Tworzenie zmiennych – deklaracja, inicjalizacja, nazewnictwo

  • Deklaracja zmiennej – aby móc użyć zmiennej, należy najpierw zadeklarować jej
    typ i nazwę. Deklaracja rezerwuje miejsce w pamięci na dany typ. Przykład: int
    licznik; – tworzy zmienną o nazwie licznik typu całkowitego. (Do momentu nadania
    wartości zmienna ma niezdefiniowaną zawartość).
  • Inicjalizacja – to jednoczesne stworzenie zmiennej i ustawienie jej początkowej
    wartości. Można to zrobić za pomocą operatora = podczas deklaracji. Np. int licznik
    = 0; deklaruje zmienną typu int i od razu zapisuje w niej wartość 0. Inicjalizacja
    zapobiega pozostawaniu w zmiennej śmieciowych danych.
  • Nazwy zmiennych – powinny zaczynać się od litery (ew. znaku _) i mogą zawierać
    litery, cyfry oraz podkreślenia. Nie wolno zaczynać nazwy od cyfry ani używać
    spacji i znaków specjalnych. Nazwa musi być unikalna i nie może być słowem
    kluczowym języka (np. int, while, class są zarezerwowane).
    Przykłady poprawnych nazw: waga, srednia_ocen, ilosc1.
  • Stosowanie zmiennych – po deklaracji można zmiennej przypisywać różne
    wartości w trakcie działania programu. Ważne jest, by nadać zmiennej sensowną
    nazwę, opisującą przechowywane dane (np. suma_punktow zamiast x), co ułatwia
    czytanie kodu. Zmienną należy zadeklarować przed jej pierwszym użyciem w
    kodzie, w przeciwnym razie kompilator zgłosi błąd.
    Operacje na zmiennych
  • Przypisanie wartości – operator = służy do nadania zmiennej nowej wartości (po
    prawej stronie). Lewa strona musi być nazwą zmiennej, której wartość chcemy
    zmienić. Np. x = 10; ustawia wartość zmiennej x na 10. Jeśli zmienna x miała
    wcześniej inną wartość, zostaje ona zastąpiona.
  • Operacje arytmetyczne – na zmiennych liczbowych można wykonywać
    podstawowe działania matematyczne: dodawanie (+), odejmowanie (-), mnożenie
    (*), dzielenie (/) oraz modulo (% – reszta z dzielenia całkowitego). Można używać
    zarówno stałych, jak i innych zmiennych w tych operacjach. Np. mając int a=5, b=2;:
    • int sum = a + b; (sum = 7),
    • int różnica = a – b; (różnica = 3),
    • int iloczyn = a * b; (iloczyn = 10),
    • int iloraz = a / b; (iloraz = 2, dzielenie całkowite zaokrągla w dół)*,
    • int reszta = a % b; (reszta = 1, ponieważ 5÷2 daje resztę 1)*.
  • Złożone wyrażenia – w przypisaniach można korzystać z wcześniejszych wartości
    zmiennych. Np. a = a + 1; zwiększa wartość zmiennej a o 1. Podobnie a = a * 2;
    pomnoży bieżącą wartość a przez 2 i zapisze wynik ponownie w a.
  • Kolejność działań – C++ respektuje standardowe prawa kolejności operatorów
    (najpierw mnożenie/dzielenie/modulo, potem dodawanie/odejmowanie). Można
    używać nawiasów () w wyrażeniach, aby zmienić kolejność obliczeń lub poprawić
    czytelność.
  • Konwersje typów – przy operacjach na zmiennych różnych typów może zachodzić
    konwersja (np. int z double). W prostych obliczeniach typy całkowite i
    zmiennoprzecinkowe można mieszać – wynik będzie promowany do typu o
    większej precyzji (np. wyrażenie 5 + 2.5 zostanie obliczone jako typ double). W
    razie potrzeby można też stosować rzutowanie typów, ale to temat na później.
    Operatory w C++ (przegląd)
  • Operatory arytmetyczne: służą do wykonywania działań na liczbach. Należą do
    nich: + (dodawanie), – (odejmowanie), * (mnożenie), / (dzielenie), % (modulo –
    reszta z dzielenia, np. 23 % 7 = 2).
  • Operatory porównania (relacyjne): pozwalają porównać dwie wartości. Wynikiem
    takiego porównania jest wartość logiczna true albo false. Do operatorów
    porównania należą: == (równość – sprawdza czy lewa i prawa strona są sobie
    równe), != (czy różne), > (więcej niż), < (mniej niż), >= (większe lub równe), <=
    (mniejsze lub równe). Np. wyrażenie (x != 0) zwraca true, jeśli x nie jest zerem.
  • Operatory logiczne: umożliwiają łączenie warunków logicznych. Główne to: &&
    (koniunkcja, logiczne AND – zwraca true, gdy oba warunki są spełnione), ||
    (alternatywa, logiczne OR – true, gdy przynajmniej jeden z warunków jest
    spełniony), ! (negacja, NOT – zwraca przeciwny stan logiczny, true zmienia na false
    i vice versa). Przykład: (a > 0 && b > 0) jest true, gdy a i b są jednocześnie większe
    od zera.
  • Operatory przypisania: służą do modyfikacji wartości zmiennej.. Podstawowy to =
    (proste przypisanie wartości z prawej strony). Istnieją też operatory przypisania z
    operacją, które skracają zapis: += (dodaj i przypisz), -= (odejmij i przypisz), *=
    (pomnóż i przypisz), /= (podziel i przypisz) itp. Np. x += 5; jest równoważne x = x +
    5; (zwiększy x o 5). Można w ten sposób wygodnie modyfikować bieżącą wartość
    zmiennej.
  • Inne operatory: C++ udostępnia także szereg innych operatorów, np.
    inkrementacji ++ (zwiększa wartość zmiennej o 1), dekrementacji — (zmniejsza o
    1), operatory bitowe (&, |, ^, ~, przesunięcia bitowe <<, >>), operator warunkowy ?: i
    wiele innych. Ich poznawanie następuje stopniowo – na początku warto opanować
    powyższe podstawy, które są najczęściej używane.

Podstawy programowania – Wprowadzenie do środowisk programistycznych i narzędzi.

Dodaj komentarz

Środowisko programistyczne – co to takiego?
Środowisko programistyczne to zbiór narzędzi i oprogramowania, które wspomagają programistę w tworzeniu i testowaniu kodu. Na środowisko składa się zazwyczaj kilka elementów, takich jak: edytor kodu, kompilator lub interpreter, debugger (narzędzie do szukania błędów), a często także dodatkowe narzędzia (np. system kontroli wersji Git, narzędzia do budowania i testowania). Wszystkie te komponenty mogą działać osobno, ale w praktyce często używa się zintegrowanych środowisk programistycznych (IDE), które łączą te funkcje w jednym programie. IDE dostarcza graficzny edytor kodu oraz ma wbudowany kompilator, narzędzia do formatowania kodu, wykrywania błędów, debugowania i uruchamiania programu – wszystko w jednej aplikacji. Dzięki
temu programista ma pod ręką kompletne miejsce pracy ułatwiające pisanie i uruchamianie aplikacji.
Przykład: Zamiast pisać kod w prostym notatniku i osobno uruchamiać kompilator z linii komend, można użyć IDE, które umożliwia napisanie kodu, skompilowanie go jednym przyciskiem i od razu uruchomienie oraz zdebugowanie, jeśli wystąpią błędy. Środowiska programistyczne oszczędzają czas i zmniejszają liczbę błędów, oferując ułatwienia takie jak podświetlanie składni, autouzupełnianie kodu czy podpowiedzi błędów w trakcie pisania.

  • Kompilator – program, który tłumaczy cały kod źródłowy napisany w języku
    programowania na równoważny kod wynikowy (najczęściej kod maszynowy, zrozumiały
    dla procesora). Kompilator działa zwykle offline – najpierw analizuje i przekształca cały
    program do postaci pliku wykonywalnego, a dopiero potem ten plik można uruchomić.
    Dzięki temu program skompilowany działa szybciej (bo komputer wykonuje już kod
    maszynowy bez dodatkowych tłumaczeń w trakcie działania). Korzystanie z kompilatorów ułatwia programowanie, ponieważ programista nie musi znać języka maszynowego, a kod może być przenośny między różnymi platformami.
  • Interpreter – program, który analizuje i wykonuje kod linia po linii w czasie
    rzeczywistym, bez tworzenia oddzielnego pliku wykonywalnego. Działa to tak, że
    interpreter czyta instrukcję z kodu źródłowego, od razu ją wykonuje, potem przechodzi do następnej instrukcji, i tak dalej. Nie powstaje osobny plik .exe – za każdym razem, gdy chcemy uruchomić program interpretowany, interpreter musi od początku czytać i
    wykonywać jego kod. Powoduje to, że programy interpretowane zwykle działają wolniej (bo tłumaczenie odbywa się w trakcie działania programu), ale mają swoje zalety: łatwiej je testować w małych fragmentach, a ewentualne błędy są wykrywane natychmiast podczas wykonywania odpowiedniej linijki kodu. Przykładowe języki interpretowane to np. Python, JavaScript, PHP – w ich przypadku działanie programu wymaga obecności interpretera.
  • Debugger – narzędzie (program) służące do dynamicznej analizy działającego programu
    w celu znajdowania błędów (tzw. bugów). Debugger pozwala uruchamiać nasz program
    krok po kroku, zatrzymywać wykonanie w wybranych miejscach (tzw. punkty przerwań),
    obserwować na bieżąco wartości zmiennych i rejestrować przebieg wykonania instrukcji. Dzięki temu możemy dokładnie zlokalizować, gdzie i dlaczego program zachowuje się nieprawidłowo. Proces korzystania z debuggera nazywa się debugowaniem. Współczesne IDE mają zazwyczaj wbudowane debugery, co bardzo ułatwia poprawianie błędów w kodzie. Należy pamiętać, że wykonanie programu w trybie debug (pod nadzorem debuggera) może nieznacznie różnić się od normalnego działania (np. program działa wolniej), ale zalety w postaci możliwości śledzenia i diagnozy błędów są niezwykle ważne w pracy programisty.
    Biblioteka programistyczna – co to jest i po co się jej używa?
    Biblioteka programistyczna to zbiór gotowego kodu (funkcji, klas, definicji typów danych), który został wydzielony po to, by móc go wielokrotnie wykorzystywać w różnych programach. Biblioteka najczęściej ma postać osobnego pliku lub zestawu plików, które dołącza się do projektu. Korzystając z biblioteki, programista może wywołać zawarte w niej funkcje zamiast pisać wszystko
    od zera – to oszczędza czas i zmniejsza ryzyko błędów, bo korzysta się ze sprawdzonych
    wcześniej rozwiązań. Inaczej mówiąc, biblioteka to gotowe narzędzia dla programisty. Dobór odpowiedniej biblioteki może znacznie ułatwić zaimplementowanie nawet bardzo złożonych zadań, ponieważ wiele problemów zostało już wcześniej rozwiązanych i udostępnionych w formie funkcji czy klas w bibliotekach. Pisanie programu wyłącznie od podstaw, używając tylko najbardziej podstawowych elementów języka, bywa czasochłonne, a czasem wręcz niewykonalne – dlatego w praktyce zawsze
    korzysta się z istniejących bibliotek.
    Przykłady bibliotek w C++: Sam język C++ posiada obszerną bibliotekę standardową, która obejmuje m.in. wejście-wyjście (np. iostream), struktury danych i algorytmy (,
    itd.), funkcje matematyczne (), i wiele innych komponentów. Poza biblioteką standardową istnieje wiele dodatkowych bibliotek rozszerzających możliwości C++.
    Przykładowo, Boost to zbiór darmowych bibliotek C++ oferujących dodatkowe kontenery, funkcje i narzędzia (często eksperymentalne, z czasem część z nich trafia do standardu języka). Biblioteka Qt to popularny framework do tworzenia graficznego interfejsu użytkownika (GUI) i aplikacji okienkowych w C++. Inne przykłady to biblioteki multimedialne, np. SFML lub SDL (do grafiki 2D, dźwięku, obsługi gier), czy OpenCV (biblioteka do przetwarzania obrazów i wideo). Każda z tych bibliotek dostarcza określony zestaw funkcjonalności, który możemy dołączyć do swojego programu zamiast pisać wszystko samemu od podstaw. Popularne środowiska programistyczne (IDE) dla C++ W świecie programowania w C++ istnieje wiele różnych IDE. Różnią się one wyglądem, funkcjonalnościami i przeznaczeniem, ale każde zawiera podstawowe elementy (edytor, kompilator,debugger). Poniżej przedstawiono kilka popularnych środowisk dla języka C++ wraz z ich krótką charakterystyką:
  • Code::Blocks – darmowe, otwartoźródłowe i wieloplatformowe IDE (działa w Windows,
    Linux, Mac) na licencji GNU GPL. Zostało zaprojektowane z myślą o językach C, C++
    (obsługuje też Fortran) i bywa uważane za następcę starszego Dev-C++. Code::Blocks jest
    cenione za prostotę i szybkość działania. Posiada możliwość rozszerzania funkcji poprzez
    wtyczki. Domyślnie korzysta z kompilatora MinGW/GCC, ale można go skonfigurować
    także z innymi kompilatorami. Ze względu na dostępność za darmo i łatwość obsługi,
    Code::Blocks jest często polecany dla początkujących oraz używany w szkołach.
  • Microsoft Visual Studio – rozbudowane i profesjonalne IDE firmy Microsoft, dostępne
    głównie na Windows (nowsze edycje pozwalają także na tworzenie aplikacji na inne
    platformy). Visual Studio obsługuje wiele języków (C++, C#, Python, JavaScript i inne) i
    zawiera cały ekosystem narzędzi do tworzenia oprogramowania. Umożliwia pisanie, edycję,
    kompilowanie i debugowanie kodu w jednym miejscu. Cechuje się bogactwem funkcji:
    posiada wbudowane kompilatory (np. MSVC dla C++), zaawansowany edytor z
    podpowiedziami (IntelliSense), zintegrowany system kontroli wersji, narzędzia do
    projektowania interfejsów, profiler wydajności, testy jednostkowe i wiele rozszerzeń. Visual
    Studio jest często używane w profesjonalnych projektach (np. do tworzenia aplikacji na
    Windows, gier z użyciem Unreal/Unity, aplikacji .NET). Dla studentów i małych projektów
    dostępna jest darmowa edycja Visual Studio Community.
  • CLion – nowoczesne, komercyjne IDE dla C++ (oraz C) od firmy JetBrains. Jest to
    środowisko wieloplatformowe (Windows, Linux, macOS) oparte na platformie IntelliJ.
    CLion wyróżnia się inteligentnym edytorem kodu (zaawansowana analiza składni,
    automatyczne uzupełnianie, refaktoryzacja kodu) oraz ścisłą integracją z systemem
    budowania CMake (często używanym w projektach C++). Domyślnie obsługuje
    kompilatory GCC i Clang, korzysta z debuggera GDB lub LLDB, co pozwala na efektywne
    debugowanie aplikacji. CLion oferuje także integrację z systemami kontroli wersji (Git),
    wsparcie dla testów jednostkowych i innych narzędzi developerskich. Jest to środowisko
    cenione przez wielu programistów C++ za wygodę i produktywność, choć jego pełna wersja wymaga wykupienia licencji (dla studentów JetBrains często udostępnia licencje darmowe).
  • Dev-C++ – starsze, lekkie IDE przeznaczone dla języków C/C++ w środowisku Windows.
    Było ono popularne szczególnie w latach 2000-2010 jako proste narzędzie dla
    początkujących. Dev-C++ jest dostępne za darmo na licencji GPL. W pakiecie zawiera
    kompilator MinGW (GCC) – w istocie program Dev-C++ jest zintegrowany z MinGW,
    czyli windowsową wersją kompilatora GCC. Interfejs Dev-C++ jest dość prosty: mamy
    edytor z podświetlaniem składni, panel do wyświetlania błędów kompilacji, konsolę do
    uruchamiania programu. Program ten nie jest już aktywnie rozwijany przez pierwotnych
    autorów (ostatnia klasyczna wersja to 5.11 z 2015 roku), ale istnieją jego kontynuacje (np.
    Orwell Dev-C++ czy wydanie Embarcadero Dev-C++ 6.x). Mimo że obecnie ustępuje
    funkcjonalnością nowszym IDE, nadal bywa używany w celach edukacyjnych ze względu
    na niewielki rozmiar i prostotę. Nie zawsze musimy instalować pełne środowisko na komputerze, aby przetestować kod. Istnieją kompilatory online, czyli strony internetowe, które umożliwiają napisanie kodu w przeglądarce i uruchomienie go na zdalnym serwerze. To wygodne rozwiązanie, gdy chcemy szybko sprawdzić
    działanie fragmentu kodu lub nie mamy skonfigurowanego lokalnego środowiska. Oto kilka przykładów takich serwisów:
  • Replit (dawniej repl.it): Popularne środowisko online, które obsługuje wiele języków, w
    tym C++. Pozwala ono pisać i uruchamiać kod C++ bezpośrednio w przeglądarce, a
    także dzielić się projektem czy nawet hostować proste aplikacje webowe (replit.com). Replit oferuje współdzielenie kodu (możliwa jest jednoczesna praca kilku osób nad tym samym kodem online) oraz ma wbudowany system zarządzania pakietami. Wymaga założenia konta dla pełni możliwości, ale podstawowe funkcje można testować też anonimowo.
  • Ideone: Serwis stworzony jako online compiler and debugger – pozwala kompilować i
    wykonywać kod w wielu językach (ponad 60 języków programowania) z poziomu strony
    internetowej (ideone.com). Użytkownik wybiera język (np. C++), wprowadza kod źródłowy,
    opcjonalnie dane wejściowe, i uruchamia – serwer zdalnie kompiluje kod i zwraca wynik
    działania. Ideone bywa wykorzystywane do szybkiego testowania kodu oraz przez serwisy
    edukacyjne i konkursy programistyczne (działa na silniku Sphere Engine). Nie wymaga
    logowania do podstawowych zastosowań – wystarczy wejść na stronę i wpisać kod.
  • Cpp.sh (C++ Shell): Bardzo prosty i szybki kompilator online skoncentrowany na języku
    C++. Strona cpp.sh umożliwia wprowadzenie kodu C++ i natychmiastowe jego wykonanie.
    W odróżnieniu od powyższych serwisów, cpp.sh jest ograniczony tylko do C/C++ i ma
    minimalny interfejs – właściwie tylko okno kodu i przycisk „Run”. Mimo to jest ceniony za brak zbędnych dodatków: wystarczy otworzyć stronę i od razu można pisać kod. Wewnątrz cpp.sh wykorzystuje nowoczesne technologie (kompiluje kod do WebAssembly za pomocą Emscripten i uruchamia go bezpiecznie w przeglądarce), ale dla użytkownika jest to w zasadzie transparentne. Nie potrzeba zakładać konta ani konfigurować środowiska – idealne do szybkich testów małych programów.
    Inne przykłady: Poza wymienionymi, istnieją dziesiątki podobnych serwisów, np. OnlineGDB, JDoodle, CodingGround (TutorialsPoint) czy polski Compiler Explorer (dla różnych języków). Wiele z nich obsługuje C++ i działa na zbliżonej zasadzie. Narzędzia te są przydatne zwłaszcza dla uczniów zaczynających naukę programowania – można eksperymentować z kodem bez skomplikowanej instalacji środowiska.

Instalacja Code::Blocks na Windows – krok po kroku
Jednym z zadań początkującego programisty jest samodzielne zainstalowanie IDE na swoimkomputerze. Jako przykład przeprowadźmy proces instalacji popularnego środowiska Code::Blocks z kompilatorem MinGW na systemie Windows:

  1. Pobranie instalatora: Wejdź na oficjalną stronę Code::Blocks (zakładka “Downloads”) i
    pobierz wersję instalatora z dołączonym kompilatorem MinGW. Jest to plik instalacyjny
    np. codeblocks-XX.YYmingw-setup.exe (gdzie XX.YY to numer wersji, np. 20.03
    lub 25.03). Ta wersja instalatora zawiera już wbudowany kompilator GCC/G++ oraz
    debugger GDB, więc nie trzeba ich osobno instalować codeblocks.orgcodeblocks.org.
    Uwaga: Upewnij się, że wybierasz instalator oznaczony „mingw” – twórcy Code::Blocks
    zalecają właśnie tę opcję dla początkujących, bo zawiera wszystkie potrzebne komponenty.
  2. Uruchomienie instalatora: Po pobraniu uruchom plik instalacyjny (*.exe). Pojawi się
    standardowy kreator instalacji Windows – postępuj zgodnie z instrukcjami na ekranie.
    Najpierw zazwyczaj wybierasz język instalatora (Code::Blocks może oferować język
    angielski – jeśli instalator nie jest po polsku, można go spokojnie używać, bo sam program ma możliwość ustawienia języka interfejsu po instalacji).
  3. Konfiguracja podczas instalacji: Przejdź przez kolejne ekrany kreatora. Najpierw
    wyświetlona zostanie licencja – zaakceptuj warunki licencyjne (przycisk I Agree).
    Następnie kreator zapyta o komponenty do zainstalowania – najlepiej zostawić domyślnie zaznaczoną opcję Full (pełna instalacja wszystkich komponentów). Potem wybierz folder docelowy, w którym ma zostać zainstalowany program (domyślnie to C:\ProgramFiles\CodeBlocks lub C:\Program Files (x86)\CodeBlocks dla systemów
    64-bit). Można pozostawić domyślną ścieżkę, chyba że z jakiegoś powodu chcesz
    zainstalować w innym miejscu.
  4. Instalacja plików: Kliknij przycisk Install – instalator skopiuje pliki programu na dysk.
    Poczekaj, aż pasek postępu osiągnie 100%. Po zakończeniu instalacji kreator może zapytać, czy uruchomić program Code::Blocks od razu. Zaznacz tę opcję (lub po prostu kliknij Next i Finish aby zamknąć instalator). Jeśli nie wybrałeś automatycznego uruchomienia, możesz później samodzielnie uruchomić Code::Blocks poprzez skrót na pulpicie lub w menu Start.
  5. Pierwsze uruchomienie: Przy pierwszym uruchomieniu Code::Blocks może wyświetlić
    okno z pytaniem o domyślny kompilator. Ponieważ wybraliśmy wersję instalatora z
    MinGW, środowisko automatycznie wykryje kompilator GCC. Powinno pojawić się okno
    powitalne. Teraz możesz już tworzyć nowy projekt lub plik źródłowy i napisać swój
    pierwszy program w C++. Na tym etapie instalacja jest zakończona – Code::Blocks jest
    gotowy do pracy. ?