Zapis algorytmów (Algorytmy, Część II)

Podobne dokumenty
Zapis algorytmów (Algorytmy, Część II)

Zapis algorytmów (Algorytmy, Część II)

Jak tworzymy algorytmy? Wersja: 3

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Technologie Informacyjne Wykład 7

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Wykład z Technologii Informacyjnych. Piotr Mika

Algorytmika. Algorytmy. prof. dr hab. inż. Joanna Józefowska. Poznań, rok akademicki 2008/2009. Plan wyk ladu Poj

Zapis algorytmów: schematy blokowe i pseudokod 1

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Definicje. Algorytm to:

Algorytm. a programowanie -

1 Wprowadzenie do algorytmiki

Pętle. Dodał Administrator niedziela, 14 marzec :27

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

POLITECHNIKA OPOLSKA

POLITECHNIKA OPOLSKA

Wprowadzenie do algorytmiki

Technologie informacyjne - wykład 12 -

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Podstawy Programowania C++

Podstawy Programowania Algorytmy i programowanie

Maszyna Turinga (Algorytmy Część III)

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1

Podstawy Informatyki. Programowanie. Inżynieria Ciepła, I rok. Co to jest algorytm? Istotne cechy algorytmu

Podstawy Informatyki. Metalurgia, I rok niestacjonarne. Wykład 2 Algorytmy

ALGORYTMY I PROGRAMY

Wstęp do Programowania Lista 1

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Algorytm. Krótka historia algorytmów

Podstawy i języki programowania

Wstęp do informatyki- wykład 2

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

W szkole podstawowej materiał przedstawiony powinien być w następującej kolejności:

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

2.8. Algorytmy, schematy, programy

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Algorytmika i pseudoprogramowanie

1 Podstawy c++ w pigułce.

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Algorytm. Krótka historia algorytmów

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Podstawy algorytmiki Dariusz Piekarz

Maxima i Visual Basic w Excelu

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I

Arytmetyka liczb binarnych

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Schematy blokowe. Algorytmy Marek Pudełko

Laboratorium 5: Tablice. Wyszukiwanie binarne

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Algorytmy zapisywane w pseudojęzyku programowania. Klasa 2 Lekcja 6

Zapisywanie algorytmów w języku programowania

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Podstawy Informatyki. Algorytmy i ich poprawność

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

Podstawy programowania

Blockly Kodowanie pomoc.

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

LOGIKA I TEORIA ZBIORÓW

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Algorytmika i programowanie. dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Mikroprocesor Operacje wejścia / wyjścia

NIFIED M L ODELLING ANGUAGE. Diagramy czynności

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Luty 2001 Algorytmy (7) 2000/2001

Programowanie w Baltie klasa VII

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania. Wykład 3. dr Artur Bartoszewski - WYKŁAD: Języki i Systemy Programowania,

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Podstawy Informatyki. Wykład 6. Struktury danych

wagi cyfry pozycje

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Struktura i działanie jednostki centralnej

Definicja algorytmu brzmi:

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

Cw.12 JAVAScript w dokumentach HTML

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania skrót z wykładów:

Programowanie w języku C++ Grażyna Koba

EGZAMIN MATURALNY Z INFORMATYKI 13 MAJA 2019 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Podstawy Informatyki. Programowanie. Metalurgia, I rok. Co to jest algorytm? Istotne cechy algorytmu

Transkrypt:

Zapis algorytmów (Algorytmy, Część II) wer. 11 z drobnymi modyfikacjami! Wojciech Myszka 2018-11-13 17:52:24 +0100

Zapis algorytmu 1. Słowami. Należy używać prostych zdań (raczej równoważników zdań) w trybie rozkazującym.

Zapis algorytmu 1. Słowami. Należy używać prostych zdań (raczej równoważników zdań) w trybie rozkazującym. 2. Schematy blokowe. O tym za chwilę...

Zapis algorytmu 1. Słowami. Należy używać prostych zdań (raczej równoważników zdań) w trybie rozkazującym. 2. Schematy blokowe. O tym za chwilę... 3. Tablice decyzyjne. O tym później...

Zapis algorytmu 1. Słowami. Należy używać prostych zdań (raczej równoważników zdań) w trybie rozkazującym. 2. Schematy blokowe. O tym za chwilę... 3. Tablice decyzyjne. O tym później... 4. Pseudojęzyk rodzaj formalnego zapisu podobny do...

Zapis algorytmu 1. Słowami. Należy używać prostych zdań (raczej równoważników zdań) w trybie rozkazującym. 2. Schematy blokowe. O tym za chwilę... 3. Tablice decyzyjne. O tym później... 4. Pseudojęzyk rodzaj formalnego zapisu podobny do... 5. Język programowania. Następny semestr??? Wcale!!?

Zapis algorytmu Schemat blokowy Schemat blokowy (ang. block diagram, flowchart) diagram, na którym procedura, system albo program komputerowy, są reprezentowane przez opisane figury geometryczne połączone liniami zgodnie z kolejnością wykonywania czynności wynikających z przyjętego algorytmu rozwiązania zadania. Schemat blokowy pozwala dostrzec istotne etapy algorytm i logiczne zależności między nimi. Zależnie od przedstawianego zagadnienia stosowane są różne zestawy figur geometrycznych zwanych blokami, których kształty reprezentują umownie rodzaje elementów składowych.

Wszystkie Symbol We/Wy Symbol Dokumentu Symbol Laczenia Symbol Procesu Symbol Decyzji Symbol Wydobywania Symbol Wielu Dokumentow Symbol Graniczny Symbol Dysku Symbol Recznego Wprowadzania Danych Symbol Predefiniowanego Procesu Symbol Wyswietlania Symbol Recznej Operacji Preparation Symbol

Schemat blokowy Blok graniczny Blok graniczny oznacza on początek, koniec, przerwanie lub wstrzymanie wykonywania działania, np. blok startu programu. Symbol Graniczny

Schemat blokowy Blok wejścia-wyjścia Blok wejścia-wyjścia przedstawia czynność wprowadzania danych do programu i przyporządkowania ich zmiennym dla późniejszego wykorzystania jak i wyprowadzenia wyników obliczeń, np. czytaj z, pisz z+10. Symbol We/Wy

Schemat blokowy Blok obliczeniowy Blok obliczeniowy oznacza wykonanie operacji w efekcie, której zmienią się wartości, postać lub miejsce zapisu danych, np. z = z + 1. Symbol Procesu

Schemat blokowy Blok fragmentu/podprogramu Blok fragmentu przedstawia część programu zdefiniowanego odrębnie, np. sortowanie. Symbol Predefiniowanego Procesu

Schemat blokowy Blok decyzyjny Blok decyzyjny przedstawia wybór jednego z dwóch wariantów wykonywania programu na podstawie sprawdzenia warunku wpisanego w ów blok, np. a = b. Symbol Decyzji

Schemat blokowy Łącznik zewnętrzny Łącznik zewnętrzny służy do łączenia odrębnych części schematu znajdujących się na odrębnych stronach, powinien być opisany jak łącznik wewnętrzny, poza tym powinien zawierać numer strony, do której się odwołuje, np. 4.3, 2,B2. Symb

Wybór osoby najwyższej na sali Wersja słowna 1. Wybierz dowolną osobę z sali, traktuj ją jako największą (i postaw przy drzwiach).

Wybór osoby najwyższej na sali Wersja słowna 1. Wybierz dowolną osobę z sali, traktuj ją jako największą (i postaw przy drzwiach). 2. Czy zostały jakieś osoby na sali? jeżeli tak przejdź do punktu 5.

Wybór osoby najwyższej na sali Wersja słowna 1. Wybierz dowolną osobę z sali, traktuj ją jako największą (i postaw przy drzwiach). 2. Czy zostały jakieś osoby na sali? jeżeli tak przejdź do punktu 5. 3. Jeżeli nie największą osobą jest ta stojąca przy drzwiach.

Wybór osoby najwyższej na sali Wersja słowna 1. Wybierz dowolną osobę z sali, traktuj ją jako największą (i postaw przy drzwiach). 2. Czy zostały jakieś osoby na sali? jeżeli tak przejdź do punktu 5. 3. Jeżeli nie największą osobą jest ta stojąca przy drzwiach. 4. Koniec algorytmu

Wybór osoby najwyższej na sali Wersja słowna 1. Wybierz dowolną osobę z sali, traktuj ją jako największą (i postaw przy drzwiach). 2. Czy zostały jakieś osoby na sali? jeżeli tak przejdź do punktu 5. 3. Jeżeli nie największą osobą jest ta stojąca przy drzwiach. 4. Koniec algorytmu 5. Weź kolejną osobę z sali.

Wybór osoby najwyższej na sali Wersja słowna 1. Wybierz dowolną osobę z sali, traktuj ją jako największą (i postaw przy drzwiach). 2. Czy zostały jakieś osoby na sali? jeżeli tak przejdź do punktu 5. 3. Jeżeli nie największą osobą jest ta stojąca przy drzwiach. 4. Koniec algorytmu 5. Weź kolejną osobę z sali. 6. Porównaj ją z tą stojącą przy drzwiach czy jest większa?

Wybór osoby najwyższej na sali Wersja słowna 1. Wybierz dowolną osobę z sali, traktuj ją jako największą (i postaw przy drzwiach). 2. Czy zostały jakieś osoby na sali? jeżeli tak przejdź do punktu 5. 3. Jeżeli nie największą osobą jest ta stojąca przy drzwiach. 4. Koniec algorytmu 5. Weź kolejną osobę z sali. 6. Porównaj ją z tą stojącą przy drzwiach czy jest większa? 7. Jeżeli nie przejdź do 2

Wybór osoby najwyższej na sali Wersja słowna 1. Wybierz dowolną osobę z sali, traktuj ją jako największą (i postaw przy drzwiach). 2. Czy zostały jakieś osoby na sali? jeżeli tak przejdź do punktu 5. 3. Jeżeli nie największą osobą jest ta stojąca przy drzwiach. 4. Koniec algorytmu 5. Weź kolejną osobę z sali. 6. Porównaj ją z tą stojącą przy drzwiach czy jest większa? 7. Jeżeli nie przejdź do 2 8. Jeżeli tak zamienia osobę stojącą przy drzwiach; przejdź do 2

Wybór osoby najwyższej na sali Schemat blokowy Start

Wybór osoby najwyższej na sali Schemat blokowy Start Wybierz kogokolwiek

Wybór osoby najwyższej na sali Schemat blokowy Start Wybierz kogokolwiek Czy ktoś został?

Wybór osoby najwyższej na sali Schemat blokowy Start Wybierz kogokolwiek Czy ktoś został? nie Największy przy drzwiach

Wybór osoby najwyższej na sali Schemat blokowy Start Wybierz kogokolwiek Czy ktoś został? nie Największy przy drzwiach Koniec

Wybór osoby najwyższej na sali Schemat blokowy Start Wybierz kogokolwiek Czy ktoś został? tak Weź kolejną osobę nie Największy przy drzwiach Koniec

Wybór osoby najwyższej na sali Schemat blokowy Start Wybierz kogokolwiek Czy ktoś został? tak Weź kolejną osobę Czy większa? nie Największy przy drzwiach Koniec

Wybór osoby najwyższej na sali Schemat blokowy nie Start Wybierz kogokolwiek Czy ktoś został? tak Weź kolejną osobę Czy większa? nie Największy przy drzwiach Koniec

Wybór osoby najwyższej na sali Schemat blokowy nie Start Wybierz kogokolwiek Czy ktoś został? tak Weź kolejną osobę Czy większa? tak Zamień przy drzwiach nie Największy przy drzwiach Koniec

Wybór osoby najwyższej na sali Schemat blokowy nie Start Wybierz kogokolwiek Czy ktoś został? tak Weź kolejną osobę Czy większa? tak Zamień przy drzwiach nie Największy przy drzwiach Koniec

Algorytm Euklidesa Słownie 1. [Znajdowanie reszty] Podziel m przez n i niech r oznacza resztę z tego dzielenia. (Mamy 0 r < n.) 2. [Czy wyszło zero?] Jeśli r = 0 zakończ algorytm; odpowiedzią jest n. 3. [Upraszczanie] Wykonaj m n, n r i wróć do kroku 1.

Algorytm Euklidesa Schemat blokowy Zapiszmy teraz Algorytm Euklidesa w postaci schematu blokowego: Start Znajdowanie reszty Czy zero? nie Upraszczanie tak Stop

Płace point to next salary nie Start zanotuj 0; wskaż pierwszą płacę dodaj wskazaną płacę do zanotowanej liczby koniec listy? tak wydrukuj zanotowaną liczbę Stop

Tablice decyzyjne Alternatywa dla schematu blokowego. Bardzo wygodne w przypadku opisu problemów z ogromną ilością decyzji. Nieźle nadaje się do opisu problemów z życia wziętych. Średnie zastosowanie w przypadku problemów obliczeniowych. Dziś już nieco zapomniane.

Tablice decyzyjne c.d Pomysł tak, gdzieś z lat 50 (zeszłego wieku)! Tablica decyzyjna to mieszanka warunków i decyzji które należy podejmować w zależności od ich spełnienia.

Zakup samochodu cena nadmierna cena OK cena niedoszacowana Samochód spełnia wszystkie wymagania Samochód nie spełnia wszystkich wymagań ale stan i wyposażenie są akceptowalne Samochód nie spełnia wymagań

Zakup samochodu cena nadmierna cena OK cena niedoszacowana Samochód spełnia wszystkie wymagania Targuj się; jak się nie uda wróć następnego dnia i targuj się; kup nawet jak nie uda się zbić ceny Samochód nie spełnia wszystkich wymagań ale stan i wyposażenie są akceptowalne Samochód nie spełnia wymagań

Zakup samochodu cena nadmierna cena OK cena niedoszacowana Samochód spełnia wszystkie wymagania Samochód nie spełnia wszystkich wymagań ale stan i wyposażenie są akceptowalne Samochód nie spełnia wymagań Targuj się; jak się nie uda wróć następnego dnia i targuj się; kup nawet jak nie uda się zbić ceny Targuj się; kup niezależnie od wyniku targów

Zakup samochodu cena nadmierna cena OK cena niedoszacowana Samochód spełnia wszystkie wymagania Targuj się; jak się nie uda wróć następnego dnia i targuj się; kup nawet jak nie uda się zbić ceny Targuj się; kup niezależnie od wyniku targów kup Samochód nie spełnia wszystkich wymagań ale stan i wyposażenie są akceptowalne Samochód nie spełnia wymagań

Zakup samochodu cena nadmierna cena OK cena niedoszacowana Samochód spełnia wszystkie wymagania Targuj się; jak się nie uda wróć następnego dnia i targuj się; kup nawet jak nie uda się zbić ceny Targuj się; kup niezależnie od wyniku targów kup Samochód nie spełnia wszystkich wymagań ale stan i wyposażenie są akceptowalne Rezygnuj Samochód nie spełnia wymagań

Zakup samochodu cena nadmierna cena OK cena niedoszacowana Samochód spełnia wszystkie wymagania Targuj się; jak się nie uda wróć następnego dnia i targuj się; kup nawet jak nie uda się zbić ceny Targuj się; kup niezależnie od wyniku targów kup Samochód nie spełnia wszystkich wymagań ale stan i wyposażenie są akceptowalne Rezygnuj Targuj się; kup jeżeli zbiłeś cenę Samochód nie spełnia wymagań

Zakup samochodu cena nadmierna cena OK cena niedoszacowana Samochód spełnia wszystkie wymagania Targuj się; jak się nie uda wróć następnego dnia i targuj się; kup nawet jak nie uda się zbić ceny Targuj się; kup niezależnie od wyniku targów kup Samochód nie spełnia wszystkich wymagań ale stan i wyposażenie są akceptowalne Rezygnuj Targuj się; kup jeżeli zbiłeś cenę Targuj się; kup niezależnie od wyników targów Samochód nie spełnia wymagań

Zakup samochodu cena nadmierna cena OK cena niedoszacowana Samochód spełnia wszystkie wymagania Targuj się; jak się nie uda wróć następnego dnia i targuj się; kup nawet jak nie uda się zbić ceny Targuj się; kup niezależnie od wyniku targów kup Samochód nie spełnia wszystkich wymagań ale stan i wyposażenie są akceptowalne Rezygnuj Targuj się; kup jeżeli zbiłeś cenę Targuj się; kup niezależnie od wyników targów Samochód nie spełnia wymagań Rezygnuj

Zakup samochodu cena nadmierna cena OK cena niedoszacowana Samochód spełnia wszystkie wymagania Targuj się; jak się nie uda wróć następnego dnia i targuj się; kup nawet jak nie uda się zbić ceny Targuj się; kup niezależnie od wyniku targów kup Samochód nie spełnia wszystkich wymagań ale stan i wyposażenie są akceptowalne Rezygnuj Targuj się; kup jeżeli zbiłeś cenę Targuj się; kup niezależnie od wyników targów Samochód nie spełnia wymagań Rezygnuj Rezygnuj

Zakup samochodu cena nadmierna cena OK cena niedoszacowana Samochód spełnia wszystkie wymagania Targuj się; jak się nie uda wróć następnego dnia i targuj się; kup nawet jak nie uda się zbić ceny Targuj się; kup niezależnie od wyniku targów kup Samochód nie spełnia wszystkich wymagań ale stan i wyposażenie są akceptowalne Rezygnuj Targuj się; kup jeżeli zbiłeś cenę Targuj się; kup niezależnie od wyników targów Samochód nie spełnia wymagań Rezygnuj Rezygnuj Targuj się o dodatki; kup jeśli cena dodatków jest rozsądna

Wkładanie palta R1 R2 R3 C1 Pada T T N C2 Zimno T N T A1 Włóż ocieplany płaszcz przeciwdeszczowy X A2 Włóż zwykły płaszcz przeciwdeszczowy X A3 Włóż ciepły płaszcz X

Wkładanie palta c.d. W tabeli pominęliśmy warunek: Pada N Zimno N nie wymaga on żadnej specjalnej akcji, choć można by go dodać definiując akcję: Nie wkładaj żadnego płaszcza.

Przykład: sklepik Kolejny przykład to tablica decyzyjna opisująca działania związane z przyjęciem i realizacją zamówienia. Tablica uwzględnia też politykę firmy, którą można opisać tak: 1. Firma obsługuje tylko zarejestrowanych klientów. 2. Firma dostarcza tylko towary znajdujące się na liście towarów.

Sklepik c.d. C1 Towar na liście T N T C2 Klient zarejestrowany T N T C3 Wystarczający zapas towaru T N A1 Zarezerwuj towar X A2 Zarejestruj transakcję X A3 Zapisz zamówienie na liście do realizacji X A4 Wyślij towar X A5 Odrzuć transakcję X X

Języki programowania Schemat blokowy Start Znajdowanie reszty Czy zero? nie Upraszczanie tak Stop

Języki programowania Blockly

Języki programowania Java Script v a r m, n, r ; m = p a r s e F l o a t ( window. prompt ( i n p u t m ) ) ; n = p a r s e F l o a t ( window. prompt ( i n p u t n ) ) ; r = m % n ; w h i l e ( r!= 0) { m = n ; n = r ; r = m % n ; } window. a l e r t ( n ) ;

Języki programowania Python m = None n = None r = None m = f l o a t ( text_prompt ( i n p u t m ) ) n = f l o a t ( text_prompt ( i n p u t n ) ) r = m % n while r!= 0 : m = n n = r r = m % n print ( n )

Języki programowania PHP $m ; $n ; $r ; $m = f l o a t v a l ( readline ( i n p u t m ) ) ; $n = f l o a t v a l ( readline ( i n p u t n ) ) ; $r = $m % $n ; while ( $r!= 0) { $m = $n ; $n = $r ; $r = $m % $n ; } print ( $n ) ;

Języki programowania Lua m = tonumber ( text_prompt ( i n p u t m ), 10) n = tonumber ( text_prompt ( i n p u t n ), 10) r = m % n w h i l e r ~= 0 do m = n n = r r = m % n end p r i n t ( n )

Języki programowania Dart v a r m, n, r ; main ( ) { m = Math. parsedouble ( Html. window. prompt ( i n p u t n = Math. parsedouble ( Html. window. prompt ( i n p u t r = m % n ; w h i l e ( r!= 0) { m = n ; n = r ; r = m % n ; } p r i n t ( n ) ; }

Struktura sterująca I Tworząc algorytm zapisujemy go jako ciąg poleceń. Po cichu zakładamy, że poszczególne działania w sposób naturalny następują po sobie. (W algorytmach kucharskich będzie to coś takiego:... Delikatnie dołóż czekoladę, [a potem] ponownie lekko podgrzej...

Struktura sterująca II Czasami będą pojawiać się działania warunkowe (Jeśli... coś... to... coś... ).

Iteracje (pętle) Iteracja ograniczona Niektóre algorytmy sugerują powtarzanie pewnych działań (Wykonaj... coś... N razy) ściśle określoną liczbę razy. Iteracja warunkowa Czasami czynność trzeba powtarzać tak długo, aż zostanie spełniony jakiś warunek. Pętle można zagnieżdżać jedne w drugich! Instrukcja nie występuje!

Przekazanie sterowania I Uwaga: W językach wysokiego poziomu może nie występować (bardzo często nie ma)! Skok bezwarunkowy ma postać przejdź do G ( G" to określone miejsce programu algorytmu). Skok warunkowy przejdź do G jeżeli spełniony jest jakiś warunek. Instrukcje Jump X, JumpI X, Skipcond X Bity 10 i 11 pola adresu (X) definiują warunek który jest badany. I tak gdy wartość ich jest 00 instrukcja znaczy Skip (opuść/pomiń) jeżeli AC jest mniejsze od zera. Gdy 01 opuść gdy AC jest równe zero, a gdy 10 opuść gdy zawartość AC jest dodatnia.

Przekazanie sterowania II Przykład ( ): instrukcja Skipcond 800 powoduje opuszczenie instrukcji wystęującej po niej gdy AC jest dodatnie (większe od zera). 12 11 10 9 8 7 6 5 4 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 8 0 0 Duża liczba skoków (do przodu, do tyłu) zmniejsza czytelność algorytmu. Skoki powodują również problemy techniczne: czy można wyskoczyć ze środka pętli? Czy można do środka pętli wskoczyć?

Podprogramy I Podprogram wyodrębniony zestaw instrukcji (osobny algorytm) realizujący pewne zamknięte dzieło : ma dobrze 1 zdefiniowany zestaw danych (parametrów) wejściowych, zestaw danych wyjściowych i relację (zależność) pomiędzy nimi. Instrukcje JnS X (Zapisz aktualną wartość licznika rozkazów (PC) pod adresem X i przejdź do adresu X+1) Oszczędność kodu (ta sama czynność wykonywana kilkakrotnie w różnych miejscach programu). Przejrzystość kodu ( duży problem dzielimy na mniejsze, dobrze zdefiniowane fragmenty).

Podprogramy II 1 Używając słowa dobrze będę miał na myśli precyzyjnie.

Zmienna I Rodzaj pudełka do którego można coś włożyć, wyjąć. (Tak jak pokój hotelowy.) Zmienna zazwyczaj ma jakąś nazwę (przez którą się do niej odwołujemy). Wartość zmiennej (zawartość pokoju hotelowego) zmienia się w razie potrzeb. W algorytmach używamy zmiennych do przechowywania (pamiętania) różnych wartości. Zakładamy wówczas, że to co tam wstawimy nie ulega zmianie (zniszczeniu) w sposób samorzutny. Fakt przypisania wartości do zmiennej zaznaczamy w algorytmach w bardzo różny sposób. Najprostszy będzie taki: X = 5, X := X + 1 czy X A + B. Zmienne to po prostu etykiety (adresy miejsc w pamięci). Dobrze nadać im jakąś wartość za pomocą dyrektyw assemblera.

Zmienna II

Wektor, tablica I Zestaw wartości w których wprowadziliśmy rodzaj uporządkowania (dyskutując na temat wyszukiwania wartości maksymalnej mówiliśmy weźmy pierwszą wartość albo jakoś tak). Jeżeli szereg zmiennych tego samego typu ustawimy jedną za drugą (i zaczniemy się do nich odwoływać przez numer: pierwsza, druga,... ) mamy do czynienia z wektorem (zwanym czasami tablicą jednowymiarową). Jest to pewna analogia do piętra w hotelu: jest tam szereg pokoi. Nazwę przypisujemy całemu wektorowi, do poszczególnych jego elementów będziemy odwoływać się przez numer, co zapisujemy

Wektor, tablica II najczęściej jakoś tak: V (I ) (zawartość I tej komórki wektora V ) albo tak V [J]. I (J) nazywany bywa indeksem wektora. V (1) V (2) V (3) V (4) V (5) Analogiczny zapis matematyczny: V 1 V 2 V 3 V 4 V 5 Instrukcja AddI X (Dodaj pośrednio: Traktuj wartość zapisaną w X jako adres elementu, który ma być dodany do AC)

Tablica (wielowymiarowa) I Struktura grupująca dane w sposób bardziej złożony. Czasami mamy potrzebę grupowania danych w struktury bardziej złożone niż wektory. Struktura numerowana za pomocą dwu indeksów nazywana bywa tabelą. Nasuwa się tu analogia do całego hotelu: pierwszym indeksem jest numer piętra drugim numer pokoju na piętrze. My mówić będziemy o wierszach (poziome wektory) lub kolumnach (pionowe) tablicy.

Tablica (wielowymiarowa) II Odwołanie do elementu tabeli zapisywane bywa tak: W (I, J) albo W [I, J] lub rzadziej jako W [I ][J]. W najprostszych sytuacjach tablice maja wszystkie wiersze (kolumny) jednakowej długości. Możliwe są jednak i bardziej ogólne przypadki. Zapis matematyczny: v 1,1 v 1,2 v 1,3 v 2,1 v 2,2 v 2,3 v 3,1 v 3,2 v 3,3 v 4,1 v 4,2 v 4,3 Zapis algorytmiczny : V (1, 1) V (1, 2) V (1, 3) V (2, 1) V (2, 2) V (2, 3) V (3, 1) V (3, 2) V (3, 3) V (4, 1) V (4, 2) V (4, 3)

Obsługa tablic

Kolejka Struktura bardzo podobna do wektora. Dane dostarczane są do jednego końca. Do odbioru danych służy drugi koniec.

Stos Struktura podobna do wektora. Dane dostarczane są do jednego końca. Ten sam koniec służy do ich odbioru.

Drzewo albo hierarchia Struktura z porządkiem. Wyróżnia się specjalny obiekt będący początkiem całej struktury: korzeń. Inne elementy to następniki albo potomstwo. Każdy obiekt może mieć kilku równoważnych potomków. Każdy potomek to węzeł drzewa. Obiekty, które nie mają potomków to liście. Gałąź to droga od korzenia do liścia.

Drzewo root left right child child a b

Inne struktury danych I Listy (pewne podobieństwo do wektorów czy tablic). Bazy danych (pewne podobieństwo do tablic). Grafy (pewne podobieństwo do drzew).

Listy w blockly

Listy w blockly

Część I Dygresja

Raz jeszcze wybór osoby najwyższej (na sali) 1. Wysokości wszystkich osób zostały zapisane w tablicy o nazwie W. (Powinno być wysokość, ale za dużo miejsca zajmuje.) 2. Zmienna N zawiera liczbę osób w sali (długość tablicy W). 3. Zmienna MAX po zakończeniu algorytmu zawiera największą wartość zapisaną w W (wysokość osoby najwyższej). 4. I zmienna pomocnicza.

Największa wartość w tablicy Start

Największa wartość w tablicy Start MAX = W[1] I = 1

Największa wartość w tablicy Start MAX = W[1] I = 1 I < N?

Największa wartość w tablicy Start MAX = W[1] I = 1 I < N? nie Wydrukuj MAX

Największa wartość w tablicy Start MAX = W[1] I = 1 I < N? nie Wydrukuj MAX Koniec

Największa wartość w tablicy Start MAX = W[1] I = 1 tak I < N? I= I + 1 nie Wydrukuj MAX Koniec

Największa wartość w tablicy Start MAX = W[1] I = 1 tak I < N? I= I + 1 W [I ] > MAX nie Wydrukuj MAX Koniec

Największa wartość w tablicy nie Start MAX = W[1] I = 1 tak I < N? I= I + 1 W [I ] > MAX nie Wydrukuj MAX Koniec

Największa wartość w tablicy nie Start MAX = W[1] I = 1 tak I < N? I= I + 1 W [I ] > MAX tak MAX = W [I ] nie Wydrukuj MAX Koniec

Największa wartość w tablicy nie Start MAX = W[1] I = 1 tak I < N? I= I + 1 W [I ] > MAX tak MAX = W [I ] nie Wydrukuj MAX Koniec

Banalny problem 1. Dopóki X 1, dopóty wykonuj X X 2. 2. Zatrzymaj się.

Banalny problem 1. Dopóki X 1, dopóty wykonuj X X 2. 2. Zatrzymaj się. Gdy X = 7 algorytm wygeneruje następujące wartości X : 7, 5, 3, 1 i zatrzyma się...

Banalny problem 1. Dopóki X 1, dopóty wykonuj X X 2. 2. Zatrzymaj się. Gdy X = 7 algorytm wygeneruje następujące wartości X : 7, 5, 3, 1 i zatrzyma się... Gdy X = 8 będzie nieco inaczej: 8, 6, 4, 2, 0, -2, -4, -6, -8,... i algorytm nie zatrzyma się.

Banalny problem 1. Dopóki X 1, dopóty wykonuj X X 2. 2. Zatrzymaj się. Gdy X = 7 algorytm wygeneruje następujące wartości X : 7, 5, 3, 1 i zatrzyma się... Gdy X = 8 będzie nieco inaczej: 8, 6, 4, 2, 0, -2, -4, -6, -8,... i algorytm nie zatrzyma się. Jak widać wszystko działa tylko dla liczb dodatnich nieparzystych, bo w przypadku liczb parzystych udaje nam się minąć jedynkę.

Problem bardziej skomplikowany... 1. Dopóki X 1, dopóty wykonuj: 1.1 Jeśli X jest liczbą parzystą to ustaw X X /2. 1.2 W przeciwnym razie ustaw X 3X + 1 2. Zatrzymaj się

Problem bardziej skomplikowany... 1. Dopóki X 1, dopóty wykonuj: 1.1 Jeśli X jest liczbą parzystą to ustaw X X /2. 1.2 W przeciwnym razie ustaw X 3X + 1 2. Zatrzymaj się Zacznijmy od 7: 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1

Problem bardziej skomplikowany... 1. Dopóki X 1, dopóty wykonuj: 1.1 Jeśli X jest liczbą parzystą to ustaw X X /2. 1.2 W przeciwnym razie ustaw X 3X + 1 2. Zatrzymaj się Zacznijmy od 7: 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 Jak będzie dla innych liczb?

Problem bardziej skomplikowany... I 1. Dopóki X 1, dopóty wykonuj: 1.1 Jeśli X jest liczbą parzystą to ustaw X X /2. 1.2 W przeciwnym razie ustaw X 3X + 1 2. Zatrzymaj się

Problem bardziej skomplikowany... II Okazuje się, że powyższy algorytm albo kończy działanie stosunkowo szybko, albo generuje nieskończony ciąg chaotycznych liczb. Nie udało się nikomu ani udowodnić, że generowane sekwencje zaczynają się powtarzać (co oznacza, że algorytm nie zatrzyma się nigdy) ani dowieść, że dla jakiejś konkretnej wartości początkowej X algorytm zatrzyma się.

Problem bardziej skomplikowany... III Uczeni w piśmie wierzą, że algorytm zatrzymuje się dla liczb dodatnich...