গত পর্বগুলো যারা পড়েন নি, তারা এই লিংক থেকে পড়ে আসতে পারেন।
পর্ব ১
পর্ব ২
পর্ব ৩.১
পর্ব ৩.২
আজকের পর্বে আমরা শিখবো scanf() ফাংশন ও char টাইপ ডাটার ব্যবহার এবং আজকের পর্ব হবে আমদের ৩য় পর্বের সমাপ্তি।
আমরা এতোক্ষণ যে ধরণের প্রোগ্রাম শিখেছি, সেটার কাজ ছিল যে আমরা প্রোগ্রামের লিখে দুটি সংখ্যা যোগ করেছি। এখন আমরা প্রোগ্রামটি এমন ভাবে বানাবো যাতে যখন আমরা প্রোগ্রাম টি রান করবো তখন আমাদের কে একটি ইন্টারফেস দেয়া হবে যেখানে ব্যবহারকারী নিজের ইচ্ছামতো সংখ্যা ইনপুট করবে এবং সেই অনুযায়ী আউটপুট পাবে।
নিচের প্রোগ্রামটি রান করলে বুঝতে পারবেন।
#include <stdio.h>
int main()
{
int a, b, sum;
scanf(“%d”, &a);
scanf(“%d”, &b);
sum=a+b;
printf(“Sum is %d\n”,sum);
return 0;
}
এটা লিখে রান করার পর নিচের মতো ফাকা পেজ আসবে।
এখানে এখন আমরা দুটি সংখ্যা লিখবো।
আমি ২৫ লিখলাম এবং স্পেস দিয়ে আবার ২৫ লিখলাম এবং এন্টার দিলাম।
ফলাফল দেখুন ২৫ ও ২৫ এর যোগফল এসেছে।
এখানে আমরা কী করলাম?
প্রথমে scanf() ফাংশনে আমরা নির্দেশক %d কে a এর মান বসানোর জন্য ব্যবহার করেছি।
printf() যেখানে মান দেখানোর জন্য ব্যবহৃত হয়, সেখানে scanf() আমাদের থেকে মান নেয়ার জন্য ব্যবহৃত হয়।
আর a ও b এর পূর্বে & চিহ্ন দিয়ে এটাই বুঝানো হয়েছে যে এই দুইটা মান ইনপুট করতে হবে। & চিহ্ন ব্যবহার না করলে কিন্তু প্রোগ্রাম সঠিক ভাবে কাজ করবে না। কেন? কারণ টা জানা গুরুত্বপূর্ণ নয় আপাতত। শুধু জেনে রাখুন যে এটা ব্যবহার না করলে কম্পিউটার বুঝতে পারে না যে আপনি কোনো মান ইনপুট করেছেন।
এভাবেই আমরা প্রথমে a এর মান ২৫ দিয়েছি এবং পরে স্পেস দেয়ার মাধ্যমে b এর মান ২৫ দিয়েছি। ফলে আমাদের কে printf() ফাংশনটি আমাদেরকে sum দেখিয়েছে যেটা a ও b কে যোগ করে আমাদের সামনে উপস্থাপন করেছে।
এখন,
scanf(“%d”, &a);
scanf(“%d”, &b);
এই দুইটা স্টেটমেন্ট একত্রে করতে আমরা কোড টি নিচের মতো লিখতে পারবোঃ
scanf(“%d %d”, &a, &b);
এটা নিজেরাই ট্রাই করুন, আমি দেখালাম না, নাহলে অনেক বড় হয়ে যাবে পোস্ট।
এটা গেল স্বাভাবিক সংখ্যার যোগ, এবার দশমিক সংখ্যার যোগ কেমন হনে তা নিশ্চয় বুঝে ফেলেছেন।
int এর জায়গায় double লিখতে হবে।
এটাও নিজেরাই ট্রাই করুন।
উপেক্ষা করবেন না। ট্রাই করুন। চর্চা করার কোনো বিকল্প নেই। যতো চর্চা করবেন ততো দক্ষ হবেন।
আসুন একটু উপর লেভেলে উঠি। কেউ যদি বলে একটি প্রোগ্রামের মাধ্যমে যোগ, বিয়োগ, গুণ, ভাগ সব একসাথে দেখাতে। পারবেন?
যদি পারেন, তাহলে কংগ্রেস! আপনি মেধাবী এবং আসলেই বুঝতে শিখেছেন প্রোগ্রামটিকে।
আসুন, দেখি কীভাবে করবেন।
#include <stdio.h>
int main()
int x, y;
printf(“Write a number: “);
scanf(“%d”, &x);
printf(“Write another number: “);
scanf(“%d”, &y);
printf(“%d + %d = %d\n”, x, y, x+y);
printf(“%d – %d = %d\n”, x, y, x-y);
printf(“%d * %d = %d\n”, x, y, x*y);
printf(“%d / %d = %d\n”, x, y, x/y);
এটা রান করলে নিচের মতো রেজাল্ট পাবেন যেখানে একটি সংখ্যা লিখে এন্টার দিবেন,
এরপর আরেকটি সংখ্যা লেখার অপশন আসবে। আমি 5 দিয়ে এন্টার দিলাম।
এবার দেখুন রেজাল্ট।
কী? এখন মজা লাগতে শুরু হয়েছে নিশ্চয়? ☺️
নিজে নিজে বুঝার চেস্টা করুন। প্রোগ্রামিং করতে হলে আবিষ্কার করার মনোভাব থাকা অতিব জরুরি। একটি প্রোগ্রাম নিজের মতো শত-শত ভাবে এদিক-ওদিক ভাবে লিখে ট্রাই করবেন, নিজের ক্রিয়েটিভিটি ব্যবহার করবেন, তবেই তো আপনি দক্ষ প্রোগ্রামার হতে পারবেন।
আর সাইকোলজিও বলে যে আমরা যে জিনিস নিজে নিজে আবিষ্কার করি সেটা আমাদের মস্তিষ্ক সবচেয়ে দীর্ঘ সময় ধরে রাখতে পারে।
প্রোগ্রামিং হলো শুণ্যের মতো, আপনার মাথা যতদুর চলবে, যতদুর কল্পনা করবে, আপনাকে ততোদুর নিয়ে যাবে। এটা অসীম রহস্যের সৃষ্টি করে। সে রহস্য গুলো যতো সমাধান করবেন ততো দক্ষ হবেন।
যাইহোক,
এতোক্ষণ আমরা integer ও double টাইপ ডাটা টাইপ শিখলাম, এবার শিখবো character টাইপ। এটার জন্য আমরা ব্যবহার করবো char । এটার কাজ তো বুঝতেই পেরেছেন নিশ্চয়। এতোক্ষণ আমরা যেসকল ডাটা টাইপ শিখেছি সেসবে শুধু সংখ্যা গ্রহণ করতো, আর এটা ইংরেজি বর্ন গ্রহণ করবে।
আসুন, প্রথমে নিচের প্রোগ্রামটি কম্পাইলারে লিখি।
#include <stdio.h>
int main()
{
char ch;
printf(“Type any letter in English: “);
scanf(“%c”, &ch);
printf(“The letter you wrote is: %c\n”, ch);
return 0;
}
উপরের কোডটি রান করলে নিচের মতো আউটপুট আসবে, সেখানে যেকোনো ইংরেজি অক্ষর দিয়ে এন্টার দিলে,
এইটা দেখে অনেকে ভাবতে পারেন যে আমি যে বর্ণ লিখলাম, সেটাই ফেরত আসলো, এর মান কী? সময় নষ্ট হচ্ছে?
না, এটার মাধ্যমে আমরা মুলত ফাংশনটি ব্যবহার করা শিখলাম।
সেটা দিয়ে আরো ব্যবহার শেখা তো বাকি আছে।
এখানে আমরা,
char ch দিয়ে বুঝিয়েছি যে একটি ক্যারেক্টার আছে যেটার পরিচয় হলো ch, আপ্নারা এখানে অন্য কিছুও লিখতে পারতেন। তবে ch ব্যবহার করা একটা ঐতিহ্য। ? আমি এভাবে শিখেছি।
এর পরের লাইনে আমরা একটা লাইন লিখেছি যেটা দিয়ে একটা বাক্য লিখেছি, তা ব্যাখ্যা নতুন করে দেয়ার প্রয়োজন নেই আশা করি।
এরপর আমরা scanf() ফাংশনের ব্যবহার করে ch এর মান ইনপুট করার অপশন তৈরির জন্য। কিন্তু int এর ক্ষেত্রে নির্দেশক ছিল %d আর double এর ক্ষেত্রে নির্দেশক ছিল %lf এবং এখন char এর জন্য আমরা %c ব্যবহার করেছি।
এই প্রোগ্রামে শুধু একটি বর্ণই শো করবে। আপনি যদি পুর এক লাইনও লেখেন, আউটপুট শো করবে একটি বর্ণ।
আরেকটা কথা না বললেই নয়।
scanf(“%c”, &ch); এর পরিবর্তে আমরা চাইলে ch = getchar(); ও লিখতে পারি। একই কাজ করবে। আপ্নারা চাইলে ট্রাই করে দেখতে পারেন। getchar() একটি ফাংশন যেটার কাজও ইনপুট নেয়া।
এবার আমরা সামনে আগাই,
এইতো একটু আগে আমরা একটা প্রোগ্রাম লিখেছিলাম যেটায় যোগ, বিয়োগ, গুণ, ভাগ সব একত্রে দিয়েছিলাম। সেটাই যদি এখন char টাইপ দিয়ে করি, কেমন হয়?
নিচের প্রোগ্রামটি খেয়াল করো।
int main()
{
int x, y, math;
char sign;
printf(“Write a number: “);
scanf(“%d”, &x);
printf(“Write another number: “);
scanf(“%d”, &y);
math = x + y;
sign = ‘+’;
printf(“%d %c %d = %d\n”, x, sign, y, math);
math = x-y;
sign = ‘-‘;
printf(“%d %c %d = %d\n”, x, sign, y, math);
math = x*y;
sign = ‘*’;
printf(“%d %c %d = %d\n”, x, sign, y, math);
math = x/y;
sign = ‘/’;
printf(“%d %c %d = %d\n”, x, sign, y, math);
return 0;
}
উপরের প্রোগ্রাম রান করলে একই রকম রেজাল্ট আসবে।
এবার বোঝার চেস্টা করুন প্রোগ্রামটি।
int হিসেবে x, y ও math ধরলাম, আপ্নারা যা খুশি তাই ধরতে পারেন।
char এর ডাটা হিসেবে sign ধরলাম।
x ও y এর মান নেয়ার জন্য scanf() ব্যবহার করলাম এবং সেটা দেখতে কেমন হবে সেটার জন্য printf() ব্যবহার করেছি।
এ পর্যন্ত যা কিছু শিখিয়েছি, তার মধ্যেই প্রোগ্রামটি লিখেছি। আপ্নারাও এভাবে ট্রাই করেন। নিজের মতো।
বিশ্বাস করবেন কিনা, জানি না। তবে আপনাদের এই পর্যন্ত যা যা শেখালাম, তা দিয়ে আপ্নারা একটি সিম্পল ক্যালকুলেটর বানিয়ে ফেলতে পারবেন। ☺️
আমি বলবোনা কীভাবে, আপ্নারাই ভাবুন, কীভাবে সম্ভব!
হিন্ট দিবো? নাকি সাজেশন দিবো? ?
একটা হোমওয়ার্ক দেই, এই হোমওয়ার্ক টা করতে পারলেই ক্যালকুলেটর বানানোর আইডিয়াটা বুঝতে পারবেন।
হোমওয়ার্কঃ
একটা প্রোগ্রাম লিখুন, যেটাতে ব্যবহার কারী শুধু সংখ্যাই ইনপুট করবে না, পাশাপাশি +,-,*,/ করার ইনপুটও পাবে। ?
হোমওয়ার্কটা নিজের কাছেই রাখুন, নিজেই চালিয়ে দেখুন, যদি সঠিক চালাতে পারেন, তাহলে…… ? সেলুট!
আজকের পর্বে আমি ৩য় পর্ব শেষ করেছি। তাই বড় হয়েছে। এক পর্বের ৩টার বেশি খন্ড করতে চাইনি। তাই।
আগামী পর্ব টা আসবে কন্ডিশনাল লজিক নিয়ে।
সেটা আরো আরো বেশি মজার। ☺️
ক্ষমার দৃষ্টিতে দেখবেন ?