Praktinis darbas "Vykdytojas braižytojas. Pagalbiniai algoritmai". Pagalbiniai algoritmai su argumentais

Praktinis darbas„Vykdytojas, referentas. Pagalbinių algoritmų naudojimas su argumentais

Užduotis A. Pagalbinį mums reikalingą algoritmą (kuris nubrėžia tam tikro ilgio kvadratą) galima parašyti taip:

alg kvadratas ( arg dalykas bet)
anksti
. nuleiskite rašiklį
. poslinkis pagal vektorių(0,a)
. poslinkis pagal vektorių(a,0)
. poslinkis pagal vektorių(0,-a)
. poslinkis pagal vektorių(-a,0)
. pakelk rašiklį
con

Įrašas " alg kvadratas ( arg dalykas a)“ reiškia, kad „kvadratinis“ algoritmas turi vieną argumentą (arg) „a“, kuris gali būti savavališkas tikrasis (realusis) skaičius. Norint iškviesti šį algoritmą, reikia parašyti, pavyzdžiui, "kvadratas (2)" - gauname kvadratą su 2 kraštine arba "kvadratas (3)" - gauname kvadratą su 3 kraštine ir tt Tam tikra konkreti reikšmė „a“ gaus tik tada, kai programa veiks pagal atitinkamą pagalbinį algoritmą. Ir visur vietoj „a“ šį skaičių pakeis kompiuteris.

Šio paveikslėlio piešimo programa gali būti tokia:

naudokite stalčių
alg kvadratai
anksti
. pereiti į tašką(1,1)
. kvadratas (2)
. pereiti į tašką(4,1)
. kvadratas (3)
. pereiti į tašką(8,1)
. kvadratas (4)
. pereiti į tašką(13,1)
. kvadratas (5)
. pereiti į tašką(0,0)
con
alg kvadratas ( arg dalykas bet)
anksti
. nuleiskite rašiklį
. poslinkis pagal vektorių(0,a)
. poslinkis pagal vektorių(a,0)
. poslinkis pagal vektorių(0,-a)
. poslinkis pagal vektorių(-a,0)
. pakelk rašiklį
con

Užduotis B. Išmokykime rengėją naujų komandų. Tegul viena iš komandų vadinasi " eilutė (arg th x1,y1,x2,y2)» – nubrėžti liniją nuo taško (x1,y1) iki taško (x2,y2).

alg eilutė ( arg dalykas x1, y1, x2, y2)
anksti
. pereiti į tašką(x1,y1)
. nuleiskite rašiklį
. pereiti į tašką(x2,y2)
. pakelk rašiklį
con

Užduotis V. Tegul antra komanda vadinasi " stačiakampis (arg th x1,y1,x2,y2)“ nupiešti stačiakampį. Taškas (x1,y1) yra vienas stačiakampio kintamosios srovės įstrižainės taškas, taškas (x2,y2) yra priešingas. Prieš rašydami algoritmą, turite suprasti, kokios yra kitų dviejų taškų koordinatės.

Pagalbinis algoritmas gali atrodyti taip:

alg stačiakampis ( arg dalykas x1, y1, x2, y2)
anksti
. pereiti į tašką(x1,y1)
. nuleiskite rašiklį
. pereiti į tašką(x2,y1)
. pereiti į tašką(x2,y2)
. pereiti į tašką(x1,y2)
. pereiti į tašką(x1,y1)
. pakelk rašiklį
con

Užduotis G. Dabar naudodamiesi šiomis komandomis nupiešime namą:


naudokite stalčių
alg namas
anksti
. stačiakampis (2, 1, 8, 5)
. stačiakampis (3, 2, 5, 4)
. stačiakampis (6, 1, 7, 4)
. eilutė (1, 4, 5, 8)
. eilutė (5, 8, 9, 4)
con
alg eilutė ( arg dalykas x1, y1, x2, y2)
anksti
. pereiti į tašką(x1,y1)
. nuleiskite rašiklį
. pereiti į tašką(x2,y2)
. pakelk rašiklį
con
alg stačiakampis ( arg dalykas x1, y1, x2, y2)
anksti
. pereiti į tašką(x1,y1)
. nuleiskite rašiklį
. pereiti į tašką(x2,y1)
. pereiti į tašką(x2,y2)
. pereiti į tašką(x1,y2)
. pereiti į tašką(x1,y1)
. pakelk rašiklį
con

Pastaba: žinoma, kartu su šiomis komandomis galime naudoti standartines braižytojo komandas (perkelti į tašką, perkelti į vektorių...).

Užduotis D. Vykdydami algoritmą nupieškite, ką nupieš stalčius:

naudokite stalčių
alg spiralė
anksti
. pereiti į tašką(3,3)
. nuleiskite rašiklį
. ritė (1); ritė (3); ritė (5); ritė (7); ritė (9)
. pakelk rašiklį
con
alg ritė ( arg dalykas bet)
anksti
. poslinkis pagal vektorių(a, 0)
. poslinkis pagal vektorių(0, -a)
. poslinkis pagal vektorių(-a-1,0)
. poslinkis pagal vektorių(0, a+1)
con.

Kiekiai algoritmine kalba. Informacijos įvesties/išvesties komandos. priskyrimo komanda. Pagalbiniai algoritmai. Algoritmai su rezultatais ir algoritmai-funkcijos

Terminas dydžio, kuris naudojamas algoritminėje kalboje, pristatė Andrejus Petrovičius Eršovas, pasiskolinęs iš matematikos ir fizikos, manydamas, kad moksleiviams tai bus lengviau suprasti. Gamybos programavimo kalbose šis terminas dažniausiai vartojamas kintamasis, kurį vis dažniau keičia terminas objektas. Tuo pačiu metu jie kalba apie objektinį programavimą objektas Ir sąlyga objektas. Vietoj to naudojame terminus dydžio Ir prasmė kiekiai.

Čia dera pastebėti, kad daugelis įvairių programavimo kalbų sąvokų yra sinonimai, o vienos ar kitos terminijos vartojimas dažnai atsiranda dėl mokytojo ar programavimo kalbos kūrėjo įpročio, o ne dėl įvardijimo poreikių. naujos koncepcijos. Vykdydami mokyklinę informatiką sąmoningai „nebėgame lokomotyvo priekyje“, stengiamės išvengti naujų sąvokų ir darinių įvedimo iki to momento, kai be to nebegalima apsieiti.

Nukrypimas nuo formalizavimo tinkamumo. Nereikia matematizuoti ir formalizuoti, jei dalyko esmę galima paaiškinti „ant pirštų“, naudojant kasdienę žodyną. Čia yra ištrauka iš programavimo kalbos teorijos vadovėlio, paaiškinanti skirtumą tarp žodžio „požodžių“ ir „posekių“:

Apibrėžimas 1.2.19. Leisti būti . Tada per Suf ( L) žymi aibę, susidedančią iš visų kalbos žodžių galūnių L:

rinkinys Suf ( L) vadinamas daug priesagų kalba L.

laikraščio numeris

Paskaita 1. Pagrindiniai dalyko tikslai. Kurso sudarymo metodika. Problemos požiūris. Teorijos išmokstama per praktiką. „KuMir“ sistema yra veiksminga tradicinių procedūrinių programavimo kalbų koncepcijų ir tradicinių derinimo metodų parama. „KuMir“ naudojimo ikiprofesiniuose kursuose pavyzdžiai.

Paskaita 2. Praktinė pažintis su „KuMir“ sistema: Robotas atlikėjas. Algoritmo samprata. Roboto atlikėjo valdymas nuotolinio valdymo pulteliu. Tiesiniai algoritmai. Algoritmo įrašymas. Nukrypimas: Karel-Robot pradiniame programavimo kurse Stanfordo universitete.

3 paskaita. Algoritmo „vizualaus“ įrašymo metodai. Programinis roboto valdymas. Ciklas" n kartą". Pagalbinių algoritmų naudojimas. Algoritmų rašymas algoritmine kalba.

Kontrolės darbo numeris 1.

4 paskaita. Aritmetinės išraiškos ir jų užrašymo taisyklės. Algoritmai su „atsiliepimu“. komanda „bye“. Sąlygos algoritmine kalba. Komandos „jei“ ir „pasirinkimas“. Valdymo komandos. „Vizualus“ komandų vaizdavimas. Nukrypimas: aritmetinių išraiškų rašymo taisyklės ir forma XXI amžiaus Fortrane.

Paskaita 5. Kiekiai algoritmine kalba. Informacijos įvesties/išvesties komandos. priskyrimo komanda. Pagalbiniai algoritmai. Algoritmai su rezultatais ir algoritmai-funkcijos. Ciklas „už“. Lentelės reikšmės. Loginės, simbolinės ir pažodinės reikšmės.

Paskaita 6. Algoritmizacijos metodai. Pasikartojantys santykiai. iteracijos metodas. ciklo invariantas. Rekursija.

Kontrolės darbo numeris 2.

7 paskaita. Šiuolaikinių kompiuterių fiziniai pagrindai. Mikroprocesorius yra šiuolaikinio kompiuterio širdis. Kaip sukurti kompiuterį.

8 paskaita. Virtualūs ir realūs atlikėjai KuMir sistemoje. Atlikėjas, referentas. „Lego-Robot“ yra programa valdomas „KuMir“ vykdytojas. Hipertekstai KuMir sistemoje. Užduočių studentams ruošimas ir automatinis jų patikrinimas.

Baigiamasis darbas.

Apibrėžimas 1.2.20. Jie sako žodį X - požodis(poeilutės) žodžiai y, jei y = uxv kai kuriems, galbūt tušti, žodžiai u Ir v.

Apibrėžimas 1.2.21. Leisti būti . Tada per Subw ( L) žymi aibę, susidedančią iš visų kalbos žodžių pogrupių L. rinkinys Subw( L) vadinamas daug požodžių kalba L.

Apibrėžimas 1.2.22. Žodis a 1 a 2 …a n(ilgis n i 0) vadinamas seka(pasekmės) žodžiai y, jei yra tokie, galbūt tušti, žodžiai u 0 , u 1 , …, u n, ką u 0 a 1 u 1 a 2 …a n u n = y.

Apibrėžimas 1.2.23. Visi žodžio požodžiai y taip pat yra žodžio pasekmės y.

Apibrėžimas 1.2.24. Leisti būti . Tada per Subseq ( L) žymi aibę, susidedančią iš visų kalbos žodžių posekių L. Set Subseq( L) vadinamas posekių rinkinys kalba L.

Toks pristatymas reikalingas būsimiems programavimo kalbų kompiliatorių autoriams, kuriems reikia įvaldyti šimtus formalių kalbų matematinės teorijos sąvokų. Jei reikia paaiškinti tik porą sąvokų, tuomet naudingiau apsieiti be matematinių užrašų, išanalizavus reikalo esmę pasitelkus pavyzdžius:

vadinami žodžiai „garas“, „griovys“ ir „vežimėlis“. požodžiaisžodžiai „variklis“, juos sudaro iš eilės einančios žodžio „variklis“ raidės;

žodis "pikas" požodisžodžio „variklis“ nėra, jo negalima gauti iš eilės einančių žodžio „variklis“ raidžių, bet galite gauti jį paeiliui iš kairės į dešinę, pasirinkdami raides iš žodžio „variklis“: imame pirmąją raidę „ p“, praleiskite kitas 6 raides, o paskutines dvi paimame raides „ik“;

pasakyti, kad žodis „pikas“ yra sekažodžiai „traukinys“;

žodyje „pavadinimas“ yra vienas rusų kalbos požodis ir kelios eilės;

visi požodžiais duoto žodžio taip pat yra šio žodžio posekos, todėl žodžiai „garas“, „griovys“ ir „voz“ yra ne tik požodžiais, bet ir pasekmesžodis „traukinys“.

Taigi, sekdami akademiku Eršovu, programavime priimtų terminų nevartojame kintamasis arba objektas, ir pristatome terminą vertė.

Kaip visada mūsų kurse, įvedant naują koncepciją naudojamas probleminis požiūris. Tai yra, viskas prasideda nuo problemos, kurios sprendimui mums reikia kiekių, formulavimo. Atveskime ją.

Robotas yra šalia horizontalios nežinomų matmenų sienos, atstumas nuo Roboto iki sienos kraštų nežinomas, Robotą reikia perkelti „per sieną“ viena langeliu žemyn. Kadangi Robotas negali vaikščioti per sienas, t.y. Jūs negalite tiesiog įsakyti „žemyn“, tada turite priversti robotą kažkaip apeiti šią sieną.

Kaip visada, pagrindinė metodinė technika pradžioje yra programos valdymo schemos priešprieša tiesioginio roboto valdymo „rankiniu būdu“ schemai. Jei pasiūlysite išspręsti problemą naudodami nuotolinio valdymo pultą ir nematydami Roboto lauko, tada studentai greitai supras, kad jiems reikia eiti į vieną iš sienos kraštų, pavyzdžiui, į dešinę, visą laiką klausdami “ ar siena apačioje?" ir skaičiuojant nueitų žingsnių skaičių. O kai siena baigiasi, komanduokite „žemyn“ ir ženkite tiek žingsnių „į kairę“, kiek buvo žengta žingsnių „į dešinę“.

Tiesiogiai valdydami mokiniai atsimena žingsnių skaičių „į dešinę“ „galvoje“ arba užsirašo tai ant popieriaus. Jei dabar nuo tiesioginio Roboto valdymo pereisime prie algoritmo rašymo, reikės kažkaip į algoritmą įrašyti, kad valdydamas Robotą kompiuteris (kaip ir moksleivis) turėtų atsiminti roboto vykdomų komandų skaičių. dešinėje“ ir naudokite šią informaciją grįždami į kairę.

Jei tiesioginio valdymo uždavinys sprendžiamas dialoge tarp mokytojo ir klasės, tuomet mokytojui patogu ant lentos kreida nupiešti mažą stačiakampį ir, gavus komandas „į dešinę“, kartu su mokiniai į šį stačiakampį įveskite roboto nueitų žingsnių skaičių: prieš pradėdami įvedė „0“. Jie žengė pirmąjį žingsnį į dešinę - ištrynė „0“ ir lentoje esančiame stačiakampyje įvedė „1“, žengė dar vieną žingsnį - ištrynė „1“ ir parašė „2“ ir pan. Virš stačiakampio mokytojas gali be paaiškinimo parašyti stačiakampio pavadinimą formoje visas X .

Ką mes padarėme su stačiakampiu rankinio valdymo procese:

· lentoje nupiešti stačiakampį ir jo pavadinimą;

· užrašyti informaciją stačiakampiu, ištrinant seną informaciją;

skaityti informaciją iš stačiakampio.

Tokias pačias operacijas reikės atlikti ir valdant Robotą bei kompiuterį, o programoje šias operacijas turime kažkaip įrašyti.

Vietoj „stačiakampio“ sakysime „vertė“. Stačiakampio ir jo pavadinimo piešimas lentoje atitinka komandą, apibūdinančią reikšmės pavadinimą (ir jos tipą).

Informacijos įrašymas į stačiakampį su trynimu sena informacija atitinka specialią komandą – priskyrimo komandą (:=); informacijos skaitymas atitinka reikšmės pavadinimo naudojimą išraiškose.

Vertė turi keletą savybių. Svarbiausias iš jų yra vardas. Vieno algoritmo reikšmių pavadinimai turi būti skirtingi, kaip sakoma, šio algoritmo pavadinimas turi būti unikalus.

Atsitraukti. Žmogaus vardo išskirtinumas. Ar vardai, kuriuos naudojame kasdieniame gyvenime, yra unikalūs? Deja, ne. Klasėje gali būti du Denisai ir trys Dašos, o vienoje šeimoje – du Vovai. Žmonės su tuo kovoja pridėdami pavadinimą Papildoma informacija: slapyvardis, pavardė, patronimas, gimimo data ir vieta. Klasėje jie skiria Denisą Ivanovą ir Denisą Petrovą, Sidorovų šeimoje – Vovą Didįjį ir Vovą Mažąjį. Tačiau tai nesuteikia 100% unikalumo garantijos. Taigi, 90-aisiais Australijoje susipažino dvi damos, kurios gimė tą pačią dieną ir turėjo tą pačią pavardę ir vardą. Jie susitiko, kai vienai ponių buvo išsiųstas bilietas už parkavimo pažeidimus, kurio ji nepažeidė. Būtent tada paaiškėjo, kad vardas, pavardė ir gimimo data negali vienareikšmiškai identifikuoti asmens. Norėdami paaiškinti, turite pridėti adresą ir daug daugiau įvairių savybių, kurios kartu sudaro unikalų konkretaus asmens vardą (vardas su Didžioji raidė). Unikalumo problema yra senovės. Visi žino garsaus senovės graikų filosofo Talio iš Mileto vardą, tai yra Talis iš Mileto – miesto, kuriame jis gyveno. Dar garsesnis yra Jėzus iš Nazareto. Skaitydami Senąjį Testamentą sutinkame ilgas genealogijas vyriška linija: bibliniais laikais tokia genealogija buvo unikalus asmens vardas.

Pavadinimas nutinka reikšmėms, lentelėms, algoritmams ir atlikėjams. Pavadinimas yra žodžių seka, atskirta tarpais. Pirmasis vardo žodis neturi prasidėti skaičiumi. Nė vienas iš žodžių neturėtų būti raktinis žodis.

Žodis yra leidžiamų (žodyno) simbolių seka:

· raidės (kirilica ir lotyniška, didžiosios ir mažosios);

· skaičiai;

· du specialieji simboliai: „@“, „_“

Vardų pavyzdžiai: m, oras rytoj, lapkričio 7 d., lapkričio 7 d., namas_57b.

Neteisingų pavadinimų pavyzdžiai:

· alfa-beta („-“ yra netinkamas simbolis);

alfa arba omega ( arba - raktažodis).

KuMir kalbos raktiniai žodžiai yra: alg pradėti galutinis naudojimas galutinis_naudojimas nurodytas poreikis arg cut argrez reikšmė int ve log sim lit tab celtab vehtab logtab symtab littab ir arba ne taip ne taip išeiti iš įvesties išvesties ns jei kitu atveju visas pasirinkimas nc ccc cc_at laiku, o nuo iki žingsnio true false

Pastaba. raktažodis ne galima įterpti į kelių žodžių loginius pavadinimus.

Pavyzdys:

log l, rytoj ketvirtadienis

l:= ne Rytoj ketvirtadienis | Teisingai, bet ne

l:= rytoj ne bus ketvirtadienis | Teisingai,

l: = bus rytoj ne Ketvirtadienis | Teisingai

l: = rytoj yra ketvirtadienis ne| Neteisingai

l:= ne rytoj ne bus ketvirtadienis | Neteisinga

Vertybės algoritminėje kalboje skiriasi ne tik pavadinimu, bet ir vieta, kurioje jos „gyvena“: skirtingų algoritmų reikšmės gali turėti tą patį pavadinimą. Kai „Walk the Wall“ algoritme naudojama x reikšmė, galima tai įsivaizduoti pilnas vardasši vertė skamba taip
„x from walk around the wall“: kitame algoritme tą patį pavadinimą x galima naudoti visai kitai reikšmei.

Antra svarbi kiekio savybė yra jo tipo.

Algoritminėje kalboje yra 5 dydžių tipai: skaitmeniniai visas Ir dalykas, teksto tipai litų Ir Simas ir loginis tipas žurnalas. Žinodami tipą, galite daug pasakyti apie dydį. Pirma, kokių vertybių tai gali būti. Taigi, sveikasis skaičius ( visas) gali saugoti sveikasis skaičius, bet negali saugoti tikrų vertybių, o tikrosioms vertybėms yra atskiras tipas (dalykas). Teksto reikšmė gali saugoti simbolių seką, įskaitant tuščią, loginė reikšmė saugo vieną iš dviejų reikšmių Ne visai.

Tipas taip pat nurodo, kokios operacijos leidžiamos su verte.

Palyginimo operacijos taikomos skaitinių ir tekstinių tipų reikšmėms; aritmetinės operacijos ir įvairių funkcijų skaičiavimas yra taikomos skaitinių tipų reikšmėms. Loginės operacijos taikomos loginio tipo reikšmėms Ir ,arba,ne.

Ypač atkreiptinas dėmesys į operaciją, pažymėtą „ + “. Jis gali būti taikomas skaitiniams tipams ir šioje situacijoje reiškia papildymą. Jis taip pat gali būti taikomas teksto tipams ir reiškia dviejų eilučių arba simbolių „suklijavimą“:

Palyginimo operacijos taikomos skaitinių ir tekstinių tipų reikšmėms. Taigi, naudojant realias (ir sveikąsias) reikšmes, aritmetinės operacijos ir palyginimo operacijos yra leidžiamos. Raidžių simboliams leidžiamos palyginimo operacijos ir kt.

Vertybių tipai

Algoritminės kalbos kiekiai skirstomi į keletą tipų:

· visas - paima sveikųjų skaičių reikšmes nuo -2 147 483 647 iki 2 147 483 647;

· dalykas - perima tikrąsias vertybes? 2 1023 ir 2 1023;

· žurnalas - priima taip arba ne reikšmes;

· Simas - reikšmė gali būti pažodinis simbolis;

· litų - reikšmė gali būti pažodinių simbolių eilutė.

Tipai visas Ir dalykas vadinami skaitiniais; tipai Simas Ir litų- tekstas.

Kiekviena vertė turi turėti aprašymą, pavyzdžiui:

prekės ilgis, plotis

uždegė mano tekstą

Kita kiekybinė charakteristika yra peržiūrėti reikšmės: argumentas, rezultatas, tarpinė algoritmo reikšmė, bendra atlikėjo vertė. Vertės tipas parodo jos informacinį vaidmenį algoritme. Pavyzdžiui, argumentuose yra pradinė informacija, reikalinga algoritmo veikimui, o tarpinės reikšmės yra skirtos esamai informacijai, kurią algoritmas apdoroja, saugoti. Vykdant algoritmą, kiekvienu konkrečiu momentu reikšmė arba turi tam tikrą reikšmę, arba nėra apibrėžta.

Reikšmės pavadinimą, tipą ir tipą galima vienareikšmiškai nustatyti pagal algoritmo tekstą.

Tai yra statinės kiekio charakteristikos. Studentai juos visada gali rasti programoje. Priešingai, kiekio vertė nustatoma tik vykdymo metu. Galima sakyti, kad tai dinamiška charakteristika.

Turėdami po ranka tokį įrankį kaip kiekiai, galite naudoti kompiuterį - Elektroninį Kompiuterija Mašina - ne įvairiems įrenginiams valdyti, o "numatytai" - skirta kompiuterija. Pradėkime nuo vieno gana paprasto skaičiavimo – sumos radimo S Pirmas N nelyginiai skaičiai:

S = 1 + 3 + 5 + 7 + ... + 2N–1

Šioje sumoje N skaičiai, o jei sunumeruosite juos nuo 1 iki N, tada skaičius su skaičiumi i bus lygus 2 i–1.

Skaičiavimo programa, kurią ketiname rašyti, kaip ir bet kuri kita programa turi iš kažkur gauti pradinę informaciją ir kažkur „nusiųsti“ skaičiavimo rezultatą. Sukursime dialogo programą. Pradinę informaciją jis gaus iš asmens, klaviatūra įvedančio reikiamą sumos narių skaičių N. Mūsų programa taip pat „praneš“ žmogui apie rezultatą, ekrane parodydama apskaičiuotos sumos reikšmę S. Norėdami saugoti informaciją skaičiavimo procese, naudosime dvi sveikųjų skaičių reikšmes - N Ir S. Norėdami išsaugoti kitos sumos numerį, naudosime sveikojo skaičiaus reikšmę i. Norėdami įvesti ir išvesti informaciją, naudosime komandas įvestis Ir išvestis, o norėdami pakartoti sumos sąlygas, naudosime ciklą iki. Programa atrodys taip:

Komandos čia naujos įvestis Ir išvestis naudojant trečiąjį langą - I/O langas sistema „KuMir“. Iki šiol KuMir sistemoje iš tikrųjų naudojome tik du langus iš trijų. Trečiame lange buvo rodomi pranešimai, tokie kaip „vykdymas pradėtas“ ir „vykdymas baigtas“, o kartais ir klaidų pranešimai. Dabar šis langas bus naudojamas „pagal numatytą paskirtį“ - reikšmėms įvesti ir išvesti. Kaip tai atsitiktų?

Vykdant komandą įvestis N Kompiuteris išvesties lange parodys mirksintį žymeklį, raginantį mokinį įvesti skaičių iš klaviatūros. Jei mokinys klaviatūra įveda skaičių, pavyzdžiui, skaičių 3, o įvedimą užbaigia paspausdamas klavišą, tada kompiuteris atliks lygiai tokius pačius veiksmus kaip ir vykdydamas užduoties komandą N := 3 . Tai yra, skaičius 3 taps kiekio reikšme N(bus parašyta vertės „stačiakampio“ viduje N).

Skirtingai nuo BASIC ir Pascal, naujoji komanda iškviečia išvestis mokyklinėje algoritminėje kalboje savaime neįveda į naują eilutę įvesties / išvesties lange. Jei norime pasakyti kompiuteriui, kad kita informacija turi būti išvesta iš naujos eilutės, turime aiškiai parašyti žodį ns(trumpinys iš „naujos eilutės“) komandoje išvestis . Mes kaip tik tai padarėme programoje. Jei mes esame žodisns nerašo, tada nevykdomas numanomas perėjimas prie naujos eilutės ir skirtingi komandos iškvietimai išvestis viena po kitos vienoje eilutėje rodys informaciją. Informacija paprastai įvedama paspaudus klavišą , t.y. pereiti į naują eilutę. Todėl paprastai sujungiant išvesties komandą su įvesties komandomis, paprastai nens nereikia rašyti. Jei norime, kaip „Suma“ programoje, informaciją rodyti dviem eilutėmis, tada komandas turime parašyti tinkamoje vietoje išvestisžodį ns .

Vykdykime programą „Suma“ nepertraukiamu režimu. Vykdymo pradžioje įvesties / išvesties lange bus rodoma eilutė su informacija apie vykdymo pradžią. Be to, vykdant eilutę

ankstyvas tikslas N, S, t.y

„Sum“ algoritmo atmintyje yra skirta vieta sveikiesiems skaičiams saugoti N , S , i. Iš pradžių šie trys dydžiai nėra apibrėžti (jų „stačiakampiuose“ reikšmės neįrašytos). Vertė N gaus norimą vertę vykdant komandą

įvestis N

Pamatęs mirksintį žymeklį įvesties / išvesties lange ir pranešimą „Tikėtina įvestis: sveikasis skaičius“ lango apačioje, vartotojas įveda sveikąjį skaičių, paspaudžia klavišą ir reikšmės reikšmę. N tampa lygus šiam skaičiui. Atkreipkite dėmesį, kad toliau vykdant programą šis skaičius nesikeis. Įvedus skaičių N programa ruošiasi sumavimui: reikšmė S priskiriama pradinė sumos reikšmė, tai yra 0, ir reikšmėi priskiriamas pirmojo sumos nario numeris, tai yra 1. Tada bus pradėta vykdyti „while“ kilpa. Vykdant ciklą reikšmėsS Ir i keisis koncerte: po k ciklo egzekucijos S bus lygus pirmojo sumai k sumuojami skaičiai iri bus lygus kito, dar nesumuoto skaičiaus skaičiui, tai yrak +1. Ciklas baigsis, kai i tampa lygus N +1. Kai ciklas pasibaigs, komanda bus vykdoma

išvestis "pirmojo suma", N, "

nelyginiai skaičiai ", ns, "yra lygus", S

Ši komanda pateikia kelių informacijos dalių išvestį:

1) eilutė „Pirmųjų dalykų suma“

2) sveikojo skaičiaus reikšmės N

3) eilutė "nelyginiai skaičiai"

4) linijos padavimo instrukcija ns

5) eilutė "lygus"

6) sveikojo skaičiaus reikšmės S

Nes komandoje išvestis sutiko žodį ns, produkcija bus gaminama dviem eilutėmis.

Paskutinė vykdoma eilutė bus con. Kai ši eilutė bus vykdoma, I / O lange bus rodomas pranešimas apie programos vykdymo pabaigą ir horizontali juosta.

Atsitraukti. Apie eksperimentinį matematinių teoremų patikrinimą. Paleiskite programą Sum kelis kartus, nurodant terminų skaičių 4, 5, 6 ir 10. Programa mums pateiks atsakymus 16, 25, 36 ir 100.

Atrodo, kad pirmojo suma N nelyginiai skaičiai visada lygūs N 2 ! Ši matematinė hipotezė iš tiesų yra teisinga, formulė

1 + 3 + 5 + 7 + ... + 2N– 1 =N 2

galima griežtai įrodyti matematiškai, bet jei nepavyktų, galėtume toliau tyrinėti hipotezę eksperimentiškai, parašyti programą, kuri apskaičiuoja pirmųjų 7, 8, 9, 10, 11, ..., 99, 100 nelyginių skaičių sumas ir patikrina, ar tokia suma visada lygi sumuojamų skaičių kvadratui. Taip matematikai naudoja kompiuterį, kad eksperimentiškai patikrintų neįrodytas teoremas. Atsitraukimo pabaiga.

Vienas iš žinomiausių skaičiavimų, dažnai matomų vidurinėje mokykloje, yra kvadratinės lygties šaknų skaičiavimas. Tokį skaičiavimą gali atlikti nemaža dalis absolventų vidurinė mokykla Rusija, kuri išskiria juos iš užsienio bendraamžių. Be to, bet kuris studentas, išmokęs apskaičiuoti kvadratinės lygties šaknis, gali paaiškinti kitam studentui, kaip atlikti tokį skaičiavimą. Tai reiškia, kad šį algoritmą nebus sunku „paaiškinti“ kompiuteriui.

Taigi, duota kvadratinė lygtis malonus kirvis 2 + bx+ c= 0
dalykas natūralūs (realieji) koeficientai a,b,c.

būtina daryti?

Sakote, kad reikia rasti tikrąsias lygties šaknis x 1 ir x 2. Šis atsakymas paprastai yra teisingas, bet ne išsamus. Reikia patikslinti, nes kvadratinė lygtis gali neturėti šaknų, o kai kurioms koeficientų reikšmėms a,b,c Lygtis gali turėti vieną šaknį, o ne dvi. Kompiuterio reakcija šiais atvejais taip pat turi būti numatyta algoritme. Taigi, išsamiau algoritmo sudarymo užduotis atrodo taip:

Pateikti realūs skaičiai a,b,c, ir bet nelygu nuliui.

Reikia rasti numerį n tikrosios šios lygties šaknys ir pačios šaknys (tuo atveju n= 2 rasti x 1 Ir x 2 , a atveju n= 1 radinys x 1 .

Jau pradėjome gilintis į matematines detales, nespręsdami klausimo, kaip mūsų algoritmas gaus pirminę informaciją ir kur bus „siunčiamas“ rezultatas. Šį kartą sudarysime algoritmą, kuris jo vykdymo pradžioje ir pabaigoje bus pasirengęs „bendrauti“ ne su žmogumi, o bet kokiu kitu algoritmu, gaudamas iš jo pradinę informaciją (argumentus) ir grąžindamas rezultatus.

Savo algoritmui mes pasirenkame trumpas vardaskvoor- kvadratinė lygtis. Algoritmo argumentaikvoor bus realūs skaičiai a , b,c.Algoritmo rezultatai kvoor bus vienas sveikasis skaičius n ir du tikrieji skaičiai x1 Ir x2.Pirmoji algoritmo eilutė atrodys taip:

alg quur(arg ref a, b, c, int res n, ref x1, x2)

Algoritminės kalbos taisyklės leidžia po algoritmo antraštės rašyti komandoje duota sąlygos, kurias turi tenkinti argumentai, ir komandoje būtina sąlygos, kurias turi tenkinti algoritmo rezultatai. Šios sąlygos gali būti parašytos arba formaliai, loginių posakių forma, o tada kompiuteris jas patikrins, arba neformaliai, komentarų forma žmogui. Algoritme kvoor Mes naudojame abu būdus:

alg quur (arg wt a, b, c, res int n,

duota a<>0 |a, b, c – koeficientai

reikia 0<= n <= 2 |при n = 2, x1 и x2

lygties šaknys, kai n = 1, x1

| vienintelė lygties šaknis,

Jei n = 0, lygtis neturi šaknų

Kaip išspręsti tokią problemą? Pirmiausia turite apskaičiuoti diskriminantą ( D) pagal formulę D = b 2 – 4ak. Jeigu D< 0, tada lygtis neturi šaknų, su D = 0 - šaknis yra viena (kartais sakoma, kad šaknys sutampa). Kada D> 0 – dvi šaknys. Šiuo atveju šaknys randamos pagal formulę:

Skaičius D nėra mūsų algoritmo argumentas, jis neįtrauktas į problemos sąlygą; nėraD ir rezultatas, nes problemos sąlygomis reikia rasti šaknų skaičių ir pačias šaknis, bet ne diskriminantą; D yra tarpinis mūsų skaičiavimo rezultatas, o norėdami išsaugoti šį skaičių, aprašysime algoritmekvoor tikroji tarpinė vertė dalykas D. Tarpinės algoritmo reikšmės paprastai aprašomos eilutėje anksti arba iškart po jo:

alg quur (arg wt a, b, c, supjaustyti nepažeisti n,

dalykas x1, x2)

duota bet<> 0 |a, b, c- koeficientai

| lygtis a * x * x + b * x + c = 0

reikia 0<= n<= 2

| kada n= 2, lygties šaknys lygus x1 Ir x2;

| kada n= 1, vienintelė šaknis yra x1;

| kada n= 0, lygtis neturi šaknų;

pradėti dalykus D; D:= b* b– 4 * a*c

Prisimindami, kaip išraiškos rašomos algoritmine kalba, gauname tokią programą:

Įvesties išvesties

Skambinimo formatas išvestis :

išvestis išraiška1, . . . , išraiškaN

Kiekviena išraiška gali būti aritmetinė, loginė ar tekstinė išraiška arba naujos eilutės komanda (raktinis žodis ns). Išraiškų reikšmės išvedamos nuosekliai į I/O srities eilutę ir yra atskirtos tarpu. Kai eilutė yra pilna, ji automatiškai pereina į naujos eilutės pradžią. Kai įvesties / išvesties langas yra pilnas, kitos išvesties komandos stums lango turinį aukštyn ir pašalins viršutines lango linijas.

Skambinimo formatas įvestis :

įvesties pavadinimas1, . . . , vardas N

Vykdydamas šią komandą, „KuMir“ perkelia žymeklį į I/O langą ir laukia, kol vartotojas įves atitinkamas reikšmes. Kai baigsite, įvestos reikšmės priskiriamos nurodytoms reikšmėms. Kaip reikšmės pavadinimą galite nurodyti paprastos reikšmės pavadinimą arba lentelės elemento pavadinimą su indekso reikšmėmis. Įvesties pabaigos ženklas yra mygtuko paspaudimas . Įvedus kelis skaičius, jie vienas nuo kito atskiriami kableliu arba tarpu.

Menininko failai

Iš esmės paprasti algoritmai galėtų apsieiti be įvesties-išvesties komandų. Kiekių verčių įvedimą galima sėkmingai pakeisti priskyrimo komandomis, o algoritmo rezultatų išvestį galima stebėti laukuose:

Paraštėse matome paskutinę kiekio reikšmę S, lygi 10 000. Ši reikšmė yra skaičiavimo rezultatas.

Tačiau kai kuriais atvejais, kai norime visiškai automatizuoti kokios nors užduoties sprendimą, patikėti jį kompiuteriui, pažiūrėti į laukelių ar įvesties-išvesties langų turinį ar paspausti klavišus įvesti skaičius, tiesiog nėra kam. , nes tiesiog norime visiškai pašalinti asmenį iš kompiuterio atliekamo skaičiavimo proceso. Žinoma, užuot įvedę vieną ar dvi pradines dydžių reikšmes, į programą galite įvesti priskyrimo komandas, tačiau tai bus ne universali programa, tinkanti bet kokioms parametrų reikšmėms, o specializuota, tarkime, skaičiuojanti sumą. pirmojo N tik nelyginiai skaičiai N= 100. Aišku, kad tokių programų mums nereikia. Kitas dalykas, jei įvesties komandoje būtų galima gauti dydžių reikšmes užklausus jas iš kurio nors atlikėjo, o ne iš asmens. Norėdami išspręsti tokią problemą, jums reikia failų vykdytojo. Failas yra pažįstama sąvoka moksleiviui, todėl jums nereikės daug laiko skirti „failo“ sąvokos pristatymo metodikai. Šiek tiek laiko reikės skirti „Files“ atlikėjo funkcijoms „KuMir“.

Tradiciškai naudojame nuoseklus prieiga prie failų. Tegul yra failas, kuriame yra trys tikrieji skaičiai a, b, c, kvadratinės lygties koeficientai. Turėdami nuoseklią prieigą, negalėsime skaityti iš failo b be skaitymo a ir pasiekti , pirmiausia reikia perskaityti a Ir b. Tas pats pasakytina ir apie rašymą į failą. Kiekių reikšmės išvedamos į failą tokia tvarka, kokia jos pateikiamos išvesties komandoje ir tokia tvarka, kokia pasirodo išvesties komandų iškvietimai. Failų vykdytojas gali dirbti su kiekvienu failu vienu iš dviejų režimų: skaitymo arba rašymo režimu. Darbas su failu skaitymo režimu prasideda komanda atviras skaitymui; darbas su failu rašymo režimu prasideda komandaatviras rašymui. Failas turi egzistuoti, kai iškviečiama viena iš šių dviejų komandų. Nėra prasmės kurti failo, kurį ketiname skaityti, jis bus tuščias. Tačiau prasminga sukurti tuščią failą prieš rašant informaciją, ir tai galima padaryti naudojant komandą kurti.

Kaip ir reikšmės algoritminėje kalboje, failai taip pat turi būti kažkaip pavadinti. Failų pavadinimo principai šiek tiek skiriasi priklausomai nuo operacinės sistemos, kurioje veikia KuMir (MS Windows, MacOS, Linix ir kt.). Failo pavadinimas reikalingas tik komandoms atidaryti ir kurti failus. Atidarymo komanda (skaitoma ar rašoma) grąžina sveikojo skaičiaus reikšmę, priskirdama ją reikšmei, kurią vadiname raktu. Kiekvienas atidarytas failas turi savo unikalų raktą, susietą su juo, o I/O komandos naudoja raktą, gautą atidarius failą, o ne failo pavadinimą. Norėdami atskirti failų skaitymo / rašymo komandas nuo įprastų įvesties / išvesties komandų, jų pavadinimai prasideda raide f(žr. lentelę).

Menininko failai

Failų vykdytojo komandų sistema apima:

· 5 komandos-užsakymai (failo kūrimas/uždarymas, atidarymas skaitymui/rašymui, perskaitymo pradžia);

· 2 komandos sąlygoms tikrinti (failo egzistavimas ir failo pabaigos pasiekimas);

· 2 I/O operatoriai.

· sukurti failą ( arg lit Failo pavadinimas)

Dabartiniame I/O kataloge sukuriamas naujas tuščias failas.

· atviras skaitymui ( arg lit Failo pavadinimas, supjaustyti nepažeisti Raktas)

Atidaro failą skaitymui ir priskiria jam identifikatorių.

· atvira rašymui ( arg lit Failo pavadinimas, supjaustyti nepažeisti Raktas)

Atidaro failą rašymui ir priskiria jam identifikatorių.

· pradėti skaityti ( arg sveikasis skaičius Raktas)

Pradeda skaityti failo elementus nuo pradžių

· f_input raktas, . . .

Operatorius. Duomenų įvedimas iš failo su identifikatoriaus raktu .

f_output raktas, . . .

Operatorius. Duomenų išvestis į failą su identifikatoriaus raktu .

· žurnalas failo pabaiga ( arg sveikasis skaičius Raktas)

Patikrina, ar pasiekta failo pabaiga.

· Uždaryti ( arg sveikasis skaičius Raktas)

Uždaro failą, kai jis buvo atidarytas skaitymui ar rašymui.

· žurnalas failas egzistuoja ( arg lit Failo pavadinimas)

Patikrina, ar dabartiniame I/O kataloge yra failas.

Baigę darbą su failu, su komanda sakome „sudie“. Uždaryti.Šios komandos argumentas vėl bus reikšmės Key reikšmė.

Svarbu pažymėti, kad negalite skaityti ir rašyti į tą patį failą tuo pačiu metu. Toliau pateikiami quur algoritmo pakeitimai, leidžiantys nuskaityti koeficientus iš skaitomo failo įvedant raktą ir įrašyti rezultatus į įrašomą failą, kai raktas išeina. Šį algoritmą vadinsime f_quur . Taip pat yra testavimo programa, kuri nuskaito kvadratinės lygties koeficientus iš failo „tR.txt“, o rezultatą įrašo į failą pavadinimu „tW.txt“, o jei failo tokiu pavadinimu nėra, tada jis sukuriamas.

Paskutiniame failo pavyzdyje turime naują komandą iš failų vykdytojo:

atviras skaitymui ( arg litų Failo pavadinimas,

supjaustyti visas Raktas)

Kartu tai ne tik nauja naujo atlikėjo komanda. Mums tai naujas stilius dirbant su pagalbiniais algoritmais. Čia mes ne tik perduodame argumentą algoritmui (tai yra failo pavadinimas ) arba tiesiog gauti rezultatą – atlikėjo atsiliepimą. Čia abu šie reiškiniai yra sujungti į vieną skambutį. Tuo pačiu, nesvarbu, ar kalbame apie vykdytojo komandas (pavyzdžiui, Failai), ar apie mūsų surašytą pagalbinį algoritmą, sąveikos mechanizmas išlieka nepakitęs. Jei anksčiau, naudodami argumentus, informaciją iš pagrindinio algoritmo perduodame pagalbiniam, tai dabar, naudodamiesi rezultatais, informaciją iš pagalbinio algoritmo galime perkelti į pagrindinį algoritmą.

Kaip veiks kompiuteris, vykdydamas algoritmus su argumentais ir rezultatais, paaiškinsime naudodamiesi algoritmo, kuris apskaičiuoja hipotenuzės ilgį iš stačiojo trikampio kojų verčių, pavyzdžiu.

Kai iškviečiamas pagalbinis algoritmas, įvyksta toks sakramentas: pagalbinis algoritmas pradeda „gyventi“, atmintyje paskiria vietos parametrams (ar tai būtų argumentai, ar rezultatai), tada pateikiamos argumentų reikšmės, kurios buvo perduotos jis iš pagrindinio algoritmo, kai iškviečiamas, nukopijuojamas į sukurtus pagalbinio algoritmo dydžius. Po to seka pats pagalbinio algoritmo vykdymas. Prieš baigiant, pagalbinio algoritmo rezultatai nukopijuojami į skambutyje nurodytas reikšmes. Ir tada pagalbinis algoritmas nustoja egzistuoti, pašalinamas iš kompiuterio atminties kartu su visomis jo reikšmėmis.

Taigi, jei mums reikia perduoti reikšmes iš pagrindinio algoritmo į pagalbinį, tada naudojame argumentus, jei iš pagalbinio į pagrindinį -
tada rezultatai. Naudodami argumentus ir rezultatus galime organizuoti bet kokį keitimąsi informacija tarp pagrindinio ir pagalbinio algoritmo.

Kartu pageidautina, kad moksleiviai ne tik įsisavintų pagalbinio algoritmo su rezultatais sampratą, bet ir išmoktų savarankiškai atpažinti šiuos pagalbinius algoritmus užduotyse, pateikti jų argumentus ir rezultatus bei trumpai juos apibūdinti. duota Ir būtina algoritmo paskirtis ir veikimo sąlygos.

Dabar pereikime prie kito tipo pagalbinių algoritmų - algoritmas-funkcija. Aukščiau pateiktuose pavyzdžiuose – tiek ieškant hipotenuzės ilgio, tiek sprendžiant kvadratinę lygtį – buvo panaudota KuMir įtaisyta matematinė funkcija. kv. Kaip tikriausiai atspėjote (arba žinojote), ši funkcija apskaičiuoja nurodyto argumento kvadratinę šaknį, pavyzdžiui, kv(1.21) . Galima daryti prielaidą, kad KuMir yra integruota visa klasė pagalbinių algoritmų, kurie yra išdėstyti panašiai. Ir tai yra tikroji tiesa.

Atlikėjų grįžtamojo ryšio komandos išdėstytos taip pat, pavyzdžiui, Roboto komanda „top free“. Tokių pagalbinių algoritmų-funkcijų rašymo forma šiek tiek skiriasi nuo pagalbinių algoritmų su rezultatais.

Štai kaip atrodo modifikuotas hipotenuzės išilgai dviejų kojų skaičiavimo algoritmas, naudojant pagalbinio algoritmo funkciją:

Algoritmai-procedūros ir algoritmai-funkcijos

Algoritmo funkcija po vykdymo grąžina reikšmę ir rezultatą. Algoritmų-procedūrų ir algoritmų-funkcijų aprašymo taisyklės turi du skirtumus.

Pirma, funkciniams algoritmams vietoje algoritmo_tipas turi būti nurodytas vienas iš paprastų algoritminės kalbos tipų (dalykas , visas ir tt), kuris apibrėžia reikšmių tipą, kurį ši funkcija priima. Dėl procedūrų algoritmų algoritmo_tipas reikėtų praleisti.

Antra, algoritmo-funkcijos turinyje būtina naudoti paslaugos vertę vertė , kuriame parašyta apskaičiuotoji funkcijos reikšmė. Algoritmo-procedūros turinyje reikšmėvertė negalima naudoti.

Algoritmai-funkcijos ir algoritmai-procedūros skiriasi ir tuo, kaip jie vadinasi.

Bet koks algoritmas, kuriame naudojamas pagalbinės funkcijos algoritmas, visada gali būti parašytas be funkcijų algoritmų, pakeičiant juos pagalbiniais algoritmais su rezultatais (tai matyti iš ankstesnio pavyzdžio, tačiau mes padarėme priešingai). Vietoj priskyrimo komandos a:= f(x), kur f- algoritmas-funkcija, galite rašyti skambutį F(x,a), kur x yra argumentas ir a- rezultatas.

Žinoma, kai kuriais atvejais funkcijos yra patogesnės. Jei palyginsime du hipotenuzės skaičiavimo kojomis algoritmus, galime pastebėti, kad pagrindiniame algoritme, naudojant pagalbinius algoritmus-funkcijas, „papildoma“ reikšmė iš viso nebuvo reikalinga. NUO. Algoritmai-funkcijos yra patogūs tuo, kad galime iš karto juos įrašyti į išraišką ir taip supaprastinti žymėjimą. Tuo pačiu metu algoritmo funkcijose nėra esminės esmės. Tai tik ypatinga pagalbinio algoritmo su rezultatu rašymo forma.

Naudojant algoritmus-funkcijas ir algoritmus su rezultatais, vyksta tas pats: argumentai perduodami iš pagrindinio algoritmo į pagalbinį, o rezultatas perduodamas atgal. Algoritmų su rezultatais ir algoritmų-funkcijų esmė ta pati. Tik algoritmo-funkcijos vykdymo pabaigoje kiekio reikšmė vertė pakeičiamas į išraišką, o ne iškviečiamas algoritmo funkcija. Žodisvertė yra žodžių „funkcijos vertė“ santrumpa, kurią, kaip ir kitą mokyklinio informatikos kurso bei algoritminės kalbos terminiją (algoritmas, argumentas, rezultatas, reikšmė, vertė ir kt.), įvedė akademikas Andrejus Petrovičius. Eršovas, pasiskolinęs iš matematikos.

Čia galite atkreipti moksleivių dėmesį į tai, kad ši užduotis neprilygsta Charleso Perrault, kuris gerai žinomoje pasakoje norėjo grįžti namo su savo broliais, užduočiai: „... Nykštis buvo pirštas. eina paskutinis. Karts nuo karto išsitraukdavo iš kišenės baltų akmenukų ir mėtydavo juos už nugaros ant kelio. Nykščio berniuko problema išspręsta dažant ląsteles, pro kurias Robotas praėjo (iš pradžių manoma, kad lauke nėra dažytų ląstelių). Tokiu atveju nereikia atsiminti žingsnių skaičiaus. ( Perro Sh. Nykščio berniukas. Raudonkepuraitė. Mėlyna barzda ir kiti. M .: leidykla "HARVEST LLC".)

2 Ne visus mokykloje mokomus algoritmus lengva paaiškinti kompiuteriui. Pabandykite, pavyzdžiui, parašyti algoritmą, skirtą padauginti iš kelių skaitmenų (maks. 6 skaitmenys) dešimtainių skaičių stulpelio, kuris manipuliuoja tik simboline informacija, kad atvaizduotų skaičius nuo 0 iki 9. Tai nėra toks paprastas algoritmas kaip sprendimas. kvadratinė lygtis.

Svarbi pastaba: reikia pažymėti, kad kol vykdomas pagalbinis algoritmas, pagrindinio algoritmo vykdymas sustabdomas.

Norėdami nubrėžti du kvadratus su skirtingomis kraštinėmis, tarkim, 2 ir 3, turėjome parašyti du skirtingus pagalbinius algoritmus. Bet ką daryti, jei reikia nupiešti daug skirtingų kvadratų su skirtingu kraštinių ilgiu? Nerašykite kiekvienam savo algoritmo! Pasirodo, algoritmai gali turėti argumentų, galima sudaryti savavališko kraštinės ilgio kvadrato piešimo algoritmą.

Argumento sąvoką jau susipažinote matematikoje. Matematikoje funkcijos argumentas yra nepriklausomas kintamasis, nuo kurio reikšmių priklauso funkcijos reikšmės.
Pavyzdžiui, funkcija f(x) = x 2 +1 turi vieną argumentą. Esant skirtingoms argumento reikšmėms, gausime skirtingas funkcijos reikšmes - x=2 gausime f(x)=5, x=3 gausime f(x)=10 ir t.t.

Pagalbinį mums reikalingą algoritmą (kuris nubrėžia tam tikro ilgio kvadratą) galima parašyti taip:

alg kvadratas (arg w)
anksti
. nuleiskite rašiklį
. poslinkis pagal vektorių(0,a)
. poslinkis pagal vektorių(a,0)
. poslinkis pagal vektorių(0,-a)
. poslinkis pagal vektorių(-a,0)
. pakelk rašiklį
con

Žymėjimas „alg kvadratas (arg w)“ reiškia, kad „kvadrato“ algoritmas turi vieną argumentą (arg) „a“, kuris gali būti savavališkas tikrasis (realusis) skaičius.
Norint iškviesti šį algoritmą, reikia parašyti, pavyzdžiui, "kvadratas (2)" - gauname kvadratą, kurio kraštinė yra 2 arba "kvadratas (3)" - gauname kvadratą, kurio kraštinė yra 3 ir tt .
Tam tikra reikšmė „a“ gaus tik tada, kai programa veiks pagal atitinkamą pagalbinį algoritmą. Ir visur vietoj „a“ šį skaičių pakeis kompiuteris.

Šio paveikslėlio piešimo programa gali būti tokia:

naudokite stalčių
alg kvadratai
anksti
. pereiti į tašką(1,1)
. kvadratas (2)
. pereiti į tašką(4,1)
. kvadratas (3)
. pereiti į tašką(8,1)
. kvadratas (4)
. pereiti į tašką(13,1)
. kvadratas (5)
. pereiti į tašką(0,0)
con
alg kvadratas (arg w)
anksti
. nuleiskite rašiklį
. poslinkis pagal vektorių(0,a)
. poslinkis pagal vektorių(a,0)
. poslinkis pagal vektorių(0,-a)
. poslinkis pagal vektorių(-a,0)
. pakelk rašiklį
con

Išmokykime rengėją naujų komandų. Tegul viena iš komandų vadinasi " eilutė (arg th x1,y1,x2,y2)» – nubrėžti liniją nuo taško (x1,y1) iki taško (x2,y2).


anksti
. pereiti į tašką(x1,y1)
. nuleiskite rašiklį
. pereiti į tašką(x2,y2)
. pakelk rašiklį
con

Tegul antra komanda vadinasi " stačiakampis (arg th x1,y1,x2,y2)“ nupiešti stačiakampį. Taškas (x1,y1) yra vienas stačiakampio kintamosios srovės įstrižainės taškas, taškas (x2,y2) yra priešingas. Prieš rašydami algoritmą, turite suprasti, kokios yra kitų dviejų taškų koordinatės.

Pagalbinis algoritmas gali atrodyti taip:


anksti
. pereiti į tašką(x1,y1)
. nuleiskite rašiklį
. pereiti į tašką(x2,y1)
. pereiti į tašką(x2,y2)
. pereiti į tašką(x1,y2)
. pereiti į tašką(x1,y1)
. pakelk rašiklį
con

Dabar naudodamiesi šiomis komandomis nupiešime namą:



naudokite stalčių
alg namas
anksti
. stačiakampis (2, 1, 8, 5)
. stačiakampis (3, 2, 5, 4)
. stačiakampis (6, 1, 7, 4)
. eilutė (1, 4, 5, 8)
. eilutė (5, 8, 9, 4)
con
alg eilutė (arg th x1, y1, x2, y2)
anksti
. pereiti į tašką(x1,y1)
. nuleiskite rašiklį
. pereiti į tašką(x2,y2)
. pakelk rašiklį
con
alg stačiakampis (arg th x1, y1, x2, y2)
anksti
. pereiti į tašką(x1,y1)
. nuleiskite rašiklį
. pereiti į tašką(x2,y1)
. pereiti į tašką(x2,y2)
. pereiti į tašką(x1,y2)
. pereiti į tašką(x1,y1)
. pakelk rašiklį
con

Pastaba: žinoma, kartu su šiomis komandomis galime naudoti standartines braižytojo komandas (perkelti į tašką, perkelti į vektorių...).

Užduotis 1. Naudodami pagalbinius linijos ir stačiakampio algoritmus sukurkite brėžinį.

2 užduotis. Pabandykite perrašyti linijos ir stačiakampio algoritmus taip, kad piešimas būtų atliktas vektoriaus poslinkio komanda.

Užduotis 3. Parašykite algoritmą „stačiakampis (arg x, y, a, b)“, kuris nubrėžia stačiakampį, kurio kraštinių ilgiai a ir b, pradedant nuo taško (x, y) ir baigiant juo.

4 užduotis. Nupieškite, ką braižytojas nupieš vykdydamas algoritmą:

naudokite stalčių
alg spirale
anksti
. pereiti į tašką(3,3)
. nuleiskite rašiklį
. ritė (1); ritė (3); ritė (5); ritė (7); ritė (9)
. pakelk rašiklį
con
alg turn(arg w)
anksti
. poslinkis pagal vektorių(a, 0)
. poslinkis pagal vektorių(0, -a)
. poslinkis pagal vektorių(-a-1,0)
. poslinkis pagal vektorių(0, a+1)
con