Wykład 1. - ii.pwr.edu.plswiatek/pea_w1.pdf · –Środowisko wykonawcze: GNU/Linux (dla...
Transcript of Wykład 1. - ii.pwr.edu.plswiatek/pea_w1.pdf · –Środowisko wykonawcze: GNU/Linux (dla...
Wykład 1.
Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych
systemach usług, rzeczy i multimediów.
Paweł Świątek
1. Sprawy organizacyjne
2. Zasady zaliczenia
3. Cele kursu
4. Kilka słów o Laboratorium
5. Podstawy programowania
Agenda
• Konsultacje
– s. 117, b. C-3
– WT 9-11
– SR 11-13
• Materiały:
– www.ii.pwr.wroc.pl/~swiatek
• Kontakt:
Sprawy organizacyjne
• C.H. Cormen, R. Rivest, Wprowadzenie do algorytmów, MIT Press (wydanie najnowsze)
• Kurs Pythona:
https://www.codecademy.com/learn/learn-python
Literatura
• Ocena z wykładu będzie uwzględniać:
– Ocenę z laboratorium
• Ocena z laboratorium będzie uwzględniać:
– Oceny cząstkowe za cotygodniowe zadania
– Postępy
– Obecność
Zasady zaliczenia
• Rozwinięcie umiejętności programistycznych
• Formułowanie i rozwiązywanie problemów
– w szczególności optymalizacyjnych
• Poznanie podstaw działania sieciowych systemów
– usług
– rzeczy
– multimediów
Cele kursu
• Obecność obowiązkowa
– Dozwolona jedna nieusprawiedliwiona nieobecność
– Kolejne mogą skutkować obniżeniem oceny (2 to też ocena)
• Do laboratorium wymagane jest przygotowanie
– W skrajnych przypadkach nieprzygotowanie traktowane będzie jako nieusprawiedliwiona nieobecność
• Nieistotna sugestia: korzystanie z własnego komputera
Laboratorium -- zasady
• Język programowania: Python
– Wersja 3 vs 2
• Środowisko: PyCharm
– Professional 2016.3
• System operacyjny:
– Do pracy: dowolny
– Środowisko wykonawcze: GNU/Linux (dla świętego spokoju Ubuntu 16.04)
Narzędzia
1. Instalacja środowiska
2. Wprowadzenie do języka Python
3. Struktura kodu
4. Podstawowe konstrukcje
5. Programowanie obiektowe
6. Struktury danych
Podstawy programowania
Python dla Windowsnp.: https://www.python.org/downloads/release/python-279/
Uwaga: „Entire feature will be installed on local hard drive”
Dodatkowe pakiety (z prawami administratora)W przypadku Windows najpierw:Kompilator C++ dla Pythonhttp://www.microsoft.com/en-us/download/details.aspx?id=44266
Potem:
pip install <nazwa_pakietu>
np.
pip install pyxb
PyCharmhttps://www.jetbrains.com/pycharm/download/
Instalacja środowiska
• Język wysokiego poziomu
• Obiektowy
• Z dynamicznym systemem typów
• Automatycznie zarządza pamięcią
• Wieloplatformowy
• Interpretowalny
Wprowadzenie do języka Python
Każdy obiekt w systemie służy jako modelabstrakcyjnego "wykonawcy", który może wykonywaćpracę, opisywać i zmieniać swój stan oraz komunikowaćsię z innymi obiektami w systemie bez ujawniania, w jakisposób zaimplementowano dane cechy. Procesy, funkcjelub metody mogą być również abstrahowane, a kiedy taksię dzieje, konieczne są rozmaite techniki rozszerzaniaabstrakcji.
Programowanie obiektowe – Abstrakcja
Czyli ukrywanie implementacji, enkapsulacja. Zapewnia,że obiekt nie może zmieniać stanu wewnętrznego innychobiektów w nieoczekiwany sposób. Tylko własne metodyobiektu są uprawnione do zmiany jego stanu. Każdy typobiektu prezentuje innym obiektom swój interfejs, któryokreśla dopuszczalne metody współpracy.
Programowanie obiektowe – Hermetyzacja
Referencje i kolekcje obiektów mogą dotyczyć obiektówróżnego typu, a wywołanie metody dla referencjispowoduje zachowanie odpowiednie dla pełnego typuobiektu wywoływanego. Jeśli dzieje się to w czasiedziałania programu, to nazywa się to późnym wiązaniemlub wiązaniem dynamicznym.
Co to jest referencja?
Programowanie obiektowe – Polimorfizm
Porządkuje i wspomaga polimorfizm i enkapsulację dziękiumożliwieniu definiowania i tworzenia specjalizowanychobiektów na podstawie bardziej ogólnych. Dla obiektówspecjalizowanych nie trzeba redefiniować całejfunkcjonalności, lecz tylko tę, której nie ma obiektogólniejszy. W typowym przypadku powstają grupyobiektów zwane klasami, oraz grupy klas zwanedrzewami. Odzwierciedlają one wspólne cechy obiektów.
Programowanie obiektowe – Dziedziczenie