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

 

به نام خدا

توضیح کلی اینکه ورودی کاملاً جدا و مستقل از خروجی است و می شود فرض کرد که در دو صفحه کاملاً جدا از هم قرار دارند، در نتیجه به طور مثال اگر گفته شده که در ورودی ها یک خط خالی می آید (مثلا در سوال Triangle Wave)، نمی­توان برای آن یک دستور Writeln قرار داد و باید مثلاً یک Readln برای خواندن یک خط خالی قرار داد. در ضمن اگر از دستور Read برای خواندن یک عدد استفاده کنیم، لازم نیست خط های خالی را در نظر بگیریم و خود دستور Read تمام کاراکترهای خالی و همچنین خط های خالی را رد می کند تا به یک عدد برسد و آن را می خواند.

همچنین اینکه ورودی و خروجی از هم جدا هستند، به معنای این هم هست که هر موقع که بخواهیم می توانیم در صفحه­ی خروجی، قسمتی از جواب را بنویسیم و لازم نیست که همه ی جوابها را پیدا کنیم و در آرایه ذخیره کنیم و یکجا آنها را بنویسیم. مثلاً اگر ورودی متشکل از چند تست است، می توانیم پس از خواندن هر تست، جواب آنرا بنویسیم و هیچ مشکلی به وجود نمی آید.

برای اینکه ورودی ها را درست بخوانیم، در بعضی از سوالات باید از روش زیر استفاده کنیم:

while not SeekEOF do

و یا :

while not SeekEOF(input) do

(این دو با هم معادلند و در نتیجه استفاده از اولی راحت تر است)

و همچنین در ++c می توان نوشت:

  (while (cin>>input

 

این حلقه یعنی اینکه "تا وقتی ورودی ها تمام نشده اند" صرف نظر از اینکه یک سری   (white space)    باقیمانده باشد یا نه. منظور از(WhiteSpace)  کاراکترهای (Space) و (Tab) و (End of Line) هستند.