Kako podesiti pametne telefone i računare. Informativni portal

Koju vrstu operatora dodjeljivanja ima? Pascal operatori

Operator dodjele

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

Operator dodjeljivanja može se koristiti za dodjelu vrijednosti

varijabla bilo kojeg tipa, osim datoteke. Jedini uslov je,

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

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

ugao:= ugao * p1;

AccessOK:= False;

SpherVol:= 4 * p1 * R * R;

3.3.2. Ulaz - izlaz podataka

Unos podataka se vrši pomoću operatora za unos bez formata:

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

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

Podaci se unose sa tastature, pri čemu su brojčani podaci odvojeni jedan od drugog razmacima, osim podataka tipa znakova i nizova.

Unos vrijednosti elemenata niza vrši se i navođenjem elemenata u listu i korištenjem operatora petlje, na primjer:

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

za i:=1 do n do

za j:=1 do m do

pročitaj(a);.

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

Primjer: unesite vrijednosti elemenata vektora X i matrice A, koje su respektivno 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 inicijalizacijom:

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 ekran pomoću operatora write i writeln, na primjer:

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

Na ekranu se prikazuju: vrijednosti varijable cjelobrojnog tipa X, za koju su dodijeljene 3 pozicije, varijabla Y pravi tip, zauzima 8 pozicija. Kada je atom ispod frakcijski dio varijabla Y ima 3 pozicije; samo za varijablu X cijeli dio. Prije numeričke vrijednosti varijable, prikazuju se informacije koje o njima objašnjavaju, koje se sastoje od imena varijabli.

Dakle, kao što slijedi iz primjera, format za izlaz varijabli cjelobrojnog tipa je :A, varijable realnog tipa :a:p, Gdje A- ukupan broj pozicija raspoređenih za broj, od čega R- pozicije se dodjeljuju za frakcijski dio. U ukupnom broju pozicija A uključene su pozicije za znak broja i decimalni zarez. Razdjelnik u formatu je znak ":". Ako format nije naveden u izlaznoj naredbi, onda će izlaz biti izveden u normaliziranom obliku predstavljanja realnog broja. Prikazani tekst objašnjenja je ograđen apostrofima.

Da biste skratili izraze u programskom jeziku C++, postoje posebne operacije koje se nazivaju operacije dodjeljivanja. Pogledajmo dio koda koristeći operator dodjeljivanja.

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

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

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

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

Dogovorimo se da operacije dodjele imenujemo crticom kako bi bilo jasno o kojoj vrsti operacije je riječ. Tabela 1 jasno pokazuje primjere upotrebe operatora dodjeljivanja u programskom jeziku C++.

Operatori dodjeljivanja u C++
Operacija Oznaka Primjer Ekvivalentan primjer Objašnjenje
operacija dodjele-sabiranja += var += 16 var = var + 16 Dodamo broj 16 vrijednosti varijable var, rezultat zbrajanja se pohranjuje u varijablu var
operacija dodjeljivanja-oduzimanja -= var -= 16 var = var - 16 Od varijable var oduzimamo broj 16, a rezultat oduzimanja se pohranjuje u varijablu var
operacija dodjele-množenja *= var *= 16 var = var * 16 Pomnožimo vrijednost varijable var sa 16 puta, rezultat množenja se dodjeljuje varijabli var
operacija zadatka-podjela /= var /= 16 var = var / 16 Podijelite vrijednost varijable var sa 16, rezultat dijeljenja se dodjeljuje varijabli var
operator dodjeljivanja - ostatak dijeljenja %= var %= 16 var = var % 16 Pronađite ostatak dijeljenja i pohranite ga u varijablu var

Hajde da razvijemo program koji će koristiti operacije dodeljivanja.

// assignment.cpp: Definira ulaznu točku za aplikaciju konzole. #include "stdafx.h" #include korištenje imenskog prostora std; int main(int argc, char* argv) (int value = 256; cout<< "value = "<< vrijednost << endl; vrijednost += 256; // skraćeni izraz koji koristi operator dodjeljivanja - 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 red 9varijabla je deklarirana vrijednost , i inicijalizira se vrijednošću 256. Redovi 11, 13, 15, 17 sadrže operacije dodjeljivanja - sabiranje, oduzimanje, množenje i dijeljenje, respektivno. Nakon svake operacije dodjele, naredba 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 koji taster. . .

Slika 1 – Operacije dodjeljivanja u C++

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

Zadatak- mehanizam u programiranju koji vam omogućava da dinamički mijenjate odnose objekata podataka (obično varijabli) sa njihovim vrijednostima. Strogo govoreći, promjena vrijednosti je nuspojava operacije dodjeljivanja, i to u mnogim slučajevima savremenim jezicima U programiranju, sama operacija također vraća neki rezultat (obično kopiju dodijeljene vrijednosti). On fizički nivo Rezultat operacije dodjeljivanja je pisanje i ponovno pisanje memorijskih ćelija ili procesorskih registara.

Dodjela je jedna od centralnih konstrukcija u imperativnim programskim jezicima, a implementirana je efikasno i jednostavno na von Neumannovoj arhitekturi koja je osnova modernih računara.

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

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

MNOŽITE 2 SA 2 DAJETE ČETIRI.

Algoritam rada [ | ]

Oznaka [ | ]

Izbor karaktera zadatka je izvor debate među programerima jezika. Postoji mišljenje da korišćenje simbola = za dodelu zbunjuje programere i takođe otežava dobra odluka pitanje o izboru simbola za operator poređenja.

Dobro poznato loš primjer je izbor znaka jednakosti za označavanje dodjele, vraćajući se na Fortran jezik 1957. godine i još uvijek ga slijepo ponavljaju mnogi programeri jezika. Ovo loša ideja ruši vjekovnu tradiciju korištenja znaka "=" za označavanje poređenja za jednakost, predikata koji uzima vrijednosti "true" ili "false". 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.

Originalni tekst (engleski)

Zloglasan primjer loše ideje bio je izbor znaka jednakosti za označavanje dodjele. Datira iz Fortrana 1957. godine i slijepo su ga kopirale vojske dizajnera jezika. Zašto je to loša ideja? Zato što ruši stoljetnu tradiciju da se „=“ označi poređenje za jednakost, predikat koji je ili istinit ili lažan. Ali Fortran je to značio zadavanje, provođenje jednakosti. U ovom slučaju, operandi su na nejednakim osnovama: levi operand (promenljiva) treba da bude jednak desnom operandu (izraz). 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 dodjeljivanja:=, dok se za poređenje jednostavno koristi =.

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

  • Uvođenjem novog simbola jezika za operator jednakosti.
A = B = C

promenljivoj A se dodeljuje Boolean vrednost izraza relacije B = C. Ova notacija dovodi do smanjene čitljivosti i retko se koristi.

Semantičke karakteristike[ | ]

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

Iz sintakse koja se koristi u imperativnim jezicima nije uvijek moguće razumjeti 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 objekt podataka naziva se njegova kardinalnost, a sam objekt se ubija (uništava ili sakuplja smeće) kada njegova kardinalnost dostigne nulu. Programski jezici više nizak nivo(npr. C) omogućavaju programeru da eksplicitno kontroliše da li se koristi semantika pokazivača ili semantika kopiranja.

Zamjena operacije[ | ]

Mnogi jezici pružaju mogućnost promjene značenja dodjeljivanja: bilo kroz mehanizam svojstava ili preko preopterećenja operatora dodjele. Zamjena može biti potrebna da se izvrši provjera valjanosti dodijeljene vrijednosti ili bilo koje druge dodatne operacije. Preopterećenje operatora dodjeljivanja često se koristi za pružanje "dubokog kopiranja", odnosno kopiranja vrijednosti umjesto referenci, koje se kopiraju po defaultu na mnogim jezicima.

Takvi mehanizmi omogućavaju pružanje pogodnosti prilikom rada, tako da za programera nema razlike između korištenja ugrađenog operatora i preopterećenog. Iz istog razloga su mogući problemi, jer akcije preopterećenog operatora mogu biti potpuno različite od akcija zadanog operatora, a poziv funkcije nije očigledan i lako se može zamijeniti za ugrađenu operaciju.

Napredni dizajni[ | ]

Konstrukcije zadatka u raznim jezicima programiranje

Pošto je operator dodjeljivanja široko korišten, programeri programskih jezika pokušavaju razviti nove konstrukcije za pojednostavljena notacija tipične operacije (dodavanje takozvanog „sintaktičkog šećera“ jeziku). Pored toga, u programskim jezicima niskog nivoa, kriterijum uključivanja za operaciju je često sposobnost prevođenja u efikasan izvršni kod. C jezik je posebno poznat po ovom svojstvu.

Više meta[ | ]

Jedna od alternativa jednostavan operater je sposobnost dodjeljivanja vrijednosti izraza višestrukim objektima. Na primjer, u jeziku PL/1 operator

ZBIR, UKUPNO = 0

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

SUM, TOTAL: Integer:= 0;

Sličan zadatak u Pythonu ima sljedeću sintaksu:

Zbir = ukupno = 0

Za razliku od PL/1, Ada i Python, gdje se višestruko dodjeljivanje smatra samo skraćenim oblikom notacije, u jezicima C, Lisp i dr. ovu sintaksu ima strogu osnovu: jednostavno operator dodjeljivanja vraća vrijednost koja mu je dodijeljena (vidi gore). Dakle, posljednji primjer je zapravo:

Zbir = (ukupno = 0)

Ovakav red će raditi u C (ako dodate tačku i zarez na kraju), ali će uzrokovati grešku u Pythonu.

Paralelni zadatak[ | ]

Posljednja opcija radi samo s tipovima koji podržavaju bitne operacije(na primjer, za double, prevodilac jezika vam neće dozvoliti da razmjenjujete vrijednosti varijabli na ovaj način).

Implementacija [ | ]

Rad modernih računara sastoji se od čitanja podataka iz memorije ili uređaja u registre, izvođenja operacija nad tim podacima i upisivanja u memoriju ili uređaj. Glavna operacija ovdje je prijenos podataka (iz registara u memoriju, iz memorije u registar, iz registra u registar). Shodno tome, izražava se direktno naredbama modernih procesora. Dakle, za arhitekturu x86 (sve naredbe ispod se odnose i na ovu arhitekturu) ovo je operacija mov i njene varijacije za slanje podataka razne veličine. Operacija dodjeljivanja (slanje podataka iz jedne memorijske ćelije u drugu) je gotovo direktno implementirana ovom naredbom. Uopšteno govoreći, dvije instrukcije su potrebne da bi se izvršio prijenos podataka u memoriji: memorija u registar i registar u memoriju, ali korištenjem optimizacije broj instrukcija se u većini slučajeva može smanjiti.

Zadatak

Zadatak- mehanizam u programiranju koji vam omogućava da dinamički mijenjate odnose objekata podataka (obično varijabli) sa njihovim vrijednostima. Strogo govoreći, promjena vrijednosti je nuspojava operacije dodjeljivanja, a u mnogim modernim programskim jezicima sama operacija također vraća neki rezultat (obično kopiju dodijeljene vrijednosti). Na fizičkom nivou, rezultat operacije dodjeljivanja je pisanje i ponovno pisanje memorijskih ćelija ili procesorskih registara.

Dodjela je jedna od centralnih konstrukcija u imperativnim programskim jezicima, a implementirana je efikasno i jednostavno na von Neumannovoj arhitekturi koja je osnova modernih računara.

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

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

MNOŽITE 2 SA 2 DAJETE ČETIRI.

Algoritam rada

  • Izračunajte lijevu vrijednost prvog operanda. U ovoj fazi postaje poznata lokacija ciljnog objekta, primaoca nove vrijednosti.
  • Izračunajte desnu vrijednost drugog operanda. Ova faza može biti velika koliko želite i uključivati ​​druge iskaze (uključujući zadatke).
  • Dodijelite izračunatu desnu vrijednost lijevoj vrijednosti. Prvo, ako postoji sukob tipa, mora se izvršiti cast (ili se mora izdati poruka o grešci zbog njegove nemogućnosti). Drugo, stvarna dodjela vrijednosti u modernim programskim jezicima može se zamijeniti i uključiti 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 na svim jezicima (na primjer, nije potrebno u Pascalu).

Oznaka

Izbor karaktera zadatka je izvor debate među programerima jezika. Postoji argument da korišćenje simbola = za dodelu zbunjuje programere i takođe postavlja pitanje izbora simbola za operator poređenja koji je teško dobro izvesti.

Notorno loš primjer je izbor znaka jednakosti za označavanje dodjele, koji datira iz Fortrana 1957. godine i koji se i danas slijepo ponavlja od strane brojnih programera jezika. Ova loša ideja ruši vjekovnu tradiciju korištenja znaka = za označavanje poređenja jednakosti, predikata koji poprima vrijednosti "tačno" ili "netačno". Ali u Fortranu je ovaj simbol počeo značiti dodjelu, prisiljavanje na jednakost. U ovom slučaju, operandi su u nejednakoj poziciji: lijevi operand, varijabla, mora biti jednak desnom operandu, izrazu. Stoga x = y ne znači isto što i y = x.

Originalni tekst(engleski)

Zloglasan primjer loše ideje bio je izbor znaka jednakosti za označavanje dodjele. Datira iz Fortrana 1957. godine i slijepo su ga kopirale vojske dizajnera jezika. Zašto je to loša ideja? Zato što ruši stoljetnu tradiciju da se „=“ označi poređenje za jednakost, predikat koji je ili istinit ili lažan. Ali Fortran je to značio zadavanje, provođenje jednakosti. U ovom slučaju, operandi su na nejednakim osnovama: levi operand (promenljiva) treba da bude jednak desnom operandu (izraz). x = y ne znači isto što i y = x.

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

  • Uvođenjem novog simbola jezika za operator jednakosti.
A = B = C

promenljivoj A se dodeljuje Boolean vrednost izraza relacije B = C. Ova notacija dovodi do smanjene čitljivosti i retko se koristi.

Semantičke karakteristike

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

Iz sintakse koja se koristi u imperativnim jezicima nije uvijek moguće razumjeti 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 objekt podataka naziva se njegova kardinalnost, a sam objekt se ubija (uništava ili sakuplja smeće) kada njegova kardinalnost dostigne nulu. Programski jezici nižeg nivoa (kao što je C) omogućavaju programeru da eksplicitno kontroliše da li se koristi semantika pokazivača ili semantika kopiranja.

Zamjena operacije

Mnogi jezici pružaju mogućnost promjene značenja dodjeljivanja: bilo kroz mehanizam svojstava ili preko preopterećenja operatora dodjele. Zamjena može biti potrebna da se izvrši provjera valjanosti dodijeljene vrijednosti ili bilo koje druge dodatne operacije. Preopterećenje operatora dodjeljivanja često se koristi za pružanje "dubokog kopiranja", odnosno kopiranja vrijednosti umjesto referenci, koje se kopiraju po defaultu na mnogim jezicima.

Takvi mehanizmi omogućavaju pružanje pogodnosti prilikom rada, tako da za programera nema razlike između korištenja ugrađenog operatora i preopterećenog. Iz istog razloga su mogući problemi, jer akcije preopterećenog operatora mogu biti potpuno različite od akcija zadanog operatora, a poziv funkcije nije očigledan i lako se može zamijeniti za ugrađenu operaciju.

Napredni dizajni

Konstrukcije zadatka u raznim programskim jezicima

Budući da je operacija dodjeljivanja široko korištena, programeri programskih jezika pokušavaju razviti nove konstrukcije za pojednostavljeno snimanje tipičnih operacija (dodati tzv. „sintaktički šećer“). Pored toga, u programskim jezicima niskog nivoa, kriterijum uključivanja za operaciju je često sposobnost prevođenja u efikasan izvršni kod. C jezik je posebno poznat po ovom svojstvu.

Više meta

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

ZBIR, UKUPNO = 0

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

SUM, TOTAL: Integer:= 0;

Sličan zadatak u Pythonu ima sljedeću sintaksu:

Zbir = ukupno = 0

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

Zbir = (ukupno = 0)

Ovakav red će raditi u C (ako dodate tačku i zarez na kraju), ali će uzrokovati greš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 operateri

Operator složenog dodjeljivanja pruža skraćeni način za specificiranje najčešće korištenog oblika dodjele. Koristeći ovu metodu, možete skratiti notaciju dodjele u kojoj se ciljna varijabla koristi kao prvi operand na desnoj strani izraza, na primjer:

A = a + b

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

suma += vrijednost; suma = suma + 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 derivata imaju dva specijalna unarna (to jest, imaju jedan argument) aritmetička operatora koji su zapravo stenografski zadaci. Ovi operatori kombinuju operacije povećanja i smanjenja sa dodeljivanjem. Operatori ++ za inkrement i -- za dekrement mogu se koristiti kao prefiksni operatori (to jest, prije operanada) ili kao postfiksni operatori (to jest, nakon operanada), ukazujući na drugačiji redoslijed evaluacije. Operator povećanja prefiksa vraća već povećanu vrijednost operanda, a postfiks operator vraća originalnu vrijednost.

Primjer korištenja operatora inkrementa za formiranje kompletnog operatora dodjele:

Iako ovo ne izgleda kao zadatak, jeste jedan. Rezultat izvršavanja gornje naredbe je ekvivalentan rezultatu izvršavanja dodjeljivanja.

Operatori povećanja 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 radnje koju treba izvršiti. Glavni dio Turbo Pascal programa je niz naredbi. Razdjelnik iskaza je tačka i zarez. Svi operatori Turbo Pascal jezika mogu se podijeliti u dvije grupe: jednostavne i strukturne.

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

Operator dodjele

Operator dodjele (:=) naređuje da se izvrši izraz naveden na njegovoj desnoj strani i dodijeli rezultat varijabli čiji se identifikator nalazi na lijevoj strani. Varijabla i izraz moraju biti kompatibilnog tipa.

Operator dodjeljivanja se izvršava na sljedeći način: prvo se evaluira 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 celobrojna podela vrednosti varijable A na vrijednost varijable IN a zatim se rezultat dodjeljuje varijabli Rezultat.

Primjeri korištenja operatora dodjele:

A:= 8;

S:=A*IN;

Ostatok:= A mod B;

Omjer:= A / B;

Operator bezuslovnog skoka (idi na)

Operator bezuslovnog skoka (idi) znači “idi na” i koristi se u slučajevima kada je nakon izvršenja određene naredbe potrebno izvršiti ne sljedeći po redu, već neki drugi izraz označen oznakom.

Podsjetimo da je oznaka deklarirana u odjeljku opisa oznake i može sadržavati i numeričke i abecedne znakove.

Kada koristite operatera idi to se mora zapamtiti obim etikete je samo blok u kojem je opisan. Prenos kontrole na drugi blok je zabranjen.

Pravila za korištenje operatora bezuvjetnog skoka. Upotreba bezuslovnog prijenosa kontrole u programu smatra se teorijski suvišnom i podložna je ozbiljnoj kritici, jer doprinosi stvaranju nejasnih i teško modificiranih programa koji izazivaju velike poteškoće u otklanjanju grešaka i održavanju. Stoga se preporučuje minimalna upotreba operatera idi podložno sljedećim pravilima:

Trebate nastojati da koristite operatore skoka (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 naljepnice i operatora skoka ne smije biti veća od jedne stranice teksta (ili visine ekrana).

Primjer korištenja operatora bezuvjetnog skoka:

label Mark; (u odjeljku opisa etikete opisali smo naljepnicu s imenomMetka}

početi (glavni program)

(glavni programski iskazi)

(glavni programski izrazi označeni oznakom)

Radni nalog

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

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

    Pokažite program rada nastavniku.

    Odgovorite na sigurnosna pitanja.

Kontrolna pitanja

    Osnovni elementi programiranja.

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

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

    Operator bezuslovnog skoka. Format, primjeri. Osnovna pravila upotrebe

Laboratorijski rad br. 7

Pisanje programa u Pascalu koristeći uslovne izraze i operator odabiraSlučaj

Cilj rada : formiranje znanja i vještina u radu sa jezičkim operaterima. Sticanje vještina pisanja programa korištenjem operatora dodjele i bezuslovnih skokova.

Kratke teorijske informacije

Uslovne izjave

Uvjetni operatori su dizajnirani da izaberu jedno od sljedećeg za izvršenje. moguće radnje(operatori) u zavisnosti od nekog uslova (u ovom slučaju jedna od akcija može biti prazna, tj. odsutna). Vrijednost logičkog izraza se koristi kao uvjet odabira.

U Turbo Pascalu postoje dvije uslovne izjave: ako i slučaj.

Uslovna izjava if

Operator uslova ako je jedno od najpopularnijih sredstava za promjenu prirodnog redoslijeda izvršavanja programskih izraza.

Može imati jedan od sljedećih oblika:

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

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

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

Prevedeno sa engleskog, ovi formati se mogu definisati kao:

    IF <условие> TO <оператор1> U suprotnom <оператор2>

    IF <условие> TO <оператор>

Operator uslova ako se izvodi na sljedeći način. Prvo se vrednuje izraz zapisan u uslovu. Kao rezultat njegovog izračunavanja, dobija se vrednost Boolean tipa.

U prvom slučaju, ako je vrijednost izraza Istinito(tačno), izvršeno <оператор1>, naznačeno posle reči onda(prevedeno kao “ono”). Ako je rezultat izračunavanja izraza u uvjetu False(netačno), a zatim se izvršava <оператор2> .

U drugom slučaju, ako je rezultat izraza Istinito, izvedeno <оператор>, Ako False- operater odmah nakon operatera ako. Operateri ako može biti ugniježđen.

Primjer fragmenta programa sa uslovnom naredbom if:

ako je Ch="N" onda Lozinka:= Tačno

else Password:= False;

ako je Lozinka = Tačno onda

ako je X = 100 onda Write("Lozinka i kod su ispravni")

Writeln("Greška u kodu");

U ovom primjeru, vrijednost varijable tipa karaktera se čita sa tastature Ch. Zatim se provjerava stanje WITHh=" N" . Ako je ispunjen, onda varijabla Lozinka booleanskom tipu je dodijeljena vrijednost Istinito, ako uslov nije ispunjen, False. Zatim se vrijednost koda čita sa tastature X. Zatim, if naredba provjerava uvjet Passol = Tačno. Ako je bitno Istinito, zatim operater provjerava unesenu lozinku ako je X=100. Ako je stanje X=100 ima značenje Istinito, zatim se prikazuje poruka “Lozinka i kod su ispravni” i kontrola u programu se prenosi na operatera nakon riječi kraj, ako je bitno False, složeni izraz nakon riječi se izvršava ostalo, koji prikazuje poruku “Greška u kodu” na ekranu video monitora i poziva standardnu ​​proceduru zaustaviti(1) da zaustavite program.

Karakteristike operateraako. Kada koristite ugniježđene uslovne izraze, može doći do sintaktičke dvosmislenosti, na primjer:

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

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

Zbog toga, trebali biste biti oprezni kada pišete ugniježđene uslovne izraze.

Primjer 1 . Napišite program koji izračunava kvocijent dva cijela broja. Zbog činjenice da je nemoguće podijeliti sa nulom, organizirajte kontrolu unosa podataka.

Za kontrolu ulaznih vrijednosti djelitelja koristimo operator uslovnog skoka ako ... onda ... drugo.

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}

zatim Writeln("Nula se ne može podijeliti") (uslov ispunjen)

(Uslov nije ispunjen)

Rezultat:= A / B;

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

Najbolji članci na ovu temu