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:
- Izračunava se vrijednost logički izraz.
- 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:
- Izvodi se tijelo petlje
- 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 "... |
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 | stvari | stvari |
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: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
inače serija 2
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 je stanje
zatim serija 1
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: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
u suprotnom nizu n + 1
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.izbor
za uvjet 1: serija 1
za uvjet 2: serija 2
…
za uvjet n: serija n
svi
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: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.netaknut
nts za a od 0 do 9
... tijelo petlje
kts