Matura z informatyki – dlaczego Python jest najlepszym wyborem? | Korepetycje do matury z informatyki - Maurycy Gast

Matura z informatyki – dlaczego Python jest najlepszym wyborem?

Matura z informatyki jest bardzo nietypową maturą. Jest ona bowiem podzielona na dwie części – praktyczną oraz teoretyczną. Sama wiedza teoretyczna niestety nie wystarczy – musimy mieć wypracowane odpowiednie techniki, sposoby działania oraz usystematyzowaną wiedzę.

Na maturze z informatyki walczymy bowiem nie tylko z postawionymi przed nami zadaniami, ale przede wszystkim z czasem.  Informatyka w liceum czasami pozostawia nam pewne braki nie tyle w wiedzy, co w metodyce rozwiązywania zadań. Uczniowie często nie maja problemu z rozwiązaniem zadania, co z zmieszczeniem się w limicie czasu. Jak upewnić się, że półtorej godziny nam wystarczy?

Wybór języka programowania

Programowanie na maturze potencjalnie może zająć nam najwięcej czasu na części praktycznej. Oczywistym elementem przygotowania jest opanowanie wszystkich algorytmów do perfekcji. Po przeczytaniu zadania powinniśmy od razu wiedzieć, w jaki sposób powinniśmy je rozwiązać.

Jednak nawet rozległa wiedza o algorytmach nic nam nie da, jeżeli nie będziemy w stanie zaimplementować ich w języku programowania. Do matury dopuszczone są trzy języki: C++, Java oraz Python. Każdy z tych języków ma oczywiście swoje słabe i mocne strony, i wszystkie z nich są powszechnie używane przez programistów. Na maturze nie musimy jednak przejmować się takimi kwestiami jak organizacja kodu długiego na kilka tysięcy linijek, wydajność działania czy przenośność kodu. Dla nas liczy się jedna cecha: łatwość języka.

W tej kategorii zwycięzca jest tylko jeden – jest nim Python. Nie dość, że sama składnia języka jest nieporównywalnie prostsza od tej znanej z C++a czy Javy, Python oferuje ogromną wbudowaną funkcjonalność, z której możemy korzystać na maturze. Ponadto, deklarując zmienne w tym języku nie musimy z góry narzucać im typów – to znaczne ułatwienie przy pracy pod presją czasu.

Porównanie możliwych języków programowania

Rozważmy przykładowe zadanie. Nie jest ono co prawda typu maturalnego, lecz wystarczy ono nam do zademonstrowania jak diametralnie różnią się rozwiązania w tych trzech językach. W naszym zadaniu mamy zadeklarowaną tablicę (czyli listę) liczb całkowitych. Chcemy pozbyć się z niej wszystkich duplikatów, a następnie posortować jej elementy w kolejności rosnącej. Na koniec wynik musimy oczywiście wypisać.

Spójrzmy na rozwiązanie tego problemu w języku Java.

import java.util.Arrays;
import java.util.TreeSet;

public class Main
{
	public static void main(String[] args)
	{
		Integer[] ary = {10, 15, 20, 30, 50, 10, 11, 13, 10, 20, 30};

		TreeSet set = new TreeSet<>(Arrays.asList(ary));
		for(int x: set)
		{
			System.out.print(x+" ");
		}
	}
}

 

Widzimy, że to rozwiązanie jest długie. Nawet jeżeli rozumiemy i jesteśmy w stanie napisać każdą linijkę, nadal musimy fizycznie napisać ten kod. Musimy też pamiętać o tzw. boilerplate code, czyli fragmentach kodu które muszą zawsze znajdować się w naszym kodzie, choć niespecjalnie zmieniają jego zachowanie – jak chociażby zawarcie naszej funkcji w klasie Main.

Podobnie sprawa ma się z rozwiązaniem w języku C++:

#include <iostream>
#include <set>
using namespace std;

int main()
{
    int ary[] = {10, 15, 20, 30, 50, 10, 11, 13, 10, 20, 30};

    int sizeAry = sizeof(ary)/sizeof(int);

    set arySet(ary, ary+sizeAry);

    for(auto x: arySet)
        cout << x << " ";

    return 0;
}

 

Tutaj sprawy mają się nieco lepiej, lecz nadal musieliśmy napisać relatywnie dużo kodu. Pamiętajmy też o tym, że C++ nie oferuje nam opcji odczytania rozmiaru tablicy w sposób bezpośredni. Jesteśmy zatem zmuszeni korzystać z różnych okrężnych sposobów, a w rzadkich sytuacjach możemy po prostu policzyć elementy samemu.

 

Co na to Python? Otóż…

 

ary = [10, 15, 20, 30, 50, 10, 11, 13, 10, 20, 30]

print(sorted(list(set(ary))))

 

To tyle. Naprawdę. Wystarczyły nam dwie linijki, z których jedna jest zapisem naszej tablicy. Takie różnice mogą pomóc nam zyskać cenne sekundy na maturze, które możemy spożytkować na rozwiązanie pozostałych zadań.

 

Wspomniana wcześniej funkcjonalność Pythona, której C++ i Java nie oferują (bez potrzeby napisania jej własnoręcznie) to między innymi:

  1. slicing, czyli bardziej rozbudowany sposób uzyskiwania dostępu do elementów tablic pozwalający chociażby brać ich wycinki, czy zwrócić tablicę od końca (szczególnie przydatne przy zadaniach maturalnych w których pracujemy na łańcuchach znaków)
  2. boilerplate code ograniczony do absolutnego minimum, przez co możemy skoncentrować się na rozwiązywaniu problemu a nie na pisaniu niepotrzebnego kodu
  3. dynamiczne typowanie zmiennych, które pozwala nam pominąć typy zmiennych podczas ich deklaracji
  4. liczne funkcje takie jak set(), sorted(), int() czy list(), które implementują wszystkie potrzebne nam operacje takie jak sortowanie danych, usuwanie duplikatów, szybką konwersję między typami i wiele innych
  5. Niesamowicie użyteczne słowo kluczowe in, które pozwala nam od razu sprawdzić, czy lista zawiera podany element; nie musimy zatem przeszukiwać całej listy własnoręcznie
  6. dodawanie elementów do zwykłych tablic, w Pythonie nazywanych listami. C++ oferuje nam std::vector, którego składnia jest bardzo podobna do „surowych” tablic, jednak nieco się różni. Java oferuje nam interfejs List, który niestety wymaga opanowania bardzo odmiennej składni od tej znanej nam z tablic.

 

Podsumowując: nawet jeżeli umiemy na pewnym poziomie język C++ bądź Java, na maturze i tak powinniśmy wybrać Pythona. Opanowanie tego języka od podstaw nie jest czasochłonne, nawet dla ludzi niebędących programistami – Pythona często używają analitycy bądź pracownicy naukowi. Nawet jeżeli wiążemy swoją przyszłość z innymi językami, znajomość Pythona może okazać się przydatna w naszej karierze – a praktyki w programowaniu nigdy za wiele.

Wpisy, które mogą Cię zainteresować:



Dodaj komentarz