Téma: Vstup - výstup. Operátoři čtení (čtení), zápis (zápis)

Předmět: Vstup výstup. Operátoři Čtení (Readln), Zápis (Writeln). Nejjednodušší lineární programy.

Vyřešme problém tím, že se vyjádříme ke každé naší akci v složené závorky. Připomeňme, že komentář počítač nevnímá, ale 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žití
Crt (Připojit 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; (Používáme postup 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");
(Zobrazujeme znaky napsané mezi apostrofy)
Readln(číslo2);
(Číslo zadané uživatelem se načte do proměnné number2)
vysledek:= cislo1 * cislo2;
(Najdeme součin zadaných čísel a přiřadíme jej do proměnné rezult)
Write("Součin čísel ", číslo1, " a ", číslo2, " rovná se ", výsledek);
(Zobrazíme řádek obsahující odpověď na problém)
Readln; (postup zpoždění obrazovky)
Konec.

Chcete-li lépe porozumět fungování programu, zadejte jej do počítače a vyzkoušejte jeho fungování. Odpověz na otázky:

  • proč se program jmenoval 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íte hodnoty 5 a 7, jaký řádek pak počítač vytvoří při provádění poslední procedury Write? Zapište si to do sešitu.
  • Na jakých řádcích je uživatel požádán o hodnoty proměnných?
  • Na které přímce dochází k násobení čísel?
  • 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.

Operátory Write a WriteLn

Operátory Write a WriteLn jsme již použili, ale musíme se blíže podívat na pravidla používání těchto operátorů.

Write (anglicky psát) - operátor, na který je zvyklý informační výstup na obrazovku. Operátor WriteLn provede stejnou akci, ale jelikož má i koncovku Ln (řádek), 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 se používají nejen k výstupu výsledku, ale také k výstupu různých zpráv nebo dotazů. To vám umožní vést dialog s uživatelem, informovat ho, kdy potřebuje zadat hodnoty, kdy obdrží 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 vytiskne hodnota proměnné a.

Operátor 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.

Operátory Read a ReadLn

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

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

Po provedení procedury Read se očekává zadání hodnot uvedených v závorkách. Zadávané údaje musí být od sebe odděleny mezerami. Postupně probíhá přiřazení hodnot.

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

Při čtení a zápisu nejsou žádné zvláštní rozdíly v použití operátorů Read a ReadLn. Procedura ReadLn bez parametrů se často používá na konci programu se zpožděním: do stisku klávesy 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 na tom, že název programu a název souboru, který tento program obsahuje, se shodují. Následuje připojení modulu Crt. Část Var popisuje First, Second, Third jako proměnné celočíselného typu a Sum jako reálný typ. Operátorská část začíná standardní procedurou ClrScr (Clear Screen), která se nachází v modulu Crt. Dále pomocí operátoru Write zobrazíme zprávu ‚Zadejte první číslo‘, po obdržení musí uživatel číslo zadat.

Nyní musí počítač přečíst zadané znaky a uložit je do proměnné First, to se stane při provádění dalšího příkazu ReadLn(First). Poté pomocí operátoru Write vyžádáme 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 uložit výsledek do nějaké proměnné.

Pro uložení výsledku není vůbec nutné popisovat další proměnnou. Hodnotu proměnné Součet můžete, stejně jako v našem programu, vydělit 3 a výsledek opět přiřadit stejné proměnné Součet. Nyní můžete výsledek výpočtů zobrazit na obrazovce pomocí procedury Write. A konečně poslední procedura ReadLn zpozdí náš výstup na obrazovce, dokud nestisknete klávesu.

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 jej s výsledným výstupním řádkem v našem programu. Otestujte program ještě několikrát na různé hodnoty proměnných.

Se svým učitelem vyberte z následujícího seznamu problémy, které chcete vyřešit:

  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ý se uživatele zeptá na celé číslo, reálné číslo, libovolný znak a řetězec, a pak vše vypíše na jeden řádek.
  3. Zobrazte své příjmení, jméno a patronymii a po dvou řádcích své datum narození.
  4. Napište program pro tisk jednoho z tvarů s hvězdami:
    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) například dům.

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

  5. Vytvořte si vlastní vizitku.


    * Ivanov Sergej *
    * Proletarskaya 74 čtverečních 55*
    * Telefon 45-72-88 *
    *******************************

  6. Vytvořte dialog mezi uživatelem a počítačem na libovolné téma.
    Automat 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í ve formě tabulky. 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“ (když zadáte slovo „veverka“ a číslo 10).
  10. Zorganizujte dialog mezi prodejcem (počítačem) a kupujícím (uživatelem) při nákupu jakéhokoli 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.
Číst A ReadLnčíst informace ze zařízení standardní vstup. V konzolových aplikacích může být tímto zařízením např. klávesnice (přesněji data zadávaná z klávesnice), v grafické aplikace- soubor na disku.

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

Procedury Read a ReadLn provádějí podobné akce. Hlavní rozdíl mezi nimi je následující: procedura ReadLn po dokončení vstupu provede posun řádku (a v případě souborů čte soubor řádek po řádku). A procedura Read čte data v řadě - bez posunu řá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 z nějakého důvodu procedura Read 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 si uvědomte, že pokud je uživatelem zadaná hodnota jiného typu 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říklad 3.14), program se zhroutí, protože proměnná x je typu celé číslo.

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

Li 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í specifikováno, předpokládá se, že čtení se provádí ze standardního vstupního zařízení.

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ý řádek- pro struny).

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ávisí na operační systém, pro DOS/Windows jsou to dva znaky - #10 a #13).

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

Pokud během 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. To lze provést 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 proto neukončí, dokud nestisknete klávesu ENTER, což vám umožní vidět výsledek programu. Samozřejmě v operačním systému

Stejně jako u operátorů výstupu informací jsou operátory read a reeadln operátory pro přístup k vestavěným postupy zadávání informací.

Operátory read (read) a readln, což pochází ze dvou anglická slovačtení a řádek se používají v programech k zadávání informací do paměti počítače a " čtení"hodnoty do proměnné.

Podívejme se na práci těchto operátorů a postupy zadávání informací.

Náš program má proceduru readln(a). Při spouštění programu se počítač setká s příkazem readln a čeká na vstup. Poté, co z klávesnice zadáme hodnotu proměnné a - 16, počítač tuto hodnotu přiřadí proměnné a, tzn. odešle jej do paměťového umístění s názvem a a bude pokračovat ve spouštění programu. Tento proces nazýváme" čtení"hodnoty do proměnné.

Procedury read a readln tedy „čtou“ hodnoty proměnných a přiřazují je k proměnným, které jsou do nich zapsány.

Takových proměnných může být několik, pak se zapisují těmito operátory oddělenými čárkami, například:

read(a, b, c, n, g, j, i), readln(e, f, k, p, d) atd.

Jaký je rozdíl mezi prací procedur read a readln?

Procedura čtení bude vyžadovat vstup nebo výstup informací na jednom řádku za sebou a procedura readln vám umožňuje zadávat a vydávat informace za sebou od začátku nového řádku.

Například:

V programu: write("Zadejte hodnoty a a b"); read(a, b);

write("Zadejte informace na jeden řádek");

Po provedení této části programu se na obrazovce zobrazí vše napsané v prvním příkazu zápisu, poté bude kurzor umístěn na stejném řádku a počítač bude čekat na zadání hodnot a a b. . Zadejte jejich hodnoty - 2 a 3, oddělte je mezerou nebo jinými slovy oddělte mezerou. Poté se na stejném řádku zobrazí informace zapsané v dalším příkazu write.

Na obrazovce:

Zadejte hodnoty a a b 2 3 Zadejte informace na jeden řádek

V programu:

writeln("Zadejte hodnoty a, b a c); readln(a, b, c);

writeln("Vstupní a výstupní informace od začátku řádku");

Na obrazovce:

Zadejte hodnoty a, b a c

Zadávání a výstup informací od začátku řádku

Aritmetické operace s celými čísly. Proměnné typu Integer. Skutečný typ

Jazyk Pascal používá celá čísla, která zahrnují všechna přirozená čísla vytvořená v procesu počítání objektů: 1, 2, 3, 4, 5, 6, ...; záporná čísla: ..., -6, -5, -4, -3, -2, -1 a číslo nula: 0. Celá čísla tvoří následující řadu:

6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, ...

Pascal umožňuje rozsah celých čísel od -32768 do 32767.

Proměnné, které přebírají celočíselné hodnoty, jsou zapsány v části popisu s uvedením typu celé číslo (integer).

Například: var a, b, c, a1, b34, nomb: integer;

Hodnoty jiného typu pro tyto proměnné ve stejném programu nelze přiřadit.

Aritmetické operace s celými čísly a celočíselnými proměnnými v Pascalu

Znak "_" znamená mezeru. Mezery mezi názvy proměnných a názvem operace (div) jsou povinné. (Odvozeno z anglického division - division).

Zbytek, když a je děleno b. a_mod_b

Myslím, že to bude zajímat mnoho lidí)))

čí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ě pokyny vypadají takto:

číst (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í instrukce pro čtení:

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

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

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

2 http://tissot.ua/ koupit náramkové hodinky koupit hodinky 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(Temperat);

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

Jediný příkaz čtení může načíst hodnoty více 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 zadejte řádek 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 je na řádku zadáno více čísel, než je proměnných uvedených v instrukci čtení, pak bude zbývající část řádku zpracována 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 provádění pokynů

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

a vstupní řetězec klávesnice

10 25 18

proměnné obdrží následující hodnoty: A = 10, B = 25. Přečtěte si instrukci (C); přiřadí proměnné c hodnotu 18.

Instrukce readln se od instrukce read liší tím, že po vybrání dalšího čísla z řetězce zadaného z klávesnice a jeho přiřazení poslední proměnné ze seznamu instrukce readin se zbytek řádku ztratí a další čtení, resp. instrukce čtení bude vyžadovat nový vstup.

Například v důsledku provedení instrukce

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

a zadáním řádku z klávesnice

10 25 18

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

Každé instrukci čtení nebo čtení by měla předcházet instrukce zápisu, která uživateli sdělí, 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 položky:");

Readln(Cena);

write("Množství v dávce:");

Readln(Kol);

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 příkazu read (readin), program spadne (neprovedou se instrukce následující po čtení) a na obrazovce se zobrazí chybová zpráva.

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

Proč Pascal četl a readln, jestliže read také překládá řádek, ačkoli teoreticky by neměl? a dostal nejlepší odpověď

Odpověď od Skipy _[guru]
readln - převezme hodnotu ze vstupní vyrovnávací paměti do parametru a vymaže celou vstupní vyrovnávací paměť klávesnice
a read - vezme hodnotu ze vstupního bufferu do parametru a nevymaže ji do bufferu, ale ponechá hodnotu!! !
Automatický posun řádku při psaní – 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ím bufferu 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);(zadáno uživatelem: 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 neexistuje automatická detekce typ 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 přílišného zmatku:
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 operátor 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 zadávání dat do LINE


Odpověď od VT-107 FIT[guru]
Tady byl Dmitry něčím zmaten, ale není to správné. A o zcela vyčištěném a nečištěném pufru a o bezpečnosti. Sali také odpověděl špatně. Neexistují žádné sloupce a řádky, úplně jiná pravidla.
Za prvé, tyto postupy nefungují pouze se vstupem z konzoly, 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, co následuje po těchto datech, zůstane nezměněno.
Při čtení řádku se přečte vše až do nového řádku nebo konce 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 char, pak v závislosti na nastavení může být znak nového řádku přečten jako char(26)
Při čtení čísel se přeskakují všechny mezery, tabulátory a zalomení řádků. A další čtení začne se symbolem, který následuje za přečteným číslem. Opět mohou být přeskočeny nepotřebné znaky.
procedure ReadLn([ var F: Text; ] V1 [, V2, ..Vn ]);
čte z proudu V1, Vn (to znamená, že to funguje jako čtení) a pak přeskakuje všechny znaky až do nového řádku včetně. Všechny znaky po zalomení řádku zůstanou nezměněny.
Přechod na nový řádek nastane, protože v konzole stisknete klávesu Enter.
O bezpečnosti je to přitažené za vlasy. Jedná se o funkce s různými účely. Jakékoli nesprávné použití není bezpečné, jakékoli správné použití je odpovídajícím způsobem bezpečné.