---
# System prepended metadata

title: Materiały do Matury z Informatyki

---

# Materiały do Matury z Informatyki
[TOC]
## Podstawy Programowania

### Pycharm
[Instalacja PyCharm](https://www.youtube.com/watch?v=NN5Pht2FRWs)
### Kurs
[Cały kurs pythona](https://www.youtube.com/watch?v=NN5Pht2FRWs&list=PLdBHMlEKo8UcOaykMssI1_X6ui0tzTNoH)
*1 - 8* - **podstawy**
*9 - 12* - bardziej zaawansowane podstawy
*13* - **bardzo ważne**
*14* - raczej niepotrzebne do matury 
*15* - **bardzo ważne**
*16* - raczej niepotrzebne do matury 
*17* - przydatne 
*18 - 20* - nie potrzebne do matury ale **warto wiedzieć**
*21 -22* - dla ciekwaskich 



* [typy zmiennych](https://www.learnpython.org/pl/Zmienne_i_typy) **odc.3**
![](https://i.imgur.com/YFU2xuv.png)
o liście(list), krotce(tuple), tablicy(array) będzie w następnych odcinkach
* kodowanie znaków - [ASCII](https://pl.wikipedia.org/wiki/ASCII) **odc.3**

| Function | Description |
| -------- | ----------- |
| chr() | Converts an integer to a character |
|ord()|Converts a character to an integer |
|len()|Returns the length of a string|
|str()|Returns a string representation of an object|
* **logika Boolowska/algebra Boola**
W logice Boolowskiej istniej tylko dwie wartości (prawda/fałsz)(1/0) [prezentacja](http://www-users.mat.umk.pl/~zssz/nsi2013/ab.pdf) prawo de morgana przyda ci się na maturę z matmy 
![](https://i.imgur.com/dgHJnfj.png)
zdania po obejrzejniu danych odcinków
- [1-7 zadania łatwe](https://docs.google.com/document/d/19Ub7inYmBP8mJXLH9DHCyGtydRV4S3n1No3Sn3GPoCA/edit?usp=sharing) 
- [1-8 trudne](https://docs.google.com/document/d/1lgRvLLmCtMNq6mKtSBBcaHb8bkY1KA-Tnk-uSVmgXIk/edit?usp=sharing) (na pl.spoj.com możesz sprawdzić swój kod)
- 
## Przydatne funkcje 
[stronka (nie sprawdzałem wszytkiego ale wygląda legit) ](https://www.korepetycjezinformatyki.pl/przydatne-funkcje-w-jezyku-python/)
[split()](https://www.w3schools.com/python/ref_string_split.asp)
[sort()](https://www.w3schools.com/python/ref_list_sort.asp)
[revers()](https://www.programiz.com/python-programming/methods/list/reverse)
[range() dla fora](https://snakify.org/pl/lessons/for_loop_range/)
[format()](https://pyformat.info/) - ucz się tylko nowych plus jest tam dużo za dużo rzeczy. Ważne to jest wkładanie coś w śodek tekstu i formatowanie np. wyświetlanie tylko dwóch liczb po przecinku...
[enumerate()](https://book.pythontips.com/en/latest/enumerate.html)



## Systemy liczbowe 

### system binarny (Dwójkowy)
Nie mówiliśmy o dzieleni więc tu jest filmik jak to robić(podobnie jak w dziesiętnym): 
**[dzielenie](https://www.youtube.com/watch?v=59SLPMkHnZg)**

[zadania na system binarne na dole strony](https://eduinf.waw.pl/inf/alg/006_bin/0012.php)

[przekrztałcanie z liczby dziesiętnej na inne](https://www.youtube.com/watch?v=VUHwfugYFEA)
Mirosław Zelent to Polska legend informatyki(większość inforamtyków uczyła się z jego poradników)

[zadania na programowanie](https://docs.google.com/document/d/1oa3-tuORcKKUJRM-kX5Wxay_SUVXy_uvJe3rt2R-Kd8/edit?usp=sharing)




### pamięć komputera

<table style="border: 1px solid #aaaaaa; background-color: #f9f9f9; color: black; margin-bottom: 0.5em; margin-left: 1em; padding: 0.2em; float: right; clear: right; text-align: center;">
<tbody><tr>
<th colspan="6" style="background-color:#ccf;">Wielokrotności <a href="/wiki/Bajt" title="Bajt">bajtów</a>
</th></tr>
<tr>
<th colspan="3" style="background-color: #ddf;"><a href="/wiki/Przedrostek_SI" title="Przedrostek SI">Przedrostki dziesiętne</a><br>(<a href="/wiki/Uk%C5%82ad_SI" title="Układ SI">SI</a>)
</th>
<th colspan="3" style="background-color: #ddf;"><a href="/wiki/Przedrostek_dw%C3%B3jkowy" title="Przedrostek dwójkowy">Przedrostki binarne</a><br>(<a href="/wiki/Przedrostek_dw%C3%B3jkowy" title="Przedrostek dwójkowy">IEC 60027-2</a>)
</th></tr>
<tr>
<th>Nazwa</th>
<th>Symbol</th>
<th>Mnożnik
</th>
<th>Nazwa</th>
<th>Symbol</th>
<th>Mnożnik
</th></tr>
<tr>
<td style="text-align:left;text-indent:1em"><a class="mw-selflink selflink">kilobajt</a></td>
<td>kB</td>
<td>10<sup>3&nbsp;&nbsp;</sup> = 1000<sup>1</sup>
</td>
<td style="text-align:left;text-indent:1em"><a class="mw-selflink selflink">kibibajt</a></td>
<td>KiB</td>
<td>2<sup>10</sup> = 1024<sup>1</sup>
</td></tr>
<tr>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Megabajt" title="Megabajt">megabajt</a></td>
<td>MB</td>
<td>10<sup>6&nbsp;&nbsp;</sup> = 1000<sup>2</sup>
</td>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Megabajt" title="Megabajt">mebibajt</a></td>
<td>MiB</td>
<td>2<sup>20</sup> = 1024<sup>2</sup>
</td></tr>
<tr>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Gigabajt" title="Gigabajt">gigabajt</a></td>
<td>GB</td>
<td>10<sup>9&nbsp;&nbsp;</sup> = 1000<sup>3</sup>
</td>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Gigabajt" title="Gigabajt">gibibajt</a></td>
<td>GiB</td>
<td>2<sup>30</sup> = 1024<sup>3</sup>
</td></tr>
<tr>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Terabajt" title="Terabajt">terabajt</a></td>
<td>TB</td>
<td>10<sup>12</sup> = 1000<sup>4</sup>
</td>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Terabajt" title="Terabajt">tebibajt</a></td>
<td>TiB</td>
<td>2<sup>40</sup> = 1024<sup>4</sup>
</td></tr>
<tr>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Petabajt" title="Petabajt">petabajt</a></td>
<td>PB</td>
<td>10<sup>15</sup> = 1000<sup>5</sup>
</td>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Petabajt" title="Petabajt">pebibajt</a></td>
<td>PiB</td>
<td>2<sup>50</sup> = 1024<sup>5</sup>
</td></tr>
<tr>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Eksabajt" title="Eksabajt">eksabajt</a></td>
<td>EB</td>
<td>10<sup>18</sup> = 1000<sup>6</sup>
</td>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Eksabajt" title="Eksabajt">eksbibajt</a></td>
<td>EiB</td>
<td>2<sup>60</sup> = 1024<sup>6</sup>
</td></tr>
<tr>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Zettabajt" title="Zettabajt">zettabajt</a></td>
<td>ZB</td>
<td>10<sup>21</sup> = 1000<sup>7</sup>
</td>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Zettabajt" title="Zettabajt">zebibajt</a></td>
<td>ZiB</td>
<td>2<sup>70</sup> = 1024<sup>7</sup>
</td></tr>
<tr>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Jottabajt" title="Jottabajt">jottabajt</a></td>
<td>YB</td>
<td>10<sup>24</sup> = 1000<sup>8</sup>
</td>
<td style="text-align:left;text-indent:1em"><a href="/wiki/Jottabajt" title="Jottabajt">jobibajt</a></td>
<td>YiB</td>
<td>2<sup>80</sup> = 1024<sup>8</sup>
</td></tr></tbody></table>

## Liczby Pierwsze 
**Liczba pierwsza** - liczba posiadająca dokładnie dwa dzielniki
[Zadania](https://docs.google.com/document/d/1-ZJQQ6oj1HlKUDJXHkvybr7EbKpLi7Sn3GLXQ-A5TJA/edit?usp=sharing)
### sito erastotenesa 

![](https://upload.wikimedia.org/wikipedia/commons/b/b9/Sieve_of_Eratosthenes_animation.gif)


## Liczby doskonałe 
[Definicja liczb dokskonałych](https://www.matemaks.pl/liczby-doskonale.html)

### Mniejsze programy 
* sprawdzanie czy liczba tto dzielnik
* wypisanie wyszystkich dzielników liczby
* dodawanie cyfr liczby 
### Kod

```python
suma = 0
x = input("Podaj liczbę")
for i in range(2,x-1):
    if x%i == 0:
        suma +=i

if suma == x:
    print( "{} JEST liczbą doskonałą".format(x) )
else:
    print( "{} NIE JEST liczbą doskonałą".format(x) )

```

## Rozkładanie liczby na czynniki pierwsze
zastanów się i napisz program rokładający liczbę na czynniki pieirwsze. Zastanów się nad tym jak wyświetlić wynik np.
* x = 2^3 + 5^15 + 7
* x = 2\*2+5*5\*5\*5\*5\*5\*5\*5+7

## Funkcje
Funkcje to takie małe programy 
**przykład:**
```python=
def dodawanie(a,b):
    wynik = a + b
    return wynik
``` 
Funkcje definuje się przez słowo ```def``` a następnie podaje się nazwa funkcji ``` def nazwa_funkcji()``` w nawiasach podajemy argumenty funkcji ```def nazwa_funkcji(argument1,argument2,argument3...)``` ilość argumentów defniowana jest przez programistę. Można stworzyć funkcję bez argumentów. 
**Podpowiedź:** jeśli nie wiadomo ile argmuentów będzie podanych np. w sortowaniu listy. to zamiast podawać oddzielnie elemety. można jako argument podać listę. 

Słowo ```return``` oznacza zwracanie, w tamty miejscu funkcja zwróci wynik i przestanie się wykonywać. Jest to analogiczne do funkcji matematycznych np. sin(x) zwraca pewną wartość, tak samo funkcja w programowaniu. W liceum uczymy się, że fukcja zwraca jedną wartość, jednak to nie prawda; jest wiele funkcji w matematyce które zwracją kilka wartości(listę wartości), albo nawet nie musi być to liczba, a ciąg znaków.
(funkcja nie musi nic zwracać, może np. coś zmieniać, lub wyświetlać)



Przykład wykorzystania funkcji w większym programie:
```python=
def dodawanie(a,b):   #defnicja dodawnia
    wynik = a + b
    return wynik
def wyswietlanie(liczba, zmienna):    #defnicja wyświetlania
    tekst = "zmienna {} równa się {}".format(zmienna, liczba)
    print(tekst)

x = 5
y = 6 
z = 0 
wyswietlanie(x, 'x')   #wykorzystnie funkcji wyswietlanie(liczba, zmienna)
wyswietlanie(y, 'y')
wyswietlanie(z, 'z')
z = dodawanie(x,y)    #wykorzystanie funkcji dodawanie(a,b)
wyswietlanie(x, 'x')
wyswietlanie(y, 'y')
wyswietlanie(z, 'z')
```

* jeśli czujesz, że potrzebujesz zadania do ogarnięcia tematu to napisz jakiś program ze spoja, upraszczając kod funkcjami

**Po co używa funkcji?**
są dwa główne powody dla których używa się funkcji:
1. Aby nie powtarzać kodu. zamiast pisać/kopiować ten sam kod kilka razy można stworzyć funkcję i użyć jej wiele razy. Jest to szybszy sposób napisanie programu oraz ułatwia robienie poprwek, ponieważ wystarczy zmienić to w jednym miejscu, a nie  w każdy skopiowanym.
2. Aby łatwiej było domyśłić się co ten kod robi(czytelność kodu). Narazie nikt twojego kodu nie będzie czytał oprócz mine i egzaminatorów i nie jest to skomplikowany, także nie jest to duży problem. Jednak programiści pracują w grupach i ważne jest by osoba czytająca nie musiała spędzać 2h żeby zrozumieć co się dzieje w kodzie. Też czasem wraca się do swojego kodu który napisało się np. kilka miesięcy wcześniej i znów trzeba ogarniać co tam się napisało.(to samo tyczy się nazw zmiennych)

przykład:

```python=
def update_state(per1,per2):
    x = per1.wep.dmg    
    y = per1.strong
    z = per2.def
    per2.dealdmg(x+y-z)
```
można się domyślać o co chodzi i ostatecznie jest się wstanie ogarnąć xo robi kod ale jest ot trudne

```python=
def deal_damage(ataker,defender):
    weapon_damage = ataker.weapon.damage    
    personal_strenght = atacker.point_of_strength
    
    damage = weapon_damage + personal_strength
    
    defence = defender.point_of_defence
    defender.reduce_hp( damge - defence)
```
tutaj dużo łatwiej zrozumieć co się dzieje, nawet jak nie jest się wprowadzonym do projektu. 




### Rekurencja 
Mówimy o krekurencji jeśli w definicji funkcji znajduję się ona sama np. 
```python=
def funkcja_rec(a,b)
    print(a)
    funkcja_rec(b,a)
```
jeśli prześłedzimy te funkcje to zauważymy że ona nigdy się nie wykona do końca bo cały czas wykonuje sama siebie. 
**Pytanie: co ta funkcja będzie wyświetlać?** 

najbardziej znane rekurencje to [ciąg Fibonacciego](https://pl.wikipedia.org/wiki/Ci%C4%85g_Fibonacciego) oraz [algorytmu Euklidesa](https://pl.wikipedia.org/wiki/Algorytm_Euklidesa) 

### Ciąg Fibonacciego
https://ddeby.pl/blog/implementacja-ciagu-fibonacciego-w-python

Napisz Dwa programy wypisującą n'tą liczbę fibonacciego:
- intefacyjną(Od początku do końca) 

- rekurencyjną (od Końca do początku)

Rekurencyjna część jest bardziej skomplikowana.
[Materiały do rekurencji](https://youtu.be/UBMiqy69RoM)



### Algorytmu Euklidesa
[Teoria](https://youtu.be/Mt-qP7-V6oU) 

[Praktyka](https://youtu.be/yYrtZs1v5cw) 
## słowniki/mapy


## Algorytmy 

### algorytmy na liczbach całkowitych, np.:
- [x] reprezentacja liczb w dowolnym systemie pozycyjnym, w tym w dwójkowym i szesnastkowym,
- [x] sprawdzanie, czy liczba jest liczbą pierwszą,
- [x] sprawdzanie, czy liczba jest liczbą doskonałą
- [x] rozkładanie liczby na czynniki pierwsze,
- [x] iteracyjna i rekurencyjna realizacja algorytmu Euklidesa,
- [x] iteracyjne i rekurencyjne obliczanie wartości liczb Fibonacciego,
- [x] wydawanie reszty metodą zachłanną
### lgorytmy wyszukiwania i porządkowania (sortowania),np.:
- [x] jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze: algorytm naiwny i optymalny,
- [x] algorytmy sortowania ciągu liczb: bąbelkowy, przez wybór, przez wstawianie liniowe lub binarne, przez scalanie, szybki, kubełkowy,
### algorytmy numeryczne,np.:
- [ ] obliczanie wartości pierwiastka kwadratowego,
- [ ] obliczanie wartości wielomianu za pomocą schematu Homera,
- [ ] zastosowania schematu Homera: reprezentacja liczb w różnych systemach liczbowych, szybkie podnoszenie do potęgi,
- [ ] wyznaczanie miejsc zerowych funkcji metodą połowienia,
- [ ] obliczanie pola obszarów zamkniętych metodą trapezów i prostokątów
### algorytmy na tekstach,np.:
- [x] sprawdzanie, czy dany ciąg znaków tworzy palindrom, anagram,
- [ ] porządkowanie alfabetyczne, (leksykograficzne)
- [x] wyszukiwanie wzorca w tekście,
- [x] obliczanie wartości wyrażenia podanego w postaci odwrotnej notacji polskiej,
### algorytmy kompresji i szyfrowania,np.:
- [ ] kody znaków o zmiennej długości, np. alfabet Morse'a, kod Huffmana,
- [x] szyfr Cezara,
- [ ] szyfr przestawieniowy,
- [ ] szyfr z kluczem jawnym (RSA),
- [ ] wykorzystanie algorytmów szyfrowania, np. w podpisie elektronicznym,
### algorytmy badające własności geometryczne,np.:
- [x] sprawdzanie warunku trójkąta,
- [ ] badanie położenia punktów względem prostej,
- [ ] badanie przynależności punktu do odcinka,
- [ ] przecinanie się odcinków,
- [ ] przynależność punktu do obszaru,
- [ ] konstrukcje rekurencyjne: drzewo binarne, dywan Sierpińskiego, płatek Kocha;

# Zadania 
[link](https://docs.google.com/document/d/1gbnc9kejR1iXiyKmUXEO5H1G2yByLCrEl6-i4z8fv94/edit?usp=sharing)

# Excel 

[podstawy](https://www.youtube.com/watch?v=vDig2c7hbWw&t=6s) - prawdopodobnie znasz
[funkcje](https://www.youtube.com/watch?v=xo0KqBB_Ekw)
[video 1 ](https://www.youtube.com/watch?v=de44MtdIlw4)
[video 2 ](https://www.youtube.com/watch?v=M9Xq70cug80&t=472s)

wymagania: 
- importowanie danych do excel 
- znajomość funkcji MAX,MIN, SUMA,Jeżeli itd.
- podstawowe działanie z dużymi danymu 
- tworzenie wykresów

# Access

wymaganie:
 - rozumienie bazy 
 - rozumienie tabel 
 - kwerendy 
 - podstawowa znajomość SQL'a
 - relacje 
 - importowanie bazy z plików
 - klucz główny 
 - funkcje 
 - grupowanie 
[video 1](https://www.youtube.com/watch?v=_xGnuzcEaao)

[dosyć dokładnie opisane zadanie](https://www.youtube.com/watch?v=F8FaiQyDKOc)

[tłumaczenie relacji](https://www.youtube.com/watch?v=EzVZ-i1PCEc)

[2020](https://www.youtube.com/watch?v=zcrlDt64gjE)