max
Transkrypt
max
Algorytmy Etapy tworzenia programu: 1) Sformułowanie zadania – analiza problemu. 2) Opracowanie algorytmu – sposób rozwiązania. 3) Zapisanie algorytmu w języku programowania – kodowanie programu. 4) Kompilowanie programu (efekt – plik typu .exe). 5) Testowanie programu dla różnych grup danych. Algorytmy – od problemu do wyniku Ad 1) Co program ma robid: - jakie dane na wejściu - jakie wyniki na wyjściu Przykład: a) Program oblicza wartośd funkcji 𝒆𝒙 dla dowolnego x, z rozwinięcia w szereg Taylora ∞ 𝒏 𝒙 𝒆𝒙 = 𝒏! 𝒏=𝟎 Analiza problemu, algorytm Wartości funkcji składowych można policzyd iteracyjnie: 𝟏 𝒅𝒍𝒂 𝒏 = 𝟎 𝒙 = 𝒙 ∙ 𝒙 ∙ ⋯ ∙ 𝒙 (𝒏 𝒓𝒂𝒛𝒚) 𝒅𝒍𝒂 𝒏 > 𝟎 𝒏 bądź rekurencyjnie: 𝟏 𝒏 𝒙 = 𝒏−𝟏 𝒙 ∙𝒙 𝒅𝒍𝒂 𝒏 = 𝟎 𝒅𝒍𝒂 𝒏 > 𝟎 Analiza problemu, algorytm – cd. Podobnie dla drugiej funkcji iteracyjnie: 𝟏 𝒅𝒍𝒂 𝒏 = 𝟎 𝒏! = 𝟏 ∙ 𝟐 ∙ ⋯ ∙ 𝒏 𝒅𝒍𝒂 𝒏 > 𝟎 lub rekurencyjnie: 𝟏 𝒅𝒍𝒂 𝒏 = 𝟎 𝒏! = 𝒏 − 𝟏 ! ∙ 𝒏 𝒅𝒍𝒂 𝒏 > 𝟎 Analiza problemu, algorytm – cd. Bardzo ważne: kryterium zakooczenia obliczeo! Np. dla małego 𝜺 𝒏+𝟏 𝒌=𝟎 lub 𝒌 𝒙 − 𝒌! 𝒏 𝒌=𝟎 𝒙𝒌 <𝜺 𝒌! Analiza problemu, algorytm – cd. 𝒙𝒌+𝟏 𝒙𝒌 − <𝜺 𝒌 + 𝟏 ! 𝒌! Zauważmy, że 𝒏-ty wyraz szeregu ma postad: 𝒙𝒏 𝒙𝒏−𝟏 𝒙 = ∙ 𝒏! 𝒏−𝟏 ! 𝒏 Pytanie: jak liczyd sumę w algorytmie? Algorytmy –cd. b) Program wyszukuje w bazie danych WME studentów ze średnią >=4 i sporządza ich listę. EXCEL → funkcje warunkowe i … That’s it! Ad 2): Sposób rozwiązania: musimy wiedzied, czy rozwiązanie istnieje i wiedzied, czy jest jednoznaczne Etapy tworzenia programu - cd Ad 3) Platforma programisty (np. edytor tekstowy), powstaje tzw. kod źródłowy (nie program!) Ad 4) Kompilacja + konsolidacja = plik wykonywalny (.exe) Ad 5) Testowanie. Dane kontrolne. Algorytm • Zbiór akcji wykonanych w określonej kolejności na obiektach. • Zbiór reguł postępowania (przepis), mający na celu w skooczonej liczbie kroków przetworzenie informacji wejściowych (dane) w informacje wyjściowe (wyniki). Wartości wspólne dla algorytmu i programu: poprawnośd skooczonośd Modularyzacja algorytmów Każdy algorytm można podzielid na moduły. Większośd języków programowania: - podprogramy - procedury Programowanie strukturalne. Programowanie obiektowe (OOP – Object Oriented Programming) Schemat Dane →Wyniki Obiekty (dane) Dane Problem (zadanie) Cel Analiza problemu Algorytm Program Moduły Procedury Akcje (instrukcje) Wyniki Jeszcze o algorytmie • Raz opracowany dla danego problemu – dobry dla wszystkich problemów tej samej klasy • Przed opracowaniem algorytmu: czy zadanie jest rozwiązalne i czy rozwiązanie jest jednoznaczne? • Przy zadaniach inżynierskich: analiza matematyczna z użyciem metod numerycznych • Powinien uwzględniad wszystkie warianty przebiegu obliczeo z powodu różnych danych Schematy blokowe (sieci działao) • Graficzny sposób przedstawienia algorytmu. • Składa się ze ściśle określonych figur geometrycznych • Stanowi brakujące ogniwo między sformułowaniem zadania w języku użytkownika a przedstawieniem go w postaci programu • Umożliwia szybkie orientowanie się w organizacji algorytmu. Niektóre symbole stosowane w schematach blokowych I NIE FALSE W Przetwarzanie; skrzynka operacyjna (instrukcja). TAK TRUE Decyzja; skrzynka warunkowa; określa wybór jednej z alternatywnych dróg działania Niektóre symbole stosowane w schematach blokowych – cd. WE/WY Skrzynka wprowadzania i (lub) wyprowadzania danych START Skrzynki graniczne STOP Algorytm liniowy Przykład 1: suma dwóch liczb START Wprowadź (a) Wprowadź (b) S=a+b Wypisz (S) STOP Przykład 2: Algorytm z rozgałęzieniami Program rozwiązuje równanie liniowe ax+b=c dla dowolnych współczynników a, b, c. Analiza problemu: a=0 i b=0: nieskooczenie wiele rozwiązao a=0 i b<>0: równanie sprzeczne a<>0: x=-b/a Algorytm z rozgałęzieniami START Podaj (a) Podaj (b) TAK TAK Pisz „NWR” b=0? a=0? NIE Pisz „RS” STOP NIE x:=-b/a Pisz (x) Algorytm z rozgałęzieniami Pseudokod – w umownym strukturalnym języku programowania. Podaj (a) Podaj (b) Jeśli a=0 To Jeśli b=0 to Pisz („Nieskooczenie wiele rozwiązao”) W przeciwnym razie Pisz („Równanie sprzeczne”) W przeciwnym razie Początek x:=a/b Pisz (x) Koniec P3: Algorytm z pętlą – suma 5 kolejnych liczb naturalnych START S:=0 i:=1 S:=S+i i:=i+1 NIE i>5 TAK Pisz (s) STOP P 4: Algorytm z pętlą - maksymalny element z ciągu danych n liczb a1, a2, …, an (wyrazy ciągu dalej niepotrzebne) START Czytaj (n) Czytaj (a1) max:=a1 i:=2 Czytaj (ai) ai>max? TAK NIE i:=i+1 max:=ai i=n TAK Pisz (max) STOP NIE P 5: Algorytm z pętlą - maksymalny element z ciągu danych n liczb a1, a2, …, an (wyrazy ciągu dalej potrzebne) START i:=1 Czytaj (ai) i:=i+1 i=n TAK NIE max:=a1 i:=2 ai>max? NIE TAK i:=i+1 max:=ai i=n TAK Pisz (max) STOP NIE Lista pracowników z dośw. komputerowym, zatrudnionych od co najmniej 5 lat START LiczPrac:=0 NIE Drukuj (LiczPrac) STOP Czy są jeszcze jakieś rekordy TAK Czytaj rekord pracownika Czy ma dośw. komp? TAK TAK Czy zatrudn. >5 lat? Wydrukuj nazwisko pracownika LiczPrac:=LiczPrac+1 NIE NIE Zadanie domowe Opracowad schemat blokowy dla algorytmu Euklidesa znajdowania Największego Wspólnego Dzielnika (NWD) dla dwóch liczb całkowitych: Jeśli a>b, to NWD(a, b)=NWD(b, a mod b) Działanie mod zwraca resztę z dzielenia całkowitego Kryterium zakooczenia algorytmu: Gdy b=0, to NWD(a, b)=a Języki programowania Język przeznaczony do zapisu algorytmu komputerowego. Ma określone: • alfabet • składnię (syntaktykę) • reguły znaczeniowe (semantyka) Przykład: - notacja Backusa-Naura - diagramy syntaktyczne Notacja Backusa-Naura < , > symbol definiowany ::= „z definicji równa się” / „albo” <cyfra>::=0/1/2/3/4/5/6/7/8/9 <litera>::=a/b/c/ … /z/A/B/C/ … /Z <identyfikator>::=<litera> / <identyfikator><litera> / <identyfikator><cyfra> Diagramy syntaktyczne 1) Identyfikator Litera Litera Cyfra 2) Liczba cyfra Liczba całkowita bez znaku Liczba bez znaku Liczba całkowita bez znaku + . cyfra E - Liczba całkowita bez znaku Klasyfikacja języków programowania • • • • poziom mikroprogramowania język maszynowy (wewnętrzny) język asemlerowy języki wyższe (proceduralne): - języki trzeciej generacji (np. BASIC, Pascal, FORTRAN, C) - języki czwartej generacji – deklaratywne, Np. w bazach danych: FIND ALL RECORDS WHERE LASTNAME=„TUSK” • języki visual (np. Visual Basic, Java, C++, Pascal) Translator Program tłumaczący kod źródłowy na program wynikowy (w języku wewnętrznym). Trzy typy: asemblery – z języka asemblerowego na wewnętrzny kompilatory – tłumaczą cały program przed wykonaniem interpretery – czyta, tłumaczy i wykonuje jedną linię po drugiej z kodu źródłowego Zadania translatorów 1) Rozpoznanie w programie źródłowym jednostek składniowych języka 2) Analiza poprawności składni programu 3) Informowanie użytkownika o zaistniałych błędach 4) Powiązanie identyfikatorów (zmiennych, etykiet itd.) z adresami w pamięci operacyjnej 5) Łączenie przekładu z używanymi podprogramami bibliotecznymi (konsolidacja) 6) Przekształcanie wyrażeo arytmetycznych w ciąg rozkazów języka wewnętrznego, z uwzględnieniem ogólnych zasad kolejności działao Moduł źródłowy 1 Moduł źródłowy 2 Moduł źródłowy 3 Moduł wynikowy 1 Kompilator Moduł wynikowy 2 Moduł wynikowy 3 Program łączący PASCAL Program Szukanie_Max; Var i, n: byte; a, max: real; begin write (‘Ile wyrazów ma ciąg?’); readln (n); readln (a); max:=a; for i:=2 to n do begin readln (a); if a > max then max:=a end; {for} write (max); end. BASIC INPUT n INPUT a LET max=a FOR i=2 TO n INPUT a IF a > max THEN LET max=a NEXT i PRINT max