# Przygotowania do matury ## Linki - https://tinyurl.com/dysk-matura-2023 - dysk - https://meet.google.com/ptf-fvyj-net - Konsultacje online (środa 18:00-18:30) - https://cplusplus.com/reference - kompendium wiedzy o języku C++ - https://www.algorytm.edu.pl/matura-informatyka - materiały do przygotowania do matury z informatyki ## Spotkania ### 2022-10-14 - Omówienie środowiska i sposobu pracy - Rozwiązywanie problemów programistycznych - Zadanie samodzielne: - Program obliczający średnią arytmetyczną znanej tablicy liczb #### Praca domowa - Przerobienie programu do obliczania średniej tak, aby używał plików tekstowych do pobierania danych wejściowych i zapisu wyników działania. ##### Uwagi do rozwiązania - Styl pisania kodu - Otwarcie i zamknięcie nawiasów klamrowych :information_source: Genralnie tak jest lepiej ```cpp= int main() { // kod programu } ``` niż tak: ```cpp= int main() { // kod programu } ``` - Wcięcia. Nie jest to błąd składniowy, ale znacznie poprawia czytelność, a co za tym idzie ułatwia wykrywanie błędów :warning: - Spacje przy operatorach dwuargumentowych. Nie jest to błąd składniowy, ale znacznie poprawia czytelność, a co za tym idzie ułatwia wykrywanie błędów :information_source: :heavy_check_mark: ```cpp= plik >> dlugosc; for(int j = 0; j < dlugosc; j++) { plik >> wartosc; suma += wartosc; } srednia = float(suma) / dlugosc; ``` :x: ```cpp= plik>>dlugosc; for(int j=0; j<dlugosc; j++) { plik>>wartosc; suma+=wartosc; } srednia=float(suma)/dlugosc; ``` - Dobrą praktyką jest trzymanie deklaracji zmiennych w jednym miejscu, najlepiej na początku programu :heavy_check_mark: ```cpp= fstream plik; fstream plikzapis; float srednia; int dlugosc = 0, suma = 0, wartosc = 0; plikzapis.open("srednia.txt"); plik.open("liczby.txt"); ``` :x: ```cpp= fstream plik; fstream plikzapis; float srednia; plikzapis.open("srednia.txt"); plik.open("liczby.txt"); int dlugosc = 0, suma = 0, wartosc = 0; ``` * Poprawność kodu * Pamiętaj, żeby zamykać otwarte strumienie ```cpp= int dlugosc=0, suma=0, wartosc=0; plikzapis.open("srednia.txt"); plik.open("liczby.txt"); plik >> dlugosc; for(int j=0; j<dlugosc; j++) { plik >> wartosc; suma += wartosc; } plik.close(); // <------------------- tego zabrakło srednia = float(suma) / dlugosc; plikzapis << "Suma liczb w pliku to: " << suma << endl; plikzapis << "Ilosc liczb w pliku to: " << dlugosc << endl; plikzapis << "Srednia z liczb w pliku to: " << srednia << endl; plikzapis.close(); // <----------- tego zabrakło ``` - [link](https://drive.google.com/file/d/1HgqValoiVQBg7jJU8Buu34k5hc0rrO-6/view?usp=sharing) do mojego kodu ### 2022-10-21 - Iteracja i rekurencja - Silnia - Potęgowanie - Ciąg Fibonacciego* - Algorytm Euklidesa - Działanie - Wersja iteracyjna i rekurencyjna #### Notatki - Opis algorytmu Euklidesa > Poniżej przedstawiono wersję obliczania NWD liczb a i b wykorzystującą operację reszty z dzielenia (modulo): > 1. Oblicz c jako resztę z dzielenia a przez b > 2. Zastąp a liczbą b, następnie b liczbą c > 3. Jeżeli wartość b wynosi 0, to a jest szukaną wartością NWD, w przeciwnym wypadku przejdź do kroku 1 - Zrealizowane zagadnienia: - Algorytmy iteraycjne i rekurencyjne - Mechanizm działania rekurencji - Implementacja algorytmów - Silnia (reurencyjnie i iteracyjnie) - Obliczanie n-tego wyrazu ciągu Fibonacciego (nie skończone) #### Praca domowa - Arkusz 1 - Zadanie 1.1 - Zadanie 1.2 - Zadanie 1.3 - [Rozwiązanie Jurka](https://drive.google.com/file/d/1gGaNFSa_8bsKKf_Delj8mrVw9ocjb5Ci/view?usp=sharing) ### 2022-10-28 #### Plan - Przegląd pracy domowej - Możliwości poprawy algorytmów - Elementy składniowe języka C++, które mogą być przydatne do rozwiązania zadania - Dokończenie zagadnień implementacji iteracji i rekurencji - N-ty wyraz ciągu Fibonacciego - Algorytm Euklidesa - Wyszukiwanie wartości w zbiorze nieuporządkowanym - Implementacja iteracyjna - Złożoność obliczeniowa #### Praca domowa - Jeszcze jedno podejście do Arkusza 1. #### Podsumowanie - Zagadnienia związane z implementacją rekurencji i podejściem do rozwiązywania zadań związanych z rekurencją zdominowały spotkanie. ### 2022-11-04 #### Plan - Przegląd pracy domowej - Omówienie algorytmów - Wyjaśnienie problemów i wspólna implementacja części niezrozumiałych - Przeszukiwanie zbiorów nieuporządkowanych - Wyszukiwanie elementu w zbiorze - Przeszukiwanie zbirów uporządkowanych - Wyszukiwanie binarne #### Praca domowa - Poprawki w algorytmach dotyczących rozwiązania Arkusza 1 #### Notatki - Nie udało się zrealizować przeszukiwania zbiorów. - Zdecydowana większość czasu spotkania została spożytkowana na omówienie implementacji rozwiązania do zadnia z Arkusza 1 ### 2022-11-11 #### Plan - Przegląd pracy domowej (Arkusz 1 - liczby szczęśliwe) - Wyszukiwanie wartości w tablicy - Rozwiązanie trywialne z użyciem prostej pętli - Omówienie algorytmu przeszukiwania binarnego dla uporządkowanych tablic #### Praca domowa - Zadanie 1.1 z Arkusza - liczby palindromiczne - Rozszerzenie programu wykonanego na zajęciach o wyszukiwanie przy pomocy algorytmu wyszukiwania binarnego ### 2022-11-18 #### Plan - Przegląd implementacji przeszukiwania binarnego - Konwersja liczb między różnymi systemami liczbowymi - Implementacja konwersji na system szesnastkowy - Obsługa łańcuchów znaków w C++ #### Praca domowa - Rozwiązanie zadania 1.3 z arkusza maturalnego (liczby palindromiczne) ### 2022-12-06 ### Plan - Przegląd rozwiązań próbnej matury z informatyki ### Praca domowa - Zadanie 3.2 - Zadanie 3.3 #### 2022-12-11 (konsultacje online) ### Plan - Przegląd pracy domowej z 2022-12-06 - Omówienie sposobu rozwiązania zadania 2.4 z matury próbnej - Drzewa - reprezentacja i przeszukiwania ### Praca domowa - Implemnetacja rozwiązania zadania 2.4 #### 2022-12-13 ### Plan - Omówienie rozwiązania zadania 2.4 ### Praca domowa