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 start Wprowadzenie danych Operacje na danych Wyprowadzenie danych koniec Algorytm w którym kolejne instrukcje tworzą sekwencję o ustalonej kolejności.

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 Przejdź do niższego nominału i wykonaj obliczenia z punktu 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 6. Algorytm zakończ po osiągnięciu najniższego nominału Wejście: kwota Wyjście: zestawienie nominałów wraz z krotnościami 727,69zł x200zł 1x100zł 1x20zł 1x5zł 1x2zł 1x50gr 1x10gr 1x5gr 2x2gr

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

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

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 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ą (<2 16 )  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: Wyjście: , BD = cyfry szesna stkowe: 0,1,2,34,5,6,78,9,A,B C,D,E, F

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

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

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

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

18 Szyfrowanie tekstu - Szyfr Cezara  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. Chr(65)- znak o kodzie65 Ord(‘A’)- kod zna- ku A funkcje po- mocne przy szyfrowa- niu.

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

20 Metody Monte Carlo 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. rnd(n) los() Random przykłady funkcji losowych w różnych progra- mach

21 Obliczenie pola pod wykresem funkcji metodą Monte Carlo Napisać schemat blokowy programu obliczający pole pod wykresem paraboli y=x 2 w przedziale 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=x 2 tzn. czy prawdziwa jest nierówność y<=x 2, 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: 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 procedura mi) są logi cznie włą- czone w wykony- wanie róż- nych częś ci algoryt- mu start nadanie wartości parametrom odwołanie się do procedury ciąg dalszy algort. nadanie wartości parametrom i ew.odwołanie się doprocedury wejście powrót instrukcje procedury 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 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. PRZYKŁAD METO DY OD OGÓ ŁU DO SZCZE GÓŁU

27 Krok 2 Opis szczegółowy algorytmu  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 PRZYKŁAD METO DY OD OGÓ ŁU DO SZCZE GÓŁU

28 Ciąg dalszy opisu  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.PRZYKŁAD METO DY OD OGÓ ŁU DO SZCZE GÓŁU

29 Krok 3 Zapis w kodzie pseudo języka Lista zmiennych:  n - parametr programu  k,p - zmienne sterujące  A k - element tablicy liczb pierwszych znaj dujący się na miejscu k. Kod pseudo języka: czytaj n niech k :=0 dopóki k

30 Ciąg dalszy kodu niech k :=1 dopóki k 0 to {usuń wielokrotności A k większe od A k } 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 = 0 p=p+1 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 *" 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

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 Ocena algorytmu:  złożoność pamięciowa  złożoność czasowa Algorytm w którego definicji występuje odwołanie się do siebie samego. Algorytm ten musi zawierać warunek zakończenia kolejnego odwołania warunek zakończenia blok instrukcji NT początek procedury koniec rekurencji

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

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 Opis metody: Zakłada się że znany jest przedział i dokładność E, na końcach którego funkcja f(x) ma wartości przeciwnego znaku tzn. f(A)*f(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 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.

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). A B D C E F 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.

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

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