অধ্যায় ১৪: স্ট্রাকচার (Structure)—একাধিক ভিন্ন ডেটাকে এক সুতোয় বাঁধার ম্যাজিক!
হ্যালো ফিউচার কোডারস! আমরা ১১ নম্বর অধ্যায়ে অ্যারে (Array) শিখেছিলাম, মনে আছে? অ্যারে দিয়ে আমরা অনেকগুলো ডেটা একসাথে রাখতে পারি, কিন্তু সেখানে একটা বড় সীমাবদ্ধতা ছিল—সবগুলো ডেটাকে একই টাইপের হতে হতো (যেমন: শুধু রোল নম্বর বা শুধু জিপিএ)।
কিন্তু একটু ভাবো তো—তুমি তোমার স্কুলের কোনো বন্ধুর একটি কমপ্লিট প্রোফাইল বা আইডি কার্ড তৈরি করতে চাও। সেখানে কী কী তথ্য থাকবে?
- বন্ধুর নাম (
Stringবা ক্যারেক্টার অ্যারে) - বন্ধুর রোল নম্বর (
int) - বন্ধুর জিপিএ (
float)
এখানে তো তিন রকমের ৩টি ডেটা! অ্যারে দিয়ে তো এটা করা সম্ভব নয়। তাহলে উপায়? এই সমস্যার সমাধান করতেই C ল্যাঙ্গুয়েজে রয়েছে এক দারুণ সুপারপাওয়ার, যার নাম স্ট্রাকচার (Structure)। এটি ব্যবহার করে আমরা আমাদের মনের মতো কাস্টম ডেটা টাইপ বানিয়ে নিতে পারি!
🏗️ স্ট্রাকচার আসলে কী? (বাস্তব জীবনের উদাহরণ)
সহজ কথায়, স্ট্রাকচার হলো একটা খালি ফর্ম বা বায়োডাটা ফরম্যাট! যেমন একটা স্কুলের অ্যাডমিশন ফর্মে নাম, বয়স, ক্লাসের জন্য আলাদা ফাঁকা ঘর থাকে এবং একেকটা ঘরে একেক তথ্য লিখতে হয়। স্ট্রাকচারও ঠিক তেমনই একটি কাস্টম ফরম্যাট, যা মেমোরিতে আলাদা আলাদা ডেটা টাইপকে একটি একক নামের অধীনে গুছিয়ে রাখে।
C ল্যাঙ্গুয়েজে স্ট্রাকচার তৈরি করার জন্য struct কিওয়ার্ডটি ব্যবহার করা হয়।
💻 চলো আমাদের নিজের তৈরি “Student” ডেটা টাইপ বানাই!
কোড ব্লকে গিয়ে নিচের কোডটি ঝটপট লিখে রান করো এবং দেখো স্ট্রাকচার কীভাবে ম্যাজিকের মতো কাজ করে:
C
#include <stdio.h>
#include <string.h>
// ১. স্টুডেন্টের জন্য একটি স্ট্রাকচার বা ফরম্যাট তৈরি করলাম
struct Student {
char name[30];
int roll;
float gpa;
};
int main() {
// ২. আমাদের নতুন ডেটা টাইপ ব্যবহার করে একটি ভেরিয়েবল তৈরি করলাম
struct Student student1;
// ৩. ডট (.) অপারেটর ব্যবহার করে ভেতরের ঘরে ডেটা ইনপুট দেওয়া
strcpy(student1.name, "Siam Rahman"); // স্ট্রিং কপি করার ফাংশন
student1.roll = 5;
student1.gpa = 4.95;
// ৪. স্ক্রিনে ডেটা প্রিন্ট করে দেখা
printf("--- স্টুডেন্ট প্রোফাইল ---\n");
printf("নাম: %s\n", student1.name);
printf("রোল নম্বর: %d\n", student1.roll);
printf("জিপিএ: %.2f\n", student1.gpa);
return 0;
}
🔍 টিনএজ নোট: কোডের ভেতরে
student1.rollখেয়াল করেছ? স্ট্রাকচারের ভেতরের কোনো নির্দিষ্ট বক্সে অ্যাক্সেস করার জন্য বা সেখানে ডেটা রাখার জন্য এই.(ডট অপারেটর) ব্যবহার করতে হয়। এটি যেন একটা চাবির মতো, যা নির্দিষ্ট ঘরের তালা খোলে!
💡 আজকের কোডিং চ্যালেঞ্জ (Coding Challenge for You!)
আজকের প্রজেক্টটি খুব ইন্টারেস্টিং! ১. একটি মোবাইলের জন্য স্ট্রাকচার তৈরি করো যার নাম হবে struct Mobile। ২. এর ভেতরে থাকবে মোবাইলের ব্র্যান্ডের নাম (char brand[20]), র্যামের সাইজ (int ram), এবং দাম (float price)। ৩. main() ফাংশনে তোমার পছন্দের একটি ফোনের তথ্য এই স্ট্রাকচারে ইনপুট দিয়ে তা স্ক্রিনে প্রিন্ট করে দেখাও।
কোডটি রান করতে পারলে কমেন্টে তোমার পছন্দের ফোনের নাম লিখে আমাদের জানাও! কোনো সমস্যা হলে কোডটি কমেন্ট বক্সে পেস্ট করে দাও, আমাদের টিম দ্রুত সমাধান করে দেবে।
আগামী পর্বে আমরা শিখবো এতক্ষণ ধরে শেখা সব লজিক একসাথে কাজে লাগিয়ে কীভাবে আমাদের কোর্সের প্রথম গেম বা প্রজেক্ট—”স্মার্ট ক্যালকুলেটর” তৈরি করতে হয়! চোখ রাখো tolearnteam.com-এ!
Read All Articles
- শূন্য থেকে প্রোগ্রামিং হিরো: C Language ফুল কোর্স!
- কোডিংয়ের হাতেখড়ি: তোমার কম্পিউটারে প্রথম প্রোগ্রাম!
- মেমোরির ম্যাজিক বক্স: ভেরিয়েবল এবং ডেটা টাইপের সহজ পাঠ!
- কম্পিউটার এবার কথা শুনবে! ইউজারের কাছ থেকে ইনপুট নেওয়ার ম্যাজিক
- কম্পিউটারের নিজস্ব মগজ! if-else দিয়ে সিদ্ধান্ত নেওয়ার ম্যাজিক
- জিপিএ ক্যালকুলেটরের রহস্য! else if দিয়ে একাধিক শর্ত মেলানোর ট্রিক
- লজিকের সুপারপাওয়ার! AND এবং OR অপারেটর দিয়ে এক লাইনে একাধিক শর্ত মেলানোর ট্রিক
- এক কোডেই হাজার বার! লুপ (Loop) ব্যবহার করে কম্পিউটারের খাটুনি কমানোর ট্রিক
- শর্ত না মিললে নো এন্ট্রি! while এবং do-while লুপের ভেতরের গল্প
- কোড গুছানোর ম্যাজিক বক্স! C ল্যাঙ্গুয়েজে ফাংশন (Function) কেন এত দরকারি?
- মেমোরির লম্বা ট্রেন! C ল্যাঙ্গুয়েজে অ্যারে (Array) কী এবং কেন শিখব?
- অক্ষরের মালা! C ল্যাঙ্গুয়েজে স্ট্রিং (String) দিয়ে নিজের নাম প্রিন্ট করার ট্রিক
- মেমোরির গোপন ঠিকানা! C ল্যাঙ্গুয়েজে পয়েন্টার (Pointer) কী এবং কেন মানুষ একে ভয় পায়?
- নিজের ইচ্ছায় ডেটা টাইপ! C ল্যাঙ্গুয়েজে স্ট্রাকচার (Structure) দিয়ে কাস্টম প্রোফাইল তৈরির ট্রিক
- এবার আসল প্রজেক্ট! C ল্যাঙ্গুয়েজ দিয়ে নিজের তৈরি প্রথম “স্মার্ট ক্যালকুলেটর”
- C তো শিখলাম, এরপর কী? প্রোগ্রামিং দুনিয়ায় পরবর্তী স্বপ্নের জার্নি!
