Adatbeviteli operátorok ReadLn és Read. Olvasási és olvasási rutinok Amit az readln végez a pascalban

Olvasés ReadLn információk olvasása a szabványos beviteli eszközről. A konzolos alkalmazásokban ez az eszköz lehet például billentyűzet (pontosabban a billentyűzetről bevitt adatok), grafikus alkalmazásokban egy fájl a lemezen.

Vagyis ezek az eljárások "antipódák" - ellentétes műveleteket hajtanak végre.

A Read és ReadLn eljárások hasonló műveleteket hajtanak végre. A fő különbség közöttük a következő: a ReadLn eljárás a bemenet befejezése után sor előtolást hajt végre (és fájlok esetén sorról sorra olvassa be a fájlt). A Read eljárás pedig sorban olvassa az adatokat - sor előtolás nélkül.

JEGYZET:

A Turbo Pascal -ban erre nem emlékszem (lehet, hogy csak elfelejtettem), de a billentyűzetről a bemenet csak a ReadLn eljárással hajtható végre, és a Read eljárás valamilyen okból nem működik.

A konzol kimenetének szintaxisa:

eljárás Olvasás (érvek: érvek);

A fájlba történő kimenet szintaxisa:

eljárás Olvas ( var F: Szöveg; Arg: érvek);

Az érvek ( Érvek) eltérő lehet. Ha több változót használ, akkor azokat vesszővel elválasztva sorolja fel. Például:

Var x, y: egész; z: valódi; str: karakterlánc; begin WriteLn ("Írjon be három egész számot szóközzel elválasztva:"); ReadLn (x, y, z); WriteLn ("Beírtad:", x, ",", y, ",", z: 0: 2); ReadLn (str); WriteLn (str + str); ReadLn; vége.

Amint már említettük, ezek a változók a konzolról gépelve különböző típusúak lehetnek. A Write / WriteLn eljárásokkal ellentétben azonban nem használható (és ez logikus))).

FONTOS!
Az adatok bevitelénél szem előtt kell tartani, hogy ha a felhasználó által megadott érték típusa eltér attól a változótípustól, amelybe ezt az értéket beírta, futási hiba lép fel. Ha például a fenti példában a felhasználó valós értéket (például 3.14) ad meg első számként, a program összeomlik, mivel az x változó egész típusú.

Ha fájlból olvas, akkor gépelt és szöveges fájlokkal is dolgozhat.

Ha F(lásd a szintaxist) egy gépelt fájl, akkor a paraméterként átadott változóknak (Args) ugyanolyan típusúnak kell lenniük, mint a fájlnak F... Gépelés nélküli fájlok nem engedélyezettek. Ha a paraméter F nincs megadva, akkor feltételezzük, hogy a leolvasás szabványos bemenetről történik.

Ha a fájl F típusú Szöveg, akkor a változóknak típusnak kell lenniük, ill.

Ha a fájl olvasásakor nem áll rendelkezésre adat az olvasáshoz, akkor egy üres érték kerül vissza az F változóba (0 -, üres karakterlánc - karakterláncokhoz).

A ReadLn eljárás használata esetén, azaz az adatok soronkénti olvasásakor a sor végét egy bizonyos karaktersor jelzi (ami pontosan az operációs rendszertől függ, DOS / Windows esetén ez két karakterek - # 10 és # 13).

A sorvégi jelző nem része az olvasási sornak, és figyelmen kívül hagyja.

Ha a Read / ReadLn eljárás végrehajtása közben hiba lép fel, futási hiba keletkezik. Ez a viselkedés nem mindig elfogadható (például fájl olvasása közben). Ezért bizonyos esetekben a hibagenerálás le van tiltva. Ezt megteheti.

JEGYZET:

A ReadLn rutint gyakran használják a különböző hibakeresési és oktatóprogramokban, hogy megakadályozzák a konzolalkalmazás automatikus bezárását a végrehajtás után. Ehhez a program végén egyszerűen írja be (mint a fenti példában):

Vagyis csak az eljárás neve paraméterek nélkül. Ebben az esetben a program megvárja az ENTER gomb megnyomását. Ezért a program nem fejeződik be, amíg az ENTER gombot le nem nyomja, és ez lehetővé teszi a program eredményének megtekintését. Természetesen az operációs rendszerben

Szerintem sokakat érdekelni fog)))

Állításokat olvasni és olvasni

Az olvasási utasítás a változók (kezdeti adatok) értékeinek billentyűzetről történő bevitelére szolgál. Általában az utasítás így néz ki:

olvasás (változó1, változó2, ... változóN)

ahol a változók annak a változónak a neve, amelynek értékét a program végrehajtása során a billentyűzetről kell megadni.

Íme néhány példa az olvasott nyilatkozat írására:

olvasni egy); olvass (Cena, Kol);

Az olvasási utasítás végrehajtásakor a következők történnek:

1. A program szünetelteti a munkát, és várja, amíg a szükséges adatokat beírja a billentyűzetre, és megnyomja a gombot .

2 http://tissot.ua/ vegyél órát vegyél órát kiev. ... A gomb megnyomása után a megadott érték hozzá van rendelve az utasításban megnevezett változóhoz.

Például az utasítás végrehajtásának eredményeként

olvasni (Temperat);

és a billentyűzetről beírva a 21. sort, a Temperat változó értéke 21 lesz.

Egy olvasott utasítás lehetővé teszi több változó értékének lekérését. Ebben az esetben a bevitt számokat egy sorba kell írni, és szóközökkel kell elválasztani. Például, ha az a, b és c változók típusa valós, akkor az olvasott utasítás végrehajtásának eredményeként (a, b, c); és billentyűzet beviteli karakterlánc:

4.5 23 0.17

változók a következő értékekkel rendelkeznek:

a = 4,5; b = 23,0; c = 0,17.

Ha a sor több számot tartalmaz, mint az olvasási utasításban megadott változók, akkor a sor többi részét a következő utasítás dolgozza fel: http://crystal.lviv.ua kristálykristály. ... https://mainvisa.com.ua fényképes meghívó Ukrajnába külföldi állampolgároknak. ... Például az utasítások végrehajtásának eredményeként

olvassa el (A, B); olvassa el (C);

és billentyűzet beviteli karakterlánc

10 25 18

a változók a következő értékeket kapják: A = 10, B = 25. Olvassa el a (C) utasítást; 18 -as értékű változót rendel hozzá.

A readln utasítás abban különbözik az olvasási utasítástól, hogy miután kiosztotta a következő számot a billentyűzetről beírt sorból, és hozzárendelte az utolsó változóhoz a readin utasítás listájából, a sor többi része elveszik, és a következő olvasás ill. A readin utasítás új bevitelt igényel.

Például az utasítás végrehajtásának eredményeként

olvasás (A, B); olvassa el (C);

és beírja a karakterláncot

10 25 18

a változók a következő értékeket kapják: A = 10, B = 25. Ezt követően a program megvárja az új szám megadását, hogy hozzá tudja rendelni a c változóhoz.

Minden olvasási vagy olvasási utasítást írási utasításnak kell megelőznie, amely megmondja a felhasználónak, hogy a program milyen adatokat vár el tőle. Például a vásárlás költségeinek kiszámítására szolgáló program töredéke így nézhet ki:

writeln ("Adja meg a kezdeti adatokat.");

Write ("Termék ára:");

Readln (Сenа);

write ("Mennyiség a kötegben:");

Readln (Kol);

write ("Kedvezmény:");

readln (Skidka);

Ha a billentyűzetről bevitt adatok típusa nem egyezik, vagy nem konvertálható olyan típusú változókra, amelyeknek a neve az olvasási (olvasási) utasításban van megadva, a program összeomlik (az olvasást követő utasításokat nem hajtják végre), és megjelenik egy üzenet a képernyőn a hibáról.

szerző Sándor- tett fel egy kérdést a szekcióban Más nyelvek és technológiák

Miért Pascal olvasott és olvasott, ha az olvasás egy sort is lefordít, bár elméletileg nem kellene? és a legjobb választ kapta

Válasz Skipy _ [guru]
readln - értéket vesz a bemeneti pufferből egy paraméterbe, törli a teljes billentyűzet bemeneti puffert
és olvassa - az értéket a bemeneti pufferből veszi a paraméterbe, és nem törli a pufferbe, hanem elhagyja az értéket !! !
automatikus sorbevitel gépeléskor - mindenhol
azaz az readln biztonságos bemenet
olvasás- nem biztonságos bemenet
példa:
var
a, b: egész szám;
kezdődik
olvasni egy); (felhasználó megadta: 4, 5 a = 4)
(a bemeneti pufferben az 5 -ös szám!!}
olvassa el (b); (itt beírt egy számot: 6, de b = 5)
(a 6 -os szám a bemeneti pufferben marad!!}
---
readln (a); (felhasználó megadta: 4, 5; a = 4)
(a bemeneti puffer tiszta!!}
readln (a); (a felhasználó megadta a 6 -os számot, és b = 6)
(a bemeneti puffer tiszta!!}
readln (b);
vége.
Éppen ellenkezőleg, a bemeneti érték típusa nem érzékelhető automatikusan, mindent a formátum -specifikátorban szereplő konvenciók határoznak meg.

Válasz innen Yoali-Mali[guru]
Egyszerűbben, különösebb problémák nélkül magyarázható:
Az olvasási eljárás végrehajtásakor a következő adatok értéke ugyanabból a sorból kerül kiolvasásra, és az readln eljárás végrehajtásakor a következő adatok értéke egy új sorból.
Ezért a Readln operátor (b1, b2, ... bn); adatbevitelt biztosít a BAR -ba.
Az egyes b1, b2, ..bn változók megadása után a kurzor egy új sor elejére lép.
Olvasó operátor (b1, b2, ... bn); adatbevitelt biztosít a LINE -be


Válasz innen VT-107 FIT[guru]
Itt Dmitrij szakított valamit, de nem igaz. És egy teljesen megtisztított és tisztítatlan pufferről és a biztonságról. Sali szintén nem válaszolt helyesen. Nincsenek oszlopok és sorok, teljesen más szabályok.
Először is, ezek az eljárások nem csak a konzol bemenetével működnek, ezért két funkcióra van szükség.
eljárás Olvasás (F, V1 [, V2, ... Vn]);
kiolvassa az összes V1..Vn adatfolyamból (pontosan n paramétert), minden olvasott adat törlődik. Minden, ami ezek után az adatok után történik, változatlan marad.
Egy sor olvasása mindent elolvas az újsoros karakterig vagy a fájl végéig. A későbbi olvasási hívások üres karakterláncot adnak vissza. És az újsor karakter nem lesz eltávolítva a folyamról.
Ha egy karaktert olvas, akkor a beállításoktól függően az újsor karakter char -ként olvasható (26)
Számok olvasásakor az összes szóköz, fül, sortörés kihagyásra kerül. A következő olvasás pedig az olvasott számot követő karakterrel kezdődik. Ismét kihagyhatjuk a felesleges karaktereket.
eljárás ReadLn ([var F: Szöveg;] V1 [, V2, ..Vn]);
a V1, Vn folyamból olvas (azaz olvasásként működik), majd kihagyja az összes karaktert, egészen az újsorig. A sortörés után minden karakter változatlan marad.
Az új sorra való áttérés azért történik, mert a konzolon megnyomja az Enter billentyűt.
A biztonságról messzemenő. Ezek különböző célú funkciók. Bármilyen szakszerűtlen használatuk nem biztonságos, minden helyes és ennek megfelelően biztonságos.

Az olvasási utasítás a változók (kezdeti adatok) értékeinek billentyűzetről történő bevitelére szolgál. Általában az utasítás így néz ki:

read (Változó!, Változó2, ... Változó, ahol a változók a változó neve, amelynek értékét a program végrehajtása során a billentyűzetről kell megadni.

Íme néhány példa az olvasott nyilatkozat írására:

Olvasni egy); olvass (Cena, Kol);

Az olvasási utasítás végrehajtásakor a következők történnek:

1. A program szünetelteti a munkát, és várja, amíg a szükséges adatokat beírja a billentyűzetre, és megnyomja a gombot .

2. A gomb megnyomása után a megadott érték hozzá van rendelve az utasításban megnevezett változóhoz.

Például az utasítás végrehajtásának eredményeként

Olvasás (Tempérât);

és a 21. sort beírva a Tempérât értéke 21 lesz.

Egy olvasott utasítás lehetővé teszi több változó értékének lekérését. Ebben az esetben a bevitt számokat egy sorba kell írni, és szóközökkel kell elválasztani. Például, ha az a, b és c változók típusa valós, akkor az olvasás végrehajtásának eredményeként (a, b, c); és billentyűzet beviteli karakterlánc:

4.5 23 0.17

a változók a következő értékekkel rendelkeznek: a = 4,5; b = 23, o; c = 0,17.

Ha a sor több számot tartalmaz, mint az olvasási utasításban megadott változók, akkor a sor többi részét a következő olvasási utasítás fogja feldolgozni. Például az utasítások végrehajtása eredményeként:

Olvassa el (a, B); olvassa el (C);

és a billentyűzet beviteli karakterláncát

10 25 18

a változók a következő értékeket kapják: a = 10, b = 25. Olvassa el a (C) utasítást; 18 -as értékű változót rendel hozzá.

A readln utasítás abban különbözik az olvasási utasítástól, hogy miután a billentyűzetről beírt sorból kiválasztja a következő számot, és az readln utasítás listájából az utolsó változóhoz rendeli, a sor többi része elveszik, és a következő az olvasás vagy olvasás utasítás új bevitelt igényel.

Például az utasítás végrehajtásának eredményeként:

Readln (a, B); olvassa el (C);

és beírja a karakterláncot

10 25 18

a változók a következő értékeket kapják: a = 10, b = 25. Ezt követően a program megvárja az új szám megadását, hogy hozzá tudja rendelni a c változóhoz.

Minden olvasási vagy olvasási utasítást írási utasításnak kell megelőznie, amely megmondja a felhasználónak, hogy a program milyen adatokat vár el tőle. Például a vásárlás költségeinek kiszámítására szolgáló program töredéke így nézhet ki:

Writeln ("Adja meg az eredeti adatokat."); write ("A termék ára:"); readln (Sepa); write ("Mennyiség a kötegben:"); readln (Kol); write ("Kedvezmény:"); readln (Skidka);

Ha a billentyűzetről bevitt adatok típusa nem egyezik, vagy nem konvertálható olyan típusú változókra, amelyeknek a nevét az olvasási (readln) utasítás határozza meg, a program összeomlik (az olvasást követő utasításokat nem hajtják végre), és megjelenik egy üzenet a képernyőn a hibáról.

Téma: Bemenet kimenet. Olvass (Readln), írj (Writeln) állításokat. A legegyszerűbb lineáris programok.

Oldjuk meg a problémát úgy, hogy minden tettünket göndör zárójelben kommentáljuk. Emlékezzünk vissza, hogy a megjegyzést a számítógép nem érzékeli, de szükségünk van rá, hogy jobban megértsük a program működését.

Feladat ... Írjon programot, amely kitisztítja a képernyőt, és kiszámítja a felhasználó által megadott két szám szorzatát.

Proizv2 program;
Felhasználások
Crt; (Csatlakoztassa a Crt modult)
Var
szám1, (az első számot tartalmazó változó)
szám2, (a második számot tartalmazó változó)
rezult (változó, amely tartalmazza az eredményt)
: egész szám;
Kezdődik
ClrScr; (Az eljárást a képernyő törlésére használjuk a Crt modulból)
Write ("Írja be az első számot");
Readln (szám1);
(A felhasználó által megadott szám beolvasásra kerül a number1 változóba)
Write ("Írja be a második számot");
(Az aposztrófok közé írt karakterek megjelenítése)
Readln (szám2);
(A felhasználó által megadott szám beolvasásra kerül a number2 változóba)
eredmény: = szám1 * szám2;
(Keresse meg a bevitt számok szorzatát, és rendelje hozzá az eredmény változóhoz)
Write ("Számok szorzata", szám1, "és", szám2, "egyenlő", eredmény);
(Megjelenítünk egy sort, amely tartalmazza a probléma megoldását)
Olvasás; (Képernyő késleltetési eljárás)
Vége.

Annak érdekében, hogy jobban megértsük egy program működését, gépeljük be a számítógépbe, és teszteljük a működését. Válaszolj a kérdésekre:

  • miért hívták a Proizv2 programot?
  • Miért tette a Crt modult a Felhasználások szakaszba?
  • mi a célja a szám1, szám2, eredmény változóknak?
  • milyen típusúak ezek a változók? mit jelent?
  • Ha a szám1 és a szám2 változókat az 5, illetve a 7 értékhez rendeljük, akkor melyik sort állítja elő a számítógép az utolsó írási eljárás végrehajtásakor? Írd le egy füzetbe.
  • mely sorokban kéri a felhasználó a változók értékeit?
  • melyik sorban történik a számok szorzása?
  • mit csinál a hozzárendelési operátor ebben a programban?

Gyakorlat ... Módosítsa a programot úgy, hogy egy másik változót kérjen a felhasználótól, és a három szám szorzatának eredményét adja ki.

Írjon és írjon kimutatásokat

A Write és WriteLn operátorokat már használtuk, de részletesebben meg kell térnünk ezekre az operátorokra.

Írás (angolul írni) - operátor, amely az információk megjelenítésére szolgál a képernyőn. A WriteLn operátor ugyanezt a műveletet hajtja végre, de mivel rendelkezik Ln véggel (sor - angol sor, sor), majd a kívánt üzenet képernyőn való megjelenítése után a kurzort a következő sorra is áthelyezi.

Általános forma:
Írás (kifejezések listája)
WriteLn (kifejezések listája)

A Write és WriteLn eljárásokat nemcsak az eredmény megjelenítésére, hanem különféle üzenetek vagy kérések megjelenítésére is használják. Ez lehetővé teszi, hogy párbeszédet folytasson a felhasználóval, mondja meg neki, mikor kell értékeket megadnia, mikor kap eredményt, mikor hibázott stb.

Például az WriteLn (‘Talált szám’, a) eljárás végrehajtásakor az aposztrófok közé sor kerül nyomtatásra, majd megjelenik az a változó értéke.

Az WriteLn utasítás paraméterek nélkül is használható. Ebben az esetben a szóközökből álló sor kerül nyomtatásra, és a kurzor egy másik sorra kerül. Néha szükségünk van rá az adatbevitel jobb megértése érdekében.

Olvasás és ReadLn operátorok

Ne feledjük, hogy a számítógép fő célja az emberi munka megmentése. Ezért szükség van arra, hogy lehetőséget biztosítsunk, miután egyszer megírtuk a programot, és azt újra fel kell használni, minden alkalommal különböző adatokat beírva. A nyelv ezen rugalmasságát a Read és ReadLn utasítások biztosítják. Ezek a kezelők a billentyűzetről írják be az információkat.

Általános forma:
Olvasás (változó, változó ...)
ReadLn (változó, változó ...)

Az Olvasási eljárás elvárja a zárójelben megadott értékek megadását. A bevitt adatokat szóközzel kell elválasztani egymástól. Az értékek hozzárendelése sorra történik.

Például, ha az 53 és X értékeket adja meg, akkor az Read (a, b) utasítás végrehajtásakor az 53 -as szám az a változóhoz, az X betű pedig az X változóhoz lesz hozzárendelve. a vészhelyzet elkerülése érdekében helyesen kell meghatározni az adattípust a Var; esetünkben a: egész és b: char.

A Read és ReadLn operátorok használatában nincs különösebb különbség az olvasásban és az írásban. Gyakran a paraméterek nélküli ReadLn eljárást használják a program végén a késleltetéshez: a gomb megnyomása előtt a program végrehajtásának eredménye a képernyőn marad. Ez nagyon hasznos az eredmények elemzéséhez.

jegyzet ... Amikor beállítja a képernyő késleltetését, figyeljen az előző bejegyzésre. Ha az adatokat az Olvasási eljárás kérte, nem késik.

Oldjunk meg egy problémát, amelyben megvizsgáljuk ezen eljárások minden lehetséges felhasználását.

Feladat ... Keresse meg három szám átlagát.

jegyzet ... Több szám átlagának megtalálásához adja hozzá ezeket a számokat, és ossza el az összeget a számok számával.

Írja be a feladat szövegét, és gondosan mérlegelje az egyes sorokat. A Srednee program neve tükrözi a feladat tartalmát. Egyébként egyetértünk abban, hogy a program neve és az ezt a programot tartalmazó fájl neve megegyezik. Ezután következik a Crt modul csatlakoztatása. A Var szakaszban az Első, Második, Harmadik egész típusú változóként szerepel, a Sum pedig valós típusú. A kezelői rész a Crt modulban található szokásos ClrScr (Clear Screen) képernyőrutinmal kezdődik. Ezután az Write utasítással megjelenítjük az „Enter the first number” üzenetet, amely után a felhasználónak be kell írnia a számot.

Most a számítógépnek be kell olvasnia a beírt karaktereket, és be kell helyeznie őket az Első változóba, ez történik a következő ReadLn (Első) utasítás végrehajtásakor. Ezután az Write utasítás használatával további két szám értékét kérjük, és beolvassuk a második és harmadik változóba. Ezután kiszámítjuk az összegüket, és a kapott számot hozzárendeljük a Sum változóhoz. Az átlag megtalálásához most el kell osztani a kapott számot 3 -mal, és az eredményt valamilyen változóban tárolni.

Az eredmény mentéséhez egyáltalán nem szükséges másik változót deklarálni. A programunkhoz hasonlóan eloszthatja a Sum változó értékét 3 -mal, és újra hozzárendelheti az eredményt ugyanahhoz a Sum változóhoz. Most az írási eljárással megjelenítheti a képernyőn a számítások eredményét. És végül, az utolsó ReadLn rutin addig tartja a kimenetünket a képernyőn, amíg le nem nyom egy gombot.

Nyomja meg a gombokat +... Adja meg az 5, 7 és 12 változók értékeit, a következőket fogja látni a képernyőn:

Az 5, 7 és 12 átlaga 8,00

Nézze meg alaposan ezt a sort, és hasonlítsa össze a programunk eredményének megadásával. Még néhányszor tesztelje a programot a különböző változóértékekre.

Válasszon megoldandó problémát a tanárral az alábbi listából:

  1. Írjon be két a és b számot. A hozzárendelő operátorral cserélje ki értékeiket:
    a) egy köztes változó használatával (x: = a; a: = b; b: = x);
    b) közbenső változó használata nélkül (a: = a-b; b: = a + b; a: = b-a).
  2. Írjon olyan programot, amely egész számot, valós számot, tetszőleges karaktert és karakterláncot kér a felhasználótól, majd mindent egy sorba nyomtat.
  3. Jelenítse meg vezetéknevét, keresztnevét és utónevét, majd két sorral később - születési dátumát.
  4. Írjon programot az egyik alak csillaggal történő nyomtatására:
    a) karácsonyfák (több karácsonyfa);
    b) hópelyhek (több hópehely);
    c) ház. Például

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

  5. Készítse el névjegyét.


    * Ivanov Szergej *
    * Proletarskaya 74 négyzetméter 55 *
    * Telefon: 45-72-88 *
    *******************************

  6. Párbeszédet írhat a felhasználó és a számítógép között tetszőleges témában.
    Például egy gép két kérdést tesz fel: "Mi a neved?" hány éves vagy?"; miután beírta a nevet (Anton) és a számot (15) megjelenik a képernyőn „Igen ... 50 év múlva 65 éves lesz, és a neve nem Anton lesz, hanem Anton nagyapa”
  7. Kérjen két számot a felhasználótól, és jelenítse meg e számok összegének, különbségének, szorzatának és hányadosának eredményét teljes választ adva.
  8. Kérdezze meg a felhasználót két számtól, és jelenítse meg egy egész osztás eredményét és egy egész osztás fennmaradó részét táblázat formájában. Például az 5 -ös és a 3 -as szám bevitelénél a képernyőn a következő táblázatot kell megjeleníteni:

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

  9. Írjon egy programot, amely megkérdezi az állat nevét és számát, majd megjelenít egy olyan kifejezést, mint "A mókus megeszi a 10 gombát" (amikor beírja a "mókus" szót és a 10 -es számot).
  10. Szervezzen párbeszédet az eladó (számítógép) és a vevő (felhasználó) között, amikor bármilyen terméket vásárol a következő séma szerint: termék felajánlása meghatározott áron, a vásárolt termék összegének kérése, a pénzösszeg meghatározása és megjelenítése a vevőnek fizetnie kell a vásárlásért.