Kako postaviti pametne telefone i računala. Informativni portal

Koju vrstu operatora dodjele ima? Pascal operatori

Operator dodjele

Jedan od glavnih operatora je operator dodjele. Koristi se za dodjeljivanje vrijednosti varijabli. U ovom slučaju, vrijednost izraza koja se nalazi desno od znaka dodjele dodjeljuje se varijabli čiji se identifikator nalazi lijevo od znaka dodjele.

Operator dodjele može se koristiti za dodjelu vrijednosti

varijabla bilo koje vrste, osim datoteke. Jedini uvjet je,

tako da varijabla /ili funkcija/ i izraz imaju isti tip. Izuzetak je kada je varijabla realnog tipa, tada izraz može biti realnog ili cjelobrojnog tipa.

Ovdje je a jednostavna ili indeksna varijabla; b – aritmetička odn logički izraz. Izvršenje operatora sastoji se od evaluacije izraza desno od znaka “:=” i dodjele dobivene vrijednosti lijevoj strani operatora, uzimajući u obzir tip varijable koja se tamo nalazi. Primjeri:

kut:= kut * p1;

AccessOK:= False;

SpherVol:= 4 * p1 * R * R;

3.3.2. Unos - izlaz podataka

Unos podataka provodi se pomoću operatora unosa bez formata:

Čitaj (a 1 ,…,a n); Readln (a 1 ,…,a n);,

gdje je a 1 ,…, i n popis varijabli.

Podaci se unose s tipkovnice, pri čemu su brojčani podaci međusobno odvojeni razmakom, osim podataka znakovnog i nizovnog tipa.

Unos vrijednosti elemenata niza provodi se ispisivanjem elemenata na popisu i korištenjem operatora petlje, na primjer:

Pročitaj (a, a, a,…)

za i:=1 do n učiniti

za j:=1 do m učiniti

čitati);.

Uz veliku veličinu niza, unos podataka s tipkovnice postaje radno intenzivna operacija. U ovom slučaju, prikladnije je postaviti vrijednosti elemenata niza u odjeljku konstantnog opisa.

Primjer: unesite vrijednosti elemenata vektora X i matrice A, koje su redom jednake:

X = (5, 1,2, 0,1, 7, 8,6) A = 3, 0, 6, 14, 5

0, 0, 0, 99, 12

Vrijednosti elemenata mogu se odrediti njihovim inicijaliziranjem:

Const X: niz realnih = (5,0, 1,2, 0,1, 7,0, 8,6);

A: niz cijelih brojeva = ((4, 5, 10, 8, 0),

(7, 9, 25, 0, 1),

(3, 0, 6, 14, 5),

(0, 0, 0, 99, 12));.

Podaci se izlaze na zaslon pomoću operatora write i writeln, na primjer:

write('x=', x:3, 'y=', y:8:3);

Zaslon prikazuje: vrijednosti varijable tipa cijelog broja X, za koje su dodijeljene 3 pozicije, varijablu Y pravi tip, zauzima 8 pozicija. Kada je atom pod razlomački dio varijabli Y dodijeljena su 3 mjesta; samo za varijablu X cijeli dio. Prije brojčane vrijednosti varijable, prikazuju se informacije koje ih objašnjavaju, a koje se sastoje od naziva varijabli.

Dakle, kao što slijedi iz primjera, format za ispis varijabli cjelobrojnog tipa je :A, varijable realnog tipa :a:p, Gdje A- ukupan broj pozicija dodijeljenih za broj, od čega R- pozicije se dodjeljuju za frakcijski dio. U ukupnom broju pozicija A uključeni su položaji za brojčani znak i decimalnu točku. Razdjelnik u formatu je znak ":". Ako format nije naveden u izlaznoj izjavi, tada će se izlaz izvesti u normaliziranom obliku predstavljanja realnog broja. Prikazani tekst objašnjenja je omeđen apostrofima.

Za skraćivanje izraza u programskom jeziku C++ postoje posebne operacije koje se nazivaju operacije dodjele. Pogledajmo dio koda koji koristi operator dodjele.

Int vrijednost = 256; vrijednost = vrijednost + 256; // regularni izraz koji koristi dvije operacije: = i + vrijednost += 256; // skraćeni ekvivalentni izraz koji koristi operator dodjele

U linija 2 vrijednosti varijable dodijeljena je vrijednost 512, koja proizlazi iz zbroja vrijednosti sadržane u vrijednosti varijable s brojem 256. U linija 3 izraz izvodi istu operaciju kao u linija 2, ali izraz je napisan u pojednostavljenom obliku. Ovaj izraz sadrži operator dodjele sa znakom plus +=. Dakle, operacija += zbraja vrijednost varijable value s vrijednošću koja je desno: 256, i dodjeljuje rezultat zbroja istoj varijabli. Kao što se vidi iz primjera, operator in linija 3 kraći od operatera u linija 2, iako izvodi sličnu operaciju. Dakle, ako treba promijeniti neku varijablu, onda se preporučuje korištenje operatora dodjele.

Postoji pet operatora dodjele u C++-u, ne računajući osnovni operator dodjele: =.

  1. += operacija dodjele-zbrajanja;
  2. -= operacija dodjeljivanja-oduzimanja;
  3. *= operacija dodjele-množenja;
  4. /= operacija dodjele-dijeljenja;
  5. %= operator dodjele - ostatak dijeljenja;

Dogovorimo se da operacije dodjele imenujemo crticom kako bi bilo jasno o kakvoj operaciji govorimo. Tablica 1 jasno prikazuje primjere korištenja operatora dodjele u programskom jeziku C++.

Operatori dodjele u C++
Operacija Oznaka Primjer Ekvivalentan primjer Obrazloženje
operacija dodjele-dodavanja += promjen. += 16 var = var + 16 Vrijednosti varijable var dodamo broj 16, rezultat zbrajanja pohranjujemo u varijablu var
operacija dodjeljivanja-oduzimanja -= promjen. -= 16 var = var - 16 Od varijable var oduzimamo broj 16, rezultat oduzimanja spremamo u varijablu var
operacija dodjeljivanja-množenja *= prom. *= 16 var = var * 16 Množimo vrijednost varijable var 16 puta, rezultat množenja se dodjeljuje varijabli var
operacija dodjele-dijeljenja /= var /= 16 promjenljiva = promjenljiva / 16 Podijelite vrijednost varijable var sa 16, rezultat dijeljenja se dodjeljuje varijabli var
operator dodjele - ostatak dijeljenja %= promjen. %= 16 var = var % 16 Pronađite ostatak dijeljenja i pohranite ga u varijablu var

Razvijmo program koji će koristiti operacije dodjele.

// assignment.cpp: Definira ulaznu točku za konzolnu aplikaciju. #include "stdafx.h" #include korištenje imenskog prostora std; int main(int argc, char* argv) ( int vrijednost = 256; cout<< "value = "<< vrijednost << endl; vrijednost += 256; // skraćeni izraz koji koristi operator dodjele - zbrajanje cout <<"value += 256; >> " << value << endl; value -= 256; // сокращённое выражение с использованием операции присваивания - вычитания cout << "value -= 256; >> " << value << endl; value *= 2; // сокращённое выражение с использованием операции присваивания - умножения cout << "value *= 2; >> " << value << endl; value /= 8; // сокращённое выражение с использованием операции присваивания - деления cout << "value /= 8; >> " << value << endl; system("pause"); return 0; }

Za početak linija 9varijabla je deklarirana vrijednost , a inicijalizira se s vrijednošću 256. Linije 11, 13, 15, 17 sadrže operacije dodjele - zbrajanje, oduzimanje, množenje i dijeljenje, redom. Nakon svake izvršene operacije dodjele, izjava cout ispisuje rezultat. Rezultat programa (vidi sliku 1).

Vrijednost = 256 vrijednost += 256; >> 512 vrijednost -= 256; >> 256 vrijednost *= 2; >> 512 vrijednost /= 8; >> 64 Za nastavak pritisnite bilo koju tipku. . .

Slika 1 – Operacije dodjele u C++

Na slici 1 zorno su prikazani primjeri izvođenja operacija dodjele, a također je prikazan i rezultat izvršavanja odgovarajuće operacije dodjele.

Zadatak- mehanizam u programiranju koji vam omogućuje dinamičku promjenu odnosa podatkovnih objekata (obično varijabli) s njihovim vrijednostima. Strogo govoreći, promjena vrijednosti je nuspojava operacije dodjele, i to u mnogim slučajevima moderni jezici U programiranju, sama operacija također vraća neki rezultat (obično kopiju dodijeljene vrijednosti). Na fizička razina Rezultat operacije dodjele je pisanje i ponovno pisanje memorijskih ćelija ili registara procesora.

Dodjela je jedna od središnjih konstrukcija u imperativnim programskim jezicima, a implementirana je učinkovito i jednostavno na von Neumannovoj arhitekturi koja je osnova modernih računala.

set<целевая_переменная> <выражение>

Ovaj unos je ekvivalentan pozivanju funkcije. Isto tako, u starom stilu COBOL-a:

MNOŽENJE 2 SA 2 DAJE ČETIRI.

Algoritam rada [ | ]

Oznaka [ | ]

Odabir znakova dodjele izvor je rasprave među programerima jezika. Postoji mišljenje da uporaba simbola = za dodjelu zbunjuje programere i otežava dobra odluka pitanje o izboru simbola za operator usporedbe.

Dobro poznato loš primjer je izbor znaka jednakosti za označavanje dodjele, vraćajući se na Fortran jezik 1957. i još uvijek ga slijepo ponavlja masa razvijača jezika. Ovaj Loša ideja ruši prastaru tradiciju korištenja znaka "=" za označavanje usporedbe za jednakost, predikata koji ima vrijednosti "točno" ili "netočno". Ali u Fortranu je ovaj simbol počeo značiti dodjelu, prisiljavanje na jednakost. U ovom slučaju, operandi su u nejednakom položaju: lijevi operand, varijabla, mora biti jednak desnom operandu, izrazu. Stoga x = y ne znači isto što i y = x.

Izvorni tekst (engleski)

Notorni primjer loše ideje bio je odabir znaka jednakosti za označavanje dodjele. Potječe u Fortran 1957. godine i naslijepo su ga kopirale vojske dizajnera jezika. Zašto je to loša ideja? Jer ruši stoljetnu tradiciju da "=" označava usporedbu za jednakost, predikat koji je ili istinit ili netočan. Ali Fortran je to učinio da znači dodjeljivanje, provođenje jednakosti. U ovom slučaju, operandi su u nejednakom položaju: lijevi operand (varijabla) treba biti jednak desnom operandu (izrazu). x = y ne znači isto što i y = x.

Implementacijom ove Wirthove pozicije može se smatrati da je u jeziku Pascal, čiji je on autor, operator dodjele glasio:=, dok se za usporedbu jednostavno koristi =.

Izbor simbola za operator jednakosti u jeziku kada se koristi = kao dodjela je riješen:

  • Uvođenjem novog jezičnog simbola za operator jednakosti.
A = B = C

varijabli A dodjeljuje se Booleova vrijednost relacijskog izraza B = C. Ova oznaka dovodi do smanjene čitljivosti i rijetko se koristi.

Semantičke značajke[ | ]

“Intuitivni” (za programere imperativnih jezika) način tumačenja dodjele nije uvijek jedini ispravan i moguć.

Nije uvijek moguće razumjeti iz sintakse koja se koristi u imperativnim jezicima kako se implementira semantika dodjele osim ako nije eksplicitno definirana u jeziku.

A = b = a a = 1000

Nakon ovoga, b će imati vrijednost - jednostavno zato što je njegova vrijednost zapravo vrijednost a . Broj referenci na isti podatkovni objekt naziva se njegova kardinalnost, a sam objekt se uništava (uništava ili skuplja u smeće) kada njegova kardinalnost dosegne nulu. Programski jezici više niska razina(npr. C) omogućuju programeru da eksplicitno kontrolira hoće li se koristiti semantika pokazivača ili semantika kopiranja.

Zamjena operacije[ | ]

Mnogi jezici pružaju mogućnost promjene značenja dodjele: bilo putem mehanizma svojstava ili preopterećenjem operatora dodjele. Zamjena može biti potrebna za provjeru valjanosti dodijeljene vrijednosti ili bilo koje druge dodatne operacije. Preopterećenje operatora dodjele često se koristi za pružanje "dubinskog kopiranja", odnosno kopiranja vrijednosti umjesto referenci, koje se kopiraju prema zadanim postavkama u mnogim jezicima.

Takvi mehanizmi omogućuju praktičnost rada, tako da za programera nema razlike između korištenja ugrađenog operatora i preopterećenog. Iz istog razloga mogući su i problemi, budući da se radnje preopterećenog operatora mogu potpuno razlikovati od radnji zadanog operatora, a poziv funkcije nije očit i lako se može zamijeniti s ugrađenom operacijom.

Napredni dizajni[ | ]

Konstrukti dodjele u raznim jezicima programiranje

Budući da se operator dodjele široko koristi, programeri programskih jezika pokušavaju razviti nove konstrukcije za pojednostavljena notacija tipične operacije (dodajte tzv. “sintaktički šećer” u jezik). Osim toga, u programskim jezicima niske razine, kriterij uključivanja za operaciju često je sposobnost kompajliranja u učinkovit izvršni kod. Jezik C je posebno poznat po ovom svojstvu.

Više ciljeva[ | ]

Jedna od alternativa jednostavan operator je mogućnost dodjele vrijednosti izraza većem broju objekata. Na primjer, u jeziku PL/1 operator

SUM, TOTAL = 0

istovremeno dodjeljuje nulta vrijednost varijable SUM i TOTAL. U jeziku Ada, dodjela je također operator, a ne izraz, tako da je oznaka za višestruku dodjelu:

SUM, TOTAL: Integer:= 0;

Slična dodjela u Pythonu ima sljedeću sintaksu:

Zbroj = ukupno = 0

Za razliku od PL/1, Ade i Pythona, gdje se višestruka dodjela smatra samo skraćenim oblikom notacije, u jezicima C, Lisp i dr. ovu sintaksu ima strogu osnovu: jednostavno operator dodjele vraća vrijednost koja im je dodijeljena (vidi gore). Dakle, posljednji primjer je zapravo:

Zbroj = (ukupno = 0)

Ovakav redak radit će u C-u (ako dodate točku-zarez na kraju), ali će izazvati pogrešku u Pythonu.

Paralelni zadatak[ | ]

Posljednja opcija radi samo s vrstama koje podržavaju bitne operacije(na primjer, za dvostruko, prevodilac jezika neće vam dopustiti razmjenu vrijednosti varijabli na ovaj način).

Provedba [ | ]

Rad suvremenih računala sastoji se od čitanja podataka iz memorije ili uređaja u registre, izvođenja operacija nad tim podacima i upisa u memoriju ili uređaj. Glavna operacija ovdje je prijenos podataka (iz registara u memoriju, iz memorije u registar, iz registra u registar). Sukladno tome, izražava se izravno naredbama modernih procesora. Dakle, za x86 arhitekturu (sve naredbe u nastavku također se odnose na ovu arhitekturu) ovo je operacija mov i njezine varijacije za slanje podataka razne veličine. Operacija dodjele (slanje podataka iz jedne memorijske ćelije u drugu) gotovo je izravno implementirana ovom naredbom. Općenito govoreći, za izvođenje prijenosa podataka u memoriji potrebne su dvije instrukcije: memorija-registar i registar-memorija, no korištenjem optimizacije broj instrukcija se u većini slučajeva može smanjiti.

Zadatak

Zadatak- mehanizam u programiranju koji vam omogućuje dinamičku promjenu odnosa podatkovnih objekata (obično varijabli) s njihovim vrijednostima. Strogo govoreći, promjena vrijednosti je nuspojava operacije dodjele, au mnogim modernim programskim jezicima sama operacija također vraća neki rezultat (obično kopiju dodijeljene vrijednosti). Na fizičkoj razini, rezultat operacije dodjele je pisanje i ponovno pisanje memorijskih ćelija ili registara procesora.

Dodjela je jedna od središnjih konstrukcija u imperativnim programskim jezicima, a implementirana je učinkovito i jednostavno na von Neumannovoj arhitekturi koja je osnova modernih računala.

set<целевая_переменная> <выражение>

Ovaj unos je ekvivalentan pozivanju funkcije. Isto tako, u starom stilu COBOL-a:

MNOŽENJE 2 SA 2 DAJE ČETIRI.

Algoritam rada

  • Izračunajte lijevu vrijednost prvog operanda. U ovoj fazi postaje poznata lokacija ciljanog objekta, primatelja nove vrijednosti.
  • Izračunajte desnu vrijednost drugog operanda. Ovaj korak može biti koliko god želite i uključivati ​​druge izjave (uključujući dodjele).
  • Dodijelite izračunatu desnu vrijednost lijevoj vrijednosti. Prvo, ako postoji sukob tipa, mora se izvršiti cast (ili se mora izdati poruka o pogrešci zbog njegove nemogućnosti). Drugo, stvarna dodjela vrijednosti u modernim programskim jezicima može se zamijeniti i uključivati ​​ne samo prijenos vrijednosti memorijskih ćelija (na primjer, na "svojstva" objekata u , preopterećenje operatora).
  • Vrati izračunatu desnu vrijednost kao rezultat operacije. Nije potrebno u svim jezicima (na primjer, nije potrebno u Pascalu).

Oznaka

Odabir znakova dodjele izvor je rasprave među programerima jezika. Postoji argument da korištenje simbola = za dodjelu zbunjuje programere i također postavlja pitanje odabira simbola za operator usporedbe koji je teško napraviti dobro.

Notorno loš primjer je izbor znaka jednakosti za označavanje dodjele, koji datira iz Fortran-a 1957. godine i još uvijek ga slijepo ponavljaju mnogi programeri jezika danas. Ova loša ideja ruši prastaru tradiciju korištenja znaka = za označavanje usporedbe jednakosti, predikata koji ima vrijednosti "točno" ili "netočno". Ali u Fortranu je ovaj simbol počeo značiti dodjelu, prisiljavanje na jednakost. U ovom slučaju, operandi su u nejednakom položaju: lijevi operand, varijabla, mora biti jednak desnom operandu, izrazu. Stoga x = y ne znači isto što i y = x.

Izvorni tekst(Engleski)

Notorni primjer loše ideje bio je odabir znaka jednakosti za označavanje dodjele. Potječe u Fortran 1957. godine i naslijepo su ga kopirale vojske dizajnera jezika. Zašto je to loša ideja? Zato što ruši stoljetnu tradiciju da "=" označava usporedbu za jednakost, predikat koji je ili istinit ili netočan. Ali Fortran je to učinio da znači dodjeljivanje, provođenje jednakosti. U ovom slučaju, operandi su u nejednakom položaju: lijevi operand (varijabla) treba biti jednak desnom operandu (izrazu). x = y ne znači isto što i y = x.

Izbor simbola za operator jednakosti u jeziku kada se koristi = kao dodjela je riješen:

  • Uvođenjem novog jezičnog simbola za operator jednakosti.
A = B = C

varijabli A dodjeljuje se Booleova vrijednost relacijskog izraza B = C. Ova oznaka dovodi do smanjene čitljivosti i rijetko se koristi.

Semantičke značajke

“Intuitivni” (za programere imperativnih jezika) način tumačenja dodjele nije uvijek jedini ispravan i moguć.

Nije uvijek moguće razumjeti iz sintakse koja se koristi u imperativnim jezicima kako se implementira semantika dodjele osim ako nije eksplicitno definirana u jeziku.

A = b = a a = 1000

Nakon ovoga, b će imati vrijednost - jednostavno zato što je njegova vrijednost zapravo vrijednost a . Broj referenci na isti podatkovni objekt naziva se njegova kardinalnost, a sam objekt se uništava (uništava ili skuplja u smeće) kada njegova kardinalnost dosegne nulu. Programski jezici niže razine (kao što je C) dopuštaju programeru da eksplicitno kontrolira hoće li se koristiti semantika pokazivača ili semantika kopiranja.

Zamjena operacije

Mnogi jezici pružaju mogućnost promjene značenja dodjele: bilo putem mehanizma svojstava ili preopterećenjem operatora dodjele. Zamjena može biti potrebna za provjeru valjanosti dodijeljene vrijednosti ili bilo koje druge dodatne operacije. Preopterećenje operatora dodjele često se koristi za pružanje "dubinskog kopiranja", odnosno kopiranja vrijednosti umjesto referenci, koje se kopiraju prema zadanim postavkama u mnogim jezicima.

Takvi mehanizmi omogućuju praktičnost rada, tako da za programera nema razlike između korištenja ugrađenog operatora i preopterećenog. Iz istog razloga mogući su i problemi, budući da se radnje preopterećenog operatora mogu potpuno razlikovati od radnji zadanog operatora, a poziv funkcije nije očit i lako se može zamijeniti s ugrađenom operacijom.

Napredni dizajni

Konstrukcije dodjele u različitim programskim jezicima

Budući da je operacija dodjele široko korištena, programeri programskih jezika pokušavaju razviti nove konstrukcije za pojednostavljeno snimanje tipičnih operacija (dodajte tzv. "sintaktički šećer"). Osim toga, u programskim jezicima niske razine, kriterij uključivanja za operaciju često je sposobnost kompajliranja u učinkovit izvršni kod. Jezik C je posebno poznat po ovom svojstvu.

Više ciljeva

Jedna alternativa jednostavnom operatoru je mogućnost dodjele vrijednosti izraza višestrukim objektima. Na primjer, u jeziku PL/1 operator

SUM, TOTAL = 0

istovremeno dodjeljuje vrijednost nula varijablama SUM i TOTAL. U jeziku Ada, dodjela je također operator, a ne izraz, tako da je oznaka za višestruku dodjelu:

SUM, TOTAL: Integer:= 0;

Slična dodjela u Pythonu ima sljedeću sintaksu:

Zbroj = ukupno = 0

Za razliku od PL/1, Ade i Pythona, gdje se višestruka dodjela smatra samo skraćenim oblikom notacije, u C, Lisp i drugim jezicima ova sintaksa ima strogu osnovu: operator dodjele jednostavno vraća vrijednost koja im je dodijeljena (vidi gore ). Dakle, posljednji primjer je zapravo:

Zbroj = (ukupno = 0)

Ovakav redak radit će u C-u (ako dodate točku-zarez na kraju), ali će izazvati pogrešku u Pythonu.

Paralelni zadatak

a ||= 10

Ova konstrukcija dodjeljuje vrijednost varijabli a samo ako vrijednost još nije dodijeljena ili je jednaka false.

Složeni operatori

Složeni operator dodjele pruža skraćeni način za određivanje uobičajeno korištenog oblika dodjele. Pomoću ove metode možete skratiti notaciju dodjele u kojoj se ciljna varijabla koristi kao prvi operand na desnoj strani izraza, na primjer:

A = a + b

Sintaksa C složenog operatora dodjeljivanja je kombinacija željenog binarnog operatora i = operatora. Na primjer, sljedeći unosi su ekvivalentni

zbroj += vrijednost; zbroj = zbroj + vrijednost;

Programski jezici koji podržavaju složene operatore (C++, , Python, Java itd.) obično imaju verzije za većinu binarnih operatora tih jezika (+=, -=, &= itd.).

Unarni operatori

Programski jezik C i većina njegovih izvedenica imaju dva posebna unarna (to jest, s jednim argumentom) aritmetička operatora koji su zapravo stenografske dodjele. Ovi operatori kombiniraju operacije inkrementiranja i dekrementiranja s dodjelom. Operatori ++ za inkrement i -- za dekrement mogu se koristiti kao prefiksni operatori (to jest, prije operanda) ili kao postfiksni operatori (to jest, nakon operanda), ukazujući na drugačiji redoslijed vrednovanja. Operator inkrementiranja prefiksa vraća već povećanu vrijednost operanda, a operator postfiksa vraća izvornu vrijednost.

Primjer korištenja operatora povećanja za formiranje potpunog operatora dodjele:

Iako ovo ne izgleda kao zadatak, to jest. Rezultat izvršavanja gornje naredbe je ekvivalentan rezultatu izvršavanja dodjele.

Operatori inkrementacije i dekrementacije u C-u često su skraćenica za formiranje izraza koji sadrže indekse

Operater je rečenica programskog jezika koja specificira potpuni opis neke akcije koju je potrebno izvesti. Glavni dio Turbo Pascal programa je niz naredbi. Razdjelnik iskaza je točka-zarez. Svi operatori jezika Turbo Pascal mogu se podijeliti u dvije skupine: jednostavne i strukturne.

Pozivaju se izjave koje ne sadrže nikakve druge izjave jednostavan. To uključuje dodjelu, bezuvjetni skok, poziv procedure i prazan operator.

Operator dodjele

Operator dodjele (:=) nalaže da se izvrši izraz naveden na njegovoj desnoj strani i dodjeli rezultat varijabli čiji se identifikator nalazi na lijevoj strani. Varijabla i izraz moraju biti kompatibilnog tipa.

Operator dodjele se izvršava na sljedeći način: prvo se procjenjuje izraz na desnoj strani dodjele, a zatim se njegova vrijednost dodjeljuje varijabli navedenoj na lijevoj strani operatora.

Na primjer, za operatera

Rezultat:=A div B;

Prvo se vrši cjelobrojno dijeljenje vrijednosti varijable A na vrijednost varijable U a zatim se rezultat dodjeljuje varijabli Proizlaziti.

Primjeri korištenja operatora dodjele:

A:= 8;

S:=A*U;

Ostatak:= A mod B;

Omjer:= A / B;

Operator bezuvjetnog skoka (idi na)

Operator bezuvjetnog skoka (ići) znači "ići na" i koristi se u slučajevima kada je nakon izvršenja određene naredbe potrebno izvršiti ne sljedeću po redu, već neku drugu naredbu označenu oznakom.

Podsjetimo se da se oznaka deklarira u odjeljku opisa oznake i može sadržavati i numeričke i slovne znakove.

Prilikom korištenja operatora ići mora se zapamtiti da opseg oznake je samo blok u kojem je opisan. Prijenos kontrole na drugi blok je zabranjen.

Pravila za korištenje operatora bezuvjetnog skoka. Korištenje bezuvjetnih prijenosa kontrole u programu smatra se teoretski suvišnim i podložno je ozbiljnim kritikama, jer pridonosi stvaranju opskurnih i teško modificiranih programa koji uzrokuju velike poteškoće u otklanjanju pogrešaka i održavanju. Stoga se preporuča minimalna uporaba operatora ići podliježu sljedećim pravilima:

Trebali biste nastojati koristiti operatore skokova (ako se čini da je nemoguće bez njih) za prijenos kontrole samo prema dolje (naprijed) kroz tekst programa; ako je potrebno prenijeti kontrolu natrag, treba koristiti operatore petlje;

Udaljenost između oznake i operatora skoka ne smije premašiti jednu stranicu teksta (ili visinu zaslona).

Primjer korištenja operatora bezuvjetnog skoka:

oznaka Mark; (u odjeljku opisa oznake opisali smo oznaku s nazivomMetka}

početi (glavni program)

(glavne programske izjave)

(glavni programski iskazi označeni oznakom)

Radni nalog

    Istražiti teorijske informacije na temu: “Pisanje programa u Pascalu korištenjem operatora dodjele i bezuvjetnog skoka.”

    Dobiti individualni zadatak od nastavnika i izraditi program u skladu sa zadatkom.

    Pokažite program rada učitelju.

    Odgovori na sigurna pitanja.

Kontrolna pitanja

    Osnovni elementi programiranja.

    Glavne karakteristike programa. Koncepti jezika, preklapanja, globalni i lokalni blokovi.

    Operatori programskog jezika Pascal. Operator dodjele. Format, primjeri.

    Operator bezuvjetnog skoka. Format, primjeri. Osnovna pravila korištenja

Laboratorijski rad br.7

Pisanje programa u Pascalu korištenjem uvjetnih naredbi i operatora odabiraSlučaj

Cilj rada : formiranje znanja i vještina u radu s jezičnim operatorima. Stjecanje vještina pisanja programa korištenjem operatora dodjele i bezuvjetnih skokova.

Kratke teorijske informacije

Uvjetne izjave

Uvjetni operatori dizajnirani su za odabir jednog od sljedećeg za izvršenje. moguće akcije(operatori) ovisno o nekom uvjetu (u ovom slučaju jedna od akcija može biti prazna, tj. odsutna). Vrijednost logičkog izraza koristi se kao uvjet odabira.

Turbo Pascal ima dvije uvjetne izjave: ako i slučaju.

Uvjetna izjava if

Operator uvjeta ako je jedan od najpopularnijih načina mijenjanja prirodnog redoslijeda izvođenja programskih iskaza.

Može imati jedan od sljedećih oblika:

    ako<условие>zatim<оператор1>

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

    ako<условие>zatim<оператор>;

Prevedeno s engleskog, ti se formati mogu definirati kao:

    AKO <условие> DA <оператор1> INAČE <оператор2>

    AKO <условие> DA <оператор>

Operator uvjeta ako izvodi se na sljedeći način. Prvo se procjenjuje izraz napisan u uvjetu. Kao rezultat njegovog izračuna dobiva se vrijednost tipa Boolean.

U prvom slučaju, ako je vrijednost izraza Pravi(istina), izvršeno <оператор1>, naznačeno iza riječi zatim(prevedeno kao "ono"). Ako je rezultat izračunavanja izraza u uvjetu lažno(lažno), zatim pogubljen <оператор2> .

U drugom slučaju, ako je rezultat izraza Pravi, izvedena <оператор>, Ako lažno- operater odmah iza operatora ako. Operatori ako Može biti ugniježđeni.

Primjer fragmenta programa s if uvjetnom naredbom:

ako je Ch="N" tada Lozinka:= Istina

else Password:= False;

if Password = True then

if X = 100 then Write("Lozinka i kod su točni")

Writeln("Greška u kodu");

U ovom primjeru, vrijednost varijable tipa znaka čita se s tipkovnice CH. Zatim se provjerava stanje Sh=" N" . Ako je ispunjeno, tada varijabla Lozinka Boolean tipu je dodijeljena vrijednost Pravi, ako uvjet nije ispunjen, lažno. Tada se vrijednost koda očitava s tipkovnice x. Zatim, naredba if provjerava uvjet Passol = True. Ako je bitno Pravi, zatim unesenu lozinku provjerava operater ako je X=100. Ako je stanje X=100 ima značenje Pravi, tada se prikazuje poruka "Lozinka i kod su ispravni", a kontrola u programu se prenosi na operatera nakon riječi kraj, ako je bitno lažno, složeni iskaz nakon što je riječ izvršena drugo, koji prikazuje poruku “Error in code” na zaslonu video monitora i poziva standardni postupak Zaustavi (1) za zaustavljanje programa.

Značajke operateraako. Kada koristite ugniježđene uvjetne izjave, može doći do sintaktičke dvosmislenosti, na primjer:

ako uvjet1 onda ako uvjet2 onda<оператор1>drugo<оператор2>

Rezultirajuća dvosmislenost o tome koji operator ako pripada dijelu drugo <оператор2>, dopušteno činjenicom da je funkcijska riječ drugo uvijek povezana (povezana) s najbližom funkcijskom riječi u tekstu ako, koji još nije povezan s funkcijskom riječi drugo.

Zbog toga biste trebali biti oprezni kada pišete ugniježđene uvjetne naredbe.

Primjer 1 . Napišite program koji izračunava kvocijent dvaju cijelih brojeva. Zbog činjenice da je nemoguće podijeliti s nulom, organizirajte kontrolu unosa podataka.

Za kontrolu ulaznih vrijednosti djelitelja koristimo operator uvjetnog skoka ako ... onda ... inače.

Tekst programa može izgledati ovako:

program Primer1;

A, B: cijeli broj;

Write("Unesite vrijednost dividende A: ");

Write("Unesite vrijednost djelitelja B: ");

ako je B=0 (Kontrola unosa brojaB}

then Writeln("Nula se ne može podijeliti") (uvjet ispunjen)

(Uvjet nije ispunjen)

Rezultat:= A / B;

Writeln("Kvocijent brojeva ",A," i ",B, " = ", Rezultat);

Najbolji članci na temu