Syntax jazyka Pascal pre príkazy podmienenej vetvy je viacnásobná. TurboPascal. Štruktúrované vyhlásenia. Príklady použitia operátora podmieneného skoku, ktorý má skrátenú formu reprezentácie

  • 31.10.2019

Operátor skoku

Tentokrát budem pokračovať v téme „Operátori“.

Príkazy (Nepodmienené) skoku sú navrhnuté tak, aby preniesli kontrolu na príkaz označený štítkom (pred ktorým je štítok).

Autorská verzia jazyka predpokladá dizajn štítku ako celé desatinné číslo v rozsahu 1..9999 . Turbo Pascal umožňuje použitie identifikátorov ako štítkov. Pri používaní prechodových príkazov je potrebné dodržiavať nasledujúce pravidlá:

1) Všetky štítky v bloku musia byť popísané. V tomto prípade môže byť každý štítok opísaný nie viac ako raz. Tie. V rámci bloku nemôžu byť dva štítky s rovnakým názvom.

2) Označenie špecifikované v príkaze skoku musí ukazovať (označiť ho) príkazu umiestneného v rovnakom bloku ako samotný príkaz skoku. Tie. prechody mimo procedúr (funkcií) alebo vnútri nich nie sú povolené.

3) Pokus o skok (prenos kontroly) vo vnútri štrukturálneho operátora môže spôsobiť nepredvídateľné účinky, hoci v tomto prípade kompilátor nemusí vydať chybové hlásenie.

Použitie nepodmieneného skoku v programe sa považuje za teoreticky nadbytočné, pretože môže zmiasť reťazec logicky umiestnených programových operácií, čo môže viesť k veľkým ťažkostiam pri ladení a úprave takéhoto programu. Odporúča sa používať operátory prechodu pri dodržaní nasledujúcich pravidiel:

1) ak sa zdá nemožné zaobísť sa bez skokových operátorov, je potrebné snažiť sa ich použiť na prenos ovládania iba smerom nadol po texte programu (dopredu); keď je potrebné preniesť riadenie „späť“, je lepšie použiť príkazy cyklu (pozri nižšie);

2) kvôli prehľadnosti by vzdialenosť medzi štítkom a operátorom prechodu nemala presiahnuť jednu stranu textu (alebo výšku obrazovky displeja), inak bude význam takéhoto bezpodmienečného prechodu ťažko pochopiteľný.

Označenia sú definované popismi, ktoré začínajú funkčným slovom štítok a obsahujú sekvenciu názvov štítkov oddelených čiarkami. Na prenos riadenia na operátora označeného štítkom je k dispozícii operátor bezpodmienečného skoku ísť do. Označenie je oddelené od operátora, ktorý za ním nasleduje, znakom „:“ (dvojbodka). Príklad:

var j: celé číslo

(deklarujte dve označenia)

štítok začať, skončiť;

Štart: writeln('Spustenie programu');

ísť do skončiť;

Dokončiť: writeln('Koniec programu');

Zložené vyhlásenie

Najjednoduchším štrukturálnym operátorom je zložený operátor. Tento príkaz špecifikuje postupnosť vykonávania príkazov v ňom obsiahnutých. Zložený príkaz je naformátovaný ako zoznam príkazov oddelených od seba symbolom „;“ (bodkočiarka) a uzavretý medzi servisné slová začať a koniec.

Potreba zloženého príkazu môže vzniknúť v prípadoch, keď syntax jazyka Pascal umožňuje použitie iba jedného príkazu v bode programu, kde je potrebných viacero akcií (príkazy, pozri príklady nižšie). Tu je jednoduchý príklad zloženého príkazu:

Podmienený operátor

Význam podmieneného operátora je analyzovať nejakú logickú podmienku a podľa toho, či je táto podmienka splnená alebo nie, preniesť riadenie na príslušný operátor. Podmienkou môže byť výraz, ktorý vráti boolovskú boolovskú hodnotu. Výsledkom analýzy stavu môže byť hodnota pravda, t.j. podmienka je splnená a falošné, t.j. podmienka nie je splnená.

Podmienený príkaz sa vykoná nasledovne. Výraz zadaný za služobným slovom je vopred vyhodnotený AK. Ak je podmienka splnená, riadenie sa prenesie na operátora uvedeného za servisným slovom potom ak nie, vykoná sa príkaz zadaný za kľúčovým slovom else. V tomto prípade môže chýbať časť podmieneného operátora začínajúca slovom else. Tu sú príklady podmienených príkazov:

Ak Stlačené tlačidlo potom writeln('Stlačená klávesa');

Ak A > B potom Min:=B

inak Min:=A;

ak X1 > X2 potom začnite

Posledným príkladom je práve prípad, keď je potrebné, aby sa viacero operátorov vykonalo podľa podmienky, ale vzhľadom na to, že za obslužným slovom potom alebo inak môže nasledovať len jeden príkaz, to znamená, že situáciu je možné riešiť použitím zloženého príkazu, ktorý obsahuje práve počet týchto potrebných príkazov.

Pri vytváraní vnorených podmienených príkazov majte na pamäti, že vetva else vždy patrí do predchádzajúcej vetvy AK, ktorá zatiaľ nemá pobočku else. Tie. nasledujúca konštrukcia

ak Podmienka 1 potom ak Podmienka 2 potom Prevádzkovateľ 1 inak Operátor2;

pre prehľadnosť to možno interpretovať nasledovne

ak Podmienka 1 potom začnite

ak Podmienka 2 potom Prevádzkovateľ 1 inak Operátor2;

Pri používaní vnorených podmienených príkazov si treba dávať pozor, aby sa v zápale skladania ďalšieho podmieneného príkazu programu nestratil zo zreteľa taký na prvý pohľad malý detail, ktorý môže viesť k úplne inému vykonaniu podmieneného príkazu. vetvenia.

Variantový operátor

Pomerne často nastáva situácia, keď reťazec podmienených operátorov narastie do obrovského rozsahu, napríklad nasledujúci príklad ilustruje rozvetvenie, ktoré má skromnú veľkosť, ale už obsahuje zložitosť vnímania významu, ktorý je mu vlastný:

typu TWay = (hore, vpravo, dole, vľavo);

var Spôsob: TWay;

MapX, MapY: slovo;

ak cesta = hore potom MapaY:= MapaY - 1

inak ak cesta=sprava potom MapX:= MapX + 1

inakak cesta = dole potom MapaY:= MapaY + 1

inak MapX:= MapX - 1;

Posledná pobočka else nemá operátora Ak, keďže ak nie sú splnené všetky tri podmienky, bolo by logické, aby operátor zodpovedajúci štvrtému a poslednému variantu možných hodnôt typu Tway.

V tomto prípade máme tiež šťastie, že typ Tway má iba štyri možné hodnoty. Zmenilo by sa zostavovanie takýchto vetiev na rutinu, ak by existovalo desať alebo viac možností? Ale v prezentovanom rozvetvení je viditeľný jednoduchý vzor. Dá sa to teda nejako zjednodušiť a urobiť efektívnejším a čitateľnejším? Je to možné a jazyk na to poskytuje variantný operátor, ktorého konštrukcia môže obsahovať ľubovoľný počet alternatív pre konkrétny výraz. Potom možno posledný príklad prepísať novým spôsobom:

prípad spôsobom z

Hore: MapaY:= MapaY - 1;

Vpravo: MapX:= MapX + 1;

Dolu: MapaY:= MapaY + 1;

Vľavo: MapX:= MapX - 1;

No to je úplne iná vec. Teraz zvážte poradie vykonávania tohto operátora. Hodnota výrazu nasledujúceho za služobným slovom je vopred vypočítaná prípad, ale keďže v tomto prípade je názov premennej spôsobom, potom sa načíta hodnota tejto premennej. Výsledná hodnota sa postupne porovnáva s každou alternatívou (konštantná, okamžitá hodnota) zadanou za funkčným slovom z. Ak sa hodnota výrazu rovná nasledujúcej konštante, vykoná sa alternatívny operátor nasledujúci za touto konštantou, oddelený od nej dvojbodkou. Keď sa dokončí alternatívne vyhlásenie, akcia pokračuje vyhlásením nasledujúcim po alternatívnom vyhlásení. Ak sa hodnota nezhoduje spôsobom bez konštánt nemá tento variantný výrok žiadny účinok.

Čo ak je však potrebné zabezpečiť určitú vetvu operátorov, ktorá by sa vykonala, ak by sa hodnota výrazu nezhodovala so žiadnou konštantou? Na to môžete použiť alternatívu else, napríklad:

prípad spôsobom z

Hore: MapaY:= MapaY - 1;

Vpravo: MapX:= MapX + 1;

Dolu: MapaY:= MapaY + 1;

inak MapX:= MapX - 1;

Preto konštrukcia skonštruovaná pomocou operátora prípadu je úplne ekvivalentná konštrukcii skonštruovanej skôr pomocou operátora AK. Navyše je prehľadnejší a nehrozí, že by ste sa v početnom zaplietli inak.

Ešte raz by som chcel upozorniť na skutočnosť, že konštanty vo variantnom operátore môžu byť priame celé čísla aj názvy netypovaných konštánt popísaných vyššie. Použitie typovaných konštánt v alternatívach variantných príkazov nie je povolené. Okrem toho v každej možnosti môžete zadať celý zoznam konštánt oddelených čiarkami alebo rozsah hodnôt, napríklad:

prípad spôsobom z

Hore, Dole: writeln('Posunúť vertikálne');

Vpravo, Vľavo: writeln('Posunúť vodorovne');

prípad X z

10,20,30: writeln('desiatky');

1..9: writeln('jednotky');

V poslednej stavbe operátor writeln('jednotky') sa vykoná, ak má premenná X jednu z hodnôt 1,2,3,..,8,9 .

Ako ste si mohli všimnúť, riadky s konštantami som zarovnal dvojbodkami, keďže sa mi zdá, že tento pohľad je viac vizuálny, aj keď je to vec vkusu a ako viete, pre chuť a farbu nie je priateľ; O)

Operátor variant sa musí používať podľa nasledujúcich pravidiel:

1) Platná hodnota výrazu - „prepínač“, napísaný za servisným slovom prípad, musia spĺňať diskrétny typ: pre celočíselný typ musia ležať v rozsahu -32768..32767 .

2) Všetky špecifikované alternatívne konštanty musia byť typu kompatibilného s typom výrazu.

3) Konštanty v alternatívach sa nesmú opakovať v rámci príkazu variant a rozsahy sa nesmú prekrývať ani obsahovať konštanty špecifikované v tejto alebo iných alternatívach.

Ešte jedna vec. Dizajn prípad poskytuje jedno vyhlásenie pre každú alternatívu. Ak potrebujete vykonať viacero príkazov, mali by ste ich zoskupiť do zloženého príkazu. začať..končiť. Je možné zadať prázdny operátor pre alternatívu vložením znaku ";" (bodkočiarka) hneď za dvojbodkou, čo neurobí nič. A syntax vetvy inak stanovuje postupnosť operátorov oddelených symbolom „;“ (bodkočiarka).

Lekcia sa zaoberá podmieneným operátorom v jazyku Pascal ( ak). Vysvetľuje, ako použiť viacero podmienok v jednej konštrukcii ( A a ALEBO). Zvažujú sa príklady práce s operátorom.

Pripomíname, že táto stránka si nenárokuje, že je úplnou prezentáciou informácií o danej téme. Účelom portálu je poskytnúť možnosť osvojiť si materiál na základe hotových vyriešených príkladov na tému „Programovací jazyk Pascal“ s praktickými úlohami na upevnenie materiálu. Úlohy Pascal prezentované na stránke sú usporiadané postupne, ako sa zvyšuje ich zložitosť. Stránku môžu využívať učitelia a lektori ako pomocnú vizuálnu pomôcku.

Pred uvažovaním o tejto téme sa používali hlavne lineárne algoritmy v Pascale, ktoré sú typické pre veľmi jednoduché úlohy, kde sa akcie (operátory) vykonávajú postupne, jedna za druhou. Zložitejšie algoritmy zahŕňajú použitie konštruktu vetvenia.

Vývojový diagram podmieneného príkazu:

Podmienený operátor v jazyku Pascal má nasledujúcu syntax:

Skrátená verzia:

if podmienka potom vyhlásenie;

Plná verzia:

if condition then statement else vyhlásenie;

Podmienený operátor v Pascal - if - slúži na organizáciu postupu úlohy takým spôsobom, že postupnosť vykonávania operátorov sa mení v závislosti od nejakej logickej podmienky. Logická podmienka môže nadobudnúť jednu z dvoch hodnôt: buď pravda (pravda) alebo nepravda (nepravda), môže byť pravdivá alebo nepravdivá.

Zložené vyhlásenie

Ak je za pravdivých podmienok potrebné vykonať niekoľko príkazov, potom podľa pravidiel jazyka Pascal musia byť uzavreté do bloku, počnúc funkčným slovom begin a končiac funkčným slovom end . Takýto blok je tzv operátorské zátvorky, a túto konštrukciu zložený operátor:

Operátorové zátvorky a zložený operátor v Pascale:

if boolovský výraz then begin príkaz1; operátor2; end else begin príkaz1; operátor2; koniec;

Preklad z anglického operátora podmienky uľahčí pochopenie jeho použitia:

AK POTOM ELSE
AK POTOM INAK


V podmienke (v logickom výraze) sa používajú relačné operátory.
Zvážte zoznam Pascalových relačných operátorov:

  • viac >
  • menej
  • väčšie alebo rovné v Pascale >=
  • menšie alebo rovné v Pascale
  • porovnanie v Pascale =
  • nie rovnaké v Pascale

Príklad: nájsť najväčšie z dvoch čísel

možnosť 1 Možnosť 2


Pochopte prácu do detailov Podmienený operátor v Pascal môžete použiť tak, že si pozriete video tutoriál:

Príklad: vypočítajte hodnotu premennej y z jednej z dvoch vetiev

Zobraziť riešenie:

varx,y:real; begin writeln("Zadajte x"); read(x); ak x>0, potom y:=ln(x) inak y:=exp(x); writeln ("y=", y:6:2) (celkový počet bude mať 6 pozícií a bude mať 2 desatinné miesta) end.

Všimnite si, ako je v tomto príklade vytlačené y. Pri odvodzovaní typových premenných v pascale možno použiť tzv formátovaný výstup alebo zápis s dvoma dvojbodkami:
y:6:2
- číslo za prvou dvojbodkou (6) udáva, koľko znakov zaberie číslo pri zobrazení na obrazovke
- číslo za druhou dvojbodkou (2) udáva, koľko desatinných miest bude zobrazené skutočné číslo

Použitie takéhoto zápisu v pascale teda prakticky umožňuje zaokrúhľovanie na stotiny, tisíciny atď.

Úloha 0. Vypočítajte hodnotu premennej y pomocou jednej z dvoch vetiev:

Úloha 1. Do počítača sa zadajú dve čísla. Ak je prvý väčší ako druhý, vypočítajte ich súčet, inak - súčin. Potom by mal počítač vytlačiť výsledok a text PROBLÉM VYRIEŠENÝ

Úloha 2. Drakovi každý rok narastú tri hlavy, ale po dovŕšení 100 rokov už len dve. Koľko hláv a očí má drak N rokov?

Booleovské operácie v Pascale (v boolovskom výraze)

Keď potrebujete použiť dvojitú podmienku v Pascale, potrebujete logické operácie.

  • Booleovská operácia A (A), umiestnený medzi dvoma podmienkami, hovorí, že obe tieto podmienky musia byť splnené naraz (musia byť pravdivé). Logický význam operácie je „spojenie“.
  • Umiestnený medzi dve podmienky, znamenie ALEBO (OR) hovorí, že stačí, ak je pravdivá aspoň jedna z nich (jedna z dvoch podmienok je pravdivá). Logický význam operácie je „disjunkcia“.
  • V Pascale XOR - znak logickej operácie, ktorý znamená "prísnu disjunkciu" a naznačuje, že je potrebné, aby jedna z dvoch podmienok bola splnená (pravda) a druhá nebola splnená (nepravda).
  • Booleovská operácia NIE pred logickým výrazom alebo premennou má význam „negácia“ alebo „inverzia“ a označuje, že ak je daná premenná alebo výraz pravdivá, potom je jej negácia nepravdivá a naopak.

Dôležité: Každá z jednoduchých podmienok musí byť uzavretá v zátvorkách.

Príklad: Zvážte príklady logických operácií v logických výrazoch v jazyku Pascal

1 2 3 4 5 6 7 8 varn: integer ; začiatok:= 6 ; ak (n>5) a (n<10 ) then writeln ("истина" ) ; if (n>7) alebo (č<10 ) then writeln ("истина" ) ; if (n>7)xor(n<10 ) then writeln ("истина" ) ; if not (n>7) potom writeln("true"); koniec.

varn:integer; začiatok:=6; ak (n>5) a (n<10) then writeln("истина"); if (n>7) alebo (č<10) then writeln("истина"); if (n>7) xor(n<10) then writeln("истина"); if not(n>7) potom writeln("true"); koniec.

Príklad: Spoločnosť prijíma zamestnancov od 25 do 40 rokov vrátane. Zadajte vek osoby a určte, či sa hodí pre túto spoločnosť (zobrazte odpoveď „vhodné“ alebo „nevhodné“).
zvláštnosť: musíme skontrolovať, či sú súčasne splnené dve podmienky.

Väčšina programátorov považuje použitie príkazu bezpodmienečného skoku v programe za zlý vkus a zriedka ho používa. Ale napriek tomu to musíte vedieť, pretože sa môže ukázať, že nemôžete prísť s alternatívnym riešením problému. Názov tohto operátora ísť do, sémantický význam v programe „prejsť na ...“ a jeho všeobecná forma je nasledovná:

Prejsť na m;

m– štítok preddefinovaný v časti popisu štítku. Nasledujúci program ukazuje, ako funguje bezpodmienečný operátor pobočky.

1
2
3
4
5
6
7
8
9
10

program goto_primer; (názov programu)
usecrt; (pripojenie modulu)
značka m; (popis menovky m)
začať
napíš('Karl Marx' ) ; (reťazcový výstup)
goto m; (požiadavka prejsť na štítky)
napis('chytry') ; (tento operátor je vynechaný)
m: napíš('blázon') ; (ide do tejto oblasti)
readkey; (na zastavenie programu)
koniec.

V tomto programe nie sú žiadne podmienky, ale o nich sa bude diskutovať ďalej.

Podmienený operátor:

V Pascale, aby ste skontrolovali niektorú časť programu a určili ďalšiu cestu, ktorou sa má vydať, existuje operátor Ak. V závislosti od splnenia logickej podmienky udáva, ktorý blok sa vykoná ako ďalší. Existujú dve formy písania: úplné a krátke. Druhý sa od prvého líši tým, že má pobočku Inak(inak).

Celkový pohľad na krátky formulár:

Ak<условие A>Potom<оператор 1>;

Celkový pohľad na celý formulár:

Ak<условие A>Potom<оператор 1>

Inak<оператор 2>;

V skratke, príkaz 1 sa vykoná, keď je podmienka A pravdivá, inak riadenie prechádza na nasledujúci príkaz. V plnej forme, ak je podmienka A pravdivá, vykoná sa príkaz 1, inak sa vykoná príkaz 2. Všimnite si, že pred else nie je bodkočiarka.

Príklad programu s podmieneným príkazom napísaným v krátkej forme:

Príklad programu s podmieneným príkazom napísaným v plnej forme:

V Pascale môžete vnoriť jeden podmienený príkaz do druhého a môžete to urobiť mnohokrát. Zároveň treba poznamenať, že každý Potom zodpovedá najbližšiemu Inak.

Vyberte vyhlásenie:

Keď je počet alternatív väčší ako dve, použije sa príkaz select prípad. Jeho vzhľad:

prípad<селектор>z

<значение селектора>: <оператор 1>;

<значение селектора>: <оператор 2>;

<значение селектора>: <оператор N>;

Inak<оператор>

Ak je volič operátora Ak bol teda boolovský výraz prípad je to premenná, ktorá môže byť celočíselného, ​​enumerovaného, ​​intervalového alebo znakového typu. Ak sa selektor zhoduje s hodnotou, vykoná sa príslušný príkaz. Existujú tri spôsoby, ako nastaviť hodnotu selektora:

1) výpočet: 1, 10, 100, 1000

2) rozsah: 'd'..'k'

3) enumerácia a rozsah: 1..10, 20, 30, 50, 70..100

Vykonané v príkaze select to dokáže iba jedna vetva (predchádzajúca), aj keď sa selektor zhoduje s viacerými hodnotami. Tiež na rozdiel Ak v prípad Predtým môžete vložiť bodkočiarku Inak.

Uvažujme o programe, v ktorom sú podmienky kontrolované príkazom select.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

program case_primer;
usecrt;
var peniaze: char ;
začať
napíš ( „Prvé písmeno kódu meny:“) ;
readln(peniaze) ; (zadajte hodnotu do premennej)
prípad peniaze
„A“, „a“: writeln ( "francúzsky frank") ;
„B“, „b“ : writeln („dinár“);
'C' , 'c' : writeln('Yuan') ;
„E“, „e“: writeln ( "španielska peseta") ;
"G", "g": writeln ( "Anglická libra šterlingov") ;
„Ja“, „ja“: writeln ( "talianska líra") ;
'J' , 'j' : writeln ('Yen') ;
"R", "r" : writeln ("rubeľ");
'U' , 'u' : writeln ('americký dolár') ;
„X“, „x“ : writeln ( „Východokaribský dolár“) ;
inak napísané ( „Neznáma jednotka“)
koniec ;
readkey;
koniec.

Program skontroluje volič oproti daným hodnotám. Ak sa nenájde žiadna zhoda, blok sa vykoná. Inak.

Operátor je nedeliteľným prvkom programu, ktorý umožňuje vykonávať určité algoritmické akcie. Rozdiel medzi operátorom vo vzťahu k ostatným prvkom je v tom, že vždy znamená nejaký druh akcie. V Pascale sú operátory tvorené funkčnými slovami. Príkazy používané v programe sú navzájom oddelené a od ostatných prvkov programu oddelené symbolom (;). Všetko Operátory jazyka Pascal možno rozdeliť na dve skupiny:

  1. jednoduchý;
  2. štruktúrovaný.

Jednoduché operátory sú operátory, ktoré neobsahujú iné operátory. Tie obsahujú:

  • operátor priradenia (:=);
  • operátor postupu;
  • operátor bezpodmienečného skoku (GOTO).

Štruktúrované príkazy sú výroky, ktoré obsahujú iné výroky. Tie obsahujú:

  • zložený operátor;
  • operátory podmienok (IF, CASE);
  • príkazy cyklu (FOR, WHILE, REPEAT);
  • pripojiť sa k operátorovi (WITH).

Jednoduché operátory

vyhlásenie o postupe

vyhlásenie o postupe sa používa na volanie procedúry.

formát: [názov_procedúry] (zoznam parametrov volania);

Príkaz procedúry pozostáva z identifikátora procedúry, za ktorým bezprostredne nasleduje zoznam parametrov volania v zátvorkách. Pascal má procedúry bez parametrov. V tomto prípade pri volaní neexistuje zoznam parametrov. Vykonanie príkazu procedúry vedie k aktivácii akcií opísaných v jeho tele. V Pascale existujú dva typy procedúr:

  • Štandardné, ktoré sú opísané v samotnom jazyku a patria do jazyka;
  • Používateľské procedúry, ktoré používateľ vytvára.

Pre volanie štandardných procedúr je potrebné sa pripojiť v časti USES názvu modulu (knižnice), kde je tento postup popísaný. Množstvo procedúr nachádzajúcich sa v module SYSTÉM sa k programu pripája vždy automaticky a nie je potrebné ich pripájanie v sekcii POUŽITIE. Pascalove štandardné procedúry sú ČÍTANIE, ZÁPIS, PREPÍSANIE, ZATVORENIE, RESET.

PREČÍTAJTE ([premenná_súboru], [zoznam_vstupov])

PREČÍTAJTE (x,y)

Používateľské procedúry (neštandardné) musia byť vytvorené pred ich použitím v programe a nachádzajú sa buď v popisnej časti samotného programu, alebo v samostatných programových jednotkách modulu. Ak je postup v module, názov tohto modulu musí byť uvedený v aplikácii USES.

Príkaz bezpodmienečného skoku GOTO

formát: GOTO [štítok];

GOTO je vyhradené slovo v jazyku Pascal. [label] je ľubovoľný identifikátor, ktorý vám umožňuje označiť príkaz programu a neskôr naň odkazovať. V jazyku Pascal je povolené používať ako štítky celé číslo bez znamienka. Štítok sa umiestni pred označený operátor a oddelí sa od neho (:). Jeden operátor môže byť označený niekoľkými štítkami. Tiež sú od seba oddelené (:). Predtým, ako bude možné použiť označenie v sekcii príkazov, musí byť deklarované v sekcii LABEL (časť popisu).

Akcia GOTO prenesie riadenie na príslušný označený príkaz. Pri používaní štítkov musíte dodržiavať nasledujúce pravidlá:

  • štítok musí byť opísaný v časti s popisom a musia sa použiť všetky štítky;
  • ak sa ako štítky používajú celé čísla, nie sú deklarované.

Odporuje princípom technológie štruktúrovaného programovania. Moderné programovacie jazyky takýto operátor neobsahujú a nie je potrebné ho používať. Moderné počítače navyše využívajú takzvanú pipeline metódu. Ak sa v programe stretnete s operátorom bezpodmienečnej vetvy, potom takýto operátor preruší celú pipeline a prinúti ju vytvoriť novú, čo výrazne spomalí výpočtový proces.

Štruktúrované príkazy

IF podmienky

Podmienený operátor sa v programe používa na implementáciu algoritmickej štruktúry - vetvenia. V tejto štruktúre môže výpočtový proces pokračovať jedným z možných smerov. Voľba smeru sa zvyčajne vykonáva kontrolou nejakej podmienky. Existujú dva druhy štruktúry vetvy: štruktúra vidlice a štruktúra obtoku.

V Pascale je podmienený operátor IF prostriedkom na organizáciu rozvetveného výpočtového procesu.

formát: IF [booleovský_výraz] Potom [príkaz_1]; Else [operátor_2];

IF, Then, Else - služobné slová. [operátor_1], [operátor_2] - bežné operácie v jazyku Pascal. Časť Else je voliteľná (môže chýbať).

Príkaz IF funguje takto: najprv sa skontroluje výsledok boolovského výrazu. Ak je výsledok TRUE, vykoná sa [operátor_1] za kľúčovým slovom Then a [operátor_2] sa preskočí. Ak je výsledok FALSE, potom sa príkaz [príkaz_1] preskočí a vykoná sa príkaz [príkaz_2].

Ak chýba časť Else, potom má príkaz IF neúplnú formu:

IF [booleovský_výraz] Potom [operátor];

V tomto prípade, ak je výsledok TRUE, potom sa vykoná [operátor]; ak je FALSE, potom sa kontrola prenesie na operátora po príkaze IF.

sú 2 čísla A a B. Nájdite maximálny počet.

Zložené vyhlásenie

Zložený príkaz je postupnosť ľubovoľných operácií v programe, uzavretá v takzvaných zátvorkách operátora (Začiatok-Koniec).

formát: Začať [príkazy]; koniec;

Zložené príkazy umožňujú reprezentovať skupinu príkazov ako jeden príkaz.

príkaz CASE select

Navrhnuté na implementáciu viacerých vetiev, keďže príkaz IF môže implementovať iba dva smery výpočtového procesu, nie je vždy vhodné použiť ho na implementáciu viacerých vetiev. Viacnásobné vetvenie je implementované príkazom CASE.

formát: CASE [select_key] OF

[vyberte_konštantnú_1]:[operátor_1];

[výber_2_konštantný]:[operátor_2];

[výber_N]:[operátor_N];

ELSE [operátor];

CASE, OF, ELSE, END - služobné slová. [select_key] je parameter jedného z radových typov. [choice_consts] - konštanty rovnakého typu ako kláves voľby, ktoré implementujú voľbu. [operator_1(N)] je obyčajný operátor. ELSE môže chýbať.

Výberový príkaz funguje nasledovne: pred vykonaním príkazu sa určí hodnota parametra výberového kľúča. Tento parameter môže byť vyjadrený buď ako premenná v programe alebo inak. Potom sa parameter výberového kľúča postupne porovnáva s výberovou konštantou. Ak sa hodnota kľúča výberu zhoduje s niektorou z konštánt výberu, vykoná sa príkaz nasledujúci za konštantou a všetky ostatné príkazy sa ignorujú. Ak sa výberový kľúč nezhoduje so žiadnou z konštánt, vykoná sa príkaz nasledujúci po Else. Else je často voliteľné a ak sa výberový kľúč nezhoduje so žiadnou z výberových konštánt a ak Else nie je prítomný, riadenie sa prenesie do príkazu nasledujúceho za príkazom CASE.

V príkaze CASE nie je žiadna explicitná kontrola stavu, ktorá by bola špecifická pre príkaz IF. Súčasne sa vykoná implicitná porovnávacia operácia. CASE zavádza disonanciu do programu Pascal, pretože dátový príkaz končí kľúčovým slovom End, ktoré nemá pár Begin.

Napíšte algoritmus a program pre úlohu, ktorá simuluje činnosť semafora. Keď zadáte znak prvého písmena farieb semaforu, program by mal zobraziť správu o zodpovedajúcej farbe a akciách.

Program funguje nasledovne: pomocou procedúry Read na klávesnici sa zadá symbol písmena farby semafora. Ak je zadané písmeno „g“ zodpovedajúce zelenej, potom v príkaze CASE hodnota zadaná vo výberovom zozname nájde výberovú konštantu „g“ a zobrazí sa hlásenie „Zelená, pohyb povolený“. Pri zadávaní znaku písmen 'k' a 'g' sa zobrazia podobné hlásenia. Ak zadáte akýkoľvek iný znak, zobrazí sa hlásenie „Semafor nefunguje“, pretože v tomto prípade funguje iná časť príkazu CASE.

Výkazy slučky

Cyklická algoritmická štruktúra je štruktúra, v ktorej sa niektoré akcie vykonávajú niekoľkokrát. V programovaní existujú dva druhy štruktúr slučky: slučka s parametrom a iteratívna slučka.

Slučka s parametrom má vždy takzvané parametre slučky: X, X n , X k , ∆X. Niekedy sa slučka s parametrom nazýva pravidelná slučka. Charakteristickým znakom je, že počet slučiek a opakovaní je možné určiť pred vykonaním slučky.

V iteratívnej slučke nie je možné určiť počet slučiek pred jej vykonaním. Vykonáva sa, pokiaľ je splnená podmienka pre pokračovanie cyklu.

V Pascale sú tri operátory, ktoré implementujú cyklické výpočtové štruktúry:

  • PRE operátora počítania. Je určený na implementáciu slučky s parametrom a nemožno ju použiť na implementáciu iteračnej slučky;
  • slučkový operátor s podmienkou WHILE;
  • slučkový operátor s dodatočnou podmienkou REPEAT.

Posledné dva sú zamerané na implementáciu iteratívnej slučky, ale dajú sa použiť aj na implementáciu slučky s parametrom.

vyhlásenie FOR

formát: FOR [parameter_slučky] := [c_c_p_c] Do [c_c_c_c] Do [operátor];

FOR, To, Do - služobné slová. [loop_parameter] - parameter slučky. [n_z_p_ts] - počiatočná hodnota parametra cyklu. [k_z_p_ts] - konečná hodnota parametra cyklu. [operátor] – ľubovoľný operátor.

Parameter slučky musí byť premenná ordinálneho typu. Počiatočné a koncové hodnoty parametra cyklu musia byť rovnakého typu ako parameter cyklu.

Zvážte prácu operátora na jeho algoritme:

V prvom kroku je hodnota parametra cyklu [n_z_p_ts], potom sa skontroluje, či je parameter cyklu menší alebo rovný [k_z_p_ts]. Táto podmienka je podmienkou pre pokračovanie cyklu. Ak sa vykoná, cyklus pokračuje vo svojej práci a vykoná sa [príkaz], po ktorom sa parameter cyklu zvýši (zníži) o jednu. Potom sa s novou hodnotou parametra cyklu skontroluje podmienka pre pokračovanie cyklu. Ak sa vykoná, akcie sa zopakujú. Ak podmienka nie je splnená, cyklus sa ukončí.

Operátor For sa výrazne líši od podobných operátorov v iných programovacích jazykoch. Rozdiely sú:

  • telo vyhlásenia For. Príkaz sa nemusí vykonať ani raz, pretože test podmienky pokračovania cyklu sa vykonáva pred telom cyklu;
  • krok zmeny parametra cyklu je konštantný a rovná sa 1;
  • telo cyklu v príkaze For je reprezentované jedným príkazom. V prípade, že akcia tela cyklu vyžaduje viac ako jeden jednoduchý príkaz, potom sa tieto príkazy musia zmeniť na jeden zložený príkaz pomocou operátorových zátvoriek (BEGIN-END);
  • Parameter slučky môže byť len premenná ordinálneho typu.

Príklad použitia príkazu FOR: vytvorte tabuľku na prevod rubľov na doláre.

Príkaz WHILE (príkaz slučky s predbežnou podmienkou)

formát: WHILE [podmienka] Urobte [vyhlásenie];

WHILE, Do - služobné slová. [stav] - výraz booleovského typu. [operátor] - obyčajný operátor.

;

Príkaz While funguje nasledovne: najprv sa skontroluje výsledok logickej podmienky. Ak je výsledok pravdivý, vykoná sa operátor, po ktorom sa vykoná návrat ku kontrole stavu s novou hodnotou parametrov v logickom vyjadrení podmienky. Ak je výsledok nepravdivý, cyklus sa skončí.

Pri práci s While musíte venovať pozornosť jeho vlastnostiam:

  • podmienky použité v While sú podmienkou pokračovania v slučke;
  • v tele cyklu sa vždy mení hodnota parametra zahrnutého vo výraze podmienky;
  • Cyklus While sa nemusí vykonať ani raz, pretože test podmienky počas cyklu sa vykonáva pred telom cyklu.

príkaz REPEAT (príkaz slučky s postcondition)

formát: REPEAT [loop_body]; DO [podmienka];

Príkaz REPEAT funguje nasledovne: najprv sa vykonajú príkazy tela slučky, po ktorých sa skontroluje výsledok logickej podmienky. Ak je výsledok nepravdivý, vykoná sa návrat k vykonávaniu operátorov ďalšieho tela cyklu. Ak je výsledok pravdivý, príkaz sa ukončí.

Operátor Repeat má nasledujúce funkcie:

  • v Repeat sa kontroluje podmienka pre ukončenie cyklu a ak je podmienka splnená, tak sa cyklus ukončí;
  • telo slučky sa vždy vykoná aspoň raz;
  • v tele slučky sa mení parameter na kontrolu podmienky;
  • Príkazy tela cyklu nemusia byť uzavreté v zátvorkách operátora (BEGIN-END), zatiaľ čo úlohu zátvoriek operátora vykonávajú funkcie Opakovať a Do.

Vypočítajte y=sin(x), kde xn=10, xk=100, krok je 10.

Štruktúrované príkazy sú príkazy, ktoré obsahujú iné príkazy a riadia poradie, v ktorom sa vykonávajú. Tie obsahujú:

  • zložený operátor;
  • podmienený operátor If ;
  • podmienené vyhlásenie Vec ;
  • operátor slučky Repeat ;
  • zatiaľ čo príkaz cyklu;
  • Pre operátora slučky.

Zložené vyhlásenie

Často je potrebné, aby vo vzťahu k nejakej akcii boli viaceré výroky v programe vnímané ako jeden výrok. Takýto operátor je možné získať, ak sa potrebná postupnosť operátorov skombinuje s operátorskými zátvorkami. Servisné slová Začiatok a Koniec sa nazývajú zátvorky operátora.

Formát operátora:

operátor číslo 1;

operátor číslo 2;

operátor číslo 3;

číslo operátora n-1;

číslo operátora n; koniec;

Slovo Začiatok hrá úlohu otváracej zátvorky, slovo Koniec hrá úlohu uzatváracej zátvorky.

Zložený príkaz sa považuje za jeden príkaz. Môže byť vložený kdekoľvek v programe, kde je povolený iba jeden príkaz.

Príkazy zahrnuté v zloženom príkaze, rovnako ako akékoľvek iné príkazy, sú oddelené bodkočiarkou, ale tento oddeľovač možno pred koncom vynechať. Po skončení sa vyžaduje bodkočiarka ako oddeľovač medzi zloženým príkazom a nasledujúcim príkazom.

V nasledujúcich častiach bude význam a účel zloženého operátora ilustrovaný na mnohých príkladoch.

Podmienený príkaz IF

Operátor If implementuje algoritmickú konštrukciu „Rozhodnutie“ a umožňuje vám zmeniť poradie vykonávania operátorov v závislosti od pravdivosti alebo nepravdivosti určitej podmienky. Formát operátora môže byť napísaný v dvoch formách: úplná a neúplná.

Formát operátora v plnej forme:

Ak<условие>Potom<оператор 1>Inak<оператор 2>

Formát operátora v neúplnom tvare:

Ak<условие>Potom<оператор 1>

If (ak), Then (potom), Else (inak) sú vyhradené slová.

Vývojové diagramy príkazu if sú uvedené nižšie:

Podmienený operátor funguje takto. Najprv sa vyhodnotí podmienený výraz< условие >. Ak je výsledok True, potom< оператор 1 >(za slovom Vtedy), a< оператор 2 >preskočené. Ak je výsledok False (false), potom< оператор 1 >preskočené a vykonané< оператор 2 >(za slovom Else). Else nikdy nepredchádza bodkočiarka, pretože to nie je koniec príkazu If.

Iná časť<оператор 2>podmienený príkaz If možno vynechať. Ak< условие >Ak sa príkaz vyhodnotí ako True , potom je<оператор 1>, inak sa tento operátor preskočí. V tomto prípade má formát podmieneného príkazu neúplnú formu:

Porovnajme dva dizajny:

Ak<условие>Potom<оператор 1>;

Ak<условие>Potom<оператор 1>; <оператор 2>;

V prvom riadku<оператор 1>buď vykonaný alebo nevykonaný v závislosti od vykonania<условия>. V druhom riadku<оператор 2>sa vždy vykoná, pretože po<оператора 1>je tam oddeľovač ";" a všetko, čo má hodnotu oddeľovacieho poľa, sa počíta ako ďalší operátor. Preto podľa formátu príkazu If môže byť za vyhradenými slovami Then a Else iba jeden príkaz.

Príklad:

Ak a > 0, potom b:=1;

Ak a > 0, potom b:=1; a:=b; (operátor a:=b; vždy vykonaný)

Ak je potrebné vykonať po Then a Else nie jeden, ale niekoľko operátorov, potom by mali byť vložené operátorové zátvorky, t.j. použite zložený operátor.

V tomto prípade bude príkaz If vyzerať takto:

Ak<условие>Potom

operátor 11;

operátor 1n;

operátor 21;

operátor 2n;

Príklad.

Ak a>0 Potom začnite b:=1; a:=b; koniec;

ÚLOHA 1. Vypočítajte hodnotu funkcie danej nerovnicami

y=x+1 pre x<0; y=2∙x при x>0.program a5; varx,y:real; begin write('Zadajte hodnotu x: '); readln(x); if x writeln('Hodnota y je: ', y:6:2) end.

Výsledky programu:

Zadajte hodnoty x:0,5

Hodnota y je: 1,00

ÚLOHA 2. Napíšte program na riešenie kvadratickej rovnice. Ak je diskriminant menší ako nula, zobrazte príslušnú správu.

Program a6; var a,b,c:real; (koeficienty rovnice) x1,x2:reálne; (korene rovnice) d:real; (diskriminant) begin Writeln('Riešenie kvadratickej rovnice':50); Napíšte('Zadajte hodnoty koeficientov a,b,c:'); readln(a,b,c); (zadanie koeficientov) d:=b*b-4*a*c; ak (d<0) then Writeln(‘Уравнение не имеет корней.’) else begin {операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLn(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end.

Výsledky programu:

Riešenie kvadratickej rovnice

Zadajte koeficienty a,b,c:3 1 6

Rovnica nemá korene.

V príkaze If možno použiť nielen zložený príkaz, ale aj ľubovoľný štruktúrovaný príkaz. Podmienený operátor, ak to zvážime, môže byť tiež použitý ako taký operátor. V tomto prípade sa hovorí o vnorených príkazoch If.

Príklad.

ak podmienka tak
začať Držiaky operátora
operátor; vnorené
vyhlásenie IF,
neúplný formulár
ak podmienka, potom vyhlásenie
iné vyhlásenie;
koniec
inak
začať Držiaky operátora
operátor; vnorené
vyhlásenie IF,
neúplný formulár
ak podmienka
potom vyhlásenie;
koniec;

Pri práci s vnorenými príkazmi ak mali by sa zohľadniť tieto pravidlá:

  • pred rezervovaným slovom inak symbol ";" nikdy nastavený;
  • rezervované slovo else je vždy spojené s najbližším rezervovaným slovom ako pred ním.

ÚLOHA 3. Vylepšíme program na riešenie kvadratickej rovnice (ÚLOHA 2). Keď je hodnota koeficientu a=0, rovnica degeneruje. Táto skutočnosť nebola v programe zohľadnená, čo spôsobí fatálnu chybu pri vykonávaní programu (delenie nulou). Aby sme vylúčili delenie nulou, skontrolujeme hodnotu koeficientu a po jeho zadaní operátorom Readln(a,b,c) .

Keďže premenná a je v programe deklarovaná ako premenná reálneho typu, jej číselná hodnota v stroji nie je s určitou chybou presne reprezentovaná. Preto záznam ako

Existuje niekoľko možností na správne porovnanie hodnôt skutočnej premennej s nulou:

ÚLOHA 4. Vylepšený program na riešenie kvadratickej rovnice.

Program a7;Var a,b,c:real; (koeficienty rovnice) x1,x2:reálne; (korene rovnice) d:real; (diskriminant) begin Writeln('Riešenie kvadratickej rovnice':50); Napíšte('Zadajte hodnoty koeficientov a,b,c: '); readln(a,b,c); (vstupné koeficienty), ak zaokrúhlite (a)<>0 potom začnite d:=b*b-4*a*c; ak d<0 then Writeln(‘Уравнение не имеет корней.’) else begin{операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLN(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end else Writeln(‘Деление на нуль.’); end.

Výsledky programu:

Riešenie kvadratickej rovnice Zadajte hodnoty koeficientov a,b,c:0 1 6 Vydeľte nulou.

Vyhlásenie o podmienenom výbere Prípad

Príkaz select je zovšeobecnením príkazu If a používa sa, keď je potrebné vykonať iba jeden príkaz zo sady príkazov v závislosti od hodnoty kľúča výberu.

Výberové tlačidlo je výraz, ktorý sa nachádza medzi vyhradenými slovami Case a of. Výraz môže byť celočíselný, logický a znakový. Výraz nemôže byť typu Real, String.

Formát operátora:

Prípad"<ключ выбора>" konštanta1: operátor 1; konštanta2: operátor 2; konštanta3: operátor 3; ... konštantaN-1: operátor N-1; konštantaN: operátor Nn; Else operátor End;

Tu Case (in case), of (from), Else (inak), End (end) sú vyhradené slová.

Výberový kľúč je výraz akéhokoľvek typu iného ako Real a String.

Konštanta1 je konštanta rovnakého typu ako výraz.

Operátor1 je ľubovoľný operátor.

Príkaz select funguje nasledovne. Najprv sa vyhodnotí výraz<ключ выбора>a potom sa v postupnosti operátorov nájde jeden, ktorému predchádza konštanta rovnajúca sa vypočítanej hodnote<ключ выбора>. Nájdený príkaz sa vykoná, po ktorom príkaz select dokončí svoju prácu (ovládanie sa prenesie na koniec). Ak sa v zozname konštánt nenájde žiadna konštanta, ktorá by sa zhodovala s vypočítanou hodnotou výberového kľúča, riadenie sa prenesie na príkaz za slovom Else.

Iná časť<оператора>možno vynechať, ak v zozname konštánt nie je žiadna požadovaná konštanta, nič sa nestane a príkaz select jednoducho ukončí svoju prácu.

ÚLOHA 5. Napíšte jednoduchý program na kalkulačku.

Program a8; varx,y:real; z:real; (výsledok) op:char; (kláves výberu) begin Write('Zadajte operandy x,y: '); readln(x,y); Write('Zadajte operáciu(+,-,*,/): '); readln(op); veľkosť písmen op pre „+“:z:=x+y; '-':z:=x-y; „*“:z:=x*y; ‘/‘:ak y0 then z:=x/y Elsewriteln(‘Delenie nulou’); Else writeln('Žiadna akcia!'); koniec; (op) (takže môžete označiť "čího" koniec) writeln('Výsledok je=',z:8:2); koniec.

Výsledky programu:

Zadajte operandy x,y:4 2

Zadajte operáciu (+,-,*,/):*

Výsledok je = 8,00

V programe je tlačidlo výberu premenná typu znaku. V závislosti od zadanej hodnoty symbolov (+, -, *, /) sa vykoná jedna z aritmetických operácií: sčítanie, odčítanie, násobenie alebo delenie. Ak je ako deliteľ zadaná nula, delenie nie je možné a zobrazí sa hlásenie "Delenie nulou". Ak zadáte akýkoľvek iný znak, výsledkom bude hlásenie „Žiadna akcia nebola poskytnutá!“. Ak sú zadané platné operácie, vráti sa výsledok.

ÚLOHA 6. Napíšte program, ktorý používateľa vyzve na zadanie čísla dňa v týždni a potom vytlačí názov dňa v týždni alebo chybové hlásenie, ak je zadanie nesprávne.

Program a9; Varn: celé číslo; (číslo dňa v týždni) Begin write('Zadajte číslo dňa v týždni:'); readln(n); prípad n z 1: writeln('pondelok'); 2: writeln('utorok'); 3: writeln('Streda'); 4: writeln('Štvrtok'); 5: writeln('piatok'); 6: writeln('sobota'); 7: writeln('nedeľa'); else napíš('urobil si chybu!') koniec; (n)koniec.

Výsledky programu:

Zadajte číslo dňa v týždni: 1

pondelok

Žiadna konštanta sa nesmie zhodovať s druhou. Ak je potrebné vykonať rovnaký príkaz pre niekoľko konštánt, potom ich možno uviesť oddelené napríklad čiarkami

prípad n z 1,3,5,7,9: writeln('Toto sú nepárne čísla'); 2,4,6,8,10: writeln('Toto sú párne číslice'); koniec;