Operatorii de introducere a datelor ReadLn și Read. Read and ReadLn routines Ce face readln în pascal

Cititși ReadLn citiți informații de pe dispozitivul de intrare standard. În aplicațiile de consolă, acest dispozitiv poate fi, de exemplu, o tastatură (mai precis, datele introduse de la tastatură), în aplicațiile grafice, un fișier pe disc.

Adică, aceste proceduri sunt „antipode” - efectuează acțiuni opuse.

Procedurile Read și ReadLn efectuează acțiuni similare. Principala diferență dintre ele este următoarea: procedura ReadLn, după finalizarea intrării, efectuează un flux de linie (și în cazul fișierelor, citește fișierul rând cu rând). Și procedura de citire citește datele la rând - fără flux de linie.

NOTĂ:

În Turbo Pascal, nu-mi amintesc acest lucru (poate că am uitat doar), dar intrarea de la tastatură poate fi efectuată numai prin procedura ReadLn, iar procedura de citire, din anumite motive, nu funcționează.

Sintaxa pentru ieșirea consolei:

procedură Citiți (Args: Arguments);

Sintaxa pentru ieșire în fișier:

procedură Citit ( var F: Text; Args: Argumente);

Argumentele ( Argumente) poate fi diferit. Dacă sunt utilizate mai multe variabile, acestea sunt listate separate prin virgule. De exemplu:

Var x, y: întreg; z: real; str: șir; begin WriteLn ("Introduceți trei numere întregi separate printr-un spațiu:"); ReadLn (x, y, z); WriteLn ("Ai introdus:", x, ",", y, ",", z: 0: 2); ReadLn (str); WriteLn (str + str); ReadLn; Sfârșit.

După cum sa menționat deja, atunci când sunt tastate de pe consolă, aceste variabile pot fi de diferite tipuri. Dar, spre deosebire de procedurile Write / WriteLn, nu este permisă utilizarea (și acest lucru este logic))).

IMPORTANT!
La introducerea datelor, trebuie avut în vedere faptul că, dacă valoarea introdusă de utilizator are un tip diferit de tipul variabilei în care este introdusă această valoare, atunci va apărea o eroare de execuție. Dacă, de exemplu, în exemplul de mai sus, utilizatorul introduce o valoare reală (cum ar fi 3.14) ca primul număr, programul se va bloca, deoarece variabila x are un tip întreg.

Când citiți dintr-un fișier, puteți lucra atât cu fișiere text, cât și cu fișiere text.

Dacă F(a se vedea sintaxa) este un fișier tastat, apoi variabilele trecute ca parametri (Args) trebuie să aibă același tip ca cel specificat pentru fișier F... Fișierele netipate nu sunt permise. Dacă parametrul F nu este specificat, atunci se presupune că citirea se face din intrarea standard.

Dacă fișierul F este de tip Text, atunci variabilele trebuie să fie de tip sau.

Dacă, la citirea fișierului, nu există date disponibile pentru citire, atunci o valoare goală este returnată variabilei F (0 - pentru, șir gol - pentru șiruri).

În cazul utilizării procedurii ReadLn, adică la citirea datelor rând cu rând, sfârșitul liniei este indicat de o anumită secvență de caractere (care depinde exact de sistemul de operare, pentru DOS / Windows acestea sunt două personaje - # 10 și # 13).

Marcatorul de sfârșit de linie nu face parte din linia de citire și este ignorat.

Dacă apare o eroare în timpul executării procedurii Read / ReadLn, se generează o eroare de execuție. Acest comportament nu este întotdeauna acceptabil (de exemplu, în timp ce citiți un fișier). Prin urmare, în unele cazuri, generarea de erori este dezactivată. Puteți face acest lucru cu.

NOTĂ:

Rutina ReadLn este adesea utilizată în diverse programe de depanare și tutoriale pentru a împiedica închiderea automată a aplicației consolei după executare. Pentru a face acest lucru, la sfârșitul programului, pur și simplu scrieți (ca în exemplul de mai sus):

Adică doar numele procedurii fără parametri. În acest caz, programul va aștepta apăsarea tastei ENTER. Prin urmare, programul nu se va termina până când nu este apăsată tasta ENTER și acest lucru vă va permite să vedeți rezultatul programului. Desigur, în sistemul de operare

Cred că mulți vor fi interesați de asta)))

Citiți și citiți declarațiile

Instrucțiunea de citire este destinată introducerii valorilor variabilelor (date inițiale) de la tastatură. În general, instrucțiunea arată astfel:

citire (Variabila1, Variabila2, ... VariabilaN)

unde variabile este numele unei variabile a cărei valoare trebuie introdusă de la tastatură în timpul executării programului.

Iată câteva exemple de scriere a unei declarații citite:

Citeste o); citit (Cena, Kol);

Când instrucțiunea citită este executată, se întâmplă următoarele:

1. Programul își întrerupe activitatea și așteaptă până când datele necesare sunt tastate pe tastatură și tasta este apăsată .

2 http://tissot.ua/ cumpărați un ceas cumpărați un ceas Kiev. ... După apăsarea tastei valoarea introdusă este atribuită variabilei denumite în instrucțiune.

De exemplu, ca urmare a executării instrucțiunii

citit (Temperat);

și introducând linia 21 de la tastatură, valoarea variabilei Temperat va fi numărul 21.

O declarație citită vă permite să obțineți valorile mai multor variabile. În acest caz, numerele introduse trebuie să fie tastate într-o singură linie și separate prin spații. De exemplu, dacă tipul variabilelor a, b și c este real, atunci ca urmare a executării instrucțiunii citite (a, b, c); și șir de introducere a tastaturii:

4.5 23 0.17

variabilele vor avea următoarele valori:

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

Dacă linia conține mai multe numere decât variabilele specificate în instrucțiunea de citire, atunci restul liniei va fi procesată de următoarea instrucțiune citită http://crystal.lviv.ua cristal de cristal. ... https://mainvisa.com.ua invitație foto în Ucraina pentru cetățeni străini. ... De exemplu, ca urmare a executării instrucțiunilor

citiți (A, B); citit (C);

și șir de introducere a tastaturii

10 25 18

variabilele vor primi următoarele valori: A = 10, B = 25. Citiți instrucțiunea (C); va atribui o variabilă cu o valoare de 18.

Instrucțiunea readln diferă de instrucțiunea de citire prin aceea că după alocarea următorului număr din linia introdusă de la tastatură și atribuirea acesteia la ultima variabilă din lista instrucțiunii readin, restul liniei se pierde, iar următoarea citire sau instrucțiunile de readinere vor necesita noi intrări.

De exemplu, ca urmare a executării instrucțiunii

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

și tastarea șirului

10 25 18

variabilele vor primi următoarele valori: A = 10, B = 25. După aceea programul va aștepta introducerea unui nou număr pentru a-l atribui variabilei c.

Fiecare instrucțiune de citire sau readinere ar trebui să fie precedată de o instrucțiune de scriere pentru a spune utilizatorului ce date așteaptă programul de la el. De exemplu, un fragment al programului pentru calcularea costului unei achiziții poate arăta ca:

writeln ("Introduceți datele inițiale.");

Scrieți („Prețul produsului:”);

Readln (Сenа);

write ("Cantitatea din lot:");

Readln (Kol);

scrie („Reducere:”);

readln (Skidka);

Dacă tipul de date introduse de la tastatură nu se potrivește sau nu poate fi convertit la tipul de variabile ale căror nume sunt specificate în instrucțiunea de citire (readin), programul se blochează (instrucțiunile după citire nu sunt executate) și se afișează un mesaj pe ecran despre eroare.

autor Alexandru a pus o întrebare în secțiune Alte limbi și tehnologii

De ce Pascal a citit și readln dacă citit traduce și o linie, deși în teorie nu ar trebui? și am primit cel mai bun răspuns

Răspuns de la Skipy _ [guru]
readln - preia o valoare din bufferul de intrare într-un parametru, șterge întregul buffer de intrare de la tastatură
și citit - ia valoarea din bufferul de intrare în parametru și nu o șterge în buffer, dar lasă valoarea !! !
alimentare automată de linie la tastare - peste tot
adică readln este o intrare sigură
citire- intrare nesigură
exemplu:
var
a, b: întreg;
începe
Citeste o); (utilizator introdus: 4, 5 a = 4)
(în bufferul de intrare numărul 5!!}
citiți (b); (aici a introdus un număr: 6, dar b = 5)
(numărul 6 rămâne în bufferul de intrare!!}
---
readln (a); (utilizator introdus: 4, 5; a = 4)
(bufferul de intrare este clar!!}
readln (a); (utilizatorul a introdus numărul 6 și b = 6)
(bufferul de intrare este clar!!}
readln (b);
Sfârșit.
Dimpotrivă, nu există o detectare automată a tipului valorii de intrare, totul este determinat de convențiile din specificatorul de format.

Răspuns de la Yoali-Mali[guru]
Poate fi explicat într-un mod mai simplu, fără probleme speciale:
Când procedura de citire este executată, valoarea următoarelor date este citită din aceeași linie, iar atunci când procedura readln este executată, valoarea următoarelor date este citită dintr-o nouă linie.
Prin urmare, operatorul Readln (b1, b2, ... bn); oferă introducerea datelor în BAR.
După introducerea fiecărei variabile b1, b2, ..bn, cursorul se deplasează la începutul unei noi linii.
Citește operatorul (b1, b2, ... bn); oferă introducerea datelor în LINE


Răspuns de la VT-107 FIT[guru]
Aici Dmitry a rupt ceva, dar nu adevărat. Și despre un tampon complet curățat și necurățat și despre siguranță. De asemenea, Sali nu a răspuns corect. Nu există coloane și linii, reguli complet diferite.
În primul rând, aceste proceduri nu funcționează numai cu intrarea de pe consolă, deci sunt necesare două funcții.
Citiți procedura (F, V1 [, V2, ... Vn]);
citește toate V1..Vn din flux (exact n parametri), toate datele citite vor fi șterse. Tot ce se va întâmpla după aceste date va rămâne neschimbat.
Citirea unei linii va citi totul până la o nouă linie sau la sfârșitul fișierului. Apelurile ulterioare pentru citire vor returna un șir gol. Și caracterul newline nu va fi eliminat din flux.
Dacă citiți un caracter, atunci în funcție de setări, caracterul liniei noi poate fi citit ca un caracter (26)
La citirea numerelor, toate spațiile, filele, întreruperile de linie sunt omise. Și următoarea lectură va începe cu caracterul care urmează numărului citit. Din nou, caracterele inutile pot fi omise.
procedura ReadLn ([var F: Text;] V1 [, V2, ..Vn]);
citește din fluxul V1, Vn (adică funcționează ca citit) și apoi ignoră toate caracterele până la noua linie, inclusiv. Toate caracterele după o întrerupere de linie vor rămâne neschimbate.
Trecerea la o nouă linie se efectuează deoarece apăsați Enter în consolă.
Despre siguranță extrem de descurajată. Acestea sunt funcții cu scopuri diferite. Orice utilizare necorespunzătoare a acestora nu este sigură, este corectă și în mod corespunzător sigură.

Instrucțiunea de citire este destinată introducerii valorilor variabilelor (date inițiale) de la tastatură. În general, instrucțiunea arată astfel:

read (Variable!, Variable2, ... Variable, unde variabile este numele variabilei, a cărei valoare trebuie introdusă de la tastatură în timpul executării programului.

Iată câteva exemple de scriere a unei declarații citite:

Citeste o); citit (Cena, Kol);

Când instrucțiunea citită este executată, se întâmplă următoarele:

1. Programul își întrerupe activitatea și așteaptă până când datele necesare sunt tastate pe tastatură și tasta este apăsată .

2. După apăsarea tastei valoarea introdusă este atribuită variabilei denumite în instrucțiune.

De exemplu, ca urmare a executării instrucțiunii

Citiți (Tempérât);

și tastând linia 21, valoarea Tempérât va fi 21.

O declarație citită vă permite să obțineți valorile mai multor variabile. În acest caz, numerele introduse trebuie să fie tastate într-o singură linie și separate prin spații. De exemplu, dacă tipul variabilelor a, b și c este real, atunci ca urmare a executării citirii (a, b, c); și șir de introducere a tastaturii:

4.5 23 0.17

variabilele vor avea următoarele valori: a = 4,5; b = 23, o; c = 0,17.

Dacă linia conține mai multe numere decât variabilele specificate în instrucțiunea citită, atunci restul liniei va fi procesată de următoarea instrucțiune citită. De exemplu, ca urmare a executării instrucțiunilor:

Citiți (a, B); citit (C);

și șir de introducere a tastaturii

10 25 18

variabilele vor primi următoarele valori: a = 10, b = 25. Citiți instrucțiunea (C); va atribui o variabilă cu o valoare de 18.

Instrucțiunea readln diferă de instrucțiunea de citire prin aceea că, după selectarea numărului următor din linia introdusă de la tastatură și atribuirea acesteia la ultima variabilă din lista instrucțiunii readln, restul liniei se pierde, iar următoarea citire sau instrucțiunea readln va necesita intrare nouă.

De exemplu, ca urmare a executării instrucțiunii:

Readln (a, B); citit (C);

și tastarea șirului

10 25 18

variabilele vor primi următoarele valori: a = 10, b = 25. După aceea, programul va aștepta introducerea unui nou număr pentru a-l atribui variabilei c.

Fiecare instrucțiune de citire sau citire ar trebui să fie precedată de o instrucțiune de scriere pentru a spune utilizatorului ce date așteaptă programul de la el. De exemplu, un fragment al programului pentru calcularea costului unei achiziții poate arăta ca:

Writeln („Introduceți datele originale.”); scrie („Prețul produsului:”); readln (Sepa); write ("Cantitatea din lot:"); readln (Kol); scrie („Reducere:”); readln (Skidka);

Dacă tipul de date introduse de la tastatură nu se potrivește sau nu poate fi convertit la tipul de variabile ale căror nume sunt specificate în instrucțiunea read (readln), programul se blochează (instrucțiunile după citire nu sunt executate) și se afișează un mesaj pe ecran despre eroare.

Temă: Intrare ieșire. Citiți (Readln), scrieți (Writeln) declarații. Cele mai simple programe liniare.

Să rezolvăm problema comentând fiecare dintre acțiunile noastre cu acolade. Amintiți-vă că comentariul nu este perceput de computer, dar avem nevoie de el pentru a înțelege mai bine cum funcționează programul.

Sarcină ... Scrieți un program care șterge ecranul și calculează produsul din două numere furnizate de utilizator.

Program Proizv2;
Utilizări
Crt; (Conectați modulul Crt)
Var
number1, (variabilă care va conține primul număr)
număr2, (variabilă care va conține al doilea număr)
rezult (variabilă care va conține rezultatul)
: întreg;
Începe
ClrScr; (Folosim procedura pentru ștergerea ecranului din modulul Crt)
Scrieți („Introduceți primul număr”);
Readln (numărul1);
(Numărul introdus de utilizator este citit în variabila număr1)
Scrieți („Introduceți al doilea număr”);
(Afișarea caracterelor scrise între apostrofe)
Readln (număr2);
(Numărul introdus de utilizator este citit în variabila număr2)
rezult: = number1 * number2;
(Găsiți produsul numerelor introduse și atribuiți-l variabilei rezult)
Scrieți („Produsul numerelor”, numărul 1, „și„, numărul 2, „egal”, rezultat);
(Afișăm o linie care conține răspunsul la problemă)
Readln; (Procedura de întârziere a ecranului)
Sfârșit.

Pentru a înțelege mai bine acțiunea unui program, tastați-l pe computer și testați acțiunea acestuia. Raspunde la intrebari:

  • de ce programul se numea Proizv2?
  • De ce ați plasat modulul Crt în secțiunea Utilizări?
  • care este scopul variabilelor number1, number2, rezult?
  • ce tip sunt aceste variabile? ce înseamnă?
  • Dacă atribuim variabilele număr1 și număr2 valorilor 5 și respectiv 7, ce linie va produce computerul atunci când execută ultima procedură de scriere? Notează-l într-un caiet.
  • în ce linii se solicită utilizatorului valorile variabilelor?
  • în ce linie are loc înmulțirea numerelor?
  • ce face operatorul de atribuire în acest program?

Exercițiu ... Modificați programul astfel încât să solicite utilizatorului o altă variabilă și să afișeze rezultatul produsului din trei numere.

Scrieți și scrieți declarații

Am folosit deja operatorii Write și WriteLn, dar trebuie să ne oprim asupra regulilor de utilizare a acestor operatori în detaliu.

Scrie (în engleză pentru a scrie) - un operator care este utilizat pentru a afișa informații pe ecran. Operatorul WriteLn efectuează aceeași acțiune, dar din moment ce are și finalul Ln (linie - linie engleză, linie), atunci după afișarea mesajului dorit pe ecran, deplasează în plus cursorul pe linia următoare.

Forma generală:
Scrie (lista expresiilor)
WriteLn (lista de expresii)

Procedurile Write și WriteLn sunt utilizate nu numai pentru a afișa rezultatul, ci și pentru a afișa diverse mesaje sau solicitări. Acest lucru vă permite să purtați un dialog cu utilizatorul, să-i spuneți când trebuie să introducă valori, când obține un rezultat, când a greșit etc.

De exemplu, când se execută procedura WriteLn („Număr găsit”, a), va fi tipărită o linie închisă în apostrofe, iar apoi se afișează valoarea variabilei a.

Instrucțiunea WriteLn poate fi utilizată fără parametri. În acest caz, va fi tipărită o linie formată din spații, iar cursorul va fi mutat pe o altă linie. Uneori avem nevoie de el pentru o mai bună percepție a introducerii datelor.

Citiți și citiți Operatorii

Să ne amintim că scopul principal al unui computer este de a salva munca umană. Prin urmare, este necesar să oferiți o oportunitate, după ce ați scris odată un program, să îl reutilizați, de fiecare dată introducând date diferite. Această flexibilitate în limbă este asigurată de declarațiile Read și ReadLn. Acești operatori introduc informații de la tastatură.

Forma generală:
Citire (variabilă, variabilă ...)
ReadLn (variabil, variabil ...)

Procedura de citire se așteaptă să fie introduse valorile listate între paranteze. Datele introduse trebuie separate între ele prin spații. Alocarea valorilor are loc pe rând.

De exemplu, dacă sunt introduse valorile 53 și X, atunci când se execută instrucțiunea Read (a, b), numărul 53 va fi atribuit variabilei a, iar litera X variabilei X. Mai mult, în pentru a evita o urgență, trebuie să determinați corect tipul de date în secțiunea Var; în cazul nostru a: întreg și b: char.

Nu există diferențe speciale în citire și scriere în utilizarea operatorilor Read și ReadLn. Adesea procedura ReadLn fără parametri este utilizată la sfârșitul programului pentru a întârzia: înainte de a apăsa tasta rezultatul executării programului rămâne pe ecran. Acest lucru este foarte util pentru analiza rezultatelor.

Notă ... Când setați întârzierea ecranului, acordați atenție intrării anterioare. Dacă datele au fost solicitate prin procedura de citire, nu va exista nicio întârziere.

Să rezolvăm o problemă în care vom lua în considerare toate utilizările posibile ale acestor proceduri.

Sarcină ... Găsiți media a trei numere.

Notă ... Pentru a găsi media mai multor numere, adăugați aceste numere și împărțiți suma la numărul acestor numere.

Tastați textul problemei și luați în considerare cu atenție fiecare linie. Numele programului Srednee reflectă conținutul sarcinii. Apropo, să fim de acord că numele programului și numele fișierului care conține acest program sunt aceleași. Urmează conexiunea modulului Crt. În secțiunea Var, primul, al doilea, al treilea sunt descrise ca variabile de tip întreg, iar suma este de tip real. Secțiunea operator începe cu rutina de ecran standard ClrScr (Clear Screen) găsită în modulul Crt. Apoi, cu declarația Write, afișăm mesajul ‘Introduceți primul număr’, după ce îl primiți, utilizatorul trebuie să introducă numărul.

Acum computerul ar trebui să citească caracterele introduse și să le pună în prima variabilă, acest lucru se va întâmpla când se execută următoarea instrucțiune ReadLn (First). Apoi, folosind instrucțiunea Write, solicităm valorile a încă două numere și le citim în a doua și a treia variabilă. Apoi le calculăm suma și atribuim numărul rezultat variabilei Sumă. Pentru a găsi media, acum trebuie să împărțiți numărul rezultat la 3 și să stocați rezultatul într-o variabilă.

Nu este deloc necesar să declarați o altă variabilă pentru a salva rezultatul. Puteți, la fel ca în programul nostru, să împărțiți valoarea variabilei Sum la 3 și să atribuiți din nou rezultatul aceleiași variabile Sum. Acum puteți afișa rezultatul calculelor pe ecran folosind procedura de scriere. Și, în sfârșit, ultima rutină ReadLn ne va ține ieșirea pe ecran până când este apăsată o tastă.

Apăsați tastele +... Introduceți valorile variabilelor 5, 7 și 12, veți vedea următoarele pe ecran:

Media 5, 7 și 12 este 8,00

Uitați-vă cu atenție la această linie și comparați-o cu linia de afișare a rezultatului din programul nostru. Testați programul de câteva ori pentru diferite valori variabile.

Alegeți o problemă cu profesorul de rezolvat din următoarea listă:

  1. Introduceți două numere a și b. Utilizați operatorul de atribuire pentru a schimba valorile lor:
    a) folosind o variabilă intermediară (x: = a; a: = b; b: = x);
    b) fără a utiliza o variabilă intermediară (a: = a-b; b: = a + b; a: = b-a).
  2. Scrieți un program care cere utilizatorului un număr întreg, un număr real, un caracter arbitrar și un șir, apoi tipăriți totul pe o singură linie.
  3. Afișează-ți numele de familie, prenumele și patronimicul și două rânduri mai târziu - data ta de naștere.
  4. Scrieți un program pentru tipărirea uneia dintre forme cu asteriscuri:
    a) Pomi de Crăciun (mai mulți pomi de Crăciun);
    b) fulgi de zăpadă (mai mulți fulgi de zăpadă);
    c) o casă. De exemplu,

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

  5. Compuneți cartea de vizită.


    * Ivanov Serghei *
    * Proletarskaya 74 mp 55 *
    * Telefon 45-72-88 *
    *******************************

  6. Compuneți un dialog între utilizator și computer pe un subiect arbitrar.
    De exemplu, un aparat pune două întrebări: „Care este numele tău?” cati ani ai?"; după introducerea numelui (Anton) și a numărului (15) se afișează pe ecran „Da ... Peste 50 de ani vei avea 65 de ani, iar numele tău nu va fi Anton, ci bunicul Anton”
  7. Cereți utilizatorului două numere și afișați rezultatul sumei, diferenței, produsului și coeficientului acestor numere cu un răspuns complet.
  8. Solicitați utilizatorului două numere și afișați rezultatul unei diviziuni întregi și restul unei diviziuni întregi sub forma unui tabel. De exemplu, atunci când introduceți numerele 5 și 3, ecranul ar trebui să afișeze următorul tabel:

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

  9. Scrieți un program care cere numele animalului și un număr, apoi afișează o frază de genul „O veveriță va mânca 10 ciuperci” (când introduceți cuvântul „veveriță” și numărul 10).
  10. Organizați un dialog între vânzător (computer) și cumpărător (utilizator) la achiziționarea oricărui produs conform următoarei scheme: oferirea unui produs la un anumit preț, solicitarea sumei produsului achiziționat, determinarea și afișarea sumei de bani pe care cumpărătorul trebuie să plătească pentru achiziție.