এইচএসসি আইসিটি: ৫ম অধ্যায় (সম্পূর্ণ নোট ও প্রশ্নব্যাংক)
প্রোগ্রামিং ভাষা (C Programming) | HSC ICT Chapter 5 Lecture Notes & Code Guide
১. প্রোগ্রামিং ভাষা ও অনুবাদক প্রোগ্রাম
প্রোগ্রামিং ভাষার স্তর:
- মেশিন ভাষা (১ম প্রজন্ম): শুধুমাত্র ০ এবং ১ দ্বারা লিখিত। কম্পিউটার সরাসরি বুঝতে পারে (কোনো অনুবাদক লাগে না)। এটি দ্রুততম।
- অ্যাসেম্বলি ভাষা (২য় প্রজন্ম): নিউমোনিক কোড (যেমন: ADD, SUB, MUL) ব্যবহার করে লিখিত। অনুবাদক হিসেবে Assembler লাগে।
- উচ্চতর ভাষা (High-Level Language): ইংরেজির মতো ভাষায় লিখিত (যেমন: C, C++, Python, Java)। মানুষের বোঝা সহজ।
- কম্পাইলার (Compiler): সম্পূর্ণ সোর্স প্রোগ্রামকে একবারে অবজেক্ট প্রোগ্রামে রূপান্তর করে এবং সব ভুল একসাথে দেখায়। গতি দ্রুত।
- ইন্টারপ্রেটার (Interpreter): প্রোগ্রামকে এক লাইন করে অনুবাদ করে ও এক্সিকিউট করে। ভুল দেখা দিলে সেখানেই পড়া থামিয়ে দেয়।
- অ্যাসেম্বলার (Assembler): অ্যাসেম্বলি ভাষাকে মেশিন ভাষায় রূপান্তর করে।
অ্যালগরিদম ও ফ্লোচার্ট প্রতীক:
- ডিম্বাকৃতি (Oval): শুরু (Start) ও শেষ (End) নির্দেশ করে।
- সামান্তরিক (Parallelogram): ইনপুট (Input) ও আউটপুট (Output) নির্দেশ করে।
- আয়তক্ষেত্র (Rectangle): প্রক্রিয়াকরণ (Processing/Formula) নির্দেশ করে।
- হীরক/ডায়মন্ড (Diamond): সিদ্ধান্ত (Decision/If-Else) নির্দেশ করে।
- বিত্ত (Circle): সংযোগ (Connector) নির্দেশ করে।
২. সি (C) প্রোগ্রামিং ভাষা
১৯৭২ সালে আমেরিকার AT&T বেল ল্যাবরেটরিতে **ডেনিস রিচি (Dennis Ritchie)** সি ভাষা তৈরি করেন। এটিকে "Mid-Level Language" বা "Structured Language" বলা হয়।
ডাটা টাইপ ও ফরম্যাট স্পেসিফায়ার:
| Data Type | মেমরি সাইজ | Format Specifier | উদাহরণ |
|---|---|---|---|
int (পূর্ণসংখ্যা) |
2 Byte / 4 Byte | %d |
10, 25, -100 |
float (ভগ্নাংশ) |
4 Byte | %f |
3.1416, 5.5 |
double (দীর্ঘ ভগ্নাংশ) |
8 Byte | %lf |
3.1415926535 |
char (বর্ণ/চিহ্ন) |
1 Byte | %c |
'A', 'z', '+' |
প্রোগ্রামে কোনো কাজ বারবার করার জন্য লুপ ব্যবহৃত হয়। সি ভাষায় প্রধান লুপ ৩টি:
forloopwhileloopdo-whileloop
৩. গুরুত্বপূর্ণ বহুনির্বাচনী প্রশ্নপত্র (MCQ)
ব্যাখ্যা: ১৯৭২ সালে তিনি বেল ল্যাবসে C ভাষা তৈরি করেন।
ব্যাখ্যা: হীরক চিহ্নের মধ্যে শর্ত বা Decision দেওয়া হয়।
ব্যাখ্যা: কম্পাইলার একসাথে পুরো সোর্স কোড অনুবাদ করে, আর ইন্টারপ্রেটার লাইন বাই লাইন করে।
float ডাটা টাইপের জন্য কোনটি ফরম্যাট স্পেসিফায়ার?ব্যাখ্যা: int এর জন্য %d, float এর জন্য %f, char এর জন্য %c ব্যবহৃত হয়।
ব্যাখ্যা: C ভাষায় প্রতিটি স্টেটমেন্ট সেমিকোলান (;) দিয়ে শেষ করতে হয়।
ব্যাখ্যা: % অপারেটর দুটি সংখ্যার ভাগশেষ (Modulus) বের করতে ব্যবহৃত হয়।
ব্যাখ্যা: চলকের নাম কখনো সংখ্যা দিয়ে শুরু হতে পারে না।
for(i=1; i<=5; i+=2) লুপটি কতবার ঘুরবে?ব্যাখ্যা: i এর মান হবে ১, ৩, এবং ৫ (মোট ৩ বার)।
#include <stdio.h> এর পূর্ণরূপ কী?ব্যাখ্যা: printf ও scanf ব্যবহারের জন্য stdio.h অন্তর্ভুক্ত করা হয়।
ব্যাখ্যা: মূল প্রোগ্রামকে সোর্স প্রোগ্রাম বলা হয়, অনূদিত রূপকে অবজেক্ট প্রোগ্রাম বলে।
৪. নমুনা সৃজনশীল প্রশ্নপত্র (CQ) ও সমাধান
আইসিটি ক্লাসে শিক্ষক শিক্ষার্থীদের দুটি ধনাত্মক পূর্ণসংখ্যা ইনপুট নিয়ে তাদের মধ্য থেকে বড় সংখ্যাটি নির্ণয়ের জন্য একটি অ্যালগরিদম ও ফ্লোচার্ট আঁকতে বললেন। পরবর্তীতে তিনি এই সমস্যার ওপর ভিত্তি করে একটি C প্রোগ্রাম লিখে দেখালেন।
(ক) কি-ওয়ার্ড (Keyword) কী? মান: ১
(খ) কম্পাইলার এবং ইন্টারপ্রেটারের মধ্যে ২টি প্রধান পার্থক্য লেখ। মান: ২
(গ) উদ্দীপকে উল্লেখিত সমস্যার জন্য ফ্লোচার্ট অঙ্কন করো। মান: ৩
(ঘ) উদ্দীপকের সমস্যাটির সমাধান C ভাষায় কোড করে বুঝিয়ে লেখ। মান: ৪
১. কম্পাইলার পুরো সোর্স কোড এক সাথে অনুবাদ করে, কিন্তু ইন্টারপ্রেটার এক লাইন করে অনুবাদ করে।
২. কম্পাইলার দিয়ে প্রোগ্রাম দ্রুত চলে, কিন্তু ইন্টারপ্রেটারে ধীরগতিতে চলে।
ফ্লোচার্টের ধাপসমূহ:
- Start: ডিম্বাকৃতি প্রতীকে শুরু করো।
- Input: সামান্তরিক প্রতীকে ২টি সংখ্যা $a$ ও $b$ ইনপুট নাও।
- Decision: হীরক চিহ্নে শর্ত পরীক্ষা করো: $a > b$ ?
- যদি সত্য (Yes) হয়: Output $a$ is largest (সামান্তরিক)।
- যদি মিথ্যা (No) হয়: Output $b$ is largest (সামান্তরিক)।
- End: ডিম্বাকৃতি প্রতীকে সমাপ্ত করো।
#include <stdio.h>
int main() {
int a, b;
printf("Enter two integer numbers: ");
scanf("%d %d", &a, &b);
if (a > b) {
printf("%d is the largest number.\n", a);
} else {
printf("%d is the largest number.\n", b);
}
return 0;
}
ব্যাখ্যা: `scanf` দিয়ে ব্যবহারকারীর কাছ থেকে দুটি সংখ্যা $a$ ও $b$ নেওয়া হয়। `if-else` শর্ত দিয়ে তুলনা করা হয়। যদি $a$ এর মান $b$ এর চেয়ে বড় হয় তবে $a$ প্রিন্ট হবে, অন্যথায় $b$ প্রিন্ট হবে।
প্রোগ্রামিং ক্লাসে রাফি ১ থেকে N পর্যন্ত স্বাভাবিক সংখ্যার যোগফল ($1 + 2 + 3 + ... + N$) নির্ণয় করার একটি প্রোগ্রাম লিখলো। শিক্ষক তার কোড দেখে প্রশংসা করলেন এবং অন্য শিক্ষার্থীদের লুপ ব্যবহার করে এটি অনুশীলনের পরামর্শ দিলেন।
(ক) লুপ (Loop) কী? মান: ১
(খ) i++ এবং i = i + 1 এর মধ্যে সম্পর্ক বুজিয়ে লেখ। মান: ২
(গ) ১ থেকে N পর্যন্ত সংখ্যার যোগফল বের করার অ্যালগরিদম লেখ। মান: ৩
(ঘ) `for` লুপ ব্যবহার করে উদ্দীপকের ধারাটির যোগফল নির্ণয়ের C প্রোগ্রাম লেখ এবং ব্যাখ্যা করো। মান: ৪
অ্যালগরিদম:
- ধাপ-১: কাজ শুরু করি।
- ধাপ-২: $N$ এর মান ইনপুট নিই।
- ধাপ-৩: $Sum = 0$ এবং $i = 1$ ধরি।
- ধাপ-৪: $Sum = Sum + i$ এবং $i = i + 1$ হিসাব করি।
- ধাপ-৫: যদি $i \le N$ হয়, তবে ধাপ-৪ এ ফিরে যাই।
- ধাপ-৬: $Sum$ এর মান ছাপাই।
- ধাপ-৭: কাজ শেষ করি।
#include <stdio.h>
int main() {
int n, i, sum = 0;
printf("Enter the value of N: ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
sum = sum + i;
}
printf("Sum = %d\n", sum);
return 0;
}
ব্যাখ্যা: প্রোগ্রামে `sum` কে ০ দিয়ে ইনিশিয়ালাইজ করা হয়েছে। `for` লুপটি $i = 1$ থেকে শুরু হয়ে $N$ পর্যন্ত চলবে। প্রতিবার $i$ এর মান $1$ করে বাড়বে এবং বর্তমান `sum` এর সাথে $i$ যোগ হবে। লুপ শেষ হলে মোট যোগফল প্রিন্ট হবে।
