Operatori za unos podataka ReadLn i Read. Čitanje i čitanje rutina Šta readln radi u pascalu

Read i ReadLnčita informacije sa standardnog ulaznog uređaja. U aplikacijama za konzole ovaj uređaj može biti, na primjer, tastatura (tačnije, podaci uneseni sa tastature), u grafičkim aplikacijama, datoteka na disku.

Odnosno, ove procedure su "antipodi" - izvode suprotne radnje.

Procedure Read i ReadLn izvode slične radnje. Glavna razlika između njih je sljedeća: postupak ReadLn, nakon dovršetka unosa, izvodi unos redaka (a u slučaju datoteka čita datoteku po red). Postupak čitanja čita podatke redom - bez unosa redaka.

BILJEŠKA:

U Turbo Pascalu se toga ne sjećam (možda sam samo zaboravio), ali unos s tipkovnice može se izvesti samo pomoću ReadLn procedure, a postupak Read iz nekog razloga ne funkcionira.

Sintaksa za izlaz konzole:

procedura Pročitajte (Args: Argumenti);

Sintaksa za izlaz u datoteku:

procedura Pročitajte ( var F: Tekst; Args: Argumenti);

Argumenti ( Arguments) mogu biti različiti. Ako se koristi nekoliko varijabli, one se navode odvojene zarezima. Na primjer:

Var x, y: cijeli broj; z: pravi; str: string; begin WriteLn ("Unesite tri cijela broja odvojena razmakom:"); ReadLn (x, y, z); WriteLn ("Uneli ste:", x, ",", y, ",", z: 0: 2); ReadLn (str); WriteLn (str + str); ReadLn; kraj.

Kao što je već spomenuto, kada se otkucaju s konzole, ove varijable mogu biti različitih tipova. Ali, za razliku od procedura Write / WriteLn, nije dozvoljeno koristiti (i to je logično))).

BITAN!
Prilikom unosa podataka treba imati na umu da ako vrijednost koju je unijeo korisnik ima tip koji se razlikuje od tipa varijable u koju se ta vrijednost unosi, tada će doći do greške u izvršavanju. Na primjer, ako u gornjem primjeru korisnik unese stvarnu vrijednost (kao što je 3.14) kao prvi broj, program će se srušiti, jer varijabla x ima cijeli broj.

Prilikom čitanja iz datoteke možete raditi i s otkucanim i s tekstualnim datotekama.

Ako F(vidi sintaksu) je otkucana datoteka, tada varijable proslijeđene kao parametri (argumenti) moraju imati isti tip koji je naveden za datoteku F... Netipizirane datoteke nisu dozvoljene. Ako je parametar F nije navedeno, tada se pretpostavlja da je očitavanje sa standardnog ulaza.

Ako je datoteka F je tipa Text, tada varijable moraju biti tipa, ili.

Ako prilikom čitanja datoteke nema dostupnih podataka za čitanje, tada se prazna vrijednost vraća u varijablu F (0 - za, prazan niz - za nizove).

U slučaju korištenja postupka ReadLn, odnosno prilikom čitanja podataka red po red, kraj retka označen je određenim nizom znakova (koji točno ovisi o operativnom sistemu, za DOS / Windows to su dva znakovi - # 10 i # 13).

Marker kraja linije nije dio linije za čitanje i zanemaruje se.

Ako dođe do greške tijekom izvođenja procedure Read / ReadLn, generira se greška u vrijeme izvođenja. Ovo ponašanje nije uvijek prihvatljivo (na primjer, dok čitate datoteku). Stoga je u nekim slučajevima generiranje grešaka onemogućeno. To možete učiniti pomoću.

BILJEŠKA:

Rutina ReadLn često se koristi u raznim programima za otklanjanje grešaka i vodičima kako bi se spriječilo automatsko zatvaranje aplikacije konzole nakon izvršavanja. Da biste to učinili, na kraju programa jednostavno napišite (kao u gornjem primjeru):

Odnosno, samo naziv procedure bez parametara. U tom slučaju program će pričekati pritiskanje tipke ENTER. Stoga se program neće prekinuti sve dok se ne pritisne tipka ENTER, a to će vam omogućiti da vidite rezultat programa. Naravno, u operativnom sistemu

Mislim da će to mnoge zanimati)))

Čitajte i čitajte izjave

Uputstvo za čitanje je namenjeno za unos vrednosti promenljivih (početnih podataka) sa tastature. Općenito, upute izgledaju ovako:

čitanje (Varijabla1, Varijabla2, ... VarijablaN)

gdje je varijabla ime varijable čija se vrijednost mora unijeti s tipkovnice tijekom izvođenja programa.

Evo nekoliko primjera pisanja pročitane izjave:

pročitati (a); čitati (Cena, Kol);

Kada se naredba read izvrši, događa se sljedeće:

1. Program pauzira svoj rad i čeka da se potrebni podaci ukucaju na tastaturu i pritisne taster .

2 http://tissot.ua/ kupiti sat kupiti sat kiev. ... Nakon pritiska na taster unesena vrijednost se dodjeljuje varijabli imenovanoj u izrazu.

Na primjer, kao rezultat izvršavanja instrukcije

čitanje (Temperat);

i ulaskom u red 21 s tipkovnice, vrijednost varijable Temperat bit će broj 21.

Jedna naredba za čitanje omogućuje vam da dobijete vrijednosti nekoliko varijabli. U tom slučaju uneti brojevi moraju biti otkucani u jedan red i odvojeni razmacima. Na primjer, ako je tip varijabli a, b i c stvaran, kao rezultat izvršavanja instrukcije pročitajte (a, b, c); i niz za unos sa tastature:

4.5 23 0.17

varijable će imati sljedeće vrijednosti:

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

Ako redak sadrži više brojeva od varijabli navedenih u uputama za čitanje, tada će se ostatak retka obraditi sljedećim uputama za čitanje http://crystal.lviv.ua kristalni kristal. ... https://mainvisa.com.ua foto pozivnica u Ukrajinu za strane državljane. ... Na primjer, kao rezultat izvršavanja uputa

pročitati (A, B); pročitati (C);

i niz za unos sa tastature

10 25 18

varijable će dobiti sljedeće vrijednosti: A = 10, B = 25. Pročitajte instrukciju (C); dodijelit će varijablu s vrijednošću 18.

Uputstvo readln razlikuje se od uputstva za čitanje po tome što se nakon dodjeljivanja sljedećeg broja iz retka unesenog s tipkovnice i dodjeljivanja posljednjoj varijabli s popisa instrukcije za čitanje, ostatak retka gubi, a sljedeće čitanje ili instrukcija readin će zahtijevati novi unos.

Na primjer, kao rezultat izvršavanja instrukcije

čitanje (A, B); pročitati (C);

i upisivanje niza

10 25 18

varijable će dobiti sljedeće vrijednosti: A = 10, B = 25. Nakon toga program će čekati da se unese novi broj kako bi ga dodijelio varijabli c.

Svakoj instrukciji čitanja ili čitanja treba prethoditi uputstvo za pisanje koje će korisniku reći koje podatke program od njega očekuje. Na primjer, fragment programa za izračunavanje cijene kupovine može izgledati ovako:

writeln ("Unesite početne podatke.");

Write ("Cijena proizvoda:");

Readln (Sena);

write ("Količina u seriji:");

Readln (Kol);

write ("Popust:");

readln (Skidka);

Ako se tip podataka koji se unosi s tipkovnice ne podudara ili se ne može pretvoriti u tip varijabli čija su imena navedena u uputi za čitanje (čitanje), program se ruši (upute koje slijede nakon čitanja se ne izvršavaju) i prikazuje se poruka na ekranu o grešci.

autor Alexander postavio pitanje u odjeljku Drugi jezici i tehnologije

Zašto Pascal čita i readln ako čitanje takođe prevodi redak, iako u teoriji ne bi trebalo? i dobio najbolji odgovor

Odgovor od Skipy _ [guru]
readln - uzima vrijednost iz ulaznog bafera u parametar, briše cijeli ulazni bafer tipkovnice
and read - uzima vrijednost iz ulaznog bafera u parametar i ne briše ga u bafer, već ostavlja vrijednost !! !
automatski unos linija pri kucanju - svuda
tj. readln je siguran unos
čitanje- nesiguran ulaz
primjer:
var
a, b: cijeli broj;
početi
pročitati (a); (korisnik unio: 4, 5 a = 4)
(u ulaznom baferu broj 5!!}
pročitati (b); (ovdje je unio broj: 6, ali b = 5)
(broj 6 ostaje u ulaznom baferu!!}
---
readln (a); (korisnik uneo: 4, 5; a = 4)
(ulazni bafer je čist!!}
readln (a); (korisnik je unio broj 6 i b = 6)
(ulazni bafer je čist!!}
readln (b);
kraj.
Naprotiv, ne postoji automatsko otkrivanje vrste ulazne vrijednosti, sve je određeno konvencijama u specifikatoru formata.

Odgovor od Yoali-Mali[guru]
To se može objasniti na jednostavniji način, bez posebnih problema:
Kada se postupak čitanja izvrši, vrijednost sljedećih podataka se čita iz istog retka, a kada se postupak čitanja izvrši, vrijednost sljedećih podataka se čita iz novog retka.
Dakle, operator Readln (b1, b2, ... bn); omogućava unos podataka u BAR.
Nakon unosa svake varijable b1, b2, ..bn, kursor se pomiče na početak novog retka.
Operator čitanja (b1, b2, ... bn); omogućava unos podataka u LINIJU


Odgovor od VT-107 FIT[guru]
Ovdje je nešto pošlo po zlu Dmitrije, ali nije istina. I o potpuno očišćenom i neočišćenom tamponu i o sigurnosti. Sali takođe nije tačno odgovorio. Nema stupaca i redova, potpuno drugačija pravila.
Prvo, ove procedure ne rade samo s unosom s konzole, pa su potrebne dvije funkcije.
postupak čitanja (F, V1 [, V2, ... Vn]);
čita sve V1..Vn iz toka (točno n parametara), svi pročitani podaci bit će izbrisani. Sve što će se dogoditi nakon ovih podataka ostat će nepromijenjeno.
Čitanjem retka čita se sve do novog retka ili kraja datoteke. Naredni pozivi za čitanje će vratiti prazan niz. Znak novog reda neće biti uklonjen iz toka.
Ako čitate char, tada se ovisno o postavkama znak novog retka može pročitati kao char (26)
Prilikom čitanja brojeva preskaču se svi razmaci, tabulatori, prijelomi redova. I sljedeće čitanje započet će znakom koji slijedi pročitani broj. Opet, nepotrebni znakovi se mogu izostaviti.
procedura ReadLn ([var F: Text;] V1 [, V2, ..Vn]);
čita iz toka V1, Vn (tj. radi kao čitanje), a zatim preskače sve znakove do uključujući novi red. Svi znakovi nakon prijeloma retka ostat će nepromijenjeni.
Prijelaz na novu liniju vrši se jer pritisnete Enter u konzoli.
O bezbjednosnoj namjeri. To su funkcije različite namjene. Svaka njihova nepravilna upotreba nije sigurna, ispravna i na odgovarajući način sigurna.

Uputstvo za čitanje je namenjeno za unos vrednosti promenljivih (početnih podataka) sa tastature. Općenito, upute izgledaju ovako:

read (Varijabla!, Variable2, ... Variable, gdje je varijabla naziv varijable, čija vrijednost se mora unijeti sa tastature tokom izvršavanja programa.

Evo nekoliko primjera pisanja pročitane izjave:

Pročitajte (a); čitati (Cena, Kol);

Kada se naredba read izvrši, događa se sljedeće:

1. Program pauzira svoj rad i čeka da se potrebni podaci ukucaju na tastaturu i pritisne taster .

2. Nakon pritiska na tipku unesena vrijednost se dodjeljuje varijabli imenovanoj u izrazu.

Na primjer, kao rezultat izvršavanja instrukcije

Pročitajte (Tempérât);

i upisivanjem retka 21, vrijednost Tempérâta bit će 21.

Jedna naredba za čitanje omogućuje vam da dobijete vrijednosti nekoliko varijabli. U tom slučaju uneti brojevi moraju biti otkucani u jedan red i odvojeni razmacima. Na primjer, ako je tip varijabli a, b i c stvaran, to je rezultat izvršavanja čitanja (a, b, c); i niz za unos sa tastature:

4.5 23 0.17

varijable će imati sljedeće vrijednosti: a = 4,5; b = 23, o; c = 0,17.

Ako red sadrži više brojeva od varijabli navedenih u naredbi read, tada će ostatak retka biti obrađen sljedećom naredbom čitanja. Na primjer, kao rezultat izvršavanja uputa:

Pročitajte (a, B); pročitati (C);

i niz za unos sa tastature

10 25 18

varijable će dobiti sljedeće vrijednosti: a = 10, b = 25. Pročitajte instrukciju (C); dodijelit će varijablu s vrijednošću 18.

Uputstvo readln razlikuje se od uputstva za čitanje po tome što nakon što odaberete sljedeći broj iz retka unesenog s tipkovnice i dodijelite ga posljednjoj varijabli s popisa instrukcije readln, ostatak retka se gubi, a sljedeće čitanje ili readln instrukcija će zahtijevati novi unos.

Na primjer, kao rezultat izvršavanja instrukcije:

Readln (a, B); pročitati (C);

i upisivanje niza

10 25 18

varijable će dobiti sljedeće vrijednosti: a = 10, b = 25. Nakon toga, program će pričekati da se unese novi broj kako bi ga dodijelio varijabli c.

Svakoj instrukciji čitanja ili čitanja treba prethoditi uputstvo za pisanje koje će korisniku reći koje podatke program od njega očekuje. Na primjer, fragment programa za izračunavanje cijene kupovine može izgledati ovako:

Writeln ("Unesite originalne podatke."); write ("Cijena proizvoda:"); čitanje (Sepa); write ("Količina u seriji:"); readln (Kol); write ("Popust:"); readln (Skidka);

Ako se tip podataka koji se unosi s tipkovnice ne podudara ili se ne može pretvoriti u tip varijabli čija su imena navedena u uputi za čitanje (readln), program se ruši (upute koje slijede nakon čitanja se ne izvršavaju) i prikazuje se poruka na ekranu o grešci.

Tema: Ulaz Izlaz. Čitajte (Readln), Pišite (Writeln) naredbe. Najjednostavniji linearni programi.

Riješimo problem komentiranjem svake naše radnje u uvijenim zagradama. Podsjetimo da računar ne percipira komentar, ali nam je potreban kako bismo bolje razumjeli kako program radi.

Zadatak ... Napišite program koji briše ekran i izračunava umnožak dva korisnička broja.

Program Proizv2;
Upotrebe
Crt; (Povežite modul Crt)
Var
broj1, (varijabla koja će sadržavati prvi broj)
broj2, (varijabla koja će sadržavati drugi broj)
rezult (varijabla koja će sadržavati rezultat)
: integer;
Begin
ClrScr; (Koristimo proceduru za brisanje ekrana sa Crt modula)
Write ("Unesite prvi broj");
Readln (broj1);
(Broj koji je unijeo korisnik očitava se u varijabli broj 1)
Write ("Unesite drugi broj");
(Prikaz znakova napisanih između apostrofa)
Readln (broj 2);
(Broj koji je unijeo korisnik očitava se u varijabli broj 2)
rezultat: = broj1 * broj2;
(Pronađite proizvod unesenih brojeva i dodijelite ga varijabli rezult)
Write ("Proizvod brojeva", broj1, "i", broj2, "jednako", rezultat);
(Prikazujemo red koji sadrži odgovor na problem)
Readln; (Procedura odlaganja ekrana)
Kraj.

Da biste bolje razumjeli djelovanje programa, upišite ga na računalo i testirajte njegovu radnju. Odgovori na pitanja:

  • zašto se program zvao Proizv2?
  • Zašto ste Crt modul stavili u odjeljak Upotreba?
  • koja je svrha varijabli broj 1, broj 2, rezultat?
  • koji tip su ove varijable? šta to znači?
  • Ako varijablama broj 1 i broj 2 dodijelimo vrijednosti 5, odnosno 7, koju će liniju računar proizvesti pri izvršavanju posljednje procedure pisanja? Zapišite to u bilježnicu.
  • u kojim redovima se od korisnika traži vrijednost varijabli?
  • u kojem se redu vrši množenje brojeva?
  • šta operater dodjele radi u ovom programu?

Vježbe ... Izmijenite program tako da od korisnika traži drugu varijablu i daje rezultat proizvoda tri broja.

Napišite i WriteLn izjave

Već smo koristili operatore Write i WriteLn, ali moramo se detaljnije zadržati na pravilima korištenja ovih operatora.

Pisanje (engleski za pisanje) - operator koji se koristi za prikaz informacija na ekranu. Operator WriteLn izvodi istu radnju, ali budući da ima i završetak Ln (linija - engleska linija, linija), tada nakon prikaza željene poruke na ekranu dodatno pomiče kursor na sljedeći red.

Opšti oblik:
Napiši (lista izraza)
WriteLn (lista izraza)

Procedure Write i WriteLn koriste se ne samo za prikaz rezultata, već i za prikaz različitih poruka ili zahtjeva. To vam omogućava da vodite dijalog s korisnikom, kažete mu kada treba unijeti vrijednosti, kada dobije rezultat, kada je pogriješio itd.

Na primjer, prilikom izvršavanja procedure WriteLn ('Pronađen broj', a), redak zatvoren u apostrofama će se ispisati, a zatim će se prikazati vrijednost varijable a.

Naredba WriteLn može se koristiti bez parametara. U tom slučaju će se ispisati redak koji se sastoji od razmaka i kursor će se premjestiti u drugi red. Ponekad nam je potreban za bolju percepciju unosa podataka.

Operatori za čitanje i čitanje

Sjetimo se da je glavna svrha računara ušteda ljudskog rada. Stoga je potrebno pružiti priliku, nakon što ste napisali program, ponovno ga koristiti, svaki put unoseći različite podatke. Ova fleksibilnost u jeziku osigurana je naredbama Read i ReadLn. Ovi operateri unose informacije sa tastature.

Opšti oblik:
Čitanje (promenljivo, promenljivo ...)
ReadLn (promenljiva, promenljiva ...)

Postupak čitanja očekuje unos vrijednosti navedenih u zagradama. Uneseni podaci moraju biti međusobno odvojeni razmacima. Dodjela vrijednosti događa se zauzvrat.

Na primjer, ako se unesu vrijednosti 53 i X, tada će se, kada se izvrši naredba Read (a, b), broj 53 dodijeliti varijabli a, a slovo X varijabli X. Štaviše, u da biste izbjegli hitni slučaj, morate ispravno odrediti vrstu podataka u odjeljku Var; u našem slučaju a: integer i b: char.

Nema posebnih razlika u čitanju i pisanju u upotrebi operatora Read i ReadLn. Često se postupak ReadLn bez parametara koristi na kraju programa za odgodu: prije pritiska na tipku rezultat izvršavanja programa ostaje na ekranu. Ovo je vrlo korisno za analizu rezultata.

Bilješka ... Kada postavite kašnjenje ekrana, obratite pažnju na prethodni unos. Ako su podaci zatraženi postupkom čitanja, neće biti odlaganja.

Riješimo problem u kojem ćemo razmotriti sve moguće upotrebe ovih postupaka.

Zadatak ... Nađi prosjek tri broja.

Bilješka ... Da biste pronašli prosjek nekoliko brojeva, saberite ove brojeve i podijelite zbir s brojem tih brojeva.

Upišite tekst problema i pažljivo razmotrite svaki redak. Naziv programa Srednee odražava sadržaj zadatka. Usput, složimo se da su naziv programa i naziv datoteke koja sadrži ovaj program isti. Slijedi povezivanje Crt modula. U odjeljku Var, Prva, Druga, Treća su opisane kao varijable cjelobrojnog tipa, a Sum je stvarnog tipa. Odeljak za operatera počinje sa standardnom rutinom ekrana ClrScr (Clear Screen) koja se nalazi u modulu Crt. Zatim, s naredbom Write, prikazujemo poruku ‘Unesite prvi broj’, nakon primitka koju korisnik mora unijeti broj.

Sada bi računar trebao pročitati unete znakove i staviti ih u prvu varijablu, to će se dogoditi kada se izvrši sljedeća naredba ReadLn (prva). Zatim, koristeći naredbu Write, tražimo vrijednosti još dva broja i čitamo ih u drugu i treću varijablu. Zatim izračunamo njihov zbroj i dodijelimo rezultirajući broj varijabli Zbir. Da biste pronašli prosjek, sada morate podijeliti rezultirajući broj sa 3 i pohraniti rezultat u neku varijablu.

Za spremanje rezultata uopće nije potrebno deklarirati drugu varijablu. Možete, kao u našem programu, podijeliti vrijednost varijable Sum sa 3 i rezultat ponovo dodijeliti istoj varijabli Sum. Sada možete prikazati rezultat izračuna na ekranu pomoću procedure Write. I na kraju, posljednja rutina ReadLn zadržat će naš izlaz na ekranu sve dok se ne pritisne tipka.

Pritisnite tastere +... Unesite vrijednosti varijabli 5, 7 i 12, na ekranu ćete vidjeti sljedeće:

Prosjek 5, 7 i 12 je 8,00

Pažljivo pogledajte ovu liniju i uporedite je sa linijom ispisivanja rezultata u našem programu. Testirajte program još nekoliko puta na različite vrijednosti varijabli.

Odaberite problem s nastavnikom koji treba riješiti sa sljedeće liste:

  1. Unesite dva broja a i b. Koristite operator dodjeljivanja za razmjenu njihovih vrijednosti:
    a) upotrebom međupromenljive (x: = a; a: = b; b: = x);
    b) bez upotrebe međupromenljive (a: = a-b; b: = a + b; a: = b-a).
  2. Napišite program koji od korisnika traži cijeli broj, pravi broj, proizvoljan znak i niz, a zatim ispisuje sve u jednom retku.
  3. Prikažite svoje prezime, ime i patronimiku, a dva reda kasnije - datum rođenja.
  4. Napišite program za ispis jednog od oblika sa zvjezdicama:
    a) božićna drvca (nekoliko božićnih drvca);
    b) pahuljice (nekoliko pahuljica);
    c) kuću. Na primjer,

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

  5. Sastavite svoju vizitkartu.


    * Ivanov Sergej *
    * Proletarskaya 74 četvornih metara 55 *
    * Telefon 45-72-88 *
    *******************************

  6. Sastavite dijalog između korisnika i računara o proizvoljnoj temi.
    Na primjer, mašina postavlja dva pitanja: "Kako se zoveš?" koliko imaš godina?"; nakon unosa imena (Anton) i broja (15) na ekranu se prikazuje „Da ... Za 50 godina imat ćete 65 godina i nećete se zvati Anton, već djed Anton“
  7. Zatražite od korisnika dva broja i s potpunim odgovorom prikažite rezultat zbroja, razlike, proizvoda i količnika ovih brojeva.
  8. Zatražite od korisnika dva broja i prikažite rezultat cjelobrojne podjele i ostatak cjelobrojne podjele u obliku tablice. Na primjer, pri unosu brojeva 5 i 3, zaslon bi trebao prikazati sljedeću tablicu:

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

  9. Napišite program koji traži ime životinje i broj, a zatim prikazuje izraz poput "Vjeverica će pojesti 10 gljiva" (kada unesete riječ "vjeverica" ​​i broj 10).
  10. Organizirajte dijalog između prodavača (računala) i kupca (korisnika) pri kupnji bilo kojeg proizvoda prema sljedećoj shemi: nuđenje proizvoda po određenoj cijeni, traženje količine kupljenog proizvoda, određivanje i prikazivanje novčanog iznosa kupac mora platiti kupovinu.