Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Iron
  • Korištenje Var, Integer, Readln. Uvod u Pascal

Korištenje Var, Integer, Readln. Uvod u Pascal

U odeljku o pitanju Zašto Pascal čita i readln, ako read takođe prevodi red, iako u teoriji ne bi trebalo? dao autor Alexander najbolji odgovor je readln - uzima vrijednost iz ulaznog bafera u parametar, ispira cijeli ulazni bafer tastature
i read - preuzima vrijednost iz ulaznog bafera u parametar i ne briše je u bafer, već ostavlja vrijednost !! !
automatsko prebacivanje linije prilikom kucanja - svuda
tj. readln je siguran unos
čitanje – nesiguran unos
primjer:
var
a, b: cijeli broj;
početi
pročitaj (a); (korisnik je unio: 4, 5 a = 4)
(u ulaznom baferu broj 5!!}
pročitaj (b); (ovdje je unio broj: 6, ali b = 5)
(broj 6 ostaje u ulaznom baferu!!}
---
readln (a); (korisnik je unio: 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 automatska detekcija tipa ulazne vrednosti, sve je određeno konvencijama u specifikaciji formata.

Odgovor od Yoali-Mali[guru]
To se može objasniti na jednostavniji način, bez posebnih problema:
Kada se izvrši procedura čitanja, vrijednost sljedećeg podatka se čita iz istog reda, a kada se izvrši readln procedura, vrijednost sljedećeg podatka se čita iz novog reda.
Prema tome, 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 reda.
Operator čitanja (b1, b2, ... bn); omogućava unos podataka u LINIJU


Odgovor od VT-107 FIT[guru]
Ovdje je nešto Dmitry pošlo po zlu, 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 kolona i linija, potpuno drugačija pravila.
Prvo, ove procedure ne rade samo sa unosom u konzolu, tako da su potrebne dvije funkcije.
procedura Read (F, V1 [, V2, ... Vn]);
čita sve V1..Vn iz toka (tačno n parametara), svi pročitani podaci će biti izbrisani. Sve što će se desiti nakon ovih podataka ostat će nepromijenjeno.
Čitanje reda će pročitati sve do novog reda ili kraja datoteke. Naknadni pozivi read će vratiti prazan string. I znak novog reda neće biti uklonjen iz toka.
Ako čitate char, tada, ovisno o postavkama, znak novog reda može se pročitati kao char (26)
Prilikom čitanja brojeva, svi razmaci, tabulatori, prijelomi reda se preskaču. I sljedeće čitanje će započeti znakom koji slijedi nakon pročitanog broja. Opet, nepotrebni znakovi se mogu preskočiti.
procedura ReadLn ([var F: Tekst;] V1 [, V2, ..Vn]);
čita iz toka V1, Vn (to jest, radi kao čitanje), a zatim preskače sve znakove do i uključujući novi red. Svi znakovi nakon prijeloma reda ostaju nepromijenjeni.
Prelazak na novi red se vrši jer pritisnete Enter u konzoli.
O sigurnosti je nategnuto. To su funkcije različite namjene. Svaka njihova nepravilna upotreba nije sigurna, svaka ispravna i shodno tome sigurna.

Programski jezik Pascal koristi instrukcije kao što su read i readLn. Šta su oni?

Šta je pročitana izjava?

Ova instrukcija ima za cilj da obezbedi unos sa tastature računara različitih vrednosti varijabli koristeći Pascal jezik. Shema korištenja razmatrane instrukcije izgleda jednostavno: kao read ("vrijednost varijable").

U praksi se instrukcija čitanja koristi kako bi se osiguralo da se određeni podaci čitaju iz datoteke, a zatim se vrijednosti koje se preuzimaju iz odgovarajućih podataka dodjeljuju varijablama koje su specificirane prilikom pozivanja procedure.

Ako korisnik napravi grešku prilikom unosa podataka, oni ne odgovaraju nijednoj vrsti varijabli prikazanih u instrukciji, program prestaje da izvršava naredbe. U tom slučaju, na ekranu računara se pojavljuje poruka da je došlo do greške u aplikaciji.

Ako programer koristi nekoliko instrukcija za čitanje, tada će podaci biti uneseni na ovaj ili onaj način u jednom redu. Sljedeći skok je moguć samo ako se trenutna linija završi. Međutim, možete pročitati informacije smještene na drugom redu koristeći readLn instrukciju. Razmotrimo njegove karakteristike detaljnije.

Šta je readLn instrukcija?

Suština readLn instrukcije je da se u programu postavi uslov pod kojim:

  • bilo koji broj unet u string se dodeljuje poslednjoj varijabli od strane instrukcije;
  • ostatak reda ne obrađuje program, dok će sljedeća instrukcija zahtijevati novi unos.

Dakle, možete unijeti instrukciju:

readLn (C, D); čitaj (E);

A ako nakon toga sa tastature unesete red 1 2 3, tada će varijabla C dobiti vrijednost 1, D - 2. Ali program neće dodijeliti određenu vrijednost varijabli E sve dok korisnik ne unese novi broj.

Kao iu slučaju instrukcije za čitanje, ako korisnik pogrešno unese tip podataka koristeći naredbu readLn, program izlazi i prikazuje poruku o grešci.

Poređenje

Glavna razlika između readLn i read je u tome što prva procedura uključuje program da skoči na red datoteke slijedeći onu u kojoj su napisane upute. Drugi postupak omogućava programu da pročita podatke postavljene u sljedećem redu, samo uz dozvolu korisnika - ako pritisne Enter.

U praksi se instrukcija readLn najčešće koristi da obezbedi kašnjenje između rezultata izvršenja aplikacije i prelaska na sledeću instrukciju. Odgovarajuće kašnjenje traje dok korisnik ne pritisne Enter.

Nakon što smo utvrdili koja je razlika između readLn i read u Pascal jeziku, popravimo zaključke u tabeli.

Tema: Ulaz Izlaz. Pročitajte (Readln), Write (Writeln) izjave. Najjednostavniji linearni programi.

Rešimo problem komentarisanjem svake naše radnje u vitičastim zagradama. Podsjetimo da kompjuter 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 dvaju korisničkih brojeva.

Program Proizv2;
Koristi
Crt; (Povezujemo Crt modul)
Var
broj1, (varijabla koja će sadržavati prvi broj)
broj 2, (varijabla koja će zadržati drugi broj)
rezultat (varijabla koja će sadržavati rezultat)
: cijeli broj;
Počni
ClrScr; (Koristimo proceduru za brisanje ekrana iz Crt modula)
Write ("Unesite prvi broj");
Readln (broj 1);
(Broj koji je unio korisnik čita se u varijablu number1)
Write ("Unesite drugi broj");
(Prikazivanje znakova napisanih između apostrofa)
Readln (broj 2);
(Broj koji je unio korisnik čita se u varijablu number2)
rezultat: = broj1 * broj2;
(Pronađite umnožak unesenih brojeva i dodijelite ga varijabli rezultat)
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 radnju programa, otkucajte ga na svom računaru i testirajte njegovu radnju. Odgovori na pitanja:

  • zašto se program zvao Proizv2?
  • Zašto ste stavili Crt modul u odeljak Koristi?
  • koja je svrha varijabli broj1, broj2, rezultat?
  • koje su ove varijable? šta to znači?
  • Ako varijable number1 i number2 dodijelimo vrijednostima 5 i 7, respektivno, koju liniju će računalo proizvesti prilikom izvršavanja posljednje procedure Write? Zapišite to u svoju bilježnicu.
  • u kojim redovima se od korisnika traži da unese vrijednosti varijabli?
  • u kom redu se dešava množenje brojeva?
  • šta radi operator dodjeljivanja u ovom programu?

Vježba ... Izmijenite program tako da traži od korisnika drugu varijablu i daje proizvod tri broja.

Write and WriteLn Statements

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

Write je operator koji se koristi za prikaz informacija na ekranu. Operator WriteLn vrši istu radnju, ali pošto ima i završetak Ln (red - engleski red, red), onda nakon prikaza željene poruke na ekranu dodatno pomera kursor na sledeći red.

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

Procedure Write i WriteLn se koriste ne samo za prikaz rezultata, već i za prikaz različitih poruka ili zahtjeva. Ovo vam omogućava da vodite dijalog sa korisnikom, kažete mu kada treba da unese vrednosti, kada dobije rezultat, kada je napravio grešku itd.

Na primjer, prilikom izvršavanja procedure WriteLn (‘Pronađen broj’, a), ispisuje se red zatvoren apostrofima, a zatim se prikazuje vrijednost varijable a.

Naredba WriteLn se može koristiti bez parametara. U tom slučaju će se ispisati linija koja se sastoji od razmaka, a kursor će se pomjeriti na drugu liniju. Ponekad nam je potreban za bolju percepciju unosa podataka.

Read i ReadLn operatori

Podsjetimo da je glavna svrha kompjutera da uštedi ljudski rad. Stoga je potrebno pružiti mogućnost, nakon što jednom napišete program, ponovo ga koristite, svaki put unoseći različite podatke. Ovu fleksibilnost jezika pružaju Read i ReadLn izjave. Ovi operateri unose informacije sa tastature.

Opšti oblik:
Čitaj (promjenjiva, varijabla...)
ReadLn (varijabla, varijabla...)

Procedura Read očekuje da se unesu vrijednosti navedene u zagradama. Uneseni podaci moraju biti odvojeni jedan od drugog razmacima. Dodjela vrijednosti se događa zauzvrat.

Na primjer, ako se unesu vrijednosti 53 i X, onda kada se izvrši naredba Read (a, b), broj 53 će biti dodijeljen varijabli a, a slovo X varijabli X. Štaviše, u kako biste izbjegli hitan slučaj, potrebno je da ispravno odredite tip podataka u odjeljku Var; u našem slučaju a: cijeli broj i b: char.

Ne postoje posebne razlike u čitanju i pisanju u korištenju operatora Read i ReadLn. Često se procedura ReadLn bez parametara koristi na kraju programa za odlaganje: prije pritiskanja tipke 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 traženi postupkom Read, neće biti kašnjenja.

Hajde da riješimo problem u kojem ćemo razmotriti sve moguće upotrebe ovih postupaka.

Zadatak ... Pronađite prosjek tri broja.

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

Otkucajte tekst zadatka i pažljivo razmotrite svaki red. Naziv Srednee programa odražava sadržaj zadatka. Usput, složimo se da su naziv programa i naziv datoteke koja sadrži ovaj program isti. Zatim slijedi povezivanje Crt modula. U odjeljku Var, First, Second, Third su opisane kao varijable cjelobrojnog tipa, a Sum je realnog tipa. Odjeljak operatera počinje sa standardnom rutinom ekrana ClrScr (Clear Screen) koja se nalazi u modulu Crt. Zatim, naredbom Write prikazujemo poruku „Unesi prvi broj“, po prijemu koje korisnik mora unijeti broj.

Sada računar treba da pročita unete znakove i stavi ih u promenljivu First, to će se desiti kada se izvrši sledeća ReadLn (First) izjava. Zatim, koristeći naredbu Write, tražimo vrijednosti još dva broja i čitamo ih u drugu i treću varijablu. Zatim izračunavamo njihov zbir i dodjeljujemo rezultirajući broj varijabli Sum. Da biste pronašli prosjek, sada morate rezultujući broj podijeliti sa 3 i pohraniti rezultat u neku varijablu.

Uopće nije potrebno deklarirati drugu varijablu da biste sačuvali rezultat. 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 proračuna na ekranu koristeći proceduru Write. Konačno, konačna ReadLn rutina će odgoditi naš izlaz na ekranu dok se ne pritisne tipka.

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

Srednja vrijednost 5, 7 i 12 je 8,00

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

Izaberite sa nastavnikom probleme koje želite riješiti sa sljedeće liste:

  1. Unesite dva broja a i b. Koristite operator dodjeljivanja za razmjenu njihovih vrijednosti:
    a) korištenjem međuvarijable (x: = a; a: = b; b: = x);
    b) bez upotrebe međuvarijable (a: = a-b; b: = a + b; a: = b-a).
  2. Napišite program koji od korisnika traži cijeli broj, realan broj, proizvoljan karakter i string, a zatim sve ispisuje u jednom redu.
  3. Prikažite svoje prezime, ime i patronim, a dva reda kasnije - datum rođenja.
  4. Napišite program za štampanje jednog od oblika sa zvjezdicama:
    a) jelke (nekoliko jelki);
    b) pahulje (nekoliko pahuljica);
    c) kuća, npr.

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

  5. Sastavite svoju vizit kartu.


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

  6. Sastavite dijalog između korisnika i računara na proizvoljnu temu.
    Na primjer, mašina postavlja dva pitanja: "Kako se zoveš?" koliko imaš godina?"; nakon unosa imena (Anton) i na ekranu se prikazuje broj (15) “Da... Za 50 godina imat ćeš 65 godina, a nećeš se zvati Anton, već djed Anton”
  7. Zatražite od korisnika dva broja i prikažite rezultat zbira, razlike, proizvoda i količnika ovih brojeva s potpunim odgovorom.
  8. Zatražite od korisnika dva broja i prikažite rezultat cjelobrojnog dijeljenja i ostatka cjelobrojnog dijeljenja u obliku tabele. Na primjer, prilikom unosa brojeva 5 i 3, na ekranu bi se trebala prikazati sljedeća tabela:

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

  9. Napišite program koji traži ime životinje i broj, a zatim prikazuje frazu poput "Vjeverica će pojesti 10 gljiva" (kada unesete riječ "vjeverica" ​​i broj 10).
  10. Organizujte dijalog između prodavca (računara) i kupca (korisnika) prilikom kupovine bilo kog proizvoda prema sledećoj šemi: ponuda proizvoda po određenoj ceni, traženje količine kupljenog proizvoda, određivanje i prikazivanje iznosa novca koji kupac mora platiti kupovinu.

Pročitajte (procedura)

Za otkucane datoteke, čita komponentu datoteke u varijablu.
- Za tekstualne datoteke, čita jednu ili više vrijednosti
u jednu ili više varijabli

Najava

Otkucani fajlovi

Čitanje procedure (F, V1 [, V2, ..., Vn]);

Tekstualne datoteke

Čitanje postupka ([Var F: Tekst;] V1 [, V2, ..., Vn]);

Mode

Windows, pravi, zaštićeni

Napomene

Za string varijable:

Čitanje čita sve znakove do (ali ne uključujući) sljedećeg markera kraja reda ili do Eof(F) će postati Tačno. Čitanje ne prelazi na sljedeći red nakon čitanja. Ako je rezultujući niz duži od maksimalne dužine varijable stringa, onda se skraćuje. Nakon prvog Read, svaki sljedeći poziv Read će vidjeti marker kraja linije i vratiti niz nulte dužine.

Koristite višestruke pozive ReadLn za čitanje višestrukih vrijednosti niza.

Kada je opcija uključena Proširena sintaksa, Read procedura može čitati null-terminirani nizovi na nizove znakova zasnovanih na nuli.

Za varijable poput Integer ili Real:

Read će preskočiti sve razmake, tabulatore ili markere na kraju reda koji prethode numeričkom redu. Ako numerički niz ne odgovara očekivanom formatu, dolazi do I/O greške, u suprotnom se varijabli dodjeljuje rezultirajuća vrijednost. Sljedeće čitanje će početi s razmakom, tabulatorom ili markerom na kraju reda koji je završio numerički niz.

vidi takođe

Primjer

koristi Crt, Dos;

var
F: Tekst;
Ch: Char;

početi
(Nabavite naziv datoteke iz komandne linije)
Dodijeli (F, ParamStr (1));
Reset (F);
dok EOF (F) ne radi
početi
Čitaj (F, Ch);
Pisanje (Ch); (Prikazujemo sadržaj datoteke na ekranu)
kraj;
kraj.

Instrukcija za čitanje je namijenjena unosu vrijednosti varijabli (početnih podataka) sa tastature. Općenito, instrukcija izgleda ovako:

pročitaj (varijabla !, varijabla2, ... varijabla

Evo primjera pisanja pročitane izjave:

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

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

1. Program pauzira svoj rad i čeka dok se traženi podaci ne otkucaju na tastaturi i pritisne tipka .

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

Na primjer, kao rezultat izvršavanja instrukcije

Read (Tempérât);

i kucajući red 21, vrijednost Tempérât je 21.

Jedna izjava za čitanje vam omogućava da dobijete vrijednosti nekoliko varijabli. U tom slučaju, uneseni brojevi moraju biti upisani u jednom redu i odvojeni razmacima. Na primjer, ako je tip varijabli a, b i c realan, onda kao 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 za čitanje, tada će ostatak reda biti obrađen sljedećim naredbom za čitanje. Na primjer, kao rezultat izvršavanja instrukcija:

Čitaj (a, B); pročitaj (C);

i niz za unos sa tastature

10 25 18

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

Readln instrukcija se razlikuje od instrukcije readln po tome što se nakon odabira sljedećeg broja iz reda unesenog sa tastature i dodjele posljednje varijabli sa liste readln instrukcije, ostatak reda gubi, a sljedeće čitanje ili readln instrukcija će zahtijevati novi unos.

Na primjer, kao rezultat izvršavanja instrukcije:

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

i kucanje stringa

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 za čitanje ili čitanje treba da prethodi instrukcija pisanja koja će korisniku reći koje podatke program očekuje od njega. Na primjer, fragment programa za izračun cijene kupovine može izgledati ovako:

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

Ako se tip podataka unesenih s tastature ne podudara ili se ne može konvertirati u tip varijabli čija su imena navedena u naredbi read (readln), program se ruši (instrukcije nakon čitanja se ne izvršavaju) i prikazuje se poruka na ekranu o grešci.

Top srodni članci