আইসিটি ৪৫২ কোডে শিক্ষক নিবন্ধন লিখিত পরীক্ষার প্রস্তুতি বিষয়ক সিরিজে সকলকে স্বাগতম। আজকের পর্বে আলোচনা করা হবে স্ট্রাকচার্ড প্রোগ্রামিং। গত কয়েক বছরের মতো এবারও শিক্ষক নিবন্ধন লিখিত পরীক্ষায় সহায়ক হিসাবে কাজ করার জন্য এই সিরিজটি করা। ইতিপূর্বে আমার ইউটিউব চ্যানেলে নিম্নোক্ত বিষয়সমূহের উপর সম্পূর্ণ ভিডিও সিরিজ করা আছে:
এরই ধারাবাহিকতায় এ বছর শিক্ষক নিবন্ধনে কলেজ পর্যায়ে আইসিটি (কোড ৪৫২) এর লিখিত পরীক্ষার ভিডিও এবং ব্লগ পোস্ট রিলিজ করা হবে। প্রতিটি ভিডিওর জন্য আলাদা আলাদা ব্লগ পোস্ট থাকবে।
আজকের পর্বের সিলেবাস

স্ট্রাকচার্ড প্রোগ্রামিং (Structured Programming)
Structured Programming স্ট্রাকচার্ড প্রোগ্রামিং এমন একটি পদ্ধতি যেখানে প্রোগ্রামকে ফাংশন বা প্রক্রিয়ার (Procedures) মাধ্যমে বিভক্ত করা হয় এবং এটি শীর্ষ-থেকে-নীচে (Top-down) ডিজাইন অনুসরণ করে।
স্ট্রাকচার্ড প্রোগ্রামিং-এর বৈশিষ্ট্য:
- ফাংশন বা প্রক্রিয়া ভিত্তিক পদ্ধতি
- ধাপে ধাপে (Sequential flow) এক্সিকিউশন হয়
- নিয়ন্ত্রণ স্টেটমেন্ট ব্যবহার করা হয় (যেমন if-else, for, while)
- ক্লাস ও অবজেক্ট নেই
- ডাটা ও ফাংশন গ্লোবাল বা লোকাল হতে পারে, কিন্তু এনক্যাপসুলেশন (Encapsulation) নেই
সি প্রোগ্রামিং (C Programming)
C প্রোগ্রামিং ল্যাংগুয়েজ এর উদ্ভব AT&T Bell Laboratrories এ। এর আবিষ্কারক হলেন ডেনিস রিচি এবং ১৯৭২ সালে সর্বপ্রথম এই ল্যাংগুয়েজ ব্যবহার করা হয়। এই ল্যাংগুয়েজ তৈরি করার মূল উদ্দেশ্য ছিলো UNIX অপারেটিং সিস্টেম ডেভেলপ করা যা বর্তমানে বহুল প্রচলিত। প্রথমে এই ল্যাংগুয়েজ শুধুমাত্র Bell Laboratrories এ ব্যবহার করা হলেও খুবই অল্প সময়ের মধ্যে এটা ব্যাপকভাবে ছড়িয়ে পড়ে। তৎকালীন সময়ে অন্য যে কোন প্রোগ্রামিং ল্যাংগুয়েজ এর তুলনায় এর গ্রহণযোগ্যতা ছিল অনেক বেশি। ৭০ দশকের শেষ দিকে এর অবস্থান আরও ভালো হয়। অ্যামেরিকান ন্যাশনাল স্ট্যান্ডার্ড ইনস্টিটিউট (ANSI) ১৯৮৯ সালে C ল্যাংগুয়েজের একটি ভার্সন অনুমোদন করে যার নাম রাখা হয় ANSI C. ১৯৯০ সালে ANSI C ল্যাংগুয়েজটি ISO কর্তৃক গৃহীত হয়। এই ল্যাংগুয়েজের নাম C রাখার কারণ হলো এর পূর্বে আরেকটি ল্যাংগুয়েজ ছিল যার নাম ছিল B এবং সেটি ডেভেলপ করেছিলেন Ken Thompson. সি প্রোগ্রামিং ল্যাঙ্গুয়েজকে স্ট্রাকচার্ড প্রোগ্রামিং বলা হয়ে থাকে।
সি প্রোগ্রামিং কনসোল (C Programming Console)
C প্রোগ্রামিং-এ console হলো ইনপুট ও আউটপুট প্রদর্শনের জন্য ব্যবহৃত টেক্সট-ভিত্তিক টার্মিনাল বা কমান্ড লাইন। C ভাষায় কনসোলে ইনপুট নেওয়া ও আউটপুট প্রদর্শনের জন্য কিছু গুরুত্বপূর্ণ ফাংশন রয়েছে।
যেমন: printf(), scanf(), puts(), fgets()
#include<stdio.h> int main(){ printf("Hello World\n"); puts("Hello using puts function\n\n"); char name[20]; printf("Please enter your name\n"); fgets(name, sizeof(name), stdin); printf("Hello %s", name); }
ডাটা টাইপ (Data Types)
C প্রোগ্রামিংয়ে মূলত ৪ ধরণের ডাটা টাইপ রয়েছে।
- Basic (int, float, double, char)
- User Defined (typedef, struct)
- Derived (array, pointer, structure, union, enum)
- Void (void)
#include<stdio.h> int main(){ int a = 7; double b = 10; char ch = 'S'; float f = 11; printf("%d\n%0.3lf\n%c\n%f\n", a, b, ch, f); }
এক্সপ্রেশন (Expressions)
C প্রোগ্রামিংয়ে expression ৬ প্রকার।
- Assignment (=): কোন মান বা অন্য কোন ভ্যারিয়েবল অ্যাসাইন করার জন্য ব্যবহৃত হয়
- Arithmetic (+, -, *, /): গাণিতিক কাজের জন্য ব্যবহৃত হয়
- Relational (<, >, >=, <=, ==, !=): দুই বা ততোধিক সংখ্যা বা ভ্যারিয়েবলের মধ্যে তুলনা করার জন্য ব্যবহৃত হয়)
- Logical (&&, ||): যুক্তিমূলক কাজের জন্য ব্যবহৃত হয়
- Bitwise (&, |): বিট লেভেল অপারেশনের জন্য ব্যবহৃত হয়
- Comma (,): সেপারেটর
#include<stdio.h> int main(){ int a = 5, b = 7, c; //Assignment printf("Summation: %d\n", a+7); printf("Subtraction: %d\n", a-7); //-2 printf("Division: %d\n", a/7); //0 printf("Multiplication: %d\n", a*7);//35 if(a>10){ printf("less than 10"); } else{ printf("greater than 10"); } }
অ্যারে (Array)
Array এক প্রকার ডাটা স্ট্রাকচার যেখানে একাধিক মান ধারাবাহিকভাবে রাখা যায়। উক্ত মানগুলো ইনডেক্স ব্যবহার করে এক্সেস করা যায়। C প্রোগ্রামিংয়ে Array ৩ (তিন) প্রকার।
- একমাত্রিক
- দ্বিমাত্রিক
- বহুমাত্রিক
#include<stdio.h> int main(){ //1d array int num1[5] = {5, 10, 15, 20, 25}; //2d array int num2[2][3] = { {5, 10, 15}, //0 {20, 25, 30} //1 }; //3d array int num3[2][2][2] = { {{5, 10}, {15, 20}}, {{25, 30}, {35, 40}} }; printf("First Element of num1 array is %d\n", num1[0]); printf("Second Element of num2 array is %d\n", num2[0][1]); printf("Third Element of num3 array is %d\n", num3[1][0][1]); }
স্ট্রিং (String in C)
C প্রোগ্রামিংয়ে স্ট্রিং হলো Character এর সমষ্টি। এটি null character (\0) দ্বারা শেষ হয়। স্ট্রিং মূলত একটি character array আকারে সংরক্ষণ করা হয়।
#include<stdio.h> int main(){ char name[20]; printf("Please enter your name\n"); fgets(name, sizeof(name), stdin); printf("Hello %s", name); }
পয়েন্টার (Pointer)
Pointer বাংলা শব্দের অর্থ নির্দেশক। এটি এক প্রকার ভ্যারিয়েবল বা একই ডাটা টাইপের অপর কোন ভ্যারিয়েবলকে অথবা অ্যারে এলিমেন্টকে নির্দেশ করে। অর্থাৎ তাদের address বা location নির্দেশ করে। পয়েন্টারের বৈশিষ্ট্যসমূহ:
- ভ্যারিয়েবল ডিক্লেয়ার করার সময় নামের সাথে * ব্যবহার করা হলেও এইট নামের অন্তর্ভুক্ত নয়
- পয়েন্টারের মাধ্যমে ফাংশনের বাইরে ডিক্লেয়ার করা ডাটা এক্সেস করা যায়
- প্রোগ্রামের জটিলতা ও দৈর্ঘ্য উভয়ই কমে
- মেমরি অপচয় কম হয়
- দ্রুত এক্সিকিউট হয়
- প্রোগ্রামের ভ্যারিয়েবলের সাথে ডিক্লেয়ার করা যায়। int a, b, *p;
Pointer এর ব্যবহার
- Pointer এর Pointer হিসেবে
- Function এর return value হিসেবে
- Function এর parameter হিসেবে
int a = 5; int *p; p=&a; printf("Real value of a is %d\n", a); printf("Logical value of a is %x\n", p); printf("Real value of a is %d\n", *p);
ফাংশন (Function)
প্রোগ্রামে কোন নির্দিষ্ট কাজ সম্পাদনের জন্য কিছু স্টেটমেন্ট কোন নামে একটি ব্লকের মধ্যে রাখা হলে তাকে Function বলা হয়। Function এর নামের শেষে একজোড়া প্রথম বর্তনী থাকে। স্ট্রাকচার্ড প্রোগ্রামিং এবং অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং উভয়ক্ষেত্রেই ফাংশন ব্যবহার করা হয়ে থাকে। ফাংশন ২ প্রকার:
- লাইব্রেরি ফাংশন/বিল্ট ইন ফাংশন
- ইউজার ডিফাইন্ড ফাংশন
ফাংশন ব্যবহারের সুবিধাসমূহ:
- প্রোগ্রামকে সংক্ষিপ্ত করা যায়
- একই ধরণের কাজ বার বার করতে হয় না
- ভুল নির্ণয় ও সংশোধন সহজতর হয়
- প্রয়োজন অনুযায়ী ফাংশন তৈরি করা যায়
- একই ফাংশন বিভিন্ন প্রোগ্রামে ব্যবহার করা যায়
- প্রোগ্রাম দ্রুত নির্বাহ করা যায়।
#include<stdio.h> int add(int a, int b){ return a+b; int main(){ int x = 5, y = 7; int z = add(x,y); printf("%d", z); }
স্ট্রাকচার ইউনিয়ন (Structure and Union)
Structure: Structure হলো এক ধরণের user defined ডাটা টাইপ যার সাহায্যে বিভিন্ন ধরণের ডাটা টাইপকে একসাথে নেয়া যায়।
Union: Union হলো এক ধরণের বিশেষ ডাটা টাইপ যা ভিন্ন ভিন্ন ধরণের ডাটা টাইপক সম্বলিত ডাটা ভ্যারিয়েবল হ্যান্ডেল করে।
#include<stdio.h> struct Student{ int id; int age; }; union StudentUnion { int sub1; int sub2; }; int main(){ struct Student student1; student1.id=1; student1.age=15; printf("ID Number: %d\n", student1.id); printf("Age: %d\n\n", student1.age); union StudentUnion studentu1; studentu1.sub1=50; printf("Subject1: %d\n", studentu1.sub1); studentu1.sub2=60; printf("Subject1: %d\n", studentu1.sub2); }
Structure ও Union ডাটা টাইপের মধ্যে পার্থক্য
Structure | Union |
Struct কিওয়ার্ড ব্যবহৃত হয় | Union কিওয়ার্ড ব্যবহৃত হয় |
Structure এর সাইজ সকল মেম্বারদের সাইজের সমান বা বড় হয় | Union এর সাইজ সর্ববৃহৎ মেম্বারের সাইজের সমান |
প্রতিটি মেম্বারের জন্য unique storage area থাকে | মেম্বারদের লোকেশন শেয়ার করে |
আলাদা আলাদা মেম্বার access করা যায় | একক সময়ে একটিমাত্র মেম্বার access করা যায় |
মেমরি স্পেস বেশি লাগে | মেমরি স্পেস কম লাগে |
Execution time বেশি | Execution time কম |
C প্রোগ্রামিং এ ফাইল ম্যানেজমেন্ট (File Management I/O)
C প্রোগ্রামিং এ কোন ফাইলে input/output বা i/o অপারেশনের জন্য অর্থাৎ ফাইলে কিছু লেখার জন্য বা ফাইল থেকে কিছু পড়ার জন্য লাইব্রেরি ফাংশন রয়েছে। এসব ফাংশন ব্যবহার করে ফাইলে ডাটা ইনপুট এবং ফাইল থেকে কোন ডাটা read করা যায়। ফাইলে যে ধরণের কাজ করা হয় তা হলো:
- ফাইলের নাম দেয়া
- ফাইল খোলা
- ফাইল থেকে ডাটা read করা
- ফাইলে data write করা
- ফাইল বন্ধ করা
ব্যবহৃত ফাংশনসমূহ:
- fopen() – ফাইল খোলা
- fclose() – ফাইল বন্ধ করা
- getc() – ফাইল থেকে character read করা
- putc() – ফাইলে character লিখা
- fscanf() – ফাইল থেকে data read করা
- fprintf() – ফাইলে ডাটা write করা
- fgets() – ফাইল থেকে যে কোন length বিশিষ্ট string পড়া
- fputs() – ফাইলে যে কোন length বিশিষ্ট string write করা
- getw() – integer মান পড়া
- putw() – integer মান write করা
- fseek() – পয়েন্টারকে উপযুক্ত স্থানে নিয়ে যাওয়া
- ftell() – পয়েন্টারের বর্তমান অবস্থা নির্দেশ করা
- rewind() – পয়েন্টারকে শুরুতে নিয়ে যাওয়া
- feof() – ফাইলের শেষ
- ferror() – ফাইল সম্পর্কিত ভুল
#include<stdio.h> int main(){ FILE *file = fopen("data.txt", "w"); fprintf(file, "Hello World"); }
লুপ (Loop)
#include<stdio.h> int main(){ int a=1, b=1, c=1; while(a<=10){ printf("%d\n", a); a++; } do{ printf("%d\n", b); b++; }while(b<=10); for(c=1; c<=10; c++){ printf("%d\t", c); } }
সুইচ স্টেটমেন্ট (Switch Statement)
C ভাষায় switch statement হলো একাধিক শর্ত (condition) চেক করার জন্য একটি কার্যকর উপায়। এটি মূলত if-else if-else এর বিকল্প হিসেবে ব্যবহৃত হয় এবং প্রোগ্রামকে আরও পরিষ্কার ও দ্রুততর করে।
int a=2; switch (a){ case 1: printf("Value is 1"); break; case 2: printf("Value is 2"); break; case 3: printf("Value is 3"); break; }
১ম অধ্যায়ে স্ট্রাকচার্ড প্রোগ্রামিং প্রোগ্রামিং নিয়ে আলোচনা এখানেই সমাপ্ত। আগামী পর্বে অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং নিয়ে আলোচনা করা হবে। সে প্রেক্ষিতে সকল পোস্ট দেখার জন্য ব্লগ ভিজিট করুন এবং সামাজিক যোগাযোগ মাধ্যমে সংযুক্ত থাকার জন্য iSudip YouTube চ্যানেল এবং I Sudip ফেসবুক পেজে সংযুক্ত থাকতে পারেন।