Sąlygos sakinys IF IF sakinys įgalina keisti nuoseklią programos sakinių atlikimo tvarką, atsižvelgiant į tikrinamas sąlygas. Jų pavidalas: IF sąlygos_išraiška THEN sakinys_1 ELSE sakinys_2; arba IF sąlygos_išraiška THEN sakinys_1; Juose “sąlygos_išraiška” - tai palyginimo arba/ir loginė išraiška. Vykdant IF sakinį, visų pirma apskaičiuojama “sąlygos_išraiška”. Jei gautas rezultatas yra true , toliau atliekamas tik po THEN esantis “sakinys_1”. Priešingu atveju (false) atliekamas tik po ELSE esantis “sakinys_2”. Jei IF sakinyje ELSE konstrukcijos nėra, esant “sąlygos_išraiškos” rezultatui false , iš karto pereinama prie kito po IF einančio programos sakinio. Atkreipkime dėmesį, kad prieš ELSE kabliataškis nerašomas, nes dar nepabaigtas IF sakinys. Tiek po THEN, tiek po ELSE gali būti tik vienas sakinys. Todėl šiose vietose, esant reikalui, dažnai vartojamas sudėtinis sakinys. IF sakiniai gali būti vienas kito viduje. Sakinių pavyzdžiai: IF a > b THEN x : a - b ELSE x : a*b + 3; IF (x 2) THEN BEGIN r : (x*x + y*y); writeln(x, y, r) END; IF raide ‘a’ THEN IF numeris 25 THEN BEGIN suma : kain*kiek; writeln(numeris) END ELSE IF numeris 73 THEN writeln(‘klaida’, numeris) ELSE begin x : b + c; y : c - d end; Ciklo sakiniai FOR, REPEAT, WHILE Paskalyje yra trijų rūšių ciklo sakiniai: FOR, REPEAT ir WHILE. FOR ciklas. Jo pavidalai: FOR ciklo_kintamasis : prad._išr. TO gal._išr. DO sakinys; FOR ciklo_kintamasis : prad._išr. DOWNTO gal._išr. DO sakinys; Šiuose sakiniuose “cilko_kintamasis” - tai sveikojo, atkarpos arba vardinio tipo kintamasis. “Prad._išr.” ir “gal._išr.” rezultatai taip pat turi būti vieno iš ką tik paminėto tipo. Kai “ciklo_kintamasis” yra sveikojo tipo, vykdant ciklą jo reikšmė kinta dydžiu 1 (sakinyje su TO) arba -1 (sakinyje su DOWNTO). Turint atkarpos arba vardinio tipo “ciklo_kintamąjį”, ciklo metu imamos iš eilės einančios (TO - tolesnė, DOWNTO - prieš einanti) jų reikšmės. Po žodelio DO rašomas tik vienas paprastas arba sudėtinis sakinys. FOR ciklas vykdomas taip. Visų pirma apskaičiuojamos “prad._išr.” ir “gal._išr.”, o jų rezultatai įsimenami darbiniuose atminties laukuose. Po to “prad._išr.” rezultatas priskiriamas “ciklo_kintamajam”. Toliau tikrinama, ar “ciklo_kintamojo” reikšmė nėra didesnė (cikle su TO) už “gal._išr.” rezultatą. Jei reikšmė mažesnė, vykdomas po DO esantis sakinys ir, įvykdžius jį, “ciklo_kintamojo” reikšmė padidinama vienetu. Jei reikšmė didesnė, ciklas užbaigiamas. Analogiškai vykdomas ir ciklas su DOWNTO. FOR ciklų pavyzdžiai: 1) VAR n : integer; ... FOR n : 3 TO 15 DO WRITELN( n, n*n ); FOR n : 26 DOWNTO 1 DO BEGIN ... sakiniai ... END; 2) VAR r : (‘c’ .. ‘t’); ... FOR r : ‘g’ TO ‘m’ DO sakinys; FOR r : ‘s’ DOWNTO ‘b’ DO sakinys; 3) TYPE spalv (juod, zal, mel, gelt, raud, balt); VAR x : spalv; FOR x : zal TO raud DO sakinys; FOR x : balt DOWNTO juod DO sakinys; Pastabos dėl FOR ciklų: po DO vykdomais sakiniais (ciklo kūne) nedera keisti “ciklo_kintamojo” reikšmės; ciklą galima nutraukti GOTO sakiniu “pabėgant” iš ciklo kūno; ciklui pasibaigus, “ciklo_kintamojo” reikšmė yra neapibrėžta (už ją negarantuojama); FOR ciklas gali būti neatliktas nė karto. REPEAT ciklas. Jo pavidalas: REPEAT ... sakiniai ... UNTIL išraiška; Po UNTIL turi būti loginį rezultatą duodanti išraiška (palyginimo arba loginė). Kol “išraiškos” rezultatas yra false , tol ciklas yra kartojamas. Pavyzdžiai: 1) VAR a : real; - - - a : 0; REPEAT ... a : a + 0.1; ... UNTIL a 2.5; 2) VAR x : char; - - - REPEAT ... READLN(x); ... UNTIL x > ‘t’; WHILE ciklas. Jo pavidalas: WHILE išraiška DO sakinys; Po WHILE turi būti loginį rezultatą duodanti išraiška (palyginimo arba loginė). Kol “išraiškos” rezultatas yra true , tol ciklas yra kartojamas. Pavyzdžiai: VAR n : integer; x : real; - - - n: 0; WHILE n 1E-5 DO sakinys; Veiksmų kartojimas. Ciklai WHILE ir REPEAT Programose būna veiksmų, kuriuos reikia kartoti. Dažniausiai veiksmai yra tie patys, tik juos kartoti reikia vis su kitais duomenimis. Kartojimo veiksmai užrašomi ciklais. Paskalis turi trijų rūšių ciklus. Jų antraštės prasideda baziniais žodžiais while, for ir repeat. Todėl programuotojai kartais ciklus taip ir vadina šiais baziniais žodžiais. Ciklas while. Kartojimo veiksmus taikliausiai aprašo while ciklas. Tai ir pats paprasčiausias ciklas. Jo veikimas grafiškai pavaizduotas 1 paveiksle, o programoje užrašomas šitaip: while loginis reiškinys do sakinys 1 pav. Ciklo while chema Pirmoji eilutė – ciklo antraštė. Po jos (t.y. po žodžio do) einantys sakinys kartojamas tol, kol tenkinama ciklo antaštėje užrašyta sąlyga (kol loginio reiškinio reikšmė yra true). 1 pavyzdys. Programa pirmajam reikšmingam (t.y., nelygiam nuliui) skaičiaus skaitmeniui rasti. program pirmasis; var sk: integer; begin read(sk); while sk > 9 do sk := sk div 10 writeln(sk) end. Šis uždavinys toks akivaizdus žmogui, kad jo netgi nelaikome uždaviniu – iš karto matome, koks pirmasis skaičiaus skaitmuo. Tuo tarpu kompiuteryje skaičius būna užrašytas dvejetainiais skaitmenimis ir kompiuteris dešimtainių skaičiaus skaitmenų „nemato“, lygiai taip, kaip mes nematome dvejetainių jo skaitmenų. Ir dar svarbiau – užduotis kompiuteriui gali būti išreiškiama tik tomis operacijomis, kurios yra programavimo kalboje. O Paskalis turi tik aritmetines skaičių operacijas. Kaip šis ciklas atliekamas su įvairiais pradiniais duomenimis. Pradinis duomuo: 625. sk Sąlyga read(sk) 625 sk > 9 true sk := sk div 10 62 sk > 9 true sk := sk div 10 6 sk > 9 false writeln(sk) Ciklas buvo atliktas du kartus. Jeigu pradinis duomuo būtų dviženklis skaičius, ciklas būtų atliktas vieną kartą. Jeigu pradinis duomuo būtų vienženklis skaičius, ciklas nebūtų atliktas nė vieno karto – rezultatas būtų lygus pradiniam duomeniui. Prieš kiekvieną sakinio kartojimą, perskaičiuojama loginio reiškinio reikšmė ir pagal ją nustatoma, ar dar reikia kartoti sakinį, ar jau užbaigti ciklą. Jeigu sąlyga netenkinama (reiškinio reikšmė false) tikrinant ją pirmą kartą, tai po žodžio do einantis sakinys neatliekamas nė karto. Taigi galima tvirtinti, kad ciklas while gali būti atliekamas 0, 1, 2 ir daugiau kartų. Ciklas valdo vieno sakinio kartojimą. Jeigu reikia kartoti kelis sakinius, tai tie sakiniai sujungiami į vieną sudėtinį sakinį. 2 pavyzdys. Programa skaičiaus skaitmenų sumai rasti. program SkSuma; var sk, suma: integer; begin suma := 0; read(sk); while sk > 0 do begin suma := suma + sk mod 10; sk := sk div 10 end; writeln(suma) end. 3 pavyzdys. Programa klasės mokinių pažymių vidurkiui rasti. program pvidurkis; var msk, { mokinių skaičius } p, { vieno mokinio pažymys } psuma: integer; { visų mokinių pažymių suma } pbyla: text; { pažymių byla } begin assign(pbyla, 'PAŽYMIAI.TXT'); reset(pbyla); msk := 0; psuma := 0; read(pbyla, p); while p > 0 do begin psuma := psuma + p; msk := msk + 1; read(pbyla, p) end; writeln(psuma/msk: 8: 2) end. Paeiliui skaitomi ir sudedami mokinių pažymiai. Kartu skaičiuojamas ir mokinių (pažymių) skaičius msk. Ciklas kartojamas tol, kol skaitomi pažymiai didesni už nulį. Todėl čia nulis yra sutartinis ženklas. Juo užbaigiamas pažymių sąrašas. Kai perskaitomas nulis, kompiuteris supranta, kad jau perskaityti visi pradiniai duomenys (visų mokinių pažymiai), ciklą reikia baigti ir jau galima skaičiuoti vidurkį. Nulis – tai tik vienas iš daugelio būdų nurodyti sąrašo pabaigai. Jis tinka tada, kai sąraše nėra nulių. Šiam tikslui mes jį galėjome panaudoti tik todėl, kad laikėme, kad pažymių, lygių nuliui, nebūna. Ar kiekvienas ciklas turi pabaigą? Tam, kad ciklas baigtųsi, reikia, kad jo antraštėje užrašyto loginio reiškinio reikšmė kada nors taptų false. Vadinasi, loginio reiškinio komponentus turi keisti sakinys. Priešingu atveju loginio reiškinio rekšmė visą laiką išliks true ir ciklas niekada nesibaigs. Toks ciklas vadinamas amžinuoju. 4 pavyzdys. Amžinasis ciklas kai nekeičiami loginio reiškinio komponentai. while a = b then max := a else max := b; writeln(max); end. Jei pradiniai duomenys būtų skaičiai 5 ir 6, tai būtų atliekami šie veiksmai: a b max read(a, b) 5 6 ? skaitomi pradiniai duomenys a >= b 5 6 ? tikrinama sąlyga max := b 5 6 6 writeln(max) 5 5 6 rašomas rezultatas Kad aiškiau matytųsi sąlyginio sakinio šakos, programoje jas rašome viena po kitos, t.y. žodį else lygiuojame su jį atitinkančiu pirmosios šakos žodžiu then. Kartais patogu sąlygai (su žodžiu if) skirti atskirą eilutę (ypač kai ilgesnė sąlyga), pavyzdžiui, if (alfa*alfa) >= (beta*beta) then ... else... 2 pavyzdys. Programa, nustatanti, ar skaičius dalus iš 7. program dalus7; var x: integer; begin read(x); write('Skaičius ', x); f x mod 7 = 0 then write(' dalus') else write(' nedalus'); writeln(' iš 7') end. Jei kompiuteriui pateiksime skaičių 12345, tai gausime atsakymą: Skaičius 12345 nedalus iš 7 3 pavyzdys. Programa olimpinių žaidynių eilės numeriui nustatyti. Pradinis duomuo – skaičius, reiškiantis metus. Rezultatas – olimpinių žaidynių numeris, jeigu metai olimpiniai, arba nulis, jeigu metai neolimpiniai. program olimpiadanr; var metai, nr: integer; { olimpiados eilės numeris } begin read(metai); if (metai >= 1896) and (metai mod 4 = 0) then nr := (metai - 1896) div 4 + 1 else nr := 0; writeln(nr) end. Sąlyginiame sakinyje (po žodžių then ir else) gali eiti bet kokie sakiniai, tarp jų ir sąlyginiai. Tada šakos šakojasi į naujas šakas ir gaunamas medis. 4 pavyzdys. Pradiniai duomenys – trys skaičiai. Programa mažiausiam iš jų rasti. program minimumas; var a, b, c, min: integer; begin read(a, b, c); if a 10 Kaip kintamojo y reikšmė priklauso nuo kintamojo x reikšmės, rodo grafikas (5pav.). 5 pav. Sąlyginiu sakiniu ta priklausomybė išreiškiama taip: if x
Šį darbą sudaro 2310 žodžiai, tikrai rasi tai, ko ieškai!
★ Klientai rekomenduoja
Šį rašto darbą rekomenduoja mūsų klientai. Ką tai reiškia?
Mūsų svetainėje pateikiama dešimtys tūkstančių skirtingų rašto darbų, kuriuos įkėlė daugybė moksleivių ir studentų su skirtingais gabumais. Būtent šis rašto darbas yra patikrintas specialistų ir rekomenduojamas kitų klientų, kurie po atsisiuntimo įvertino šį mokslo darbą teigiamai. Todėl galite būti tikri, kad šis pasirinkimas geriausias!
Norint atsisiųsti šį darbą spausk ☞ Peržiūrėti darbą mygtuką!
Mūsų mokslo darbų bazėje yra daugybė įvairių mokslo darbų, todėl tikrai atrasi sau tinkamą!
Panašūs darbai
Kiti darbai
Atsisiuntei rašto darbą ir neradai jame reikalingos informacijos? Pakeisime jį kitu nemokamai.
Pirkdamas daugiau nei vieną darbą, nuo sekančių darbų gausi 25% nuolaidą.
Išsirink norimus rašto darbus ir gauk juos akimirksniu po sėkmingo apmokėjimo!