প্রোগ্রামিং ভাষা

অ্যালগরিদম, ফ্লোচার্ট ও C প্রোগ্রামিং

০%

০/৫ পাঠ শেষ

পাঠ

প্রোগ্রামিং ভাষা ও অনুবাদক

পাঠ ১ / ৫

প্রোগ্রামিং ভাষা ও অনুবাদক

কম্পিউটারের সঙ্গে কথা বলার ভাষা।

  • নিম্নস্তরের ভাষা: মেশিন ভাষা ও অ্যাসেম্বলি।
  • উচ্চস্তরের ভাষা: C, Python ও Java।
  • অনুবাদক: অ্যাসেম্বলার, কম্পাইলার ও ইন্টারপ্রেটার।

এই পাঠের ভিডিও ও ক্লাস রেকর্ডিং শিগগির যুক্ত হবে।

ভুলের ধরন

  1. সিনট্যাক্স ভুল: printf লাইনের শেষে সেমিকোলন নেই। কম্পাইলার ধরিয়ে দেয়।
  2. লজিক ভুল: যোগের বদলে গুণ লিখেছ। প্রোগ্রাম চলে, কিন্তু ফল ভুল।
  3. রানটাইম ভুল: কোনো সংখ্যাকে 0 দিয়ে ভাগ করা। চলার সময় সমস্যা হয়।

ইন্টারঅ্যাকটিভ ল্যাব

লুপ ট্রেসার

for লুপ এক ধাপ করে চালাও, আর s এর মান বাড়তে দেখো।

for (i = 1; i <= 6; i += 1) {
  s = s + i;
}
s = 0

চ্যাপ্টার নোট

  • নিম্নস্তরের ভাষা: মেশিন ভাষা ও অ্যাসেম্বলি।
  • উচ্চস্তরের ভাষা: C, Python ও Java।
  • অনুবাদক: অ্যাসেম্বলার, কম্পাইলার ও ইন্টারপ্রেটার।

উদাহরণ

ভুলের ধরন

  1. সিনট্যাক্স ভুল: printf লাইনের শেষে সেমিকোলন নেই। কম্পাইলার ধরিয়ে দেয়।
  2. লজিক ভুল: যোগের বদলে গুণ লিখেছ। প্রোগ্রাম চলে, কিন্তু ফল ভুল।
  3. রানটাইম ভুল: কোনো সংখ্যাকে 0 দিয়ে ভাগ করা। চলার সময় সমস্যা হয়।

বিস্তারিত

প্রোগ্রাম হলো কম্পিউটারের জন্য লেখা নির্দেশের ক্রম। কম্পিউটার সরাসরি বোঝে শুধু 0 ও 1 দিয়ে লেখা মেশিন ভাষা।

মেশিন ভাষা কঠিন বলে অ্যাসেম্বলি ভাষা এসেছে, যেখানে ADD এর মতো সংকেত ব্যবহৃত হয়। উচ্চস্তরের ভাষা মানুষের ভাষার কাছাকাছি, তাই লেখা ও ভুল ধরা সহজ।

উচ্চস্তরের বা অ্যাসেম্বলি ভাষার প্রোগ্রাম চালাতে তাকে মেশিন ভাষায় অনুবাদ করতে হয়। এই কাজই করে অনুবাদক প্রোগ্রাম।

শব্দ

সোর্স কোড
মানুষের লেখা প্রোগ্রাম।
অবজেক্ট কোড
অনুবাদের পর পাওয়া মেশিন কোড।
বাগ
প্রোগ্রামের ভুল।
ডিবাগিং
ভুল খুঁজে ঠিক করা।

টেবিল

অনুবাদকের তুলনা

অনুবাদককাজভাষা
অ্যাসেম্বলারঅ্যাসেম্বলি থেকে মেশিন ভাষাঅ্যাসেম্বলি
কম্পাইলারপুরো প্রোগ্রাম একসঙ্গে অনুবাদC, C++
ইন্টারপ্রেটারএক লাইন করে অনুবাদ ও চালানোPython

ভুল

  • অ্যাসেম্বলি উচ্চস্তরের ভাষা নয়, এটি নিম্নস্তরের।
  • কম্পাইলার ও ইন্টারপ্রেটারের পার্থক্য হলো একসঙ্গে বনাম লাইন ধরে অনুবাদ।

টিপস

ভাষার প্রজন্মের ক্রম মনে রাখো: মেশিন, অ্যাসেম্বলি, উচ্চস্তর, অতি উচ্চস্তর, স্বাভাবিক ভাষা।

  • অ্যালগরিদম হলো ধাপে ধাপে সমাধানের লিখিত রূপ।
  • ফ্লোচার্ট হলো সেই ধাপের চিত্ররূপ।
  • সিদ্ধান্তের জন্য ডায়মন্ড আকৃতির চিহ্ন ব্যবহৃত হয়।

উদাহরণ

জোড় না বিজোড়: অ্যালগরিদম

  1. ধাপ ১: শুরু করো।
  2. ধাপ ২: সংখ্যা n ইনপুট নাও।
  3. ধাপ ৩: n কে 2 দিয়ে ভাগ করে ভাগশেষ বের করো।
  4. ধাপ ৪: ভাগশেষ 0 হলে দেখাও জোড়, নইলে দেখাও বিজোড়।
  5. ধাপ ৫: শেষ করো।

বিস্তারিত

অ্যালগরিদম হলো কোনো সমস্যা সমাধানের ধাপে ধাপে লিখিত নির্দেশ। ভালো অ্যালগরিদমের শুরু ও শেষ থাকে, প্রতিটি ধাপ স্পষ্ট হয় এবং সীমিত ধাপে শেষ হয়।

ফ্লোচার্ট হলো অ্যালগরিদমের ছবি। নির্দিষ্ট চিহ্ন ও তীর দিয়ে কাজের প্রবাহ দেখানো হয়। ছবি দেখে ভুল ধরা ও অন্যকে বোঝানো সহজ হয়।

প্রোগ্রাম লেখার ধাপ হলো: সমস্যা বোঝা, অ্যালগরিদম বা ফ্লোচার্ট তৈরি, কোড লেখা, পরীক্ষা ও ভুল ঠিক করা, এবং ডকুমেন্ট রাখা।

শব্দ

সিউডোকোড
সাধারণ ভাষায় লেখা প্রোগ্রামের খসড়া।
ডকুমেন্টেশন
প্রোগ্রাম সম্পর্কে লিখিত বিবরণ।

টেবিল

ফ্লোচার্টের চিহ্ন

চিহ্নকাজ
ডিম্বাকারশুরু ও শেষ
সমান্তরিকইনপুট ও আউটপুট
আয়তক্ষেত্রপ্রক্রিয়া বা হিসাব
ডায়মন্ডসিদ্ধান্ত
তীরপ্রবাহের দিক
ছোট বৃত্তসংযোগ

ভুল

  • ইনপুট ও প্রক্রিয়ার চিহ্ন গুলিয়ে ফেলো না। ইনপুট সমান্তরিক, হিসাব আয়তক্ষেত্র।
  • ডায়মন্ড থেকে অন্তত দুটি পথ বের হয়, হ্যাঁ ও না।

টিপস

ফ্লোচার্টে সব সময় শুরু ও শেষ চিহ্ন দাও, এবং তীরের দিক পরিষ্কার রাখো।

  • ডেটা টাইপ: int, float, double ও char।
  • printf দেখায়, scanf ইনপুট নেয়।
  • প্রতিটি C প্রোগ্রাম main ফাংশন থেকে শুরু হয়।

উদাহরণ

দুটি সংখ্যার যোগফল

#include <stdio.h>

int main() {
    int a, b, sum;
    scanf("%d %d", &a, &b);
    sum = a + b;
    printf("%d", sum);
    return 0;
}
  1. int a, b, sum দিয়ে তিনটি ভেরিয়েবল ঘোষণা।
  2. scanf-এ & চিহ্ন ভেরিয়েবলের ঠিকানা দেয়।
  3. printf ফল দেখায়।

বিস্তারিত

C ভাষা তৈরি করেন ডেনিস রিচি, ১৯৭২ সালে বেল ল্যাবে। এটি দ্রুত ও শক্তিশালী, আর অনেক আধুনিক ভাষার ভিত্তি। C কেস সেনসিটিভ, তাই Sum ও sum আলাদা।

ভেরিয়েবল হলো মেমোরিতে ডেটা রাখার নামযুক্ত জায়গা। নামের শুরুতে সংখ্যা থাকতে পারে না, এবং int বা for এর মতো সংরক্ষিত শব্দ নাম হিসেবে ব্যবহার করা যায় না।

প্রতিটি C প্রোগ্রাম main ফাংশন থেকে চলে। #include <stdio.h> দিয়ে printf ও scanf ব্যবহারের সুবিধা আনা হয়। প্রতিটি বিবৃতি সেমিকোলনে শেষ হয়।

শব্দ

কিওয়ার্ড
ভাষার সংরক্ষিত শব্দ, যেমন int, if, return।
হেডার ফাইল
তৈরি ফাংশনের ঘোষণা থাকা ফাইল, যেমন stdio.h।
অপারেটর
হিসাবের চিহ্ন, যেমন +, %, ==।

টেবিল

ডেটা টাইপ

টাইপকী রাখেফরম্যাট
intপূর্ণ সংখ্যা%d
floatদশমিক সংখ্যা%f
doubleবড় দশমিক সংখ্যা%lf
charএকটি অক্ষর%c

ভুল

  • scanf-এ & দিতে ভুলো না।
  • = মান বসায়, আর == দুটি মান তুলনা করে।
  • int ভাগে দশমিক বাদ যায়: 7 / 2 = 3, কিন্তু 7 % 2 = 1।

টিপস

আউটপুট বের করার প্রশ্নে প্রতিটি লাইনে ভেরিয়েবলের মান খাতায় টেবিল করে লেখো।

  • শর্তের জন্য if, else ও switch।
  • লুপ: for, while ও do-while।
  • do-while অন্তত একবার চলে।

উদাহরণ

1 থেকে 5 পর্যন্ত যোগফল

int i, s = 0;
for (i = 1; i <= 5; i++) {
    s = s + i;
}
printf("%d", s);
  1. i = 1, s = 1
  2. i = 2, s = 3
  3. i = 3, s = 6
  4. i = 4, s = 10
  5. i = 5, s = 15
  6. i = 6 হলে শর্ত মিথ্যা, লুপ শেষ। আউটপুট 15।

বিস্তারিত

প্রোগ্রাম সব সময় সোজা চলে না। if শর্ত সত্য হলে একটি কাজ করে, else অন্যটি করে। অনেকগুলো নির্দিষ্ট মানের জন্য switch সুবিধাজনক।

লুপ একই কাজ বারবার করে। সংখ্যা জানা থাকলে for, আর শর্তের ওপর নির্ভর করলে while ব্যবহার করা হয়। do-while আগে কাজ করে পরে শর্ত দেখে, তাই অন্তত একবার চলে।

break লুপ থেকে পুরোপুরি বের করে দেয়। continue শুধু ওই বারের বাকি অংশ বাদ দিয়ে পরের বারে যায়। শর্ত কখনো মিথ্যা না হলে লুপ অসীম হয়ে যায়।

শব্দ

লুপ
শর্ত অনুযায়ী কাজের পুনরাবৃত্তি।
break
লুপ বা switch থেকে বের হওয়া।
continue
পরের পুনরাবৃত্তিতে চলে যাওয়া।

টেবিল

লুপের তুলনা

লুপশর্ত পরীক্ষাসর্বনিম্ন চলে
forশুরুতে0 বার
whileশুরুতে0 বার
do-whileশেষে1 বার

ভুল

  • for এর পরে ; দিলে লুপের দেহ ফাঁকা হয়ে যায়।
  • i এর মান না বাড়ালে while লুপ অসীম হয়।
  • switch-এ break না দিলে পরের case-ও চলে।

টিপস

নিচের লুপ ট্রেসারে মান বদলে চালাও। পরীক্ষার আউটপুট প্রশ্ন এভাবেই ধাপে ধাপে করতে হয়।

  • অ্যারের ইনডেক্স 0 থেকে শুরু হয়।
  • একই ধরনের অনেক ডেটা অ্যারেতে থাকে।
  • ফাংশন একই কোড বারবার লেখা কমায়।

উদাহরণ

অ্যারের যোগফল ও ফাংশন

int total(int a[], int n) {
    int i, s = 0;
    for (i = 0; i < n; i++) {
        s = s + a[i];
    }
    return s;
}
  1. ফাংশন অ্যারে ও তার আকার নেয়।
  2. লুপ i = 0 থেকে n − 1 পর্যন্ত চলে।
  3. ওপরের অ্যারেতে ফল 4 + 9 + 2 + 7 + 5 = 27।

বিস্তারিত

অ্যারে হলো একই ধরনের অনেক ডেটা একসঙ্গে রাখার ব্যবস্থা। int a[5] লিখলে ৫টি পূর্ণসংখ্যার জায়গা হয়। ইনডেক্স 0 থেকে শুরু হয়, তাই ঘরগুলো a[0] থেকে a[4]।

৫০ জনের নম্বর রাখতে ৫০টি ভেরিয়েবল লাগবে না, একটি অ্যারে আর একটি লুপই যথেষ্ট। এটাই অ্যারের সুবিধা।

ফাংশন হলো নির্দিষ্ট কাজ করা কোডের অংশ। একবার লিখে বারবার ব্যবহার করা যায়। এতে প্রোগ্রাম ছোট হয় এবং ভুল ধরা সহজ হয়। printf তৈরি ফাংশন, আর নিজের বানানোগুলো ব্যবহারকারী-সংজ্ঞায়িত ফাংশন।

শব্দ

ইনডেক্স
অ্যারের ঘরের অবস্থান নম্বর।
প্যারামিটার
ফাংশনে পাঠানো মান।
return
ফাংশন থেকে মান ফেরত দেওয়া।
রিকার্শন
ফাংশনের নিজেকে নিজে ডাকা।

টেবিল

int a[5] = {4, 9, 2, 7, 5} অ্যারেতে

ইনডেক্স01234
মান49275

ভুল

  • int a[5] এ a[5] নামে কোনো ঘর নেই। শেষ ঘর a[4]।
  • লুপে i <= n লিখলে অ্যারের বাইরে চলে যায়, তাই i < n লেখো।

টিপস

অ্যারের প্রশ্নে ইনডেক্স ও মান পাশাপাশি টেবিল করে লিখলে ভুল কমে।