Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Warsztaty dla nauczycieli przedmiotów informatycznych

Podobne prezentacje


Prezentacja na temat: "Warsztaty dla nauczycieli przedmiotów informatycznych"— Zapis prezentacji:

1 Warsztaty dla nauczycieli przedmiotów informatycznych

2 Definicja algorytmu Cybernetyczna: dokładny przepis
wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie każdego zadania danego typu. Matematyczna: reguła przekształcania wyrażeń matematycznych przez powtarzanie tych samych działań na kolejno otrzymywanych wynikach działań poprzednich

3 Podział algorytmów Ze względu na budowę algorytmu:
algorytm liniowy algorytm rozgałęziony algorytm iteracyjny algorytm proceduralny algorytm rekurencyjny Ze względu na opis algorytmu: Opis słowny Opis przy pomocy pseudojęzyka Schemat blokowy Zapis w języku programowania

4 Algorytm liniowy Algorytm w którym kolejne instrukcje tworzą sekwencję o ustalonej kolejności. start Wprowadzenie danych Operacje na danych Wyprowadzenie danych koniec

5 Wypłata kwoty przy użyciu jak najwyższych nominałów
Opis algorytmu: 1. Wpisz wartości nominałów od najwyższego do najniższego 2. Wpisz wielkość kwoty 3. Oblicz krotność występowania pierwszego nominału 4. Zmniejsz kwotę o obliczone nominały w punkcie 3. 5. Przejdź do niższego nominału i wykonaj obliczenia z punktu 3. 200 zł 100 zł 50 zł 20 zł 10 zł 5 zł 2 zł 1 zł 50 gr 20 gr 10 gr 5 gr 2 gr 1 gr

6 Dalszy ciąg opisu algorytmu wypłaty kwot
3x200zł 1x100zł 1x20zł 1x5zł 1x2zł 1x50gr 1x10gr 1x5gr 2x2gr 6. Algorytm zakończ po osiągnięciu najniższego nominału Wejście: kwota Wyjście: zestawienie nominałów wraz z krotnościami

7 Prezentacja algorytmu wypłata kwot w arkuszu kalkulacyjnym
Plik: bank.xls

8 Algorytm rozgałęziony
Algorytm w którym niektóre instrukcje są wykonywane przy spełnieniu określonych warunków, a inne przy ich niespełnieniu start Wprowadzenie danych T N Warunek logiczny I wariant obliczeń II wariant obliczeń Wyprowadzenie danych koniec

9 Klasyfikacja trójkątów według długości boków
Opis algorytmu: Wprowadzić trzy liczby dodatnie (boki) Uporządkować je nie malejąco Sprawdzić czy istnieje trójkąt o takich bokach Dokonać klasyfikacji z wyborem na boki lub na kąty. Wejście: 7, 6, 7 [B] Wyjście: trójkąt istnieje, równoramienny a£b£c a+b>c [B]-boki [K]-kąty

10 Pliki: trojkat.rys, trojkat.pas
Prezentacja algorytmu klasyfikacja trójkątów w postaci schematu blokowego w programie EI oraz programu w TPASCALU Pliki: trojkat.rys, trojkat.pas

11 Zamiana liczby dwubajtowej z postaci dziesiętnej na szesnastkową
Opis algorytmu: Wprowadzić liczbę dziesiętną (<216) Dokonać jej konwersji do postaci dwójko wej, zastosować metodę odejmowania kolejnych potęg liczby 2. Dokonać jej konwersji do postaci szesna- stkowej, zastosować metodę podziału liczby dwójkowej na półbajtowe części Wejście: 48485 Wyjście: , BD65 216= 65536 cyfry szesna stkowe: 0,1,2,3 4,5,6,7 8,9,A,B C,D,E,F

12 Prezentacja algorytmu liczby dwójkowe i szesnastkowe w arkuszu kalkulacyjnym Excel
Pliki: 10na2na16.xls

13 Algorytm iteracyjny Cykl iteracyjny z warunkiem na końcu
Algorytm w którym część ins- trukcji jest wielokrot- nie wyko- nywana aż do spełnie nia określo nego wa- runku Cykl iteracyjny z warunkiem na końcu Ilość cykli nieokreślona start wart. poczat. instrukcje cyklu N warunek T dalszy ciąg algort.

14 Obliczenie pierwiastka kwadratowego metodą Herona
Algorytm oblicza pierwiastek kwadratowy dowolnej liczby z zdaną dokładnością Opis algorytmu: Pierwiastek z X jest równy bokowi kwadra- tu o polu X. Dowolną liczbę A>0 przyjmujemy za przy- bliżenie pierwiastka z X i jednocześnie za jeden z boków prostokąta o polu X Drugi bok wynosi wtedy X/A A X/A

15 Dalszy ciąg opisu metody Herona
Jeżeli boki nie są równe budujemy następny prostokąt, którego jeden z boków jest śred- nią arytmetyczną boków poprzedniego, czyli B=(A+X/A)/2, a drugi X/B Jeżeli boki B i X/B nie są równe to budujemy wg tej reguły następny prostokąt Postępowanie to kontynuujemy tak długo, aż różnica pomiędzy bokami stanie się mniejsza od zadanej dokładności Wejście: X=72, A=8, E=0,001 Wyjście:  728,4852, J = ilość iteracji

16 Prezentacja algorytmu Herona w postaci:
Schematu blokowego w programie Ei Ocena efektywności algorytmu w arkuszu kalkulacyjnym Excel pliki: heron.rys, heron.xls

17 Algorytm iteracyjny Cykl wyliczany z krokiem 1 liczba cykli określona
Algorytm w którym część ins- trukcji jest wykonywana z góry określoną ilość razy start Cykl wyliczany z krokiem 1 liczba cykli określona i=1 n=? i>n instrukcje cyklu i=i+1 dalszy ciąg algorytmu

18 Szyfrowanie tekstu - Szyfr Cezara
Chr(65)- znak o kodzie65 Ord(‘A’)- kod zna- ku A funkcje po- mocne przy szyfrowa- niu. Opis algorytmu: Wprowadzić tekst stawiając na końcu znak #, który do tekstu nie należy. Pobierając kolejne znaki wyznaczyć długość tekstu i zapisać do zmiennej D W tekście przy szyfrowaniu przesuwamy kolejne znaki o jedno miejsce do przodu (tzn. A–>B, B–>C,....,Z–>A) Przy deszyfrowaniu o jedno miejsce do tyłu (tzn. A–>Z, B–>A,...,Z–>Y) np.. KOMPUTER szyfrujemy jako LPNQWUFS.

19 Prezentacja algorytmu szyfr Cezara w postaci:
Schematu blokowego w programie Ei Programu w Visual Basicu pliki: szyfr.rys, szyfr.vbm

20 Metody Monte Carlo rnd(n) los() Random
przykłady funkcji losowych w różnych progra- mach Generując bardzo dużo punktów losowych o określonych warunkach możemy rozwiązać wiele problemów np: wyznaczyć pierwiastek dowolnego równania znaleźć maksimum lub minimum funkcji obliczyć pole pod wykresem funkcji Taki sposób rozwiązywania problemów znany jest pod nazwą metod Monte Carlo.

21 Obliczenie pola pod wykresem funkcji metodą Monte Carlo
Napisać schemat blokowy programu obliczający pole pod wykresem paraboli y=x2 w przedziale <0,2> metodą Monte Carlo. generujemy punkty o losowych współrzędnych należące do prostokąta o wierzchołkach (0,0); (0,4); (2,4); (2,0) Dla każdego losowego punktu (x,y) sprawdzamy, czy leży on pod wykresem funkcji y=x2 tzn. czy prawdziwa jest nierówność y<=x2, jeśli tak, to należy on do pola S i program zalicza jedno "trafienie".

22 Ciąg dalszy algorytmu - pole pod wykresem
Jeśli liczba N wygenerowanych punktów jest dostatecznie duża to w przybliżeniu zachodzi równość: S N1 ———————— = ———— , pole prostokąta N gdzie N1 to ilość zaliczonych trafień. Stąd pole S jest równe: N S˙=˙˙pole prostokąta˙* ——— N

23 Prezentacja algorytmu pole pod wykresem w postaci:
Programu w Turbo Pascalu Ocena dokładności obliczeń pliki: monte.pas

24 Algorytm proceduralny
Algorytm w którym wyróżnio- ne części algorytmu (zwane procedurami) są logi cznie włą- czone w wykony- wanie róż- nych częś ci algoryt- mu start nadanie wartości parametrom wejście odwołanie się do procedury instrukcje procedury ciąg dalszy algort. powrót nadanie wartości parametrom i ew.odwołanie się doprocedury ciąg dalszy algort.

25 OD PROBLEMU DO PROGRAMU
Metoda od ogółu do szczegółu Krok 1 - postawienie problemu Krok 2 - opis szczegółowy algorytmu Krok 3 - zapis algorytmu w kodzie pseudojęzyka Krok 4 - zapis algortmu w języku programowania

26 Krok 1 Postawienie problemu
PRZY KŁAD METO DY OD OGÓ ŁU DO SZCZE GÓŁU Problem: Wyznaczyć wszystkie liczby pierwsze nie większe od zadanej liczby naturalnej. Zastosować algorytm znany pod nazwą sita Eratostenesa. Algorytm ten polega na wykreślaniu wielo- krotności kolejno znajdowanych liczb pier- wszych nie większych od zadanej liczby.

27 Krok 2 Opis szczegółowy algorytmu
PRZY KŁAD METO DY OD OGÓ ŁU DO SZCZE GÓŁU Utworzyć listę liczb całkowitych od 1 do n. Zaczynając od liczby 2 usuń z listy wszystkie wielokrotności dwóch większe od 2. Znajdź pierwszą nieusuniętą liczbę (będzie to liczba 3) jest to liczba pierwsza Usuń wielokrotności trzech większe od 3 Znajdź pierwszą nieusuniętą liczbę (będzie to liczba 5) jest to liczba pierwsza

28 Ciąg dalszy opisu PRZY KŁAD METO DY OD OGÓ ŁU DO SZCZE GÓŁU
Usuwaj w ten sposób wyznaczone wielo- krotności kolejnych znajdowanych liczb pierwszych, aż do przekroczenie połowy wartości liczby n Liczby, które pozostały są liczbami pierwszymi.

29 Krok 3 Zapis w kodzie pseudo języka
Lista zmiennych: n - parametr programu k,p - zmienne sterujące Ak - element tablicy liczb pierwszych znaj dujący się na miejscu k. Kod pseudo języka: czytaj n niech k :=0 dopóki k<n wykonuj początek {zwiększaj k o 1 i w miejsce Ak podstaw k} koniec k:=k+1 Ak :=k

30 Ciąg dalszy kodu k:=k+1 Tu nale ży wsta wić proce durę „usun”
niech k :=1 dopóki k<=n/2 wykonuj początek {wybierz następną liczbę Ak } jeżeli Ak <>0 to {usuń wielokrotności Ak większe od Ak } koniec Części opisowe umieszczone w nawiasach {...} zastępujemy odpowiednimi instrukcjami. k:=k+1 Tu nale ży wsta wić proce durę „usun”

31 Ciąg dalszy kodu Procedura USUN
początek p=2 dopóki k * p < n wykonuj początek A k * p = p=p koniec koniec

32 Krok 4 Zapis w języku programowania
Język Turbo Pascal program sito_eratostenesa; uses crt; const wymiar=2000; var A:array[1..wymiar] of integer; n,k:integer; procedure usun(p:integer); var kr:integer; begin kr:=2; while kr*p<=n do begin A[kr*p]:=0; kr:=kr+1; end;{koniec while...} end;{koniec usun...} Język QBasic CLS PRINT "**********************" PRINT "*PROGRAM WYZNACZA *" PRINT "*WSZYSTKIE; LICZBY *" PRINT "*PIERWSZE NIE WIEKSZE*" PRINT "*OD ZADANEJ LICZBY N *" DEFINT I, K, N INPUT "podaj liczbe N "; N DIM A(N) REM WYPELNIANIE TABLICY A(K) FOR K = 1 TO N LET A(K) = K NEXT K REM WYSZUKIWANIE LICZBY PIERWSZEJ LET K = 1

33 Zapis w języku programowania
begin clrscr; writeln('********************************'); writeln('*PROGRAM WYZNACZA *'); writeln('*WSZYSTKIE LICZBY PIERWSZE*’); writeln('*NIE WIEKSZE OD ZADANEJ*'); writeln('*LICZBY N METODA SITA*'); writeln('*ERATOSTENESA *'); writeln('***************************'); writeln; write('podaj liczbe naturalna N '); read(n); for k:=1 to n do A[k]:=k; k:=1; FOR K = 2 TO INT(N / 2) IF A(K) <> 0 THEN GOSUB USUN DALEJ: NEXT K REM DRUKOWANIE CLS PRINT "oto liczby pierwsze < "; N PRINT " " PRINT FOR K = 2 TO N IF A(K) <> 0 THEN PRINT USING "#####"; A(K); NEXT K END REM USUWANIE WIELOKROTNOSCI USUN: I = 2 WHILE I * K <= N A(I * K) = 0 I = I + 1 WEND RETURN DALEJ

34 Zapis w języku programowania
repeat k:=k+1; if A[k]<>0 then usun(k); until k>trunc(n/2); {drukowanie} clrscr; writeln('oto liczby pierwsze < ',n); writeln(' '); for k:=2 to n do if A[k]<>0 then write(A[k]:6); repeat until keypressed end.

35 Prezentacja algorytmu sito Eratostenesa w postaci:
Programu w Turbo Pascalu pliki: monte.pas

36 Algorytm rekurencyjny
Algorytm w którego definicji występuje odwołanie się do siebie samego. Algorytm ten musi zawierać warunek zakończenia kolejnego odwołania początek procedury N T Ocena algorytmu: złożoność pamięciowa złożoność czasowa warunek zakończenia blok instrukcji koniec rekurencji

37 Rekurencyjne obliczanie potęg
potega(a,n) wynik:= a•potega(a, n-1) podstawienie rekurencyjne w procedurze potega(a,n) Napisz procedury rekurencyjne obliczające potęgę an przy pomocy poniższych wzorów: Obliczyć potęgę 1, , ocenić złożoność pamięciową i czasową.

38 Prezentacja algorytmu potęgi w postaci:
Programu w Turbo Pascalu Ocena złożoności pamięciowej i czasowej pliki: pot1.pas, pot2.pas, pot3.pas

39 (metoda bisekcji, podziału połówkowego)
Równanie nieliniowe (metoda bisekcji, podziału połówkowego)

40 Obliczanie pierwiastków równania nieliniowego - metodą bisekcji
Własność Darbeaux: Jeżeli funkcja ciągła przyjmuje róż ne wartości w końcach przedziału to przyjmuje w tym przedzia- le wszystkie wartości po- średnie. Opis metody: Zakłada się że znany jest przedział <A,B> i dokładność E , na końcach którego funkcja f(x) ma wartości przeciwnego znaku tzn. f(A)*f(B)<0 co oznacza, że w przedziale <A,B> znajduje się przynajmniej jedno miejsce zerowe. W kolejnych krokach zawęża się ten przedział przyjmując: A=(A+B)/ jeżeli f(A)*f((A+B)/2)>0 lub B=(A+B)/ w przeciwnym przypadku

41 Dalszy ciąg opisu Kolejne zawężania należy przerwać po spełnieniu warunku: (B-A)< 2*E Program powinien również wyznaczać ilość iteracji (zawężeń przedziału). Zadanie. Do studni wrzucono dwa patyki, o długości AB=4 m, CD=3 m Punkt E zetknięcia się patyków znaj- duje się na wysokości EF=1 m nad dnem studni. Obliczyć szerokość studni. B D E A F C

42 Rozwiązanie zadania Stosując Twierdzenia Talesa i Pitagorasa dla AEF i ACB oraz dla CEF i ACD otrzymamy równanie: równanie to można rozwiązać metodą bisekcji, zastosowanej do przedziału <0,3>

43 Prezentacja algorytmu, metoda bisekcji w postaci:
Schematu blokowego Programu w Turbo Pascalu Programu w Visual Basicu pliki: bisekcja.rys, bisekcja.pas, bisekcja.vbp

44 Pełną wersję prezentacji wraz z programami można pobrać ze strony:


Pobierz ppt "Warsztaty dla nauczycieli przedmiotów informatycznych"

Podobne prezentacje


Reklamy Google