1 / 44

Warsztaty dla nauczycieli przedmiotów informatycznych

Warsztaty dla nauczycieli przedmiotów informatycznych. 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

munin
Download Presentation

Warsztaty dla nauczycieli przedmiotów informatycznych

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Warsztaty dla nauczycieli przedmiotów informatycznych

  2. Cybernetyczna: dokładny przepis wykonania w określonym porządkuskoń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 Definicja algorytmu

  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 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 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.

  6. Dalszy ciąg opisu algorytmu wypłaty kwot 727,69zł ------------ 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 bokilub 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. Prezentacja algorytmu klasyfikacja trójkątów w postaci schematu blokowegowprogramie EI oraz programu w TPASCALU Pliki: trojkat.rys, trojkat.pas

  11. Zamiana liczby dwubajtowej z postaci dziesiętnej na szesnastkową 216=65536 cyfry szesnastkowe: 0,1,2,3 4,5,6,7 8,9,A,B C,D,E,F Opis algorytmu: • Wprowadzić liczbę dziesiętną (<216) • Dokonać jej konwersji do postaci dwójkowej, 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: 1011110101100101, BD65

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

  13. Algorytm iteracyjny Algorytm w którym część ins-trukcji jest wielokrot-nie wyko-nywana aż do spełnienia określonego 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 zajeden 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ępnyprostoką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ę mniejszaod 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 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 Ngdzie N1 to ilość zaliczonych trafień. • Stąd pole S jest równe: N1 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ą logicznie włą-czone w wykony-wanie róż-nych części algoryt-mu start nadanie wartościparametrom wejście odwołanie siędo procedury instrukcjeprocedury 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 • Krok 1 - postawienie problemu Metoda od ogółu do szczegółu • 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 METODY ODOGÓŁU DOSZCZEGÓŁ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 2Opis szczegółowy algorytmu PRZY KŁAD METODY ODOGÓŁU DOSZCZEGÓŁ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 METODY ODOGÓŁU DOSZCZEGÓŁ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 3Zapis w kodzie pseudo języka Lista zmiennych: • n - parametr programu • k,p - zmienne sterujące • Ak - element tablicy liczb pierwszych znajdujący się na miejscu k. Kod pseudo języka: czytaj n niech k :=0 dopóki k<n wykonujpoczątek{zwiększaj k o 1 i w miejsce Ak podstaw k}koniec k:=k+1Ak :=k

  30. Ciąg dalszy kodu niech k :=1 dopóki k<=n/2 wykonujpoczą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 wstawić procedurę „usun”

  31. Ciąg dalszy kodu Procedura USUN początekp=2 dopóki k * p < n wykonuj początekA k * p = 0 p=p+1 koniec koniec

  32. 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 *" PRINT "**********************" 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 Krok 4Zapis w języku programowania

  33. 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 Zapis w języku programowania

  34. 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. Zapis w języku programowania

  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 Ocena algorytmu: • złożoność pamięciowa • złożoność czasowa początek procedury N T 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,0013000, 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. 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)/2 jeżeli f(A)*f((A+B)/2)>0 lub B=(A+B)/2 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 F C A

  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: http://www.zamoyski.neostrada.pl

More Related