Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów. Paweł Świątek
Agenda 1. Sprawy organizacyjne 2. Zasady zaliczenia 3. Cele kursu 4. Kilka słów o Laboratorium 5. Podstawy programowania
Sprawy organizacyjne Konsultacje s. 117, b. C-3 WT 9-11 SR 11-13 Materiały: www.ii.pwr.wroc.pl/~swiatek Kontakt: pawel.swiatek@pwr.edu.pl
Literatura C.H. Cormen, R. Rivest, Wprowadzenie do algorytmów, MIT Press (wydanie najnowsze) Kurs Pythona: https://www.codecademy.com/learn/learn-python
Zasady zaliczenia 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ść
Cele kursu 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
Laboratorium -- zasady 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
Narzędzia 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)
Podstawy programowania 1. Instalacja środowiska 2. Wprowadzenie do języka Python 3. Struktura kodu 4. Podstawowe konstrukcje 5. Programowanie obiektowe 6. Struktury danych
Instalacja środowiska Python dla Windows np.: 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 Python http://www.microsoft.com/en-us/download/details.aspx?id=44266 Potem: pip install <nazwa_pakietu> np. pip install pyxb PyCharm https://www.jetbrains.com/pycharm/download/
Wprowadzenie do języka Python Język wysokiego poziomu Obiektowy Z dynamicznym systemem typów Automatycznie zarządza pamięcią Wieloplatformowy Interpretowalny
Struktura kodu
Podstawowe konstrukcje
Programowanie obiektowe Abstrakcja Każdy obiekt w systemie służy jako model abstrakcyjnego "wykonawcy", który może wykonywać pracę, opisywać i zmieniać swój stan oraz komunikować się z innymi obiektami w systemie bez ujawniania, w jaki sposób zaimplementowano dane cechy. Procesy, funkcje lub metody mogą być również abstrahowane, a kiedy tak się dzieje, konieczne są rozmaite techniki rozszerzania abstrakcji.
Programowanie obiektowe Hermetyzacja Czyli ukrywanie implementacji, enkapsulacja. Zapewnia, że obiekt nie może zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko własne metody obiektu są uprawnione do zmiany jego stanu. Każdy typ obiektu prezentuje innym obiektom swój interfejs, który określa dopuszczalne metody współpracy.
Programowanie obiektowe Polimorfizm Referencje i kolekcje obiektów mogą dotyczyć obiektów różnego typu, a wywołanie metody dla referencji spowoduje zachowanie odpowiednie dla pełnego typu obiektu wywoływanego. Jeśli dzieje się to w czasie działania programu, to nazywa się to późnym wiązaniem lub wiązaniem dynamicznym. Co to jest referencja?
Programowanie obiektowe Dziedziczenie Porządkuje i wspomaga polimorfizm i enkapsulację dzięki umożliwieniu definiowania i tworzenia specjalizowanych obiektów na podstawie bardziej ogólnych. Dla obiektów specjalizowanych nie trzeba redefiniować całej funkcjonalności, lecz tylko tę, której nie ma obiekt ogólniejszy. W typowym przypadku powstają grupy obiektów zwane klasami, oraz grupy klas zwane drzewami. Odzwierciedlają one wspólne cechy obiektów.
Programowanie obiektowe programowanie_obiektowe.py
Struktury danych Zmienne Listy Krotki Słowniki struktury_danych.py
Dziękuję za uwagę