Ugniježđene petlje idol. Algoritamski jezični idol. Petlja sa stanjem

Razmotrite problem:

Program prima prirodni broj koji ne prelazi 2 * 10 9 na ulazu. Odredite zbroj znamenki ovog broja.

Na prvi pogled, zadatak je vrlo jednostavan: potrebno je redom istaknuti brojeve u broju i dodati ih zbroju. Istodobno, očito je da se broj znamenki u broju može promijeniti, pa se konačna vrijednost parametra petlje za nedefinirana i postoje poteškoće s njegovom primjenom.

V. ciklički algoritmi ako se broj ponavljanja određenog skupa naredbi ne može dobiti prije nego što započne, primjenjuju se uvjetne petlje.

Zbogom ciklus

Jedan takav konstrukt u programskom jeziku Kumir je ciklus ćao... Ovaj ciklus, koji se često naziva i petlja preduvjeta, Ima slijedeći format zapisi:

  • nc do sada stanje
  • ciklus_tijelo

Uvjet napisan nakon dosadašnjeg je booleov izraz.

Petlja se izvodi na sljedeći način:

  1. Izračunava se vrijednost logički izraz.
  2. Ako rezultat izračuna nije, tada se izvršavanje ciklusa završava, a Idol odlazi na prvu naredbu nakon ciklusa bye. Ako je rezultat izračuna da, tada se izvršava tijelo petlje, nakon čega se ponovno izračunava vrijednost izraza s novom vrijednošću.

Važno! U tijelu petlje, za sada, mora doći do promjene neke vrijednosti povezane s uvjetom kako bi se osigurao kraj petlje, u protivnom slučaju petlja može završiti zauvijek.

Koristimo while petlju za rješavanje našeg problema.

  • ulazni broj
  • nc dok je broj> 0
  • zbroj: = zbroj + mod (broj, 10)
  • broj: = div (broj, 10)
  • iznos povlačenja

Dakle, tijekom svakog izvođenja tijela petlje, posljednjoj znamenci broja dodaje se vrijednost zbroja, a zatim se broj smanjuje 10 puta. Očigledno, na kraju će broj postati 0, nakon čega će petlja prestati.

Ciklus "do tada"

U Kumiru postoji još jedna verzija petlje s uvjetom, do tada zvana petlja, koja ima sljedeći format:

  • ciklus_tijelo
  • kts u stanju

Ako je u petlji dok se uvjet provjerava prije tijela petlje, onda u petlji do tada - poslije. Stoga se ovaj ciklus često naziva petlja s postuslovom... Tijelo takve petlje uvijek će se izvesti barem jednom.

Do tada ciklus radi na sljedeći način:

  1. Izvodi se tijelo petlje
  2. Vrijednost logičkog izraza se procjenjuje. Ako je rezultat izračunavanja ne, tada se tijelo petlje ponovno počinje izvršavati i tako dalje. Ako je rezultat izračunavanja potvrdan, tada se petlja završava, a Idol nastavlja s izvršavanjem sljedeće naredbe nakon petlja.

Zadatak. Program prima niz od nula završenih cijelih brojeva na ulazu. Pronađi broj negativnih brojeva u nizu. Jamči se da niz sadrži barem jedan broj različit od nule.

(Isječak programskog koda)

  • ulazni broj
  • ako je broj 0
  • tada je k: = k + 1
  • kts pri broju = 0
  • ružičasta

1. Uvod

sustav "Kumir" (naziv dolazi od riječi "Skup svjetova za obuku"), koji će vas upoznati s ovim elektronička varijanta udžbenik.
Programeri kumirskog jezika slijedili su cilj stvaranja jednostavnog jezika za početni tečaj informatike, upoznavanje suvremene tehnologije programiranja i dopuštanje industrijske uporabe. Za osnovu je uzet školski algoritamski jezik. Jezik je dopunjen nekim značajkama koje ga pretvaraju iz obrazovnog u produkcijski. Jezik ima:
vrste cijela, stvar, osvijetljena; tradicionalni skup operacija nad podacima ovih vrsta (uključujući operacije nad nizovima i standardni skup matematičke funkcije);
nizovi ( tab) navedenih vrsta; konstrukcijski kontrolni konstrukti za petlje, grananje itd.
Kumir je otvoren - povezivanje vanjskih izvođača obogaćuje jezik novim mogućnostima: od upravljanja bazom podataka i rada s geometrijskim objektima do proširenja skupa dopuštenih numeričkih tipova (u ovom slučaju jezik će omogućiti miješanje novih vrsta s postojećim numeričkim vrstama u izrazima ).
Moderna tehnologija programiranje uči razbijanje programa ne samo na potprograme, već i na veće jedinice: skupove programa koji rade na zajedničkim podacima. U različitim programskim jezicima takve se jedinice nazivaju različito, u Kumiru se takva jedinica naziva "Izvršitelj". Koncept izvođača iznimno je važan u praktičnom radu i trebao bi se uvesti u najranije moguće faze osposobljavanja.
Iskustvo korištenja Kumira u nastavi i razvoju obrazovnog softvera pokazalo je da se jezik lako uči i istodobno je dovoljno moćan da proširi široku klasu proizvodnih zadataka.
Kao i E-radionica, Kumir je integrirani sustav koji uključuje uređivač teksta, inkrementalni prevoditelj s nultim vremenom odaziva i jednostavan i pogrešan alat za otklanjanje pogrešaka. Dobar naziv za ovu vrstu sustava je "Editor-Compiler": dok uđete u program, prevoditelj ga obrađuje i u svakom trenutku program je spreman za rad bez i najmanjeg odlaganja.

2. Nazivi i vrste količina. Kumirove operacije

Bilo koji simboli ruskog i latinskog pisma, kao i brojevi, mogu se koristiti u bilježenju imena varijabli. Ime ne smije započinjati brojem. Ne postoje stroga ograničenja u pogledu duljine imena u sustavu Kumir, ali radi lakšeg uređivanja i izbjegavanja prelijevanja nizova, varijablama i algoritmima ne treba davati previše duga imena... Obično se naziv bira tako da možete razumjeti čemu služi algoritam. Prilikom uređivanja programa također se morate sjetiti da se ruska i latinična slova, slična pravopisu, razlikuju u računalima. Na primjer, ako je pri opisivanju varijable s imenom A korisnik otkucao "A" na latiničnoj abecedi, a u tekstu algoritma pokušao pristupiti ovoj varijabli upisujući njeno ime na ruskom alfabetu, poruka " naziv nije definiran "pojavit će se na" poljima "...
U algoritamskom jeziku Kumirskog programskog sustava koriste se tri vrste veličina: cijeli brojevi ( netaknut), pravi ( stvari) i pismo ( litas).
Vrsta količine- definira skup vrijednosti koje vrijednost može poduzeti i skup radnji koje se mogu izvesti s tom vrijednošću.
Količina je zasebni informacijski objekt koji ima naziv, vrijednost i vrstu.

Konstantna vrijednost (konstanta) ne mijenja svoju vrijednost tijekom izvršavanja algoritma.
Varijabla može promijeniti vrijednost tijekom izvršavanja algoritma.
Izraz- zapis koji definira slijed radnji na vrijednostima. Izraz može sadržavati konstante, varijable, znakove operacije, funkcije.
Za pisanje izraza u Kumiru koriste se sljedeći simboli:

Za označavanje znakova logičke operacije koriste se simboli:
= jednak;
< >nejednak;
< меньше;
> više;
< = меньше или равно;
> = veće ili jednako;
Za snimanje složenih uvjeta takve se operacije koriste kao: I, ILI NE.
I -
istodobno ispunjenje navedenih uvjeta (X> 0 i X< = 2);
ILI- ispunjenje barem jednog od uvjeta (X> 0 ili Y> 0);
NE- poricanje.

3. Ugrađene funkcije kumirskog jezika

Evo primjera ugrađenih funkcija:

Apel

Funkcija

Vrste

Argument

Funkcije

GRIJEH (X) COS (X) TG (X) EXP (X) LN (X) ABS (X) SQRT (X) MOD (A,B) INT (X) PI

sinus x kosinus x tangenta x
eksponent x (ex) prirode. logaritam x
modul x
kvadratni korijen x
ostatak dijeljenja (A po B)
cijeli broj broja
broj "pi" - 3,14159

stvari
stvari
stvari
stvari
stvari
stvari
stvari
stvar, netaknuta
stvari
stvari

stvari
stvari
stvari
stvari
stvari
stvari
stvari
netaknut
netaknut
bez argumenta

Primjer pisanja aritmetičkih izraza u algoritamskom jeziku:

4. Naredbe INPUT / OUTPUT informacije

Često je potrebno organizirati razmjenu informacija ("dijalog") između osobe i računala u procesu izvršavanja algoritma. U tu svrhu u algoritamskom jeziku postoje posebne naredbe za PRIKAŽANJE informacija iz memorije računala na zaslon i ULAZ informacija s tipkovnice (od osobe) u memoriju računala.
Naredba INPUT - naredba kojom se vrijednosti varijabli postavljaju putem ulaznih uređaja (tipkovnica).
Naredba OUTPUT- naredba kojom se vrijednost količine odražava na izlaznom uređaju računala (zaslon monitora).
Budući da se u algoritamskom jeziku za spremanje informacija koriste vrijednosti, tada su u ulazno / izlaznim naredbama naznačeni nazivi veličina čije se vrijednosti moraju prikazati (prikazati na ekranu) ili unijeti (zapamtiti u memorija računala).
Primjer:

Riječ usluge NS (nova linija) pokazuje računalu da bi se podaci trebali prikazati u novom retku.

5. Naredba dodjeljivanja. Izrada i uređivanje programa linearne strukture

Da biste zapamtili ili promijenili vrijednost količine, postoji posebna naredba na algoritamskom jeziku - naredba dodjele, koja je napisana kao:

NAZIV VRIJEDNOSTI: = IZRAZ

Znak ": =" (dvotočka slijedi jednakost) naziva se znakom zadaci i čita kao "dodijeli" (na primjer, naredba "n: = e" čita "n dodijeli e"). Prilikom izvršavanja naredbe dodjele, računalo prvo izračunava izraz napisan s desne strane (zamjenjujući nazive veličina s njihovim vrijednostima), a zatim dobivenu vrijednost izraza zapisuje u memoriju.

Algoritmi koji su jednostavni nizovi radnji nazivaju se algoritmi linearne strukture.
Razmotrite proces stvaranja linearni algoritam na primjeru vrednovanja izraza:
1. Izračunaj zbroj dva broja
2. Napišite program za pronalaženje hipotenuze pravokutnog trokuta po dva zadana kraka
3. Nađi volumen kocke ako joj je poznata stranica

6. Stvaranje i uređivanje programa grane strukture

Rješavanje problema ne može se uvijek prikazati kao linearni algoritam. Postoje zadaci u kojima je potrebno organizirati izbor izvođenja niza radnji ovisno o bilo kojim uvjetima. Takvi se algoritmi nazivaju algoritmi grananja. U sustavu programiranja Kumir, za stvaranje algoritma za grananu strukturu, predviđene su konstrukcije "AKO - ONDA - OSTALO - SVE" i "ODABERI - PRI - SVE".

Naredba grane: AKO - ONDA - OSTALO - SVE

Naredba grananja - razdvaja algoritam na dva puta ovisno o određenom stanju; tada izvršavanje algoritma ide u opći nastavak. Grananje je potpuno i nepotpuno.

Grafički dijagram izvođenja projekta " ako"

Uslužne riječi " ako", "zatim", "inače"imaju uobičajeno značenje. Riječ" svi"znači kraj strukture. Između" zatim"i" inače" - u jednom ili više redaka - zapisan je niz naredbi algoritamskog jezika (serija 1). Između" inače"i" svi"snima se drugi slijed naredbi (serija 2). Serija 2 zajedno sa servisnom riječju" inače"može biti odsutan. Prilikom izvođenja konstrukcije" ako"Računalo prvo provjerava stanje napisano između" ako"i" zatim". Rezultat provjere je ili DA ili NE. Ako je moguće DA, tada se izvršava SERIJA 1, a ako NE, - zatim SERIJA 2 (ako postoji) .
Ako uvjet nije ispunjen (ispada NE), a serija 2 zajedno s " inače"je odsutan, računalo odmah nastavlja s izvršavanjem naredbi napisanih iza riječi" svi".

7. Vrste ciklusa u sustavu programiranja Kumir

Algoritmi, čije se pojedinačne radnje ponavljaju mnogo puta, nazivaju se algoritmi ciklične strukture. Skup akcija algoritma povezan s ponavljanjem naziva se petlja.
Naredba ciklusa omogućuje ponovljeno izvršavanje niza naredbi (tijelo petlje) prema nekom uvjetu.
Za programiranje algoritama cikličke strukture u sustavu programiranja Kumir postoje dvije vrste ciklusa: ciklus s preduvjetom (za sada ciklus) i ciklus s parametrom (ciklus za).

Petlja s preduvjetom (petlja pa)

Petlja s preduvjetom (za sada petlja) - petlja koja se ponavlja sve dok je uvjet petlje istinit. Riječi usluge NT(početak ciklusa) i KZ(završetak ciklusa) ispisani su strogo jedan ispod drugog i povezani su okomitom linijom. Desno od ovog retka zapisan je ponovljeni niz naredbi (tijelo petlje).

Kad se izvrši, računalo ciklično ponavlja sljedeće radnje:
a) provjerava napisano iza riječi dok stanje;
b) ako uvjet nije ispunjen (uvjet je lažan), tada se izvršavanje ciklusa završava i računalo počinje izvršavati naredbe napisane nakon KZ... Ako je uvjet ispunjen (uvjet je istinit), tada računalo izvršava tijelo ciklusa, ponovno provjerava stanje itd.
Ako je uvjet u petlji dok se ne promatra od samog početka, tada se tijelo petlje ne izvršava niti jednom.
Komentar... Izvođenje ciklusa dok ne može se dovršiti ako je uvjet cijelo vrijeme istinit (ova se situacija obično naziva petlja). Stoga, kako bi se izbjegle takve situacije, tijelo petlje mora sadržavati naredbe za promjenu uvjeta.

S obzirom na pozitivan cijeli broj N. Izračunajte faktorijel ovog broja: N! = 1 * 2 * 3 * ... * N.

Petlja s parametrom (petlja za)

Petlja s parametrom(petlja za) - ponovno izvršavanje tijela petlje dok cijeli broj parametra prolazi kroz skup svih vrijednosti od početnog (i1) do konačnog (in):

Ovdje je i cjelobrojna varijabla koja se naziva parametar petlje: i1, in su početne i konačne vrijednosti parametra petlje, koje se mogu specificirati proizvoljnim cijelim brojevima ili izrazima s cijelim brojevima; h - korak promjene vrijednosti parametra ciklusa, vrijednost koraka može biti bilo koji cijeli broj (i pozitivan i negativan). Unos "korak h" u prvom retku možda uopće neće biti prisutan, dok se zadana vrijednost koraka pretpostavlja 1.
Prilikom izvođenja petlje za, njegovo tijelo se izvodi za i = i1, i = i1 + h, i = i1 + 2 * h ,. ... ... , i = u. Pravila algoritamskog jezika dopuštaju specificiranje bilo kojih cijelih brojeva i1, u, h. Konkretno, in može biti manji od i1. Ako je u ovom slučaju vrijednost h< 0, то цикл выполняется нужное количество раз, а если h имеет положительное значение, то этот случай не считается ошибочным - просто тело цикла не будет выполнено ни разу, а ЭВМ сразу перейдет к выполнению команд, записанных после KZ... Kad je h = 0, dolazi do petlje.

Primjer: S obzirom na pozitivan cijeli broj N. Izračunajte faktorijel ovog broja: N! = 1 * 2 * 3 * ... * N.

8. Algoritmi ponavljajućih izraza

U matematici i računarstvu često postoje sekvence u kojima se svaki sljedeći član računa kroz prethodne.
V. aritmetička progresija, na primjer, svaki sljedeći pojam jednak je prethodnom, uvećan za razliku progresije:

ai =ai-1 +d

U nizu 1, 1, 2, 3, 5, 8, 13, ... ( naziva se Fibonaccijev niz) svaki sljedeći član jednak je zbroju dva prethodna. Za ovaj slijed

ai = ai-1 + ai-2, a1 = a2 = 1

Pozivaju se formule koje izražavaju sljedeći član niza kroz jednog ili više prethodnih članova relacije ponavljanja.

9. Tablične vrijednosti i raditi s njima

Za pisanje algoritama koji rade s velikom količinom informacija, u algoritamskom jeziku postoje posebne vrijednosti tablice koje se nazivaju tablice (nizovi).
Tablične vrijednosti čine druge vrijednosti, obično cijeli brojevi ili stvarne vrijednosti, koje se nazivaju stavke. Stavke u tablici mogu se rasporediti na različite načine. U algoritamskom jeziku programskog sustava Kumir koriste se 2 najčešće vrste tablica: linearne i pravokutne tablice.

Rad s linearnim tablicama (jednodimenzionalni nizovi)

Kao i svaka količina, linearni stol zauzima prostor u memoriji računala, ima naziv, vrijednost i vrstu. U Kumiru se koriste tablice cijelih (celtab) i stvarnih (materijalnih) vrsta. Na primjer:

Zapis celtab A [1: 5] znači da je vrijednost A tablica (kartica), koja se sastoji od cijelih (cijelih) brojeva, elementi ove tablice imaju indekse od 1 (donja granica) do 5 (gornja granica). Vrijednost A je pet cijelih brojeva: 3, 15, 0, -10,101.
Elementi tablice nemaju zasebna imena. Za označavanje i-tog elementa tablice A koristi se zapis A [i]. Na primjer, kada se izvrši naredba A [3]: = A [2] + A [4], računalo će umjesto A [2] i A [4] zamijeniti vrijednosti 2. i 4. elementa Tablica A, odnosno brojevi 15 i -10, zbrajaju ih i dobivenu vrijednost dodjeljuju 3. elementu, pa se umjesto 0 vrijednost 5 pojavljuje na mjestu 3. elementa u tablici.
Bilo koji (i pozitivni i negativni) cijeli brojevi i 0. mogu se koristiti kao vrijednosti granica tablice. Vrijednost donje granice mora biti manja od vrijednosti gornje granice; ako su jednake, smatra se da se tablica sastoji od jednog elementa . Ako se u opisu tablice, zbog klizanja jezika, donja granica pokaže većom od gornje, na primjer, celtab [3: 1], tada se to neće smatrati pogreškom, a ne poruke će se pojaviti u "poljima" pri ulasku u algoritam. U tom će se slučaju smatrati da u ovoj tablici nema elemenata, a poruka "loš indeks" pojavit će se pri prvom pristupu tablici.

Zadatak.

Rad s pravokutnim tablicama (matricama)

Kao i linearna tablica, matrica zauzima prostor u memoriji računala, ima naziv, vrijednost i vrstu. U Kumiru se koriste tablice cijelih (celtab) i stvarnih (materijalnih) vrsta.

Oznaka celtab A [1: 5, 1: 2] znači da je vrijednost A tablica (kartica) koja se sastoji od cijelih (cijelih) brojeva, elementi ove tablice imaju indekse od (prvi stupac, prvi red) do (posljednji stupac, posljednji redak). Vrijednost A je deset cijelih brojeva: 3, 15, 0, -10, 101, 200, -45, 50, 10, 222.
Elementi tablice nemaju zasebna imena. Za označavanje i-tog elementa tablice A koristi se zapis A [i, j]. Na primjer, prilikom izvršavanja naredbe A [3, 1]: = A [2, 1] + A [4, 1], računalo će zamijeniti A [2, 1] i A [4, 1] vrijednosti Drugog i četvrtog elementa prvog stupca tablice A, odnosno brojevi 15 i -10, zbrajat će ih i dodijeliti dobivenu vrijednost trećem elementu u prvom retku, dakle, umjesto trećeg elementa prvog retka u tablici, umjesto 0, pojavit će se vrijednost 5.
Bilo koji (i pozitivni i negativni) cijeli brojevi i 0. mogu se koristiti kao vrijednosti granica tablice. Vrijednost donje granice mora biti manja od vrijednosti gornje granice; ako su jednake, smatra se da se tablica sastoji od jednog elementa . Ako se u opisu tablice zbog klizanja jezika donja granica pokaže većom od gornje, na primjer, celtab [3: 1, 5: 2], tada se to neće smatrati pogreškom , a pri ulasku u algoritam neće se pojaviti poruke u "poljima". U tom će se slučaju smatrati da u ovoj tablici nema elemenata, a poruka "loš indeks" pojavit će se pri prvom pristupu tablici.

Zadatak. U danoj tablici B odredite indeks i vrijednost maksimalnog elementa.

Dodatak: Zadaci

Linearni algoritmi

Problem broj 1

Pronađi zbroj dva broja - a i b
Riješenje:

alg iznos
rano stvari a, b, c
izlaz "unesite vrijednost 2 broja"
ulazni a, b
c: = a + b
izlaz NS , "zbroj brojeva", a, "i", b, "jednako", c
con

Problem broj 2

Nađi razliku dva broja
Riješenje:

alg razlika
rano stvari a, b, c
izlaz "unesite varijabilne vrijednosti"
ulazni a, b
c: = a - b
ns izlaz, "razlika brojeva", a, "i", b, "jednaka", c
con

Problem broj 3

Pronađi proizvod bilo koja dva prirodna broja
Riješenje:

netaknut a, b, c

alg raditi
rano
izlaz
" unesite dva broja "
ulazni
a,bc: =a +b
ns izlaz,
"
umnožak brojeva ", a," i ", b" jednako ", c
con

Problem broj 4

Nađi količnik dva prirodna broja
Riješenje:

stvari a, b, c

alg privatna
rano
izlaz "
unesite dividendu i djelitelja "
ulazni
a, b
c: = a / b
ns izlaz,
"količnik", a, "i", b, "jednako", c
con

Problem broj 5

Nađi aritmetičku sredinu pet proizvoljnih brojeva
Riješenje:

stvari a B C D E F

alg aritmetika
početi stvari a B C D E F
izlaz "unesite bilo kojih 5 brojeva"
ulazni a B C D E
f: = (a + b + c + d + e)/ 5
ns izlaz , "aritmetička sredina 5 brojeva jednaka je", f
con

Grananje

Problem broj 1

Pronađi najveći među 3 cijela broja (brojevi su proizvoljni)

alg maksimum
netaknut a B C
izlaz "unesite tri proizvoljna broja"
ulazni a B C
ako a> b> c
tada izlaz ns ," najveći broj je "i
svi
ako a<б>s
tada izlaz ns , "najveći broj je", b
svi
ako a<б<с
tada izlaz ns , "najveći broj je", s
svi
con

Problem broj 2

Navedena su dva proizvoljna broja. Ako je prvi broj veći od drugog, tada mu dodijelite njihov zbroj, a njihov proizvod drugom broju. Ako je drugi broj veći od prvog, dodijelite njihov proizvod prvom broju, a zbroj drugom.

alg stanje
početi stvari a, b
izlaz "unesite dva broja"
ulazni a, b
ako a> b
zatim a: = a + b
b: = a * b
inače a: = a * b
b: = a + b
ns izlaz , a, b
con

Zadatak broj 3:

Pronađite među 4 proizvoljna broja minimum
Riješenje:

alg minimum
početi stvari a, b, c, f
izlaz "unesite 4 proizvoljna broja"
ulazni a, b, c. e
ako a> b> c> f
tada izlaz ns , "najveći broj je", i
svi
ako a<б>c> e
tada izlaz ns , "najveći broj -", b
svi
ako
a<б<с>e
tada izlaz ns , "najveći broj -", s
svi
ako
a<б<с<е
tada izlaz ns , "najveći broj -", e
svi
con

Problem broj 4

Postoje 2 kraka (2 cm i 2 cm) jednakokračnog trokuta i njegove osnove (2,82 cm). Odredite je li trokut pravokutni.
Riješenje:

alg trokut
početi stvari ja, h, s
i: = 2
h: = 2
c: = 2,82
ako s ** 2 = (i ** 2) + (h ** 2)
zatim zaključak "istina"
inače izlaz "Laganje"
svi
con

Problem broj 5

Ispišite poruku "true" ako je umnožak dva negativna broja veći od nule, u protivnom ispišite poruku "false"
Riješenje:

alg poricanje
početi stvari i, h, s, m
izlaz "unesite dva negativna broja"
ulazni ja, h
c: = 0
m: = i * h
ako m> s
tada izlaz ns , "istina"
inače izlaz ns ,"Laganje"
svi
con

Ciklus "za"

Problem broj 1

Pronaći Faktorijel prirodni brojn ( Faktor prirodnog broja n je umnožak svih prirodnih brojeva u rasponu od 1 do n ) Riješenje:

alg faktorijel
početi stvari
a. b
netaknut
n, i
izlaz

ulazni
n
a: = 1
nts za
i iz 1 prije n
ns izlaz,
"unesite broj"
ulazni
b
a: = a * b
kts
ns izlaz
,
"factorial", n, "integers je jednak", i
con

Problem broj 2

Pronađite najveću vrijednost međun - cijeli brojevi
Riješenje:

alg maksimum
početi stvari
a, b
netaknut
i, n
izlaz
"unesite broj cijelih brojeva za usporedbu"
ulazni
n
a: = 0
nts za
i iz 1 prije n
ns izlaz,
"unesite broj"
ulazni
b
ako
b> a
zatim
a: = b
svi
kts
ns izlaz,
"najveći broj podataka je broj", i
con

Problem broj 3

Pronađi međun-cijeli brojevi negativni
Riješenje:

alg koincidencija
početi stvari
a, b, c
netaknut
n, i, s
izlaz "
unesite broj prirodnih brojeva "
ulazni
n
ns izlaz,
"unesite broj"
ulazni
b
n: = n - 1
h: = 0
nts za
i iz 1 prije n
ns izlaz,"
unesite broj "
ulazni
s
ako
c = b
zatim
s: = s + 1
svi
kts
ns izlaz
,

con

Problem broj 4

N-cijeli brojevi unose se uzastopno. Pronađi broj podudaranja s prvim brojem
Riješenje:

početi stvari a, b, c
netaknut
n, i, s
izlaz
"unesite broj prirodnih brojeva"
ulazni
n
ns izlaz,
"unesite broj"
ulazni
b
n: = n - 1
h: = 0
nts za
i iz 1 prije n
ns izlaz,
"unesite broj"
ulazni
s
ako
c = b
zatim s: = s + 1
svi
kts
ns izlaz
,
"broj podudaranja s prvim brojem je", h
con

Problem broj 5

N-cijeli brojevi unose se uzastopno. Pronađite razliku između maksimalne i minimalne vrijednosti zadanih brojeva
Riješenje:

alg razlika
početi stvari
a. b, c, d
netaknut
n, i
izlaz
"Unesite broj brojeva"
ulazni
n
a: = 0
c: = 0
nts za
i iz 1 prije n
ns izlaz,
"unesite broj"
ulazni
d
ako
d> c
zatim
c: = d
svi
ako
d<а
zatim
a: = d
svi
kts
b: = c - a
ns izlaz,
"razlika između minimalne i maksimalne vrijednosti jednaka je", b
con

Zbogom ciklus

Problem broj 1

Pronađite zbroj svih brojeva u rasponu od 1 do 5
Riješenje:

alg brojevi
početi stvari a, b
izlaz "unesite dva broja tako da je drugi broj veći od prvog"
ulazni a, b
nc zbogom a<б
a: = a + 1
kts
ns izlaz
, a
con

Problem broj 2

S obzirom na dva broja takva da je drugi broj veći od prvog. Prvom broju potrebno je dodati 1 dok ne bude jednak drugom broju, prikazati ga na monitoru.
Riješenje:

alg iznos
početi stvari a, b, c
izlaz "unesite interval zbrajanja"
ulazni a, b
c: = a
nc zbogom a< б
a: = a + 1
c: = c + a
kts
ns izlaz
, "zbroj brojeva u ovom intervalu jednak je", s
con

Problem broj 3

Navedena su dva proizvoljna broja. Dok je njihov proizvod manji od 100, povećajte svaki broj za 2 i prikažite konačne brojeve na monitoru
Riješenje:

alg raditi
početi stvari a, b, c
izlaz "unesite dva proizvoljna broja"
ulazni a, b
c: = 100
nc zbogom a * b< с
a: = a + 2
b: = b + 2
kts
ns izlaz
, a, b
con

Jednodimenzionalni nizovi

Problem broj 1

Ispunite niz slučajni brojevi i ispisati njegove elemente Rješenje:

alg niz 2
netaknut
n, i
stvari
b, maks
generalštaba
a [1: n]
izlaz
"ispuniti niz"
ulazni
n
max: = 0
nts za
i iz 1 prije n
ns izlaz,
"unesite element polja"
ulazni
b
ako
b> maks
zatim max: = b
svi
kts
ns izlaz
,

con

Problem broj 2

Pronađite maksimalni element niza i prikažite ga na monitoru Rješenje:

alg niz 2
rano
netaknut n, i
stvari
b, maks
generalštaba a [1: n]
izlaz
"ispuniti niz"
ulazni
n
max: = 0
nts za
i iz 1 prije n
ns izlaz,
"unesite element polja"
ulazni
b
ako
b> maks
zatim max: = b
svi
kts
ns izlaz
,
"maksimalni element ovog niza je", max
con

Problem broj 3

Pronađi zbroj elemenata jednodimenzionalnog niza Rješenje:

alg iznos
rano netaknut
n, i
generalštaba
a [1: n]
stvari
b, z
izlaz
"unesite broj elemenata u niz"
ulazni
n
z: = 0
nts za i iz 1 prije n
ns izlaz,
"unesite element polja"
ulazni
b
z: = z + b
kts
ns izlaz
,
"zbroj", n, "elementi niza jednaki", z
con

Problem broj 4

Pronađi umnožak elemenata jednodimenzionalnog niza Rješenje:

alg raditi
netaknut
i, n
stvari
s, d
generalštaba
a [1: n]
izlaz
"unesite broj elemenata u niz"
ulazni
n
d: = 1
nts za
i iz 1 prije n
ns izlaz,
"unesite broj"
ulazni
s
d: = d * s
kts
ns izlaz
,"
proizvod ", n," elementi jednaki ", d
con

Nizovi

Problem broj 1


Ispunite matricu slučajnim brojevima Rješenje:

alg dvodimenzionalni niz
netaknut
n, j, h, v
načelnik Glavnog stožera
a
izlaz
"unesite kardinalnost tablice"
ulazni
n
h: = 0
v: = 0
ns izlaz,
"ispuniti niz"
ulazni
a
nts za
j iz 1 prije n
ako a> 0
zatim
h: = h + 1
inače
v: = v + 1
kts
ns izlaz,
a
con


Problem broj 2


Izračunajte broj pozitivnih i negativnih elemenata prvog reda matrice Rješenje:

alg niz 2
rano
stvari b, x, z
netaknut
i, n
izlaz

ulazni
n x: = 0
z: = 0
nts za
i iz 1 prije n
izlaz
NS, "unesite broj"
ulazni
b
ako
b> 0
zatim
x: = x + 1
inače
z: = z + 1
svi
kts
ns izlaz
,

ns izlaz,

con


Problem broj 3


Izračunajte zbroj elemenata svakog reda Rješenje:

alg niz 3
početi stvari
b, x, z, y
netaknut
i, n
generalštaba
a [1: n, 1: n]
izlaz
"unesite broj stupaca"
ulazni
n x: = 0
z: = 0
nts za
i iz 1 prije n
ns izlaz,
"ispuniti niz"
ulazni
a [1: n, 1: n]
b: = a [1, i] + a [n, i]
kts
ns izlaz
,
"broj pozitivnih brojeva jednak je", x
ns izlaz,
"broj negativnih brojeva jednak je", z
con


Problem broj 4


Izračunajte zbroj tri broja drugog reda matričnog rješenja tri po tri:

alg matrica
rano netaknut
i, n
generalštaba a [1: 3, 1: 3]
izlaz "ispuniti niz"
ulazni a [1: 3, 1: 3]
n: = 0
nts za i iz 1 prije 3
n: = n + a [2, i]
kts
izlaz NS,
"zbroj brojeva u drugom retku niza je", n
con

Khiryanov Timofey Fedorovich

ako-onda-inače-sve

Opći prikaz tima:

ako je stanje
zatim serija 1
inače serija 2
svi

Serija 2 zajedno sa riječju usluge inače može biti odsutan. U ovom slučaju naredba izgleda ovako:

ako je stanje
zatim serija 1
svi

Prilikom izvršavanja naredbe ako Kumir prvo provjerava stanje napisano između ako i zatim... Ako je ovaj uvjet ispunjen, serija 1, inače - serija 2(ako ih ima), nakon čega Kumir nastavlja izvršavati naredbe napisane iza riječi svi.
Ako uvjet nije ispunjen, a serija 2, zajedno s drugim, nedostaje, tada Kumir odmah nastavlja s izvršavanjem naredbi napisanih iza riječi all.

Primjer 1

ako a zatim
b: = b-a
p: = p + q
inače
a: = a-b
q: = q + p
svi

Primjer 2

ako je x> m
zatim
m: = x
n: = n + 1
svi

Primjer 3 (izvođač Robot)

ako je pravo slobodno
zatim
nadesno
svi

izbor-ako-inače-sve

Opći prikaz tima:

izbor
za uvjet 1: serija 1
za uvjet 2: serija 2

za uvjet n: serija n
u suprotnom nizu n + 1
svi

Ključna riječ inače zajedno s odgovarajućim nizom naredbi može nedostajati:

izbor
za uvjet 1: serija 1
za uvjet 2: serija 2

za uvjet n: serija n
svi

Kumir prvo provjerava uvjet 1... Ako se poštuje, tada Kumir izvršava naredbe iz serija 1, a zatim nastavlja s izvršavanjem naredbi napisanih iza riječi svi... Inače, Kumir čini isto s uvjet 2 i timovi iz serija 2 itd.
Naredbe napisane iza riječi inače, izvršavaju se ako nijedan od uvjeta nije ispunjen.
U naredbi nije uvijek odabrano više od jedne serije naredbi, čak i ako je nekoliko uvjeta istinito. Izvršenje naredbe select završava nakon što se pronađe prvi (po redu) uvjet s vrijednošću yes (i odgovarajući niz naredbi je izvršen).

Primjer 1

izbor
za a> 1: i: = i + 1
kod a< 0: j:= j - 1
u suprotnom t: = i; i: = j; j: = t
svi

Kartice zadataka

    Pronađite među n-cijelih brojeva unesenih s tipkovnice broj negativa

    Navedena su dva proizvoljna broja. Dok je njihov proizvod manji od 100, povećajte svaki broj za 2 i prikažite konačne brojeve na monitoru

    N-cijeli brojevi unose se uzastopno. Pronađi broj petica u nizu

    N-cijeli brojevi unose se uzastopno. Pronađite razliku između maksimalne i minimalne vrijednosti zadanih brojeva

    Pronađite među n-cijelih brojeva unesenih s tipkovnice broj negativa

    Navedena su dva proizvoljna broja. Dok je njihov proizvod manji od 100, povećajte svaki broj za 2 i prikažite konačne brojeve na monitoru

    N-cijeli brojevi unose se uzastopno. Pronađi broj petica u nizu

    N-cijeli brojevi unose se uzastopno. Pronađite razliku između maksimalne i minimalne vrijednosti zadanih brojeva

    Pronađite među n-cijelih brojeva unesenih s tipkovnice broj negativa

    Navedena su dva proizvoljna broja. Dok je njihov proizvod manji od 100, povećajte svaki broj za 2 i prikažite konačne brojeve na monitoru

    N-cijeli brojevi unose se uzastopno. Pronađi broj petica u nizu

    N-cijeli brojevi unose se uzastopno. Pronađite razliku između maksimalne i minimalne vrijednosti zadanih brojeva

    Pronađite među n-cijelih brojeva unesenih s tipkovnice broj negativa

    Navedena su dva proizvoljna broja. Dok je njihov proizvod manji od 100, povećajte svaki broj za 2 i prikažite konačne brojeve na monitoru

    N-cijeli brojevi unose se uzastopno. Pronađi broj petica u nizu

    N-cijeli brojevi unose se uzastopno. Pronađite razliku između maksimalne i minimalne vrijednosti zadanih brojeva

Khiryanov Timofey Fedorovich

Glavne algoritamske konstrukcije, uz elementarne operacije prikazane jednim elementom kruga, su alternativno izvršavanje i ciklusi. Postoje dvije mogućnosti programiranja alternativnog izvođenja i tri su glavne vrste ciklusa.

Uvjetno izvršljiv kod

Neke operacije mogu biti podložne uvjetni operator... Tada će biti ispunjeni samo ako je ovaj uvjet istinit.

ako<условие>
zatim
<действия>
svi

Alternativa

U dijagramu toka provjera stanja može poslužiti kao smjernica za odabir alternativnih operacija. Odnosno, ako je uvjet istinit, izvršenje će slijediti jednu putanju, a ako je netočno, onda drugu. Na jeziku Kumir, ciklus s preduvjetom ima sljedeći oblik:

ako<условие>
zatim
<действия>
inače
<альтернативные действия>
svi


Uvjeti za robota:
lijevi zid
desni zid
donji zid
gornji zid
ćelija je prebojana
ostavio slobodno
pravo slobodno
odozdo slobodno
slobodan odozgo
kavez je čist

Petlja s preduvjetom

Petlja s preduvjetom je petlja koja se izvršava sve dok je neki uvjet naveden prije početka istinit. Ovaj se uvjet provjerava prije izvođenja tijela petlje, pa se tijelo možda neće izvršiti niti jednom (ako je uvjet od samog početka lažan). U većini proceduralnih programskih jezika implementiran je pomoću naredbe while, otuda i njegovo drugo ime - while -loop. U kumirskom jeziku ciklus s preduvjetom ima sljedeći oblik:

nc zbogom<условие>
<тело цикла>
kts

Petlja s postuslovom

Petlja s postuslovom je petlja u kojoj se stanje provjerava nakon izvršenja tijela petlje. Otuda slijedi da se tijelo uvijek pogubi barem jednom. U Pascalu ova petlja implementira operator repeat..until, u C - do ... while.
U kumirskom jeziku petlja sa postuslovom izgleda ovako:

nts
<тело цикла>
kts_with<условие>

Ciklus s brojačem

Petlja s brojačem je petlja u kojoj varijabla nekim korakom mijenja svoju vrijednost od zadane početne vrijednosti do konačne vrijednosti, a za svaku vrijednost ove varijable tijelo petlje se izvodi jednom. U većini proceduralnih programskih jezika operater ga provodi za, koji označava brojač (tzv. "varijabla ciklusa"), potreban broj prolaza (ili graničnu vrijednost brojača) i, eventualno, korak s kojim se brojač mijenja. U jeziku Kumir petlja s brojačem izgleda ovako:

netaknut
nts za a od 0 do 9
... tijelo petlje
kts

Različiti programski jezici rješavaju pitanje vrijednosti varijable na kraju petlje u kojoj se ta varijabla koristila kao brojač na različite načine.