Chiryanow Timofey Fiodorowicz
Głównymi strukturami algorytmicznymi, oprócz elementarnych operacji przedstawionych przez jeden element diagramu, są alternatywne wykonanie i cykle. Istnieją dwie alternatywne opcje programowania wykonania i istnieją trzy główne typy pętli.
Warunkowo wykonany kod
Niektóre operacje mogą podlegać operatora warunkowego. Wtedy zostaną wykonane tylko wtedy, gdy ten warunek będzie spełniony.Jeśli<условие>
To
<действия>
Wszystko
Alternatywny
Na schemacie blokowym testowanie warunków może służyć jako zasada wyboru alternatywnych operacji. Oznacza to, że jeśli warunek jest prawdziwy, wykonanie odbędzie się jedną trajektorią, a jeśli warunek jest fałszywy, to inną. W języku KuMir pętla z warunkiem wstępnym ma postać:Jeśli<условие>
To
<действия>
W przeciwnym razie
<альтернативные действия>
Wszystko
Warunki dla robota:
lewa ściana
ściana po prawej stronie
ściana poniżej
ściana powyżej
komórka jest zamalowana
pozostawiony wolny
wolny po prawej stronie
wolny od dołu
na górze za darmo
klatka jest czysta
Pętla z warunkiem wstępnym
Pętla z warunkiem wstępnym to pętla, która działa tak długo, jak jakiś warunek określony przed jej rozpoczęciem jest prawdziwy. Warunek ten jest sprawdzany przed wykonaniem ciała pętli, dlatego treść pętli nie może zostać wykonana ani razu (jeśli warunek od początku jest fałszywy). W większości proceduralnych języków programowania jest ona realizowana za pomocą operatora while, stąd jej druga nazwa – pętla while. W języku KuMir pętla z warunkiem wstępnym ma postać:na razie<условие>
<тело цикла>
kts
Pętla z warunkiem końcowym
Pętla z warunkiem końcowym to pętla, w której warunek jest sprawdzany po wykonaniu treści pętli. Wynika z tego, że ciało jest zawsze wykonywane przynajmniej raz. W języku Pascal pętla ta jest realizowana przez operator powtórz..until, w C - do...while.W języku KuMir cykl z warunkiem końcowym ma postać:
nc
<тело цикла>
kts_pri<условие>
Pętla z licznikiem
Pętla z licznikiem to pętla, w której określona zmienna zmienia swoją wartość z zadanej wartości początkowej na wartość końcową pewnym krokiem i dla każdej wartości tej zmiennej korpus pętli jest wykonywany jednokrotnie. W większości proceduralnych języków programowania jest on realizowany przez operatora Do, który wskazuje licznik (tzw. „ zmienna pętli"), wymaganą liczbę przejść (lub wartość graniczną licznika) i ewentualnie krok, przy którym zmienia się licznik. W języku KuMir pętla z licznikiem ma postać:Różne języki programowania rozwiązują kwestię wartości zmiennej na końcu pętli, w której zmienna została wykorzystana jako licznik na różne sposoby.cały
nc dla a od 0 do 9
...ciało pętli
kts
Wprowadzenie do programu Idol i opanowanie podstaw programowania.
Studenci mogą w nim zdobyć praktyczne umiejętności tworzenia i debugowania algorytmu, pracując z takimi wykonawcami jak Robot, Rysownik, Wodnik, Konik Polny, Żółw.
Studiując jedną z najtrudniejszych działów informatyki, „algorytmizację i programowanie”.
Cel rozwoju :
Pobierać:
Zapowiedź:
Rozwój metodologiczny w informatyce.
Temat: „Robot-wykonawca programu KuMir na lekcjach informatyki”
nauczyciel technologii „Informatyka i ICT”
Notatka wyjaśniająca
Cel rozwoju: zbadać możliwości programowania na przykładzie konkretnego wykonawcy Robota korzystającego ze środowiska KUMIR; przekazać praktyczne umiejętności pracy z wykonawcą.
Rozwój metodologicznyprzygotowane na lekcje informatykiPoćwicz na komputerze: praca z wykonawcą algorytmu edukacyjnego; sporządzanie algorytmów liniowych, rozgałęzionych i cyklicznych do sterowania wykonawcą; tworzenie algorytmów o złożonej strukturze; wykorzystanie algorytmów pomocniczych (procedury, podprogramy).
Studenci powinni wiedzieć:
- kim jest wykonawca; Robot SKI, środowisko wykonawcy Robota;
- co to jest algorytm;jakie są główne właściwości algorytmu;
- sposoby pisania algorytmów: schematy blokowe, edukacyjny język algorytmiczny;podstawowe struktury algorytmiczne: śledzenie, rozgałęzianie, pętla; Struktury
- algorytmy; ⇒ przypisanie algorytmów pomocniczych; technologie konstruowania złożonych algorytmów:
Studenci powinni potrafić:
- rozumieć opisy algorytmów w edukacyjnym języku algorytmicznym;
- wykonać śledzenie algorytmu dla znanego wykonawcy;
- tworzyć algorytmy sterowania liniowego, rozgałęzionego i cyklicznego dla wykonawcy Robota; zaznacz podzadania; definiować i wykorzystywać algorytmy pomocnicze.
Lekcja 1 (2 godziny) Lekcja 1.
Robot-wykonawca.System poleceń executora.
Plan lekcji.
- Opis SKI wykonawcy, otoczenia wykonawcy.
2. Analiza typowych algorytmów robotów.
Podczas zajęć.
Spójrzmy na opis artysty.
Środowisko Artystów: Performer Robot potrafi poruszać się po labiryncie narysowanym na płaszczyźnie podzielonej na komórki.
Robot narciarski : proste polecenia: góra, dół, lewo, prawo, farba.
Polecenia logiczne: (sprawdzanie stanu)
góra wolna, dół wolny
pozostawione wolne, prawe wolne.
Spójniki logiczne: AND, NOT, OR:
Przykład: (Nie jest wolny) lub (Nie jest wolny)
Komenda oddziału: polecenie pętli:
Jeśli warunek to jeszcze nie ma warunku
Seria poleceń Seria poleceń
to wszystko
(W maszynach współrzędnościowych 2009 polecenia Robota różniły się od tych znanych dzieciom, co doprowadziło do dezorientacja :)
Komenda oddziału: polecenie pętli:
Jeśli warunek więc na razie nie jest to warunek do spełnienia
Seria poleceń Seria poleceń
koniec koniec
Ogólny widok okna programu Idol. Środowisko graficzne Robota:
W KIM-ach wersja demo Zmieniono format zespołu 2010 na zwykły
Procedura tworzenia algorytmu:
1. Zespoły Narzędzia - Edytuj środowisko startowenarysuj ściany na polu Robota i ustaw Robota w jego początkowej pozycji.
2. Zespoły Robot - Zmień środowisko początkoweutrzymać nowe środowisko.
3. Zespoły Wstaw — użyj robotawskazać artystę.
4.W oknie dokumentu zapisz algorytm korzystając z menu Wstawić.
5. Używanie poleceń wykonawczych – uruchamiaj algorytm w sposób ciągły (lub krok po kroku).
6. Rozważ wynik wykonania algorytmu i jeśli to konieczne, zdebuguj go.
Lekcja 1 (2 godziny) Lekcja 2.
Praktyczna praca "Kompilacja algorytmów liniowych”.
Zadania: 1. Robot w dowolnym punkcie pola. Pomaluj komórkę powyżej, poniżej i na prawo od pierwotnej pozycji.
- Robot w dowolnym punkcie pola. Przesuń Robota o 4 pola w prawo, kolorując je.
- Utwórz nowe środowisko początkowe, rysując na boisku kwadrat o boku 4 kwadratów. Zapisz ustawienie jako początkowe.
- Utwórz nowe środowisko początkowe, rysując korytarz na polu z przejściami w ścianach. Zapisz środowisko jako obst2.fil. Zmień środowisko początkowe na nowo utworzone.
Sesja 2 (2 godziny) Lekcja 1.
Temat : Rozgałęzianie i sekwencyjne udoskonalanie algorytmu.
Analiza zadań CMM z wykorzystaniem robota Robot.
użyj Robota
Alg Kim 2009
wczesny
jeśli nie, to dół jest luźny
potem w prawo
Wszystko
jeśli nie, to dół jest luźny
potem w prawo
Wszystko
jeśli nie, to dół jest luźny
potem w prawo
Wszystko
kon
użyj Robota
Alg Kim 2010
wczesny
jeśli nie, to dół jest luźny
potem w prawo
Wszystko
jeśli nie, to dół jest luźny
potem w prawo
Wszystko
jeśli nie, to dół jest luźny
potem w prawo
Wszystko
kon
Itp. niewolnik. Nr 14. Kompilacja i debugowanie algorytmów rozgałęziających
Zadania. Zobacz załącznik.
Lekcja 3. Algorytmy cykliczne. Lekcja 1-2
Cel: przybliżyć istotę pojęcia cyklu w algorytmach, pokazać formy zapisu cykli w algorytmach, dać umiejętności tworzenia i zapisywania algorytmów cyklicznych.
Itp. niewolnik. Nr 15. Kompilacja i debugowanie algorytmów cyklicznych
1. Utwórz algorytm malujący wszystkie komórki wewnętrzne przylegające do ściany.
użyj Robota
alg
wczesny
nc, będąc jednocześnie wolnym
przemalować; Prawidłowy
kts
nc, podczas gdy dół jest wolny
przemalować; w dół
kts
nc, aż dół będzie luźny
przemalować; lewy
kts
kon
2. Stwórz algorytm malujący wszystkie komórki pomiędzy Robotem a ścianą. Odległość od ściany nie jest znana.
użyj Robota
alg
wczesny
nc, będąc jednocześnie wolnym
Prawidłowy; przemalować
kts
kon
3. Utwórz algorytm malujący wszystkie komórki znajdujące się pomiędzy dwiema ścianami.
użyj Robota
al uch3
wczesny
jeszcze nie (nie jest wolny od góry) lub (nie jest wolny od dołu)
Prawidłowy
jeśli (nie jest wolny od góry) i (nie jest wolny od dołu)
To
przemalować
Wszystko
kts
kon
4. Utwórz algorytm malujący wszystkie komórki wokół prostokątnej ściany.
al uch4
wczesny
pomalować; do góry
nts nie jest jeszcze wolny po prawej stronie
zamalować;w górę;
kts
przemalować; prawda
nc, aż dół będzie luźny
zamalować;prawo;
kts
zamalować; w dół
nts nie jest jeszcze wolny po lewej stronie
zamalować;w dół;
kts
zamalować; w lewo
nts nie jest na szczycie, jeszcze za darmo
przemalować; lewy;
kts
kon
użyj Robota
al uch5
wczesny
Prawidłowy
nc, aż dół będzie luźny
przemalować; Prawidłowy
kts
przemalować; w dół
nt. lewa strona jest na razie wolna
przemalować; lewy
kts
nts nie jest jeszcze wolny po lewej stronie
przemalować; w dół
kts
zamalować;po lewej;zamalować; w górę;
Na razie nie ma nic za darmo na górze
przemalować; w górę
kts
nts nie jest na szczycie, jeszcze za darmo
przemalować; lewy
kts
kon
Lekcja 4 Lekcja 1
Algorytmy pomocnicze.
Cel: wprowadzić pojęcie podstawowe i algorytm pomocniczy; wyjaśnić zasady stosowania algorytmu pomocniczego; analizować przykłady algorytmów z wykorzystaniem algorytmów pomocniczych.
Plan lekcji
1.Wprowadzenie nowych terminów (algorytmy główne i pomocnicze, wywołania) oraz wyjaśnienie nowych pojęć.
2. Analiza przykładów rozwiązywania problemów z wykorzystaniem algorytmu pomocniczego.
Rozwiązując niektóre problemy, wygodnie jest podzielić je na mniejsze podzadania, z których każde można sformułować jako niezależny algorytm. W tym przypadku najpierw kompilowany jest tzw. algorytm główny, w którym do rozwiązywania podzadań dodawanych później wykorzystywane są wywołania algorytmów pomocniczych. To rozwiązanie nazywa sięmetoda sekwencyjnego udoskonalania.Pozwala grupie programistów pracować nad projektem, każdy rozwiązując własne podzadanie.
W procesie rozwiązywania problemu każdy algorytm pomocniczy można w razie potrzeby podzielić na mniejsze algorytmy pomocnicze.
Wywoływana jest komenda wykonania algorytmu pomocniczego wyzwanie i jest zapisany w treści głównego algorytmu.
Ten sam algorytm można uznać za główny i pomocniczy w stosunku do innych algorytmów. W języku algorytmicznym najpierw zapisywany jest algorytm główny, a w rzędzie algorytmy pomocnicze.
Zadanie 1:
Robot znajduje się w lewym górnym rogu pola. Nie ma ścian ani pomalowanych komórek. Utwórz algorytm, korzystając z algorytmu pomocniczego, który rysuje cztery krzyżyki na jednej poziomej linii. Ostateczna pozycja Robota może być dowolna.
Rozwiązanie
Analiza na tablicy:
Zadanie 2. Robot znajduje się w lewym górnym rogu pola. Nie ma ścian ani pomalowanych komórek. Utwórz algorytm malujący kwadrat o wymiarach 8 x 8 w szachownicę. Końcowa pozycja Robota może być dowolna.
Lekcja 4 Lekcja 2
Praktyczna praca na komputerze „Rozwiązywanie problemu za pomocą algorytmów pomocniczych”.
Cel : zaszczepienie praktycznych umiejętności konstruowania algorytmów metodą udokładniania sekwencyjnego.
Plan lekcji
1.Zadanie odbywa się w całości na komputerze PC. Studenci otrzymują zadania i realizują je w środowisku oprogramowania Idol. Wyniki pracy zapisywane są w postaci plików w celu późniejszej weryfikacji.
Problem 1 . Robot znajduje się w lewym dolnym rogu pola. Nie ma ścian ani pomalowanych komórek. Utwórz algorytm, który maluje 6 pionowych pasków o równej długości w 6 komórkach. Ostateczna pozycja Robota może być dowolna.
Problem 2 .Korzystając z algorytmów pomocniczych, utwórz algorytm malowania komórek tworzących liczbę 1212.
Praca domowa: Wymyśl algorytm, który rysuje następujący obraz: Aby rozwiązać problem, użyj dwóch algorytmów pomocniczych.
Lekcja 5 Lekcja 1-2
Test
„Opracowanie algorytmu w środowisku Robot executor.”
Cel: sprawdzić zdobytą wiedzę z zakresu tworzenia i umiejętności analizy algorytmów w środowisku oprogramowania Idol.
Zadania dla kontrolować pracę podzielone są ze względu na stopień trudności i obejmują 3 zadania z wykonawcą Robotem (zadanie 1 i 2 - dotyczące rozgałęzień i pętli, zadanie 3 - dotyczące wykorzystania algorytmu pomocniczego). Teksty zadań znajdują się w załączniku.
Sytuacje początkowe i końcowe oraz utworzone algorytmy zapisywane są w postaci pliku.
Ocena przyznawana jest w zależności od poziomu trudności zadania. Student ma prawo wyboru rodzaju zadania.
1. Wstęp
system „KuMir” (nazwa pochodzi od słów „Zbiór Światów Uczenia się”), z którym zapozna Cię ta elektroniczna wersja podręcznika.
Twórcy języka KuMir postawili sobie za cel stworzenie prostego języka dla początkowego kursu informatyki, który spełniałby wymagania nowoczesnej technologii programowania i umożliwiał wykorzystanie produkcyjne. Za podstawę przyjęto szkolny język algorytmiczny. Język został uzupełniony o pewne cechy, które przekształcają go z edukacyjnego w przemysłowy. Język ma:
typy całość, rzecz, świeci; tradycyjny zestaw operacji na danych tego typu (w tym operacje na ciągach znaków i standardowy zestaw funkcje matematyczne);
tablice ( patka) określone typy; strukturalne struktury kontrolne cykli, rozgałęzień itp.
KuMir jest otwarty - podłączenie zewnętrznych executorów wzbogaca język o nowe możliwości: od zarządzania bazami danych i pracy z obiektami geometrycznymi po poszerzanie zbioru prawidłowych typów numerycznych (język umożliwi mieszanie nowych typów z istniejącymi typami numerycznymi w wyrażeniach).
Nowoczesna technologia programowanie uczy dzielenia programu nie tylko na podprogramy, ale także na większe jednostki: zbiory programów pracujących na wspólnych danych. W inne języki W programowaniu takie jednostki nazywa się inaczej, w KuMirze taką jednostkę nazywa się „Executorem”. Pojęcie performera jest niezwykle ważne w pracy praktycznej i powinno być wprowadzane już na możliwie najwcześniejszych etapach szkolenia.
Doświadczenie wykorzystania KuMiry w nauczaniu i tworzeniu oprogramowania edukacyjnego pokazało, że język jest łatwy do nauczenia, a jednocześnie na tyle potężny, że pozwala rozszerzyć szeroką klasę zadań produkcyjnych.
Podobnie jak E-warsztat, KuMir jest zintegrowanym systemem, który obejmuje Edytor tekstu, kompilator przyrostowy z zerowym czasem reakcji, a także prosty i wygodny debuger. Dobre imię dla tego rodzaju systemu - „Edytor-kompilator”: gdy wchodzisz do programu, kompilator przetwarza go i w każdej chwili program jest gotowy do wykonania bez najmniejszego opóźnienia.
2. Nazwy i rodzaje wielkości. Operacje KuMiry
Do zapisu nazw zmiennych można używać dowolnych symboli alfabetu rosyjskiego i łacińskiego oraz cyfr. Nazwa nie może zaczynać się od cyfry. W systemie KuMir nie ma ścisłych ograniczeń co do długości nazw, jednak dla ułatwienia edycji i uniknięcia przepełnienia linii, zmiennym i algorytmom nie należy nadawać zbyt długich nazw. Zwykle nazwę wybiera się tak, aby można było zrozumieć, do czego przeznaczony jest algorytm. Edytując programy, należy również pamiętać, że litery rosyjskie i łacińskie, choć podobne w pisowni, różnią się w komputerach. Przykładowo, jeśli użytkownik opisując zmienną o nazwie A użytkownik wpisał „A” w alfabecie łacińskim, a w tekście algorytmu próbował uzyskać dostęp do tej zmiennej wpisując jej nazwę w alfabecie rosyjskim, to w tej linii na „marginesie” pojawi się komunikat „nazwa nie została zdefiniowana”. |
Wartość stała (stała) nie zmienia swojej wartości w trakcie wykonywania algorytmu.
Zmienna może zmienić swoją wartość w trakcie wykonywania algorytmu.
Wyrażenie- zapis określający kolejność działań na wartościach. Wyrażenie może zawierać stałe, zmienne, znaki operacji i funkcje.
Do zapisywania wyrażeń w KuMir używane są następujące symbole:
Aby wskazać znaki operacje logiczne użyte symbole:
= równy;
< >nie równe;
< меньше;
> więcej;
< = меньше или равно;
> = większy lub równy;
Do nagrywania trudne warunki operacje takie jak: I, ALBO NIE.
I - jednoczesne spełnienie wymienionych warunków (X > 0 i X< = 2);
LUB- spełnienie przynajmniej jednego z warunków (X > 0 lub Y > 0);
NIE- odmowa.
3. Wbudowane funkcje języka KuMir
Oto przykład wbudowanych funkcji:
Odwołanie | Funkcjonować | Typy |
|
Argument | Funkcje |
||
GRZECH(X) sałata(X) T. G. (X) DO POTĘGI(X) LN(X) ABS (X) KWRT(X) MOD(A,B) int(X) Liczba Pi | sinus x cosinus x styczna x | rzeczy | rzeczy |
Przykład zapisu wyrażeń arytmetycznych w języku algorytmicznym:
4. Polecenia informacyjne WEJŚCIE/WYJŚCIE
Często podczas wykonywania algorytmu konieczne jest zorganizowanie wymiany informacji („dialogu”) pomiędzy człowiekiem a komputerem. W tym celu język algorytmiczny posiada specjalne polecenia umożliwiające WYJŚCIE informacji z pamięci komputera na ekran oraz WEJŚCIE informacji z klawiatury (od osoby) do pamięci komputera.
Polecenie ENTER - polecenie, za pomocą którego wartości zmiennych są ustawiane za pomocą urządzeń wejściowych (klawiatura).
WYJŚCIE, polecenie- polecenie, za pomocą którego wartość wartości jest odzwierciedlana na urządzeniu wyjściowym komputera (ekran monitora).
Ponieważ język algorytmiczny wykorzystuje ilości do przechowywania informacji, polecenia wejścia/wyjścia wskazują nazwy wielkości, których wartości należy wyprowadzić (wyświetlić na ekranie) lub wprowadzić (przechowywać w pamięci komputera).
Przykład:
Słowo serwisowe NS (Nowa linia) wskazuje komputerowi, że informację należy wydrukować w nowej linii.
5. Polecenie przypisania. Tworzenie i edycja programów konstrukcji liniowych
Aby zapamiętać lub zmienić wartość wielkości, w języku algorytmicznym służy specjalne polecenie - polecenie przypisania, co jest zapisane w postaci:
NAZWA ILOŚCI: = WYRAŻENIE
Znak „ : = ” (dwukropek, a następnie równo) nazywany jest znakiem zadania i jest odczytywane jako „przypisz” (na przykład polecenie „n:=e” brzmi „n przypisz e”). Wykonując polecenie przypisania, komputer najpierw oblicza wyrażenie zapisane po prawej stronie (zastępując nazwy wielkości ich wartościami), a następnie zapisuje wynikową wartość wyrażenia do pamięci.
Algorytmy stanowiące prostą sekwencję działań nazywane są algorytmami struktury liniowej.
Przyjrzyjmy się procesowi tworzenia algorytm liniowy korzystając z przykładu obliczenia wyrażenia:
1. Oblicz sumę dwóch liczb
2. Napisz program wyznaczający przeciwprostokątną trójkąta prostokątnego na podstawie dwóch danych nóg
3. Znajdź objętość sześcianu, jeśli znany jest jego bok
6. Tworzenie i edycja programów o rozgałęzionej strukturze
Rozwiązywanie problemów nie zawsze można przedstawić w formie algorytmu liniowego. Istnieją zadania, w których konieczne jest zorganizowanie wyboru wykonania sekwencji działań w zależności od pewnych warunków. Takie algorytmy nazywane są Algorytmy struktury rozgałęzionej. W systemie programowania KuMir do tworzenia algorytmu struktury rozgałęziającej służą konstrukcje „JEŚLI - TO - W przeciwnym razie - WSZYSTKO” i „WYBÓR - Z - WSZYSTKO”.
Polecenie oddziału: JEŚLI - WTEDY - W przeciwnym razie - WSZYSTKO
Polecenie rozgałęzienia - dzieli algorytm na dwie ścieżki w zależności od pewnego warunku; wówczas wykonanie algorytmu przechodzi do wspólnej kontynuacji. Rozgałęzienie jest pełne i niekompletne.
Schemat graficzny konstrukcji” Jeśli"
Słowa funkcjonalne” Jeśli", "To", "W przeciwnym razie" mają zwykłe znaczenie. Słowo " Wszystko" oznacza koniec budowy. Pomiędzy " To" I " W przeciwnym razie" - w jednym lub kilku wierszach - zapisana jest sekwencja poleceń języka algorytmicznego (seria 1). Pomiędzy " W przeciwnym razie" I " Wszystko" zapisano kolejną sekwencję poleceń (seria 2). Seria 2 wraz ze słowem serwisowym " W przeciwnym razie" może brakować. Podczas wykonywania " Jeśli„Komputer najpierw sprawdza warunek zapisany pomiędzy „ Jeśli" I " To„. W wyniku kontroli też TAK, Lub NIE. Jeśli to możliwe TAK, następnie wykonywana jest SERIA 1 i if NIE, - następnie SERIA 2 (jeśli istnieje) .
Jeśli warunek nie jest spełniony (okazuje się NIE) oraz odcinek 2 wraz z „ W przeciwnym razie„ jest nieobecny, wówczas komputer natychmiast przystępuje do wykonywania poleceń zapisanych po słowie „ Wszystko".
7. Rodzaje cykli w systemie programowania KuMir
Algorytmy, których poszczególne działania powtarzają się wielokrotnie, nazywane są algorytmami struktury cyklicznej. Zbiór działań algorytmu związanych z powtarzaniem nazywa się cyklem.
Polecenie pętli zapewnia wielokrotne wykonanie sekwencji poleceń (treści pętli) w oparciu o pewien warunek.
Do programowania algorytmów struktury cyklicznej system programowania KuMir udostępnia dwa rodzaje pętli: pętlę z warunkiem wstępnym (pętla while) i pętlę z parametrem (pętla for).
Pętla z warunkiem wstępnym (pętla while)
Pętla z warunkiem wstępnym (pętla while) to pętla, której wykonanie jest powtarzane, aż warunek pętli będzie spełniony. Słowa funkcyjne NC(początek cyklu) i CC(koniec cyklu) są zapisane ściśle jeden pod drugim i połączone pionowa linia. Na prawo od tej linii zapisana jest powtarzalna sekwencja poleceń (treść pętli).
Po jego wykonaniu komputer cyklicznie powtarza następujące czynności:
a) sprawdza, co jest napisane po słowie Do widzenia stan : schorzenie;
b) jeżeli warunek nie jest spełniony (warunek jest fałszywy) to realizacja cyklu kończy się i komputer zaczyna wykonywać polecenia zapisane po CC. Jeżeli warunek jest spełniony (warunek jest prawdziwy), to komputer wykonuje ciało pętli, ponownie sprawdza warunek, itd.
Jeśli warunek w pętli Do widzenia nie zostanie zaobserwowany od samego początku, wówczas ciało pętli nigdy nie zostanie wykonane.
Komentarz. Uruchamianie pętli Do widzenia może nie zostać ukończony, jeśli warunek jest cały czas spełniony (taka sytuacja jest zwykle nazywana pętlą). Dlatego, aby uniknąć takich sytuacji, ciało pętli musi zawierać polecenia zmiany warunku.
Biorąc pod uwagę dodatnią liczbę całkowitą N. Oblicz silnię tej liczby: N! = 1 * 2 * 3 * ... * N.
Pętla z parametrem (pętla for)
Pętla z parametrem(loop for) - powtarzanie treści pętli podczas gdy parametr integer przebiega przez zbiór wszystkich wartości od początkowej (i1) do końcowej (in):
Tutaj i jest zmienną całkowitą zwaną parametrem pętli: i1, in to początkowe i końcowe wartości parametru pętli, które można określić za pomocą dowolnych liczb całkowitych lub wyrażeń o wartościach całkowitych; h jest krokiem zmiany wartości parametru pętli; wartość kroku może być dowolną liczbą całkowitą (zarówno dodatnią, jak i ujemną). Wpisu „krok h” w pierwszej linii może w ogóle nie być, ale domyślna wartość kroku jest ustawiona na 1.
Podczas wykonywania pętli Dla, jego ciało jest wykonywane dla i = i1, i = i1 + h, i = i1 + 2*h, . . . , ja = w. Reguły języka algorytmicznego pozwalają na podanie dowolnych liczb całkowitych i1, in, h. W szczególności in może być mniejsze niż i1. Jeżeli wartość h< 0, то цикл выполняется нужное количество раз, а если h имеет положительное значение, то этот случай не считается ошибочным - просто тело цикла не будет выполнено ни разу, а ЭВМ сразу перейдет к выполнению команд, записанных после CC. Dla h = 0 zachodzi pętla.
Przykład: Biorąc pod uwagę dodatnią liczbę całkowitą N. Oblicz silnię tej liczby: N! = 1 * 2 * 3 * ... * N.
8. Algorytmy wyrażeń rekurencyjnych
W matematyce i informatyce często występują sekwencje, w których każdy kolejny wyraz jest obliczany na podstawie poprzednich.
W postęp arytmetyczny na przykład każdy kolejny wyraz jest równy poprzedniemu, powiększony o różnicę progresji:
ai =AI-1+D
W sekwencji 1, 1, 2, 3, 5, 8, 13, ... ( nazywa się to ciągiem Fibonacciego) każdy następny wyraz jest równy sumie dwóch poprzednich. Dla tej sekwencji
ai = ai-1 + ai-2 , a1 = a2 =1
Wywoływane są formuły wyrażające następny element sekwencji poprzez jeden lub więcej poprzednich elementów relacje powtarzalności.
9. Wartości tabelaryczne i praca z nimi
Aby rejestrować algorytmy pracujące z dużą ilością informacji, w języku algorytmicznym istnieją specjalne wartości tabelaryczne zwane tabelami (tablicami).
Ilości tabelaryczne składają się z innych wielkości, zwykle liczb całkowitych lub rzeczywistych, zwanych elementami. Elementy w tabeli można ułożyć na różne sposoby. Język algorytmiczny systemu programowania KuMir wykorzystuje 2 najpopularniejsze typy tabel: tabele liniowe i prostokątne.
Praca z tabelami liniowymi (tablice jednowymiarowe)
Jak każda ilość, stół liniowy zajmuje miejsce w pamięci komputera, ma nazwę, wartość i typ. KuMir używa tablic typu całkowitego (celtab) i rzeczywistego (thingtab). Na przykład:
Zapis celtab A [1:5] oznacza, że wartość A jest tablicą (tablicą) składającą się z liczb całkowitych (całkowitych), elementy tej tablicy mają indeksy od 1 (dolna granica) do 5 (górna granica). Wartość A to pięć liczb całkowitych: 3, 15, 0, -10,101.
Elementy tabeli nie mają indywidualnych nazw. Aby oznaczyć i-ty element tabeli A, stosuje się zapis A [i]. Przykładowo, wykonując polecenie A [ 3 ] : = A [ 2 ] + A [ 4 ] komputer zamiast A [ 2 ] i A [ 4 ] podstawi wartości drugiego i czwartego elementu tabeli A, czyli liczby 15 i -10 dodaje je i wynikową wartość przypisuje 3-temu elementowi, dzięki czemu zamiast 3-go elementu w tabeli zamiast 0 pojawi się wartość 5.
Jako wartości graniczne tabeli można zastosować dowolne liczby całkowite (zarówno dodatnie, jak i ujemne), a także 0. Dolna wartość graniczna musi być mniejsza niż górna wartość graniczna, jeżeli są one równe, uważa się, że tabela składa się z jednego elementu. Jeżeli w opisie tabeli z powodu literówki dolna granica okaże się większa od górnej, np. celtab [3:1], to nie zostanie to uznane za błąd i w tabeli nie pojawi się żaden komunikat „marginesy” przy wprowadzaniu algorytmu. W tym przypadku zakłada się, że w tej tabeli nie ma żadnego elementu i przy pierwszym dostępie do tej tabeli pojawi się komunikat „zły indeks”.
Zadanie.
Praca z tabelami prostokątnymi (macierzami)
Podobnie jak tablica liniowa, macierz zajmuje miejsce w pamięci komputera i ma nazwę, wartość i typ. KuMir używa tablic typu całkowitego (celtab) i rzeczywistego (thingtab).
Notacja celtab A [1:5, 1:2] oznacza, że wartość A jest tablicą (tablicą) składającą się z liczb całkowitych (całkowitych), elementy tej tablicy mają indeksy od (pierwsza kolumna, pierwszy wiersz) do (ostatnia kolumna , ostatnia linijka). Wartość A to dziesięć liczb całkowitych: 3, 15, 0, -10, 101, 200, -45, 50, 10, 222.
Elementy tabeli nie mają indywidualnych nazw. Aby oznaczyć i-ty element tabeli A, stosuje się zapis A [i, j]. Na przykład podczas wykonywania polecenia A [ 3, 1 ] : = A [ 2, 1 ] + A [ 4, 1 ] komputer podstawi wartości 2 i 4 zamiast A [ 2, 1 ] i Elementy [ 4, 1 ] pierwszej kolumny tabeli A, czyli liczby 15 i -10, dodadzą je i przyporządkują wynikową wartość 3-temu elementowi w pierwszym wierszu tak, aby zamiast 3-go elementu pierwszego wierszu tabeli zamiast 0 pojawi się wartość 5.
Jako wartości graniczne tabeli można zastosować dowolne liczby całkowite (zarówno dodatnie, jak i ujemne), a także 0. Dolna wartość graniczna musi być mniejsza niż górna wartość graniczna, jeżeli są one równe, uważa się, że tabela składa się z jednego elementu. Jeśli w opisie tabeli z powodu literówki dolna granica okaże się większa od górnej, np. celtab [3:1, 5:2], to nie zostanie to uznane za błąd i brak komunikatów pojawi się na „marginesach” przy wejściu do algorytmu. W tym przypadku zakłada się, że w tej tabeli nie ma żadnego elementu i przy pierwszym dostępie do tej tabeli pojawi się komunikat „zły indeks”.
Zadanie. W danej tabeli B określ indeks i wartość elementu maksymalnego.
Dodatek: Zadania
Algorytmy liniowe
Zadanie nr 1
Znajdź sumę dwóch liczb - a i b
Rozwiązanie:
alg
suma
wczesny
rzeczy
a, b, c
wniosek
„wprowadź wartość 2 liczb”
wejście
a, b
c:= a + b
wniosek
ns
, „suma liczb”, a, i, b, jest, c
kon
Zadanie nr 2
Znajdź różnicę dwóch liczb
Rozwiązanie:
alg
różnica
wczesny
rzeczy
a, b, c
wniosek
„wprowadź wartości zmiennych”
wejście
a, b
c:= a - b
wniosek ns,
„różnica liczb”, a”, i”, b”, jest równa”, c
kon
Zadanie nr 3
Znajdź iloczyn dowolnych dwóch liczb naturalnych
Rozwiązanie:
cały a, b, c
alg
praca
wczesny
wniosek
"
wprowadź dwie liczby”
wejście
A,Bc:=+B
wniosek ns,"
iloczyn liczb”,a”,i”,b”jestrówna”,c
kon
Zadanie nr 4
Znajdź iloraz dwóch liczb naturalnych
Rozwiązanie:
rzeczy a, b, c
alg
prywatny
wczesny
wniosek "
wprowadź dywidendę i dzielnik”
wejście
a, b
c:= a / b
wniosek ns,
„iloraz liczb”, a, i, b, równa się, c
kon
Problem nr 5
Znajdź średnią arytmetyczną pięciu dowolnych liczb
Rozwiązanie:
rzeczy Alfabet
alg
arytmetyka
początek rzeczy
Alfabet
wniosek
„wprowadź 5 dowolnych cyfr”
wejście
a, b, c, d, e
f:=(a + b + do + d + e)/ 5
wyjście nr
, „średnia arytmetyczna z 5 liczb wynosi”, f
kon
Rozgałęzianie
Zadanie nr 1
Znajdź największą spośród 3 liczb całkowitych (liczby dowolne)
alg
maksymalny
zacznij nienaruszony
B C
wniosek
„wprowadź trzy losowe liczby”
wejście
B C
Jeśli
a>b>c
wtedy wniosek nie jest taki
„Maksymalna liczba to” i
Wszystko
Jeśli
A<б>Z
wtedy wniosek nie jest taki
„liczba maksymalna to”, b
Wszystko
Jeśli
A<б<с
wtedy wniosek nie jest taki
„maksymalna liczba to”, z
Wszystko
kon
Zadanie nr 2
Biorąc pod uwagę dwie dowolne liczby. Jeżeli pierwsza liczba jest większa od drugiej, to przypisz jej sumę, a drugiej liczbie ich iloczyn. Jeśli druga liczba jest większa od pierwszej, przypisz ich iloczyn do pierwszej liczby, a ich sumę do drugiej.
alg
stan
początek rzeczy
a, b
wniosek
„wprowadź dwie liczby”
wejście
a, b
Jeśli
a > b
To
a:= a + b
b:= a * b
W przeciwnym razie
a:= a * b
b:= a + b
wyjście nr
, a, b
kon
Zadanie nr 3:
Znajdź minimum wśród 4 dowolnych liczb
Rozwiązanie:
alg
minimum
początek rzeczy
a, b, c, e
wniosek
„wprowadź 4 losowe liczby”
wejście
a, b, c. mi
Jeśli
a>b>c>e
wtedy wniosek nie jest taki
„liczba maksymalna-”, a
Wszystko
Jeśli
A<б>c>e
wtedy wniosek nie jest taki
„liczba maksymalna -”, b
Wszystko
Jeśli
A<б<с>mi
wtedy wniosek nie jest taki
„liczba maksymalna -”, s
Wszystko
Jeśli
A<б<с<е
wtedy wniosek nie jest taki
, „liczba maksymalna -”, np
Wszystko
kon
Zadanie nr 4
Dane są 2 ramiona (2 cm i 2 cm) trójkąta równoramiennego oraz jego podstawa (2,82 cm). Ustal, czy trójkąt jest prostokątny.
Rozwiązanie:
alg
trójkąt
początek rzeczy
ja, h, s
ja:= 2
godz:= 2
s:= 2,82
Jeśli
c**2= (i**2)+(h**2)
potem konkluzja
"prawda"
w przeciwnym razie wyjście
" kłamstwo"
Wszystko
kon
Problem nr 5
Wydrukuj komunikat „true”, jeśli iloczyn dwóch liczb ujemnych jest większy od zera, w przeciwnym razie wydrukuj komunikat „false”
Rozwiązanie:
alg
negatywny
początek rzeczy
ja, h, s, m
wniosek
„wprowadź dwie liczby ujemne”
wejście
ja, h
s:=0
m:= ja * godz
Jeśli
m>s
wtedy wniosek nie jest taki
"PRAWDA"
w przeciwnym razie brak wyjścia
,"kłamstwo"
Wszystko
kon
Pętla „for”.
Zadanie nr 1
Znajdować Silnia Liczba naturalnaN ( Silnia liczby naturalnej n jest iloczynem wszystkich liczb naturalnych z przedziału od 1 do N ) Rozwiązanie:
alg
silnia
początek rzeczy
A. B
cały
n i
wniosek
wejście
N
o:= 1
nc za
I z
1 zanim
N
wyjście nr,
"wpisz numer"
wejście
B
a:= a * b
kts
wyjście nr,
„silnia”, n, „liczb całkowitych jest równa” i
kon
Zadanie nr 2
Znajdź maksymalną wartość wśródn - liczby całkowite
Rozwiązanie:
alg
maksymalny
początek rzeczy
a, b
cały
oraz n
wniosek
„wprowadź liczbę liczb całkowitych do porównania”
wejście
N
o:=0
nc za
I z 1 zanim
N
wyjście nr,
"wprowadź numer"
wejście
B
Jeśli
b>a
To
a:=b
Wszystko
kts
wyjście nr,
„maksymalna liczba wśród danych to liczba” i
kon
Zadanie nr 3
Znajdź wśródn-całkowita liczba ujemna
Rozwiązanie:
alg
zbieg okoliczności
początek rzeczy
a, b, c
cały
n, ja, godz
wniosek "
wprowadź liczbę liczb naturalnych"
wejście
N
wyjście nr,
"wprowadź numer"
wejście
B
n:= n - 1
z:= 0
nc za
I z
1 zanim
N
wyjście nr,"
wpisz numer"
wejście
Z
Jeśli
do = b
To
z:= z + 1
Wszystko
kts
wyjście nr,
kon
Zadanie nr 4
n-liczby całkowite są wprowadzane sekwencyjnie. Znajdź liczbę dopasowań z pierwszą liczbą
Rozwiązanie:
początek rzeczy
a, b, c
cały
n, ja, godz
wniosek
"wprowadź liczbę liczb naturalnych"
wejście
N
wyjście nr,
"wprowadź numer"
wejście
B
n:= n - 1
z:= 0
nc za
I z
1 zanim N
wyjście nr,
"wpisz numer"
wejście
Z
Jeśli
do = b
To z:= z + 1
Wszystko
kts
wyjście nr,
„liczba dopasowań z pierwszą liczbą jest równa”, 3
kon
Problem nr 5
n-liczby całkowite są wprowadzane sekwencyjnie. Znajdź różnicę między wartościami maksymalnymi i minimalnymi tych liczb
Rozwiązanie:
alg
różnica
początek rzeczy
A. b, c, d
cały
n i
wniosek
„Wprowadź liczbę cyfr”
wejście
N
o:= 0
s:= 0
nc za
I z 1 zanim N
wyjście nr,
"wprowadź numer"
wejście
D
Jeśli
d>s
To
s:= re
Wszystko
Jeśli
D<а
To
a:= re
Wszystko
kts b:= c - a
wyjście nr,
„różnica pomiędzy wartością minimalną i maksymalną wynosi”, b
kon
Cykl „żegnaj”.
Zadanie nr 1
Znajdź sumę wszystkich liczb z przedziału od 1 do 5
Rozwiązanie:
alg
liczby
początek rzeczy
a, b
wniosek
„wprowadź dwie liczby tak, aby druga liczba była większa od pierwszej”
wejście
a, b
na razie
A<б
a:= a + 1
kts
wyjście nr
, A
kon
Zadanie nr 2
Dane są dwie liczby takie, że druga liczba jest większa od pierwszej. Musisz dodać 1 do pierwszej liczby, aż będzie równa drugiej liczbie, wyświetl ją na monitorze.
Rozwiązanie:
alg
suma
początek rzeczy
a, b, c
wniosek
„wprowadź przedział sumowania”
wejście
a, b
c:=a
na razie
A< б
a:= a + 1
c:= do + a
kts
wyjście nr
„suma liczb w danym przedziale jest równa”, z
kon
Zadanie nr 3
Biorąc pod uwagę dwie dowolne liczby. Podczas gdy ich iloczyn jest mniejszy niż 100, zwiększ każdą liczbę o 2 i wyświetl końcowe liczby na monitorze
Rozwiązanie:
alg
praca
początek rzeczy
a, b, c
wniosek
„wprowadź dwie losowe liczby”
wejście
a, b
s:= 100
na razie
a * b< с
a:= a + 2
b:= b + 2
kts
wyjście nr
, a, b
kon
Tablice jednowymiarowe
Zadanie nr 1
Wypełnij tablicę liczbami losowymi i wypisz jej elementy. Rozwiązanie:
alg
tablica 2
zacznij nienaruszony
n, ja
rzeczy
b, maks
karta rzeczy
za [1:n]
wniosek
„wypełnij tablicę”
wejście
N
maks.:= 0
nc za
I z 1 zanim N
wyjście nr,
„wprowadź element tablicy”
wejście
B
Jeśli
b > maks
To
maks.:=b
Wszystko
kts
wyjście nr,
kon
Zadanie nr 2
Znajdź maksymalny element tablicy i wyświetl go na monitorze Rozwiązanie:
alg
tablica 2
wczesny
cały n, ja
rzeczy
b, maks
karta rzeczy
za [1:n]
wniosek
„wypełnij tablicę”
wejście
N
maks.:= 0
nc za
I z 1 zanim N
wyjście nr,
„wprowadź element tablicy”
wejście
B
Jeśli
b > maks
To
maks.:=b
Wszystko
kts
wyjście nr,
„maksymalny element tej tablicy to”, max
kon
Zadanie nr 3
Znajdź sumę elementów tablicy jednowymiarowej Rozwiązanie:
alg
suma
wczesny cały
n, ja
karta rzeczy
za [1:n]
rzeczy
b, z
wniosek
„wprowadź liczbę elementów tablicy”
wejście
N
z:= 0
nc za
I z 1 zanim N
wyjście nr,
„wprowadź element tablicy”
wejście
B
z:= z + b
kts
wyjście nr,
" suma",n"elementów tablicy jest równa", z
kon
Zadanie nr 4
Znajdź iloczyn elementów tablicy jednowymiarowej Rozwiązanie:
alg
praca
zacznij nienaruszony
W
rzeczy
s, d
karta rzeczy
za [1:n]
wniosek
„wprowadź liczbę elementów tablicy”
wejście
N
d:= 1
nc za
I z 1 zanim N
wyjście nr,
"wprowadź numer"
wejście
S
d:= d * s
kts
wyjście nr,"
iloczyn „n” elementów jest równy „d”.
kon
Tablice
Zadanie nr 1
Wypełnij macierz liczbami losowymi Rozwiązanie:
alg
tablica dwuwymiarowa
cały
n, j, h, w
rozpocznij zakładkę z ubraniami
A
wniosek
"wprowadź liczbę elementów tabeli"
wejście
N
godz:= 0
v:= 0
wyjście nr,
„wypełnij tablicę”
wejście
A
nc za
J z 1 zanim N
Jeśli
a > 0
To
godz:= godz + 1
W przeciwnym razie
v:= v + 1
kts
wyjście nr,
A
kon
Zadanie nr 2
Oblicz liczbę elementów dodatnich i ujemnych pierwszego wiersza macierzy Rozwiązanie:
alg
tablica 2
wczesny
rzeczy b, x, z
cały
W
wniosek
wejście
N x:=0
z:= 0
nc za
I z 1 zanim N
wniosek
ns,,wpisz numer"
wejście
B
Jeśli
b > 0
To
x:= x + 1
W przeciwnym razie
z:= z + 1
Wszystko
kts
wyjście nr,
wyjście nr,
kon
Zadanie nr 3
Oblicz sumę elementów każdego wiersza Rozwiązanie:
alg
tablica 3
początek rzeczy
b, x, z, y
cały
W
karta rzeczy a[1:n, 1:n]
wniosek
„wprowadź liczbę kolumn”
wejście
N x:=0
z:= 0
nc za
I z 1 zanim N
wyjście nr,
„wypełnij tablicę”
wejście
a[1:n, 1:n]
b:= a[ 1,i ]+a[ n, ja ]
kts
wyjście nr,
„liczba liczb dodatnich wynosi”,x
wyjście nr,
„liczba liczb ujemnych jest równa”, z
kon
Zadanie nr 4
Oblicz sumę trzech liczb w drugim wierszu macierzy trzy na trzy. Rozwiązanie:
alg
matryca
wczesny cały
W
karta rzeczy
a[1:3, 1:3]
wniosek
„wypełnij tablicę”
wejście
za [ 1:3, 1:3 ]
n:= 0
nc
Dla
I z 1 zanim 3
n:= n + a[2,i]
kts
wniosek ns,
„suma liczb w drugim wierszu tablicy jest równa”, n
kon
Algorytm rysowania spirali:
użyj Szuflady
alg
wczesny
. przejdź do punktu(3,3)
. opuść pióro
. zakręt(1); zakręt(3); zakręt(5); zakręt(7); zakręt (9)
. podnieś pióro
kon
alg kolei(arg w)
wczesny
. przesunięcie wektorem(a, 0)
. przesunięcie wektorem(0, -a)
. przesunięcie wektorem(-a-1.0)
. przesunięcie wektorem(0, a+1)
kon
Zwróć uwagę na blok poleceń:
Cewka (1); zakręt(3); zakręt(5); zakręt(7); zakręt (9)
Algorytm pomocniczy „turn(arg rzecz a)” jest wywoływany 5 razy, ale nie można go wywołać w pętli „N razy”, ponieważ za każdym razem jest wywoływany z różne wartości argument.
Ale widać, że wartości argumentu zmieniają się od 1 do 9, za każdym razem zwiększając się o 2. Możemy więc pomóc pętla z licznikiem. Ten typ pętli nazywany jest także pętlą „for”.
Pętla z licznikiem- pętla, w której jakaś zmienna w pewnym kroku zmienia swoją wartość z zadanej wartości początkowej na końcową, a dla każdej wartości tej zmiennej ciało pętli jest wykonywane jednokrotnie.
Zwykle tej pętli używa się, jeśli trzeba iterować po niektórych wartościach i wykonać pewne akcje dla każdej z nich.
Ogólny widok cyklu z licznikiem:
nc za<счетчик>z<нач. знач.>zanim<кон. знач.>[krok<знач.>]
<тело цикла (последовательность команд)>
kts
Nie jest konieczne określanie kroku, jeśli nie jest określony, uważa się go za równy jeden.
Teraz możemy przepisać algorytm „spirali” w ten sposób:
użyj kreślarza
alg
wczesny
. przejdź do punktu(3,3)
. opuść pióro
. cały rozmiar
. nts dla rozmiaru od 1 do 9, krok 2
. . cewka (rozmiar)
. kts
. podnieś pióro
kon
alg turn (arg rzecz)
wczesny
. przesunięcie wektorem(a, 0)
. przesunięcie wektorem(0, -a)
. przesunięcie wektorem(-a-1.0)
. przesunięcie wektorem(0, a+1)
kon
W tym przykładzie zmienna licznika „rozmiar” otrzyma wartości: 1, 3, 5, 7, 9. Czyli: Pętla zostanie wykonana 5 razy. Dla każdej wartości zmiennej „size” ciało pętli zostanie wykonane jednokrotnie, w naszym przykładzie jest to wywołanie algorytmu pomocniczego „coil (argthing)”.
Przed pierwszym użyciem zmiennej należy ją zadeklarować, czyli jaki jest jej typ. Robi się to w naszym programie w wierszu „integer size”, czyli wskazujemy, że będziemy używać zmiennej „size” do przechowywania liczb całkowitych i dlatego musimy przydzielić na nią pamięć. O zmiennych powiemy więcej nieco później.
Schemat blokowy takiego algorytmu wygląda następująco:
Spójrzmy na inny przykład:
Najpierw zapamiętajmy i napiszmy algorytm pomocniczy, który narysuje kwadrat w punkcie (x, y). Dla urozmaicenia użyjemy polecenia do rysowania poruszaj się wektorem(w poprzednich przykładach były one przesunięte o punkt).
Algorytm mógłby wyglądać następująco:
alg kwadrat(arg rzeczy x, y, bok)
wczesny
. przejdź do punktu(x, y)
. przesunięcie wektorem(-strona/2, strona/2)
. opuść pióro
. przesunięcie wektorem(bok, 0)
. przesunięcie wektorem(0, -bok)
. przesunięcie wektorem(-bok, 0)
. przesunięcie wektorem(0, bok)
. podnieś pióro
kon
Korzystając z tego pomocniczego algorytmu, narysujemy następujący obraz:
W tym celu posłużymy się pętlą „for”. Przestudiuj przykładowy program:
użyj Szuflady
al rysunek 1
wczesny
. cały z
. nc dla z od 2 do 10 krok 2
. . kwadrat(0, 0, z)
. kts
kon
alg kwadrat(arg rzeczy x, y, bok)
wczesny
. przejdź do punktu(x, y)
. przesunięcie wektorem(-strona/2, strona/2)
. opuść pióro
. przesunięcie wektorem(bok, 0)
. przesunięcie wektorem(0, -bok)
. przesunięcie wektorem(-bok, 0)
. przesunięcie wektorem(0, bok)
. podnieś pióro
kon
W tym przykładzie zmienna „z” otrzyma wartości: 2, 4, 6, 8, 10. Tj. Pętla zostanie wykonana 5 razy. Dla każdej wartości „z” ciało pętli zostanie wykonane jednokrotnie, w naszym przykładzie jest to wywołanie algorytmu pomocniczego kwadrat.
Przed pierwszym użyciem zmiennej należy ją opisać, czyli wskazać jej typ. Robimy to w naszym programie w wierszu „int z”, czyli wskazujemy, że do przechowywania liczb całkowitych będziemy używać zmiennej „z” i dlatego musimy przydzielić na nią pamięć. O zmiennych powiemy więcej nieco później.
Jak zauważyłeś, algorytm wykorzystywał nie tylko liczby, ale także wyrażenia algebraiczne, formuły takie jak „-side/2”. W informatyce wyrażenia te nazywane są arytmetyka. Reguły języka pozwalają, że przy pisaniu algorytmów wszędzie tam, gdzie można zapisać liczbę, można również zapisać dowolne wyrażenie arytmetyczne.
Rozważmy problem:
Program otrzymuje na wejściu liczbę naturalną nieprzekraczającą 2 * 10 9. Oblicz sumę cyfr tej liczby.
Na pierwszy rzut oka zadanie jest dość proste: musisz kolejno wybierać liczby w liczbie i dodawać je do sumy. Jednocześnie jest oczywiste, że liczba cyfr w liczbie może się zmieniać, dlatego ostateczna wartość parametru pętli for okazuje się niepewna i pojawiają się trudności z jego wykorzystaniem.
W algorytmy cykliczne, w którym nie można uzyskać liczby powtórzeń określonego zestawu poleceń przed jego rozpoczęciem, stosuje się pętle warunkowe.
Cykl „żegnaj”.
Jedną z takich konstrukcji w języku programowania Idol jest cykl jak dotąd. Cykl ten, często nazywany pętla z warunkiem wstępnym, ma następujący format nagrywania:
- jeszcze nie ma warunku
- pętla_ciało
Warunek napisany później słowo funkcyjne while , jest wyrażeniem logicznym.
Pętla przebiega następująco:
- Obliczana jest wartość wyrażenia logicznego.
- Jeżeli wynikiem obliczeń jest nie, pętla kończy się i Idol przechodzi do pierwszego polecenia po pętli while. Jeżeli wynik obliczeń jest twierdzący, to wykonywane jest ciało pętli, po czym wartość wyrażenia jest obliczana ponownie z nową wartością.
Ważny! W treści pętli musi się jeszcze zmienić pewna wartość związana z warunkiem, aby zapewnić koniec pętli, w przeciwnym razie pętla może okazać się wieczna.
Teraz wykorzystajmy pętlę while do rozwiązania naszego problemu
- numer wejściowy
- nts, gdy liczba > 0
- suma:= suma + mod(liczba, 10)
- liczba:= div(liczba, 10 )
- kwota wypłaty
Tak więc przy każdym wykonaniu ciała pętli ostatnia cyfra liczby jest dodawana do wartości sumy, po czym liczba jest zmniejszana 10 razy. Oczywiście ostatecznie num będzie równe 0, po czym pętla się zakończy.
Cykl „do”.
Istnieje inny wariant pętli warunkowej w programie Idol, zwany pętlą dopóki, który ma następujący format:
- pętla_ciało
- kts pod warunkiem
Jeśli w pętli while warunek jest sprawdzany przed treścią pętli, to w pętli dopóki warunek jest sprawdzany po. Dlatego cykl ten jest często nazywany pętla z warunkiem końcowym. Ciało takiej pętli zawsze zostanie wykonane przynajmniej raz
Do tego czasu pętla działa w następujący sposób:
- Wykonywane jest ciało pętli
- Obliczana jest wartość wyrażenia logicznego. Jeżeli wynikiem obliczeń jest nie, wówczas ciało pętli zaczyna się ponownie wykonywać itd. Jeżeli wynikiem obliczeń jest tak, wówczas pętla się kończy, a Idol przystępuje do wykonywania kolejnego polecenia po pętli.
Zadanie. Danem wejściowym programu jest ciąg liczb całkowitych kończący się na zero. Znajdź liczbę liczb ujemnych w ciągu. Gwarantowane jest, że ciąg zawiera co najmniej jedną liczbę niezerową.
(Fragment kodu programu)
- numer wejściowy
- jeśli liczba 0
- wtedy k:= k + 1
- kc przy liczbie = 0
- wyjście k