Technik programista · kwalifikacja INF.04 i informatyka

C++ — programowanie strukturalne i obiektowe

C++ od pierwszego programu i kompilacji po wskaźniki, algorytmy z podstawy programowej, obiektowość, szablony i STL — dla matury rozszerzonej i technika programisty.

  • 12 działów
  • 48 lekcji
  • 48 ćwiczeń
  • 291 slajdów
  • 384 pytania
  • 100 godzin zajęć

Materiał otwierasz w przeglądarce — nic nie instalujesz. Uczniowie nie zakładają kont.

Co dostajesz

Prezentacja na tablicę

Slajdy złożone pod lekcję, z trybem projektora (powiększona czcionka, bez rozpraszaczy) i notatkami widocznymi tylko dla Ciebie.

Pytania i testy

Pytania kontrolne w trakcie lekcji i test na koniec — do sprawdzenia, czy materiał został zrozumiany.

48 ćwiczeń praktycznych

Zadania przy komputerze z poleceniem, wskazówkami i rozwiązaniem — do pracowni i do pracy samodzielnej.

Klasy i postęp

Zakładasz tyle klas, ile uczysz, i widzisz, gdzie skończyłeś w każdej z nich. Klasa to sama etykieta — żadnych danych uczniów.

Materiał pod swoją klasę

Ukrywaj lekcje i slajdy, zmieniaj kolejność, poprawiaj treść i dopisuj własne. Zmiany widzisz tylko Ty.

Dostęp z każdego komputera

Ten sam stan lekcji w szkole i w domu. Wystarczy przeglądarka — także ta na komputerze przy tablicy.

Dla kogo i czego nauczy się uczeń

Dla kogo

Technikum, zawód technik programista (ścieżka INF.04) — zwykle klasy 1–3, obok lub zamiast kursu Python. Liceum z rozszerzoną informatyką — przygotowanie do zadań programistycznych na maturze. Kurs zaczyna od zera: uczeń nie musi znać żadnego języka programowania.

Po kursie uczeń potrafi

  • opisać drogę od kodu źródłowego do pliku wykonywalnego i pracować z kompilatorem, IDE i debugerem
  • dobierać typy danych, stosować operatory, dzielenie całkowite i resztę, konwersje oraz formatowanie wyników
  • zapisywać algorytmy instrukcjami warunkowymi i pętlami, dzielić program na funkcje z parametrami przez wartość i referencję, stosować rekurencję
  • przetwarzać tablice jedno- i dwuwymiarowe oraz napisy string
  • rozumieć wskaźniki, arytmetykę wskaźników i pamięć dynamiczną, stosować unique_ptr
  • implementować algorytmy z podstawy programowej: sito Eratostenesa, NWD, systemy liczbowe i schemat Hornera, sortowania, wyszukiwanie binarne, bisekcję, i szacować ich złożoność
  • czytać i zapisywać pliki tekstowe jak w zadaniach maturalnych, obsługiwać błędy wyjątkami
  • projektować klasy: hermetyzacja, konstruktory i destruktory, przeciążanie operatorów, dziedziczenie, polimorfizm, klasy abstrakcyjne i szablony
  • korzystać z biblioteki standardowej: vector, map, set, stack, queue, algorytmy i wyrażenia lambda
  • testować programy, debugować je metodycznie i zrealizować projekt od specyfikacji do prezentacji

Program kursu

Pełny spis — rozwiń dział, żeby zobaczyć tematy lekcji z krótkim opisem tego, co obejmują.

I. Wprowadzenie do C++ i środowisko pracy 3 lekcje

algorytm, kompilacja, kompilator i IDE, pierwszy program, cout i cin, rodzaje błędów.

  • 1.1 Algorytm, program i język C++ Od problemu do algorytmu i programu. Sposoby zapisu algorytmów, języki kompilowane i interpretowane, droga od kodu źródłowego do pliku wykonywalnego, miejsce C++ wśród języków programowania. 6 slajdów · 8 pytań
  • 1.2 Środowisko pracy: kompilator i IDE Instalacja kompilatora g++ (MinGW-w64) i środowiska Code::Blocks lub Visual Studio Code, kompilacja z wiersza poleceń, opcje -std=c++17 i -Wall, projekt i katalog roboczy, debuger. 6 slajdów · 8 pytań
  • 1.3 Pierwszy program, komentarze i błędy Budowa programu: #include, przestrzeń nazw std, funkcja main, instrukcje i średniki, strumienie cout i cin, endl i \n, komentarze, rodzaje błędów: kompilacji, konsolidacji, wykonania i logiczne. 7 slajdów · 8 pytań
II. Typy danych, zmienne, operatory i strumienie 4 lekcje

typy wbudowane i zakresy, operatory, static_cast, iomanip, auto, operatory logiczne i cmath.

  • 2.1 Zmienne i typy wbudowane Deklaracja i inicjalizacja zmiennej, zasady nazewnictwa, typy int, long long, double, char i bool, operator sizeof, zakresy typów i przepełnienie, stałe const. 6 slajdów · 8 pytań
  • 2.2 Operatory arytmetyczne i konwersje typów Operatory + - * / %, dzielenie całkowite i reszta, priorytety, operatory przypisania złożonego, inkrementacja i dekrementacja, konwersje niejawne i static_cast. 6 slajdów · 8 pytań
  • 2.3 Wejście i wyjście, formatowanie, auto Wczytywanie wielu wartości strumieniem cin, manipulatory fixed, setprecision i setw z biblioteki iomanip, typ char i kody ASCII, dedukcja typu auto. 6 slajdów · 8 pytań
  • 2.4 Porównania, operatory logiczne i biblioteka cmath Operatory porównania, typ bool, operatory logiczne &&, || i ! z prawami De Morgana, porównywanie liczb rzeczywistych, funkcje sqrt, pow, abs, round, floor i ceil. 6 slajdów · 8 pytań
III. Instrukcje warunkowe i pętle 4 lekcje

if, switch, for, while, do…while, break, continue, pętle zagnieżdżone, NWD i liczby pierwsze.

  • 3.1 Instrukcja warunkowa if Instrukcja if i if…else, bloki i wcięcia, łańcuch else if, zagnieżdżanie warunków, operator warunkowy ?:, typowe błędy: średnik po if i przypisanie zamiast porównania. 6 slajdów · 8 pytań
  • 3.2 Instrukcja wyboru switch Instrukcja switch z etykietami case i default, rola instrukcji break i celowe przejście do kolejnej etykiety, switch na typie char, menu programu, porównanie switch z łańcuchem else if. 6 slajdów · 8 pytań
  • 3.3 Pętle for, while i do…while Pętla for z licznikiem, pętla while sterowana warunkiem, pętla do…while wykonywana co najmniej raz, zliczanie i sumowanie, walidacja danych, pętla nieskończona i jej przyczyny. 6 slajdów · 8 pytań
  • 3.4 Pętle zagnieżdżone, break i continue Instrukcje break i continue, pętle zagnieżdżone i rysowanie wzorów, algorytmy na liczbach: rozkład na cyfry, minimum i maksimum ciągu, sprawdzanie pierwszości, NWD algorytmem Euklidesa. 6 slajdów · 8 pytań
IV. Funkcje, referencje i rekurencja 4 lekcje

definicja i prototyp, przekazywanie przez wartość i referencję, przeciążanie, zasięg, static, rekurencja.

  • 4.1 Funkcje: definicja, deklaracja i wartość zwracana Po co dzielić program na funkcje, definicja funkcji, parametry i argumenty, instrukcja return, funkcje void, deklaracja (prototyp) przed main, funkcje typu bool jako predykaty. 6 slajdów · 8 pytań
  • 4.2 Przekazywanie parametrów: wartość i referencja Przekazywanie przez wartość (kopia), referencja jako druga nazwa zmiennej, parametry referencyjne i funkcja zamien, zwracanie kilku wyników, stała referencja const, argumenty domyślne. 6 slajdów · 8 pytań
  • 4.3 Przeciążanie funkcji i zasięg zmiennych Przeciążanie funkcji (ta sama nazwa, różne parametry), zasięg blokowy, zmienne lokalne i globalne, przesłanianie nazw, czas życia zmiennej, zmienne statyczne w funkcji. 6 slajdów · 8 pytań
  • 4.4 Rekurencja Funkcja wywołująca samą siebie, warunek zakończenia i krok rekurencyjny, stos wywołań, silnia, ciąg Fibonacciego i jego koszt, NWD rekurencyjnie, szybkie potęgowanie, wieże Hanoi, porównanie z iteracją. 7 slajdów · 8 pytań
V. Tablice i napisy 4 lekcje

tablice 1D i 2D, std::array, tablice w funkcjach, string, getline, palindromy i szyfr Cezara.

  • 5.1 Tablice jednowymiarowe Deklaracja i inicjalizacja tablicy, indeksowanie od zera, przeglądanie pętlą for i pętlą zakresową, wczytywanie danych do tablicy, wyjście poza zakres tablicy i jego skutki. 6 slajdów · 8 pytań
  • 5.2 Algorytmy na tablicach i tablice w funkcjach Minimum i maksimum z pozycją, wyszukiwanie liniowe, zliczanie elementów spełniających warunek, odwracanie tablicy, przekazywanie tablicy do funkcji, kontener std::array. 6 slajdów · 8 pytań
  • 5.3 Tablice dwuwymiarowe Deklaracja tablicy dwuwymiarowej, wiersze i kolumny, pętle zagnieżdżone, sumy wierszy i kolumn, przekątne macierzy kwadratowej, transpozycja, przekazywanie do funkcji. 6 slajdów · 8 pytań
  • 5.4 Napisy std::string Typ string: tworzenie, długość, dostęp do znaków, łączenie i porównywanie, wczytywanie wyrazu i całej linii getline, metody substr, find, insert, erase, replace, zamiana liter, liczby a napisy, palindrom i szyfr Cezara. 7 slajdów · 8 pytań
VI. Wskaźniki i pamięć dynamiczna 4 lekcje

adresy i wskaźniki, tablice a wskaźniki, new i delete, wycieki pamięci, unique_ptr.

  • 6.1 Adresy i wskaźniki Pamięć jako ciąg komórek z adresami, operator adresu &, zmienna wskaźnikowa i jej typ, operator wyłuskania *, zmiana wartości przez wskaźnik, wskaźnik pusty nullptr, typowe błędy. 6 slajdów · 8 pytań
  • 6.2 Wskaźniki i tablice, arytmetyka wskaźników Nazwa tablicy jako adres pierwszego elementu, zapis t[i] i *(t + i), arytmetyka wskaźników, różnica wskaźników, przeglądanie tablicy wskaźnikiem, wskaźniki na stałe i stałe wskaźniki. 6 slajdów · 8 pytań
  • 6.3 Pamięć dynamiczna: new i delete Stos i sterta, przydział pamięci dla jednej wartości i tablicy operatorami new i new[], zwalnianie delete i delete[], tablica o rozmiarze podanym przez użytkownika, wyciek pamięci, wiszący wskaźnik, podwójne zwolnienie. 6 slajdów · 8 pytań
  • 6.4 Wskaźniki w funkcjach i inteligentne wskaźniki Przekazywanie wskaźnika do funkcji, wskaźnik czy referencja, funkcja zwracająca wskaźnik i niebezpieczeństwo adresu zmiennej lokalnej, tablica dynamiczna zwracana z funkcji, std::unique_ptr i make_unique, zasada RAII. 6 slajdów · 8 pytań
VII. Algorytmy z podstawy programowej 5 lekcji

algorytmy na liczbach, systemy liczbowe, sortowania proste i szybkie, wyszukiwanie binarne, bisekcja, złożoność obliczeniowa.

  • 7.1 Algorytmy na liczbach Sito Eratostenesa, rozkład liczby na czynniki pierwsze, NWD i NWW, liczby doskonałe i dzielniki, porównanie kosztu prostego sprawdzania pierwszości i sita. 6 slajdów · 8 pytań
  • 7.2 Systemy liczbowe i schemat Hornera Systemy pozycyjne, zamiana liczby dziesiętnej na system o podstawie 2–16, zamiana z dowolnego systemu na dziesiętny, schemat Hornera dla wielomianów, zapis binarny w C++ i manipulatory hex i oct. 6 slajdów · 8 pytań
  • 7.3 Sortowania proste Sortowanie bąbelkowe z wczesnym zakończeniem, sortowanie przez wybór, sortowanie przez wstawianie, liczba porównań i zamian, stabilność sortowania, złożoność kwadratowa. 6 slajdów · 8 pytań
  • 7.4 Sortowanie szybkie, przez scalanie i std::sort Zasada dziel i zwyciężaj, sortowanie przez scalanie i scalanie dwóch ciągów posortowanych, sortowanie szybkie z podziałem względem elementu osiowego, złożoność O(n log n), funkcja std::sort z własnym porządkiem, sortowanie przez zliczanie. 6 slajdów · 8 pytań
  • 7.5 Wyszukiwanie binarne i złożoność obliczeniowa Wyszukiwanie binarne w tablicy posortowanej, pierwsze wystąpienie i funkcje lower_bound i upper_bound, bisekcja dla równań, notacja O i klasy złożoności, szacowanie czasu działania programu. 6 slajdów · 8 pytań
VIII. Struktury, pliki i wyjątki 4 lekcje

struct, enum class, pliki tekstowe, wyjątki i walidacja danych.

  • 8.1 Struktury Definicja struktury, pola i operator kropki, inicjalizacja klamrowa, struktury jako parametry funkcji, tablice struktur, sortowanie tablicy struktur według pola, struktura zagnieżdżona. 6 slajdów · 8 pytań
  • 8.2 Typy wyliczeniowe i rekordy w programie Typ wyliczeniowy enum class i jego przewaga nad stałymi liczbowymi, switch na enum, konwersja enum na liczbę i tekst, struktura z polem wyliczeniowym, prosty rejestr danych z wyszukiwaniem i statystykami. 6 slajdów · 8 pytań
  • 8.3 Pliki tekstowe Strumienie ifstream i ofstream, otwieranie i sprawdzanie pliku, odczyt do końca pliku, odczyt wierszami getline, zapis wyników do pliku, dopisywanie, typowe zadanie maturalne: dane.txt i wyniki.txt. 6 slajdów · 8 pytań
  • 8.4 Wyjątki i walidacja danych Błędy sygnalizowane wartością zwracaną a wyjątki, instrukcje throw, try i catch, hierarchia wyjątków standardowych, wyjątki z stoi i at, walidacja danych wejściowych i czyszczenie stanu strumienia cin. 6 slajdów · 8 pytań
IX. Programowanie obiektowe 5 lekcji

klasy, hermetyzacja, konstruktory i destruktor, this, const, static, przeciążanie operatorów, kompozycja i UML.

  • 9.1 Klasa i obiekt, hermetyzacja Paradygmat obiektowy, klasa jako szablon i obiekt jako egzemplarz, pola i metody, specyfikatory dostępu public i private, hermetyzacja, akcesory get i set z walidacją, różnica między struct i class. 6 slajdów · 8 pytań
  • 9.2 Konstruktory i destruktor Konstruktor domyślny i z parametrami, przeciążanie konstruktorów, lista inicjalizacyjna, walidacja w konstruktorze z wyjątkiem, destruktor i kolejność wywołań, czas życia obiektów, RAII w praktyce. 6 slajdów · 8 pytań
  • 9.3 this, metody stałe i składowe statyczne Wskaźnik this i łańcuchowe wywoływanie metod, metody const i obiekty stałe, pola i metody statyczne wspólne dla wszystkich obiektów, licznik obiektów, definicja metod poza klasą i podział na pliki .h i .cpp. 6 slajdów · 8 pytań
  • 9.4 Przeciążanie operatorów Po co przeciążać operatory, operatory arytmetyczne jako metody i funkcje, operatory porównania, operator += i jego związek z +, operator strumieniowy << i funkcja zaprzyjaźniona, klasa Ulamek z pełnym zestawem operatorów. 6 slajdów · 8 pytań
  • 9.5 Kompozycja i projektowanie klas Kompozycja: obiekt złożony z innych obiektów, relacja „ma” (has-a), klasa zarządzająca kolekcją obiektów, diagram klas UML: pola, metody, widoczność i powiązania, od treści zadania do projektu klas. 6 slajdów · 8 pytań
X. Dziedziczenie, polimorfizm i szablony 4 lekcje

klasy pochodne, metody wirtualne, klasy abstrakcyjne, reguła trzech i zera, szablony funkcji i klas.

  • 10.1 Dziedziczenie Relacja „jest” (is-a), klasa bazowa i pochodna, dziedziczenie publiczne, składowe protected, konstruktor klasy bazowej w liście inicjalizacyjnej, kolejność konstrukcji i destrukcji, nadpisywanie metod i wywołanie wersji bazowej. 6 slajdów · 8 pytań
  • 10.2 Metody wirtualne i polimorfizm Wiązanie statyczne i dynamiczne, słowo virtual, override i final, wywołanie przez wskaźnik i referencję do klasy bazowej, kolekcja obiektów różnych klas, wirtualny destruktor, unique_ptr w hierarchii klas. 6 slajdów · 8 pytań
  • 10.3 Klasy abstrakcyjne i reguła trzech Metody czysto wirtualne i klasy abstrakcyjne, interfejsy, projektowanie hierarchii klas, konstruktor kopiujący i operator przypisania, reguła trzech, pięciu i zera, płytka i głęboka kopia, semantyka przenoszenia. 6 slajdów · 8 pytań
  • 10.4 Szablony funkcji i klas Programowanie uogólnione, szablon funkcji i dedukcja typu, jawne podanie typu, wymagania wobec typu, szablon klasy z kilkoma parametrami, parametr niebędący typem, szablony w bibliotece standardowej, pliki nagłówkowe z szablonami. 6 slajdów · 8 pytań
XI. Biblioteka standardowa (STL) 4 lekcje

vector i iteratory, map i set, stos, kolejka i kolejka priorytetowa, algorytmy i lambdy.

  • 11.1 Kontener vector i iteratory vector jako tablica dynamiczna, push_back, pop_back, size, operator [] i at, insert i erase, rozmiar a pojemność, vector dwuwymiarowy, iteratory begin i end, pętla zakresowa, pułapka unieważnienia iteratorów. 6 slajdów · 8 pytań
  • 11.2 Kontenery asocjacyjne: map i set Słownik map: wstawianie, odczyt, operator [], find i count, przeglądanie par w kolejności kluczy, zliczanie wystąpień, set i usuwanie duplikatów, unordered_map i unordered_set, porównanie złożoności. 6 slajdów · 8 pytań
  • 11.3 Stos, kolejka i kolejka priorytetowa Adaptery kontenerów: stack (LIFO), queue (FIFO), priority_queue, deque, zastosowania: sprawdzanie nawiasów, odwrotna notacja polska, symulacja kolejki, przechodzenie planszy wszerz (BFS), wybór największego elementu. 6 slajdów · 8 pytań
  • 11.4 Algorytmy biblioteki i wyrażenia lambda Nagłówek algorithm i numeric: sort, find, find_if, count, count_if, min_element, max_element, accumulate, transform, reverse, unique, remove_if z erase, next_permutation, wyrażenia lambda z przechwytywaniem. 6 slajdów · 8 pytań
XII. Testowanie, projekt i przygotowanie do egzaminów 3 lekcje

testy jednostkowe i debugowanie, strategia zadań maturalnych i INF.04, projekt końcowy.

  • 12.1 Testowanie i debugowanie Rodzaje testów, asercje assert, prosty zestaw testów jednostkowych, przypadki typowe, brzegowe i błędne, testowanie przez porównanie z rozwiązaniem siłowym, metodyczne debugowanie, ostrzeżenia kompilatora i sanitizery. 6 slajdów · 8 pytań
  • 12.2 Matura i INF.04 — strategia rozwiązywania zadań Budowa części praktycznej matury z informatyki i egzaminu INF.04, czytanie treści i danych, szablon programu z plikami, dobór algorytmu do rozmiaru danych, kontrola wyników na przykładzie, zarządzanie czasem, typowe błędy. 6 slajdów · 8 pytań
  • 12.3 Projekt końcowy Cykl wytwarzania oprogramowania w małym projekcie: specyfikacja wymagań, projekt klas i danych, implementacja etapami, testy, kontrola wersji, dokumentacja, prezentacja i kryteria oceny, propozycje tematów. 6 slajdów · 8 pytań

Ćwiczenia praktyczne

48 zadań przy komputerze, w 12 działach.

I. Wprowadzenie do C++ i środowisko pracy

3 ćwiczenia · 15 zadań

Trzy ćwiczenia: od algorytmu na kartce do programu, przygotowanie kompilatora i IDE oraz pierwsze programy i czytanie komunikatów o błędach.

Lista ćwiczeń
  1. Od algorytmu do programu
  2. Środowisko pracy krok po kroku
  3. Pierwsze programy i polowanie na błędy

Potrzebne: Kompilator g++ 11 lub nowszy (MinGW-w64) albo Visual Studio 2022, edytor Code::Blocks lub Visual Studio Code z rozszerzeniem C/C++, terminal oraz katalog roboczy cpp-dzial-1.

II. Typy danych, zmienne, operatory i strumienie

4 ćwiczenia · 20 zadań

Cztery ćwiczenia: dobór typów i przepełnienie, obliczenia z dzieleniem całkowitym i resztą, formatowanie wyników oraz warunki logiczne i funkcje matematyczne.

Lista ćwiczeń
  1. Typy, zakresy i przepełnienie
  2. Dzielenie całkowite, reszta i konwersje
  3. Formatowanie wyników i znaki
  4. Warunki logiczne i funkcje matematyczne

Potrzebne: Kompilator g++ (opcje -std=c++17 -Wall) lub Visual Studio 2022, edytor Code::Blocks lub Visual Studio Code, katalog roboczy cpp-dzial-2.

III. Instrukcje warunkowe i pętle

4 ćwiczenia · 20 zadań

Cztery ćwiczenia: rozgałęzienia if, menu ze switch, pętle z sumowaniem i walidacją danych oraz pętle zagnieżdżone i klasyczne algorytmy na liczbach.

Lista ćwiczeń
  1. Rozgałęzienia w praktyce
  2. Menu programu ze switch
  3. Pętle: sumy, liczniki i walidacja
  4. Pętle zagnieżdżone i algorytmy na liczbach

Potrzebne: Kompilator g++ (opcje -std=c++17 -Wall) lub Visual Studio 2022, edytor z debugerem, katalog roboczy cpp-dzial-3.

IV. Funkcje, referencje i rekurencja

4 ćwiczenia · 20 zadań

Cztery ćwiczenia: własna biblioteka funkcji matematycznych, parametry referencyjne, przeciążanie i zasięg oraz rekurencja z pomiarem liczby wywołań.

Lista ćwiczeń
  1. Własne funkcje matematyczne
  2. Referencje i kilka wyników
  3. Przeciążanie i zasięg
  4. Rekurencja w praktyce

Potrzebne: Kompilator g++ (opcje -std=c++17 -Wall) lub Visual Studio 2022, edytor z debugerem (podgląd stosu wywołań), katalog roboczy cpp-dzial-4.

V. Tablice i napisy

4 ćwiczenia · 20 zadań

Cztery ćwiczenia: dziennik ocen w tablicy, biblioteka funkcji tablicowych, plansza i macierze w tablicy dwuwymiarowej oraz przetwarzanie napisów jak w zadaniach maturalnych.

Lista ćwiczeń
  1. Dziennik ocen w tablicy
  2. Biblioteka funkcji tablicowych
  3. Plansza i macierze
  4. Napisy jak na maturze

Potrzebne: Kompilator g++ (opcje -std=c++17 -Wall) lub Visual Studio 2022, edytor z debugerem, katalog roboczy cpp-dzial-5.

VI. Wskaźniki i pamięć dynamiczna

4 ćwiczenia · 20 zadań

Cztery ćwiczenia: obserwacja adresów i wskaźników w debugerze, przeglądanie tablic wskaźnikami, tablice dynamiczne z wykrywaniem wycieków oraz funkcje ze wskaźnikami i unique_ptr.

Lista ćwiczeń
  1. Adresy i wskaźniki pod lupą
  2. Tablice i arytmetyka wskaźników
  3. Tablice dynamiczne i wycieki pamięci
  4. Wskaźniki w funkcjach i unique_ptr

Potrzebne: Kompilator g++ (opcje -std=c++17 -Wall -g) lub Visual Studio 2022 (Narzędzia diagnostyczne — użycie pamięci), edytor z debugerem, katalog roboczy cpp-dzial-6.

VII. Algorytmy z podstawy programowej

5 ćwiczeń · 25 zadań

Pięć ćwiczeń: algorytmy na liczbach, systemy liczbowe, sortowania proste z licznikami operacji, sortowania szybkie z pomiarem czasu oraz wyszukiwanie binarne i bisekcja.

Lista ćwiczeń
  1. Liczby pierwsze, czynniki i dzielniki
  2. Systemy liczbowe i Horner
  3. Sortowania proste pod lupą
  4. Sortowania szybkie i pomiar czasu
  5. Wyszukiwanie binarne i bisekcja

Potrzebne: Kompilator g++ (opcje -std=c++17 -Wall -O2) lub Visual Studio 2022 w konfiguracji Release do pomiarów czasu, katalog roboczy cpp-dzial-7.

VIII. Struktury, pliki i wyjątki

4 ćwiczenia · 20 zadań

Cztery ćwiczenia: ranking zawodników w tablicy struktur, rejestr sprzętu z typami wyliczeniowymi, przetwarzanie plików jak na maturze oraz odporne na błędy wczytywanie danych.

Lista ćwiczeń
  1. Ranking w tablicy struktur
  2. Rejestr sprzętu z enum class
  3. Pliki jak na maturze
  4. Program odporny na błędy

Potrzebne: Kompilator g++ (opcje -std=c++17 -Wall) lub Visual Studio 2022, edytor tekstu do przygotowania plików danych, katalog roboczy cpp-dzial-8 (pliki .txt obok programu).

IX. Programowanie obiektowe

5 ćwiczeń · 25 zadań

Pięć ćwiczeń: pierwsze klasy z hermetyzacją, konstruktory i destruktory, składowe statyczne i podział na pliki, klasa z przeciążonymi operatorami oraz projekt biblioteki szkolnej od diagramu UML do programu.

Lista ćwiczeń
  1. Pierwsze klasy
  2. Konstruktory i destruktory
  3. this, const, static i pliki
  4. Klasa z operatorami
  5. Projekt: biblioteka szkolna

Potrzebne: Kompilator g++ (opcje -std=c++17 -Wall) lub Visual Studio 2022 (projekt z kilkoma plikami .h i .cpp), edytor diagramów UML lub kartka, katalog roboczy cpp-dzial-9.

X. Dziedziczenie, polimorfizm i szablony

4 ćwiczenia · 20 zadań

Cztery ćwiczenia: hierarchia pracowników, polimorficzna galeria figur, klasy abstrakcyjne z poprawnym kopiowaniem oraz biblioteka szablonów.

Lista ćwiczeń
  1. Hierarchia pracowników
  2. Polimorficzna galeria figur
  3. Interfejsy i poprawne kopiowanie
  4. Biblioteka szablonów

Potrzebne: Kompilator g++ (opcje -std=c++17 -Wall -Wextra) lub Visual Studio 2022, edytor z debugerem, katalog roboczy cpp-dzial-10.

XI. Biblioteka standardowa (STL)

4 ćwiczenia · 20 zadań

Cztery ćwiczenia: przetwarzanie danych w wektorach, statystyki tekstu w map i set, zadania na stosie i kolejce oraz rozwiązania jednolinijkowe algorytmami biblioteki.

Lista ćwiczeń
  1. Dane w wektorach
  2. Statystyki tekstu
  3. Stos i kolejka w zadaniach
  4. Algorytmy zamiast pętli

Potrzebne: Kompilator g++ (opcje -std=c++17 -Wall) lub Visual Studio 2022, dokumentacja cppreference.com, katalog roboczy cpp-dzial-11.

XII. Testowanie, projekt i przygotowanie do egzaminów

3 ćwiczenia · 15 zadań

Trzy ćwiczenia: testy jednostkowe i polowanie na błędy, próbny arkusz z plikiem danych w limicie czasu oraz realizacja projektu końcowego.

Lista ćwiczeń
  1. Testy i polowanie na błędy
  2. Próbny arkusz z plikiem danych
  3. Projekt końcowy

Potrzebne: Kompilator g++ (opcje -std=c++17 -Wall -Wextra, opcjonalnie -fsanitize=address,undefined) lub Visual Studio 2022, git, katalog roboczy cpp-dzial-12.

Tak wygląda lekcja

Lekcja 1.1 „Algorytm, program i język C++” — cele z pierwszego slajdu i kolejne slajdy prezentacji.

Po lekcji uczeń potrafi

  • wyjaśnić, czym jest algorytm i jakie ma cechy
  • zapisać algorytm listą kroków, schematem blokowym i pseudokodem
  • opisać drogę od kodu źródłowego C++ do pliku wykonywalnego
  • wskazać zastosowania C++ i jego miejsce wśród języków programowania

Plan prezentacji

  1. Algorytm — przepis na rozwiązanie problemu
  2. Lista kroków, schemat blokowy, pseudokod, program
  3. Od kodu źródłowego do pliku .exe
  4. C++ — gdzie się go używa
  5. Najważniejsze informacje

Każda lekcja kończy się pytaniami kontrolnymi z odpowiedziami dla nauczyciela i testem jednokrotnego wyboru.

Kurs w praktyce

Egzamin INF.04

Kurs przygotowuje do dwóch egzaminów. Matura z informatyki (poziom rozszerzony) trwa 210 minut, za cały arkusz można uzyskać 50 punktów, z czego około 60% za analizę algorytmów i programowanie. Zdający pracuje przy komputerze: większość zadań rozwiązuje, pisząc program w wybranym języku programowania (C++ jest jednym z dopuszczonych), korzysta z dołączonych plików z danymi, a rozwiązanie bez komputerowej realizacji nie jest oceniane. Kwalifikacja INF.04 — Projektowanie, programowanie i testowanie aplikacji — w zawodzie technik programista ma część pisemną (60 minut, 40 zadań zamkniętych) i praktyczną (180 minut) — trzeba uzyskać co najmniej 50% punktów z części pisemnej i 75% z praktycznej. Szczegóły, w tym wykaz dopuszczonych języków i środowisk, CKE ogłasza co roku w komunikatach.

Potrzebne oprogramowanie

Kompilator C++ zgodny z C++17 — g++ (MinGW-w64) albo Visual Studio Community — oraz edytor z debugerem: Code::Blocks, Visual Studio Code z rozszerzeniem C/C++ lub Visual Studio. Wszystko bezpłatne.

Jak wygląda lekcja

Lekcja zaczyna się slajdem z celami. Potem idą slajdy z listingami i oczekiwanym wynikiem programu, pytania kontrolne z odpowiedziami dla nauczyciela i test na koniec. Każdy listing z funkcją main został skompilowany i uruchomiony, a wynik porównany z tym na slajdzie. Do każdej lekcji jest ćwiczenie przy komputerze z pięcioma zadaniami i kryterium sprawdzenia.

Materiały dodatkowe

Testy z kursu w aplikacji /testy (240 pytań w 12 testach), kartkówki z kluczem w trzech grupach do każdego działu (dodatek płatny).

Cena dostępu do kursu

1 miesiąc

19,99 zł
na próbę lub krótki projekt
Wybieram

3 miesiące

34,99 zł
11,66 zł miesięcznie
Wybieram

6 miesięcy

49,99 zł
8,33 zł miesięcznie
Wybieram

12 miesięcy

69,99 zł
5,83 zł miesięcznie
Wybieram

Ten kurs wchodzi też w skład pakietów:

Cena brutto za dostęp do tego kursu — sprzedawca nie jest podatnikiem VAT (zwolnienie podmiotowe). Płatność online przez dpay.pl, dostęp dostajesz zaraz po jej potwierdzeniu. Dostęp nie odnawia się sam.

Pytania o ten kurs

Dla kogo jest ten kurs?

Dla nauczyciela prowadzącego zajęcia — technik programista · kwalifikacja INF.04 i informatyka. Materiał wyświetlasz na tablicy lub rzutniku; uczniowie nie zakładają kont i nie podają żadnych danych.

Co dokładnie dostaję po zakupie?

Dostęp do całego kursu: 12 działów · 48 lekcji · 48 ćwiczeń · 291 slajdów · 384 pytania · 100 godzin. Materiał otwierasz w przeglądarce, niczego nie instalujesz.

Czy mogę zmieniać materiał pod swoją klasę?

Tak. Możesz ukrywać lekcje, slajdy i pytania, zmieniać kolejność, poprawiać treść i dopisywać własne slajdy. Zmiany widzisz tylko Ty, a materiał bazowy dalej dostaje poprawki.

Co się dzieje po zakończeniu okresu dostępu?

Przez 14 dni kurs jest dostępny do odczytu. Klasy, postęp i Twoje zmiany zostają zachowane — po odnowieniu wracają nietknięte.

Ile czasu zajmuje kurs?

100 godzin lekcyjnych. Przy 3 godzinach tygodniowo to około jednego roku szkolnego; w technikum zwykle rozkłada się go na dwa lata.

C++ czy Python?

Oba kursy obejmują algorytmy z podstawy programowej. C++ lepiej pokazuje typy, pamięć i kompilację i jest typowym wyborem na olimpiadach; Python jest łatwiejszy na start. Kursy można prowadzić równolegle.

Którego standardu C++ używa kurs?

C++17, z uwagami o nowościach C++20 tam, gdzie to przydatne.