Fortran এর কথা – ৩

আগের লেখাটায় বোঝানর চেষ্টা করছিলাম লুপ কাকে বলে। কিন্তু লুপের জন্য একটা লেকচারই যথেষ্ট নয়। আজকে আরও কিছু নতুন জিনিস তুলে ধরব। খুবই সাধারণ জিনিস। কিন্তু এগুলোর ধারনা পরিষ্কার না হওয়াতে খুবই জটিল মনে হয়।

প্রশ্নঃ ৫ লাইন বিশিষ্ট একটা ফ্লয়েড ত্রিভুজ প্রিন্ট কর। [Floyd’s Triangle]

WRITE(*,*)”HOW MANY LINES TO PRINT?”
READ(*,*)N

DO I=1,N
     WRITE(*,10)(I,J=1,I) !THIS IS AN IMPLIED DO LOOP
     10 FORMAT(5X, I5, 5X)
     WRITE(*,*) !JUST WORKS THE SAME WAY AS PRESSING AN ENTER
     !SO IT GOES TO A NEW LINE
END DO

END

INPUT: 5

OUTPUT:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

ফ্লয়েড ত্র্যাইয়াঙ্গেল কিভাবে লিখতে হয় মোটামুটি সবাই কমবেশি জানি। উপরে আমি যা লিখেছি সেটাই কিন্তু কোড। এটা লিখলেই উত্তর পেয়ে যাবে। এখন দেখি এটা কেন কাজ করে ও কিভাবে কাজ করে।

  • প্রথমেই লক্ষ্য কর আমি কোন ভ্যারিয়েবল ডিক্লেয়ারই করি নি। কেন? প্রোগ্রামের ভেতরের ভ্যরিয়েবল গুলোর দিকে তাকাও। যা ব্যবহার করা হয়েছে সবই কিন্তু বাই ডিফল্ট ইন্টেজার। এখানে রিয়েল ভ্যালুর কোন কারবার নেই।
  • প্রথমে একটা ইনপুট নিলাম, কয় লাইন প্রিন্ট করতে চাচ্ছি। যদিও আমি বলেছি ৫ লাইন প্রিন্ট করব কিন্তু এভাবে লিখলে কেউ যদি বলে প্রোগ্রামে ৫ লাইন না লিখে ১০ লাইন প্রিন্ট করতে হবে, তবে ইনপুট এর জায়গায় ১০ দিলেই হবে। অনেকেই জিজ্ঞেস করতে পার কেন রিড কম্যান্ড দিয়ে কাজটা করছি। কেন একটা ভ্যারিয়েবল N=5 ধরে করলাম না। সেটা করতে পারতাম, সমস্যা নাই। বলতে পার এটা আমার কোডিং এর স্টাইল। সবারই করতে করতে নিজস্ব একটা কোডিং এর ধরণ তৈরি হয়ে যায়।
  • একটা ডু লুপ শুরু করলাম।
  • এর পরের লাইনটাই তোমাদের অনেকের কাছে নতুন। এটাকে বলা হয় IMPLIED DO LOOPএটার কাজটা কি? তেমন কিচ্ছু না। খুবই সাধারণ ব্যাপার। যখন আমরা একটানা READ বা WRITE করতে চাই তখনি এই LOOP ব্যবহার করা হয়। যারা সি প্রোগ্রামিং করেছ তাঁরা জানো প্রিন্ট কম্যান্ড দিলে সি কিভাবে ডেটা গুলোকে পাশে পাশে লিখতে থাকে। ফোরট্রান কিন্তু তা করবে না। এজন্যে এটাকে একটা সিস্টেম করে করাতে হবে। দেখ যে IMPLIED DO LOOP এর WRITE statement এর মধ্যে একটা FORMAT statement লিখেছি। এটা কম্পাইলারকে বলে দেবে আমরা কিভাবে আউটপুট টাকে দেখাবো। এক্ষেত্রে সব যেহেতু ইন্টেজার তাই আমি I5 ব্যবহার করেছি।
    • প্রথম ধাপঃ I=1, Print J from 1 to 1 (that means one digit in line number 1)
    • দ্বিতীয় ধাপঃ I=2, Print J from 1 to 2 (that means two digits in line number 2)
    • এভাবে চলতে থাকবে যতক্ষণ ৫ লাইন লেখা না হয়
    • প্রতিবার লেখার পরে, এক লাইন করে গ্যাপ হবে।
Awnon Bhowmik
Author: Awnon Bhowmik

I know very little to be proud about it. Mathematics enthusiast, possess a lust for mathematical/computational knowledge

Permanent link to this article: https://www.borgomul.com/awnon/2405/


মন্তব্য করুন আপনার ফেসবুক প্রোফাইল ব্যবহার করে

3 comments

  1. এই সুন্দর লেখাটি আসলেই অস্থির হয়েছে। লেখাটিতে সব কটি বর্ণের সুষম বিন্যাস, দীপ্তিময় আলোকছটা, অন্তর্নিহিত তাৎপর্য এবং ধ্রুপদী সত্ত্বা সুন্দর অবয়বে এক অতিপ্রাকৃত আবহ সৃষ্টি করেছে। তাই লেখাটা দেখেই বিমলানন্দে লাইকালাম! ভাল্লাগছে বিষয়ডা। এরকম আবারও চাই …

    1. tui ki amare pagol paisis? sobar post e eki comment kortesis? Chondro koi geli, ei betar account cancel kor. Maybe hack hoise eijonne spam message ditese 😀

      1. ভাই সবার লেখাই অস্থির হয়েছে 🙂 এখন আমি কি করব কষ্ট করে কমেন্টে লিখতে ইচ্ছে হচ্ছে না 😛 । তাই একই কমেন্ট করতেছি 🙂

মন্তব্য করুন