موضوع: ورودی – خروجی. اپراتورها Read (Readln)، Write (Writeln)

موضوع:ورودی - خروجی. اپراتورها Read (Readln)، Write (Writeln) ساده ترین برنامه های خطی

بیایید با اظهار نظر در مورد هر یک از اقدامات خود مشکل را حل کنیم بریس های فرفری. به شما یادآوری می کنیم که نظر توسط رایانه درک نمی شود، اما برای درک بهتر نحوه عملکرد برنامه به آن نیاز داریم.

وظیفه . برنامه ای بنویسید که صفحه را پاک کند و حاصل ضرب دو عدد وارد شده توسط کاربر را محاسبه کند.

ProgramProizv2;
استفاده می کند
Crt (ماژول Crt را وصل کنید)
Var
number1، (متغیری که شامل اولین عدد خواهد بود)
number2، (متغیری که حاوی عدد دوم خواهد بود)
نتیجه (متغیری که حاوی نتیجه است)
:عدد صحیح
شروع کنید
ClrScr؛ (ما از روش پاک کردن صفحه از ماژول Crt استفاده می کنیم)
Write ("اولین عدد را وارد کنید");
Readln (شماره 1)؛
(عدد وارد شده توسط کاربر در متغیر number1 خوانده می شود)
Write ("عدد دوم را وارد کنید");
(کاراکترهای نوشته شده بین آپستروف ها را نمایش می دهیم)
Readln (شماره 2)؛
(عدد وارد شده توسط کاربر در متغیر number2 خوانده می شود)
نتیجه:= عدد1 * عدد2;
(ضرب اعداد وارد شده را پیدا کرده و به متغیر rezult نسبت می دهیم)
Write("ضرب اعداد "، عدد 1، " و "، عدد 2، " برابر است "، نتیجه);
(یک خط حاوی پاسخ مسئله را نمایش می دهیم)
Readln; (روش تاخیر صفحه)
پایان

برای درک بهتر عملکرد برنامه، آن را در رایانه خود تایپ کرده و عملکرد آن را آزمایش کنید. به سوالات پاسخ دهید:

  • چرا اسم برنامه Proizv2 بود؟
  • چرا ماژول Crt در قسمت Uses قرار گرفت؟
  • هدف از متغیرهای number1, number2, result چیست؟
  • این متغیرها چه نوع هستند؟ معنی آن چیست
  • اگر به متغیرهای number1 و number2 به ترتیب مقادیر 5 و 7 را اختصاص دهید، آنگاه رایانه هنگام اجرای آخرین رویه Write چه خطی تولید می کند؟ آن را در دفتر خود یادداشت کنید.
  • در چه خطوطی از کاربر مقادیر متغیر خواسته می شود؟
  • ضرب اعداد در کدام خط اتفاق می افتد؟
  • اپراتور انتساب در این برنامه چه می کند؟

ورزش کنید . برنامه را طوری تغییر دهید که از کاربر متغیر دیگری را بخواهد و نتیجه حاصل ضرب سه عدد را چاپ کند.

اپراتورهای Write و WriteLn

ما قبلا از عملگرهای Write و WriteLn استفاده کرده‌ایم، اما باید قوانین استفاده از این عملگرها را دقیق‌تر بررسی کنیم.

Write (انگلیسی برای نوشتن) - عملگر است که استفاده می شود خروجی اطلاعاتبه صفحه نمایش عملگر WriteLn نیز همین عمل را انجام می دهد، اما از آنجایی که انتهای آن Ln (خط - خط انگلیسی، خط) نیز دارد، پس از نمایش پیام مورد نظر بر روی صفحه، مکان نما را نیز به خط بعدی منتقل می کند.

نمای کلی:
نوشتن (فهرست عبارات)
WriteLn (لیست عبارات)

رویه های Write و WriteLn نه تنها برای خروجی نتیجه، بلکه برای خروجی پیام ها یا پرس و جوهای مختلف استفاده می شوند. این به شما امکان می دهد با کاربر گفتگو کنید، به او اطلاع دهید که چه زمانی باید مقادیر را وارد کند، چه زمانی نتیجه را دریافت کرد، چه زمانی اشتباه کرد و غیره.

به عنوان مثال، هنگام اجرای روال WriteLn('Found number',a)، خط محصور در آپاستروف ها چاپ می شود و سپس مقدار متغیر a چاپ می شود.

عملگر WriteLn نیز بدون پارامتر قابل استفاده است. در این حالت یک خط متشکل از فاصله چاپ می شود و مکان نما به خط دیگری منتقل می شود. گاهی اوقات برای درک بهتر ورودی داده به این نیاز داریم.

اپراتورهای Read و ReadLn

به یاد داشته باشید که هدف اصلی یک کامپیوتر صرفه جویی در نیروی کار انسان است. بنابراین، لازم است اطمینان حاصل شود که پس از نوشتن یک برنامه، می توان از آن به طور مکرر استفاده کرد و هر بار داده های مختلف را معرفی کرد. این انعطاف در زبان توسط اپراتورهای Read و ReadLn ارائه شده است. این اپراتورها اطلاعات را از صفحه کلید وارد می کنند.

نمای کلی:
خواندن (متغیر، متغیر...)
ReadLn (متغیر، متغیر...)

زمانی که رویه Read اجرا می شود، انتظار می رود مقادیر ذکر شده در پرانتز وارد شوند. داده های وارد شده باید با فاصله از یکدیگر جدا شوند. تخصیص ارزش ها به نوبه خود انجام می شود.

به عنوان مثال، اگر مقادیر 53 و X وارد شده باشند، زمانی که عملگر Read(a,b) اجرا می شود، به متغیر a عدد 53 و به متغیر X با حرف X اختصاص داده می شود. که برای جلوگیری از یک وضعیت اضطراری، باید نوع داده را در بخش Var به درستی تعیین کنید. در مورد ما a:integer و b:char.

هنگام خواندن و نوشتن تفاوت خاصی در استفاده از عملگرهای Read و ReadLn وجود ندارد. اغلب از روش ReadLn بدون پارامتر در انتهای برنامه برای تاخیر استفاده می شود: تا زمانی که کلید فشار داده شود. نتیجه اجرای برنامه روی صفحه باقی می ماند. انجام این کار برای تجزیه و تحلیل نتایج بسیار مفید است.

توجه داشته باشید . وقتی تاخیر صفحه را تنظیم می کنید، به ورودی قبلی توجه کنید. اگر داده ها با رویه Read درخواست شده باشند، هیچ تاخیری وجود نخواهد داشت.

اجازه دهید مشکلی را حل کنیم که در آن همه استفاده های ممکن از این روش ها را در نظر بگیریم.

وظیفه . میانگین سه عدد را پیدا کنید.

توجه داشته باشید . برای یافتن میانگین چند عدد، باید این اعداد را جمع کرده و مجموع را بر تعداد این اعداد تقسیم کنید.

متن مسئله را تایپ کنید و هر خط را با دقت در نظر بگیرید. نام برنامه Srednee محتوای کار را منعکس می کند. ضمناً بیایید قبول کنیم که نام برنامه و نام فایلی که حاوی این برنامه است مطابقت دارند. بعد اتصال ماژول Crt می آید. بخش Var ابتدا، دوم، سوم را به عنوان متغیرهایی از نوع عدد صحیح و Sum را به عنوان نوع واقعی توصیف می کند. بخش عملگر با رویه استاندارد ClrScr (صفحه پاک کردن) شروع می شود که در ماژول Crt قرار دارد. در مرحله بعد با استفاده از عملگر Write پیغام Enter the first number را نمایش می دهیم که با دریافت آن کاربر باید شماره را وارد کند.

حال کامپیوتر باید کاراکترهای وارد شده را بخواند و آنها را در متغیر First ذخیره کند، این در هنگام اجرای دستور ReadLn(First) بعدی اتفاق می افتد. سپس با استفاده از عملگر Write مقادیر دو عدد دیگر را درخواست کرده و در متغیرهای Second و Third می خوانیم. سپس مجموع آنها را محاسبه کرده و عدد حاصل را به متغیر Sum نسبت می دهیم. برای یافتن میانگین، اکنون باید عدد حاصل را بر 3 تقسیم کنید و نتیجه را در یک متغیر ذخیره کنید.

برای ذخیره نتیجه اصلاً نیازی به توصیف متغیر دیگری نیست. شما می توانید مانند برنامه ما، مقدار متغیر Sum را بر 3 تقسیم کنید و نتیجه را دوباره به همان متغیر Sum اختصاص دهید. اکنون می توانید نتیجه محاسبات را با استفاده از روش Write روی صفحه نمایش دهید. و در نهایت، آخرین رویه ReadLn خروجی ما را تا زمانی که یک کلید فشار داده شود به تاخیر می اندازد.

کلیدها را فشار دهید +. مقادیر متغیرهای 5، 7 و 12 را وارد کنید، موارد زیر را در صفحه مشاهده خواهید کرد:

میانگین 5، 7 و 12 8.00 است

به دقت به این خط نگاه کنید و آن را با خط خروجی نتیجه در برنامه ما مقایسه کنید. برنامه را چند بار دیگر برای مقادیر متغیر مختلف تست کنید.

با معلم خود، مسائلی را برای حل از لیست زیر انتخاب کنید:

  1. دو عدد a و b وارد کنید. از عملگر انتساب برای مبادله مقادیر آنها استفاده کنید:
    الف) با استفاده از یک متغیر میانی (x:=a؛ a:=b؛ b:=x)؛
    ب) بدون استفاده از متغیر میانی (a:=a-b؛ b:=a+b؛ a:=b-a).
  2. برنامه ای بنویسید که از کاربر یک عدد صحیح، یک عدد واقعی، یک کاراکتر دلخواه و یک رشته بخواهد و سپس همه چیز را در یک خط چاپ کند.
  3. نام خانوادگی، نام و نام خانوادگی و بعد از دو خط - تاریخ تولد خود را نمایش دهید.
  4. برنامه ای بنویسید تا یکی از اشکال را با ستاره چاپ کند:
    الف) درختان کریسمس (چند درخت کریسمس)؛
    ب) دانه های برف (چند دانه برف)؛
    ج) برای مثال یک خانه

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

  5. کارت ویزیت خود را بسازید.


    * ایوانف سرگئی *
    * Proletarskaya 74 متر مربع 55*
    * تلفن 45-72-88 *
    *******************************

  6. یک گفتگو بین کاربر و کامپیوتر در مورد یک موضوع دلخواه بسازید.
    به عنوان مثال، دستگاه دو سوال می پرسد: "اسم شما چیست؟" و "چند سالته؟"؛ پس از وارد کردن نام (آنتون) و شماره (15) "بله... 50 سال دیگر شما 65 ساله خواهید شد و نام شما آنتون نیست، بلکه پدربزرگ آنتون" خواهد بود.
  7. از کاربر دو عدد بخواهید و نتیجه حاصل جمع، تفاضل، ضرب و ضریب این اعداد را به صورت پاسخ کامل نمایش دهید.
  8. از کاربر دو عدد بخواهید و نتیجه تقسیم اعداد صحیح و باقیمانده تقسیم عدد صحیح را به صورت جدول نمایش دهید. به عنوان مثال، هنگام وارد کردن اعداد 5 و 3، جدول زیر باید روی صفحه ظاهر شود:

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

  9. برنامه ای بنویسید که نام یک حیوان و یک عدد را بپرسد و سپس عبارتی مانند "یک سنجاب 10 قارچ می خورد" را نمایش می دهد (زمانی که کلمه "squirrel" و عدد 10 را وارد می کنید).
  10. سازماندهی گفتگو بین فروشنده (کامپیوتر) و خریدار (کاربر) هنگام خرید هر محصولی طبق طرح زیر: ارائه محصول با قیمت معین، درخواست مقدار محصول خریداری شده، تعیین و نمایش مقدار پولی که خریدار باید هزینه خرید را پرداخت کند.
بخوانیدو ReadLnخواندن اطلاعات از دستگاه ورودی استاندارد. در برنامه های کنسول، این دستگاه می تواند به عنوان مثال، یک صفحه کلید (به طور دقیق تر، داده های وارد شده از صفحه کلید)، در برنامه های گرافیکی- فایل روی دیسک

یعنی این رویه ها "ضد پا" هستند - آنها اقدامات مخالف آنها را انجام می دهند.

رویه های Read و ReadLn اقدامات مشابهی را انجام می دهند. تفاوت اصلی بین آنها در زیر است: رویه ReadLn پس از تکمیل ورودی، یک تغذیه خط را انجام می دهد (و در مورد فایل ها، فایل را خط به خط می خواند). و رویه Read داده ها را پشت سر هم می خواند - بدون فید خط.

توجه:

من این را در Turbo Pascal به خاطر ندارم (شاید فقط فراموش کرده باشم) ، اما ورودی از صفحه کلید فقط با استفاده از رویه ReadLn قابل انجام است و به دلایلی روش Read کار نمی کند.

نحو برای خروجی کنسول:

رویه Read(Args: Arguments);

نحو خروجی به فایل:

رویهبخوانید( var F: متن ارگ: برهان);

استدلال ها ( استدلال ها) ممکن است متفاوت باشد. اگر از چندین متغیر استفاده شود، آنها با کاما از هم جدا می شوند. به عنوان مثال:

Var x, y: عدد صحیح; z:real; str:string; start WriteLn("سه عدد صحیح جدا شده با فاصله را وارد کنید:"); ReadLn (x، y، z)؛ WriteLn("شما وارد کردید: ", x, ", ", y, ", ", z:0:2);

همانطور که قبلا ذکر شد، زمانی که از کنسول وارد می شوند، این متغیرها می توانند باشند انواع مختلف. اما، بر خلاف رویه های Write/WriteLn، استفاده از آن مجاز نیست (و این منطقی است))).

مهم!
هنگام وارد کردن داده ها، توجه داشته باشید که اگر مقدار وارد شده توسط کاربر از نوع متفاوتی با نوع متغیری باشد که این مقدار در آن وارد شده است، خطای زمان اجرا رخ می دهد. اگر به عنوان مثال در مثال بالا، کاربر یک مقدار واقعی (مثل 3.14) را به عنوان اولین عدد وارد کند، برنامه از کار می افتد زیرا متغیر x از نوع عدد صحیح است.

هنگام خواندن از روی یک فایل، می توانید با فایل های تایپ شده و متنی کار کنید.

اگر اف(به نحو مراجعه کنید) یک فایل تایپ شده است، سپس متغیرهایی که به عنوان پارامتر ارسال می شوند (Args) باید همان نوع مشخص شده برای فایل را داشته باشند. اف. فایل های تایپ نشده مجاز نیستند. اگر پارامتر افمشخص نشده است، فرض بر این است که خواندن از دستگاه ورودی استاندارد انجام می شود.

اگر فایل افنوع دارد متن، سپس متغیرها باید از نوع یا باشند.

اگر هنگام خواندن یک فایل، هیچ داده ای برای خواندن در دسترس نباشد، یک مقدار خالی به متغیر F برگردانده می شود (0 برای، رشته خالی- برای رشته ها).

در مورد استفاده از رویه ReadLn، یعنی هنگام خواندن داده ها خط به خط، انتهای خط با دنباله خاصی از کاراکترها نشان داده می شود (که بستگی به سیستم عامل، برای DOS/Windows این دو کاراکتر هستند - #10 و #13).

نشانگر انتهای خط بخشی از خط خوانده شده نیست و نادیده گرفته می شود.

اگر در طی مراحل Read/ReadLn خطایی رخ دهد، یک خطای زمان اجرا ایجاد می شود. این رفتار همیشه قابل قبول نیست (مثلاً هنگام خواندن یک فایل). بنابراین در برخی موارد تولید خطا غیرفعال می شود. این را می توان با استفاده از.

توجه:

در برنامه های مختلف اشکال زدایی و آموزشی، از رویه ReadLn اغلب برای جلوگیری از بسته شدن خودکار برنامه کنسول پس از اجرا استفاده می شود. برای انجام این کار، در پایان برنامه به سادگی بنویسید (مانند مثال بالا):

یعنی فقط نام رویه بدون پارامتر. در این حالت برنامه منتظر می ماند تا کلید ENTER فشار داده شود. بنابراین، تا زمانی که کلید ENTER فشار داده نشود، برنامه به پایان نمی رسد و به شما امکان می دهد نتیجه برنامه را مشاهده کنید. البته در سیستم عامل

درست مانند عملگرهای خروجی اطلاعات، عملگرهای read و reeadln عملگرهایی برای دسترسی داخلی هستند. رویه های ورود اطلاعات

عملگرهای read (read) و readln که از دو می آید کلمات انگلیسیخواندن و خط در برنامه ها برای وارد کردن اطلاعات به حافظه کامپیوتر استفاده می شوند و " خواندن" مقادیر را به یک متغیر تبدیل می کند.

بیایید کار این اپراتورها و روش های ورود اطلاعات را در نظر بگیریم.

برنامه ما دارای رویه readln(a) است. هنگام اجرای یک برنامه، با مواجهه با دستور readln، کامپیوتر در حالی که منتظر وارد شدن اطلاعات است، مکث می کند. پس از اینکه مقدار متغیر a - 16 را از صفحه کلید وارد کردیم، کامپیوتر این مقدار را به متغیر a اختصاص می دهد، یعنی. آن را به محل حافظه ای به نام a ارسال می کند و به اجرای برنامه ادامه می دهد. ما این فرآیند را " خواندن" مقادیر را به یک متغیر تبدیل می کند.

بنابراین، رویه‌های read و readln مقادیر متغیرها را "خوانده" می‌کنند و آنها را به متغیرهایی که برای آنها نوشته می‌شود اختصاص می‌دهند.

می تواند چندین متغیر از این دست وجود داشته باشد، سپس آنها را در این عملگرها با کاما از هم جدا می کنند، به عنوان مثال:

خواندن (a، b، c، n، g، j، i)، readln(e، f، k، p، d) و غیره.

تفاوت بین کار رویه های خواندن و خواندن چیست؟

رویه خواندن نیاز به ورودی یا خروجی اطلاعات در یک خط بعد از خود دارد و رویه readln به شما این امکان را می دهد که از ابتدای یک خط جدید، اطلاعات را بعد از خود وارد و خروجی کنید.

به عنوان مثال:

در برنامه: نوشتن ("مقادیر a و b را وارد کنید")؛ خواندن (الف، ب)؛

write ("اطلاعات را در یک خط وارد کنید");

هنگامی که این قسمت از برنامه اجرا می شود، همه چیزهایی که در اولین دستور نوشتن نوشته شده است روی صفحه نمایش داده می شود، سپس مکان نما در همان خط قرار می گیرد و کامپیوتر منتظر می ماند تا مقادیر a و b وارد شود. . بیایید مقادیر آنها را وارد کنیم - 2 و 3، آنها را با فاصله یا به عبارت دیگر با فاصله از هم جدا می کنیم. پس از این، همان خط اطلاعات نوشته شده در دستور نوشتن بعدی را نمایش می دهد.

روی صفحه:

مقادیر a و b را وارد کنید 2 3 اطلاعات را در یک خط وارد کنید

در برنامه:

writeln("مقادیر a، b و c را وارد کنید)؛ readln(a، b، c);

writeln("اطلاعات ورودی و خروجی از ابتدای خط");

روی صفحه:

مقادیر a، b و c را وارد کنید

ورود و خروج اطلاعات از ابتدای خط

عملیات حسابی با اعداد صحیح متغیرهای نوع عدد صحیح نوع واقعی

زبان پاسکال از اعداد صحیح استفاده می کند که شامل تمام اعداد طبیعی تشکیل شده در فرآیند شمارش اشیا می شود: 1، 2، 3، 4، 5، 6، .... اعداد منفی: ...، -6، -5، -4، -3، -2، -1 و عدد صفر: 0. اعداد صحیح سری زیر را تشکیل می دهند:

6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, ...

پاسکال طیفی از اعداد صحیح را از 32768- تا 32767 مجاز می کند.

متغیرها، با گرفتن مقادیر صحیح، در قسمت توضیحات نوشته شده است که نوع عدد صحیح (عدد صحیح) را نشان می دهد.

به عنوان مثال: var a, b, c, a1, b34, nomb: integer;

مقادیر از نوع متفاوت برای این متغیرها در همان برنامه نمی توان اختصاص داد.

عملیات حسابی با اعداد صحیح و متغیرهای نوع صحیح در پاسکال

علامت "_" به معنای فاصله است. فاصله بین نام متغیرها و نام عملیات (div) مورد نیاز است. (برگرفته از تقسیم انگلیسی - تقسیم).

باقیمانده وقتی a بر b تقسیم شود. a_mod_b

من فکر می کنم بسیاری از مردم به این علاقه مند خواهند شد)))

دستورالعمل ها را بخوانید و بخوانید

دستورالعمل خواندن برای وارد کردن مقادیر متغیر (داده های اولیه) از صفحه کلید در نظر گرفته شده است. به طور کلی، دستورالعمل ها به این شکل هستند:

خواندن (Variable1, Variable2, ... VariableN)

جایی که متغیرها نام متغیری است که مقدار آن باید در هنگام اجرای برنامه از صفحه کلید وارد شود.

در اینجا نمونه هایی از نوشتن دستورالعمل خواندن آورده شده است:

خواندن (الف)؛ read(Cena,Kol);

هنگامی که دستور read اجرا می شود، موارد زیر رخ می دهد:

1. برنامه کار خود را متوقف می کند و منتظر می ماند تا اطلاعات لازم روی صفحه کلید تایپ شود و یک کلید فشار داده شود. .

2 http://tissot.ua/ خرید ساعت مچیخرید ساعت کیف . پس از فشار دادن کلید مقدار وارد شده به متغیری که نام آن در عبارت مشخص شده است اختصاص می یابد.

مثلاً در نتیجه اجرای دستور

خواندن (معطف)؛

و با وارد کردن خط 21 از صفحه کلید، مقدار متغیر Temperat عدد 21 خواهد بود.

یک دستور خواندن می تواند مقادیر چندین متغیر را بازیابی کند. در این صورت اعداد وارد شده باید در یک خط تایپ و با فاصله از هم جدا شوند. به عنوان مثال، اگر نوع متغیرهای a، b و c واقعی باشد، در نتیجه اجرای دستور read(a,b,c); و خط را از صفحه کلید وارد کنید:

4.5 23 0.17

متغیرها دارای مقادیر زیر خواهند بود:

a = 4.5; b = 23.0; c = 0.17.

اگر تعداد اعداد تایپ شده در یک خط بیشتر از متغیرهای مشخص شده در دستورالعمل خواندن باشد، قسمت باقی مانده از خط توسط دستورالعمل خواندن زیر پردازش می شود http://crystal.lviv.ua crystal crystal. . https://mainvisa.com.ua دعوت نامه عکس به اوکراین برای شهروندان خارجی. . به عنوان مثال، در نتیجه اجرای دستورالعمل

خواندن (A,B)؛

خواندن (C)؛

10 25 18

و رشته ورودی صفحه کلید

متغیرها مقادیر زیر را دریافت خواهند کرد: A = 10، B = 25. Read instruction (C); مقدار 18 را به متغیر c اختصاص می دهد.

تفاوت دستور readln با دستور خواندن این است که پس از انتخاب عدد بعدی از رشته وارد شده از صفحه کلید و انتساب آن به آخرین متغیر از لیست دستور خواندن، بقیه خط از بین می رود و خواندن بعدی یا دستورالعمل خواندن به ورودی جدید نیاز دارد.

به عنوان مثال، در نتیجه اجرای دستورالعمل

خواندن (A,B)؛

10 25 18

متغیرها مقادیر زیر را دریافت خواهند کرد: A = 10، B = 25. پس از آن برنامه منتظر خواهد ماند تا یک عدد جدید وارد شود تا آن را به متغیر c اختصاص دهد.

قبل از هر دستور خواندن یا خواندن باید یک دستورالعمل نوشتن وجود داشته باشد تا به کاربر بگوید برنامه چه داده هایی از او انتظار دارد. به عنوان مثال، بخشی از یک برنامه برای محاسبه هزینه خرید ممکن است به شکل زیر باشد:

writeln ("داده های اولیه را وارد کنید.");

Write("قیمت کالا:");

Readln(Cena);

write("مقدار در دسته:");

Readln(Kol);

write("تخفیف:");

readln(Skidka)؛

اگر نوع داده های وارد شده از صفحه کلید مطابقت نداشته باشد یا قابل تبدیل به آن نباشد نوع متغیر، که نام آنها در عبارت read (readin) مشخص شده است، برنامه از کار می افتد (دستورالعمل های زیر خواندن اجرا نمی شوند) و یک پیغام خطا روی صفحه نمایش داده می شود.

نویسنده اسکندردر بخش سوال پرسید زبان ها و فن آوری های دیگر

چرا پاسکال خوانده است و readln کرده است، اگر read نیز یک خط را ترجمه می کند، اگرچه در تئوری نباید اینطور باشد؟ و بهترین پاسخ را گرفت

پاسخ از اسکیپی _[گورو]
readln - یک مقدار از بافر ورودی به یک پارامتر می گیرد و کل بافر ورودی صفحه کلید را پاک می کند.
و read - مقدار را از بافر ورودی وارد پارامتر می کند و آن را در بافر پاک نمی کند بلکه مقدار را ترک می کند!! !
تغذیه خودکار خط هنگام تایپ - همه جا
یعنی readln ورودی ایمن است
خواندن - ورودی ناامن
مثال:
var
a,b: عدد صحیح
آغاز شود
خواندن (الف)؛ (کاربر وارد شده: 4، 5 a = 4)
(در بافر ورودی عدد 5 است!!}
خواندن (ب)؛ (در اینجا او عدد را وارد کرد: 6، اما b = 5)
(عدد 6 در بافر ورودی باقی می ماند!!}
---
readln(a);(کاربر وارد شده: 4، 5؛ a = 4)
(بافر ورودی واضح است!!}
readln(a);(کاربر عدد 6 و b = 6 را وارد کرده است)
(بافر ورودی واضح است!!}
readln(b)؛
پایان
برعکس، وجود ندارد تشخیص خودکارنوع مقدار ورودی، همه چیز مشخص است نمادهادر مشخص کننده فرمت

پاسخ از یوالی مالی[گورو]
می توان آن را ساده تر، بدون سردرگمی بیش از حد توضیح داد:
هنگامی که روال خواندن اجرا می شود، مقدار داده های بعدی از همان خط خوانده می شود و زمانی که رویه readln اجرا می شود، مقدار داده های بعدی از یک خط جدید خوانده می شود.
بنابراین، عملگر Readln (b1,b2,...bn); ورود داده ها را به COLUMN فراهم می کند.
پس از وارد کردن هر متغیر b1, b2, ..bn مکان نما به ابتدای یک خط جدید حرکت می کند.
اپراتور Read(b1,b2,...bn); ورود داده ها را به یک LINE فراهم می کند


پاسخ از VT-107 FIT[گورو]
اینجا دیمیتری در مورد چیزی گیج شد، اما درست نیست. و در مورد بافر کاملاً تصفیه شده و خالص نشده و در مورد ایمنی. سالی هم اشتباه جواب داد. هیچ ستون و ردیفی وجود ندارد، قوانین کاملاً متفاوت است.
اول، این رویه‌ها نه تنها با ورودی کنسول کار می‌کنند، بنابراین دو عملکرد مورد نیاز است.
رویه خواندن (F, V1 [, V2,...Vn ]);
تمام V1..Vn را از جریان می خواند (دقیقاً n پارامتر)، تمام داده های خوانده شده حذف خواهند شد. هر چیزی که بعد از این داده ها می آید بدون تغییر باقی می ماند.
هنگام خواندن یک خط، همه چیز تا خط جدید یا انتهای فایل خوانده می شود. فراخوان های بعدی برای خواندن یک رشته خالی برمی گرداند. و کاراکتر خط جدید از جریان حذف نخواهد شد.
اگر char را می خوانید، بسته به تنظیمات، کاراکتر خط جدید ممکن است به صورت char خوانده شود (26)
هنگام خواندن اعداد، تمام فاصله‌ها، برگه‌ها و شکسته‌های خطوط حذف می‌شوند. و خواندن بعدی با نمادی که بعد از عدد خوانده شده قرار می گیرد آغاز می شود. باز هم، ممکن است کاراکترهای غیر ضروری نادیده گرفته شوند.
رویه ReadLn([ var F: Text; ] V1 [, V2, ..Vn ]);
از استریم V1، Vn می خواند (یعنی مانند read عمل می کند) و سپس از همه کاراکترها تا خط جدید و از جمله آن ها پرش می کند. همه کاراکترها پس از شکست خط بدون تغییر باقی می مانند.
انتقال به یک خط جدید به این دلیل رخ می دهد که Enter را در کنسول فشار می دهید.
در مورد ایمنی دور از ذهن است. اینها توابع با اهداف مختلف هستند. هر گونه استفاده نادرست ایمن نیست، هر گونه استفاده صحیح نیز بی خطر است.