Ohjelmakoodin kirjoittaminen menettelytapojen avulla. Ehdollinen operaattori? Se on lauseen suorittamisen tulos

Ensimmäinen operandi - "lauseke1" - voi olla mikä tahansa lauseke, jonka tulos on bool-tyypin arvo. Jos tulos on totta , sitten suoritetaan toisen operandin määrittämä operaattori, eli "lauseke2".

Jos ensimmäinen operandi on yhtä suuri kuin väärä , sitten suoritetaan kolmas operandi - "lauseke3". Toisen ja kolmannen operandin eli "lauseke2" ja "lauseke3" on palautettava samantyyppiset arvot, eivätkä ne saa olla tyypiltään void . Ehdollisen lauseen suorittamisen tulos on "lauseke2" tai "lauseke3" tulos riippuen "lauseke1" tuloksesta.

Operaattorin käyttörajoitukset

Arvoon "lauseke1" perustuvan operaattorin on palautettava toinen kahdesta arvosta - joko "lauseke2" tai "lauseke3". Näille ilmauksille on olemassa useita rajoituksia:

  1. Et voi sekoittaa käyttäjän määrittämää tyyppiä yksinkertaiseen tyyppiin tai luetteloon. On hyväksyttävää käyttää NULL-arvoa osoittimena.
  2. Jos arvotyypit ovat yksinkertaisia, niin operaattorin tyyppi on maksimityyppi (katso Type Coercion).
  3. Jos yksi arvoista on numeraatiotyyppi ja toinen on numeerinen tyyppi, luettelo korvataan arvolla int ja toinen sääntö pätee.
  4. Jos molemmat arvot ovat enum-arvoja, niiden tyyppien on oltava samat ja operaattorin tyyppi on luettelointi.

Rajoitukset mukautetuille tyypeille (luokat tai rakenteet):

  1. tyyppien on oltava samat tai toisen on perittävä toiselta.
  2. jos tyypit eivät ole samat (perinnöllinen), niin lapsi heitetään implisiittisesti vanhemmalle, eli operaattorin tyyppi on vanhemman tyyppi.
  3. Et voi sekoittaa objektia ja osoitinta – molemmat lausekkeet ovat objekteja tai osoittimia. On hyväksyttävää käyttää NULL-arvoa osoittimena.

Huomautus

Ole varovainen, kun käytät ehdollista operaattoria argumenttina ylikuormitetulle funktiolle, koska ehdollisen operaattorin tuloksen tyyppi määräytyy ohjelmaa käännettäessä. Ja tämä tyyppi määritellään tyyppien "lauseke2" ja "lauseke3" suuremmiksi tyypiksi.

Esimerkki:

void func(double d) ( Tulosta ("double argumentti: " ,d); )
void func(string s) ( Tulosta ("merkkijonoargumentti: " ,s); )

bool Lauseke1=tosi;
double Expression2=M_PI;
merkkijono Lauseke3= "3.1415926" ;

void OnStart()
{
func(lauseke2);
func(lauseke3);

func(Lause1?Lauseke2:Lauseke3);
func(!Lauseke1?Lauseke2:Lauseke3);// saada kääntäjä varoituksen nimenomaisesta suoratoista merkkijonotyyppiin
}

// Tulos:
// kaksoisargumentti: 3.141592653589793

// merkkijonoargumentti: 3.141592653589793
// merkkijonoargumentti: 3.1415926

Edellisessä kappaleessa tutustuimme ohjelman rakenteeseen Pascalissa, opimme kuvaamaan dataa ja katsoimme tehtäväoperaattoria. Tämä riittää tietojen muunnosohjelman kirjoittamiseen. Mutta näiden muutosten tulos ei näy meille.

Tulostaa tietoja kohteesta RAM-muisti Näytön näytössä käytetään kirjoituslähtöoperaattoria:

Täällä suluissa on tulosluettelo - luettelo lausekkeista, joiden arvot tulostetaan. Nämä voivat olla numeerisia, symbolisia ja loogisia lausekkeita, mukaan lukien muuttujat ja vakiot.

Satunnaista merkkijoukkoa heittomerkkien sisällä pidetään merkkijonovakiona. Merkkijonovakio voi sisältää mitä tahansa näppäimistöllä kirjoitettuja merkkejä.

Esimerkki. Write ("s=" , s) -käsky suoritetaan seuraavasti:

  1. Näytössä näkyvät heittomerkkien sisällä olevat symbolit: s=
  2. RAM-soluun nimeltä s tallennetun muuttujan arvo näkyy näytöllä.

Jos muuttujan s arvo on 15 ja sillä on kokonaislukutyyppi, näyttöön tulee näyttö: s=15.

Jos muuttujan s arvo on 15, mutta se on reaalityyppistä, niin näytölle ilmestyy: s=l.5E+01.

Kun output-käsky suoritetaan, tulosteluettelon kaikki elementit tulostetaan välittömästi toistensa jälkeen. Täten kirjoitusoperaattorin (1, 20, 300) seurauksena näytölle tulee numerosarja 120300, jonka me näemme numerona 120300, ei kolmena erillisenä numeerisena vakiona. Voit tehdä tulostiedosta havainnointikykyisemmän eri tavoilla:

Tulostusmuoto on kaksoispisteen jälkeen merkitty kokonaisluku, joka määrittää kuinka monta kohtaa näytössä näytettävän arvon tulee olla. Jos numerossa on vähemmän numeroita kuin sille on näytöllä varattu, niin vapaita paikkoja täydennetään välilyönneillä numeron vasemmalla puolella. Jos tulostemuodossa kaksoispisteen jälkeen määritetty luku on pienempi kuin on tarpeen, se kasvaa automaattisesti vaadittuun vähimmäismäärään.

Kun haluat tulostaa reaaliluvun kiinteän pisteen muodossa, jokaiselle lausekkeelle määritetään tulosluettelossa kaksi parametria:

  1. numerolle jaettujen paikkojen kokonaismäärä;
  2. paikkojen lukumäärä luvun murto-osassa.

Kun uusi kirjoituskäsky suoritetaan, tulos jatkuu samalla rivillä. Voit siirtyä uudelle riville kirjoitusoperaattorilla. Kirjoitetun ja kirjoitetun lauseen välillä ei ole muita eroja.

4.2.2. Ensimmäinen ohjelma Pascal-kielellä

Yllä käsiteltyjen operaattoreiden avulla luomme ohjelman, joka laskee ympyrän kehän ja alueen, jonka säde on 5,4 cm.

Tämän tehtävän lähtötietona on säde: r - 5,4 cm. Ohjelman tuloksena tulee olla arvot C - ympyrän ympärysmitta ja S - ympyrän pinta-ala. C, S ja r ovat reaalityypin suureita.

Lähtötiedot ja tulokset liittyvät toisiinsa matematiikan kurssista tunnetuilla suhteilla: C = 2πr, S = πr +. Ohjelma, joka toteuttaa laskelmia näillä kaavoilla, näyttää tältä:

Tämä ohjelma on oikea ja ratkaisee ongelman. Kun suoritat sen, saat seuraavan tuloksen:

Kuitenkin laatimallamme ohjelmalla on merkittävä haittapuoli: se löytää ympyrän kehän ja alueen yhdelle sädearvolle (5,4 cm).

Jotta voit laskea ympyrän kehän ja alueen eri sädearvolle, sinun on tehtävä muutoksia suoraan ohjelman tekstiin, eli vaihdettava määritysoperaattori. Muutosten tekeminen olemassa olevaan ohjelmaan ei ole aina vähintäänkin kätevää (esimerkiksi kun ohjelma on suuri ja osoitusoperaattoreita on paljon). Alla tutustut operaattoriin, jonka avulla voit syöttää alkutietoja ohjelman ollessa käynnissä muuttamatta ohjelman tekstiä.

4.2.3. Näppäimistön syöttö

Jos haluat syöttää muuttujan arvot RAM-muistiin, käytä lukusyöttöoperaattoria:

Kun lukulause suoritetaan, tietokone siirtyy tietojen odotustilaan: käyttäjän on syötettävä tiedot näppäimistöltä ja painettava Enter-näppäintä. Numeerisille muuttujille voidaan syöttää useita arvoja välilyönneillä tai pilkuilla erotettuina. Merkkimuuttujia syötettäessä välilyöntejä ja pilkkuja käsitellään merkeinä, joten niitä ei voi syöttää.

Ensimmäinen käyttäjän syöttämä muuttujan arvo sijoitetaan siihen muistipaikkaan, jonka nimi sijaitsee ensin syöttöluettelossa jne. Siksi syötearvojen tyyppien (syöttövirta) tulee vastata muuttujassa määritettyjä muuttujatyyppejä kuvausosio.

Esimerkki. Antaa

var i, j: kokonaisluku; x: todellinen; a:char;

Määritetään muuttujat i, j, x ja arvot 1, 0, 2,5 ja "A". Käytämme tätä varten read (i, j, x, a) -operaattoria ja järjestämme syöttövirran jollakin seuraavista tavoista:

Tässä emme vain käyttäneet erilaisia ​​erottimia (välilyönti, pilkku), vaan myös esitimme syöttövirran yhtenä, kaksina ja neljänä rivinä.

Voit myös käyttää readln-operaattoria syöttääksesi tietoja näppäimistöltä, joka eroaa read-operaattorista vain siinä, että sen suorittamisen jälkeen kohdistin siirtyy uudelle riville.

Parannetaan ohjelmaa n_1 järjestämällä siihen tietojen syöttäminen read-operaattorilla. Ja jotta käyttäjä tietää, mihin ohjelma on tarkoitettu ja ymmärtää tarkalleen, mitä toimintoa tietokone odottaa häneltä, näytämme vastaavat tekstiviestit writeln-operaattorilla:

Parannetun ohjelman tulos:

Nyt ohjelmamme voi laskea ympyrän kehän ja alueen millä tahansa r:n arvolla. Toisin sanoen se ei ratkaise yhtä ongelmaa, vaan kokonaisen luokan ongelmia. Lisäksi ohjelma järjestää selkeästi ja kätevästi lähtötietojen syöttämisen ja saatujen tulosten tulostuksen. Tämä varmistaa ystävällisen käyttöliittymän.

Tärkein

Muuttuvien arvojen syöttämiseen RAM-muistiin käytetään luku- ja readln-syöteoperaattoreita.

Datan tulostamiseksi RAM-muistista monitorin näytölle käytetään kirjoitus- ja kirjoituslähtöoperaattoreita.

Lähtötietojen syöttäminen ja tulosten tuottaminen on järjestettävä selkeästi ja kätevästi. tämä varmistaa ystävällisen käyttöliittymän.

Kysymyksiä ja tehtäviä

  1. Kirjoita lause, jonka avulla voit syöttää summamuuttujan arvon ohjelman ollessa käynnissä.
  2. Kokonaislukumuuttujille i, y, k on annettava arvot 10, 20 ja 30. Kirjoita muistiin syöttövirtaa vastaava syöttölause:
      a) 20 10 30
      b) 30 20 10
      c) 10 30 20
  3. Kuvaile muuttujat, joita tarvitaan kolmion pinta-alan laskemiseen sen kolmen sivun perusteella, ja kirjoita lause, joka antaa tarvittavat syöttötiedot.
  4. Mikä on lauseen suorittamisen tulos?
      a) kirjoittaa (a)
      b) kirjoita (1 a ")
      c) kirjoittaa (1 a=1, a)
  5. Minkä tyyppinen muuttuja f on, jos kirjoitus (f) -käskyn suorittamisen jälkeen näytölle ilmestyi seuraava numero?
      a) 125
      b) 1,25E+2
  6. Kuinka voin näyttää oikea numero kiinteän pisteen muodossa?
  7. Kirjoita muistiin operaattorit kahden luvun syöttämiseen ja niiden tulostamiseen käänteisessä järjestyksessä.
  8. Tässä pätkä ohjelmasta:

    lue(a); lue(b); c:=a+b; kirjoittaa(a, b); kirjoittaa (c)

    Yksinkertaista sitä vähentämällä syöttö- ja lähtölauseiden määrää.

  9. Tässä pätkä ohjelmasta:

    a:=10; b:=a+l: a:=b-a; kirjoittaa (a, b)

    Mitä numeroita näytetään tietokoneen näytöllä?

  10. Kirjoita ohjelma, joka laskee suorakulmion pinta-alan ja kehän sen kahden sivun perusteella.

Operaattori on kielielementti, joka määrittää suoritettavan toiminnon täydellisen kuvauksen. Jokainen operaattori on ohjelmointikielen täydellinen lause ja määrittelee jonkin täysin valmiin tietojenkäsittelyvaiheen. Operaattorit voivat sisältää funktiosanoja, dataa, lausekkeita ja muita operaattoreita. SISÄÄN Englannin kieli Tämä käsite on merkitty sanalla "lausunto", joka tarkoittaa myös "ehdotusta".

Jokaisella operaattorilla missä tahansa ohjelmointikielessä on oma syntaksi Ja semantiikka. Alla syntaksi operaattorilla tarkoitetaan sääntöjärjestelmää (kielioppi), joka määrittää sen tallennuksen käyttämällä tietyn kielen aakkosten elementtejä, joka sisältää erilaisten symbolien ohella esimerkiksi funktiosanoja. Alla semantiikka operaattori ymmärtää sen merkityksen, ts. ne toiminnot, jotka vastaavat tietyn operaattorin tietueita. Esimerkiksi äänittää i:= i + 1 on esimerkki syntaktisesti oikeasta merkinnästä toimeksiantooperaattori Pascal-kielellä, jonka semantiikka tässä tapauksessa on seuraava: poimi muuttujaa i vastaavan muistisolun arvo, lisää se yhdellä ja kirjoita tulos samaan muistisoluun.

Useimmissa proseduuriohjelmointikielissä operaattorijoukko on lähes sama ja koostuu osoitusoperaattorista, valintaoperaattoreista, silmukkaoperaattoreista, proseduurikutsuoperaattoreista ja hyppyoperaattoreista. Joskus erotetaan myös tyhjät (ei toimintaa) ja yhdistelmäoperaattorit. Monet operaattorit ovat tapa esittää tiettyjä algoritmisia rakenteita (katso " Algoritminen suunnittelu” ) ohjelmointikielellä. Tarkastellaan operaattoriryhmiä yksityiskohtaisemmin Pascal-kielen syntaksin avulla.

Tehtäväoperaattori

Tehtävä on tietokoneen toimenpide, jonka seurauksena muuttuja saa lasketun lausekkeen arvon (se sijoitetaan muuttujaa vastaavaan muistisoluun). Sellaisen toiminnon kuvaamiseksi ohjelmointikielissä on olemassa toimeksiantooperaattori.

Yleensä tehtäväoperaattori kirjoitetaan näin:

<переменная> <знак присваивания> <выражение>

Esimerkiksi Pascalissa symboliyhdistelmää käytetään määritysmerkkinä: =. Monilla muilla kielillä se on tasa-arvomerkki.

Osoitusoperaattorin suorittamisen tuloksena on muutos tietojen tilassa: kaikki muut muuttujat paitsi muuttuja, joka sijaitsee tehtäväoperaattorin vasemmalla puolella, eivät muuta niiden merkitystä, vaan määritettyä muuttuja saa arvon ilmaisuja, joka näkyy määritysoperaattorin oikealla puolella. Useimmissa tapauksissa vaaditaan, että tyyppi ilmaisuja vastasi tyyppiä muuttuja. Jos näin ei ole, niin operaattoria pidetään joko syntaktisesti virheellisenä tai lausekkeen tyyppi muunnetaan muuttujan tyypiksi (katso " Tietotyypit” ).

Operaattorien valinta

Näitä operaattoreita kutsutaan eri tavalla ehdolliset lausunnot. Ehdollisia lauseita käytetään ohjelmoimaan algoritmeja, jotka sisältävät algoritmisen haarautumisrakenteen.

Ohjelmointikielissä on useita ehdollisia lausekkeita. Täysi ehdollinen lause vastaa täyden haarautumisen algoritmista rakennetta:

Ohjelmointikielessä vastaava ehdollinen operaattori on muotoa:

jos B sitten S1 muu S2

Jos ilmaisu B, joka lasketaan ehdollisen lauseen suorituksen alussa, on arvoltaan "true", silloin lause suoritetaan S1, muuten - operaattori S2. Operaattorit S1 Ja S2 voi olla yhdistelmä.

Epätäydellisen haarautumisen algoritmirakenne toteutetaan epätäydellisen ehdollisen operaattorin avulla, jonka muoto on:

jos B sitten S

Tässä B on looginen ilmaus, ja S- mielivaltainen operaattori. Operaattori S suoritetaan, jos lauseke B on tosi.

Jos ehdollinen operaattori toteuttaa vain kaksi valintahaaraa ("kyllä" ja "ei"), niin käytetään varianttioperaattori (tapaus-operaattori) voit ohjelmoida monihaaraisen rakenteen. Varianttioperaattori näyttää tältä:

tapaus E /

Esitetty tämä operaattori kuten tämä: ilmaisun merkitys E haettu operaattoritietueessa lueteltujen arvojen joukosta V1, V2, …, Vn, ja jos tällainen arvo löytyy, suoritetaan vastaava operaattori S1, S2, …, Sn.

Eri ohjelmointikielissä lueteltujen operaattoreiden syntaksi ja jopa semantiikka voivat vaihdella, mutta tällaisten rakenteiden ohjelmoijalle antamat ominaisuudet ovat suunnilleen samat.

Esimerkki 1. Artikkelissa " Algoritminen suunnittelu”2 annettiin esimerkki algoritmin kirjoittamisesta yleisen toisen asteen yhtälön ratkaisemiseksi haaroituskonstruktioiden avulla. Tässä on osa Pascalin ohjelmasta, joka toteuttaa saman algoritmin:

jos a = 0 sitten

jos b = 0 sitten

jos c = 0 sitten writeln("x - mikä tahansa")

muu writeln("ei juuria")

muu writeln(-c/b)

muu alkaa

D: = b*b - 4*a*c;

jos D< 0 sitten writeln("ei juuria")

muu alkaa

x1:= -b + sqrt(D);

x2:= -b - sqrt(D);

writeln(x1:0:2","", x2:0:2)

Loop-lauseet

Silmukkaoperaattorit toteuttavat syklisiä algoritmirakenteita; niitä käytetään toimiin, jotka toistetaan monta kertaa. Monissa ohjelmointikielissä on kolmen tyyppisiä silmukkaoperaattoreita: "ennakolla", "jälkiehdon kanssa", "parametrilla".

Välttämätön ja riittävä algoritmirakenne silmukoiden ohjelmointiin on silmukka "ehdolla", joten sitä voidaan kutsua silmukan päätyypiksi. Silmukkaoperaattori, jolla on ennakkoehto, näyttää tältä:

kun taas B tehdä S

Operaattori S, jolle luodaan silmukka toistuvaa suoritusta varten silmukan runko. Silmukkaoperaattorin suoritus pelkistetään silmukan rungon toistuvaksi suoritukseksi, kunnes loogisen lausekkeen arvo B tosi (kunnes siitä tulee epätosi). Itse asiassa samanlaiset silmukkakäskyt toteuttavat ehdollisten lauseiden toistuvan suorituksen jos B sitten S, vaikka ehto on totta B.

Esimerkki 2. Harkitse sellaisen silmukkaoperaattorin käyttöä luonnollisen luvun numeroiden summan laskemiseen N:

sillä aikaa N>0 aloita

S: = S + N mod 10;

N:=N div 10

Silmukassa, jossa on jälkiehto, silmukan runko edeltää ehtoa B. Toisin kuin silmukassa, jossa on ennakkoehto, tässä B on silmukan päättämisen ehto. Silmukan operaattorilla, jolla on jälkiehto Pascalissa, on muoto:

toista S siihen asti kun B

Tällä syklin organisoinnilla syklin runko S tulee suorittaa vähintään kerran.

Lähes kaikissa menettelykielissä on silmukkaoperaattori parametrilla. Se voidaan esittää kaavamaisesti seuraavasti:

varten< muuttuja > E1 to E2 askel E3 tehdä S

Tässä on tarkoitus muuttuja(sykliparametri) muuttuu lausekkeen E1 arvosta E2:ksi E3:n vaiheissa. Jokaiselle tällaiselle silmukkaparametrin arvolle suoritetaan operaattori S. Pascal-kielessä askelen käsite puuttuu tämän operaattorin kuvauksesta, ja itse kokonaislukuparametrin askel voi olla joko 1 tai –1. Operaattoria "silmukka parametrien kanssa" käytetään ohjelmoimaan silmukoita, joissa on tietty määrä toistoja. Se ei sovellu iteratiivisten silmukoiden ohjelmointiin (joiden toistojen lukumäärää ei tiedetä etukäteen).

Menettelypuhelun operaattori

Artikkelissa " Aliohjelmat” kuvaa yksityiskohtaisesti tämän tyyppisiä aliohjelmia, kuten menettelyjä. Normaalit ohjelmointikielen rutiinit, jotka sisältyvät johonkin rutiinikirjastoista, sekä tässä lohkossa kuvatut käyttäjärutiinit kutsutaan käyttämällä operaattoria menettelyn kutsu:

<имя процедуры>(E1,E2,…,En)

Tässä E1,E2,…,En ovat muuttujia tai lausekkeita, jotka edustavat todelliset parametrit pääsy menettelyyn. Yleisimmin käytetyt standardirutiinit ovat syöttö- ja tulostusrutiinit (luku ja kirjoitus Pascalilla).

Proseduurin kutsuminen vastaa semanttisesti proseduurin rungoksi kuvatun lohkon suorittamista sen jälkeen, kun siihen on siirretty joidenkin muuttujien (arvoparametrien) alkuarvot tai korvattu joidenkin muuttujien (muuttujaparametrien) nimet proseduurin nimillä. todelliset muuttujat, jotka on määritetty proseduuria kutsuttaessa.

Esimerkki 3. Kuvataan menettely abc:

menettely abc(a,b:kokonaisluku; var c: kokonaisluku);

Tämän proseduurin kutsuminen abc(2,3,x) vastaa toimintolohkoa:

Hyppyoperaattorit

Tämän operaattoriryhmän tunnetuin operaattori on ehdoton hyppyoperaattori mene. Jos lisäät kaikkiin tai joihinkin olemassa oleviin ohjelmalausekkeisiin tunnisteet, niin ohjelmassa on mahdollista käyttää lomakkeen siirtymäoperaattoria:

mene<метка>

Tunniste tässä tapauksessa vastaa sen käskyn alkua, josta ohjelman suorittamista tulee jatkaa. Tällaisen operaattorin avulla voit kirjoittaa algoritmeja ohjelmointikielellä, jolla on mielivaltainen monimutkainen rakenne. Mutta usein ehdottoman siirtymisen käyttö on perusteetonta, koska johtaa hämmentävään, vaikeasti luettavaan ohjelmaan. Lähes ainoa järkevä käyttötapa operaattorille mene on ulospääsy useista sisäkkäisistä silmukoista kerralla, esimerkiksi käsiteltäessä kaksiulotteisia taulukoita.

Esimerkki 4. Oletetaan, että meidän on määritettävä, sisältääkö kaksiulotteinen taulukko a elementin, joka on yhtä suuri kuin 0:

varten minä:= 1 to N tehdä

j:lle = 1 to N tehdä

jos a = 0 sitten aloita

1: jos b sitten kirjoittaa ("on") muu write("ei");

Strukturoidun ohjelmoinnin sääntöjen mukaan kehitetty ohjelma ei saa sisältää ehdottomia hyppyoperaattoreita. Yllä oleva ohjelma ilman operaattoria mene voidaan kirjoittaa uudelleen seuraavasti:

kun taas ei b ja(ts< N) aloita

kun taas ei b ja(j< N) aloita

jos a = 0 sitten b:= tosi;

jos b sitten kirjoittaa ("on") muu write("ei");

Tässä tapauksessa jäsennelty ohjelma on vähemmän visuaalinen kuin ohjelma mene.

Muita hyppyoperaattoreita voidaan määrittää ohjelmointikielissä. Esimerkiksi Pascalissa: tauko(silmukan varhainen keskeytys, siirtyminen käskyyn, joka on suoritettava silmukan päätyttyä), jatkaa(nykyisen silmukan iteraation varhainen valmistuminen ja siirtyminen seuraavaan), poistu(alirutiinin varhainen keskeytys, poistuminen siitä), pysäyttää(ohjelman varhainen keskeytys, siirtyminen sen loppuun). Samanlaisia ​​operaattoreita on kielillä C, C++ ja Java.

Yhdistelmäoperaattori

Yhdistelmälause on joukko lauseita, jotka on suljettu operaattorin sulkuihin (Pascalissa - alkaaloppu; C, C++ - (…)).

Yhdistelmäoperaattori otettiin ohjelmointikieliin helpottamaan kielirakenteiden kuvausta. Esimerkiksi Pascalissa jokaisen lohkon (ohjelma, toimintosarja, funktio) suoritettava osa on yksi yhdistelmäkäsky. Täsmälleen samalla tavalla minkä tahansa silmukkaoperaattorin runko koostuu vain yhdestä operaattorista, ehkä yhdistelmäoperaattorista. Vaihtoehto yhdistelmäoperaattorille voi olla funktiosana, joka ilmaisee tietyn operaattorin loppua, esim. LOPPU JOS peruskielellä.

Aihetta "Ohjelmointikielen operaattorit" tutkitaan yleensä vain tietyn ohjelmointikielen yhteydessä. Sitä pohdittaessa on tärkeää osoittaa algoritmisten perusrakenteiden ja operaattoreiden välinen yhteys: algoritmiset rakenteet kirjoitetaan ohjelmointikielellä vastaavia operaattoreita käyttäen. Poikkeus on tietyssä mielessä peräkkäinen suunnittelu; se määrittää toimien lineaarisen järjestyksen. Tarkkaan lineaarisen ohjelman toiminnot toteutetaan vain osoituskäskyillä ja proseduurikutsulauseilla.

Päällä alkuvaiheessa Koululaisilla on monia ongelmia ohjelmoinnin oppimisessa. Ensimmäinen psykologinen este, joka heidän on voitettava, on tehtäväoperaattorin oppiminen. Yksi tärkeimmistä tehtävistä, joka sinun on ratkaistava yhdessä oppilaidesi kanssa, on kahden muuttujan arvojen vaihtaminen. Voit pyytää koululaisia ​​ratkaisemaan henkisesti ongelman kahden laatikon, esimerkiksi pöydän, sisällön vaihtamisesta. Tyypillisesti tässä keskustelun vaiheessa opiskelijat ymmärtävät, että ongelman ratkaisemiseksi tarvitaan kolmas laatikko (muuttuja). Kuitenkin nauhoitettaessa tästä algoritmista ne sekoittavat usein, missä osoitusoperaattorin osassa (vasemmalla tai oikealla) tietyn muuttujan tulisi esiintyä.

Virheet kirjoitettaessa aritmeettisia ja loogisia lausekkeita johtuvat tietämättömyydestä lausekkeessa käytettyjen operaatioiden ensisijaisuudesta. Samalla operaatioilla tarkoitetaan paitsi aritmeettisia, myös vertailuoperaatioita ja loogisia konnektiivisuuksia ja C-kielessä koululaisille hyvin epätavallista osoitusoperaatiota. Tilannetta mutkistaa se, että eri ohjelmointikielillä samoilla toiminnoilla on erilaiset suhteelliset prioriteetit. Sinun tulee myös kiinnittää huomiota muuttujan tyyppien ja osoitusoperaattorin vasemmalla ja oikealla puolella olevan lausekkeen väliseen vastaavuuteen (katso " Tietotyypit”).

Valintaoperaattoreita hallittaessa on hyödyllistä, että opiskelijat ohjelmoivat monihaaraisen rakenteen sisältävän algoritmin sekä ehdollisten lausekkeiden yhdistelmällä että valintaoperaattorilla.

Esimerkki. Kokonaislukumuuttujaan N Syötä henkilön ikä vuosina. Kirjoita lause " Olen K-vuotias", joka korvaa sanan vuotta päällä vuosi tai vuoden numerosta riippuen K. Tässä on kaksi ratkaisua tähän ongelmaan:

jos(k mod 100) sisään

sitten writeln("Olen ",k," vuotta vanha")

tapaus k mod 10 /

0,5..9:writeln("Olen ",k," vuotta vanha");

1:writeln("Olen ",k,"-vuotias");

2..4:writeln("Olen ",k," vuotta vanha");

var k, n: kokonaisluku;

readln(k); n: = k mod 10;

jos(k mod 100) sisään

sitten writeln("Olen ",k," vuotta vanha") muu

jos n = 1 sitten writeln("Olen ",k,"-vuotias")

jos(n >=) ja(n<= 4)

sitten writeln("Olen ",k," vuotta vanha")

muu writeln("Olen ",k," vuotta vanha")

Silmukkaoperaattoreita harkittaessa on hyödyllistä ehdottaa saman tehtävän ohjelmointia kolmella eri tavalla käyttäen kolmea silmukkaoperaattoria, ja päinvastoin, opetella ongelman ehtojen perusteella määrittämään, mikä silmukkaoperaattori on sopivin tietyssä tapauksessa.

Proseduurikutsuoperaattori on ensisilmäyksellä yksinkertainen. Tässä on tärkeää selittää säännöt parametrien välittämiseksi proseduureille ja funktioille, muuttujaparametrien ja arvoparametrien ero (jälkimmäisessä tapauksessa voimme välittää muuttujan nimen lisäksi myös vastaavan vakion tai jopa lausekkeen tyyppi). Muodollisten ja todellisten parametrien on vastattava tyyppiä, mutta ei nimeä, mikä ei ole opiskelijoille itsestään selvää.

Ehdollisen ja erityisesti yhdistelmälauseen opiskelu on hyvä tilaisuus keskustella opiskelijoiden kanssa ohjelman kirjoitustyylistä. Pascalissa on useita yleisiä tapoja kirjoittaa jäsenneltyjä ohjelmia, mutta ne kaikki sisältävät sisennyksen sisäkkäisten rakenteiden mukauttamiseksi. Tärkeää ohjelmien ja kommenttien tallentamiseen.

Tietojen ulostulo
Tietojen lähettäminen RAM-muistista näytön näytölle:
kirjoittaa
(<выражение 1> ,< выражение 2> , ...,< выражение N>)
tulosluettelo
Lausekkeet - symbolinen, numeerinen, looginen,
mukaan lukien muuttujat ja vakiot
Esimerkki:
kirjoittaa("s=", s).
Jos s=15, näytöllä näkyy: s=15.
Tiedot näkyvät näytöllä lainausmerkeissä
ilman muutoksia

Tulostusorganisaatiovaihtoehdot
Vaihtoehto
vetäytymisen järjestäminen
Ei erottimia
Päätelmäoperaattori
write(1, 20, 300).
Tulos
120300
Lisää erottimet kirjoita (1, ',' , 20,
– pilkut
’, ’, 300)
1, 20, 300
Lisää erottimet, kirjoita (1, ‘’, 2, ‘’, 3)
– tilat
1 20 300

Tulostusmuoto
Tulostusmuodon avulla voit asettaa paikkojen määrän
näytössä näytetyn arvon varaamana.
kirjoittaa (s:x:y)
x - numerolle osoitettujen paikkojen kokonaismäärä;
y - paikkojen lukumäärä luvun murto-osassa.
Päätelmäoperaattori
Toteutustulos
operaattori
write('s=', s:2:0);
s = 15
write('s=', s:3:1);
s = 15,0
write('s=', s:5:1);
s=
kirjoitettu
15.0
- lähtö uudelta riviltä!

Ensimmäinen ohjelma
ohjelma n_1;
const pi = 3,14;
var r, c, s: todellinen;
alkaa
r: = 5,4;
c:=2*pi*r;
Ohjelman tulos:
s:=pi*r*r;
writeln("c="", c:6:4);
writeln("s=", s:6:4)
Turbo Pascal
Versio 7.0
loppu.
c = 33,9120
s = 91,5624

Näppäimistön syöttö
Muuttujien arvojen syöttäminen RAM-muistiin:
lukea
(<имя переменной1>, …, <имя переменной N>)
syöttöluettelo
Luetun lausunnon suorittaminen:
1) tietokone siirtyy tietojen valmiustilaan:
2) käyttäjä syöttää tiedot näppäimistöltä:
useita muuttujaarvoja
numerotyyppejä voidaan syöttää
erotettu välilyönnillä tai pilkulla;
kun syötät merkkimuuttujia
Välilyöntejä ja pilkkuja ei voi käyttää.
3) käyttäjä painaa Enter-näppäintä.

Näppäimistön syöttö
!
Syöttöarvotyyppien on vastattava toisiaan
kuvausosiossa määritellyt muuttujatyypit
muuttujia.
var i, j: kokonaisluku;x: todellinen;a: merkki;
lue(i, j, x, a);
syöttövirran järjestämisvaihtoehdot:
1 0 2,5 A 1,0 1
2.5, A 0
2.5
A
Kun readln-käsky on suoritettu, kohdistin siirtyy kohtaan
uusi rivi.

Paranneltu ohjelma
ohjelma n_1;
const pi = 3,14;
var r, c, s: todellinen;
alkaa
writeln("Laske ympyrän ympärysmitta ja pinta-ala");
write("Syötä r>>");
readln(r);
c:=2*pi*r;
Ohjelman tulos:
s:=pi*r*r;
writeln("c="", c:6:4);
Pascal-versio 7.0
writeln("s=", s:6:4) Turbo
Ympyrän kehän ja alueen laskeminen
Kirjoita r >> 8.5
loppu.
c = 53,3800
s = 226,8650

Tärkein
Muuttuvien arvojen syöttäminen RAM-muistiin
Käytetään read- ja readln-syöttöoperaattoreita.
RAM-muistin tietojen näyttäminen näytöllä
Monitori käyttää kirjoitus- ja kirjoituslähtöoperaattoreita.
Lähtötietojen syöttäminen ja tulosten tulostaminen on välttämätöntä
olla järjestetty selkeästi ja kätevästi; tämä varmistaa
käyttöliittymän käyttäjäystävällisyys.

Kysymyksiä ja tehtäviä
1) Annettu ohjelman fragmentti:
a:=10; b:=a+1: a:=b–a; kirjoittaa (a, b)
Mitä numeroita näytetään tietokoneen näytöllä?
2) Kuvaile laskennassa tarvittavat muuttujat
kolmion pinta-ala sen kolmea sivua pitkin, ja
kirjoita lausunto syötteestä
tarvittavat alkutiedot.
3) Mikä on lauseen suorittamisen tulos?
a) kirjoittaa (a)
b) kirjoittaa ("a")
c) kirjoittaa ("a=", a)
4) Kokonaislukumuuttujat i, j, k on osoitettava
vastaavasti arvot ovat 10, 20 ja 30.
Kirjoita sisään syötettä vastaava syöttölause
stream:
a) 20 10 30
b) 30 20 10
c) 10,30,20