Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Duke përdorur Var, Integer, Readln. Hyrje në Pascal

Në seksionin për pyetjen Pse Pascal ka lexuar dhe lexuarln, nëse read përkthen gjithashtu një rresht, megjithëse në teori nuk duhet? dhënë nga autori Aleksandër pergjigja me e mire eshte readln - merr një vlerë nga buferi i hyrjes në një parametër, lan të gjithë buferin e hyrjes së tastierës
dhe lexo - merr vlerën nga buferi i hyrjes në parametër dhe nuk e pastron atë në bufer, por e lë vlerën !! !
furnizimi automatik i linjës kur shkruani - kudo
dmth readln është hyrje e sigurt
lexim- hyrje e pasigurt
shembull:
var
a, b: numër i plotë;
fillojnë
Lexo nje); (përdoruesi i futur: 4, 5 a = 4)
(në buferin e hyrjes numri 5!!}
lexoni (b); (këtu ai futi një numër: 6, por b = 5)
(numri 6 mbetet në buferin e hyrjes!!}
---
readln (a); (përdoruesi i futur: 4, 5; a = 4)
(buferi i hyrjes është i qartë!!}
readln (a); (përdoruesi ka futur numrin 6 dhe b = 6)
(buferi i hyrjes është i qartë!!}
lexoni (b);
fund.
Përkundrazi, nuk ka zbulim automatik të llojit të vlerës së hyrjes, gjithçka përcaktohet nga konventat në specifikuesin e formatit.

Përgjigje nga Yoali-Mali[guru]
Mund të shpjegohet në një mënyrë më të thjeshtë, pa ndonjë problem të veçantë:
Kur ekzekutohet procedura e leximit, vlera e të dhënave të ardhshme lexohet nga e njëjta rresht, dhe kur ekzekutohet procedura readln, vlera e të dhënave të ardhshme lexohet nga një rresht i ri.
Prandaj, operatori Readln (b1, b2, ... bn); siguron futjen e të dhënave në BAR.
Pas futjes së çdo ndryshoreje b1, b2, ..bn, kursori kalon në fillim të një rreshti të ri.
Operatori i leximit (b1, b2, ... bn); siguron futjen e të dhënave në LINE


Përgjigje nga VT-107 FIT[guru]
Këtu diçka Dmitry shkoi keq, por jo e vërtetë. Dhe për një tampon plotësisht të pastruar dhe të papastër dhe për sigurinë. Edhe Saliu nuk u përgjigj saktë. Nuk ka kolona dhe rreshta, rregulla krejtësisht të ndryshme.
Së pari, këto procedura nuk funksionojnë vetëm me hyrjen e konsolës, kështu që nevojiten dy funksione.
procedura Lexoni (F, V1 [, V2, ... Vn]);
lexon të gjitha V1..Vn nga rryma (saktësisht n parametra), të gjitha të dhënat e lexuara do të fshihen. Gjithçka që do të ndodhë pas këtyre të dhënave do të mbetet e pandryshuar.
Leximi i një rreshti do të lexojë gjithçka deri në një rresht të ri ose në fund të skedarit. Thirrjet e mëvonshme për të lexuar do të kthejnë një varg bosh. Dhe karakteri i linjës së re nuk do të hiqet nga transmetimi.
Nëse lexoni një karakter, atëherë në varësi të cilësimeve, karakteri i linjës së re mund të lexohet si char (26)
Gjatë leximit të numrave, të gjitha hapësirat, skedat, ndërprerjet e rreshtave anashkalohen. Dhe leximi tjetër do të fillojë me karakterin pas numrit të lexuar. Përsëri, personazhet e panevojshëm mund të anashkalohen.
procedura ReadLn ([var F: Tekst;] V1 [, V2, ..Vn]);
lexon nga transmetimi V1, Vn (d.m.th. funksionon si i lexuar) dhe më pas kalon të gjithë karakteret deri në rreshtin e ri dhe duke përfshirë. Të gjithë personazhet pas ndërprerjes së rreshtit do të mbeten të pandryshuar.
Kalimi në një linjë të re kryhet sepse shtypni Enter në tastierë.
Në lidhje me sigurinë është shumë e largët. Këto janë funksione me qëllime të ndryshme. Çdo përdorim i gabuar i tyre nuk është i sigurt, çdo i saktë dhe përkatësisht i sigurt.

Gjuha e programimit Pascal përdor udhëzime të tilla si read dhe readLn. Cilat janë ato?

Çfarë është një deklaratë e lexuar?

Ky udhëzim synon të sigurojë të dhëna nga tastiera e PC të vlerave të ndryshme të variablave duke përdorur gjuhën Pascal. Skema e përdorimit të udhëzimit të konsideruar duket e thjeshtë: si lexim ("vlera e ndryshueshme").

Në praktikë, udhëzimi i leximit përdoret për të siguruar që të dhëna të caktuara të lexohen nga një skedar dhe më pas vlerat e marra nga të dhënat përkatëse u caktohen variablave që janë specifikuar gjatë thirrjes së procedurës.

Nëse përdoruesi bën një gabim gjatë futjes së të dhënave, ato nuk korrespondojnë me asnjë lloj variablash të pasqyruar në udhëzim, programi ndalon ekzekutimin e komandave. Në këtë rast, në ekranin e kompjuterit shfaqet një mesazh se ka ndodhur një gabim në aplikacion.

Nëse programuesi përdor disa udhëzime leximi, atëherë të dhënat do të futen në një mënyrë ose në një tjetër në një rresht. Kërcimi tjetër është i mundur vetëm nëse linja aktuale përfundon. Megjithatë, ju mund të lexoni informacionin e vendosur në një rresht tjetër duke përdorur udhëzimin readLn. Le të shqyrtojmë veçoritë e tij në më shumë detaje.

Cili është udhëzimi readLn?

Thelbi i udhëzimit readLn është të vendosni një kusht në program sipas të cilit:

  • çdo numër i futur në varg i caktohet variablit të fundit nga instruksioni;
  • pjesa tjetër e linjës nuk përpunohet nga programi, ndërsa udhëzimi tjetër do të kërkojë hyrje të re.

Pra, mund të futni udhëzimin:

readLn (C, D); lexo (E);

Dhe nëse pas kësaj futni një rresht 1 2 3 nga tastiera, atëherë ndryshorja C do të marrë vlerën 1, D - 2. Por programi nuk do t'i caktojë një vlerë të caktuar ndryshores E derisa përdoruesi të vendosë një numër të ri.

Ashtu si në rastin e instruksionit të leximit, nëse përdoruesi fut gabimisht llojin e të dhënave duke përdorur komandën readLn, programi del dhe shfaq një mesazh gabimi.

Krahasimi

Dallimi kryesor midis readLn dhe read është se procedura e parë përfshin programin që të hidhet në rreshtin e skedarit duke ndjekur atë në të cilin janë shkruar udhëzimet. Procedura e dytë lejon programin të lexojë të dhënat e vendosura në rreshtin tjetër, vetëm me lejen e përdoruesit - nëse ai shtyp Enter.

Në praktikë, instruksioni readLn përdoret më shpesh për të siguruar një vonesë midis rezultatit të ekzekutimit të aplikacionit dhe kalimit në instruksionin tjetër. Vonesa përkatëse zgjat derisa përdoruesi të shtyp Enter.

Pasi të kemi përcaktuar se cili është ndryshimi midis readLn dhe lexuar në gjuhën Pascal, le të rregullojmë përfundimet në tabelë.

Tema: Hyrje dalje. Lexoni (Readln), Shkruani (Writeln) deklarata. Programet më të thjeshta lineare.

Le ta zgjidhim problemin duke komentuar secilin prej veprimeve tona në mbajtëse kaçurrelë. Kujtojmë që komenti nuk perceptohet nga kompjuteri, por na nevojitet për të kuptuar më mirë se si funksionon programi.

Detyrë ... Shkruani një program që pastron ekranin dhe llogarit produktin e dy numrave të dhënë nga përdoruesi.

Programi Proizv2;
Përdorimet
Crt; (Ne lidhim modulin Crt)
Var
numër 1, (ndryshore që do të mbajë numrin e parë)
numri 2, (ndryshore që do të mbajë numrin e dytë)
rezult (ndryshore që do të përmbajë rezultatin)
: numër i plotë;
Filloni
ClrScr; (Ne përdorim procedurën për pastrimin e ekranit nga moduli Crt)
Shkruani ("Futni numrin e parë");
Readln (numri 1);
(Numri i futur nga përdoruesi lexohet në variablin numër 1)
Shkruani ("Futni numrin e dytë");
(Duke shfaqur karaktere të shkruara midis apostrofave)
Readln (numri 2);
(Numri i futur nga përdoruesi lexohet në variablin numër 2)
rezult: = numri1 * numri2;
(Gjeni produktin e numrave të futur dhe caktojeni atë në ndryshoren rezult)
Shkruani ("Prodhimi i numrave", numri 1, "dhe", numri 2, "barazohet", rezult);
(Ne shfaqim një rresht që përmban përgjigjen e problemit)
Readln; (Procedura e vonesës së ekranit)
fund.

Për të kuptuar më mirë veprimin e një programi, shkruani atë në kompjuterin tuaj dhe provoni veprimin e tij. Përgjigju pyetjeve:

  • pse u quajt programi Proizv2?
  • Pse e vendosët modulin Crt në seksionin Uses?
  • cili është qëllimi i variablave numër1, numër2, rezult?
  • çfarë lloji janë këto variabla? çfarë do të thotë?
  • Nëse caktojmë variablat numër 1 dhe numër 2 respektivisht vlerave 5 dhe 7, çfarë rreshti do të prodhojë kompjuteri gjatë ekzekutimit të procedurës së fundit Write? Shkruani atë në fletoren tuaj.
  • në cilat rreshta përdoruesi kërkohet për vlerat e variablave?
  • në cilin rresht ndodh shumëzimi i numrave?
  • çfarë bën operatori i caktimit në këtë program?

Ushtrimi ... Modifikoni programin në mënyrë që ai të nxisë përdoruesin për një variabël tjetër dhe të nxjerrë produktin e tre numrave.

Shkruani dhe shkruani deklarata

Ne kemi përdorur tashmë operatorët Write dhe WriteLn, por duhet të ndalemi më në detaje në rregullat e përdorimit të këtyre operatorëve.

Write është një operator që përdoret për të shfaqur informacionin në ekran. Operatori WriteLn kryen të njëjtin veprim, por duke qenë se ka edhe mbaresën Ln (linja - rreshti anglisht, rreshti), atëherë pasi të shfaq mesazhin e dëshiruar në ekran, ai zhvendos kursorin në rreshtin tjetër.

Forma e përgjithshme:
Shkruaj (lista e shprehjeve)
WriteLn (lista e shprehjeve)

Procedurat Write dhe WriteLn përdoren jo vetëm për të shfaqur rezultatin, por edhe për të shfaqur mesazhe ose kërkesa të ndryshme. Kjo ju lejon të zhvilloni një dialog me përdoruesin, t'i tregoni atij kur duhet të fusë vlerat, kur ai merr një rezultat, kur ka bërë një gabim, etj.

Për shembull, gjatë ekzekutimit të procedurës WriteLn ('Numri i gjetur, a), do të printohet një rresht i mbyllur me apostrofa dhe më pas do të shfaqet vlera e ndryshores a.

Deklarata WriteLn mund të përdoret pa parametra. Në këtë rast, një rresht i përbërë nga hapësira do të printohet dhe kursori do të zhvendoset në një rresht tjetër. Ndonjëherë na nevojitet për një perceptim më të mirë të futjes së të dhënave.

Operatorët Read dhe ReadLn

Le të kujtojmë se qëllimi kryesor i një kompjuteri është të kursejë punën njerëzore. Prandaj, është e nevojshme të sigurohet një mundësi, pasi të keni shkruar një herë një program, ta ripërdorni atë, çdo herë duke futur të dhëna të ndryshme. Ky fleksibilitet në gjuhë sigurohet nga deklaratat Read dhe ReadLn. Këta operatorë futin informacion nga tastiera.

Forma e përgjithshme:
Lexoni (ndryshueshme, variabël ...)
ReadLn (ndryshueshme, variabël ...)

Procedura Read pret që të futen vlerat e listuara në kllapa. Të dhënat e futura duhet të ndahen nga njëra-tjetra me hapësira. Caktimi i vlerave ndodh nga ana tjetër.

Për shembull, nëse futen vlerat 53 dhe X, atëherë kur të ekzekutohet deklarata Read (a, b), numri 53 do t'i caktohet ndryshores a dhe shkronja X në ndryshoren X. Për më tepër, në për të shmangur një emergjencë, duhet të përcaktoni saktë llojin e të dhënave në seksionin Var; në rastin tonë a: numër i plotë dhe b: char.

Nuk ka dallime të veçanta në lexim dhe shkrim në përdorimin e operatorëve Read dhe ReadLn. Shpesh procedura ReadLn pa parametra përdoret në fund të programit për të vonuar: përpara se të shtypni një tast rezultati i ekzekutimit të programit mbetet në ekran. Kjo është shumë e dobishme për të analizuar rezultatet.

shënim ... Kur vendosni vonesën e ekranit, kushtojini vëmendje hyrjes së mëparshme. Nëse të dhënat janë kërkuar nga procedura e Leximit, nuk do të ketë vonesa.

Le të zgjidhim një problem në të cilin do të shqyrtojmë të gjitha përdorimet e mundshme të këtyre procedurave.

Detyrë ... Gjeni mesataren e tre numrave.

shënim ... Për të gjetur mesataren e disa numrave, mblidhni këta numra dhe pjesëtoni shumën me numrin e këtyre numrave.

Shkruani tekstin e problemit dhe shqyrtoni me kujdes çdo rresht. Emri i programit Srednee pasqyron përmbajtjen e detyrës. Nga rruga, le të biem dakord që emri i programit dhe emri i skedarit që përmban këtë program janë të njëjta. Më pas vjen lidhja e modulit Crt. Në seksionin Var, First, Second, Third përshkruhen si variabla të një lloji të plotë, dhe shuma është e një lloji real. Seksioni i operatorit fillon me rutinën standarde të ekranit ClrScr (Clear Screen) që gjendet në modulin Crt. Më pas me deklaratën Write shfaqim mesazhin ‘Fut numrin e parë’, pas marrjes së të cilit përdoruesi duhet të fusë numrin.

Tani kompjuteri duhet të lexojë karakteret e futura dhe t'i vendosë në variablin First, kjo do të ndodhë kur të ekzekutohet deklarata tjetër ReadLn (First). Më pas, duke përdorur deklaratën Write, kërkojmë vlerat e dy numrave të tjerë dhe i lexojmë në variablat e Dytë dhe të Tretë. Më pas llogarisim shumën e tyre dhe ia caktojmë numrin që rezulton variablit Sum. Për të gjetur mesataren, tani duhet të ndani numrin që rezulton me 3 dhe ta ruani rezultatin në disa ndryshore.

Nuk është aspak e nevojshme të deklarohet një variabël tjetër për të ruajtur rezultatin. Ju mund, si në programin tonë, të ndani vlerën e ndryshores Sum me 3 dhe t'ia caktoni rezultatin sërish të njëjtës variabël Sum. Tani mund të shfaqni rezultatin e llogaritjeve në ekran duke përdorur procedurën "Write". Më në fund, rutina përfundimtare ReadLn do të vonojë daljen tonë në ekran derisa të shtypet një tast.

Shtypni tastet +... Futni vlerat e variablave 5, 7 dhe 12, do të shihni sa më poshtë në ekran:

Mesatarja e 5, 7 dhe 12 është 8.00

Shikoni me kujdes këtë rresht dhe krahasojeni atë me linjën e daljes së rezultatit në programin tonë. Testoni programin edhe disa herë për vlera të ndryshme variablash.

Zgjidhni me mësuesin problemet për të zgjidhur nga lista e mëposhtme:

  1. Futni dy numra a dhe b. Përdorni operatorin e caktimit për të shkëmbyer vlerat e tyre:
    a) duke përdorur një ndryshore të ndërmjetme (x: = a; a: = b; b: = x);
    b) pa përdorur një ndryshore të ndërmjetme (a: = a-b; b: = a + b; a: = b-a).
  2. Shkruani një program që kërkon nga përdoruesi një numër të plotë, një numër real, një karakter arbitrar dhe një varg, dhe më pas printon gjithçka në një rresht.
  3. Shfaqni mbiemrin, emrin dhe patronimin tuaj, dhe dy rreshta më vonë - datën tuaj të lindjes.
  4. Shkruani një program për shtypjen e njërës prej formave me yje:
    a) Pemët e Krishtlindjeve (disa pemë të Krishtlindjeve);
    b) flokë bore (disa fjolla bore);
    c) një shtëpi, për shembull,

    *
    * *
    * *
    ***********
    * *
    * *
    * *
    * *
    ***********

  5. Hartoni kartën tuaj të biznesit.


    * Ivanov Sergej *
    * Proletarskaya 74 sq. 55 *
    * Telefon 45-72-88 *
    *******************************

  6. Hartoni një dialog midis përdoruesit dhe kompjuterit për një temë arbitrare.
    Për shembull, një makinë bën dy pyetje: "Si e ke emrin?" sa vjeç jeni?"; pasi të keni futur emrin (Anton) dhe numri (15) shfaqet në ekran "Po ... Në 50 vjet do të jeni 65 vjeç, dhe emri juaj nuk do të jetë Anton, por gjyshi Anton"
  7. Kërkoni nga përdoruesi dy numra dhe shfaqni rezultatin e shumës, diferencës, produktit dhe koeficientit të këtyre numrave me një përgjigje të plotë.
  8. Kërkoni përdoruesin për dy numra dhe shfaqni rezultatin e një ndarjeje të plotë dhe pjesën e mbetur të një ndarjeje të plotë në formën e një tabele. Për shembull, kur futni numrat 5 dhe 3, ekrani duhet të shfaqë tabelën e mëposhtme:

    **************************
    * X * Y * div * mod *
    **************************
    * 5 * 3 * 1 * 2 *
    **************************

  9. Shkruani një program që kërkon emrin e një kafshe dhe një numër, dhe më pas shfaq një frazë si "Ketri do të hajë 10 kërpudha" (kur futni fjalën "ketri" dhe numrin 10).
  10. Organizoni një dialog ndërmjet shitësit (kompjuterit) dhe blerësit (përdoruesit) kur blini një produkt sipas skemës së mëposhtme: ofrimi i produktit me një çmim të caktuar, kërkesa për sasinë e produktit të blerë, përcaktimi dhe shfaqja e shumës së parave që blerësi duhet të paguajë për blerjen.

Lexoni (procedura)

Për skedarët e shtypur, lexon përbërësin e skedarit në një ndryshore.
- Për skedarët e tekstit, lexon një ose më shumë vlera
në një ose më shumë variabla

Njoftim

Skedarët e shtypur

Leximi i procedurës (F, V1 [, V2, ..., Vn]);

Skedarët e tekstit

Leximi i procedurës ([Var F: Tekst;] V1 [, V2, ..., Vn]);

Modaliteti

Dritare, e vërtetë, e mbrojtur

Vërejtje

Për variablat e vargut:

Leximi lexon të gjithë karakteret deri në (por pa përfshirë) shënuesin tjetër të fundit të rreshtit ose deri Eof(F) do të bëhet e vërtetë. Leximi nuk kalon në rreshtin tjetër pas leximit. Nëse vargu që rezulton është më i gjatë se gjatësia maksimale e variablit të vargut, atëherë ai shkurtohet. Pas Leximit të parë, çdo thirrje pasuese Lexo do të shohë shënuesin e fundit të linjës dhe do të kthejë një varg me gjatësi zero.

Përdorni thirrje të shumta në ReadLn për të lexuar vlera të shumta vargu.

Kur opsioni është i aktivizuar Sintaksë e zgjeruar, procedura Read mund të lexojë vargjet me fund të pavlefshëm te vargjet e karaktereve të bazuara në null.

Për variablat si Numër i plotë ose Reale:

Leximi do të kapërcejë çdo hapësirë, skedë ose shënues në fund të rreshtit që i paraprin një rreshti numerik. Nëse vargu numerik nuk përputhet me formatin e pritur, ndodh një gabim I/O, përndryshe ndryshores i caktohet vlera që rezulton. Leximi tjetër do të fillojë me një hapësirë, skedë ose shënues në fund të rreshtit që përfundon vargun numerik.

Shiko gjithashtu

Shembull

përdor Crt, Dos;

var
F: Teksti;
Ch: Char;

fillojnë
(Merrni emrin e skedarit nga linja e komandës)
Cakto (F, ParamStr (1));
Rivendos (F);
ndërsa jo EOF (F) e bëjnë
fillojnë
Lexoni (F, Ch);
Shkruaj (Ch); (Ne shfaqim përmbajtjen e skedarit në ekran)
fundi;
fund.

Udhëzimi i leximit ka për qëllim futjen e vlerave të variablave (të dhënat fillestare) nga tastiera. Në përgjithësi, udhëzimi duket si ky:

lexo (ndryshore !, variabël2, ... ndryshore

Këtu janë shembuj të shkrimit të një deklarate të lexuar:

Lexo nje); lexo (Cena, Kol);

Kur ekzekutohet deklarata e leximit, ndodh si më poshtë:

1. Programi ndalon punën e tij dhe pret derisa të dhënat e kërkuara të shtypen në tastierë dhe të shtypet tasti .

2. Pasi të keni shtypur tastin vlera e futur i caktohet variablit të emërtuar në deklaratë.

Për shembull, si rezultat i ekzekutimit të instruksionit

Lexoni (Tempérât);

dhe duke shtypur rreshtin 21, vlera e Tempérât është 21.

Një deklaratë leximi ju lejon të merrni vlerat e disa variablave. Në këtë rast, numrat e futur duhet të shtypen në një rresht dhe të ndahen me hapësira. Për shembull, nëse lloji i variablave a, b dhe c është real, atëherë si rezultat i ekzekutimit të leximit (a, b, c); dhe vargun e hyrjes së tastierës:

4.5 23 0.17

variablat do të kenë këto vlera: a = 4.5; b = 23, o; c = 0,17.

Nëse rreshti përmban më shumë numra sesa variablat e specifikuar në deklaratën e leximit, atëherë pjesa tjetër e rreshtit do të përpunohet nga deklarata e ardhshme e leximit. Për shembull, si rezultat i ekzekutimit të udhëzimeve:

Lexoni (a, B); lexo (C);

dhe vargun e hyrjes së tastierës

10 25 18

variablat do të marrin këto vlera: a = 10, b = 25. Lexoni udhëzimin (C); do t'i caktojë variablit me vlerën 18.

Instruksioni readln ndryshon nga instruksioni readln në atë që pas zgjedhjes së numrit tjetër nga rreshti i futur nga tastiera dhe caktimit të tij në variablin e fundit nga lista e instruksionit readln, pjesa tjetër e rreshtit humbet dhe leximi tjetër ose Instruksioni readln do të kërkojë hyrje të re.

Për shembull, si rezultat i ekzekutimit të udhëzimit:

Readln (a, B); lexo (C);

dhe shtypja e vargut

10 25 18

variablat do të marrin këto vlera: a = 10, b = 25. Pas kësaj, programi do të presë që të futet një numër i ri për t'ia caktuar variablit c.

Çdo udhëzim leximi ose leximi duhet të paraprihet nga një instruksion shkrimi për t'i treguar përdoruesit se çfarë të dhënash pret programi prej tij. Për shembull, një fragment i programit për llogaritjen e kostos së një blerjeje mund të duket si:

Writeln ("Fut të dhënat origjinale."); shkruani ("Çmimi i produktit:"); readln (Sepa); shkruani ("Sasia në grup:"); readln (Kol); shkruani ("Zbritje:"); readln (Skidka);

Nëse lloji i të dhënave të futura nga tastiera nuk përputhet ose nuk mund të konvertohet në llojin e variablave emrat e të cilëve janë specifikuar në deklaratën read (readln), programi prishet (udhëzimet pas leximit nuk ekzekutohen) dhe shfaqet një mesazh. në ekran për gabimin.

Artikujt kryesorë të lidhur