Kako napraviti beskonačnu petlju u idolu. Izvođenje cikličkih algoritama temeljenih na sustavu "idol". Jednostavne robotske naredbe

Razmotrite problem:

Ulaz u program je prirodan broj koji ne prelazi 2 * 10 9. Odredi zbroj znamenki ovog broja.

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

U algoritmima petlje, u kojima se broj ponavljanja određenog skupa naredbi ne može dobiti do trenutka kada on počne, koriste se uvjetne petlje.

Zbogom ciklus

Jedna takva konstrukcija u programskom jeziku Kumir je ciklus zbogom... Ovaj ciklus, koji se često naziva petlja preduvjeta, Ima sljedećem formatu zapisi:

  • nc dosadašnje stanje
  • ciklus_tijelo

Uvjet napisan nakon do sada je logički izraz.

Petlja se izvodi na sljedeći način:

  1. Vrijednost se izračunava boolean izraz.
  2. Ako je rezultat izračuna ne, tada se izvršavanje ciklusa završava, a Idol prelazi na prvu naredbu nakon ciklusa zbogom. Ako je rezultat izračuna potvrdan, 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 postojati promjena neke vrijednosti povezane s uvjetom kako bi se osigurao kraj petlje, inače petlja može završiti zauvijek.

Sada upotrijebimo while petlju da riješimo naš problem.

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

Dakle, tijekom svakog izvršavanja tijela petlje, posljednja znamenka broja dodaje se vrijednosti zbroja, a zatim se broj smanjuje za 10 puta. Očito će na kraju num postati 0, nakon čega će se petlja završiti.

Ciklus "do tada"

U Kumiru postoji još jedna verzija petlje s uvjetom, nazvana do tada 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 postuvjetom... Tijelo takve petlje uvijek će se izvršiti barem jednom.

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

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

Zadatak. Program prima niz cijelih brojeva koji završavaju nulom. Pronađite broj negativnih brojeva u nizu. Zajamčeno je da niz sadrži barem jedan cijeli broj različit od nule.

(Isječak programskog koda)

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

Predavanje 4. Aritmetički izrazi

Aritmetički izrazi i pravila za njihovo pisanje. Algoritmi povratnih informacija. Zbogom naredba. Uvjeti u algoritamski jezik... Ako i izbor naredbe. Kontrolni timovi. "Vizualni" prikaz naredbi. Digresija: pravila i oblik pisanja aritmetičkih izraza u Fortranu XXI stoljeća.

Broj novina

Predavanje 1. Glavni ciljevi predmeta. Metodologija izrade tečaja. Problematičan pristup. Teorija se uči kroz praksu. Sustav Kumir je učinkovita podrška za tradicionalne koncepte proceduralnih programskih jezika i tradicionalne metode otklanjanja pogrešaka. Primjeri korištenja "Kumira" u predstručnim tečajevima.

Predavanje 2. Praktično upoznavanje s Kumirovim sustavom: izvođač Robot. Koncept algoritma. Upravljanje robotskim izvođačem pomoću daljinskog upravljača. Linearni algoritmi. Zapis algoritma. Povlačenje: Karel-Robot u početni tečaj programiranje na Sveučilištu Stanford.

Predavanje 3. Metode "vizualnog" snimanja algoritma. Programirano upravljanje robotom. Ciklus “ n jednom". Korištenje pomoćnih algoritama. Pisanje algoritama algoritamskim jezikom.

Ispitni rad broj 1.

Predavanje 4. Aritmetički izrazi i pravila za njihovo pisanje. Algoritmi povratnih informacija. Zbogom naredba. Uvjeti u algoritamskom jeziku. Ako i izbor naredbe. Kontrolni timovi. "Vizualni" prikaz naredbi. Digresija: pravila i oblik pisanja aritmetičkih izraza u Fortranu XXI stoljeća.

Predavanje 5. Veličine u algoritamskom jeziku. Naredbe za unos/izlaz informacija. Naredba za dodjelu. Pomoćni algoritmi. Algoritmi s rezultatima i algoritmi-funkcije. Ciklus "za". Tabelarne vrijednosti... Logičke, simboličke i doslovne vrijednosti.

Probni rad broj 2.

Predavanje 6. Metode algoritamizacije. Rekurentni odnosi. Metoda iteracije. Ciklus nepromjenjiv. Rekurzija.

Predavanje 7. Fizičke osnove moderna računala. Mikroprocesor je srce modernog računala. Kako stvoriti računalo.

Predavanje 8. Virtualni i stvarni izvođači u sustavu "Kumir". Umjetnik crtač. Lego Robot je softverski kontrolirani izvođač "Kumira". Hipertekst u sustavu Kumir. Izrada zadataka za studente i njihova automatska provjera.

Završni rad.

Dok student “sastavlja” program u “PiktoMiru”, praktički ne mora svladavati neki novi, neobični “svijet računala”. Naravno, dijete mora naučiti upravljati mišem kako bi dobilo željeni rezultat od računala, ali sučelje u cjelini temelji se na konceptima i radnjama koje dijete poznaje, "transparentno" je i ne zahtijeva od djeteta koncentraciju previše o samom procesu interakcije s računalom. U ovom trenutku učenik koncentrira gotovo 100% svojih napora (ili, bolje reći, “pažnje”) na algoritam za rješavanje problema. Ali čim dođe do prijelaza s grafičkog programiranja na tradicionalnije tekstualno, učenik se počinje suočavati s “drugačijim svijetom”, čiji se zakoni razlikuju od uobičajenih koji se već proučavaju u školi. Ovdje se prije svega radi o zapisivanju aritmetičkih izraza, učenik je desetke sati utrošio na svladavanje vještina manipuliranja njima na satovima matematike u školi i postigao određeni automatizam.

U prvim zadacima upravljanja robotom računalo pokazuje svoje mogućnosti kao upravljački stroj, a ne kao računalni stroj. Ali tada se ciklus pojavljuje N puta, a prilikom rješavanja nekih zadataka učenik će možda morati uzeti kao N broj koji se pojavljuje kao rezultat nekog izračuna, na primjer, broj ćelija u polju veličine 9? 14. Ispada da uopće nije potrebno sami (u mislima, na papiru ili kalkulatorom) izračunati ukupan broj ćelija takvog polja i "unijeti" rezultat u program. Ispada da će samo računalo moći napraviti sve potrebne izračune čim mu kažemo (zapišemo u program) što točno treba izračunati. To jest, grubo govoreći, da biste riješili problem na računalu, ne morate toliko znati "koliko će biti dva puta dva", već da biste mogli reći računalu da trebate uzeti rezultat izvođenja operacije " dvaput dva” ili operacija “9 puta po 14”.

Nema problema sa zbrajanjem i oduzimanjem. U snimci ciklus 3 + 3 puta ništa novo za studenta. U potpuno istom obliku na satovima matematike učenici zapisuju i, nadamo se, izračunavaju razne zbrojeve i razlike bez korištenja kalkulatora. Ali za složenije aritmetičke izraze, pravila pisanja u školskoj matematici i u tradicionalnim algoritamskim jezicima počinju se donekle razlikovati.

Činjenica je da kada radimo na papiru i na ploči, "crtamo" matematičke formule - korijene, razlomke, stupnjeve i indekse - i to je vrlo zgodno. A u tradicionalnim programskim jezicima, aritmetički izraz se ne može nacrtati, već se mora "kodirati" pritiskom na tipke na tipkovnici računala. Zbog toga se u programiranju razvila tradicija pojednostavljenog, takozvanog “linearnog” zapisivanja formula, na što se student na početku 21. stoljeća mora navikavati i prilagođavati. (Vjerojatno do sredine stoljeća to više neće biti potrebno, pogledajte program dolje desno.) Dakle, prilikom unosa potrebnih formula (aritmetičkih izraza) u program, morat ćemo koristiti tipkovnicu računala i kodirati (šifriranje) ove formule na određeni način. Kao i sa svakim problemom kodiranja ili šifriranja informacija, ovaj jednostavan tehnički problem može se pokazati privlačnim za neke školarce (umorne od upravljanja robotom). Prilikom rješavanja ovog problema ispada da na tipkovnici postoji simbol točke, ali nema simbola množenja "?", A točka također uopće ne služi kao simbol množenja. Također se ispostavilo da nije uobičajeno pisati aritmetičke formule oblika 8 (2 + 3) sa predznakom množenja koji nedostaje. Računalo (točnije, prevodilac programskog jezika) moglo bi razumjeti takve formule, ali tradicionalno odbija to učiniti i zahtijeva unošenje zvjezdice u formulu - znak množenja: 8 * (2 + 3). Ali računalo, u pravilu, percipira dvije uzastopne zvjezdice kao znak eksponencijacije.

Uzeti zajedno, svi ti mali detalji tvore prepreku koju učenik treba svladati. Ovo je obično jednostavno.

Djeca, u pravilu, ne griješe, s izuzetkom jednog široko rasprostranjenog: razlomaka oblika

i pišu se kao 3 + 5/2 i 3 * 5/2 bez zagrada, umjesto ispravnog zapisa (3 + 5) / 2 i (3 * 5) / 2.

Pravila za pisanje aritmetičkih izraza u Fortranu XXI stoljeća

Tijekom proteklih stoljeća matematičari su prakticirali jezik matematičkih formula, koji se pokazao učinkovitim sredstvom za izražavanje matematičkih pojmova i metoda manipulacije matematičkim objektima. Kada su se sredinom prošlog stoljeća pojavila računala, prvi računalni uređivači teksta i prvi programski jezici, pokazalo se da ne mogu raditi s jezikom matematičkih formula razrađenih u matematici. S vremenom se situacija s matematičkim formulama u tekstualnim dokumentima popravila. Matematičari i programeri izmislili su i standardizirali načine unosa matematičkih formula u tekstualne dokumente, ali su programeri u svojim programima nastavili koristiti neizražajni “linearni” oblik pisanja formula u obliku niza znakova unesenih sa standardne tipkovnice.

U 21. stoljeću situacija se počela mijenjati. Po nalogu američke vojske, stručnjaci SUN-a razvili su jezik Fortress, koji je izvorno trebao koristiti općeprihvaćene matematičke zapise u programskim tekstovima. Na trenutno samo su prvi koraci napravljeni u tom smjeru, ali u jeziku Tvrđave već je moguće koristiti: grčka slova:

superskripti / indeksi i razlomci:

formule s izostavljenim predznacima množenja:

formule u kojima argumenti elementarnih funkcija nisu zatvoreni u zagradama:

postaviti znakove rada

A ovo je tek početak, za nekoliko desetljeća bit će tekstovi programa koje koriste znanstvenici i inženjeri vanjski izgled slični su udžbenicima osnovne i više matematike.

Algoritmi povratnih informacija. Zbogom naredba

Do sada smo s Robotom radili u stilu Turtle grafike u LOGO-u, naime, zapovijedali bez ikakvih povratnih informacija. Dakle, ono što smo mi (metodološki gledano) mogli napraviti s istim uspjehom, na primjer, u istom LOGO-u. Algoritmi za pomoćnike (sa ili bez argumenata) mogu se naučiti pomoću robota ili kornjače.

Isprva smo pri sastavljanju programa za Robot (ili za Vertun) u pravilu imali unaprijed opsežne informacije o situaciji s Robotom. Ali Robot (i Vertun), s metodološke točke gledišta, puno je bogatiji od Kornjače, budući da ima povratne naredbe. I pomoću ovih naredbi čovjek može brzo dobiti informacije o situaciji oko robota udaljenog od sebe, a računalo može brzo primiti informacije prilikom izvršavanja programa. Na primjer, izvršavanjem naredbe “slobodno lijevo”, bez obzira od koga dolazi, Robot prenosi dio informacija o situaciji u kojoj se trenutno nalazi. Još jednu informaciju možete dobiti tako što ćete upitati robota je li ćelija u kojoj stoji obojana.

Pri korištenju daljinskog upravljača prikazanog iznad, osoba čita robotove odgovore s ploče u tekstualnom obliku. Jeftiniji daljinski bi mogao oponašati robotov odgovor paljenjem žarulje (LED). Kada robotom upravlja računalo, njegov odgovor se pretvara u razine električnog signala. Ali bit procesa je ista: kada se izvrši povratna naredba, informacija ne samo da dolazi do robota, već se prenosi i u suprotnom smjeru, od robota do računala ili čovjeka. Otuda i pojam povratne informacije. Teoretski, bilo je moguće napraviti samo jednu naredbu pitanja iz svakog para tipa: Slobodno desno - Zid desno. Međutim, to bi kompliciralo pisanje algoritma, jer bi zahtijevalo uvođenje negacije, što je u ranoj fazi osposobljavanja metodološki neopravdano, komplicirajući pravila za pisanje i izvođenje programa. Umjesto prirodne oznake “na vrhu zida”, trebalo bi napisati nešto poput “gore nije slobodno”, što sugerira svojevrsnu dvojnost, a što ako postoji nešto osim zida?

Što je robotski namještaj

Robotovo okruženje je pravokutno polje okruženo ogradom i podijeljeno na ćelije, a opisuje se sljedećim vrijednostima: 1) veličina polja - broj redaka (od 1 do 10) i broj stupaca (od 1). do 16); 2) za svaku ćeliju: prisutnost zidova oko ćelije; znak zasjenjenja; količina zračenja (mjerena u proizvoljnim jedinicama, može uzeti bilo koju stvarnu vrijednost od 0 do 100); temperatura (mjereno u stupnjevima Celzijusa, može uzeti bilo koju stvarnu vrijednost od –273 do +233). Bilješka. Najniža moguća temperatura je (približno) apsolutna nula (0 stupnjeva Kelvina). Gornja temperatura je temperatura na kojoj se spaljuju knjige (451 stupanj Fahrenheita). Ovu temperaturu znaju svi čitatelji poznate priče Raya Bradburyja “Fahrenheit 451”.

Sustav zapovijedanja robota omogućuje mu da odredi vrijednosti svih ovih karakteristika ćelije. Osim toga, kavez može sadržavati oznake vidljive promatraču, ali nedostupne robotovim “osjetilima”: simbole u gornjem lijevom i donjem lijevom kutu kaveza, točku u donjem desnom kutu kaveza. Sastavni dio okoliša je i sam Robot (točnije, njegova lokacija na terenu). U sustavu naredbi robota nema naredbi koje vam omogućuju da zatražite koordinate robota na terenu.

Robot ima tri grupe povratnih naredbi. Prva skupina omogućuje vam analizu prisutnosti ili odsutnosti zidova odozgo, odozdo, desno i lijevo. Drugu skupinu čine dvije dijametralno suprotne naredbe-pitanja "je li kavez obojan?" i "je li kavez čist?"

Ako naredbe prve dvije grupe vrate "da" ili "ne" kao odgovor, tada naredbe posljednje grupe vraćaju pravi broj kao odgovor. Uz pomoć ovih naredbi možete saznati kolika je temperatura, a kakvo zračenje u kavezu u kojem se Robot nalazi. Zahvaljujući timovima treće skupine svijet Robota postaje osjetno bogatiji. Zahvaljujući tim timovima možemo postaviti i riješiti širi spektar zadataka za upravljanje robotom i prikupljanje informacija na polju robota. Štoviše, zadaci temperature i zračenja u polju robota mogu zamijeniti neke od tradicionalnih zadataka obrade nizova. “Opremanje” robota “termometrom” i “Geigerovim brojačem” dobar je metodološki pristup pri proučavanju problema koji se obično formuliraju za nizove. Takvi tradicionalni zadaci za obradu nizova kao što su "minimalni element", "indeks maksimalnog elementa", "zbroj elemenata", "aritmetička sredina" itd., mogu se preformulirati kao zadaci za prikupljanje informacija o polju robota i istovremeno vrijeme dobiva vrlo prirodnu interpretaciju...

Horizontalni red od pet ćelija s danim zračenjem u svakoj ćeliji (10, 10, 30, 20 i 40) je točan analog linearne tablice realnih brojeva od pet elemenata. I gotovo svaki problem linearne proračunske tablice može se preformulirati kao problem robota. U takvoj formulaciji bit će jasnije zašto je takav problem nastao i zašto ga treba riješiti. Zamislimo da se na Robotovom polju s desne strane nalazi zid do kojeg će ljudi morati ići - možda, spasioci. Prvo morate saznati koliko je prolaz duž koridora opasan za zdravlje, kolika je razina zračenja. Ako se ljudi kreću približno konstantnom brzinom, tada će doza zračenja koju primaju biti proporcionalna zbroju razina zračenja u svim stanicama prolaza do zida. Stoga se analiza stupnja opasnosti ovog prolaza za život spasitelja može preformulirati kao problem izračuna ukupnog zračenja u ćelijama prolaza. To je problem pronalaženja zbroja elemenata tablice, formuliranih u terminima upravljanja robotom. Slično, možete preformulirati gotovo svaki zadatak za obradu tablica (nizova).

Vježba... Preformulirati zadatke "Minimalni element niza" i "Indeks minimalnog elementa niza" u smislu upravljanja robotom.

Dakle, pogledajmo koja je od sljedećih formulacija problema studentu privlačnija: 1) pronaći indekse minimalnog elementa pravokutne tablice; 2) u pravokutniku na polju Robot pronađite ćeliju s minimalnim zračenjem i premjestite robota u tu ćeliju (za odmor).

Prva formulacija je čisto matematička. Kome i zašto trebaju ti indeksi daleko je izvan okvira zadatka. Drugi je razumljiviji i smisleniji. Iako se školarci najvjerojatnije ranije nisu bavili zračenjem, jasno im je da je visoka razina zračenja “loša”, da je ćelija potrebna za zadatak najsigurnija, a ako robot treba pronaći mjesto za odmor , tada je bolje odabrati najsigurniju stanicu - stanicu s minimalnim zračenjem.

Kao što možete vidjeti, algoritam Zbroja elemenata koristi petlju “bye” koju još nismo uveli. Ovdje smo samo malo prešli. Petlju "pa" treba uvesti kada se raspravlja o nekom problemu (problematskom pristupu), na primjer, kao što je u udžbeniku:

“Negdje ispod Robota na terenu je zid. Robota je potrebno pomaknuti okomito prema dolje do zida, t.j. postavite robota u kavez neposredno iznad zida na istoj vertikali s početnim položajem robota. Ovaj problem možete prvo pokušati riješiti ručno. Učitelj može čak nacrtati polje robota na listu i, zasad, ne pokazujući list učenicima, slijediti njihove naredbe. Uskoro će školarci shvatiti da se moraju stalno pitati: "Je li slobodno odozdo?" (ili “ispod zida?”) i zapovijedajte “dolje” dok ispod Robot ne bude slobodan.

Obično, nakon 10 minuta takve igre, svaki učenik u razredu ima detaljnu ideju kako zapovijedati robotu kako bi riješio problem. Ovo shvaćanje je metodološki cilj takve “igre”.

Metodološka tehnika takvog uvođenja novog dizajna programskog jezika G.V. Lebedev je u svojim predavanjima opisao kako slijedi:

“Kada učenici detaljno shvate kako riješiti gornji problem uz ručnu kontrolu robota”, ključna opozicija za našu metodičku metodu događa se između ovog rada “ručno” i programirane upravljačke sheme.

„Divno! - kaže učiteljica. - Svi su shvatili kako kontrolirati robota. No, mi se ne bavimo ručnim upravljanjem robotom, već informatikom. Stoga je naš zadatak napisati algoritam za računalo, kada se izvrši, računalo će zapovijedati robotu kako bi se problem riješio. Imajte na umu da je udaljenost od robota do zida nepoznata, ali računalo, koje pokreće algoritam (a ne zna udaljenost), mora pomaknuti robota do zida. Pokušajte napisati ovakav algoritam. Uostalom, razumijete kako trebate kontrolirati robota, koje naredbe računalo treba izdati robotu. Zato to zapišite u obliku računalnog algoritma”. Još jednom vam skrećem pozornost na ovaj problematičan pristup. Uostalom, praktički na ovom mjestu tražimo od školaraca da osmisle konstrukciju ciklusa "ćao". Odnosno, za razliku od standardnog niza (prvo oblik zapisa, zatim njegova semantika (značenje), zatim rješenje problema), prvo postavljamo problem, zatim analiziramo kako ga riješiti, t.j. razumijemo značenje (semantiku) buduće konstrukcije, a zatim tražimo od učenika da osmisle oblik snimanja.”

Dok je petlja u značenju vrlo složena konstrukcija. A proces svladavanja bolje je učiniti vizualnim. Vodič objašnjava ovaj ciklus različiti putevi, uključujući korištenje blok dijagrama. Vizualno objašnjenje rada ciklusa "pa" jednako je važno kao i način izvođenja korak-po-korak u "Kumiru", budući da su grafičke slike i zapažanja u procesu vlastite aktivnosti učenikova svijest bolje asimilirana nego govorne i matematičke formule koje proizlaze iz učitelja.

Izvodi jedan KORAK programa i ulazi u način PAUSE. Kada se pokrene u stanju UREĐIVANJE i ANALIZA, preskače redove "koristi" i zaustavlja se prije izvođenja prvog retka uvoda glavnog programa (ako postoji) ili prije izvršenja retka s riječju "alg" glavnog algoritma. Izvršenje naredbe za pozivanje algoritma-procedure tretira se kao jedan KORAK. Ispisuje rezultate izračuna i provjera stanja u polja.

Izvodi se slično naredbi “STEP”. Razlika je u izvršavanju naredbe za pozivanje algoritma-procedure ili izračunavanje vrijednosti algoritam-funkcije (ako su prikazane u radnom prozoru). U tim slučajevima, sljedeći korak je izvršavanje retka zaglavlja pomoćni algoritam... U budućnosti će naredba “korak” ili “STEP” dovesti do izvršenja sljedećeg koraka unutar pomoćnog algoritma koji se izvršava.

Pokušajmo izvesti algoritam "Hod do kraja". Program ćemo izvršavati korak po korak klikom na ikonu KORAK. Zanima nas izvođenje ciklusa "pa ćao". Prvo se provjerava uvjet "slobodno naprijed". Odgovor je "da", što znači da se tijelo petlje mora izvršiti. I Robot se kreće niz jednu ćeliju. Kada tijelo petlje završi, vraćamo se i ponovno provjeravamo stanje. I tako sve do sljedećeg ( Vježba: Koji je rezultat?) u koraku će robot udariti u zid i provjera stanja će dati rezultat "ne". A onda ćemo završiti izvršavanje ciklusa i početi izvršavati naredbe zapisane u programu nakon kts.

Napominjemo da se rezultati provjere uvjeta prikazuju na poljima, tako da će nakon svake provjere uvjeta student odmah shvatiti hoće li se tijelo ciklusa ponovno izvršiti, ili će se izvođenje ciklusa završiti.

Što ako je okolina robota drugačija i već stoji iznad zida prije nego što je ciklus završen? Pokušajmo izvesti algoritam s takvim početnim uvjetima. Malo straha

ali što ako se robot pokvari? Ništa slično ovome. Robot se nije pokvario, ciklus je završio, budući da uvjet "slobodan odozdo" pri prvoj provjeri nije ispunjen i stoga se tijelo ciklusa ne izvršava niti jednom. Ovo je jedna od važnih značajki ciklusa zbogom.

Druga važna značajka izvođenja petlje "bye" je mogućnost petlje - beskonačno izvršavanje tijela petlje. Recimo da smo to pomiješali i umjesto naredbe “down” napisali smo naredbu “paint” unutar petlje. Ako je ispod Robota slobodno, onda se Robot neće nigdje pomaknuti, već će mirno stajati i beskonačno bojati ćeliju u kojoj stoji. Ako pokrenete takav program, tada o petlji možete saznati po broju koraka koje program izvodi, a koji će se naglo povećavati pred našim očima, dok Robot miruje.

Treća, i posljednja, značajka "bye" petlje je da se ne provjerava uvjet za nastavak petlje tijekom izvođenja tijela petlje. Ponovo malo promijenimo algoritam dodavanjem još jedne naredbe "dolje" u tijelo petlje. Neka robot brže završi zadatak. Učenici u pravilu ne vide pogrešnost takvog programa, pogrešno pretpostavljajući da se uvjet petlje nekako magično provjerava u svakom trenutku izvođenja tijela petlje. To, naravno, nije tako. Navedeni primjer pokazuje nastalo runtime error, iako je uvjet petlje (u prošlom vremenu) vrijednost "da". No prije drugog koraka “dolje” nitko nije provjeravao stanje. Zbog toga je došlo do odbijanja programa.

Uvjeti u algoritamskom jeziku. If i Odaberite Naredbe

U pravilu, nakon svladavanja ciklusa "pa" naredbe "ako" i "izbor" svladavaju se bez većih poteškoća. Kao i obično, uvođenje nove naredbe treba započeti od zadatka. S obzirom: Robot je negdje na terenu, a desno je slobodan. Potrebno je: pomaknuti robota prema dolje, slikajući one stanice polja na putu, koje imaju zid s desne strane.

Algoritam se dobiva jednostavnom preradom rješenja prethodnog problema, samo trebate dodati naredbu "if".

Metodološko pitanje zašto se konstrukcija “ako” pojavljuje u kolegiju nakon konstrukcije “pao” nalazi se u “12 predavanja” G.V. Lebedeva: "Naravno, lako je uvesti i objasniti naredbu" if " koristeći neki primjer" opreznog "koraka:" ako je dno slobodno, onda je sve dolje ". Nevolja je, po našem mišljenju, u tome što ako počnete s ovim (a pogotovo ako prije ciklusa unesete naredbu “if”), onda školarci nemaju nikakav (iako ne formaliziran) vanjski kontekst u glavi, unutar kojeg pisanje takvog tima bilo bi smisleno za rješavanje nekih smislenih zadataka. Nakon analize barem jednog primjera s petljom i s "if" unutar, pojavljuje se takav vanjski kontekst. Tada je već moguće proučavati naredbu "ako" bez ciklusa - učenici će zamisliti situaciju u kojoj se javlja potreba za takvom naredbom. Ali kada se obradi ovaj prvi primjer (s petljom i "if"), naredba "if" nema što naučiti. Ostali ilustrativni primjeri jednostavno nisu potrebni - trebate riješiti probleme. Stoga vjerujemo da bi se po prvi put naredba “if” trebala pojaviti unutar petlje.” Složenost naredbe "if" može biti samo u zapisu uvjeta. Možete smisliti problem za školarce - formalno zapišite uvjet "Robot stoji u kutu":

(lijevi zid i gornji zid)

ili(gornji zid i desni zid)

ili(desni zid i donji zid)

ili(donji zid i lijevi zid)

Izbor naredbe

Naredba "select" prva je "nepotrebna" naredba u algoritamskom jeziku. Nemoguće je formulirati problem koji se ne može riješiti bez ove naredbe. Naredba "select" samo pojednostavljuje snimanje u situaciji kada postoji mnogo opcija. Ali čak i u ovoj situaciji, algoritam se može zapisati, ograničavajući se na korištenje samo naredbe "if".

"Vizualni" prikaz naredbi

Ciklus "pa" može se objasniti ne samo školarcima koji koriste "Kumir" s robotom, već i predškolcima, koristeći mlađeg brata "Kumira" - "PiktoMir". Iz prethodnog predavanja nam je poznat Vertun, koji može hodati po polju sličnom onom robota. Vertun je zanimljiv izvođač, ima povratne naredbe: Vertun može provjeriti je li kavez na kojem stoji obojan i ima li zid ispred njega. Vertun, kao i Robot, ima dvostruki skup povratnih naredbi. No, u PiktoMiru za to postoje dobri razlozi. Ako bismo u “Kumiru” mogli dobiti ekvivalent naredbi “slobodno desno” od naredbe Robot “na desnom zidu” dodavanjem negacije “ne” unutar naredbe, onda u vizualnom stilu programiranja u “PictoMir” čestica ne postoji. To znači da ne možete s dva tima i trebate sve četiri.

Piktogrami prikazani na slici označavaju ove parove naredbi (s lijeva na desno): “ćelija ispunjena” (sivo polje); "Zid ispred" (zid od opeke); "Kavez je čist" ( zelene boje polja); “Slobodno naprijed” (zid je uništen).

Izbor naredbe

Ako je uvjet 1: serija 1

Uz uvjet 2: serija 2

Ako je uvjet n: serija n

Inače niz n + 1

Inače ključna riječ, zajedno s odgovarajućim nizom naredbi, može nedostajati:

Ako je uvjet 1: serija 1

Uz uvjet 2: serija 2

Ako je uvjet n: serija n

“Kumir” prvo provjerava uvjet 1. Ako je ispunjen, tada “Kumir” izvršava naredbe iz serije 1, a zatim ide na izvršavanje naredbi napisano iza riječi sve. Inače, “Kumir” radi isto s uvjetom 2 i naredbama iz serije 2 itd.

Naredbe napisane iza riječi "inače" izvršavaju se kada nijedan od uvjeta nije ispunjen.

U naredbi se uvijek ne odabire više od jedne serije naredbi, čak i ako je nekoliko uvjeta istinito. Izvršenje naredbe odabira završava nakon što se pronađe prvi (po redu) uvjet s vrijednošću yes (i izvršena odgovarajuća serija naredbi).

U kumirskom jeziku postoje tri naredbe kontrole izvršenja:

odobreno, s obzirom, potrebno je.

Format poziva:

odobreno<ЛОГ ВЫРАЖЕНИЕ>

dano<ЛОГ ВЫРАЖЕНИЕ>

potrebno<ЛОГ ВЫРАЖЕНИЕ>

Sve tri naredbe se izvode ovako. Stanje se provjerava. Ako uvjet nije ispunjen, tada "Kumir" zaustavlja izvršavanje algoritma i javlja da je došlo do kvara. Ako je uvjet ispunjen, tada se izvođenje algoritma normalno nastavlja kao da uopće ne postoji kontrolna naredba. Zadana naredba provjerava stanje na početku izvođenja algoritma, naredba je nužna - na kraju izvođenja algoritma, a uz naredbu odobrenje možete provjeriti stanje tijekom izvođenja algoritma.

Kako se ovi uvjeti mogu koristiti u PiktoMiru? Uvjeti se mogu postaviti na početak pomoćnih algoritama u posebnim ćelijama. Plavi sadrže repetitor (za organiziranje petlje N puta), a ružičasti - uvjet za izvođenje algoritma f1 – f5. Kao što je već spomenuto u predavanju 3, petlja N puta pomaže studentu da spremi ćelije pri izradi algoritma.

Ali ako je jednostavan zadatak, na primjer, pomaknuti Vertun udesno na zid, tada bi program mogao izgledati ovako:

Doista, ako "provirite" u situaciju Vertuna, lako možete izračunati da postoje 4 koraka do zida. Druga je stvar ako nam situacija nije vidljiva i o njoj možemo saznati samo putem povratnih informacija od Vertuna. Slično kao u situaciji s robotom, učenik će morati pitati Vertuna prije nego što istupi naprijed postoji li zid ispred njega. U školskom algoritamskom jeziku, kada su učenici prisiljeni sami smišljati konstrukciju ciklusa "pa ćao", djeca još uvijek imaju puno prostora za maštu, budući da se granice algoritamskog jezika ne vide. U PiktoMiru dijete ima samo ono što vidi na ekranu. A uvjeti se mogu postaviti samo na jedno mjesto. Samo mora probati.

Takav program će ispravno raditi za trenutno okruženje Vertuna (i, naravno, u svim slučajevima kada je zid bliže od četiri koraka od početne pozicije).

Objasnimo kako funkcionira pomoćni algoritam f1. Prije početka algoritma (koji se nalazi u 12 izvršnih ćelija) izvršava se Vertun naredba koja se nalazi u ružičastom okviru. Ako je odgovor "da", algoritam se izvršava onoliko puta koliko je naznačeno u plavom polju. U tom slučaju se prazne ćelije preskaču, a naredba iz ružičastog polja poziva se svaki put prije sljedećeg ciklusa izvršavanja algoritma f1.

Ako je ružičasta kutija prazna, onda je odgovor potvrdan. Ako je plavo polje prazno, tada se petlja izvršava 1 put. Zapravo, takav bi pomoćni algoritam bio analogan sljedećoj notaciji u algoritamskom jeziku:

nts <синее поле> samo zbogom <розовое поле>

<команды в клетках алгоритма>

Ali takve konstrukcije u algoritamskom jeziku nema. U ovom slučaju, f1 se pretvara u analognu konstrukciju “if”, u slučaju praznog repetitora (prazno plavo polje) ili jednog repetitora, a algoritam f1 pretvara se u “bye” petlju ako je uvjet prisutan ( ružičasto polje) a repetitor je beskonačan.

Vježba... Sjetite se kako napraviti petlju od f1 N puta.

Što će motivirati dijete da koristi ciklus zbogom (koristi ružičastu kutiju)? Činjenica je da u PiktoMiru postoji samo 7 repetitora: 1 put, 2 puta, 3 puta, 4 puta, 5 puta, 6 puta i “ad infinitum”. S ovim setom možete doći do zida kada je potrebno 1, 2, 3, 4, 5 ili 6 koraka. Ali što učiniti kada do zida ima 7 koraka ili ih ima toliko da dijete jednostavno ne može izbrojati njihov broj? Postoji repetitor "beskonačnost", a čak i ako dijete još nije savladalo ovaj koncept, nakon što prođe kroz nekoliko opcija za kreiranje programa u PictoWorldu, sigurno će isprobati opciju s repetitorom "beskonačnost" u plavom kavezu i potrebno stanje u ružičastom kavezu. Ovo će biti ciklus "pa" koji je stvorilo dijete (svjesno).

Grafički jezik “PiktoMir” jače potiče dijete da izmisli ciklus “ćao” nego algoritamski jezik “Kumir”. Činjenica je da je dijete pri "petljanju" s "PiktoMir" vrlo ograničeno u izboru sredstava. “PiktoMir” je na dlanu, a algoritamski jezik se može proučavati dugo vremena. U PiktoMir-u možete brzo proći kroz sve opcije programiranja, a budući da među njima postoji i ciklus “bye”, možete ga i otvoriti. Razlika između "Kumira" i "PiktoMira" slična je razlici između šaha i dame. O potonjem je poznati američki pisac Edgar Allan Poe u detektivskoj priči “Ubojstvo u ulici Morgue” napisao sljedeće:

“U međuvremenu, ovdje odlučuje pažnja (u šahu. - Bilješka ur.). Čim on oslabi, a vi počinite previd koji vodi do pogrešne procjene ili poraza. A kako su šahovski potezi ne samo raznoliki, već i dvosmisleni, sukladno tome se povećavaju šanse za pogrešku, a u devet od deset slučajeva ne pobjeđuje sposobniji, već usredotočeniji igrač. Dama je druga stvar, gdje je dopušten samo jedan potez s manjim varijacijama; ovdje su šanse za previd puno manje, pažnja ne igra posebnu ulogu i uspjeh ovisi uglavnom o oštrini. ... Očito, ovdje (s jednakim snagama) pobjeda ovisi o uspješnom potezu, o neočekivanoj i duhovitoj odluci 6”.

Postojao je i dublji razlog zašto smo robotu obdarili dijametralno suprotne parove naredbi pitanja. Nekada je u algoritamskom jeziku bilo nemoguće smjestiti česticu izvan naziva naredbe. U ono vrijeme, zbog toga, bilo bi potrebno koristiti potpuno nečitljive s gledišta ruskog jezika izraze kao što su „nije ćelija prefarbana“ ili „neslobodna odozgo“. U modernoj verziji jezika takvi su izrazi napisani mnogo normalnije: "ćelija nije obojena", "vrh nije slobodan".

Kushnirenko A.G., Lebedev G.V., Svoren R.A. Osnove informatike i računarstva. M .: Prosvjeta, 1990, 1991, 1993, 1996.

Nažalost, u "Kumiru" je nemoguće nazvati algoritam "Hodaj do kraja", jer je "prije" ključna riječ Jezik.

12 predavanja o tome čemu služi školski tečaj informatike i kako ga predavati: A.G. Kushnirenko, G.V. Lebedev. // Toolkit. Moskva: Laboratorij osnovnih znanja, 2000.

Kartice zadataka

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

    Zadana 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 se unose uzastopno. Pronađite broj petica u nizu

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

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

    Zadana 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 se unose uzastopno. Pronađite broj petica u nizu

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

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

    Zadana 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 se unose uzastopno. Pronađite broj petica u nizu

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

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

    Zadana 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 se unose uzastopno. Pronađite broj petica u nizu

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

Upoznavanje s programom Kumir svladavanje osnova programiranja.

U njemu studenti mogu steći praktične vještine u stvaranju i otklanjanju pogrešaka u algoritmu, radeći s izvođačima kao što su Robot, Draftsman, Aquarius, Skakavac, Kornjača.

Prilikom proučavanja jednog od najtežih odjeljaka informatike "algoritmi i programiranje".

Svrha razvoja :

Preuzimanje datoteka:


Pregled:

Metodički razvoj informatike.

Tema: "Robot izvođač u programu Kumir na satovima informatike"

nastavnik tehnologije "Informatika i ICT"

Objašnjenje

Cilj razvoja: proučiti mogućnosti programiranja na primjeru konkretnog robota izvršitelja koji koristi IDC okruženje; dati praktične vještine za rad s izvođačem.

Metodički razvojsastavljeno za nastavu informatikeVježbajte na računalu: rad s izvršiteljem obuke algoritama; kompilacija linearnih, granastih i ciklički algoritmi upravljanje izvođačima; kompilacija algoritama složene strukture; korištenje pomoćnih algoritama (procedura, potprograma).

Učenici bi trebali znati:

  • što je izvođač; SKI Robot, okruženje izvođača robota;
  • što je algoritam;koja su glavna svojstva algoritma;
  • metode pisanja algoritama: blok dijagrami, obrazovni algoritamski jezik;osnovne algoritamske konstrukcije: praćenje, grananje, petlja; strukture
  • algoritmi; ⇒ dodjela pomoćnih algoritama; tehnologije za izradu složenih algoritama:

Učenici bi trebali biti sposobni:

  • razumjeti opise algoritama u obrazovnom algoritamskom jeziku;
  • pratiti algoritam za poznatog izvođača;
  • sastaviti linearne, granaste i cikličke algoritme upravljanja za robota izvršitelja; istaknuti podzadatke; definirati i koristiti pomoćne algoritme.

Lekcija 1 (2 sata) Lekcija 1.

Umjetnik robot.Sustav zapovijedi izvršitelja.

Plan učenja.

  1. Opis SKI izvođača, okruženje izvođača.

2. Analiza tipičnih algoritama robota.

Tijekom nastave.

Razmotrite opis izvođača.

Umjetničko okruženje: Performer Robot se može kretati labirintom nacrtanim na ravnini podijeljenoj na ćelije.

SKI Robot : jednostavne naredbe: gore, dolje, lijevo, desno, slikaj.

Booleove naredbe: (provjera uvjeta)

vrh slobodno dno slobodno

lijevo slobodno desno slobodno.

Logički spojevi: I, NE, ILI:

Primjer: (nije lijevo slobodno) ili (nije desno slobodno)

Naredba podružnice: naredba petlje:

Ako uvjet zatim nts dok uvjet

Serija naredbi zapovjedna serija

sve kts

(U KIM-ovima iz 2009. godine robotske naredbe razlikovale su se od uobičajene djece, što je dovelo do zbunjenost :)

Naredba podružnice: naredba petlje:

Ako uvjet zatim nts dok je uvjet učiniti

Serija naredbi zapovjedna serija

kraj kraj

Opći prikaz prozora programa Kumir. Grafičko okruženje robota:

U CMM-ovima demo verzije iz 2010. format naredbe je promijenjen u uobičajeno

Postupak izrade algoritma:

1. Timovi Alati -Uređivanje početnog okruženjanacrtajte zidove na polju robota i postavite robota u početni položaj.

2. Timovi Robot - Promijenite početno okruženjezadržati novo okruženje.

3. Timovi Umetni - Koristi robotaodrediti izvršitelja.

4. U prozoru dokumenta zapišite algoritam pomoću izbornika Umetnuti.

5. Korištenje naredbi za izvršavanje - izvršavajte kontinuirano (ili korak po korak) za pokretanje algoritma.

6. Razmotrite rezultat algoritma i, ako je potrebno, otklonite pogreške.

Lekcija 1 (2 sata) Lekcija 2.

Praktični rad "Izrada linearnih algoritama".

Zadaci: 1. Robot na proizvoljnoj točki u polju. Obojite ćeliju iznad, ispod i desno od izvorne pozicije.

  1. Robot na proizvoljnoj točki u polju. Pomaknite robota 4 ćelije udesno slikajući ih.
  2. Stvorite novo početno okruženje crtanjem kvadrata sa stranicom od 4 ćelije na ploči. Spremite postavku kao svoju početnu točku.
  3. Stvorite novo početno okruženje crtanjem hodnika s šetnicama u zidovima na terenu. Spremite namještaj kao obst2.fil. Promijenite početno okruženje u novostvoreno.

Lekcija 2 (2 sata) Lekcija 1.

Tema : Grananje i sekvencijalno usavršavanje algoritma.

Analiza CMM zadataka pomoću Robot performera.

koristiti robota

alg kim 2009

rano

ako nije slobodan odozdo

onda desno

svi

ako nije slobodan odozdo

onda desno

svi

ako nije slobodan odozdo

onda desno

svi

kon

koristiti robota

alg kim 2010

rano

ako nije slobodan odozdo

onda desno

svi

ako nije slobodan odozdo

onda desno

svi

ako nije slobodan odozdo

onda desno

svi

kon

NS. rob. broj 14. Kompilacija i otklanjanje pogrešaka algoritama grananja

Zadaci. Vidi privitak.

3. lekcija. Ciklični algoritmi. Lekcija 1-2

Cilj: otkriti bit pojma ciklusa u algoritmima, pokazati oblike upisivanja ciklusa u algoritme, dati vještine za stvaranje i pisanje cikličkih algoritama.

NS. rob. broj 15. Kompilacija i otklanjanje pogrešaka cikličkih algoritama

1. Napravite algoritam koji slika sve unutarnje ćelije uz zid.

koristiti robota

alg

rano

nts do sada s desne strane je besplatan

premazati; nadesno

kts

nts dok je ispod besplatan

premazati; put prema dolje

kts

nts dok se dno ne oslobodi

premazati; nalijevo

kts

kon

2. Napravite algoritam koji oslikava sve ćelije između robota i zida. Udaljenost do zida nije poznata.

koristiti robota

alg

rano

nts do sada s desne strane je besplatan

nadesno; premazati

kts

kon

3. Napravite algoritam koji boji sve ćelije između dva zida.

koristiti robota

alg uch3

rano

nts do (ne odozgo slobodno) ili (ne odozdo slobodno)

nadesno

ako (nije slobodno odozgo) i (ne odozdo slobodno)

zatim

premazati

svi

kts

kon

4. Napravite algoritam koji oslikava sve ćelije oko pravokutnog zida.

alg uch4

rano

prefarbati; gore

nts još nije na desnoj besplatnoj

premazati; gore;

kts

prefarbati; desno

nts dok se dno ne oslobodi

prefarbati; desno;

kts

farbati preko; dolje

nts još nije ostao slobodan

premazati prema dolje;

kts

prefarbati; lijevo

nts dok se vrh ne oslobodi

premazati; nalijevo;

kts

kon

koristiti robota

alg uch5

rano

nadesno

nts dok se dno ne oslobodi

premazati; nadesno

kts

premazati; put prema dolje

nts do sada s lijeve strane je besplatan

premazati; nalijevo

kts

nts još nije ostao slobodan

premazati; put prema dolje

kts

prefarbati; lijevo; obojiti; gore;

nts dok se vrh ne oslobodi

premazati; gore

kts

nts dok se vrh ne oslobodi

premazati; nalijevo

kts

kon

Lekcija 4 Lekcija 1

Algoritmi pomoćnika.

Cilj: upoznati pojam glavnog i pomoćnog algoritama; objasniti pravila korištenja pomoćnog algoritma; rastaviti primjere algoritama pomoću pomoćnog.

Plan učenja

1. Uvođenje novih pojmova (glavni i pomoćni algoritam, poziv) i objašnjenje novih pojmova.

2. Analiza primjera rješavanja zadataka pomoću pomoćnog algoritma.

Prilikom rješavanja nekih problema zgodno ih je rastaviti na manje podzadatke od kojih se svaki može formalizirati kao neovisni algoritam. U ovom slučaju prvo se kompilira tzv. glavni algoritam u kojem se za rješavanje podzadataka koriste pozivi pomoćnih algoritama koji se naknadno dodaju. Ovo rješenje se zovemetodom sekvencijalnog pročišćavanja.Omogućuje skupini programera da radi na projektu, pri čemu svaki rješava svoj podzadatak.

U procesu rješavanja zadatka svaki pomoćni algoritam se po potrebi može razbiti na manje pomoćne algoritme.

Poziva se naredba za izvođenje pomoćnog algoritma izazov i zapisan je u tijelu glavnog algoritma.

Jedan te isti algoritam se može smatrati glavnim i pomoćnim u odnosu na druge algoritme. U algoritamskom jeziku najprije se napiše glavni algoritam, a ispod slijede pomoćni.

Zadatak 1:

Robot je u gornjem lijevom kutu polja. Nema zidova ni oslikanih ćelija. Napravite algoritam pomoću pomoćnog koji crta četiri križa na jednoj vodoravnoj crti. Konačna pozicija robota može biti proizvoljna.

Riješenje

Raščlamba na ploči:

Zadatak 2. Robot je u gornjem lijevom kutu polja. Nema zidova ni oslikanih ćelija. Izradite algoritam koji boji kvadrat 8 x 8 u uzorku šahovnice. Konačni položaj robota može biti proizvoljan.

Lekcija 4 Lekcija 2

Praktični rad na računalu "Rješavanje problema pomoću pomoćnih algoritama".

Cilj : usaditi praktične vještine u konstruiranju algoritama metodom sekvencijalnog usavršavanja.

Plan učenja

1. Zadatak se u potpunosti odvija na računalu. Studenti dobivaju zadatke i izvode ih u programskom okruženju Kumir. Rezultati Rad se sprema kao datoteke za kasniju provjeru.

Zadatak1 ... Robot je u donjem lijevom kutu polja. Nema zidova ni oslikanih ćelija. Napravite algoritam koji slika 6 okomitih pruga iste duljine u 6 ćelija. Konačna pozicija robota može biti proizvoljna.

Zadatak 2 Pomoću pomoćnih napravite algoritam za slikanje ćelija koje čine broj 1212.

Domaća zadaća: Smislite algoritam koji crta sljedeću sliku: Koristite dva pomoćna algoritma da riješite problem.

Lekcija 5 Lekcija 1-2

Test

"Izrada algoritma u okruženju izvršitelja robota."

Cilj: provjeriti stečeno znanje o izradi i sposobnost analize algoritama u programskom okruženju Kumir.

Zadaci za testni rad podijeljeni su po razinama težine i uključuju 3 zadatka s robotskim izvršiteljem (1. i 2. zadatak — za grananje i petlje, 3. zadatak — za korištenje pomoćnog algoritma.) Tekstovi zadataka dati su u dodatku.

Početne i konačne postavke i izrađeni algoritmi se snimaju u datoteku.

Ocjena se postavlja prema stupnju težine zadatka. Učenik ima pravo sam izabrati vrstu zadatka.

A danas ćemo govoriti o ciklusima. Hajdemo shvatiti što je ciklus i kako naučiti kako izvršiti cikličke algoritme našeg robota.

Tako, što je ciklus? Zamislite da smo na satu tjelesnog i pred nama je zadatak napravite 7 čučnjeva... Ovaj zadatak se može formulirati kao linearni algoritam, a onda će izgledati otprilike ovako:

napravite čučanj

napravite čučanj

napravite čučanj

napravite čučanj

napravite čučanj

napravite čučanj

napravite čučanj

Odnosno, ponovili smo naredbu čučnjeva 7 puta. Ima li smisla napisati 7 identičnih naredbi? Možda je lakše dati naredbu napravite 7 čučnjeva? Naravno, lakše je i ispravnije. Ovo je ciklus... I sami se možete prisjetiti primjera ciklusa iz života - ima ih podosta.

Tako linearni algoritam , gdje se ponavljaju iste naredbe, možemo izdati u obliku cikličkog algoritma- ovako:

ponoviti 7 puta

napravite čučanj

kraj ciklusa

Dakle, na jeziku koji smo izmislili, osmislili smo ciklus. Robot izvođač također ima mogućnost snimanja petlji. Štoviše, ciklusi su različiti... Opcija koju smo upravo razmotrili zove se brojač ciklusa ili petlja s parametrom.

Vrste ciklusa.

Petlja s brojačem.

Ciklus sa brojačem koristi se kada se unaprijed zna koliko se ponavljanja mora napraviti. U gornjem primjeru čučnjeva, upravo je to slučaj.

Da biste napisali petlju s brojačem za izvršitelj, morate znati njegovu sintaksu. A on je ovakav:

nts<broj ponavljanja> puta

<команда 1>

<команда 2>

<команда n>

Ovdje moramo navesti broj ponavljanja (broj) i naredbe koje će se ponavljati. Pozivaju se naredbe koje se ponavljaju u petlji tijelo ciklusa.

Pogledajmo ovo na primjeru.

U početku je Robot bio u gornjem lijevom kavezu.

Počnimo s linearnim rješavanjem problema. U ovom slučaju ćemo slikati preko trenutne ćelije i pomaknuti 1 ćeliju udesno, a program će izgledati ovako:
koristiti robota
alg
rano

premazati

nadesno

premazati

nadesno

premazati

nadesno

premazati

nadesno

premazati

nadesno

premazati

nadesno

premazati

nadesno

Kao što vidite, naredbe za slikanje preko i udesno ponavljaju se 7 puta. Napišimo sada program pomoću petlje. Usput, da biste umetnuli ciklus u svoj program, možete otići na izbornik Umetnuti odaberite stavku nts-raz-kts ili pritisnite jednu od kombinacija tipki Esc, P(rusko slovo P) ili Esc, H(latinsko slovo H). I tipke se moraju pritisnuti uzastopno- prvo Esc, pustite ga i tek onda P ili H.

Dakle, naš program u petlji izgledat će ovako:

koristiti robota

nts 7 puta

premazati

nadesno

Ako ga pokrenemo, vidjet ćemo da je rezultat isti - 7 popunjenih ćelija. Međutim, program je postao kraći i puno inteligentniji s algoritamske točke gledišta!

Kao zagrijavanje i konsolidaciju, predlažem da samostalno napišem program za robota, koji će nacrtati kvadrat sa stranom od 7 ćelija. Naravno pomoću petlje. Čekam rješenje u komentarima.

Petlja s uvjetom.

Prilikom rješavanja zadatka 19 GIA iz informatike s robotom neće raditi petlja s brojačem. Budući da je polje obično beskonačno, a zidovi nemaju određenu duljinu. Stoga nećemo moći odrediti broj ponavljanja za petlju s brojačem. Ali nema veze – pomoći će nam uvjetna petlja.

Vratimo se tjelesnom odgoju i promijenimo problem. Uostalom, netko možda neće napraviti 7 čučnjeva, dok drugi može napraviti 27. Može li se to uzeti u obzir pri izradi ciklusa? Naravno. Samo sada nećemo koristiti brojač (broj ponavljanja), već uvjet. Na primjer, dok niste umorni, radite čučnjeve. U tom slučaju osoba neće raditi određen broj čučnjeva, već čučni dok se ne umori. A naša petlja na apstraktnom jeziku će izgledati ovako:

dok nisam umoran

napravite čučanj

kraj ciklusa

Riječi se u našem slučaju ne zamaraju – to je uvjet. Kada je to istina, petlja se izvršava. Ako je lažno (umorno) tijelo petlje se neće izvršiti. Robot izvršitelj ima nekoliko uvjeta

slobodan odozgo

odozdo slobodno

slobodno otišao

pravo slobodno

gornji zid

donji zid

lijevi zid

desni zid

Ali u uvjetu zadatka 19 GIA-a, naznačena su samo prva 4. Dakle, koristit ćemo samo njih.

Sada riješimo sljedeći problem za robota - nacrtajte okomitu liniju od lijeve do desne granice polja pomoću uvjetne petlje. U početku se robot nalazi u gornjem lijevom kutu.

Idemo prvo formulirati verbalni algoritam- odnosno riječima ćemo opisati što Robot treba učiniti. Ovaj algoritam će zvučati otprilike ovako:

« Dok ste na desnoj strani, slobodno zakoračite udesno i obojite kavez. »

Kao rezultat toga, robot će proći kroz sve ćelije s desne strane i slikat će ih sve dok se s desne strane ne pojavi zid.

Izvorni kod za naš program robota bit će otprilike ovako:

koristiti robota

nts do sada s desne strane je besplatan

nadesno

premazati

Kao rezultat izvršavanja ovog programa, vidjet ćemo sljedeću sliku: