১০০%
🌅
Bangla Illustrated Coding Storybook

ছোটদের সি বুক

কোডিংয়ের একটি দিন

🧒🏽 🐱 🧙🏽‍♂️ 💻
Developer: Md. Anisur Rahman
📖
ভূমিকা

বইয়ের কথা

রাইয়ান, তার বিড়াল মিনি আর কোডিং-দাদুর সাথে ঘুরে আসো সকাল থেকে রাত পর্যন্ত এক মজার দিনে — যেখানে প্রতিটা মুহূর্ত C প্রোগ্রামিংয়ের একটা নতুন গল্প। নিচের কোড বক্সে নিজে হাতে কোড বদলে "কোড রান করো" চেপে দেখো কী হয়!

ভূমিকা১
🗓️
সূচিপত্র

দিনের সূচিপত্র

সূচিপত্র২
🌅
পর্ব ১ · শুরুর কথা

হ্যালো, পৃথিবী! (Hello World & Comments)

ভোর ছয়টায় রাইয়ানের ঘড়ি বেজে উঠল "টিরিং টিরিং"! ঘুম থেকে উঠেই সে দেখল তার বিছানার পাশে বসে আছেন কোডিং-দাদু, হাতে একটা চকচকে ল্যাপটপ। দাদু হাসতে হাসতে বললেন, "আজ থেকে আমরা কম্পিউটারের সাথে কথা বলা শিখব, ওর নাম C ভাষা!"

🧙🏽‍♂️ দাদু বললেন: "প্রতিটা C প্রোগ্রাম শুরু হয় main() নামের একটা ঘর থেকে। আর printf() হলো জাদুর চোঙা, যা দিয়ে কম্পিউটার আমাদের কথা বলে!"

রাইয়ান প্রথম যে লাইন লিখল, সেটা ছিল তার নিজের নাম দিয়ে একটা শুভেচ্ছাবার্তা। দাদু আরেকটা জিনিস দেখালেন — // চিহ্ন দিয়ে লেখা কমেন্ট, যা কম্পিউটার একদমই পড়ে না, শুধু মানুষকে বোঝানোর জন্য লেখা হয়, ঠিক যেমন বইয়ের মার্জিনে নোট লেখা হয়।

🕒 ভোর ৬:০০৩
hello.c
#include <stdio.h>

int main() {
    // eita ekta comment, computer eta pore na
    printf("Suprovat Prithibi! Ami Rayan!\n");
    printf("Aj ami C programming shikhbo.\n");
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ১৪
📦
পর্ব ২ · ডেটা টাইপ

মেমোরির বাক্স ও ডেটা টাইপ (Data Types & Variables)

নাস্তার টেবিলে রাইয়ান হিসেব করছিল — তার বয়স, পকেটের জমানো টাকা, আর নামের প্রথম অক্ষর। মিনি বিড়ালটা লাফিয়ে টেবিলে উঠে "ম্যাও" করে জিজ্ঞেস করল যেন, "এগুলো তুমি মনে রাখো কীভাবে?"

🧙🏽‍♂️ দাদু বললেন: "কম্পিউটারের মেমোরিতে আলাদা আলাদা বাক্স থাকে। পূর্ণসংখ্যার জন্য int, দশমিক সংখ্যার জন্য float, আর একটামাত্র অক্ষরের জন্য char বাক্স ব্যবহার করি।"

রাইয়ান তখন তিনটে বাক্সে তিনটে জিনিস ভরে রাখল — যেন মেমোরি একটা সুন্দর সাজানো আলমারি, যেখানে প্রতিটা তাকে কী থাকবে তা আগে থেকেই ঠিক করা থাকে।

🎯 এই পর্বে যা শিখবে:
  • int, float, char ডেটা টাইপ
  • ভেরিয়েবল ঘোষণা ও মান বসানো
  • %d, %f, %c ফরম্যাট স্পেসিফায়ার
🕒 ভোর ৬:৩০৫
datatypes.c
#include <stdio.h>

int main() {
    int boyosh = 10;
    float pocket_money = 55.50;
    char first_letter = 'R';

    printf("Rayan-er boyosh: %d bochor\n", boyosh);
    printf("Pocket money: %.2f taka\n", pocket_money);
    printf("Namer prothom okkhor: %c\n", first_letter);
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ২৬
🍎
পর্ব ৩ · গণনা

আপেল ভাগাভাগি ও অপারেটর (Operators)

স্কুলে যাওয়ার পথে রাইয়ানের ব্যাগে ছিল ৩টা আপেল, বন্ধু তাকে দিল আরও ৪টা। "মোট কতগুলো হলো?" — এই প্রশ্নের উত্তর দিতে কম্পিউটার ব্যবহার করে + চিহ্ন, যাকে বলে অপারেটর।

দাদু দেখালেন যে শুধু যোগ নয়, বিয়োগ (-), গুণ (*), ভাগ (/) — সবকিছুরই নিজস্ব চিহ্ন আছে, আর > বা < দিয়ে দুটো সংখ্যা তুলনাও করা যায়, যেমন কে বেশি লম্বা তা বের করার মতো!

🎯 এই পর্বে যা শিখবে:
  • গাণিতিক অপারেটর: + - * /
  • তুলনামূলক অপারেটর: > < ==
  • ফলাফলকে নতুন ভেরিয়েবলে রাখা
🕒 সকাল ৭:০০৭
operators.c
#include <stdio.h>

int main() {
    int amar_apel = 3;
    int bondhur_apel = 4;
    int total = amar_apel + bondhur_apel;
    int parthokko = bondhur_apel - amar_apel;
    int gunfol = amar_apel * bondhur_apel;

    printf("Total apel: %d\n", total);
    printf("Parthokko: %d\n", parthokko);
    printf("Gunfol: %d\n", gunfol);

    if (total > 5) {
        printf("Onek apel hoye geche!\n");
    }
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ৩৮
📥
পর্ব ৪ · কথোপকথন

ম্যাজিক বাক্স ও ইনপুট নেওয়া (scanf)

ক্লাসে স্যার একটা মজার খেলা খেলালেন — সবাইকে একটা সংখ্যা লিখতে বললেন, আর কম্পিউটার সেটা "শুনে" তার দ্বিগুণ বলে দেবে! রাইয়ান অবাক হয়ে জিজ্ঞেস করল, "কম্পিউটার কীভাবে আমার লেখা 'শোনে'?"

🧙🏽‍♂️ দাদু বললেন: "scanf() হলো কম্পিউটারের কান। এটা ইউজারের টাইপ করা মান তুলে নিয়ে ভেরিয়েবলে জমা রাখে, ঠিক যেমন তুমি ডাকপিয়নের কাছ থেকে চিঠি নাও।"

নিচের বক্সে "স্ট্যান্ডার্ড ইনপুট" ঘরে একটা সংখ্যা লিখে রান করো, দেখো কম্পিউটার কেমন উত্তর দেয়!

🎯 এই পর্বে যা শিখবে:
  • scanf() দিয়ে ইউজারের থেকে মান নেওয়া
  • & (এড্রেস-অফ) চিহ্নের ব্যবহার
  • ইনপুট নিয়ে হিসাব করে আউটপুট দেখানো
🕒 সকাল ৮:০০৯
input.c
#include <stdio.h>

int main() {
    int number;
    printf("Ekta songkha lekho: ");
    scanf("%d", &number);
    printf("Tumi likhecho: %d\n", number);
    printf("Er dwigun holo: %d\n", number * 2);
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ৪১০
🍪
পর্ব ৫ · সিদ্ধান্ত

নাস্তার বিস্কুট ও শর্ত (if-else)

আম্মু বললেন, "পরীক্ষায় ৯০-এর বেশি পেলে সোনার মেডেল-বিস্কুট, ৮০-এর বেশি হলে বড় বিস্কুট, নাহলে ছোট বিস্কুট!" রাইয়ান মনে মনে ভাবল, এটাও তো ঠিক কম্পিউটারের মতোই সিদ্ধান্ত নেওয়া!

🧙🏽‍♂️ দাদু বললেন: "if দিয়ে আমরা শর্ত পরীক্ষা করি — শর্ত সত্যি হলে এক কাজ, মিথ্যা হলে else দিয়ে আরেক কাজ। আর অনেকগুলো শর্ত একসাথে থাকলে else if ব্যবহার করি।"

রাইয়ান তার স্কোর বসিয়ে দেখল কম্পিউটার ঠিক আম্মুর মতোই বিচার করে বলে দিচ্ছে কোন বিস্কুট তার প্রাপ্য!

🎯 এই পর্বে যা শিখবে:
  • if, else if, else
  • একাধিক শর্ত ধাপে ধাপে পরীক্ষা করা
🕒 সকাল ৯:০০১১
condition.c
#include <stdio.h>

int main() {
    int score = 85;

    if (score >= 90) {
        printf("Bah! Sonar medal-biscuit!\n");
    } else if (score >= 80) {
        printf("Darun! Boro biscuit!\n");
    } else if (score >= 60) {
        printf("Bhalo hoyeche, choto biscuit!\n");
    } else {
        printf("Arektu cheshta koro, bondhu!\n");
    }
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ৫১২
🎒
পর্ব ৬ · পথ বাছাই

সপ্তাহের দিন ও সুইচ-কেস (switch-case)

ক্লাসে ক্যালেন্ডার নিয়ে খেলা হচ্ছিল — কেউ একটা সংখ্যা বললেই বলতে হবে সেটা সপ্তাহের কোন দিন। রাইয়ান ভাবল, if-else দিয়ে করতে গেলে অনেক লাইন লাগবে তো!

🧙🏽‍♂️ দাদু বললেন: "অনেকগুলো নির্দিষ্ট মান থেকে একটা বেছে নিতে হলে switch-case ব্যবহার করো — এটা একটা ট্রেন স্টেশনের মতো, প্রতিটা case একটা প্ল্যাটফর্ম, আর break মানে ট্রেন থেমে যাওয়া।"

দুটো কেসকে একসাথে জোড়া দিয়ে (৬ আর ৭ নম্বর) রাইয়ান দেখাল ছুটির দিন কীভাবে একসাথে ধরা যায়।

🎯 এই পর্বে যা শিখবে:
  • switch, case, break, default
  • একাধিক case একসাথে ব্যবহার করা
🕒 সকাল ১০:০০১৩
switch.c
#include <stdio.h>

int main() {
    int day = 2;
    switch (day) {
        case 1:
            printf("Robibar - School khola\n");
            break;
        case 2:
            printf("Sombar - Onko porikkha!\n");
            break;
        case 6:
        case 7:
            printf("Chhutir din! Iyeeee!\n");
            break;
        default:
            printf("Sadharon school-er din\n");
    }
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ৬১৪
🔁
পর্ব ৭ · পুনরাবৃত্তি

মাঠের দৌড় ও for লুপ

টিফিন পিরিয়ডের আগমুহূর্তে স্যার বললেন মাঠে ৫ চক্কর দৌড়াতে হবে। রাইয়ান একই কাজ ৫ বার করতে গিয়ে ভাবল, "এইটা তো একঘেয়ে! কম্পিউটারে নিশ্চয়ই সোজা কোনো উপায় আছে?"

🧙🏽‍♂️ দাদু বললেন: "for লুপ হলো একটা চাকা — শুরু, শর্ত, আর প্রতিবার একটু বাড়ানো, এই তিনটে জিনিস ঠিক করে দিলেই ও নিজে নিজে ঘুরতে থাকবে!"

রাইয়ান i নামের একটা গোনা-সংখ্যা দিয়ে ১ থেকে ৫ পর্যন্ত দৌড়ের প্রতিটা চক্করের হিসাব রাখল।

🎯 এই পর্বে যা শিখবে:
  • for (শুরু; শর্ত; বৃদ্ধি) গঠন
  • লুপ কাউন্টার ভেরিয়েবল
🕒 সকাল ১১:০০১৫
forloop.c
#include <stdio.h>

int main() {
    for (int i = 1; i <= 5; i++) {
        printf("Dourer chokkor number: %d\n", i);
    }
    printf("Rayan hapachche! Total 5 chokkor shesh.\n");
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ৭১৬
🍪
পর্ব ৮ · শর্তে থামা

কুকির বাটি ও while লুপ

টিফিনে রাইয়ানের বাটিতে ৫টা কুকি ছিল। সে ঠিক করল বাটি খালি না হওয়া পর্যন্ত খেতেই থাকবে — কিন্তু কতবার খাবে সেটা আগে থেকে জানা নেই, শুধু জানে "যতক্ষণ কুকি আছে"।

🧙🏽‍♂️ দাদু বললেন: "এখানে for লুপ নয়, while লুপ লাগবে — যতক্ষণ শর্ত সত্যি, ততক্ষণ কাজ চলতেই থাকবে। শুরুতে কয়বার হবে তা জানার দরকার নেই।"

প্রতিবার একটা কুকি খেয়ে রাইয়ান গুনতির সংখ্যা এক করে কমাতে লাগল, যতক্ষণ না বাটি খালি হয়।

🎯 এই পর্বে যা শিখবে:
  • while (শর্ত) { ... }
  • লুপের ভেতরে ভেরিয়েবল আপডেট করা
🕒 দুপুর ১২:০০১৭
whileloop.c
#include <stdio.h>

int main() {
    int cookies = 5;
    while (cookies > 0) {
        printf("Arekta cookie khelam, baki ache: %d\n", cookies - 1);
        cookies = cookies - 1;
    }
    printf("Shob cookie shesh!\n");
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ৮১৮
🏀
পর্ব ৯ · অন্তত একবার

বাস্কেটবল ও do-while লুপ

খেলার মাঠে রাইয়ান বাস্কেটে বল ঢোকানোর চেষ্টা করছিল। প্রথমবারেই হয়তো ঢুকবে না, কিন্তু একবার তো চেষ্টা করতেই হবে, তারপর দরকার হলে আবার আর আবার।

🧙🏽‍♂️ দাদু বললেন: "do-while লুপ আগে কাজটা করে, তারপর শর্ত দেখে — মানে অন্তত একবার তো চেষ্টা হবেই, তারপর শর্ত সত্যি থাকলে আবার হবে।"

রাইয়ান তিনবার চেষ্টা করে অবশেষে বল ঢুকিয়ে "ইয়েএএ!" বলে চিৎকার করল।

🎯 এই পর্বে যা শিখবে:
  • do { ... } while(শর্ত);
  • while আর do-while এর পার্থক্য
🕒 দুপুর ১:০০১৯
dowhile.c
#include <stdio.h>

int main() {
    int attempts = 0;
    do {
        attempts = attempts + 1;
        printf("Ball chorar cheshta number: %d\n", attempts);
    } while (attempts < 3);
    printf("Obosheshe basket-e ball dhuklo!\n");
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ৯২০
🎈
পর্ব ১০ · থামা ও এড়িয়ে যাওয়া

বেলুন ফাটানো ও break-continue

স্কুলের অনুষ্ঠানে সারি সারি বেলুন। রাইয়ানকে বলা হলো ১ থেকে ১০ পর্যন্ত বেলুন গুনতে, কিন্তু ৪ নম্বরটা বাদ দিতে হবে (ওটা নষ্ট), আর ৮ নম্বরে পৌঁছালেই থেমে যেতে হবে।

🧙🏽‍♂️ দাদু বললেন: "continue মানে এই ধাপটা এড়িয়ে পরের ধাপে চলে যাওয়া, আর break মানে পুরো লুপ থেকে বেরিয়েই যাওয়া। দুটো সম্পূর্ণ ভিন্ন কাজ!"

রাইয়ান দেখল ৪ নম্বর বেলুন গোনায় বাদ পড়ল, আর ৮ নম্বরে পৌঁছেই পুরো গোনাগুনতি থেমে গেল।

🎯 এই পর্বে যা শিখবে:
  • continue — ধাপ এড়িয়ে যাওয়া
  • break — লুপ থেকে বেরিয়ে যাওয়া
🕒 দুপুর ২:০০২১
breakcontinue.c
#include <stdio.h>

int main() {
    for (int i = 1; i <= 10; i++) {
        if (i == 4) {
            continue;
        }
        if (i == 8) {
            break;
        }
        printf("Golapi balloon number: %d\n", i);
    }
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ১০২২
🔵
পর্ব ১১ · সারিবদ্ধ বাক্স

মার্বেলের বাক্স ও অ্যারে (Arrays)

দুপুরে খেলার সময় রাইয়ানের কাছে ৫ রঙের ৫টা মার্বেল ছিল। প্রতিটার জন্য আলাদা নাম দিতে গেলে (marble1, marble2...) বিরক্তিকর হয়ে যাবে, তাই দাদু একটা কৌশল শেখালেন।

🧙🏽‍♂️ দাদু বললেন: "অ্যারে হলো একসারি বাক্স, একই নামে কিন্তু নম্বর দিয়ে আলাদা করা — marbles[0], marbles[1], এভাবে। মনে রেখো, গোনা শুরু হয় ০ থেকে!"

রাইয়ান একটা লুপ দিয়ে সবগুলো বাক্স ঘুরে ঘুরে দেখাল কোন বাক্সে কোন মার্বেল আছে।

🎯 এই পর্বে যা শিখবে:
  • অ্যারে ঘোষণা করা: int marbles[5]
  • ইনডেক্স দিয়ে মান বের করা (০ থেকে শুরু)
  • লুপ দিয়ে পুরো অ্যারে ঘুরে দেখা
🕒 দুপুর ৩:০০২৩
array.c
#include <stdio.h>

int main() {
    int marbles[5] = {10, 20, 30, 40, 50};

    for (int i = 0; i < 5; i++) {
        printf("Box number %d e marble ache: %d\n", i + 1, marbles[i]);
    }
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ১১২৪
🎬
পর্ব ১২ · সারি ও কলাম

সিনেমার সিট ও ২ডি অ্যারে

খাওয়ার পর পরিবারসহ সিনেমা হলে যাওয়ার প্ল্যান হলো। সিট বুকিং-এ রাইয়ান দেখল আসনগুলো সারি (row) আর কলাম (column) মিলিয়ে সাজানো — যেন একটা গ্রিড বা টেবিল।

🧙🏽‍♂️ দাদু বললেন: "একটা অ্যারের ভেতরে আরেকটা অ্যারে রাখলেই ২ডি অ্যারে হয়ে যায় — যেমন সিনেমা হলের সিট চার্ট, প্রথম নম্বর দিয়ে সারি আর দ্বিতীয় নম্বর দিয়ে কলাম বোঝানো হয়।"

দুটো লুপ একসাথে বসিয়ে (একটা আরেকটার ভেতরে) রাইয়ান পুরো সিট চার্টটাই ছাপিয়ে ফেলল।

🎯 এই পর্বে যা শিখবে:
  • ২ডি অ্যারে ঘোষণা: int seats[2][3]
  • নেস্টেড (একটার ভেতরে আরেকটা) লুপ
🕒 বিকেল ৪:০০২৫
array2d.c
#include <stdio.h>

int main() {
    int seats[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };

    for (int row = 0; row < 2; row++) {
        for (int col = 0; col < 3; col++) {
            printf("Sari %d, column %d = ason number %d\n", row, col, seats[row][col]);
        }
    }
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ১২২৬
🔤
পর্ব ১৩ · অক্ষরের সারি

নামের ট্যাগ ও স্ট্রিং (Strings)

সিনেমা হলে নিজের আর মিনির নামের ট্যাগ বানাতে গিয়ে রাইয়ান বুঝল, নাম তো একটামাত্র char নয়, অনেকগুলো অক্ষর মিলে তৈরি! এই অক্ষরের সারিকেই বলে স্ট্রিং।

🧙🏽‍♂️ দাদু বললেন: "C-তে স্ট্রিং আসলে char-এর একটা অ্যারে। আর %s ফরম্যাট দিয়ে পুরো নামটাই একসাথে ছাপানো যায়, একটা একটা অক্ষর আলাদা করে লেখা লাগে না।"

দাদু আরও দেখালেন strlen() নামের একটা যন্ত্র, যা দিয়ে যেকোনো নামের দৈর্ঘ্য (কয়টা অক্ষর) সহজেই বের করা যায়।

🎯 এই পর্বে যা শিখবে:
  • char অ্যারে দিয়ে স্ট্রিং বানানো
  • %s দিয়ে স্ট্রিং প্রিন্ট করা
  • strlen() দিয়ে দৈর্ঘ্য মাপা
🕒 বিকেল ৪:৩০২৭
string.c
#include <stdio.h>
#include <string.h>

int main() {
    char name[20] = "Rayan";
    char pet[20] = "Mini";

    printf("Amar naam: %s\n", name);
    printf("Amar biraler naam: %s\n", pet);
    printf("Namer doirgho: %d okkhor\n", (int)strlen(name));
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ১৩২৮
🤖
পর্ব ১৪ · জাদুর যন্ত্র

জাদুর মেশিন ও ফাংশন (Functions)

বিকেলে বাসায় ফিরে রাইয়ান একটা ছোট্ট "জাদুর মেশিন" বানাতে চাইল, যেখানে দুটো সংখ্যা ঢোকালেই যোগফল বেরিয়ে আসবে। বারবার একই হিসাব না লিখে এই মেশিনটাকে বারবার ব্যবহার করা যাবে।

🧙🏽‍♂️ দাদু বললেন: "এটাকেই বলে ফাংশন — একটা নাম দেওয়া কাজের প্যাকেট, যাকে দরকার হলেই ডাকা যায়, আর একই কোড বারবার লেখার ঝামেলা থাকে না।"

রাইয়ান তার মেশিনের নাম দিল jog (মানে যোগ করা), আর সেটাকে দুইবার আলাদা আলাদা সংখ্যা দিয়ে ডেকে দেখাল।

🎯 এই পর্বে যা শিখবে:
  • ফাংশন সংজ্ঞায়িত করা (প্যারামিটার ও রিটার্ন টাইপ)
  • ফাংশন কল করা ও ফলাফল ব্যবহার করা
🕒 বিকেল ৫:০০২৯
function.c
#include <stdio.h>

int jog(int a, int b) {
    return a + b;
}

int main() {
    int result = jog(5, 7);
    printf("Jogfol: %d\n", result);
    printf("Arekbar: %d\n", jog(100, 23));
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ১৪৩০
🪞
পর্ব ১৫ · আয়নার ভেতর আয়না

আয়নার প্রতিফলন ও রিকার্সন (Recursion)

রাইয়ান আয়নার সামনে দাঁড়িয়ে আরেকটা আয়না ধরল — আর দেখল ভেতরে ভেতরে অসংখ্য প্রতিফলন! দাদু বললেন এটাই একটা দারুণ উদাহরণ কম্পিউটারের একটা জাদুকরী কৌশলের।

🧙🏽‍♂️ দাদু বললেন: "একটা ফাংশন যখন নিজেকেই আবার ডাকে, তাকে বলে রিকার্সন। যেমন factorial(5) হিসাব করতে factorial(4) লাগে, factorial(4) এর জন্য factorial(3) লাগে — এভাবে ছোট হতে হতে একদম ১ এ থামে।"

রাইয়ান দেখল ৫! (৫ ফ্যাক্টোরিয়াল) মানে ৫×৪×৩×২×১, আর কম্পিউটার এটা বের করল নিজেকে বারবার ডেকে।

🎯 এই পর্বে যা শিখবে:
  • রিকার্সন কী ও কীভাবে কাজ করে
  • থামার শর্ত (base case) কেন জরুরি
  • ফ্যাক্টোরিয়াল হিসাব করা
🕒 বিকেল ৫:৩০৩১
recursion.c
#include <stdio.h>

int factorial(int n) {
    if (n <= 1) {
        return 1;
    }
    return n * factorial(n - 1);
}

int main() {
    int num = 5;
    printf("%d! = %d\n", num, factorial(num));
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ১৫৩২
🧸
পর্ব ১৬ · লুকানো ঠিকানা

খেলনার ঠিকানা ও পয়েন্টার (Pointers)

রাইয়ান তার প্রিয় খেলনাটা আলমারির কোন তাকে আছে, সেই ঠিকানা একটা কাগজে লিখে রাখল। এখন এই কাগজটা যে কাউকে দিলেই সে সরাসরি খেলনাটা খুঁজে বের করতে পারবে!

🧙🏽‍♂️ দাদু বললেন: "পয়েন্টার হলো ঠিক এই কাগজের মতো — এটা কোনো মান নিজে ধরে রাখে না, বরং মেমোরিতে সেই মান কোথায় আছে, সেই ঠিকানা মনে রাখে। * চিহ্ন দিয়ে সেই ঠিকানায় গিয়ে আসল মান দেখা যায়।"

রাইয়ান পয়েন্টার দিয়ে দূর থেকেই তার খেলনার মান বদলে ফেলল, ঠিক যেন জাদু!

🎯 এই পর্বে যা শিখবে:
  • & দিয়ে ঠিকানা বের করা
  • * দিয়ে পয়েন্টার ঘোষণা ও ডিরেফারেন্স করা
  • পয়েন্টার দিয়ে আসল ভেরিয়েবলের মান বদলানো
🕒 সন্ধা ৬:০০৩৩
pointer.c
#include <stdio.h>

int main() {
    int toy = 99;
    int *ptr = &toy;

    printf("Khelnar asol maan: %d\n", toy);
    printf("Pointer diye dekha maan: %d\n", *ptr);

    *ptr = 150;
    printf("Pointer diye bodlanor por: %d\n", toy);
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ১৬৩৪
🤖
পর্ব ১৭ · পরিচয়পত্র

রোবটের পরিচয়পত্র ও স্ট্রাকচার (Structures)

রাইয়ানের প্রিয় খেলনা রোবট "চিট্টি"-র একটা নাম আছে, একটা শক্তির মাত্রা আছে। এই দুটো আলাদা জিনিসকে একসাথে জুড়ে একটা পরিচয়পত্র বানানো গেলে কী মজাই না হতো!

🧙🏽‍♂️ দাদু বললেন: "struct দিয়ে আমরা ভিন্ন ভিন্ন ডেটা টাইপ একসাথে জুড়ে একটা নতুন 'কাস্টম' টাইপ বানাতে পারি — এটাই স্ট্রাকচার, যেন একটা ফর্ম যেখানে নাম আর ক্ষমতা দুটোই থাকে।"

রাইয়ান তার রোবটের শক্তি ১০ বাড়িয়ে দেখাল কীভাবে স্ট্রাকচারের একটা অংশ (member) বদলানো যায়।

🎯 এই পর্বে যা শিখবে:
  • struct দিয়ে কাস্টম ডেটা টাইপ বানানো
  • ডট (.) দিয়ে মেম্বার অ্যাক্সেস করা
🕒 সন্ধা ৬:৩০৩৫
struct.c
#include <stdio.h>

struct Robot {
    char name[20];
    int power;
};

int main() {
    struct Robot r1 = {"Chitti", 90};
    printf("Robot-er naam: %s\n", r1.name);
    printf("Shokti: %d\n", r1.power);
    r1.power = r1.power + 10;
    printf("Notun shokti: %d\n", r1.power);
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ১৭৩৬
🔢
পর্ব ১৮ · নাম-করা সংখ্যা

দিনের নাম ও এনাম (Enums)

রাইয়ান আবার সপ্তাহের দিনগুলো নিয়ে ভাবছিল, কিন্তু এবার সংখ্যা (0,1,2...) মনে রাখার বদলে দিনগুলোর নামই ব্যবহার করতে চাইল — SUNDAY, MONDAY... এভাবে।

🧙🏽‍♂️ দাদু বললেন: "enum দিয়ে আমরা কিছু সংখ্যাকে সুন্দর নাম দিতে পারি। ভেতরে ভেতরে এরা এখনও সংখ্যাই (০, ১, ২...), কিন্তু কোডে পড়তে অনেক সহজ হয়ে যায়।"

রাইয়ান দেখল MONDAY লিখলেই কম্পিউটার বুঝে যায় এটা আসলে সংখ্যা ১।

🎯 এই পর্বে যা শিখবে:
  • enum দিয়ে নাম-করা ধ্রুবক বানানো
  • এনামের মান তুলনা করা
🕒 সন্ধা ৭:০০৩৭
enum.c
#include <stdio.h>

enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY };

int main() {
    enum Day today = MONDAY;
    printf("Ajker diner number: %d\n", today);
    if (today == MONDAY) {
        printf("Aj sombar, school-e jete hobe!\n");
    }
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ১৮৩৮
📦
পর্ব ১৯ · একই ঘর, ভিন্ন জিনিস

যাদুর বাক্স ও ইউনিয়ন (Unions)

রাইয়ানের একটা ছোট্ট গোপন বাক্স আছে যেখানে একবার একটা সংখ্যা, আবার একবার একটা অক্ষর রাখা যায় — কিন্তু দুটো একসাথে নয়, একটা সময়ে একটাই!

🧙🏽‍♂️ দাদু বললেন: "union হলো স্ট্রাকচারের মতোই দেখতে, কিন্তু এখানে সব মেম্বার একই জায়গা (মেমোরি) ভাগাভাগি করে ব্যবহার করে। নতুন কিছু রাখলে আগেরটা হারিয়ে যায়!"

রাইয়ান প্রথমে বাক্সে একটা সংখ্যা রাখল, পরে সেখানেই একটা অক্ষর রেখে দেখাল আগের সংখ্যাটা আর নেই।

🎯 এই পর্বে যা শিখবে:
  • union কীভাবে মেমোরি শেয়ার করে
  • struct আর union-এর পার্থক্য
🕒 রাত ৮:০০৩৯
union.c
#include <stdio.h>

union Box {
    int number;
    char letter;
};

int main() {
    union Box b;
    b.number = 65;
    printf("Box-e songkha rakhlam: %d\n", b.number);
    b.letter = 'A';
    printf("Ebar box-e okkhor rakhlam: %c\n", b.letter);
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ১৯৪০
📐
পর্ব ২০ · খাতার নিয়ম

ম্যাজিক নিয়ম ও প্রিপ্রসেসর ম্যাক্রো (#define)

সন্ধ্যায় হোমওয়ার্ক করার সময় রাইয়ান একটা নিয়ম বারবার লিখতে লিখতে ক্লান্ত হয়ে গেল — "সর্বোচ্চ ৫টা খেলনা রাখা যাবে"। দাদু বললেন এটার জন্যও শর্টকাট আছে!

🧙🏽‍♂️ দাদু বললেন: "#define দিয়ে আমরা একটা নাম আগে থেকেই একটা মানের সাথে বেঁধে দিতে পারি। কম্পাইলার কোড পড়ার আগেই এই নামগুলো বদলে আসল মান বসিয়ে দেয়।"

দাদু আরেকটা মজার জিনিস দেখালেন — SQUARE(x) নামের একটা ম্যাক্রো, যেটা যেকোনো সংখ্যার বর্গ (নিজের সাথে নিজের গুণ) বের করে দেয়।

🎯 এই পর্বে যা শিখবে:
  • #define দিয়ে ধ্রুবক বানানো
  • প্যারামিটারসহ ম্যাক্রো (ফাংশনের মতো দেখতে)
🕒 রাত ৯:০০৪১
macro.c
#include <stdio.h>
#define MAX_TOYS 5
#define SQUARE(x) ((x) * (x))

int main() {
    printf("Sorbochcho khelna rakha jabe: %d ti\n", MAX_TOYS);
    printf("4 er borgo: %d\n", SQUARE(4));
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ২০৪২
📊
পর্ব ২১ · মিনি প্রজেক্ট

নম্বর সাজানো ও বাবল সর্ট (Bubble Sort)

দিনের শেষে ক্লাসের সব বন্ধুর পরীক্ষার নম্বর ছোট থেকে বড় করে সাজাতে হবে। রাইয়ান ভাবল, এতক্ষণ শেখা সব জিনিস — অ্যারে, লুপ, শর্ত — একসাথে ব্যবহার করে এটা করা যায় কি না!

🧙🏽‍♂️ দাদু বললেন: "এটাই আসল মজা — বাবল সর্ট অ্যালগরিদমে আমরা পাশাপাশি দুটো সংখ্যা তুলনা করি, বড়টা পেছনে ঠেলে দিই, ঠিক যেমন পানির বুদবুদ উপরে ভেসে ওঠে।"

রাইয়ান দেখল কীভাবে ছোট ছোট ধাপে ধাপে পুরো তালিকাটাই সাজানো হয়ে যায় — এটাই তার প্রথম "প্রোগ্রাম" যা সত্যিকারের একটা সমস্যা সমাধান করল!

🎯 এই পর্বে যা শিখবে:
  • নেস্টেড লুপ দিয়ে তুলনা ও অদল-বদল (swap)
  • অ্যারে, লুপ ও শর্ত মিলিয়ে একটা ছোট অ্যালগরিদম তৈরি
🕒 রাত ১০:০০৪৩
bubblesort.c
#include <stdio.h>

int main() {
    int scores[6] = {45, 89, 12, 67, 90, 34};
    int n = 6;

    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (scores[j] > scores[j + 1]) {
                int temp = scores[j];
                scores[j] = scores[j + 1];
                scores[j + 1] = temp;
            }
        }
    }

    printf("Choto theke boro: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", scores[i]);
    }
    printf("\n");
    return 0;
}
💡 কোডটা ছোটদের সি কম্পাইলারে চালিয়ে দেখো!
অধ্যায় ২১৪৪
🌙
সমাপ্তি

অনেক রাত হয়ে গেছে রাইয়ান!
আজকের কোডিং এখানেই শেষ!

রাইয়ান, মিনি আর কোডিং-দাদু জানালার পাশে বসে তারা দেখছে। সকালের "হ্যালো, পৃথিবী!" থেকে শুরু করে রাতের বাবল সর্ট পর্যন্ত — আজ একটামাত্র দিনে C প্রোগ্রামিংয়ের প্রায় সবগুলো বড় ধারণা ঘুরে দেখা হয়ে গেল। দাদু হাসিমুখে বললেন, "এখন থেকে প্রতিটা কোড তোমার কাছে একটা নতুন গল্প!"

🌙 রাত৪৫
🏅 সার্টিফিকেট 🏅
রাইয়ানের নতুন বন্ধু
C প্রোগ্রামিংয়ের ২১টি অধ্যায় সফলভাবে শেষ করার জন্য
⭐ 🎉 🏆 🎈 ✨
🌙

সমাপ্ত

ছোটদের সি বুক · কোডিংয়ের একটি দিন
github.com/AnisurRahmanJU/C-Book