BitEdu - liceum i technikum
INF.04
Lekcje otwarte możesz czytać od razu. Materiały oznaczone kontem zawierają zadania, kod lub pliki przeznaczone dla przypisanych uczniów.
Programowanie konsolowe (C#)
Wprowadzenie do C# i pierwszy program
Ten dział to fundament pod wszystko inne w INF.04 — te same podstawy C#, których nauczysz się tutaj w prostej aplikacji konsolowej, wykorzystasz później budując okna w WPF, ekrany w .NET MAUI i strony w ASP.NET Core. Warto je dobrze zrozumieć raz, na najprosts...
Systemy liczbowe — dwójkowy, ósemkowy, szesnastkowy i kod U2
Komputer "myśli" wyłącznie w zerach i jedynkach — każda liczba, znak i instrukcja w programie jest w pamięci zapisana binarnie. Bez zrozumienia systemów liczbowych trudno pojąć, dlaczego int ma ograniczony zakres, czym różni się liczba ujemna od dodatniej "w ś...
Zmienne i typy danych w C#
Każdy program, nawet najprostszy, musi gdzieś przechowywać dane — wiek ucznia, cenę produktu, imię klienta. Zmienne to pudełka, w których program trzyma te informacje, żeby mógł ich użyć później. Bez zmiennych nie da się napisać niczego sensownego — ani kalkul...
Operatory w C#
Bez operatorów program może co najwyżej wypisać stały tekst — operatory to narzędzie, dzięki któremu program faktycznie coś OBLICZA i PORÓWNUJE, co jest fundamentem każdej decyzji podejmowanej w kodzie (Lekcja 6).
Instrukcje warunkowe (if, else, switch)
Program, który zawsze robi dokładnie to samo niezależnie od danych wejściowych, jest mało użyteczny — instrukcje warunkowe to pierwszy krok w stronę programu, który REAGUJE na różne sytuacje, tak jak zrobi to każda prawdziwa aplikacja, którą zbudujesz w tym ku...
Pętle (for, while, do-while, foreach)
Bez pętli powtórzenie tej samej operacji 100 razy wymagałoby napisania jej 100 razy z osobna. Pętle to jeden z najczęściej używanych elementów w każdym programie — od prostego licznika po przetwarzanie tysięcy rekordów z bazy danych.
Metody i przeciążanie
Bez metod cały program musiałby być zapisany jako jeden ciąg instrukcji w Main() — nieczytelny i niemożliwy do ponownego wykorzystania. Metody to pierwszy krok w stronę dzielenia dużego problemu na mniejsze, zarządzalne fragmenty — dokładnie tak, jak zaczniesz...
Tablice i kolekcje (List, Dictionary)
Prawdziwe programy niemal zawsze operują na WIELU danych naraz — liście filmów, klientów, produktów w koszyku. Bez tablic i kolekcji musiałbyś tworzyć osobną zmienną dla każdego elementu, co jest niepraktyczne już przy kilku elementach, a niemożliwe przy setka...
Praca z plikami (TXT i JSON)
To domknięcie działu fundamentów — bez zapisu do pliku każdy program "zapomina" wszystko po zamknięciu. Format JSON, którego się tutaj nauczysz, wykorzystasz jeszcze wielokrotnie: w aplikacjach mobilnych .NET MAUI (zapis danych lokalnie) i w komunikacji z serw...
Wprowadzenie do programowania obiektowego — klasy i obiekty
To jest moment zwrotny całego działu — programowanie obiektowe to fundament, na którym zbudowane są WSZYSTKIE technologie, których nauczysz się dalej w INF.04: okna WPF, ekrany .NET MAUI i kontrolery ASP.NET Core to wszystko klasy i obiekty. Zrozumienie tej le...
Pola, metody i hermetyzacja (enkapsulacja)
Hermetyzacja to jedna z czterech głównych zasad programowania obiektowego (obok dziedziczenia, polimorfizmu i abstrakcji) i pierwsza linia obrony przed błędami — klasa sama pilnuje, żeby jej dane zawsze były w poprawnym, sensownym stanie, niezależnie od tego,...
Konstruktory (zwykły i kopiujący) i destruktor
Bez konstruktora tworzenie w pełni wypełnionego obiektu wymaga kilku osobnych linii kodu za każdym razem, co jest niewygodne i łatwo o pomyłkę (np. zapomnienie ustawienia jednego pola). Konstruktor gwarantuje, że obiekt od razu "rodzi się" w poprawnym, komplet...
Dziedziczenie i klasy pochodne
Dziedziczenie eliminuje powtarzanie tego samego kodu w wielu podobnych klasach — jedna z czterech głównych zasad OOP, obok hermetyzacji (Lekcja 11), polimorfizmu (Lekcja 14) i abstrakcji (Lekcja 15), i jeden z najczęściej sprawdzanych tematów na egzaminie INF....
Polimorfizm i metody wirtualne
Polimorfizm to trzecia z czterech głównych zasad OOP (po hermetyzacji i dziedziczeniu) i jeden z tematów, w których uczniowie najczęściej czują się niepewnie na egzaminie — a jednocześnie jedna z najbardziej praktycznych technik, eliminująca długie łańcuchy wa...
Klasy abstrakcyjne i interfejsy
Klasy abstrakcyjne i interfejsy to narzędzia PROJEKTOWANIA dobrego kodu — wymuszają na programistach (także na Tobie samym za kilka miesięcy) konsekwentne implementowanie wymaganych zachowań, zamiast polegać na pamięci czy dokumentacji.
Obsługa wyjątków (try, catch, throw, finally)
Prawdziwe aplikacje, z jakimi zetkniesz się na egzaminie i w pracy, muszą działać niezawodnie nawet przy błędnych danych wejściowych — program, który "wywala się" na pierwszym literówce użytkownika, nie nadaje się do użytku. Obsługa wyjątków to profesjonalny s...
Klasy generyczne (szablony klas)
Generyki to mechanizm, z którego korzystałeś już wielokrotnie (List, Dictionary), nie wiedząc jeszcze, jak dokładnie działa — ta lekcja odsłania tę "kuchnię" i pokazuje, jak tworzyć własne, elastyczne klasy działające dla dowolnego typu danych, bez powielania...
Wzorce projektowe — Metoda szablonowa, Fasada, Kompozyt
Wzorce projektowe to sygnał dla oceniającego (nauczyciela, egzaminatora, przyszłego pracodawcy), że rozumiesz nie tylko SKŁADNIĘ C#, ale też jak dobrze ORGANIZOWAĆ kod w większych projektach — to wiedza, która odróżnia programistę piszącego działający kod od p...
Projekt końcowy — system wypożyczalni w konsoli
Pojedyncze umiejętności — klasa, dziedziczenie, wyjątek — to jedno. Prawdziwa wartość pojawia się dopiero wtedy, gdy złożysz je w jeden, spójny, DZIAŁAJĄCY program — dokładnie tak, jak wygląda zadanie praktyczne na egzaminie INF.04 i jak wygląda prawdziwa prac...
Rekurencja
Niektóre problemy naturalnie definiuje się "przez samego siebie" — silnia liczby, przeszukiwanie folderów i podfolderów na dysku, przechodzenie po drzewie komentarzy pod postem, algorytm dziel-i-zwyciężaj. Rekurencja to metoda pisania takich rozwiązań: funkcja...
Struktury (struct) w C#
Podstawa programowa (INF.04.3.2) wymaga umiejętności posługiwania się "rekordami" — czyli złożonymi typami danych grupującymi kilka wartości w jedną paczkę. W C# taką rolę pełni struct. To lekki sposób na opisanie "punktu na mapie", "koloru RGB" czy "daty" bez...
Metody rozwiązywania problemów — schematy blokowe i pseudokod
Zanim napiszesz linijkę kodu, warto rozrysować rozwiązanie na kartce. Schemat blokowy i pseudokod to dwa uniwersalne "języki", w których zapiszesz algorytm niezależnie od tego, czy potem zaimplementujesz go w C#, Pythonie czy jakimkolwiek innym języku. Podstaw...
Algorytmy szyfrowania i tekstowe (szyfr Cezara, GADERYPOLUKI)
Podstawa programowa (INF.04.3.3) wymienia wprost "algorytmy tekstowe" i "algorytmy szyfrowania" jako coś, co trzeba umieć zaimplementować. To też świetny sposób na przećwiczenie pracy z tekstem (string) w C# — indeksowanie znaków, kody ASCII, pętle po znakach...
Złożoność obliczeniowa (notacja Big O)
Ten sam problem można rozwiązać na wiele sposobów — jedne będą szybkie dla 10 elementów, ale "położą" program przy 10 milionach elementów, inne będą działać płynnie niezależnie od rozmiaru danych. Złożoność obliczeniowa to sposób opisania, jak czas działania (...
Algorytmy zachłanne i heurystyki — problem komiwojażera
Nie każdy problem da się rozwiązać "idealnie" w rozsądnym czasie — czasem jedyną realną opcją jest strategia, która w każdym kroku wybiera to, co wygląda najlepiej TERAZ, bez analizowania całości. To właśnie podejście zachłanne (greedy) i heurystyki — wymagane...
Algorytmy sortowania (bąbelkowe, przez wstawianie, szybkie)
Sortowanie to jeden z najczęściej wykonywanych algorytmów w informatyce — listy produktów wg ceny, wyniki wyszukiwania wg trafności, ranking graczy. Podstawa programowa (INF.04.3.4) wymaga znajomości konkretnych algorytmów sortowania, a nie tylko wywołania got...
Algorytmy wyszukiwania (liniowe i binarne)
Wyszukiwanie elementu w zbiorze danych to jedna z najczęstszych operacji w programowaniu — szukanie użytkownika po ID, produktu po nazwie, słowa w słowniku. Podstawa programowa (INF.04.3.4) wymaga znajomości dwóch podejść o zupełnie różnej wydajności: wyszukiw...
Projektowanie aplikacji — UML, diagram klas, architektura klient-serwer
Zanim napiszesz pierwszą linijkę kodu większej aplikacji, warto zaprojektować jej strukturę na papierze. Podstawa programowa (INF.04.3.6) wymaga umiejętności projektowania aplikacji — analizy wymagań, projektowania interfejsu, doboru architektury. Diagram klas...
Planowanie przedsięwzięcia — metodyki pracy i narzędzia (Agile, Git, Jira/Trello)
Programowanie w zespole to nie tylko pisanie kodu — to też planowanie pracy, dzielenie zadań i śledzenie postępów. Podstawa programowa (INF.04.3.5 i INF.04.3.7) wymaga znajomości metodyk pracy zespołowej i narzędzi do zarządzania projektem — to wiedza przydatn...
Prawo autorskie w programowaniu
Kod, który piszesz, muzyka której słuchasz podczas pracy, obrazki które wykorzystujesz w aplikacji — wszystko to podlega prawu autorskiemu. Podstawa programowa (INF.04.3.9) wymaga znajomości podstaw prawa autorskiego w kontekście programowania. To wiedza, któr...