Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Željezo
  • Korištenje Var, Integer, Readln. Uvod u Pascal

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

U odjeljku o pitanju Zašto Pascal ima read i readln, ako read također prevodi red, iako u teoriji ne bi trebao? dao autor Aleksandar najbolji odgovor je readln - uzima vrijednost iz ulaznog međuspremnika u parametar i briše cijeli ulazni međuspremnik tipkovnice
and read - uzima vrijednost iz ulaznog međuspremnika u parametar i ne briše je u međuspremnik, nego ostavlja vrijednost!! !
Automatsko pomicanje redaka prilikom tipkanja - posvuda
tj. readln je siguran unos
čitati - nesiguran unos
primjer:
var
a,b: cijeli broj;
početi
čitati); (unio korisnik: 4, 5 a = 4)
(u ulaznom međuspremniku broj je 5!!}
čitaj(b); (ovdje je upisao broj: 6, ali b = 5)
(broj 6 ostaje u ulaznom međuspremniku!!}
---
readln(a);(unio korisnik: 4, 5; a = 4)
(ulazni međuspremnik je čist!!}
readln(a);(korisnik je unio broj 6 i b = 6)
(ulazni međuspremnik je čist!!}
readln(b);
kraj.
Naprotiv, nema automatsko otkrivanje vrsta ulazne vrijednosti, sve je određeno simboli u specifikatoru formata.

Odgovor od Yoali-Mali[guru]
Može se objasniti jednostavnije, bez previše zabune:
Kada se izvršava procedura čitanja, vrijednost sljedećeg podatka se čita iz istog retka, a kada se izvršava procedura readln, vrijednost sljedećeg podatka se čita iz novog retka.
Zato Readln operator(b1,b2,...bn); omogućuje unos podataka u KOLONU.
Nakon unosa svake varijable b1, b2, ..bn kursor se pomiče na početak novog retka.
Operator Read(b1,b2,...bn); omogućuje unos podataka u LINE


Odgovor od VT-107 FIT[guru]
Ovdje se Dmitrij nešto zbunio, ali nije u redu. I o potpuno pročišćenom i nepročišćenom puferu i o sigurnosti. Netočno je odgovorio i Sali. Nema stupaca i redaka, potpuno druga pravila.
Prvo, ove procedure ne rade samo s unosom konzole, pa su potrebne dvije funkcije.
procedura Read(F, V1 [, V2,...Vn ]);
čita sve V1..Vn iz toka (točno n parametara), svi pročitani podaci bit će izbrisani. Sve što dolazi nakon ovih podataka ostat će nepromijenjeno.
Prilikom čitanja retka, čitat će se sve do novog retka ili kraja datoteke. Sljedeći pozivi za čitanje vratit će prazan niz. A znak novog retka neće biti uklonjen iz toka.
Ako čitate char, ovisno o postavkama, znak novog retka može se čitati kao char(26)
Prilikom čitanja brojeva preskaču se svi razmaci, tabulatori i prijelomi redaka. I sljedeće čitanje će započeti sa simbolom koji dolazi nakon pročitanog broja. Opet, nepotrebni znakovi mogu biti preskočeni.
procedure ReadLn([ var F: Text; ] V1 [, V2, ..Vn ]);
čita iz toka V1, Vn (to jest, radi kao read) i zatim preskače sve znakove do i uključujući novi red. Svi znakovi nakon prijeloma retka ostat će nepromijenjeni.
Ići nova linija provodi se jer pritisnete Enter u konzoli.
Nevjerojatno je što se tiče sigurnosti. To su funkcije s različitim namjenama. Svaka nepravilna uporaba nije sigurna, svaka pravilna uporaba je sukladno tome sigurna.

U jeziku Pascal programiranje koriste se instrukcije kao što su read i readLn. Što su oni?

Što je read statement?

Ova je uputa namijenjena pružanju unosa s tipkovnice računala različita značenja varijable pri korištenju jezika Pascal. Shema za korištenje dotične instrukcije izgleda jednostavno: poput čitanja ("varijabilna vrijednost").

U praksi se instrukcija čitanja koristi kako bi se osiguralo čitanje određenih podataka iz datoteke i naknadno dodjeljivanje vrijednosti ekstrahiranih iz odgovarajućih podataka varijablama koje su navedene prilikom pozivanja procedure.

Ako korisnik pogriješi prilikom unosa podataka; oni ne odgovaraju niti jednoj vrsti varijable prikazanoj u uputama, program prestaje izvršavati naredbe. Istodobno se na zaslonu računala pojavljuje poruka da je došlo do pogreške u aplikaciji.

Ako programer koristi nekoliko instrukcija za čitanje, onda će podaci nekako biti uneseni u jednom retku. Prijelaz na sljedeći moguć je samo ako završi trenutna linija. Međutim, možete pročitati informacije koje se nalaze u drugom retku pomoću instrukcije readLn. Pogledajmo pobliže njegove značajke.

Što je readLn instrukcija?

Bit instrukcije readLn je postaviti uvjet u programu pod kojim:

  • bilo koji broj unesen u red dodjeljuje se posljednjoj varijabli prema uputama;
  • preostalo područje linije program ne obrađuje, dok sljedeća uputa zahtijevat će novi unos.

Dakle, možete unijeti upute:

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

A ako nakon toga s tipkovnice unesete niz 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 i kod instrukcije za čitanje, ako korisnik unese netočnu vrstu podataka pomoću naredbe readLn, program izlazi i prikazuje poruku koja pokazuje da je došlo do pogreške.

Usporedba

Glavna razlika između readLn i read je u tome što prva procedura uključuje pomicanje programa u redak datoteke nakon onog u kojem su napisane upute. Drugi postupak omogućuje programu čitanje podataka koji se nalaze u sljedeći redak, samo uz dopuštenje korisnika - ako pritisne Enter.

U praksi se instrukcija readLn najčešće koristi za osiguravanje odgode između rezultata izvršenja aplikacije i prijelaza na sljedeću instrukciju. Odgovarajuća odgoda traje dok korisnik ne pritisne Enter.

Utvrdivši koja je razlika između readLn i read in Pascal jezik, zabilježimo zaključke u tablicu.

Predmet: Ulaz izlaz. Pročitajte izjave(Čitati), Pisati (Pisati). Najjednostavniji linearni programi.

Riješimo problem komentiranjem svakog našeg postupka u vitičaste zagrade. Podsjetimo, komentar ne percipira računalo, ali nam je potreban kako bismo bolje razumjeli kako program radi.

Zadatak . Napišite program koji briše zaslon i izračunava umnožak dvaju brojeva koje unese korisnik.

ProgramProizv2;
Koristi
Crt; (Spojite Crt modul)
Var
broj1, (varijabla koja će sadržavati prvi broj)
broj2, (varijabla koja će sadržavati drugi broj)
rezultat (varijabla koja će sadržavati rezultat)
:cijeli broj;
Početi
ClrScr;(Koristimo proceduru brisanja zaslona iz Crt modula)
Write("Unesite prvi broj");
Readln(broj1);
(Broj koji je unio korisnik čita se u varijablu broj1)
Write("Unesite drugi broj");
(Prikazujemo znakove napisane između apostrofa)
Readln(broj2);
(Broj koji je unio korisnik čita se u varijablu broj2)
rezultat:= broj1 * broj2;
(Pronalazimo umnožak unesenih brojeva i pridružujemo ga varijabli rezultat)
Write("Umnožak brojeva ", broj1, " i ", broj2, " jednako ", rezultat);
(Prikazujemo redak koji sadrži odgovor na problem)
Readln; (postupak odgode zaslona)
Kraj.

Kako biste bolje razumjeli rad programa, utipkajte ga na svoje računalo i isprobajte njegov rad. Odgovori na pitanja:

  • zašto se program zove Proizv2?
  • Zašto je Crt modul stavljen u odjeljak Upotreba?
  • koja je svrha varijabli broj1, broj2, rezultat?
  • koje su vrste ove varijable? što to znači?
  • Ako varijablama number1 i number2 dodijelite vrijednosti 5 odnosno 7, koji će redak računalo proizvesti prilikom izvođenja zadnje procedure Write? Zapiši to u svoju bilježnicu.
  • U kojim redovima se od korisnika traže varijabilne vrijednosti?
  • U kojem retku se nalazi množenje brojeva?
  • što radi operator dodjele u ovom programu?

Vježbajte . Izmijenite program tako da traži od korisnika drugu varijablu i ispisuje rezultat umnoška tri broja.

Operatori Write i WriteLn

Operatore Write i WriteLn već smo koristili, ali moramo pobliže pogledati pravila korištenja ovih operatora.

Write (engleski: write) - operator koji služi za prikaz informacija na ekranu. Operator WriteLn izvodi istu radnju, ali budući da ima i završetak Ln (crta - engleska linija, crta), tada nakon prikaza željenu poruku, dodatno pomiče kursor u sljedeći redak.

Opći obrazac:
Napiši (popis izraza)
WriteLn (popis izraza)

Procedure Write i WriteLn koriste se ne samo za ispis rezultata, već i za ispis raznih poruka ili upita. To vam omogućuje da vodite dijalog s korisnikom, informirate ga kada treba unijeti vrijednosti, kada dobije rezultat, kada je pogriješio itd.

Na primjer, prilikom izvođenja procedure WriteLn('Pronađen broj ',a), ispisat će se redak s apostrofima, a zatim vrijednost varijable a.

Operator WriteLn također se može koristiti bez parametara. U tom slučaju ispisat će se redak koji se sastoji od razmaka, a kursor će se pomaknuti u drugi redak. Ponekad nam je to potrebno za bolju percepciju unosa podataka.

Operatori Read i ReadLn

Prisjetimo se da je glavna svrha računala ušteda ljudskog rada. Stoga je potrebno osigurati da se program, jednom kada je napisan, može više puta koristiti, unoseći svaki put različite podatke. Ovu fleksibilnost u jeziku pružaju operatori Read i ReadLn. Ovi operatori unose podatke s tipkovnice.

Opći obrazac:
Čitaj (varijabla, varijabla...)
ReadLn(varijabla, varijabla...)

Kada se izvrši procedura Read, očekuje se da će biti unesene vrijednosti navedene u zagradama. Uneseni podaci moraju biti međusobno odvojeni razmacima. Dodjela vrijednosti nastavlja se redom.

Na primjer, ako su unesene vrijednosti 53 i X, tada kada se izvrši operator Read(a,b), varijabli a će biti dodijeljen broj 53, a varijabli X će biti dodijeljeno slovo X. Štoviše, imajte na umu da ne postoji hitna situacija, trebate ispravno definirati tip podataka u odjeljku Var; u našem slučaju a:integer i b:char.

Kod čitanja i pisanja nema posebnih razlika u korištenju operatora Read i ReadLn. Često se postupak ReadLn bez parametara koristi na kraju programa za odgodu: dok se ne pritisne tipka rezultat izvršenja programa ostaje na ekranu. Ovo je vrlo korisno učiniti za analizu rezultata.

Bilješka . Kada postavite odgodu zaslona, ​​obratite pozornost na prethodni unos. Ako su podaci zatraženi postupkom Read, neće biti odgode.

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

Zadatak . Pronađite prosjek triju brojeva.

Bilješka . Da biste pronašli prosjek nekoliko brojeva, morate te brojeve zbrojiti i zbroj podijeliti s brojem tih brojeva.

Upišite tekst zadatka i pažljivo razmotrite svaki redak. Naziv programa Srednee odražava sadržaj zadatka. Usput, složimo se da se naziv programa i naziv datoteke koja sadrži ovaj program podudaraju. Unaprijediti povezivanje u tijeku modul Crt. Odjeljak Var opisuje First, Second, Third kao varijable cjelobrojnog tipa, a Sum kao realni tip. Odjeljak s operatorom počinje s standardni postupak brisanje zaslona ClrScr (Clear Screen), koji se nalazi u Crt modulu. Zatim operatorom Write ispisujemo poruku ‘Unesi prvi broj’ nakon čijeg primitka korisnik mora unijeti broj.

Sada računalo mora pročitati unesene znakove i pohraniti ih u First varijablu, to će se dogoditi prilikom izvršavanja sljedeće ReadLn(First) naredbe. Zatim pomoću operatora Write tražimo vrijednosti još dva broja i čitamo ih u drugu i treću varijablu. Zatim izračunavamo njihov zbroj i dobiveni broj pridružujemo varijabli Sum. Da biste pronašli prosjek, sada morate dobiveni broj podijeliti s 3 i rezultat pohraniti u neku varijablu.

Uopće nije potrebno opisivati ​​drugu varijablu za spremanje rezultata. Možete, kao u našem programu, podijeliti vrijednost varijable Sum s 3 i ponovno dodijeliti rezultat istoj varijabli Sum. Sada možete prikazati rezultat izračuna na ekranu pomoću procedure Write. I na kraju posljednji postupak Read Ln ć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:

Prosjek 5, 7 i 12 je 8,00

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

Sa svojim učiteljem odaberite probleme koje želite riješiti sa sljedećeg popisa:

  1. Unesite dva broja a i b. Koristite operator dodjele za razmjenu njihovih vrijednosti:
    a) pomoću posredne varijable (x:=a; a:=b; b:=x);
    b) bez korištenja posredne varijable (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 sve ispisuje u jednom retku.
  3. Prikažite svoje prezime, ime i patronim, a nakon dva retka - datum rođenja.
  4. Napišite program za ispis jednog od oblika sa zvjezdicama:
    a) božićna drvca (više božićnih drvaca);
    b) pahuljice (nekoliko pahuljica);
    c) kuća, npr.

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

  5. Napravite sami poslovna kartica.


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

  6. Sastavite dijalog između korisnika i računala na proizvoljnu temu.
    Na primjer, stroj postavlja dva pitanja: "Kako se zoveš?" koliko si star?"; nakon unosa imena (Anton) i broja (15) ispisuje “Da... Za 50 godina ćeš već imati 65 godina i nećeš se zvati Anton, nego djed Anton”
  7. Tražite od korisnika dva broja i prikažite rezultat zbroja, razlike, umnoška i kvocijenta tih brojeva kao potpuni odgovor.
  8. Pitajte korisnika za dva broja i prikažite rezultat cjelobrojno dijeljenje a ostatak cjelobrojnog dijeljenja u obliku tablice. Na primjer, prilikom unosa brojeva 5 i 3 na ekranu bi se trebala pojaviti sljedeća tablica:

    **************************
    *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. Organizirajte dijalog između prodavatelja (računala) i kupca (korisnika) pri kupnji bilo kojeg proizvoda prema sljedećoj shemi: ponuda proizvoda po određenoj cijeni, traženje količine proizvoda koji se kupuje, određivanje i prikaz iznosa novca koji kupac mora platiti kupnju.

Čitaj (postupak)

Za tipkane datoteke, čita komponentu datoteke u varijablu.
- Za tekstualne datoteke, glasi jedno ili velika količina vrijednosti
u jednu ili više varijabli

Obavijest

Tipkane datoteke

Procedura Read(F , V1 [, V2,...,Vn ]);

Tekstualne datoteke

Procedura Read([ Var F: Text; ] V1 [, V2,...,Vn ]);

Način rada

Windows, pravi, zaštićeni

Bilješke

Za varijable niza:

Read čita sve znakove do (ali ne uključujući) sljedeće oznake kraja retka ili do Eof(F) će postati Istina. Read ne prelazi u sljedeći redak nakon čitanja. Ako je rezultirajući niz dulji od maksimalna duljina string varijabla, ona je skraćena. Nakon prvog Read, svaki sljedeći poziv Read će vidjeti oznaku kraja retka i vratiti niz nulte duljine.

Upotrijebite više ReadLn poziva za čitanje više vrijednosti niza.

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

Za varijable tipa Cijeli broj ili Stvaran:

Read će preskočiti sve razmake, kartice ili oznake kraja reda koji prethode numeričkom retku. Ako numerički niz ne slijedi očekivani format, dolazi do I/O pogreške, inače se varijabli dodjeljuje rezultirajuća vrijednost. Sljedeće čitanje započet će s razmakom, tabulatorom ili oznakom kraja retka koji završava brojevni pravac.

vidi također

Primjer

koristi Crt, Dos;

var
F:Tekst;
Ch:Char;

početi
(Dobijanje naziva datoteke iz naredbeni redak }
Dodijeli(F, ParamStr(1));
Reset(F);
dok ne EOF (F) učiniti
početi
Read(F, Ch);
Napiši (Ch); (Prikaži sadržaj datoteke na ekranu)
kraj ;
kraj.

Uputa za čitanje namijenjena je unosu varijabilnih vrijednosti (početnih podataka) s tipkovnice. U opći pogled upute izgledaju ovako:

read(Varijabla!, Varijabla2, ... VarijablaW gdje je varijabla naziv varijable čija se vrijednost mora unijeti s tipkovnice tijekom izvođenja programa.

Evo primjera pisanja uputa za čitanje:

Čitati); čitaj(Cena,Kol);

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

1. Program pauzira rad i čeka dok se na tipkovnici ne utipkaju potrebni podaci i pritisne tipka .

2. Nakon pritiska tipke unesena vrijednost se dodjeljuje varijabli čiji je naziv naveden u iskazu.

Na primjer, kao rezultat izvršenja instrukcije

Čitaj (Tempérât);

i unosom retka 21 s tipkovnice, vrijednost varijable Tempérât bit će broj 21.

Jedna izjava čitanja može dohvatiti vrijednosti više varijabli. U tom slučaju unesene brojke moraju biti upisane u jednom redu i odvojene razmakom. Na primjer, ako je tip varijabli a, b i c realan, tada kao rezultat izvršavanja instrukcije read (a, b, c); i unesite redak s tipkovnice:

4.5 23 0.17

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

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

Pročitajte (a, B); čitanje (C);

i niz za unos tipkovnice

10 25 18

varijable će dobiti sljedeće vrijednosti: a = 10, b = 25. Pročitajte instrukciju (C); dodijelit će vrijednost 18 varijabli c.

Instrukcija readln razlikuje se od instrukcije read po tome što nakon odabira sljedećeg broja iz niza unesenog s tipkovnice i njegovog dodjeljivanja zadnjoj varijabli s popisa pročitajte upute, ostatak retka je izgubljen, a sljedeća naredba read ili readln zahtijevat će novi unos.

Na primjer, kao rezultat izvršavanja instrukcije:

Readln (a, B); čitanje (C);

i unos linije s tipkovnice

10 25 18

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

Svakoj instrukciji za čitanje ili čitanje treba prethoditi instrukcija za pisanje kako bi se korisniku reklo koje podatke program od njega očekuje. Na primjer, fragment programa za izračun troškova kupnje može izgledati ovako:

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

Ako tip podataka unesenih s tipkovnice ne odgovara ili se ne može pretočiti u tip varijabli čija su imena navedena u naredbi read (readln), tada se program ruši (instrukcije koje slijede nakon čitanja se ne izvršavaju) i pojavljuje se poruka o pogrešci .

Najbolji članci na temu