প্রোলগে ইনপুট এবং আউটপুট ফাংশনগুলো মূলত স্ট্যান্ডার্ড ইনপুট (keyboard input) এবং স্ট্যান্ডার্ড আউটপুট (console output) এর মাধ্যমে তথ্য গ্রহণ ও প্রদানে ব্যবহৃত হয়। প্রোলগে ইনপুট এবং আউটপুট পরিচালনা করার জন্য কিছু নির্দিষ্ট বিল্ট-ইন পেডিকেট রয়েছে, যেমন write/1, read/1, nl/0, flush_output/0, এবং অন্যান্য।
1. write/1 - আউটপুট প্রিন্ট করা
write/1 পেডিকেটটি প্রোলগে কোনো ভ্যালু বা তথ্য আউটপুট (প্রিন্ট) করতে ব্যবহৃত হয়।
ব্যবহার:
write(Term).এখানে, Term হলো যে কোনো টার্ম, যা আপনি আউটপুট হিসেবে প্রিন্ট করতে চান।
উদাহরণ:
?- write('Hello, World!').আউটপুট:
Hello, World!এছাড়া আপনি ভেরিয়েবল বা অন্যান্য এক্সপ্রেশনও আউটপুট করতে পারেন:
?- X = 5, write(X).আউটপুট:
52. nl/0 - নতুন লাইনে আউটপুট
nl/0 পেডিকেটটি একটি নতুন লাইন (newline) প্রিন্ট করতে ব্যবহৃত হয়, যা আউটপুটের পর নতুন লাইনে চলে যেতে সহায়ক।
ব্যবহার:
nl.উদাহরণ:
?- write('Hello'), nl, write('World').আউটপুট:
Hello
Worldএখানে, nl পেডিকেট ব্যবহার করার ফলে Hello এর পর একটি নতুন লাইন তৈরি হয় এবং তারপরে World প্রিন্ট হয়।
3. read/1 - ইনপুট পড়া
read/1 পেডিকেটটি স্ট্যান্ডার্ড ইনপুট (keyboard) থেকে কোনো তথ্য গ্রহণ করতে ব্যবহৃত হয়। এটি ব্যবহারকারীর থেকে ইনপুট নেয় এবং একটি প্রোলগ টার্ম হিসেবে সেটি পড়ে।
ব্যবহার:
read(Term).এখানে, Term হলো সেই ভেরিয়েবল যেখানে ইনপুটটি সংরক্ষণ হবে।
উদাহরণ:
?- write('Enter a number: '), read(X), write('You entered: '), write(X).এটি প্রথমে Enter a number: প্রিন্ট করবে এবং তারপর ব্যবহারকারীর ইনপুট গ্রহণ করবে। উদাহরণস্বরূপ, যদি ব্যবহারকারী 5 ইনপুট দেয়, তবে আউটপুট হবে:
Enter a number: 5
You entered: 54. flush_output/0 - আউটপুট ফ্লাশ করা
flush_output/0 পেডিকেটটি সমস্ত আউটপুট ফ্লাশ (output flush) করতে ব্যবহৃত হয়। এটি তখন ব্যবহৃত হয় যখন আপনি নিশ্চিত হতে চান যে আউটপুট কনসোল বা স্ক্রীনে দ্রুত প্রদর্শিত হবে।
ব্যবহার:
flush_output.উদাহরণ:
?- write('Processing...'), flush_output, sleep(2), write(' Done!').এখানে, flush_output/0 আউটপুট Processing... স্ক্রীনে দ্রুত প্রিন্ট করবে, এবং তার পর sleep(2) ফাংশন ব্যবহার করা হয়েছে যাতে কিছু সময় (2 সেকেন্ড) পর Done! আউটপুট হয়।
5. get_char/1 - একক ক্যারেক্টার ইনপুট পড়া
get_char/1 পেডিকেটটি ব্যবহারকারী থেকে একটি একের অধিক ক্যারেক্টার ইনপুট হিসাবে গ্রহণ করতে ব্যবহৃত হয়। এটি ব্যবহারকারীর প্রথমে চাপা ক্যারেক্টার গ্রহণ করে এবং সেগুলির উপর ভিত্তি করে প্রোগ্রাম চলমান রাখে।
ব্যবহার:
get_char(Char).এখানে, Char হল সেই ভেরিয়েবল যেখানে ইনপুটটি সংরক্ষণ করা হবে।
উদাহরণ:
?- write('Press a key: '), get_char(Key), write('You pressed: '), write(Key).এটি Press a key: প্রিন্ট করবে এবং তারপর ব্যবহারকারী একটি কী চাপলে তার ফলাফল হিসেবে সেই কী প্রদর্শিত হবে।
6. read_line_to_string/2 - পুরো লাইনে স্ট্রিং ইনপুট
read_line_to_string/2 পেডিকেটটি ব্যবহারকারীর থেকে একটি পুরো লাইন ইনপুট হিসেবে নেয় এবং সেটি একটি স্ট্রিং হিসেবে সংরক্ষণ করে।
ব্যবহার:
read_line_to_string(Stream, String).এখানে, Stream হলো ইনপুট স্ট্রিম (সাধারণত user_input), এবং String হলো সেই ভেরিয়েবল যা ইনপুট স্ট্রিং সংরক্ষণ করবে।
উদাহরণ:
?- write('Enter a line of text: '), read_line_to_string(user_input, Line), write('You entered: '), write(Line).এটি ব্যবহারকারী থেকে একটি লাইন ইনপুট নেবে এবং সেটি প্রিন্ট করবে।
সারসংক্ষেপ:
প্রোলগে ইনপুট এবং আউটপুট পরিচালনা করার জন্য বেশ কিছু বিল্ট-ইন পেডিকেট রয়েছে। write/1 এবং nl/0 ব্যবহার করে আউটপুট প্রদর্শন করা হয়, এবং read/1 বা get_char/1 ব্যবহার করে ইনপুট নেওয়া হয়। flush_output/0 এবং read_line_to_string/2 পেডিকেটগুলি বিশেষ পরিস্থিতিতে আউটপুট এবং ইনপুট আরও কার্যকরভাবে পরিচালনা করতে সহায়ক।
Read more