Příkazy vstupu dat ReadLn a Read. Postupy Read and ReadLn Co dělá readln v pascalu

číst a ReadLnčíst informace ze standardního vstupního zařízení. V konzolových aplikacích může být tímto zařízením například klávesnice (přesněji data zadávaná z klávesnice), v grafických aplikacích soubor na disku.

To znamená, že tyto postupy jsou „antipody“ - provádějí opačné akce.

Procedury Read a ReadLn provádějí podobné akce. Hlavní rozdíl mezi těmito dvěma je v tom, že rutina ReadLn provádí posun řádku po dokončení vstupu (a v případě souborů čte soubor řádek po řádku). A procedura Read čte data postupně - bez nového řádku.

POZNÁMKA:

V Turbo Pascalu si to nepamatuji (možná jsem jen zapomněl), ale vstup z klávesnice lze provádět pouze pomocí procedury ReadLn a procedura Read z nějakého důvodu nefunguje.

Syntaxe výstupu konzole:

postup Přečíst(Args: Argumenty);

Syntaxe pro výstup do souboru:

postupČíst( var F: text; Args: Argumenty);

Argumenty ( Argumenty) se může lišit. Pokud je použito více proměnných, jsou uvedeny oddělené čárkami. Například:

Var x, y: celé číslo; z:skutecne; str:string; begin WriteLn("Zadejte tři celá čísla oddělená mezerou:"); ReadLn(x, y, z); WriteLn("Zadali jste: ", x, ", ", y, ", ", z:0:2); ReadLn(str); WriteLn(str + str); ReadLn; konec.

Jak již bylo zmíněno, při zadávání z konzole tyto proměnné mohou být odlišné typy. Ale na rozdíl od procedur Write / WriteLn není povoleno (a to je logické))).

DŮLEŽITÉ!
Při zadávání dat je třeba vzít v úvahu, že pokud má uživatel zadaná hodnota jiný typ než typ proměnné, do které se tato hodnota zadává, dojde k chybě za běhu. Pokud například ve výše uvedeném příkladu uživatel zadá jako první číslo skutečnou hodnotu (např. 3.14), pak program spadne, protože proměnná x má typ celé číslo.

Při čtení ze souboru můžete pracovat jak se psanými, tak textovými soubory.

Pokud F(viz syntaxe) je typovaný soubor, pak proměnné předané jako parametry (Args) musí mít stejný typ, jaký je zadán pro soubor F. Soubory bez typu nejsou povoleny. Pokud je parametr F není zadáno, předpokládá se, že čtení pochází ze standardního vstupu.

Pokud soubor F má typ Text, pak proměnné musí být typu , nebo .

Pokud při čtení souboru nejsou k dispozici žádná data pro čtení, pak se do proměnné F vrátí prázdná hodnota (0 - pro , prázdný řetězec - pro řetězce).

V případě použití procedury ReadLn, tedy při čtení dat řádek po řádku, je konec řádku označen určitým sledem znaků (které - záleží na operační systém, pro DOS/Windows jsou to dva znaky - #10 a #13).

Značka konce řádku není součástí čteného řádku a je ignorována.

Pokud během provádění procedury Read/ReadLn dojde k chybě, vygeneruje se chyba za běhu. Toto chování není vždy přijatelné (například při čtení souboru). Proto je v některých případech generování chyb zakázáno. Můžete to udělat pomocí .

POZNÁMKA:

V různých programech pro ladění a školení se procedura ReadLn často používá k zabránění automatickému ukončení konzolové aplikace po spuštění. Chcete-li to provést, na konci programu jednoduše napište (jako v příkladu výše):

Tedy jen název procedury bez parametrů. V tomto případě bude program čekat na stisknutí klávesy ENTER. Program se tedy neskončí, dokud nestisknete klávesu ENTER, což vám umožní vidět výsledek programu. Samozřejmě v operačním systému

Myslím, že to bude hodně lidí zajímat

číst a číst pokyny

Instrukce čtení je určena pro zadávání proměnných hodnot (počátečních dat) z klávesnice. Obecně instrukce vypadá takto:

read(Proměnná1, Proměnná2, ... ProměnnáN)

kde proměnná je název proměnné, jejíž hodnota musí být zadána z klávesnice během provádění programu.

Zde jsou příklady psaní příkazu read:

číst); číst(Cena, Kol);

Po provedení příkazu čtení se stane následující:

1. Program pozastaví svou práci a čeká, dokud nebudou na klávesnici napsána požadovaná data a stisknuto tlačítko .

2 http://tissot.ua/ koupit hodinky a koupit Kyjev. . Po stisknutí klávesy zadaná hodnota je přiřazena proměnné, jejíž název je uveden ve výpisu.

Například v důsledku provedení instrukce

read(Teplota);

a zadáním řádku 21 na klávesnici bude hodnota proměnné Temperat číslo 21.

Jeden příkaz čtení umožňuje získat hodnoty několika proměnných. V tomto případě je třeba zadaná čísla napsat na jeden řádek a oddělit je mezerami. Pokud je například typ proměnných a, b a c reálný, pak v důsledku provedení instrukce read(a, b, c); a zadání řádku z klávesnice:

4.5 23 0.17

proměnné budou mít následující hodnoty:

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

Pokud řetězec obsahuje více čísel, než je proměnných zadaných v instrukci čtení, pak bude zbytek řetězce zpracován následující instrukcí čtení http://crystal.lviv.ua crystal crystal. . https://mainvisa.com.ua foto pozvánka na Ukrajinu pro cizí občany. . Například v důsledku provedení pokynů

read(A, B); read(C);

a vstup z klávesnice

10 25 18

proměnné získají následující hodnoty: A=10, B=25 Instrukce read (C); přiřadí proměnné c hodnotu 18.

Instrukce readln se liší od instrukce read v tom, že po extrakci dalšího čísla z řetězce zadaného na klávesnici a jeho přiřazení k poslední proměnné v seznamu instrukce readin se zbytek řetězce ztratí a další instrukce read nebo readin bude vyžadovat nový vstup.

Například v důsledku provedení instrukce

readin(A, B); read(C);

a psaní z klávesnice

10 25 18

proměnné získají následující hodnoty: A=10, B=25 Poté bude program čekat na zadání nového čísla, aby je mohl přiřadit proměnné c.

Před každou instrukci čtení nebo čtení byste měli umístit instrukci zápisu, abyste uživateli řekli, jaká data od něj program očekává. Fragment programu pro výpočet ceny nákupu může například vypadat takto:

writeln("Zadejte počáteční data.");

Napište("Cena produktu:");

Readln(Cena);

write("Množství šarže:");

readln(col);

napište("Sleva:");

readln(Skidka);

Pokud se typ dat zadaných z klávesnice neshoduje nebo je nelze převést variabilní typ jejichž jména jsou uvedena v instrukci read (readin), program spadne (instrukce následující po čtení se neprovedou) a na obrazovce se zobrazí chybová zpráva.

Autor Alexander položil otázku v Jiné jazyky a technologie

Proč Pascal má read a readln if read také přeloží řádek, i když teoreticky by neměl? a dostal nejlepší odpověď

Odpověď od Skipy _[guru]
readln - převezme hodnotu ze vstupní vyrovnávací paměti do parametru vymaže celou vstupní vyrovnávací paměť klávesnice
a read - převezme hodnotu ze vstupního bufferu do parametru a nevymaže ji do bufferu, ale ponechá hodnotu!! !
posun řádku při zadávání automaticky - všude
tj. readln je bezpečný vstup
čtení - nebezpečný vstup
příklad:
var
a,b: celé číslo;
začít
číst); (zadáno uživatelem: 4, 5 a = 4)
(Ve vstupní vyrovnávací paměti je číslo 5 !!}
read(b); (zde zadal číslo: 6, ale b = 5)
(číslo 6 zůstává ve vstupní vyrovnávací paměti!!}
---
readln(a);(uživatel zadal: 4, 5; a = 4)
(vstupní vyrovnávací paměť je čistá!!}
readln(a);(uživatel zadal číslo 6 a b = 6)
(vstupní vyrovnávací paměť je čistá!!}
readln(b);
konec.
Naopak nedochází k automatickému určení typu vstupní hodnoty, vše je určeno symboly ve specifikátoru formátu.

Odpověď od Yoali-Mali[guru]
Dá se to vysvětlit jednodušeji, bez větších problémů:
Po provedení procedury read se načte hodnota dalších dat ze stejného řádku a při provedení procedury readln se načte hodnota dalších dat z nového řádku.
Proto příkaz Readln (b1,b2,...bn); poskytuje zadávání dat do SLOUPCE.
Po zadání každé proměnné b1, b2, ..bn kurzor přeskočí na začátek nového řádku.
Operátor Read(b1,b2,...bn); poskytuje vstup dat do STRING


Odpověď od BT-107 FIT[guru]
Tady se něco Dmitrije rozbilo, ale není to pravda. A o zcela vyčištěné a nevyčištěné vyrovnávací paměti a o bezpečnosti. Sally také odpověděla špatně. Nejsou tam žádné sloupce a čáry, úplně jiná pravidla.
Za prvé, tyto rutiny se nezabývají pouze vstupem z konzole, takže jsou zapotřebí dvě funkce.
procedura Read(F, V1 [, V2,...Vn ]);
načte všechny V1..Vn ze streamu (přesně n parametrů), všechna načtená data budou smazána. Vše po těchto datech zůstane nezměněno.
Při čtení řádku se přečte vše až po znak nového řádku nebo konec souboru. Následná volání ke čtení vrátí prázdný řetězec. A znak nového řádku nebude ze streamu odstraněn.
Pokud čtete znak, pak v závislosti na nastavení lze znak nového řádku číst jako char(26)
Při čtení čísel se přeskakují všechny mezery, tabulátory, zalomení řádků. A další čtení začne znakem následujícím za přečteným číslem. Opět lze přeskočit nepotřebné znaky.
procedure ReadLn([ var F: Text; ] V1 [, V2, ..Vn ]);
čte z proudu V1, Vn (tj. funguje jako čtení) a poté přeskakuje všechny znaky až po nový řádek včetně. Všechny znaky po zalomení řádku zůstanou nezměněny.
Jít do nový řádek provedené, protože jste v konzole stisknuli Enter.
O bezpečnosti přitažené za vlasy. Jedná se o funkce s různými účely. Jakékoli jejich nesprávné použití není bezpečné, jakékoli správné použití je odpovídajícím způsobem bezpečné.

Instrukce čtení je určena pro zadávání proměnných hodnot (počátečních dat) z klávesnice. Obecně instrukce vypadá takto:

read (Proměnná!, Proměnná2, ... ProměnnáU kde proměnná je název proměnné, jejíž hodnota musí být zadána z klávesnice během provádění programu.

Zde jsou příklady psaní příkazu read:

Číst); číst(Cena, Kol);

Po provedení příkazu čtení se stane následující:

1. Program pozastaví svou práci a čeká, dokud nebudou na klávesnici napsána požadovaná data a stisknuto tlačítko .

2. Po stisknutí tlačítka zadaná hodnota je přiřazena proměnné, jejíž název je uveden ve výpisu.

Například v důsledku provedení instrukce

Číst (Temperat);

a zadáním řádku 21 na klávesnici bude hodnota proměnné Tempérât číslo 21.

Jeden příkaz čtení umožňuje získat hodnoty několika proměnných. V tomto případě je třeba zadaná čísla napsat na jeden řádek a oddělit je mezerami. Pokud je například typ proměnných a, b a c reálný, pak v důsledku provedení instrukce přečteme (a, b, c); a zadání řádku z klávesnice:

4.5 23 0.17

proměnné budou mít následující hodnoty: a = 4,5; b = 23, o; c = 0,17.

Pokud je na řádku zadáno více čísel, než je nastaveno proměnných v příkazu read, bude zbytek řádku zpracován dalším příkazem read. Například v důsledku provedení pokynů:

Read(a, b); read(C);

a vstup z klávesnice

10 25 18

proměnné získají následující hodnoty: a = 10, b = 25. Instrukce read (C); přiřadí proměnné c hodnotu 18.

Instrukce readln se liší od instrukce read v tom, že po extrakci dalšího čísla z řetězce zadaného na klávesnici a jeho přiřazení k poslední proměnné v seznamu instrukce readln se zbytek řetězce ztratí a další instrukce read nebo readln bude vyžadovat nový vstup.

Například v důsledku provedení příkazu:

readln(a, b); read(C);

a psaní z klávesnice

10 25 18

proměnné získají tyto hodnoty: a = u, b = 25. Poté program počká na zadání nového čísla, aby jej přiřadil proměnné c.

Před každou instrukci čtení nebo čtení byste měli umístit instrukci zápisu, abyste uživateli řekli, jaká data od něj program očekává. Fragment programu pro výpočet ceny nákupu může například vypadat takto:

Writeln("Zadejte počáteční data."); write("Cena produktu:"); readln(sepa); write("Množství šarže:"); readln(col); napište("Sleva:"); readln(Skidka);

Pokud se typ dat zadávaných z klávesnice neshoduje nebo je nelze přetypovat na typ proměnných, jejichž názvy jsou uvedeny v instrukci read (readln), program se zhroutí (instrukce následující po čtení se neprovedou) a na obrazovce se zobrazí zpráva.

Téma: Vstup výstup. Operátoři Čtení (Readln), Zápis (Writeln). Nejjednodušší lineární programy.

Problém řešíme tím, že komentujeme každou naši akci v složené závorky. Připomeňme, že komentář počítač nevnímá a potřebujeme jej, abychom lépe porozuměli tomu, jak program funguje.

Úkol . Napište program, který vyčistí obrazovku a vypočítá součin dvou čísel zadaných uživatelem.

ProgramProizv2;
používá
Crt;(Zahrnout modul Crt)
Var
číslo1, (proměnná, která bude obsahovat první číslo)
číslo2, (proměnná, která bude obsahovat druhé číslo)
výsledek (proměnná, která bude obsahovat výsledek)
: celé číslo;
Začít
ClrScr; (Pomocí rutiny pro vymazání obrazovky z modulu Crt)
Napište("Zadejte první číslo");
readln(číslo1);
(Číslo zadané uživatelem se načte do proměnné číslo1)
Napište("Zadejte druhé číslo");
(Na obrazovce zobrazujeme znaky napsané mezi apostrofy)
readln(číslo2);
(Číslo zadané uživatelem se načte do proměnné číslo2)
vysledek:= cislo1 * cislo2;
(Najdeme součin zadaných čísel a výsledek přiřadíme k proměnné)
Write("Součin čísel ", číslo1, " a ", číslo2, "je rovno", výsledek);
(Zobrazíme řádek obsahující odpověď na problém)
Readln;(Procedura zpoždění obrazovky)
konec.

Chcete-li lépe porozumět tomu, jak program funguje, zadejte jej do počítače a vyzkoušejte. Odpověz na otázky:

  • proč se program jmenuje Proizv2?
  • Proč byl modul Crt umístěn do sekce Použití?
  • k čemu slouží proměnné číslo1, číslo2, výsledek?
  • jaký typ jsou tyto proměnné? co to znamená?
  • Pokud proměnným number1 a number2 přiřadíme hodnoty 5 a 7, jaký řádek vytvoří počítač při provádění poslední procedury Write? Zapište si to do sešitu.
  • ve kterých řádcích je uživatel požádán o hodnoty proměnných?
  • Na kterém řádku se násobí čísla?
  • co dělá operátor přiřazení v tomto programu?

Cvičení . Upravte program tak, aby uživatele vyzval k zadání jiné proměnné a vytiskl výsledek součinu tří čísel.

Výpisy Write a WriteLn

Operátory Write a WriteLn jsme již použili, ale musíme dopracovat pravidla pro používání těchto operátorů.

Write (anglicky write) - operátor, který se používá k zobrazení informací na obrazovce. Operátor WriteLn provede stejnou akci, ale jelikož má i koncovku Ln (řádek - anglicky line, line), po zobrazení požadované zprávy na obrazovce navíc přesune kurzor na další řádek.

Obecná forma:
Napište (seznam výrazů)
WriteLn (seznam výrazů)

Procedury Write a WriteLn slouží nejen k zobrazení výsledku, ale také k zobrazení různých zpráv nebo dotazů. To vám umožní vést dialog s uživatelem, říct mu, kdy potřebuje zadat hodnoty, kdy dostane výsledek, kdy udělal chybu atd.

Například při provádění procedury WriteLn ('Nalezené číslo', a) se vytiskne řádek uzavřený v apostrofech a poté se zobrazí hodnota proměnné a.

Příkaz WriteLn lze použít i bez parametrů. V tomto případě se vytiskne řádek složený z mezer a kurzor se přesune na jiný řádek. Někdy to potřebujeme pro lepší vnímání zadávaných dat.

Výpisy Read a ReadLn

Připomeňme, že hlavním účelem počítačů je šetřit lidskou práci. Proto je nutné poskytnout možnost po napsání programu jej opakovaně používat, pokaždé zadávat jiná data. Tuto flexibilitu jazyka poskytují příkazy Read a ReadLn. Tyto operátory zadávají informace z klávesnice.

Obecná forma:
Číst (proměnná, proměnná...)
ReadLn(proměnná, proměnná...)

Při provádění procedury Read se očekávají hodnoty uvedené v závorkách. Vstupní data musí být od sebe oddělena mezerami. Přiřazování hodnot jde střídavě.

Pokud jsou například zadány hodnoty 53 a X, pak při provedení příkazu Read (a, b) bude proměnné a přiřazeno číslo 53 a proměnné X bude přiřazeno písmeno X. upozorňujeme, že abyste se vyhnuli nouzové situaci, musíte správně určit typ dat v sekci Var; v našem případě a:integer a b:char.

Neexistují žádné zvláštní rozdíly mezi čtením a zápisem v použití příkazů Read a ReadLn. Procedura ReadLn bez parametrů se často používá na konci programu ke zpoždění: dokud není stisknuta klávesa výsledek provádění programu zůstává na obrazovce. To je velmi užitečné pro analýzu výsledků.

Poznámka . Při nastavování zpoždění obrazovky věnujte pozornost předchozímu vstupu. Pokud byla data požadována procedurou Read, nedojde k žádné prodlevě.

Pojďme vyřešit problém, ve kterém zvážíme všechna možná použití těchto postupů.

Úkol . Najděte průměr tří čísel.

Poznámka . Chcete-li zjistit průměr několika čísel, musíte tato čísla sečíst a vydělit součet počtem těchto čísel.

Napište text problému a pečlivě zvažte každý řádek. Název programu Srednee odráží obsah úkolu. Mimochodem, shodneme se, že název programu a název souboru, který tento program obsahuje, jsou stejné. Následuje připojení modulu Crt. Část Var popisuje First, Second, Third jako proměnné celočíselného typu a Sum jako skutečný typ. Sekce operátora začíná standardní postup vymazání obrazovky ClrScr (Clear Screen), která se nachází v modulu Crt. Dále pomocí příkazu Write zobrazíme na obrazovce zprávu ‚Zadejte první číslo‘, po jejím přijetí musí uživatel zadat číslo.

Počítač nyní musí přečíst zadané znaky a uložit je do proměnné First, k tomu dojde při provedení dalšího příkazu ReadLn(First). Poté pomocí příkazu Write požádáme o hodnoty dalších dvou čísel a načteme je do druhé a třetí proměnné. Poté spočítáme jejich součet a výsledné číslo přiřadíme do proměnné Součet. Pro zjištění průměru je nyní potřeba výsledné číslo vydělit 3 a výsledek uložit do nějaké proměnné.

Pro uložení výsledku není nutné deklarovat další proměnnou. Je možné, jako v našem programu, vydělit hodnotu proměnné Suma 3 a výsledek opět přiřadit stejné proměnné Suma. Nyní můžete výsledek výpočtu zobrazit na obrazovce pomocí procedury Write. A konečně poslední procedura ReadLn zpozdí náš výstup na obrazovce, dokud není stisknuta klávesa.

Stiskněte tlačítka +. Zadejte hodnoty proměnných 5, 7 a 12, na obrazovce uvidíte následující:

Průměr 5, 7 a 12 je 8,00

Podívejte se pozorně na tento řádek a porovnejte s výstupním řádkem výsledku v našem programu. Otestujte program ještě několikrát na jiné hodnoty proměnných.

Vyberte spolu s učitelem úkoly, které chcete vyřešit, z následujícího seznamu:

  1. Zadejte dvě čísla a a b. K výměně jejich hodnot použijte operátor přiřazení:
    a) použití přechodné proměnné (x:=a; a:=b; b:=x);
    b) bez použití meziproměnné (a:=a-b; b:=a+b; a:=b-a).
  2. Napište program, který uživatele vyzve k zadání celého čísla, reálného čísla, libovolného znaku a řetězce, a poté je všechny vypíše na jeden řádek.
  3. Zobrazte své příjmení, jméno a patronymii a o dva řádky později své datum narození.
  4. Napište program pro tisk jednoho z obrázků s hvězdičkami:
    a) vánoční stromky (několik vánočních stromků);
    b) sněhové vločky (několik sněhových vloček);
    c) dům, např.

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

  5. Sestavte si vizitku.


    * Ivanov Sergej *
    * Proletářský 74 čtverečních. 55*
    * Telefon 45-72-88 *
    *******************************

  6. Vytvořte dialog mezi uživatelem a počítačem na libovolné téma.
    Stroj se například zeptá na dvě otázky „Jak se jmenujete?“ Kolik je Vám let?"; po zadání jména (Anton) a čísla (15) se zobrazí „Ano ... Za 50 let vám již bude 65 let a nebudete se jmenovat Anton, ale dědeček Anton“
  7. Požádejte uživatele o dvě čísla a zobrazte výsledek součtu, rozdílu, součinu a podílu těchto čísel jako úplnou odpověď.
  8. Požádejte uživatele o dvě čísla a zobrazte výsledek celočíselného dělení a zbytek celočíselného dělení jako tabulku. Například při zadávání čísel 5 a 3 by se na obrazovce měla objevit následující tabulka:

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

  9. Napište program, který se zeptá na jméno zvířete a číslo, a poté zobrazí frázi jako „Veverka sežere 10 hub“ (při zadání slova „veverka“ a čísla 10).
  10. Zorganizujte dialog mezi prodejcem (počítačem) a kupujícím (uživatelem) při nákupu produktu podle následujícího schématu: nabídka produktu za určitou cenu, požadavek na množství nakupovaného produktu, určení a zobrazení množství peněz, které kupující musí za nákup zaplatit.