Wykład 1 Dr Bożena Woźna-Szcześniak bwozna@gmail.com
Język programowania jest środkiem umożliwiającym zapis algorytmów w postaci zrozumiałej dla człowieka, a równocześnie przetwarzalnej do postaci zrozumiałej dla komputera (maszyny algorytmicznej) Kod źródłowy programu (w języku programowania) Przetworzenie programu źródłowego w kod maszynowy Kod wynikowy programu (w języku maszynowym) dr Bożena Woźna-Szcześniak 2
Encyklopedia PWN Algorytm to "(...) przepis na rozwiązanie określonego zadania podany jako zbiór kolejnych poleceń; jego wykonawcą może być człowiek lub urządzenie automatyczne (np. komputer); ( )zapisany w jakimś języku programowania - program". Maciej M. Sysło Algorytm jest przepisem rozwiązywania postawionego zadania, będącym dokładnie określonym układem elementarnych instrukcji wraz z porządkiem ich wykonania. dr Bożena Woźna-Szcześniak 3
Składniki: 175 g miękkiego masła 1 1/2 szklanki cukru pudru 3 łyżeczki esencji waniliowej 3 roztrzepane jajka 1 1/2 szklanki mąki 2 1/4 łyżeczki proszku do pieczenia 3 łyżki kakao 1 1/4 szklanki mleka Sposób przygotowania: 1. Włożyć masło, cukier i esencję waniliową do miski i ucierać do uzyskania lekkiej, puszystej masy. Ciągle mieszając, stopniowo dodawać jajka. 2. Przesiać mąkę do osobnego naczynia, dodać proszek do pieczenia i kakao. Dodawać na przemian mieszankę mączną i mleko do masy maślanej, cały czas ucierając. 3. Wylać powstałe ciasto do kwadratowej blachy o boku 20 cm, natłuszczonej i wyłożonej papierem do pieczenia. Piec 55 minut (sprawdzić patyczkiem). Zostawić ciasto w blasze na 10 minut, a potem przełożyć na druciany stojak do wystudzenia. dr Bożena Woźna-Szcześniak 4
Generacja I - język maszynowy lista instrukcji, z których każda jest serią binarnych liczb np. 1010 0101 0000 0000 0000 1111 gdzie 1010 - rozkaz dodawania 0101 - zawartość rejestru 5 0000 0000 0000 1111 - adres miejsca w pamięci komputera w notacji szesnastkowej : A 5 000F dr Bożena Woźna-Szcześniak 5
Generacja II - język asemblerowy skojarzenie kolejnych komponentów instrukcji z symbolami i nazwami, np. 1010 0101 0000 0000 0000 1111 może być reprezentowana przez zapis ADD TAX TOTAL gdzie ADD = 1010 - dodawanie TAX = 0101 - zawartość rejestru 5 TOTAL = 0000 0000 0000 1111 - adres miejsca w pamięci komputera Wymaga programu tłumaczącego kod symboliczny na maszynowy, tzw. asemblera dr Bożena Woźna-Szcześniak 6
Generacja III instrukcje podobne do fraz i zdań języka naturalnego (angielskiego), np. if... else...then; begin...end; while; wymaga tzw. kompilatora - programu tłumaczącego kod źródłowy na maszynowy, lub interpretera - programu iteracyjnie pobierającego kolejne instrukcje, tłumaczącego na kod wykonywalny i natychmiast go wykonującego. rozwiązany problem przenaszalności programów (np. standard ANSI języka C, Turbo Pascal, Basic). dr Bożena Woźna-Szcześniak 7
Konsolidacja, linkowanie (link): scalenie binarnych fragmentów programu w jedną całość i dołączenie procedur systemowych, procedur wejścia/wyjścia, funkcji matematycznych z bibliotek systemowych i innych elementów koniecznych do działania programu. Debuggery: programy, ułatwiające śledzenie wykonywania się danego programu, nazywane są debugerami, czyli odpluskwiaczami. Nazwa "debugging" powstała w 1945 roku - w elektromechanicznym komputerze Mark II były karaluchy w przekaźnikach. dr Bożena Woźna-Szcześniak 8
generacja IV - systemy oprogramowania pozwalające na interaktywne tworzenie oprogramowania, systemy CASE generacja V - języki sztucznej inteligencji (LISP, PROLOG) z wbudowanymi mechanizmami wnioskowania dr Bożena Woźna-Szcześniak 9
Programowanie liniowe - wszystko w jednym worku, go to! Programowanie strukturalne - moduły operujące na lokalnych danych i zmiennych, komunikacja przez przekazywanie parametrów, każdy moduł testowany osobno. Wada: zmiana struktur danych wymaga zmiany wielu modułów. Programowanie zorientowane obiektowo - dane i programy tworzą jeden obiekt. dr Bożena Woźna-Szcześniak 10
Schemat blokowy, to graficzny sposób zapisu algorytmu, gdzie za pomocą ściśle określonych figur geometrycznych, powiązanych trwale z określonymi typami instrukcji oraz połączeń, można czytelnie zilustrować relacje między elementami algorytmu. dr Bożena Woźna-Szcześniak 11
START STOP Skrzynki START i STOP wskazują początek i koniec każdego algorytmu. Ze skrzynki START wychodzi tylko jedna droga, do skrzynki STOP wchodzi co najmniej jedno połączenie. dr Bożena Woźna-Szcześniak 12
W skrzynce instrukcyjnej umieszcza się polecenia do wykonania (instrukcje) - podstawienie, obliczenie, wprowadzenie wartości. INSTRUKCJA Suma = a + b dr Bożena Woźna-Szcześniak 13
W skrzynce warunkowej umieszcza się warunek, który decyduje o wyborze dalszej drogi postępowania. Ze skrzynki wychodzą dwa połączenia: TAK (wybierane, gdy warunek jest spełniony), NIE (gdy warunek nie jest spełniony). Warunek Tak S > 10 Tak Nie Nie dr Bożena Woźna-Szcześniak 14
W skrzynce wejścia/wyjścia umieszcza się wprowadzane dane lub wyprowadzane wyniki. Ze skrzynki wchodzi/wychodzi tylko jedno połączenie. Wejście Wyjście dr Bożena Woźna-Szcześniak 15
Łącznik wewnątrzstronicowy - służy do łączenia odrębnych części schematu znajdujących się na tym samym arkuszu. Ułatwia zachowanie przejrzystości schematu. Komplementarne elementy oznacza się tym samym symbolem. dr Bożena Woźna-Szcześniak 16
Algorytm obliczania średniej arytmetycznej trzech dowolnych liczb rzeczywistych start Wprowadź (a, b, c) S = a + b + c Śr = S/3 Wyprowadź (Śr) Stop W schemacie występują przypisania: S= a + b + c oznacza przypisanie zmiennej S wartości trzech liczb pamiętanych w zmiennych a, b i c Śr = S/3 oznacza przypisanie zmiennej Śr wyniku dzielenia wartości zmiennej S przez 3 dr Bożena Woźna-Szcześniak 17
Schemat powinien być prosty i co za tym idzie czytelny. W razie złożonego rozwiązania schemat należy podzielić na mniejsze części (podprogramy) i zamieścić je na osobnych arkuszach. Do rysowania schematów dobrze jest używać szablonów. Dzięki takiemu rozwiązaniu polepsza się czytelność schematu. W blokach niezbędne jest komentowanie zarówno zaprojektowanych operacji, jak i kolejności ich wykonywania. Komentarze powinny być krótkie, lecz dostatecznie dokładnie wyjaśniające znaczenie opisywanych elementów. Należy unikać rysowania przecinających się ścieżek sterowania. W razie konieczności lepiej jest wprowadzić odpowiednie łączniki, które pozwolą wyeliminować niektóre z linii wskazujących kolejność działań w algorytmie. Powinno się unikać zapisywania wprowadzanych operacji za pomocą instrukcji języków programowania. dr Bożena Woźna-Szcześniak 18
Należy dokładnie numerować arkusze, na których został rozrysowany schemat blokowy. Trzeba liczyć się z możliwością wystąpienia konieczności wprowadzenia poprawek do schematu, dlatego wskazane jest tak tworzyć arkusze, aby możliwe było naniesienie poprawek bez konieczności przerysowywania całego schematu. Należy unikać zarówno zbyt dużej szczegółowości jak i zbytniej ogólności schematów. Nie należy umieszczać zbyt dużej liczby operacji w jednym bloku. Operacja warunkowa IF zawsze prowadzi do konieczności rozważenia dwóch dróg: gdy warunek jest spełniony i gdy nie jest. dr Bożena Woźna-Szcześniak 19
Laboratorium Informatyki ELI 2.0 jest oprogramowaniem edukacyjnym służącym do nauczania informatyki, a także podstaw automatyki i robotyki. ELI jest programem komputerowym umożliwiającym budowanie dowolnych algorytmów poprzez wybór z palety odpowiednich "klocków" - piktogramów, symbolizujących elementy i realizujących podstawowe działania informatyczne. Producentem programu jest firma ELBOX. Po kliknięciu na link strony producenta: http://www.elboxedu.pl/component/option,com_produkt/i temid,93/id,40/prod_id,39/ można zobaczyć ofertę firmy i zakupić pełną wersję ELI. dr Bożena Woźna-Szcześniak 20
Wersja demonstracyjna programu ELI dostępna jest na stronie WSiP: http://www.wsipnet.pl/dane/pliki/kluby/8//eli-2-1.zip Wersja demonstracyjna nie daje możliwości zapisu pliku i wydruku, funkcjonuje jednak na tyle dobrze, że można ją polecić użytkownikom. WSiP jest wydawcą podręcznika Algorytmy Macieja Sysło, a wersja demonstracyjna oprogramowania ELI jest integralną częścią podręcznika. dr Bożena Woźna-Szcześniak 21
W celu pobrania programu klikamy: Oprogramowanie związane z książką Algorytmy. dr Bożena Woźna-Szcześniak 22
Po pobraniu programu (eli-2-1.zip) idziemy do miejsca, gdzie go wcześniej ulokowaliśmy i rozpakowywujemy. Po rozpakowaniu powinny się pojawić pliki widoczne na obrazku obok. Aby zainstalować program wystarczy kliknąć plik INSTALUJ.EXE dr Bożena Woźna-Szcześniak 23
Oto instalator programu ELI. Aby kontynuować instalację, klikamy przycisk,,dalej. dr Bożena Woźna-Szcześniak 24
I jeszcze raz klikamy Dalej dr Bożena Woźna-Szcześniak 25
Następnie wprowadzamy nazwę katalogu docelowego i klikamy przycisk,,dalej. Standardowo Eli 2.0 instaluje się na dysku C:, ale nie ma żadnych przeciwwskazań do wybrania innego dysku. dr Bożena Woźna-Szcześniak 26
Czekamy na zakończenie pracy instalatora. dr Bożena Woźna-Szcześniak 27
Instalator zakończył instalację. Przed użyciem programu należy ponownie uruchomić Windows. Zaznaczamy opcję,,tak chcę ponownie uruchomić Windows. I klikamy przycisk,,koniec. dr Bożena Woźna-Szcześniak 28
Zainstalowany program odnajdujemy w menu Start dr Bożena Woźna-Szcześniak 29
dr Bożena Woźna-Szcześniak 30
Uruchamiamy nową zieloną planszę, na której układamy klocki przeciągając je lewym klawiszem myszy dr Bożena Woźna-Szcześniak 31
Po ułożeniu klocków definiujących nasz algorytm, aby go uruchomić wybieramy polecenie Wykonanie Uruchom, albo stosujemy skrót klawiszowy Ctrl+F9 dr Bożena Woźna-Szcześniak 32
Algorytm możemy wykonywać krok po kroku, albo W całości dr Bożena Woźna-Szcześniak 33
Początek algorytmu Koniec algorytmu Wprowadzanie danej Wyprowadzanie wyniku Wykonanie obliczeń Sprawdzanie warunku logicznego dr Bożena Woźna-Szcześniak 34
dr Bożena Woźna-Szcześniak 35
Rozważać będziemy następujące rodzaje programów: programy sekwencyjne programy z rozgałęzieniem (program wykonuje różne obliczenia w zależności od tego jaki warunek jest spełniony) programy iteracyjne (program wykonuje obliczenia w pętli dopóki nie zostanie spełniony określony warunek) programy rekurencyjne (program w kolejnych krokach wywołuje sam siebie dla nowych wartości parametrów wykonania) dr Bożena Woźna-Szcześniak 36
Ma postać ciągu kroków, które musza zostać bezwarunkowo wykonane jeden po drugim. Program taki nie zawiera żadnych warunków ani rozgałęzień. Zaczyna się od podania zestawu danych, następnie wykonywane są kolejne kroki wykonawcze, aż dochodzimy do wyniku. Np. dodanie lub mnożenie dwóch liczb: 1. Sformułowanie zadania: oblicz sumę dwóch liczb naturalnych a i b. Wynik oznacz przez S. 2. Dane wejściowe: dwie liczby a i b. 3. Cel obliczeń: obliczenie sumy S = a + b. 4. Dodatkowe ograniczenia: sprawdzenie warunku dla danych wejściowych np. czy a, b są naturalne. Ale sprawdzenie takiego warunku sprawia, że program przestaje być liniowy. dr Bożena Woźna-Szcześniak 37
Semantyka: wykonywanie kolejnych kroków programu zgodnie z zadaną sekwencją Syntaktyka: START Krok_1 Krok_2 Krok_3 Krok_4 STOP Schemat blokowy sekwencji instrukcji begin end; krok_1; krok_2; krok_3; krok_4; Pseudokod sekwencji instrukcji dr Bożena Woźna-Szcześniak 38
START Podaj a Podaj b S=a+b Pisz S STOP dr Bożena Woźna-Szcześniak 39
START Podaj a K=a*a Pisz (K) STOP dr Bożena Woźna-Szcześniak 40
dr Bożena Woźna-Szcześniak 41
dr Bożena Woźna-Szcześniak 42
Algorytm obliczający kwadrat danej liczby dr Bożena Woźna-Szcześniak 43
Algorytm obliczający kwadrat danej liczby dr Bożena Woźna-Szcześniak 44
Algorytm obliczający kwadrat danej liczby dr Bożena Woźna-Szcześniak 45
Opis za pomocą schematu blokowego: objętość prostopadłościanu START Podaj a Podaj b Podaj c V=a*b*c Pisz V STOP dr Bożena Woźna-Szcześniak 46
Schemat blokowy programu obliczający pole trójkąta wpisanego w okrąg dr Bożena Woźna-Szcześniak 47
Klocek startowy. Wpisz komunikat początkowy programu, np.. dr Bożena Woźna-Szcześniak 48
Podaj długość kolejnych boków trójkąta wpisanego w okrąg Wprowadzanie danej do programu (wpisz długości kolejnych boków trójkąta oraz podaj promień koła) dr Bożena Woźna-Szcześniak 49
Wpisz równanie na obliczanie pola trójkąta wpisanego w okrąg. Wykonywanie obliczeń arytmetycznych. Podstawienie danych do wzoru arytmetycznego. dr Bożena Woźna-Szcześniak 50
Komunikat wyjściowy informujący o wyniku. Wpisz komunikat informujący o wymiarach pola trójkąta wpisanego w okrąg. dr Bożena Woźna-Szcześniak 51
Zakończenie programu. Komunikat końcowy, zakończenie programu. dr Bożena Woźna-Szcześniak 52
Instrukcje warunkowe (rozgałęzienia warunkowe) mają następującą postać: Jeżeli warunek M to, wykonaj czynność N Lub Jeżeli warunek M, to wykonaj czynność N, w przeciwnym razie wykonaj czynność P. W językach programowanie (C/C++/Java/C#/PHP) to instrukcje: if, if else, switch-case dr Bożena Woźna-Szcześniak 53
Semantyka: wybór jednej z dwóch możliwości przetwarzania po sprawdzeniu prawdziwości zdania logicznego Syntaktyka: T akcja jeśli TAK warunek N akcja jeśli NIE if (logic_assertion_is true) then else action_if_true; action_if_false; end if; Sekcja else jest opcjonalna Schemat blokowy instrukcji if Pseudokod instrukcji if-else dr Bożena Woźna-Szcześniak 54
W algorytmie tym wykorzystujemy skrzynkę warunkową, ponieważ mamy do czynienia z sytuacją, gdy tok dalszego postępowania zależy od dokonanego wyboru (dokładnie: zależy od pogody). dr Bożena Woźna-Szcześniak 55
Start Podaj a TAK c== 0 NIE c = a % 2 Liczba jest parzysta Liczba nie jest parzysta a mod 2 oznacza resztę z dzielenia a przez 2 Stop dr Bożena Woźna-Szcześniak 56
dr Bożena Woźna-Szcześniak 57
dr Bożena Woźna-Szcześniak 58
dr Bożena Woźna-Szcześniak 59
dr Bożena Woźna-Szcześniak 60
dr Bożena Woźna-Szcześniak 61
dr Bożena Woźna-Szcześniak 62
dr Bożena Woźna-Szcześniak 63
dr Bożena Woźna-Szcześniak 64
Algorytm porównujący 2 liczby wprowadzane z klawiatury. dr Bożena Woźna-Szcześniak 65
Algorytm porównujący 2 liczby wprowadzane z klawiatury. dr Bożena Woźna-Szcześniak 66
Algorytm porównujący 2 liczby wprowadzane z klawiatury. dr Bożena Woźna-Szcześniak 67
Algorytm porównujący 2 liczby wprowadzane z klawiatury. dr Bożena Woźna-Szcześniak 68
Algorytm porównujący 2 liczby wprowadzane z klawiatury. dr Bożena Woźna-Szcześniak 69
Algorytm porównujący 2 liczby wprowadzane z klawiatury. dr Bożena Woźna-Szcześniak 70
Zadanie: Znajdź rozwiązanie równania liniowego postaci a * x + b = 0. Wynikiem jest wartość liczbowa lub stwierdzenie dlaczego nie ma jednoznacznego rozwiązania. Dane wejściowe: dwie liczby rzeczywiste a i b. Cel obliczeń: obliczenie wartości x lub stwierdzenie, że równanie nie ma jednoznacznego rozwiązania. gdy a = 0, to sprawdź czy b = 0, jeśli tak to równanie sprzeczne lub tożsamościowe gdy a!= 0, to oblicz x = -b/a dr Bożena Woźna-Szcześniak 71
dr Bożena Woźna-Szcześniak 72
Rozpoczęcie programu. Wpisanie komunikatu startowego. dr Bożena Woźna-Szcześniak 73
Wprowadzanie zmiennych (tych, które będą poddawane działaniom arytmetycznym). dr Bożena Woźna-Szcześniak 74
Wpisz instrukcje pozwalającą na wybór użytkownikowi pożądanego działania. dr Bożena Woźna-Szcześniak 75
Wprowadzanie warunku decydującego o wykonywanym działaniu. Wybór jednej z liczb od 1 do 4 będzie wskazywał wykonanie określonego działania arytmetycznego. Dla 1 program wykonania dodawanie, w innym przypadku warunek nie zostanie spełniony, a program wykona inna instrukcję. dr Bożena Woźna-Szcześniak 76
W przypadku wybrania sumy wprowadzamy pole wykonania obliczenia: Wprowadzamy instrukcje dla wykonania obliczenia : dr Bożena Woźna-Szcześniak 77
W przypadku, gdy użytkownik wybierze inna instrukcję, warunek op=1 nie jest spełniony. Musimy zatem wprowadzić instrukcje obslugujące pozostałe przypadki. Użytkownik wybrał np. 2. Wtedy wprowadzamy warunek: dr Bożena Woźna-Szcześniak 78
Użytkownik wybrał różnicę op=2. Program wykonuje działanie odejmowania: dr Bożena Woźna-Szcześniak 79
W przypadku gdy użytkownik wybrał 3 (iloraz), obsługujemy warunek dla ilorazu: Wykonujemy działanie: dr Bożena Woźna-Szcześniak 80
Gdy użytkownik wybiera iloczyn, warunek nie zostaje spełniony, a program przechodzi do kolejnej instrukcji - wykonuje mnożenie: dr Bożena Woźna-Szcześniak 81
Gdy użytkownik nie wybierze żądnej z liczb 1, 2, 3, 4 warunek nie zostanie spełniony. Wtedy wprowadzamy: dr Bożena Woźna-Szcześniak 82
Każdą z instrukcji (oprócz powrotu do wyboru działania arytmetycznego) kończy podanie wyniku oraz zakończenie programu: dr Bożena Woźna-Szcześniak 83
Schemat kalkulatora: dr Bożena Woźna-Szcześniak 84