Cum se configurează smartphone-uri și PC-uri. Portal de informare

Proceduri Read și ReadLn. Introducere în Pascal

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

citiți și citiți instrucțiunile

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

citiți (Variabila1, Variabila2, ... VariabilaN)

unde variabile este numele variabilei a cărei valoare trebuie introdusă de la tastatură în timpul execuției programului.

Iată exemple de scriere a unei instrucțiuni de citire:

citeste(a); citeste(Cena,Kol);

Când instrucțiunea de citire 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 este apăsată o tastă .

Reparatie laptop 2 calculatoare Deria in Stavropol ITGen. . După apăsarea tastei valoarea introdusă este atribuită variabilei al cărei nume este specificat în instrucțiune.

De exemplu, ca rezultat al executării instrucțiunii

read(Temperat);

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

O singură instrucțiune citită poate prelua valorile mai multor variabile. În acest caz, numerele introduse trebuie introduse pe o singură linie și separate prin spații. De exemplu, dacă tipul de variabile a, b și c este real, atunci ca urmare a executării instrucțiunii read(a,b,c); și introduceți linia de la tastatură:

4.5 23 0.17

variabilele vor avea următoarele valori:

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

Dacă pe o linie există mai multe numere decât variabile specificate în instrucțiunea de citire, atunci restul liniei va fi procesat de următoarea instrucțiune de citire. De exemplu, ca rezultat al executării instrucțiunilor

citeste(A,B);

citeste(C);

10 25 18

și șirul de intrare de la tastatură

variabilele vor primi următoarele valori: A = 10, B = 25. Citiți instrucțiunea (C); va atribui valoarea 18 variabilei c.

Instrucțiunea readln diferă de instrucțiunea de citire prin aceea că, după selectarea următorului număr din șirul introdus de la tastatură și atribuirea acestuia ultimei variabile din lista instrucțiunii readin, restul liniei se pierde și următoarea citire sau instrucțiunile de citire vor necesita o nouă intrare.

De exemplu, ca rezultat al executării instrucțiunii

readin(A,B);

10 25 18

citeste(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 dintr-un program pentru calcularea costului unei achiziții poate arăta astfel:

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

Write("Prețul articolului:");

Readln(Cena);

scrie ("Cantitatea în lot:");

Readln(Kol);

scrie ("Reducere:");

readln(Skidka);

Dacă tipul de date introduse de la tastatură nu se potrivește sau nu poate fi turnat cu tipul de variabile ale căror nume sunt specificate în instrucțiunea de citire (readin), atunci programul se blochează (instrucțiunile care urmează citirii nu sunt executate) și este un mesaj imprimat pe ecran despre eroare.

Subiect: Intrare - ieșire. Operatori Citire (Readln), Scriere (Scrie). Cele mai simple programe liniare.

Să rezolvăm problema comentând fiecare dintre acțiunile noastre între paranteze. Să vă reamintim 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 a două numere introduse de utilizator.

ProgramProizv2;
Utilizări
Crt (Conectează modulul Crt);
Var
număr1, (variabilă care va conține primul număr)
număr2, (variabilă care va conține al doilea număr)
rezultat (variabilă care va conține rezultatul)
:întreg;
ÎNCEPE
ClrScr;(Folosim procedura de ștergere a ecranului din modulul Crt)
Scrie ("Introduceți primul număr");
Readln(numar1);
(Numărul introdus de utilizator este citit în variabila numărul 1)
Scrie ("Introduceți al doilea număr");
(Afișăm caracterele scrise între apostrofe)
Readln(numar2);
(Numărul introdus de utilizator este citit în variabila number2)
rezultat:= număr1 * număr2;
(Găsim produsul numerelor introduse și îl atribuim variabilei rezult)
Scrieți ("Produsul numerelor", număr1, " și ", număr2, " egal cu ", 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 funcționarea programului, tastați-l pe computer și testați-i funcționarea. Răspunde la întrebările:

  • de ce se numea programul Proizv2?
  • De ce a fost plasat modulul Crt în secțiunea Utilizări?
  • care este scopul variabilelor număr1, număr2, rezultat?
  • ce tip sunt aceste variabile? ce înseamnă?
  • Dacă atribuiți variabilelor număr1 și număr2 valorile 5 și, respectiv, 7, atunci ce linie va produce computerul la executarea ultimei proceduri Write? Notează-l în caiet.
  • În ce rânduri i se solicită utilizatorului valori variabile?
  • Care linie are loc înmulțirea numerelor?
  • ce face operatorul de atribuire în acest program?

Exercita . Modificați programul astfel încât să solicite utilizatorului o altă variabilă și să imprime rezultatul produsului a trei numere.

Operatori Write și WriteLn

Am folosit deja operatorii Write și WriteLn, dar trebuie să aruncăm o privire mai atentă la regulile de utilizare a acestor operatori.

Write (engleză: write) - un operator care este folosit pentru a afișa informații pe ecran. Operatorul WriteLn efectuează aceeași acțiune, dar întrucât are și terminația Ln (linie - linie engleză, linie), atunci după afișarea pe ecran a mesajului dorit, mută suplimentar cursorul pe linia următoare.

Vedere generala:
Scrie (lista de expresii)
WriteLn (lista de expresii)

Procedurile Write și WriteLn sunt folosite nu numai pentru a scoate rezultatul, ci și pentru a afișa diverse mesaje sau interogări. Acest lucru vă permite să conduceți un dialog cu utilizatorul, să îl informați când trebuie să introducă valori, când primește un rezultat, când a greșit etc.

De exemplu, la executarea procedurii WriteLn('Numărul găsit ',a), se va tipări linia cuprinsă în apostrofe, iar apoi se va tipări valoarea variabilei a.

Operatorul WriteLn poate fi folosit și fără parametri. În acest caz, va fi imprimată o linie formată din spații, iar cursorul va fi mutat pe o altă linie. Uneori avem nevoie de acest lucru pentru o mai bună percepție a datelor introduse.

Operatori Read și ReadLn

Să ne amintim că scopul principal al unui computer este de a economisi munca umană. Prin urmare, este necesar să ne asigurăm că, odată scris un program, acesta poate fi utilizat în mod repetat, introducând de fiecare dată date diferite. Această flexibilitate în limbaj este oferită de operatorii Read și ReadLn. Acești operatori introduc informații de la tastatură.

Vedere generala:
Citiți (variabilă, variabilă...)
ReadLn(variabilă, variabilă...)

Când se execută procedura de citire, se așteaptă ca valorile enumerate în paranteze să fie introduse. Datele introduse trebuie separate între ele prin spații. Atribuirea valorilor are loc pe rând.

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

Nu există diferențe speciale la citire și scriere în utilizarea operatorilor Read și ReadLn. Adesea, procedura ReadLn fără parametri este utilizată la sfârșitul programului pentru o întârziere: până când tasta este apăsată rezultatul executării programului rămâne pe ecran. Acest lucru este foarte util pentru a analiza rezultatele.

Nota . Când setați întârzierea ecranului, acordați atenție introducerii anterioare. Dacă datele au fost solicitate prin procedura Citire, nu va exista nicio întârziere.

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

Sarcină . Aflați media a trei numere.

Nota . Pentru a găsi media mai multor numere, trebuie să adunați aceste numere și să împărțiți suma la numărul acestor numere.

Tastați textul problemei și luați în considerare cu atenție fiecare rând. Numele programului Srednee reflectă conținutul sarcinii. Apropo, să fim de acord că numele programului și numele fișierului care conține acest program coincid. Urmează conectarea modulului Crt. Secțiunea Var descrie First, Second, Third ca variabile de tip întreg și Sum ca tip real. Secțiunea operator începe cu procedura standard ClrScr (Clear Screen), care se află în modulul Crt. Apoi, folosind operatorul Write, afișăm mesajul ‘Introduceți primul număr’, la primirea căruia utilizatorul trebuie să introducă numărul.

Acum computerul trebuie să citească caracterele introduse și să le stocheze în prima variabilă, acest lucru se va întâmpla la executarea următoarei instrucțiuni ReadLn(First). Apoi, folosind operatorul Scriere, solicităm valorile a încă două numere și le citim în variabilele a doua și a treia. Apoi calculăm suma lor ș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ă descrii o altă variabilă pentru a salva rezultatul. Puteți, ca și î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 Write. Și, în sfârșit, ultima procedură ReadLn va întârzia ieșirea noastră pe ecran până când o tastă este apăsată.

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

Priviți cu atenție această linie și comparați-o cu linia rezultată din programul nostru. Testați programul de mai multe ori pentru diferite valori variabile.

Cu profesorul dvs., alegeți problemele de rezolvat din următoarea listă:

  1. Introdu două numere a și b. Utilizați operatorul de atribuire pentru a-și schimba valorile:
    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 imprimă totul pe o singură linie.
  3. Afișați numele de familie, prenumele și patronimul, iar după două rânduri - data nașterii.
  4. Scrieți un program pentru a imprima una dintre formele cu stele:
    a) brazi de Crăciun (mai mulți brazi de Crăciun);
    b) fulgi de nea (mai multi fulgi de nea);
    c) o casă, de exemplu.

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

  5. Creează-ți propria carte de vizită.


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

  6. Compuneți un dialog între utilizator și computer pe o temă arbitrară.
    De exemplu, aparatul pune două întrebări: „Cum te cheamă?” și „Câți ani ai?”; după introducerea numelui (Anton) și a numărului (15), se afișează „Da... Peste 50 de ani vei împlini deja 65 de ani, iar numele tău nu va fi Anton, ci bunicul Anton”
  7. Solicitați utilizatorului două numere și afișați rezultatul sumei, diferenței, produsului și coeficientului acestor numere ca răspuns complet.
  8. Cereți utilizatorului două numere și afișați rezultatul împărțirii întregi și restul divizării întregului sub forma unui tabel. De exemplu, la introducerea numerelor 5 și 3, pe ecran ar trebui să apară următorul tabel:

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

  9. Scrieți un program care cere numele unui animal și un număr, apoi afișează o expresie precum „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 (calculator) și cumpărător (utilizator) la achiziționarea oricărui produs după următoarea schemă: oferirea produsului la un anumit preț, solicitarea cantității produsului achiziționat, determinarea și afișarea sumei de bani care cumpărătorul trebuie să plătească pentru cumpărare.

Limbajul de programare Pascal folosește instrucțiuni precum read și readLn. Ce sunt ei?

Ce este o declarație citită?

Această instrucțiune este menită să ofere introducerea diferitelor valori variabile de la tastatura computerului atunci când se utilizează limbajul Pascal. Schema de utilizare a instrucțiunii în cauză pare simplă: ca citire („valoare variabilă”).

În practică, instrucțiunea de citire este utilizată pentru a se asigura că anumite date sunt citite dintr-un fișier și atribuirea ulterioară a valorilor extrase din datele corespunzătoare variabilelor care sunt specificate la apelarea procedurii.

Dacă utilizatorul greșește la introducerea datelor, aceasta nu corespunde niciunui tip de variabilă reflectată în instrucțiuni, programul oprește executarea comenzilor. În același timp, pe ecranul computerului apare un mesaj care afirmă că a apărut o eroare în aplicație.

Dacă programatorul folosește mai multe instrucțiuni de citire, atunci datele vor fi introduse cumva pe o singură linie. O tranziție la următoarea este posibilă numai dacă linia curentă se termină. Cu toate acestea, puteți citi informațiile aflate într-o altă linie folosind instrucțiunea readLn. Să aruncăm o privire mai atentă asupra caracteristicilor sale.

Ce este instrucțiunea readLn?

Esența instrucțiunii readLn este de a stabili o condiție în program în care:

  • orice număr introdus în linie este atribuit ultimei variabile conform instrucțiunii;
  • zona rămasă a liniei nu este procesată de program, în timp ce următoarea instrucțiune va necesita o nouă intrare.

Deci, puteți introduce instrucțiunile:

readLn(C,D); citeste(E);

Și dacă după aceasta introduceți seria 1 2 3 de la tastatură, atunci variabila C va dobândi valoarea 1, D - 2. Însă programul nu va atribui o anumită valoare variabilei E până când utilizatorul introduce un nou număr.

Ca și în cazul instrucțiunii de citire, dacă utilizatorul introduce un tip de date incorect folosind comanda readLn, programul se iese și afișează un mesaj care indică faptul că a apărut o eroare.

Comparaţie

Principala diferență dintre readLn și read este că prima procedură presupune mutarea programului la linia fișierului care urmează celei în care sunt scrise instrucțiunile. A doua procedură permite programului să citească datele aflate în linia următoare doar cu permisiunea utilizatorului - dacă acesta apasă Enter.

În practică, instrucțiunea readLn este folosită cel mai adesea pentru a oferi o întârziere între rezultatul execuției unei aplicații și trecerea la următoarea instrucțiune. Întârzierea corespunzătoare durează până când utilizatorul apasă Enter.

După ce am stabilit care este diferența dintre readLn și read în limbajul Pascal, înregistrăm concluziile în tabel.

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

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

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

NOTA:

Nu îmi amintesc acest lucru în Turbo Pascal (poate că tocmai am uitat), dar introducerea de la tastatură poate fi efectuată numai folosind procedura ReadLn și, din anumite motive, procedura Read nu funcționează.

Sintaxă pentru ieșirea consolei:

procedură Citiți(Argumente: Argumente);

Sintaxă pentru ieșirea în fișier:

procedură Citire( var F:Text; Argumente: Argumente);

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

Var x, y: întreg; z:real; str:șir; begin WriteLn("Introduceți trei numere întregi separate prin spațiu:"); ReadLn(x, y, z); WriteLn("Ați 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 introduse din 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, rețineți că, dacă valoarea introdusă de utilizator este de alt tip decât tipul variabilei în care este introdusă această valoare, va apărea o eroare de rulare. Dacă, de exemplu, în exemplul de mai sus, utilizatorul introduce o valoare reală (cum ar fi 3.14) ca prim număr, programul se va bloca deoarece variabila x este de tip întreg. Când citiți dintr-un fișier, puteți lucra atât cu fișiere tastate, cât și cu fișiere text. La introducerea datelor, rețineți că, dacă valoarea introdusă de utilizator este de alt tip decât tipul variabilei în care este introdusă această valoare, va apărea o eroare de rulare. Dacă, de exemplu, în exemplul de mai sus, utilizatorul introduce o valoare reală (cum ar fi 3.14) ca prim număr, programul se va bloca deoarece variabila x este de tip întreg. Dacă La introducerea datelor, rețineți că, dacă valoarea introdusă de utilizator este de alt tip decât tipul variabilei în care este introdusă această valoare, va apărea o eroare de rulare. Dacă, de exemplu, în exemplul de mai sus, utilizatorul introduce o valoare reală (cum ar fi 3.14) ca prim număr, programul se va bloca deoarece variabila x este de tip întreg. F

(vezi sintaxa) este un fișier tastat, apoi variabilele transmise ca parametri (Args) trebuie să aibă același tip ca cel specificat pentru fișier La introducerea datelor, rețineți că, dacă valoarea introdusă de utilizator este de alt tip decât tipul variabilei în care este introdusă această valoare, va apărea o eroare de rulare. Dacă, de exemplu, în exemplul de mai sus, utilizatorul introduce o valoare reală (cum ar fi 3.14) ca prim număr, programul se va bloca deoarece variabila x este de tip întreg.. Nu sunt permise fișiere netipizate. Dacă parametrul nu este specificat, se presupune că citirea este efectuată de la dispozitivul de intrare standard. Dacă dosarul

are tip

Text

, atunci variabilele trebuie să fie de tip , sau .

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

NOTA:

În diferite programe de depanare și antrenament, procedura ReadLn este adesea folosită pentru a preveni închiderea automată a aplicației console după execuție. 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 să fie apăsată tasta ENTER. Prin urmare, programul nu se va încheia până când nu este apăsată tasta ENTER, permițându-vă să vedeți rezultatul programului. Desigur, în sistemul de operare

În secțiunea despre întrebarea De ce Pascal a citit și readln, dacă readln traduce și un rând, deși în teorie nu ar trebui? dat de autor Alexandru cel mai bun răspuns este readln - preia o valoare din tamponul de intrare într-un parametru și șterge întregul tampon de intrare de la tastatură
și citește - preia valoarea din buffer-ul de intrare în parametru și nu o șterge în buffer, ci 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(a); (utilizatorul a introdus: 4, 5 a = 4)
(în tamponul de intrare numărul este 5!!}
citeste(b); (aici a introdus numărul: 6, dar b = 5)
(numărul 6 rămâne în tamponul de intrare!!}
---
readln(a);(utilizatorul a 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 determinare 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 mai simplu, fără prea multă confuzie:
Când procedura de citire este executată, valoarea următoarelor date este citită de pe aceeași linie, iar când este executată procedura readln, valoarea următoarelor date este citită de pe o linie nouă.
Prin urmare, operatorul Readln (b1,b2,...bn); oferă introducerea datelor în COLONĂ.
După introducerea fiecărei variabile b1, b2, ..bn, cursorul se deplasează la începutul unei noi linii.
Operator Read(b1,b2,...bn); oferă introducerea datelor într-o LINE


Răspuns de la VT-107 FIT[guru]
Aici Dmitry s-a încurcat în legătură cu ceva, dar nu este corect. Și despre un tampon complet purificat și nepurificat și despre siguranță. Și Sali a răspuns greșit. Nu există coloane și rânduri, reguli complet diferite.
În primul rând, aceste proceduri funcționează nu numai cu intrarea consolei, deci sunt necesare două funcții.
procedura Read(F, V1 [, V2,...Vn ]);
citește toate V1..Vn din flux (exact n parametri), toate datele citite vor fi șterse. Tot ce urmează după aceste date va rămâne neschimbat.
Când citiți o linie, totul va fi citit până la noua linie sau la sfârșitul fișierului. Apelurile ulterioare la citire vor returna un șir gol. Iar caracterul newline nu va fi eliminat din flux.
Dacă citiți char, atunci, în funcție de setări, caracterul newline poate fi citit ca char(26)
La citirea numerelor, toate spațiile, tabulatorii și întreruperile de rând sunt omise. Și următoarea citire va începe cu simbolul care vine după numărul 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 citire) și apoi omite toate caracterele până la noua linie inclusiv. Toate caracterele după o întrerupere de rând vor rămâne neschimbate.
Tranziția la o linie nouă are loc deoarece apăsați Enter în consolă.
Este exagerat de siguranța. Acestea sunt funcții cu scopuri diferite. Orice utilizare incorectă nu este sigură, orice utilizare corectă este în mod corespunzător sigură.

Cele mai bune articole pe această temă