11
Podstawy programowania Podstawy programowania
Elementy algorytmiki Elementy algorytmiki
C w środowisku .NET (C#) C w środowisku .NET (C#)
dr inŜ. Grzegorz Zych dr inŜ. Grzegorz Zych Copernicanum, pok. 104 lub 206a Copernicanum, pok. 104 lub 206a
Minimum programowe Minimum programowe
Treści kształcenia:
Treści kształcenia:
–– Pojęcie algorytmu. Podstawowe konstrukcje programistyczne. Pojęcie algorytmu. Podstawowe konstrukcje programistyczne.
Implementacje algorytmów w językach programowania.
Implementacje algorytmów w językach programowania.
Podstawowe struktury danych i wykonywane na nich operacje.
Podstawowe struktury danych i wykonywane na nich operacje.
Dynamiczny przydział pamięci. Rekurencja i jej implementacja w Dynamiczny przydział pamięci. Rekurencja i jej implementacja w językach wysokiego poziomu. Metody weryfikacji poprawności językach wysokiego poziomu. Metody weryfikacji poprawności programów.
programów.
Efekty kształcenia
Efekty kształcenia –– umiejętności i kompetencje: umiejętności i kompetencje:
–– Czytania ze zrozumieniem programów zapisanych w języku Czytania ze zrozumieniem programów zapisanych w języku programowania imperatywnego; symbolicznego wykonywania programowania imperatywnego; symbolicznego wykonywania prostych programów celem ich weryfikacji; pisania i
prostych programów celem ich weryfikacji; pisania i
uruchamianie prostych programów o rozmiarze rzędu 100 uruchamianie prostych programów o rozmiarze rzędu 100 wierszy kodu.
wierszy kodu.
33/22/22
Tematyka wykładów Tematyka wykładów
Dzisiaj
Dzisiaj – – wprowadzenie: wprowadzenie:
–– zasady: laboratoria -zasady: laboratoria - zaliczenie, wykłzaliczenie, wykłady ady -- egzaminegzamin –– wstęwstęp do algorytmikip do algorytmiki
–– jęjęzyki programowaniazyki programowania
Kolejne wyk
Kolejne wykł ł ady: ady:
–– nauka programowanianauka programowania –– przegląprzegląd konstrukcji jd konstrukcji jęęzykazyka –– typy danychtypy danych
–– programowanie modularneprogramowanie modularne –– ……
Literatura Literatura
Wstęp do programowania systematycznego
Wstęp do programowania systematycznego, N. , N. WirthWirth, , WNT 1999.
WNT 1999.
Algorytmy, struktury danych i techniki programowania, Algorytmy, struktury danych i techniki programowania, P. P.
Wróblewski
Wróblewski, , HelionHelion 2003 2003
Algorytmy + struktury danych = programy
Algorytmy + struktury danych = programy, N. , N. WirthWirth, , WNT 2004
WNT 2004
C#. Programowanie
C#. Programowanie, J. , J. LibertyLiberty, , HelionHelion 20052005 C#. Ćwiczenia
C#. Ćwiczenia, M. Lis, , M. Lis, HelionHelion 20062006 Wstęp do programowania w języku C#
Wstęp do programowania w języku C#, A. , A. BoduchBoduch, , Helion
Helion 20062006 Turbo
Turbo Pascal 7.0, A. Marciniak, NAKOM, Poznań, 1995 Pascal 7.0, A. Marciniak, NAKOM, Poznań, 1995 http://wazniak.mimuw.edu.pl/
http://wazniak.mimuw.edu.pl/
inne … inne …
55/22/22
Regulamin przedmiotu Regulamin przedmiotu
Przedmiot
Przedmiot składa składa się się z: z:
–– wykładwykład (15 x 2 godz./15 godz.)(15 x 2 godz./15 godz.)
egzamin pisemny egzamin pisemny
–
– dwa terminydwa terminy –– trzeci -trzeci -komisyjnykomisyjny
–– ćwiczeniaćwiczenia laboratoryjnelaboratoryjne (15 x 3 godz(15 x 3 godz/30 godz.)/30 godz.)
zaliczenie na ocenę; forma
zaliczenie na ocenę; forma --prowadzącyprowadzący obecność obowiązkowa
obecność obowiązkowa przedłuŜająca się
przedłuŜająca się nieobecnośćnieobecność––do dziekana!do dziekana!
W przypadku W przypadku braku braku
–– jedno zaliczenijedno zaliczenie (egzamin) e (egzamin) –– wpis warunkowywpis warunkowy –– więcej –więcej – powtarzanie (odpłatne!)powtarzanie (odpłatne!)
Forma zaliczenia Forma zaliczenia
ćwiczeń ćwiczeń
Decyduje prowadzący zajęcia
Decyduje prowadzący zajęcia
77/22/22
Egzamin Egzamin
Przedmiot
Przedmiot kończykończy sięsię egzaminem
egzaminem
–– pisemnypisemny
–– dopuszczeniedopuszczenie--wcześniejszewcześniejsze zaliczeni
zaliczeniee
W czasieW czasie trwaniatrwania egzaminuegzaminu student
student zobowiązanyzobowiązany jest do jest do posiadania
posiadania przyprzy sobiesobie dowolnego
dowolnego dokumentudokumentu toŜsamości
toŜsamości z aktualnymz aktualnym zdjęciem
zdjęciem i okazaniai okazania go nago na Ŝądanie
Ŝądanie osobyosoby egzaminującej. egzaminującej.
Zwolnienie z Zwolnienie z
egzaminu egzaminu
4.0 4.0 4.5 4.5
4.5 4.5 5.0 5.0
Ocena z Ocena z egzaminu egzaminu Ocena
Ocenanana zaliczenie zaliczenie
Podstawowe pojęcia Podstawowe pojęcia
Algorytm Algorytm
–– opis rozwiązywania problemu wyraŜony opis rozwiązywania problemu wyraŜony
jednoznacznie za pomocą takich operacji, które jednoznacznie za pomocą takich operacji, które wykonawca rozumie i potrafi wykonać.
wykonawca rozumie i potrafi wykonać.
Program Program
–– algorytm zapisany w sposób zrozumiały dla algorytm zapisany w sposób zrozumiały dla komputera.
komputera.
Dane Dane
–– informacja przetwarzana przez program.informacja przetwarzana przez program.
99/22/22
Przykład algorytmu Przykład algorytmu
Przydział miejsca dla pojazdu na piętrowym Przydział miejsca dla pojazdu na piętrowym
parkingu parkingu
–– parking ma 3 kondygnacjeparking ma 3 kondygnacje
–– na najwyŜszej moŜna lokować tylko samochody na najwyŜszej moŜna lokować tylko samochody osobowe (lekkie, cięŜar < 5 Ton),
osobowe (lekkie, cięŜar < 5 Ton),
–– na najniŜszej –na najniŜszej – cięŜarowe (cięŜkie, cięŜar >= 10 Ton). cięŜarowe (cięŜkie, cięŜar >= 10 Ton).
Warunek:
Warunek:
–– przyjeŜdŜający pojazd ma być umieszczany moŜliwie przyjeŜdŜający pojazd ma być umieszczany moŜliwie jak najwyŜej.
jak najwyŜej.
Zadanie algorytmiczne Zadanie algorytmiczne
Specyfikacja
Specyfikacja zadania algorytmicznego: zadania algorytmicznego:
–– Określić dane wejściowe (zbiór danych We)Określić dane wejściowe (zbiór danych We) waga pojazdu
waga pojazdu –
– Określić dane wyjścioweOkreślić dane wyjściowe (wyniki jako funkcja danych (wyniki jako funkcja danych wejściowych )
wejściowych ) numer poziomu (
numer poziomu (00 ––brak wolnych miejsc)brak wolnych miejsc) im bardziej
im bardziej nietrywialnynietrywialnyproblem –problem –tym bardziej skomplikowana tym bardziej skomplikowana specyfikacja
specyfikacja
Potem:
Potem:
–– wybrać sposób zapisu algorytmuwybrać sposób zapisu algorytmu
zestaw dozwolonych akcji podstawowych (instrukcji) zestaw dozwolonych akcji podstawowych (instrukcji) –– sformułować algorytmsformułować algorytm
–– przetestować algorytmprzetestować algorytm
1111/22/22
Sposób zapisu algorytmu Sposób zapisu algorytmu
W języku naturalnym W języku naturalnym –– np. przepis w np. przepis w
ksiąŜce kucharskiej ksiąŜce kucharskiej W języku naturalnym W języku naturalnym –– z uŜyciem pewnej z uŜyciem pewnej
konwencji konwencji
1. JEDNOZNACZNOŚĆ!
2. Przetwarzanie sekwencyjne
dane:
dane: c -c -cięŜar samochoducięŜar samochodu wynik:
wynik: n -n -numer poziomu; numer poziomu;
wartość
wartość 00oznacza brak miejscaoznacza brak miejsca skrót
skrót wppwpp. oznacza . oznacza w przeciwnym przypadkuw przeciwnym przypadku
(1) (1) ZwaŜ samochód, cięŜar ZwaŜ samochód, cięŜar ----> c ; krok (2) > c ; krok (2) (2)
(2) Jeśli c > 10 T to krok (6) Jeśli c > 10 T to krok (6) wppwpp. krok (3). krok (3) (3)
(3) Jeśli c >= 5 T to krok (5) Jeśli c >= 5 T to krok (5) wppwpp. krok (4). krok (4) (4) (4) Jeśli jest miejsce na poziomie III toJeśli jest miejsce na poziomie III to
n = 3; zmniejsz liczbę miejsc na poziomie n = 3; zmniejsz liczbę miejsc na poziomie III; STOP
III; STOP wpp
wpp. krok (5) . krok (5)
(5) (5) Jeśli jest miejsce na poziomie II toJeśli jest miejsce na poziomie II to
n = 2; zmniejsz liczbę miejsc na poziomie n = 2; zmniejsz liczbę miejsc na poziomie
II; STOP II; STOP wpp
wpp. krok (6). krok (6) (6)
(6) Jeśli jest miejsce na poziomie I toJeśli jest miejsce na poziomie I to
n = 1; zmniejsz liczbę miejsc na poziomie I;
n = 1; zmniejsz liczbę miejsc na poziomie I;
STOP STOP wppwpp. krok (7). krok (7) (7)
(7) n = 0n = 0 (8) STOP (8) STOP
Graficzny zapis algorytmu Graficzny zapis algorytmu
Schemat blokowy Schemat blokowy
– układ figur geometrycznych
tzw. bloki
przedstawiają rodzaj działań (operacji) zaprojektowanych w algorytmie
– połączonych odcinkami prostymi lub łamanymi
tzw. ścieŜki sterujące
wskazują kolejność wykonywania tych działań.
– graficznie prezentują algorytm:
występujące w nim działania kolejność wykonywania
1313/22/22
Elementy schematu blokowego
Strzałki
– określają kierunek przepływu danych lub – kolejność wykonywania działań
– linie proste (unikać łuków), nie krzyŜować linii
Operacja START
– punkt startu algorytmu (programu)
– tu rozpoczyna się wykonywanie algorytmu – występuje dokładnie raz
Operacja STOP
– punkt zakończenia algorytmu (programu) – tu kończy się wykonywanie algorytmu – moŜe zostać powtórzony wielokrotnie
START
STOP
Czytanie danych/wyprowadzania wyników
– w środku wpisać odpowiedni komentarz
Blok operacji
– w środku określenie operacji
– operacje tworzące logiczną całość
mogą być umieszczone w jednym bloku – instrukcja przypisania oznaczana się ←
Operacja warunkowa JEZELI
– w środku umieścić odpowiedni warunek – uŜywać operatorów matematycznych
=
=
=
=, ≤, ≥, ≠≠≠≠
Elementy schematu blokowego
CZYTAJ a,b,c
delta ←←←←b2– 4ac
delta < 0
T N
1515/22/22
Dodatkowe
Łącznik
– skomplikowany przebieg ścieŜek – para łączników
źródłowy docelowy
Komentarz
– wyjaśnia znaczenie operacji
Zasady tworzenia schematów blokowych
Prostota i czytelność
– podział na mniejsze części (podprogramy)
– rozumiany przez programistów posługujących się róŜnymi językami
preferowane uŜycie operatorów matematycznych – komentować operacji i kolejności ich wykonywania
komentarze krótkie i dokładne!
– unikać rysowania przecinających się ścieŜek sterowania lepiej – wprowadzić łączniki
– dokładnie numerować arkusze, na których został rozrysowany schemat blokowy.
Liczyć się z koniecznością wprowadzenia poprawek do schematu
nie oszczędzać papieru!
Nie umieszczać zbyt duŜej liczby operacji w jednym bloku.
Blok decyzyjny zawsze wymaga rozwaŜenia dwóch alternatyw
T T
ZwaŜ pojazd c- cięŜar
START
N N N N N
c ≥≥≥≥10
c ≥≥≥≥ 5 Ton
miejsce na poziomie III?
miejsce na poziomie II?
miejsce na poziomie I?
n = 0
T
n=3
T
n=2 STOP
T
n=1
Rozwiązanie zadania Rozwiązanie zadania
algorytmicznego algorytmicznego
Algorytm Algorytm
– – elementarne instrukcje zadające akcje z elementarne instrukcje zadające akcje z ustalonego zbioru
ustalonego zbioru
moŜliwe jest składanie instrukcji podstawowych moŜliwe jest składanie instrukcji podstawowych
Wykonanie:
Wykonanie:
– – dla dowolnego dopuszczalnego zestawu dla dowolnego dopuszczalnego zestawu danych wejściowych
danych wejściowych
– – wynik zgodny z oczekiwaniami. wynik zgodny z oczekiwaniami.
1919/22/22
Instrukcje sterujące Instrukcje sterujące
Algorytm musi zawierać instrukcje Algorytm musi zawierać instrukcje
sterujące sterujące
– – wskazują kolejność wykonywania akcji wskazują kolejność wykonywania akcji podstawowych.
podstawowych.
Podstawowe typy:
Podstawowe typy:
– – następstwo ( następstwo (
standardstandard), ),
– – wybór ( wybór (
wskazanie mscawskazanie msca wykonaniawykonania), ), – – iteracja ( iteracja (
ograniczona, warunkowaograniczona, warunkowa). ).
Zapis algorytmu Zapis algorytmu
Zapis jednoznaczny i formalny Zapis jednoznaczny i formalny
Sposób zapisu:
Sposób zapisu:
– – języki programowania: składa się z notacji i języki programowania: składa się z notacji i reguł zapisu
reguł zapisu
Zapisany algorytm
Zapisany algorytm - - program. program.
Programowanie
Programowanie - - to proces zapisu to proces zapisu algorytmów.
algorytmów.
2121/22/22
Język programowania Język programowania
Sposób (środek, metoda) zapisu algorytmu Sposób (środek, metoda) zapisu algorytmu
–– w postaci zrozumiałej dla człowieka, w postaci zrozumiałej dla człowieka,
–– MoŜliwej do automatycznego przetwarzeniaMoŜliwej do automatycznego przetwarzenia do do postaci zrozumiałej dla komputera (maszyny postaci zrozumiałej dla komputera (maszyny algorytmicznej)
algorytmicznej)
Jak napisać dobry program?
Jak napisać dobry program?
–– ! dobry algorytm !! dobry algorytm !
bez komputera bez komputera
znajomość zagadnienia znajomość zagadnienia
–
– uŜytkownik wie, uŜytkownik wie, –
– projektant algorytmu rozumie…projektant algorytmu rozumie…