Wstęp do programowania

Algorytm - skończony ciąg jasno zdefiniowanych poleceń, które mają wykonać dane zadanie. Zadaniem algorytmu jest przeprowadzenie systemu z pewnego stanu początkowego do pożądanego stanu końcowego. Sformułowanie algorytm dotyczy znacznie większego zakresu dziedzin życia niż tylko informatyki.

Naukę programowania warto zacząć od paru ważnych definicji. Określenia, które są podane w tej lekcji (takie np. jak budyń) będą nam niezmiernie przydatne w dalszej pracy. A zatem, bazując o słownikową definicję, budyń to rodzaj gęstego deseru robionego na bazie mleka. Przepis na budyń możesz zobaczyć obok, dlatego jeżeli jesteś głodny, proponuję Ci chwilowe wstrzmanie lekcji i przerwę na przekąskę.


Jeżeli jesteś najedzony to idziemy dalej. Przepis, (który być może udało Ci się przetestować na własnej skórze), będzie idealnym przykładem algorytmu nieinformatycznego. Algorytmy to przecież ciągi instrukcji i okazuje się, że nie muszą odnosić się tylko do jednej dziedziny.


Podsumowując algorytmy będziemy pisać, a następnie używać ich, gdy będziemy musieli rozwiązać dany problem. Jeżeli definicja nie przemawia do Ciebie, nie przejmuj się, wszystko zrobi się jaśniejsze, kiedy napiszesz pierwsze linijki kodu.

Przepis na budyń

  1. 450 ml mleka wstawić do zagrzania razem z masłem
  2. W tym czasie wymieszać resztę mleka, żółtka, mąkę ziemniaczaną, cukier, cukier waniliowy lub ziarenka z wanilii oraz opcjonalnie skórkę otartą z pomarańczy lub cytryny
  3. Gdy mleko zacznie się gotować, zmniejszyć ogień i wlewać mieszankę jajeczną z cukrem, ciągle mieszając trzepaczką lub mieszadełkiem
  4. Mieszać aż do zagotowania i zgęstnienia budyniu
  5. Przelać do pucharków, naczyń i podawać gorący lub zimny ze świeżymi owocami lub owocami ze słoika lub puszki/ z sosem czekoladowym / karmelowym

Przykładowy algorytm w języku Python

a = int(input("Podaj bok kwadratu: "))
pole = a*a
obwod = 4*a
print(pole, " ", obwod)

Algorytm uczenia maszynowego

  • Zbieranie i przygotowywanie danych
  • Wybór modelu i trening modelu
  • Ewolucja i dostosowywanie modelu
  • Predykcje, optymalizacjia i wdrożenie

Przyda nam się jeszcze definicja programu komputerowego, bo programowanie będzie się właśnie skupiało na tworzeniu czy rozszerzaniu programów. Na pewno nazwa ta nie jest Ci obca. Edytory tekstu takie jak: Notepad czy Microsoft Word, przeglądarki internetowe: Mozilla Firefox, Google Chorome czy systemy operacyjne: Linux, Windows; to wszystko programy komputerowe. Gdybym odpowiadał na pytanie: "Czym jest program komputerowy?" własnymi słowami, to intuicyjnie spróbowałbym wymyśleć definicję do znanych mi przykładów: linijki kodu umożliwiające wykonanie danego zadania. Posłużmy się definicją:

Program komputerowy - algorytm dotyczący programowania, przyjmujący formę ciągu instrukcji języka programowania. Zbiór instrukcji, które są zrozumiałe dla komputera i których celem jest przeprowadzenie określonych operacji lub rozwiązanie określonego zadania.

Język programowania - formalny system komunikacji między programistą a komputerem. Język, przekazujący komputerowi dane instrukcje. Nasze polecenia dla komputera muszą być specjalnie przygotowane, aby ten mógł je zrozumieć i wykonać.

Komputer nie widzi programu tak, jak widzi go programista. Kod napisany w języku programowania zostaje przetłumaczony przez program zwany translatorem. Translacja zmienia język wysokiego poziomu w niskiego poziomu. Np. język wysokopoziomowy Python, jest tłumaczony przez kompilator Pythona do języka bajtowego Pythona. Następnie za pomocą PVM (Python Virtual Machine) jest on wykonywany - powstają instrukcje zrozumiałe dla danej platformy.

Kompilacja:

Rodzaj translacji polegający na przetłumaczeniu kodu źródłowego przed uruchomieniem programu.

Zalety:
Programy skompilowane zazwyczaj są bardziej wydajne, ponieważ tłumaczenie na kod maszynowy odbywa się przed wykonaniem programu. Kod jest lepiej dostosowany do sprzętu.

Wady:
Dłuższy czas kompilacji przed wykonaniem programu, konieczność ponownej kompilacji po wprowadzeniu zmian w kodzie źródłowym. Konieczność kompilacji dla każdej platformy docelowej.

Interpretacja:

Rodzaj translacji polegający na przetłumaczeniu kodu źrodłowego linia po linii podczas wykonywania programu.

Zalety:
Skrócony czas między napisaniem kodu a jego uruchomieniem, łatwość testowania i debugowania w trakcie wykonywania. Kod źródłowy jest łatwiejszy w przenoszeniu, ponieważ nie ma potrzeby kompilacji dla każdej platformy docelowej.

Wady:
Programy interpretowane zazwyczaj są mniej wydajne niż skompilowane, ponieważ tłumaczenie odbywa się w trakcie wykonania.

Error (błąd) - odnosi się do sytuacji, w której program nie może poprawnie wykonać danej operacji. Błędy są rodzajem sytuacji wyjątkowej, które mogą wystąpić podczas wykonywania programu.

Przykładowa informacja o błędzie:
NameError: name 'HelloWorld' is not defined

Błędy to niepozbywalna część programowania. Errory będą się pojawiać, a im dłuższy kod, tym więcej błędów. Dlatego ważne jast testowanie kodu na bieżąco i debugging.

Debugging - (po polsku śmiesznie zwany czasem odpluskwianiem) to proces, w którym będziemy się pozbywać błędów z naszego kodu zwanych rónież buggami. Spokojnie, program, w którym będziesz programował, pomoże Ci odnaleść miejce i źródło buga. Z doświadczeniem liczba błędów będzie maleć, a naprawianie tych, które się pojawią, nie zajmie długo.

Kiedy objaśniliśmy już sobie parę definicji pora przejść do prawdziwego kodowania!

Następna lekcja