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ć:

cały
nc dla a od 0 do 9
...ciało pętli
kts

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.

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.

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

  1. Robot w dowolnym punkcie pola. Przesuń Robota o 4 pola w prawo, kolorując je.
  2. Utwórz nowe środowisko początkowe, rysując na boisku kwadrat o boku 4 kwadratów. Zapisz ustawienie jako początkowe.
  3. 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”.
W języku algorytmicznym systemu programowania KuMir stosowane są trzy typy wielkości: liczby całkowite ( cały), prawdziwy ( rzeczy) i litera ( oświetlony).
Rodzaj ilości- definiuje zbiór wartości, jakie może przyjąć dana wartość oraz zbiór działań, które można wykonać przy pomocy tej wartości.
Ogrom to pojedynczy obiekt informacyjny, który ma nazwę, wartość i typ.

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
wykładnik x(ex) Natura logarytm x
moduł x
pierwiastek kwadratowy x
reszta z dzielenia (A przez B)
część całkowita liczby
liczba „pi” - 3,14159

rzeczy
rzeczy
rzeczy
rzeczy
rzeczy
rzeczy
rzeczy
rzecz, nienaruszona
rzeczy
rzeczy

rzeczy
rzeczy
rzeczy
rzeczy
rzeczy
rzeczy
rzeczy
cały
cały
żadnego argumentu

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:

  1. Obliczana jest wartość wyrażenia logicznego.
  2. 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:

  1. Wykonywane jest ciało pętli
  2. 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