Unit 1: Structured and
Object-Oriented Programming (OOP) Concept
Fundamentals of C programming;
Introducing C's Program Control Statements; Data types, Variables and
Expressions; Exploring Arrays and Strings; Understanding Pointers and
Functions: Console and File I/O; Structures and unions. Topics include
object-oriented programming concepts, such as classes, objects, methods,
interfaces, packages, inheritance, encapsulation, and polymorphism.
প্রোগ্রামিং-এর মূল ধারণা
কম্পিউটারকে দিয়ে কোনো নির্দিষ্ট কাজ করানোর জন্য সুনির্দিষ্ট নির্দেশের একটি সেট-কে প্রোগ্রাম বলা হয়। আর এই প্রোগ্রাম তৈরির প্রক্রিয়াকেই কম্পিউটার প্রোগ্রামিং বলে।
প্রোগ্রামিং ভাষার প্রকারভেদ
❖
প্রোগ্রামিং ভাষা মূলত দুই প্রকার:
1.
Low-Level Languages: হার্ডওয়্যার-এর খুব কাছাকাছি। যেমন: মেশিন ভাষা, অ্যাসেম্বলি ভাষা।
2. High-Level Languages: মানুষের বোধগম্য এবং সহজে লেখা যায়। যেমন: Java, C, C++ ইত্যাদি।
❖
কাজ করার ধরনের উপর ভিত্তি করেঃ
1.
অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং: ডেটা ও ফাংশনগুলোকে 'অবজেক্ট' হিসেবে সংগঠিত করে এই প্রোগ্রামিং করা হয়। C++, Java, Python এর উদাহরণ।
2.
স্ট্রাকচার্ড প্রোগ্রামিং: একটি প্রোগ্রামকে ছোট ছোট ধাপে বা স্ট্রাকচারে ভাগ করে প্রোগ্রামিং করা হয়। উদাহরণ- C, Pascal, Ada, COBOL, FORTRAN
3.
ফাংশনাল প্রোগ্রামিং: গাণিতিক ফাংশনের মতো কোড লিখে প্রোগ্রাম তৈরি করা হয়। এটি ডেটা পরিবর্তনের চেয়ে কম্পিউটেশনের ওপর বেশি জোর দেয়। উদাহরণ - Haskell, Scala, Lisp, Clojure,
Erlang, Elixir, F#, OCaml,
4.
স্ক্রিপ্টিং প্রোগ্রামিং: এটি সাধারণত কোনো কাজ স্বয়ংক্রিয় করার জন্য ব্যবহৃত হয়। JavaScript একটি উদাহরণ, যা ওয়েব পেজে ইন্টারঅ্যাকটিভিটি যোগ করতে ব্যবহৃত হয়।
5.
লজিক প্রোগ্রামিং: এটি কোনো কাজ সম্পন্ন করার জন্য যুক্তির উপর নির্ভর করে। Prolog একটি
লজিক প্রোগ্রামিং ভাষার উদাহরণ।
স্ট্রাকচারাল প্রোগ্রামিং
• এই প্রোগ্রামিং প্যাটার্নে প্রোগ্রামকে ছোট ছোট মডিউল বা ফাংশন এর মাধ্যমে ভাগ করে প্রবলেমটি সমাধান করা।
• C একটি স্ট্রাকচারাল প্রোগ্রামিং ল্যাঙ্গুয়েজ কারণ এটা প্রোগ্রামিং সমস্যার সমাধানের জন্য একটি সঠিক স্ট্রাকচার/প্যাটার্ন প্রদান করে।
Structured এবং
Object-oriented Programming
|
Structured
Programming |
Object-Oriented
Programming |
|
সুনির্দিষ্ট নিয়ন্ত্রিত একটা কাঠামোর উপর ভিত্তি করে করা হয় বলে এটাকে স্ট্রাকচার্ড বলা হয়। |
এটা অবজেক্ট এবং ক্লাস এর
উপর নির্ভর করে ডেভেলপ করা হয় বলে অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং বলা হয়। |
|
প্রোগ্রামকে ছোট ছোট অংশে ভাগ করা হয় যাকে ফাংশন বলে। |
প্রোগ্রামকে ছোট ছোট অংশে ভাগ করা হয় যাকে অবজেক্ট বলে। |
|
ফাংশনে ডাটা এড
করা অপেক্ষাকৃত কঠিন |
ফাংশনে ডাটা এড
করা অপেক্ষাকৃত সহজ |
|
প্রোগ্রামিং কনসেপ্ট তুলনামূলক সহজ। |
প্রোগ্রামিং কনসেপ্ট তুলনামূলক কঠিন। |
|
ডাটা সিকিউরিটি ফিচার যেমন Abstraction, Encapsulation এর মত
ফিচার নাই। |
ডাটা সিকিউরিটি ফিচার যেমন Abstraction, Encapsulation ইত্যাদি আছে যা
ডাটা সিকিউরিটি বাড়ায়। |
|
একই নামে একাধিক ফাংশান তৈরি করা সম্ভব নয়। |
একই নামে একাধিক ফাংশান তৈরি করা সম্ভব যেমন Overloading এর
মাধ্যমে। |
|
এখানে ডাটার চেয়ে ফাংশন বেশী গুরুত্বপূর্ণ। |
এখানে ডাটা বেশী গুরুত্বপূর্ণ ফাংশনের চেয়ে। |
|
এই
প্রোগ্রামিং ল্যাংগুয়েজে কোডে "Top-Down" আপ্রোচ অনুসরণ করে। |
এই
প্রোগ্রামিং ল্যাংগুয়েজে কোডে "Bottom-Up" আপ্রোচ অনুসরণ করে। |
|
তুলনামূলক ফ্লেক্সিবিলিটি কম। |
তুলনামূলক ফ্লেক্সিবিলিটি বেশি। |
|
উদাহরণ: C, Fortran, Pascal, Algol etc. |
উদাহরণ: C++, Java, Python, C# etc. |
* Variables
ভেরিয়েবল হলো মেমরি বা র্যাম-এর নামযুক্ত স্থান যেখানে ডেটা সংরক্ষণ করা হয়। একটি প্রোগ্রামে ভেরিয়েবলের মান প্রয়োজন অনুসারে পরিবর্তিত হতে পারে। উদাহরণ: int age = 25;
ভেরিয়েবল লেখার
নিয়মঃ ভেরিয়েবলের নামের ক্ষেত্রে
কিছু নিয়ম
অনুসরণ করতে
হয়:
• নাম অবশ্যই অক্ষর বা আন্ডারস্কোর(_) দিয়ে
শুরু হতে হবে। যেমন "_age" এটি সঠিক
• নামের মধ্যে স্পেস থাকতে পারে না। যেমন "First Name" এটি সঠিক নয়।
• নামের মধ্যে সংখ্যা (0-9) থাকতে
পারে, তবে তা প্রথম অক্ষর হতে পারবে না। যেমন "1name" সঠিক নয়
• প্রোগ্রামিং ভাষার সংরক্ষিত শব্দ যেমন if, while, for ভেরিয়েবল হিসেবে ব্যবহার করা যায় না।
• ভাষা ভেদে, ভেরিয়েবল নাম কেস-সেনসিটিভ (C, C++, Java) হতে পারে।
* Operators
মান বা ভেরিয়েবলের উপর নির্দিষ্ট কাজ বা অপারেশন করার জন্য ব্যবহৃত প্রতীক।
|
প্রকারভেদ |
কাজ |
উদাহরণ |
|
অ্যারিথমেটিক |
গাণিতিক কাজ: যোগ, বিয়োগ, গুণ, ভাগ, ভাগশেষ |
+,
-, *, /, % |
|
রিলেশনাল |
দুটি মানের মধ্যে সম্পর্ক বা
তুলনা করা। |
<,
>, <=, >=, ==, != |
|
লজিক্যাল |
একাধিক শর্তের মধ্যে লজিক্যাল অপারেশন করা। |
AND
(&&), OR (||), NOT (!) |
|
অ্যাসাইনমেন্ট |
একটি ভেরিয়েবলে মান বরাদ্দ করা। |
=,
+=, -= |
|
ইউনারি |
সাধারণত মান বাড়ানো, কমানো, বা
একটি সংখ্যার চিহ্ন পরিবর্তন করার জন্য ব্যবহৃত হয়। |
++,
-- |
|
বিটওয়াইজ |
এগুলি সাধারণত দ্রুত গণনা, ডেটা এনক্রিপশন/ডিক্রিপশন, ফ্লাগ বা
পারমিশন ম্যানিপুলেশন, এবং হার্ডওয়্যার নিয়ন্ত্রণের ক্ষেত্রে ব্যবহৃত হয়। |
&,
|, <<, >>, ~, ^ |
* Data Types
[C ভাষায় ব্যবহৃত
বিভিন্ন ধরনের
ডাটা টাইপ
বর্ণনা করুন
-১৮তম]
C প্রোগ্রামিং ল্যাঙ্গুয়েজে বিভিন্ন ধরনের ডাটা টাইপ ব্যবহার করা হয়-
1.
Basic Data Type: এই ডাটা টাইপ গুলো সি প্রোগ্রামিং ল্যাঙ্গুয়েজে প্রি-ডিফাইন করা আছে। এগুলো ব্যাসিক ভ্যালু স্টোর করে যেমন -
◦ Integer ডাটা
টাইপ (int, short, long, long long)
◦ Floating-point ডাটা টাইপ (float, double, long double)
◦ Character ডাটা
টাইপ (char)
◦ Boolean ডাটা
টাইপ (bool)
◦ ভেরিয়েবলের মধ্যে কী ধরণের ডেটা সংরক্ষণ করা হবে, তা নির্ধারণ করে ডেটা টাইপস।
|
Data Type |
Size |
Format
Specifier |
Example |
Storing |
|
int |
4
bytes |
%d
or %i |
int
a=5 |
Whole
number |
|
float |
4
bytes |
%f
or %F |
float
a=3.14 |
6-7
digits |
|
double |
8
bytes |
%lf |
double
pi = 3.1415926535; |
15
digits |
|
char |
1
byte |
%c |
char
grade = 'A'; |
single
letter |
|
string |
1
byte/per Character |
%s |
char
myn[] = "suman"; |
Multiple
letter |
int ডাটা টাইপ সাধারণত 2^32 - 1, or 2,147,483,647 সংখ্যাকে সংরক্ষণ করতে ব্যবহৃত হয়। যেহেতু ৩২৬৭৮ এর মধ্যেই অন্তর্ভুক্ত সংখ্যা, সুতরাং int ডাটা টাইপ ব্যাবহার করা যাবে।
2.
Derived Data Type: এইগুলো একাধিক ভ্যালু অথবা কোন একটা ডাটার লোকেশন/রেফারেন্স ধারণ করে। যেমন- Arrays, Pointers, Function, Reference
Array
• অ্যারে হলো একই ডেটা টাইপের একাধিক মানকে ধারাবাহিকভাবে একটি একক নামে সংরক্ষণ করার কাঠামো।
• অ্যারের উপাদানগুলিকে তাদের Index এর
মাধ্যমে অ্যাক্সেস করা হয়, যা সাধারণত ০ থেকে শুরু হয়।
• অ্যারের সমস্ত উপাদান মেমরির মধ্যে একটির পর একটি সাজানো সংলগ্ন বা ধারাবাহিক অবস্থানে সংরক্ষিত থাকে।
|
বৈশিষ্ট্য |
সিনট্যাক্স |
উদাহরণ |
ব্যাখ্যা |
|
সাধারণ অ্যারে |
Datatype
arrayName[]={elements}; |
int
roll[ ] = {10, 20, 30}; |
এই
অ্যারেতে roll[0] = 10, roll[1] =
20, এবং roll[2] = 30। |
|
ক্যারেক্টার অ্যারে |
এটি একই ডেটা টাইপের ক্যারেক্টারগুলোর সংগ্রহ। এটি স্ট্রিং হিসেবে ব্যবহৃত হয়। |
char
myname[] = "SUMAN"; |
'S',
'U', 'M', 'A', 'N' ক্যারেক্টারগুলি একটি অ্যারেতে সংরক্ষিত। |
|
ম্যাট্রিক্স অ্যারে |
একাধিক সূচক দ্বারা ডেটা সংরক্ষণ করা হয়। একে ম্যাট্রিক্স অ্যারে-ও
বলা হয়। |
int
matrix[2][3] = { {1, 4, 2}, {3, 6, 8} }; |
এটি ২
সারি এবং ৩ কলামের একটি ম্যাট্রিক্স। যেমন: matrix[0][1] এর মান হলো 4। |
String
স্ট্রিং হলো ক্যারেক্টার বা অক্ষরের একটি অ্যারে। স্ট্রিং হচ্ছে কতগুলো ক্যারেক্টার এর সিকুয়েন্স বা অনুক্রম। যখন বেশ কিছু ক্যারেক্টার একসাথে মিলে কিছু একটা হয় তখন সেটাকে একটা স্ট্রিং বলে।
স্ট্রিং লেখার নিয়ম- char string_name [size]; উদারহণ- char str[] = "ICTWizard"
|
Index |
০ |
১ |
২ |
৩ |
৪ |
৫ |
৬ |
৭ |
|
str |
I |
C |
T |
W |
i |
z |
a |
R |
স্ট্রিং ফাংশন:
|
ফাংশন |
কাজ |
|
strlen(str) |
স্ট্রিং-এর
দৈর্ঘ্য নির্ণয় করে। |
|
strcpy(dest,
src) |
সোর্স স্ট্রিংকে গন্তব্য স্ট্রিং-এ
কপি (Copy) করে। |
|
strcat(dest,
src) |
দুটি স্ট্রিংকে জুড়ে দেয় (Concatenates)। |
|
strcmp(str1,
str2) |
দুটি স্ট্রিংকে তুলনা করে। |
Pointer
পয়েন্টার হচ্ছে এক ধরনের ভ্যারিয়েবল যা অন্য একটা ভ্যারিয়েবলের এড্রেসকে সংরক্ষণ করে। এটা কোন মান সংরক্ষণ করেনা শুধুমাত্র রেফারেন্স এড্রেসকে নির্দেশ করে।
• অ্যাড্রেস-অফ অপারেটর (&): কোনো
ভেরিয়েবলের মেমরি অ্যাড্রেস পেতে ব্যবহৃত হয়।
• ডি-রেফারেন্স অপারেটর (*): পয়েন্টার
যেখানে নির্দেশ করছে, সেই মেমরি অবস্থানের মান অ্যাক্সেস করতে ব্যবহৃত হয়।
• যখন কোনো পয়েন্টার কোনো মেমরি ঠিকানায় নির্দেশ করে না, তখন এটিকে NULL অথবা
0 দিয়ে ইনিশিয়ালাইজ (মান নির্ধারণ) করা হয়।
• উদাহরণ: int x = 10; int *ptr = &x; (এখানে ptr ভেরিয়েবলটি x-এর মেমরি অ্যাড্রেস ধারণ করে)।
Pointer এর সুবিধা:
• Pointer সরাসরি
মেমরি একসেস করার সুযোগ দেয়।
• Pointer ইউজার
ডিফাইন ফাংশনের কিওয়ার্ড রিটার্ন না করেই মাল্টিপল ভ্যালু রিটার্ন করে।
• Pointer প্রোগ্রামের
স্টোর করার মেমোরি স্পেস কম লাগে এবং প্রোগ্রামের জটিলতা কমায়।
• Pointer প্রোগ্রাম
এক্সিকিউশন এর সময় কমায়।
• Pointer প্রত্যেক
অ্যারে ইলিমেন্টসকে আলাদাভাবে একসেস করতে সাহায্য করে।
• Pointer ডায়নামিক
মেমরি অ্যালোকেশন এবং ডি-অ্যালোকেশন করার সুবিধা প্রদান করে।
• Pointer জটিল ডাটা স্ট্রাকচার যেমন linked lists, tree, graphs, stack ইত্যাদিতে ব্যবহার করা হয়।
Pointer এর অসুবিধা:
• Pointer অন্য
ভ্যারিয়েবল থেকে স্লো কাজ করে।
• Pointer এর বাগ খুঁজে বের করে সমাধান করা অপেক্ষাকৃত ভ্যারিয়েবলের তুলনায় জটিল।
Array & Pointer এর মধ্যে পার্থক্য
|
Array |
Pointer |
|
এটা একই ধরনের ভ্যারিয়েবল যা
একই ধরনে মাল্টিপল ডাটা স্টোর করতে ব্যবহার করা হয়। |
পয়েন্টার হচ্ছে এক
ধরনের ভ্যারিয়েবল যা অন্য একটা ভ্যারিয়েবলের এড্রেসকে সংরক্ষণ করে। |
|
কতগুলো ডাটা স্টোর করবে তা
অ্যারে সাইজের উপর নির্ভরশীল। |
পয়েন্টার শুধু মাত্র এক
সময়ে একটা ভ্যারিয়েবলের এড্রেসকে স্টোর করতে পারে। |
|
অ্যারেকে তার ডেক্লারেশনের সময়ই ইনিশিয়ালাইজ করা যায় যেমন arr[5] = {1,2,3,4,5}. |
পয়েন্টার তার ডেক্লারেশনের সময় ইনিশিয়ালাইজ করা যায় না। |
|
Array
স্ট্যাটিক ভ্যারিয়েবল। |
Pointer
স্ট্যাটিক ও ডায়নামিক হতে পারে। |
|
Array
কম্পাইল টাইমে মেমোরি অ্যালোকেট করে। |
Pointer
রান টাইমে মেমোরি অ্যালোকেট করে। |
|
Array
এর ইলিমেন্ট সংখ্যা পরবর্তিতে বৃদ্ধি করা সম্ভব না। |
Pointer
এর ইলিমেন্ট সংখ্যা পরবর্তিতে বৃদ্ধি করা সম্ভব। |
|
অ্যারেতে মেমোরি অ্যালোকেশন সিকোয়েনসিয়ালি হয় মানে পাশাপাশি লোকেশন গুলো বরাদ্দ থাকে। |
পয়েন্টারে মেমোরি অ্যালোকেশন হয় র্যান্ডমলী। |
|
উদাহরণ: int ict_wizard int[2] = {452, 313, 325}; |
উদাহরণ: int age = 25; পয়েন্টার: int *ptr = &age; |
3.
User Defined Data Type: এই ডাটা টাইপ গুলো প্রোগ্রামার কর্তৃক ডিফাইন করা হয় স্ট্রাকচার এবং ইউনিওন ব্যবহারের মাধ্যমে। এগুলোর মাধ্যমে মূলত কমপ্লেক্স ডাটা টাইপ তৈরি করা সম্ভব। যেমন -
◦ Structure
◦ Union
|
Structure |
Union |
|
একটি স্ট্রাকচার হলো বিভিন্ন ডেটা টাইপের (যেমন: int, float, char, ইত্যাদি) ভেরিয়েবলের একটি সংগ্রহ। |
একটি ইউনিয়ন হলো একটি বিশেষ ডেটা টাইপ, যেখানে বিভিন্ন সদস্য একই মেমরি লোকেশন ভাগ করে নেয়। এর
ফলে, একটি নির্দিষ্ট সময়ে শুধুমাত্র ইউনিয়নের একটি সদস্যকে ব্যবহার করা যায়। |
|
প্রতিটি মেম্বার আলাদাভাবে মেমরি লোকেশান দখল করে। |
একাধিক ভিন্ন ধরনের ডেটা মেম্বার একই মেমরি লোকেশান নেয়। |
|
Struct
কিওয়ার্ড এর মাধ্যমে Structure গঠন করা হয়। |
Union
কিওয়ার্ড এর মাধ্যমে Union গঠন করা হয়। |
|
স্ট্রাকচারে, এর
সকল মেম্বারদের জন্য মেমোরি অ্যালোকেশন করে থাকে। |
ইউনিয়নে, শুধুমাত্র এর
সবচেয়ে বড় মেম্বারের জন্য মেমোরি অ্যালোকেশন করে থাকে। |
|
Structure
এর সাইজ হবে এর সকল মেম্বারদের সাইজের যোগফলের সমান। |
Union
এর সাইজ হবে এর সব চেয়ে বড় মেম্বারের সাইজের সমান। |
|
স্ট্রাকচারে একইসাথে সকল মেম্বারদের মান সংরক্ষণ করতে পারে। |
ইউনিয়নে একইসাথে মাত্র একটা মেম্বারের মান সংরক্ষণ করতে পারে। |
|
Structure
এর সব মেম্বারদের যেকোনো সময়েই একসেস করা সম্ভব। |
Union
এর সব চেয়ে শেষে স্টোর হওয়া মেম্বারকে যেকোনো সময়েই একসেস করা সম্ভব। |
|
Structure
এর যেকোনো একটা মেম্বারের চেঞ্জ অন্যদের উপর কোন প্রভাব ফেলে না। |
Union
এর যেকোনো একটা মেম্বারের চেঞ্জ অন্যদের উপর কোন প্রভাব ফেলতে পারে। |
|
উদাহরণ: struct employee { char
name[20]; int age; float salary; }; |
উদাহরণ: union data { int
i; float f; char str[20]; }; |
বিভিন্ন Short Questions
• TOKEN: C প্রোগ্রামে
প্রতিটি ক্ষুদ্রতম একক ইউনিটকে C টোকেন বলা হয়। টোকেন C এর মৌলিক অংশ, যা একত্রিত হয়ে একটি C প্রোগ্রাম লেখা হয়।
• PRINTF (): printf() হল C প্রোগ্রামিং ভাষার একটি স্ট্যান্ডার্ড লাইব্রেরি ফাংশন যা ফরম্যাটেড টেক্সট আউটপুট তৈরি করে এবং এটা সাধারণত কনসোলে স্ট্যান্ডার্ড আউটপুট প্রদর্শন করে। এর নাম printf "print formatted" এর সংক্ষিপ্ত রূপ।
• SCANF(): scanf() হল C প্রোগ্রামিং ভাষায় ব্যবহৃত একটি ফাংশন যা ইনপুট ডেটা পড়ার জন্য ব্যবহৃত হয়। এটা সাধারণত কীবোর্ড থেকে ব্যবহারকারীর ইনপুট গ্রহণ করতে ব্যবহৃত হয় এবং এটা একটি নির্দিষ্ট ফরম্যাটে ডেটা পড়ে।
• GLOBAL VARIABLE: গ্লোবাল ভ্যারিয়েবল (Global Variable) হল এমন একটি ভ্যারিয়েবল যা প্রোগ্রামের সমস্ত ফাংশনের বাইরে ডিফাইন করা হয় এবং এটা প্রোগ্রামের যেকোনো স্থানে অ্যাক্সেস করা যায়। গ্লোবাল ভ্যারিয়েবলগুলো সাধারণত প্রোগ্রামের শুরুতে ডিক্লেয়ার করা হয় এবং তাদের স্কোপ পুরো প্রোগ্রাম জুড়ে থাকে।
Local variable এবং Global
variable এর মধ্যে -
|
Local
Variables. |
Global
Variables. |
|
যে
সকল ভ্যারিয়েবলকে একটা ফাংশনের মধ্যে ডিক্লার করা হয় এবং শুধুমাত্র ওই ফাংশনের ভিতর একসেস করা যায় তাকে Local Variables বলে। |
যে
সকল ভ্যারিয়েবলকে প্রোগ্রামের যেকোনো যায়গায় একসেস করা যায় তাকে Global Variables বলে। |
|
একটা ব্লক অথবা ফাংশনের মধ্যে কার্যকরী। |
একটা প্রোগ্রামের যেকোনো যায়গায় কার্যকরী। |
|
ডিফল্ট ভ্যালু Undefined/গার্বেজ |
ডিফল্ট ভ্যালু ০/শূন্য |
* CONSTANT এবং VARIABLE
এর মধ্যকার পার্থক্য
• মান পরিবর্তন: VARIABLE এর মান পরিবর্তন করা যায়, কিন্তু CONSTANT এর
মান পরিবর্তন করা যায় না।
• ব্যবহার: VARIABLE সাধারণত ডাইনামিক ডেটা ধারণ করতে ব্যবহৃত হয়, যেখানে CONSTANT স্ট্যাটিক
মান নির্দেশ করে।
• ডিক্লারেশন: VARIABLE ডিক্লারেশনের সময় var কীওয়ার্ড ব্যবহার না করলেও চলে, কিন্তু CONSTANT এর জন্য const ব্যবহার করা আবশ্যক।
বিভিন্ন প্রকার ফাংশনের:
• লাইব্রেরি ফাংশন: এগুলো সি লাইব্রেরিতে পূর্বনির্ধারিত ফাংশন যা সি প্রোগ্রাম থেকে সরাসরি কল করা যায়। লাইব্রেরি ফাংশনের উদাহরণ হিসেবে printf(), scanf(), strlen() ইত্যাদি।
• ইউজার-ডিফাইনড ফাংশন: এই ফাংশন প্রোগ্রামারা নির্দিষ্ট কাজের জন্য ডিক্লার করে। ইউজার-ডিফাইনড ফাংশনগুলো প্রোগ্রামের বিভিন্ন অংশ থেকে একাধিকবার কল করা যায়। যা কোডকে মডুলার এবং পরিচালনা করা সহজ করে তোলে।
• রিকার্সিভ ফাংশন: এগুলো সেই ফাংশন যা নিজেকে কল করে যতক্ষণ না একটি বেস শর্ত পূরণ হয়। রিকার্সিভ ফাংশনগুলো এমন সমস্যাগুলো সমাধান করতে ব্যবহৃত হয় যা ছোট যেমন ফ্যাক্টোরিয়াল বা ফিবোনাচ্চি সিরিজ গণনা করা।
• ইনলাইন ফাংশন: ইনলাইন ফাংশনে এই ওভারহেড থাকে না। কারণ, কম্পাইলার ইনলাইন ফাংশনের কোডটিকে সরাসরি ফাংশন কলের জায়গায় কপি করে দেয়। ফলে ফাংশন কলের জন্য কোনো অতিরিক্ত সময় নষ্ট হয় না তাই এই ফাংশন দ্রুত এক্সিকিউট হয়।
• এক্সটার্নাল ফাংশন: এগুলো সেই ফাংশন যা একটি সোর্স ফাইলে ডিফাইন করা হয় এবং অন্যান্য জায়গায় ব্যবহার করা যায়। এক্সটার্নাল ফাংশনগুলো একটি বড় প্রোগ্রামের বিভিন্ন রিইউজ করার জন্য করতে ব্যবহৃত হয়। ফাংশনগুলোকে লাইব্রেরিতে রেখে অন্য প্রোগ্রামে ব্যবহার করা
Malloc () এবং Calloc
() এর মধ্যকার পার্থক্য নিন্মরূপ:
|
malloc() |
calloc() |
|
malloc()
এর পূর্ণরূপ হচ্ছে Memory Allocation. |
calloc()
এর পূর্ণরূপ হচ্ছে Contiguous Allocation. |
|
malloc()
ফাংশন মেমোরির নির্দিষ্ট মাপের একক ব্লক তৈরি করে। |
calloc()
ফাংশন মেমোরির নির্দিষ্ট মাপের একের অধিক ব্লক তৈরি করে। |
|
Malloc
একটা মাত্র প্যারামিটার গ্রহণ করে। |
Calloc
দুইটা প্যারামিটার গ্রহণ করে। |
|
malloc()
তুলনামূলক ফাস্ট। |
calloc()
তুলনামূলক স্লো। |
|
malloc()
ফাস্ট তাই কর্মদক্ষতা অনেক বেশী। |
calloc()
স্লো তাই কর্মদক্ষতা তুলনামূলক কম। |
|
Calloc
এর থেকে বেশী সিকিউর |
Malloc
থেকে কম সিকিউর |
|
malloc()
কখনো বরাদ্দকৃত মেমরির প্রতিটি বাইটকে শূন্যে ইনিশিয়ালাইজ করেনা। |
calloc()
বরাদ্দকৃত মেমরির প্রতিটি বাইটকে শূন্যে ইনিশিয়ালাইজ করে। |
রিটেন প্রশ্ন
1.
Structured & Object-oriented Programming এর
মধ্যে পার্থক্য কি? - মার্ক
- ৩/৫
2.
C কে স্ট্রাকচারাল প্রোগ্রামিং ল্যাঙ্গুয়েজ বলা হয় কেন? মার্ক - ২
3.
C ভাষায় ব্যবহৃত বিভিন্ন ধরনের ডাটা টাইপ বর্ণনা করুন। (১৭তম)
4.
বিভিন্ন প্রকার operator বর্ণনা
কর? মার্ক - ৩
5.
Pointer কী? Pointer ব্যবহারের
সুবিধাগুলো লিখুন। মার্ক ৪ (১৭তম)
6.
Array & Pointer মধ্যে উদাহরণ সহ পার্থক্য লিখুন? মার্ক -৩
7.
Strings কি? উদাহরণ সহ লিখুন?
8.
Union & Structure মধ্যে উদাহরণ সহ পার্থক্য লিখুন? মার্ক - ৩ (১৬তম)
9.
বিভিন্ন Short Questions? মার্ক - ২
10. Local variable এবং Global variable এর মধ্যে পার্থক্য লিখুন। মার্ক ৪ (১৭তম)
MCQ প্রোগ্রামিং মূল ধারণা ও প্রকারভেদ
|
নং |
প্রশ্ন |
উত্তর |
|
১ |
কম্পিউটারকে দেওয়া সুনির্দিষ্ট নির্দেশের সেট-কে
কী বলা হয়? (ক) সফটওয়্যার (খ)
ডাটা (গ)
প্রোগ্রাম (ঘ)
হার্ডওয়্যার |
উত্তর: (গ) |
|
২ |
নিচের কোনটি লো-লেভেল ল্যাঙ্গুয়েজ? (ক) Java (খ)
C++ (গ) মেশিন ভাষা (ঘ) Python |
উত্তর: (গ) |
|
৩ |
C
কোন ধরনের প্রোগ্রামিং ভাষা? (ক) স্ক্রিপ্টিং (খ)
লজিক (গ)
স্ট্রাকচার্ড (ঘ)
ফাংশনাল |
উত্তর: (গ) |
|
৪ |
JavaScript
কোন ধরনের ভাষার উদাহরণ? (ক) স্ক্রিপ্টিং (খ)
মেশিন ভাষা (গ)
অ্যাসেম্বলি (ঘ)
লো-লেভেল |
উত্তর: (ক) |
|
৫ |
Logic
ওপর ভিত্তি করে কাজ করে নিচের কোনটি? (ক) Pascal (খ)
Prolog (গ) Haskell (ঘ) Java |
উত্তর: (খ) |
|
৬ |
নিচের কোনটি ফাংশনাল প্রোগ্রামিং ভাষার উদাহরণ? (ক)
C (খ) COBOL (গ) Haskell (ঘ)
C++ |
উত্তর: (গ) |
|
৭ |
স্ট্রাকচার্ড প্রোগ্রামিংয়ে প্রোগ্রামকে কিসে ভাগ করা হয়? (ক)
অবজেক্ট (খ)
ফাংশন (গ)
ক্লাস (ঘ)
ডাটা |
উত্তর: (খ) |
|
৮ |
ডাটা হাইডিং বা
এনক্যাপসুলেশন নিচের কোনটিতে থাকে? (ক) Structured
Programming (খ) Object-Oriented
Programming (গ)
Machine Language (ঘ) Assembly Language |
উত্তর: (খ) |
|
৯ |
কোন প্রোগ্রামিং অ্যাপ্রোচ 'Top-Down' পদ্ধতি অনুসরণ করে? (ক)
OOP (খ) Functional (গ) Structured (ঘ)
Logic |
উত্তর: (গ) |
|
১০ |
মেমরির নামযুক্ত স্থান যেখানে মান জমা থাকে তাকে কী
বলে? (ক) কনস্ট্যান্ট (খ)
ভেরিয়েবল (গ)
অপারেটর (ঘ)
টোকেন |
উত্তর: (খ) |
|
১১ |
ভেরিয়েবলের নাম শুরু করার জন্য কোনটি বৈধ? (ক)
সংখ্যা (খ)
স্পেস (গ)
আন্ডারস্কোর (ঘ)
ড্যাশ |
উত্তর: (গ) |
|
১২ |
নিচের কোনটি ভেরিয়েবলের নাম হিসেবে ব্যবহার করা যাবে না?
(ক) _name (খ)
age25 (গ) for (ঘ) total_sum |
উত্তর: (গ) |
|
১৩ |
C
ভাষায় 'int' ডেটা টাইপ কত মেমরি দখল করে? (ক) 1 byte (খ)
2 bytes (গ) 4 bytes (ঘ)
8 bytes |
উত্তর: (গ) |
|
১৪ |
ভগ্নাংশ বা
দশমিক মান সংরক্ষণের জন্য কোন ডেটা টাইপ ব্যবহৃত হয়? (ক) int (খ)
char (গ) float (ঘ) long |
উত্তর: (গ) |
|
১৫ |
ক্যারেক্টার (char) ডেটা টাইপের সাইজ কত?
(ক) 1 byte (খ)
2 bytes (গ) 4 bytes (ঘ)
8 bytes |
উত্তর: (ক) |
|
১৬ |
float
ডেটা টাইপের ফরম্যাট স্পেসিফায়ার কোনটি? (ক) %d (খ)
%c (গ) %f (ঘ) %s |
উত্তর: (গ) |
|
১৭ |
একই ডেটা টাইপের একাধিক মানকে ধারাবাহিকভাবে সাজানোকে কী
বলে? (ক) পয়েন্টার (খ)
অ্যারে (গ)
স্ট্রাকচার (ঘ)
ফাংশন |
উত্তর: (খ) |
|
১৮ |
অ্যারের Index শুরু হয় কত
থেকে? (ক) 1 (খ)
-1 (গ) 0 (ঘ) ইচ্ছামতো |
উত্তর: (গ) |
|
১৯ |
স্ট্রিং আসলে কিসের অ্যারে? (ক)
Integer (খ) Float (গ)
Character (ঘ) Double |
উত্তর: (গ) |
|
২০ |
নিচের কোনটি অ্যারিথমেটিক অপারেটর? (ক)
&& (খ) < (গ)
% (ঘ) == |
উত্তর: (গ) |
|
২১ |
দুটি মানের মধ্যে তুলনা করার জন্য কোন অপারেটর ব্যবহৃত হয়? (ক)
অ্যারিথমেটিক (খ)
রিলেশনাল (গ)
লজিক্যাল (ঘ)
ইউনারি |
উত্তর: (খ) |
|
২২ |
'&&'
কোন ধরনের অপারেটর? (ক) Logical AND (খ)
Logical OR (গ) Bitwise AND (ঘ)
Relational |
উত্তর: (ক) |
|
২৩ |
ভেরিয়েবলের মান ১
Decrement কোনটি ব্যবহৃত হয়? (ক) ++ (খ)
-- (গ) += (ঘ) -= |
উত্তর: (খ) |
|
২৪ |
পয়েন্টার কী
সংরক্ষণ করে? (ক) ডেটা ভ্যালু (খ)
মেমরি অ্যাড্রেস (গ)
ফাইল নাম (ঘ)
ফাংশন নাম |
উত্তর: (খ) |
|
২৫ |
কোনো ভেরিয়েবলের মেমরি অ্যাড্রেস পাওয়ার জন্য কোন অপারেটর ব্যবহৃত হয়? (ক)
* (খ) & (গ) % (ঘ)
# |
উত্তর: (খ) |
|
২৬ |
ডি-রেফারেন্স অপারেটর কোনটি? (ক) & (খ)
* (গ) -> (ঘ) . |
উত্তর: (খ) |
|
২৭ |
পয়েন্টার যখন কোনো ঠিকানাকে নির্দেশ করে না
তখন তাকে কী বলে? (ক) Empty Pointer (খ)
Void Pointer (গ) NULL Pointer (ঘ)
Zero Pointer |
উত্তর: (গ) |
|
২৮ |
ডায়নামিক মেমরি অ্যালোকেশন কোনটির মাধ্যমে করা যায়? (ক)
অ্যারে (খ)
পয়েন্টার (গ)
ভেরিয়েবল (ঘ)
লুপ |
উত্তর: (খ) |
|
২৯ |
অ্যারে মেমরি বরাদ্দ করে কোন সময়ে? (ক)
রান টাইম (খ)
কম্পাইল টাইম (গ)
ডিবাগ টাইম (ঘ)
সব সময় |
উত্তর: (খ) |
|
৩০ |
বিভিন্ন ডেটা টাইপের ভেরিয়েবলের সংগ্রহকে কী
বলে? (ক) অ্যারে (খ)
স্ট্রাকচার (গ)
পয়েন্টার (ঘ)
ফাংশন |
উত্তর: (খ) |
|
৩১ |
Structure
মেম্বাররা মেমরিতে কীভাবে থাকে? (ক) একই স্থান দখল করে (খ)
আলাদা আলাদা স্থান দখল করে (গ) কোনো স্থান নেয় না (ঘ)
রান টাইমে তৈরি হয় |
উত্তর: (খ) |
|
৩২ |
Union
সাইজ কতটুকু হয়? (ক) সকল মেম্বারের যোগফল (খ)
সবচেয়ে বড় মেম্বারের সমান (গ) সবচেয়ে ছোট মেম্বারের সমান (ঘ)
১ বাইট |
উত্তর: (খ) |
|
৩৩ |
একই মেমরি লোকেশন ভাগ করে নেয় কোনটি? (ক)
Structure (খ) Union (গ)
Array (ঘ) Function |
উত্তর: (খ) |
|
৩৪ |
C
প্রোগ্রামের ক্ষুদ্রতম একক ইউনিটকে কী বলে? (ক) কিওয়ার্ড (খ)
টোকেন (গ)
স্টেটমেন্ট (ঘ)
হেডার ফাইল |
উত্তর: (খ) |
|
৩৫ |
printf()
ফাংশনটি কোথায় থাকে? (ক) stdio.h (খ)
conio.h (গ) string.h (ঘ)
math.h |
উত্তর: (ক) |
|
৩৬ |
কীবোর্ড থেকে ইনপুট নেওয়ার জন্য কোন ফাংশন ব্যবহৃত হয়? (ক)
printf() (খ) scanf() (গ)
gets() (ঘ) puts() |
উত্তর: (খ) |
|
৩৭ |
গ্লোবাল ভ্যারিয়েবলের ডিফল্ট ভ্যালু কত?
(ক) গার্বেজ (খ)
০ (শূন্য) (গ)
১ (ঘ)
Undefined |
উত্তর: (খ) |
|
৩৮ |
যে
ফাংশন নিজেকে নিজে কল করে তাকে কী বলে? (ক) ইনলাইন ফাংশন (খ)
রিকার্সিভ ফাংশন (গ)
লাইব্রেরি ফাংশন (ঘ)
মেইন ফাংশন |
উত্তর: (খ) |
|
৩৯ |
কোডকে সরাসরি ফাংশন কলের জায়গায় কপি করে দেয় কোন ফাংশন? (ক)
রিকার্সিভ (খ)
ইউজার ডিফাইন (গ)
ইনলাইন (ঘ)
এক্সটার্নাল |
উত্তর: (গ) |
|
৪০ |
malloc()
এর পূর্ণরূপ কী? (ক) Memory Allocation (খ)
Main Allocation (গ) Master Allocation (ঘ)
Multi Allocation |
উত্তর: (ক) |
|
৪১ |
calloc()
ফাংশন মেমরির মানকে শুরুতে কত দিয়ে ইনিশিয়ালাইজ করে? (ক) ১ (খ)
গার্বেজ (গ)
০ (ঘ)
১০০ |
উত্তর: (গ) |
|
৪২ |
malloc()
কয়টি প্যারামিটার গ্রহণ করে? (ক) ১টি (খ)
২টি (গ)
৩টি (ঘ)
৪টি |
উত্তর: (ক) |
|
৪৩ |
স্ট্রিং-এর
দৈর্ঘ্য নির্ণয়ের ফাংশন কোনটি? (ক) strcpy() (খ)
strcat() (গ) strlen() (ঘ)
strcmp() |
উত্তর: (গ) |
|
৪৪ |
দুটি স্ট্রিং তুলনা করতে কোনটি ব্যবহৃত হয়? (ক)
strcpy() (খ) strcmp() (গ)
strcat() (ঘ) strrev() |
উত্তর: (খ) |
|
৪৫ |
যার মান প্রোগ্রামে পরিবর্তন করা যায় না
তাকে কী বলে? (ক) ভেরিয়েবল (খ)
কনস্ট্যান্ট (গ)
কিওয়ার্ড (ঘ)
আইডেন্টিফায়ার |
উত্তর: (খ) |
|
৪৬ |
কনস্ট্যান্ট ডিক্লেয়ার করার জন্য কোন কিওয়ার্ড ব্যবহার করা হয়? (ক)
var (খ) static (গ) const (ঘ)
final |
উত্তর: (গ) |
|
৪৭ |
লোকাল ভ্যারিয়েবলের স্কোপ কতটুকু? (ক)
পুরো প্রোগ্রাম জুড়ে (খ)
নির্দিষ্ট ফাংশন বা ব্লকের মধ্যে (গ) শুধু মেইন ফাংশনে (ঘ)
সারা জীবন |
উত্তর: (খ) |
|
৪৮ |
malloc()
এবং calloc() এর মধ্যে কোনটি বেশি দ্রুত? (ক) malloc() (খ)
calloc() (গ) দুটিই সমান (ঘ)
কোনোটিই নয় |
উত্তর: (ক) |
|
৪৯ |
মেমরি অ্যালোকেশন সিকোয়েনসিয়ালি (পরপর) হয় কোনটিতে? (ক)
পয়েন্টার (খ)
অ্যারে (গ)
ইউনিয়ন (ঘ)
রিকার্সন |
উত্তর: (খ) |
Function
Function হলো কোডের একটি নির্দিষ্ট অংশ বা ব্লক, যা একটি বিশেষ কাজ সম্পন্ন করার জন্য তৈরি করা হয়। বড় কোনো প্রোগ্রামকে ছোট ছোট ভাগে ভাগ করে সহজ এবং পঠনযোগ্য করার জন্য ফাংশন ব্যবহার করা হয়।
• কোড পুনরায় ব্যবহার (Reusability): একবার কোড লিখে বারবার ব্যবহার করা যায়। ফলে একই কোড বারবার লিখতে হয় না।
• সহজ রক্ষণাবেক্ষণ (Easy Maintenance): প্রোগ্রামে কোনো ভুল বা ত্রুটি থাকলে সহজেই খুঁজে বের করা যায়।
• প্রোগ্রামের সাইজ কমানো: কোড ছোট ও গোছানো থাকে
C তে ফাংশন
প্রধানত দুই
প্রকার:
1.
Library Functions: এগুলো সি প্রোগ্রামে আগে থেকেই তৈরি করা থাকে। যেমন: printf(), scanf(), sqrt()।
2. User-defined Functions: এগুলো প্রোগ্রামার নিজের প্রয়োজন অনুযায়ী তৈরি করে নেন। যেমন উপরের add ফাংশনটি।
user defined function এবং library
function এর পার্থক্য -
|
Library
Functions |
User-Defined
Functions |
|
কম্পাইলারে বিল্ট-ইন
অবস্থায় থাকে। |
কম্পাইলারে বিল্ট-ইন
অবস্থায় থাকেনা। |
|
এই
ফাংশন ইউজার তৈরি করেনা |
এই
ফাংশন ইউজার তার প্রয়োজনে তৈরি করে থাকে। |
|
এটা বিশেষ লাইব্রেরী ফাইলে স্টোর করা থাকে। |
এটা লাইব্রেরী ফাইলে স্টোর করা থাকেনা |
|
এই
ফাংশন ব্যবহার করার জন্য নির্দিষ্ট লাইব্রেরি কল করতে হয় হেডার ফাইলের মধ্যে। |
এই
ফাংশন ব্যবহার করার জন্য কোন লাইব্রেরি কল করতে হয়না। |
|
কাস্টমাইজেশন করা যায়না কারণ এগুলো পূর্বনির্ধারিত এবং নির্দিষ্ট কাজের জন্য তৈরি। |
সম্পূর্ণ কাস্টমাইজেবল, ইউজার তাদের নিজের প্রয়োজন অনুযায়ী তৈরি করতে পারেন। |
|
উদাহরণ: printf(), scanf(), sqrt() ইত্যাদি। |
উদাহরণ: sum(), fact() ইত্যাদি। |
Reference
ফাংশনে যখন আমরা কোনো variable এ সরাসরি মান না পাঠিয়ে তার মেমোরি অ্যাড্রেস পাঠাই, তখন তাকে Reference বলা হয়।
C প্রোগ্রামিংয়ের প্রেক্ষাপটে Reference সাধারণত "Call by Reference" বা "Pass by Reference" পদ্ধতিতে ব্যবহার করা হয়।
Call
by Value এবং
Call by Reference এর
মধ্যকার পার্থক্য:
|
বিষয় |
Call by Value |
Call by Reference |
|
বিষয় |
কল
বাই ভ্যালু তে,
ফাংশনের ভিতরে একটি
নতুন ভেরিয়েবল তৈরি
হয় এবং
আর্গুমেন্টের মান
সেই নতুন ভেরিয়েবলে
কপি হয়ে যায় |
যখন
কোনো আর্গুমেন্ট কল
বাই রেফারেন্স হিসাবে
পাঠানো হয়,
তখন ফাংশনের ভিতরে
আসলে মূল
ভেরিয়েবলেরই একটি রেফারেন্স
পাঠানো হয়। |
|
প্যারামিটার
পাসিং |
ভেরিয়েবলের
মান পাস
করা হয়। |
ভেরিয়েবলের
এড্রেস পাস
করা হয়। |
|
মেমরি
লোকেশন |
মুল
ভ্যারিয়েবলের মান
এবং আর্গুমেন্ট আলাদা
মেমরি লোকেশনে তৈরি
হয়। |
মুল
ভ্যারিয়েবলের মান
এবং আর্গুমেন্ট একই
মেমরি লোকেশনে তৈরি
হয়। |
|
মুল
ভ্যারিয়েবলের মান পরিবর্তন |
নতুন
ভ্যারিয়েবলের কোন
প্রভাব পরে
না। |
নতুন
ভ্যারিয়েবলের প্রভাব ফেলে। |
|
পয়েন্টার
ব্যবহার |
পয়েন্টার
ব্যবহার করা
হয় না। |
পয়েন্টার
ব্যবহার করা
হয়। |
|
মেমরি
প্রয়োজন |
বেশি
মেমরি প্রয়োজন। |
কম
মেমরি প্রয়োজন। |
|
কার্যকারিতা |
কম
কার্যকর। |
বেশি
কার্যকর। |
|
উদাহরণ |
void
swap (int a, int b) { int temp =
a; a = b; b = temp; } |
void
swap (int &a, int &b) { int
temp = a; a = b; b = temp; } |
প্যারামিটার পাসিং
প্যারামিটার পাসিং হল একটি প্রক্রিয়া যা ডেটা বা আর্গুমেন্টকে একটি ফাংশন বা সাবরুটিনে পাস করা হয়। প্যারামিটার পাস করার বিভিন্ন পদ্ধতি রয়েছে, যার মধ্যে:
• মান দ্বারা পাস (Pass by value): এই পদ্ধতিতে, আর্গুমেন্টের মানটি ফাংশনের প্যারামিটারে কপি করা হয়। ফাংশনের ভিতরে প্যারামিটারে করা কোনও পরিবর্তন মূল আর্গুমেন্টকে প্রভাবিত করে না।
• রেফারেন্স দ্বারা পাস (Pass by reference): এই পদ্ধতিতে, আর্গুমেন্টের মেমরি এড্রেস ফাংশনের প্যারামিটারে পাস করা হয়। ফাংশনের ভিতরে প্যারামিটারে করা কোনও পরিবর্তন মূল আর্গুমেন্টকে প্রভাবিত করে।
• পয়েন্টার দ্বারা পাস (Pass by pointer): এটা রেফারেন্স দ্বারা পাসের মতো, তবে সরাসরি মেমরি এড্রেস পাস করার পরিবর্তে, মেমরি এড্রেসর একটি পয়েন্টার পাস করা হয়।
• নাম দ্বারা পাস (Pass by name): এই পদ্ধতিতে, আর্গুমেন্টের পরিবর্তে কোড বা অভিব্যক্তি পাস করা হয় যা আর্গুমেন্টটি গণনা করে। ফাংশনের ভিতরে আর্গুমেন্টের প্রয়োজন হলে কোডটি মূল্যায়ন করা হয়।
Increment/Decrement
C প্রোগ্রামিংয়ে Increment (++) এবং Decrement (--) অপারেটরগুলো মূলত কোনো ভেরিয়েবলের মান ১ করে বাড়ানো বা কমানোর জন্য ব্যবহৃত হয়। এগুলো লুপ বা কাউন্টিংয়ের ক্ষেত্রে সবচেয়ে বেশি কাজে লাগে।
প্রকারভেদ
এই অপারেটরগুলো ব্যবহারের অবস্থানের ওপর ভিত্তি করে দুই ভাগে বিভক্ত:
Increment
(++)
• Prefix Increment (++a): প্রথমে ভেরিয়েবলের মান ১ বাড়বে, তারপর সেই মানটি প্রোগ্রামে ব্যবহৃত হবে।
• Postfix Increment (a++): প্রথমে বর্তমান মানটি ব্যবহৃত হবে, তারপর ভেরিয়েবলের মান ১ বাড়বে।
Decrement
(--)
• Prefix Decrement (--a): প্রথমে ভেরিয়েবলের মান ১ কমবে, তারপর ব্যবহৃত হবে।
• Postfix Decrement (a--): প্রথমে বর্তমান মানটি ব্যবহৃত হবে, তারপর ১ কমবে।
উদাহরণ
|
অপারেটর |
নাম |
কাজ |
উদাহরণ (ধরি x=5) |
|
++x |
Prefix
Increment |
১
বাড়বে, তারপর কাজ
করবে |
y
= ++x; (x=6, y=6) |
|
x++ |
Postfix
Increment |
কাজ
করবে, তারপর ১
বাড়বে |
y
= x++; (x=6, y=5) |
|
--x |
Prefix
Decrement |
১
কমবে, তারপর কাজ
করবে |
y
= --x; (x=4, y=4) |
|
x-- |
Postfix
Decrement |
কাজ
করবে, তারপর ১
কমবে |
y
= x--; (x=4, y=5) |
Loop:
প্রোগ্রামিংয়ে, কখনও কখনও আমাদের একটি নির্দিষ্ট কোড স্টেটমেন্ট বারবার কার্যকর করতে হতে পারে এবং এই কোডগুলো একটি একক স্টেটমেন্ট বা স্টেটমেন্টগুলোর সেটকে পুনরাবৃত্তি করার জন্য ব্যবহৃত হয়, যতক্ষণ না একটি নির্দিষ্ট শর্ত পূরণ হয়। এই পরিস্থিতিকে লুপ বলা হয়।
চিত্রঃ লুপের কাজের প্রক্রিয়া → লুপ শুরু → শর্ত পরীক্ষা? → শর্ত সত্য হলে → লুপ এক্সিকিউশন → (আবার শর্ত পরীক্ষা) | শর্ত মিথ্যা হলে → লুপ শেষ
লুপের কাজের প্রক্রিয়া নিম্নরূপ:
1. শর্ত পরীক্ষা: লুপ শুরু হওয়ার আগে একটি শর্ত পরীক্ষা করা হয়। যদি শর্তটি সত্য হয়, তবে লুপ কার্যকর হয়। যদি এটা মিথ্যা হয়, তবে লুপ থেকে বেরিয়ে আসে।
2. লুপের বডি: লুপের মধ্যে কার্যকর হওয়া স্টেটমেন্টগুলোর একটি সিকোয়েন্স থাকে, যা কৌণিক বন্ধনী {} এর মধ্যে রাখা হয়। এই অংশটিকে লুপের বডি বলা হয়।
3. পুনরাবৃত্তি: লুপের বডি সফলভাবে কার্যকর হওয়ার পরে, আবার লুপের প্রথমে ফিরে আসে এবং আবার শর্ত পরীক্ষা করে। এই প্রক্রিয়া চলতে থাকে যতক্ষণ না শর্তটি মিথ্যা হয়ে যায়।
4. লুপ শেষ: যখন শর্ত পরীক্ষা মিথ্যা হয়, তখন লুপের শরীর কার্যকর হয় না এবং লুপ থেকে বেরিয়ে আসে।
বিভিন্ন প্রকার লুপ [ভাইভার জন্য গুরুত্বপূর্ণ]
লুপ প্রোগ্রামিং ভাষায় একটি গুরুত্বপূর্ণ কনসেপ্ট, যা একই ধরনের কাজ বারবার করার জন্য ব্যবহৃত হয়। সি প্রোগ্রামিং ভাষায় প্রধানত তিন ধরনের লুপ ব্যবহৃত হয়: for লুপ, while লুপ, এবং do-while লুপ। নিচে প্রতিটি লুপের উদাহরণসহ আলোচনা করা হলো।
1. For লুপ: for লুপ সাধারণত একটি নির্দিষ্ট সংখ্যক বার কাজ করার জন্য ব্যবহৃত হয়। এর সাধারণ গঠন হলো:
for
(initialization; condition; increment/decrement) {
// এখানে
আমরা যে কোড লিখতে চাই।
}
Example:
for(int
i=1; i<=5; i++) {
printf("%d ", i);
}
2. While লুপ: while লুপটি একটি শর্তের উপর ভিত্তি করে কাজ করে। যতক্ষণ শর্ত সত্য থাকে, ততক্ষণ এটা চলতে থাকে। এর সাধারণ গঠন হলো:
while
(condition) {
// এখানে
আমরা যে কোড লিখতে চাই।
}
Example:
int
i=1;
while(i<=5)
{
printf("%d ", i); i++;
}
3. Do-While লুপ- do-while লুপটি প্রথমে কোড ব্লকটি একবার চালায় এবং পরে শর্ত পরীক্ষা করে। এর সাধারণ গঠন হলো:
do
{
// এখানে
আমরা যে কোড লিখতে চাই।
}
while (condition);
Example:
int
i = 1;
do
{
printf("%d ", i);
i++
}
while (i <= 5);
রিটেন প্রশ্ন
1. উদাহরণ সহ বিভিন্ন প্রকার Function লিখুন? মার্ক - ৩
2. আমি কি ৩২৬৭৮ মান সংরক্ষণ করতে ডাটটাইপ int ব্যাবহার করতে পারি? না পারলে কেন? - 2 মার্ক (১৫তম)
3. Malloc() ও Calloc() মধ্যে পার্থক্য লিখুন? মার্ক - ৫ (১৫তম)
4. C প্রোগ্রামিং ল্যাংগুয়েজে user defined function এবং library function এর পার্থক্য লিখুন। মার্ক ৪ (১৭তম)
5. Call by
Value এবং Call by Reference এর মধ্যকার পার্থক্য? মার্ক - ৩ (১৫তম)
6. Parameter
Passing কি? কি এবং উদাহারণ সহ ব্যাখ্যা করুন। মার্ক -২ (১৫তম)
7. ++a ও a++ এর মধ্যে পার্থক্য কি এবং উদাহারণ সহ ব্যাখ্যা করুন। মার্ক-৩ (১৫তম)
8. লুপ কি? এর গঠন চিত্র সহ লিখুন? মার্ক - ৫ (১৬তম)
9. বিভিন্ন প্রকার লুপ লিখুন উদাহরণ সহ?
ফাংশন ও প্যারামিটার পাসিং - MCQ
ইনক্রিমেন্ট ও ডিক্রিমেন্ট অপারেটর - MCQ
|
নং |
প্রশ্ন |
উত্তর |
|
৫০ |
বড়
প্রোগ্রামকে ছোট
ছোট ভাগে ভাগ
করার প্রক্রিয়াকে কী
বলা হয়?
(ক) ডিক্লারেশন (খ)
ফাংশন (গ)
লুপ (ঘ)
ভেরিয়েবল |
উত্তরঃ
খ |
|
৫১ |
C
প্রোগ্রামে আগে
থেকে তৈরি করা
ফাংশনগুলোকে কী
বলে? (ক) User-defined (খ)
Library Functions (গ) Main function (ঘ)
Static function |
উত্তরঃ
খ |
|
৫২ |
কোড
পুনরায় ব্যবহারের সুবিধাকে
কী বলা
হয়? (ক) Reliability (খ)
Reusability (গ) Portability (ঘ)
Scalability |
উত্তরঃ
খ |
|
৫৩ |
নিচের
কোনটি একটি লাইব্রেরি
ফাংশন? (ক) sum() (খ)
printf() (গ) fact() (ঘ)
display() |
উত্তরঃ
খ |
|
৫৪ |
প্রোগ্রামার
নিজের প্রয়োজনে যে
ফাংশন তৈরি করেন
তাকে কী
বলে? (ক) Library Function (খ)
User-defined Function (গ) System Function (ঘ)
Built-in Function |
উত্তরঃ
খ |
|
৫৫ |
লাইব্রেরি
ফাংশন ব্যবহারের জন্য
কোনটি প্রয়োজন? (ক)
নিজস্ব লাইব্রেরি (খ) হেডার ফাইল (গ) নতুন ভেরিয়েবল (ঘ) পয়েন্টার |
উত্তরঃ
খ |
|
৫৬ |
'Call
by Value' পদ্ধতিতে কী
পাস করা
হয়? (ক) অ্যাড্রেস (খ)
ভেরিয়েবলের মান (গ)
পয়েন্টার (ঘ)
ফাইল |
উত্তরঃ
খ |
|
৫৭ |
'Call
by Reference' পদ্ধতিতে
ফাংশনে কী
পাঠানো হয়?
(ক) মান (খ)
মেমরি অ্যাড্রেস (গ) শূন্য (ঘ)
কিছুই না |
উত্তরঃ
খ |
|
৫৮ |
কোন
পদ্ধতিতে ফাংশনের ভিতরের
পরিবর্তন মূল
ভেরিয়েবলকে প্রভাবিত করে?
(ক) Call by Value (খ)
Call by Reference (গ) Pass by Name (ঘ)
Static call |
উত্তরঃ
খ |
|
৫৯ |
পয়েন্টার
(Pointer) ব্যবহার করা
হয় কোন
পদ্ধতিতে? (ক) Call by Value (খ)
Call by Reference (গ) রিকার্সন (ঘ)
ইনলাইন |
উত্তরঃ
খ |
|
৬০ |
কোন
পদ্ধতিতে মেমরি কম
প্রয়োজন হয়?
(ক) Call by Value (খ)
Call by Reference (গ) Global call (ঘ)
local call |
উত্তরঃ
খ |
|
৬১ |
sqrt()
ফাংশনটি ব্যবহারের জন্য
কোন হেডার ফাইল
প্রয়োজন? (ক) stdio.h (খ)
math.h (গ)
conio.h (ঘ) string.h |
উত্তরঃ
খ |
|
৬২ |
ফাংশনের
ভিতরে আর্গুমেন্টের কপি
তৈরি হয়
কোনটিতে? (ক) Call by Value (খ)
Call by Reference (গ) Point by reference (ঘ)
None |
উত্তরঃ
ক |
|
৬৩ |
stdio.h
এর পূর্ণরূপ কী?
(ক) Standard input output (খ)
Studio input output (গ) Static input output (ঘ)
State input output |
উত্তরঃ
ক |
|
৬৪ |
একটি
ফাংশন থেকে সাধারণত
কয়টি মান
রিটার্ন করা
যায়? (ক) ১টি (খ)
২টি (গ)
অসংখ্য (ঘ)
৩টি |
উত্তরঃ
ক |
|
৬৫ |
ভেরিয়েবলের
মান ১
করে বাড়ানোর অপারেটর
কোনটি? (ক) + (খ)
++ (গ)
+= (ঘ)
* |
উত্তরঃ
খ |
|
৬৬ |
Prefix
Increment কোনটি? (ক) a++ (খ)
++a (গ)
a+1 (ঘ)
+a |
উত্তরঃ
খ |
|
৬৭ |
a++
বলতে কি
বুঝি কী?
(ক) আগে মান
বাড়বে (খ)
আগে কাজ
করবে, পরে মান
বাড়বে (গ)
মান বাড়বে না (ঘ)
মান কমবে |
উত্তরঃ
খ |
|
৬৮ |
যদি
x = 5 হয়, তবে y = ++x এর পর
y এর মান
কত? (ক) 5 (খ)
6 (গ)
4 (ঘ)
0 |
উত্তরঃ
খ |
|
৬৯ |
যদি
x = 5 হয়, তবে y = x-- এর পর
y এর মান
কত? (ক) 5 (খ)
4 (গ)
6 (ঘ)
1 |
উত্তরঃ
ক |
|
৭০ |
ভেরিয়েবলের
মান ১
কমানোর অপারেটর কোনটি?
(ক) - (খ)
++ (গ)
-- (ঘ)
-= |
উত্তরঃ
ক |
|
৭১ |
--x
এটি কোন
ধরনের অপারেটর? (ক)
Prefix Decrement (খ) Postfix Decrement (গ)
Unary Plus (ঘ) Binary |
উত্তরঃ
ক |
Loop
- MCQ
Function
- MCQ (ক্রমাগত)
|
নং |
প্রশ্ন |
উত্তর |
|
৭২ |
কোনো
কোড বারবার কার্যকর
করার প্রক্রিয়াকে কী
বলে? (ক) ফাংশন (খ)
লুপ (গ)
কন্ডিশন (ঘ)
অ্যারে |
উত্তরঃ
খ |
|
৭৩ |
লুপের
বডি কোন
বন্ধনীর মধ্যে রাখা
হয়? (ক) () (খ)
{} (গ)
[] (ঘ)
< > |
উত্তরঃ
খ |
|
৭৪ |
লুপ
কখন শেষ
হয়? (ক) শর্ত সত্য হলে (খ)
শর্ত মিথ্যা হলে (গ)
শর্ত না
থাকলে (ঘ)
সব সময় |
উত্তরঃ
খ |
|
৭৫ |
C
ল্যাঙ্গুয়েজে লুপ
প্রধানত কয়
প্রকার? (ক) ২ (খ)
৩ (গ)
৪ (ঘ)
৫ |
উত্তরঃ
খ |
|
৭৬ |
নির্দিষ্ট
সংখ্যক বার
লুপ চালানোর জন্য
কোনটি উপযোগী? (ক)
while (খ)
do-while (গ) for (ঘ)
if-else |
উত্তরঃ
গ |
|
৭৭ |
while
লুপে শর্ত কোথায়
থাকে? (ক) শুরুতে (খ)
শেষে (গ)
মাঝখানে (ঘ)
থাকে না |
উত্তরঃ
ক |
|
৭৮ |
কোন
লুপটি অন্তত একবার
কার্যকর হবেই? (ক)
for (খ)
while (গ)
do-while (ঘ) nested loop |
উত্তরঃ
গ |
|
৭৯ |
do-while
লুপে সেমিকোলন (;) কোথায়
দিতে হয়?
(ক) do এর পরে (খ)
বডির ভিতরে (গ) while(condition) এর শেষে (ঘ) দিতে হয়
না |
উত্তরঃ
গ |
|
৮০ |
For
লুপের গঠনের সঠিক
ক্রম কোনটি? (ক)
initialization; condition; increment (খ) condition; initialization;
increment (গ)
increment; condition; initialization (ঘ) condition; increment;
initialization |
উত্তরঃ
ক |
|
৮১ |
while
লুপকে কী
ধরনের লুপ
বলা হয়?
(ক) Entry Controlled (খ)
Exit Controlled (গ) No control (ঘ)
Static control |
উত্তরঃ
ক |
|
৮২ |
do-while
লুপকে কী
ধরনের লুপ
বলা হয়?
(ক) Entry Controlled (খ)
Exit Controlled (গ) Pre-test loop (ঘ)
Logic loop |
উত্তরঃ
খ |
|
৮৩ |
i++
এর সমতুল্য কোনটি?
(ক) i = i + 1 (খ)
i = i - 1 (গ) i = 1 (ঘ)
i = i + 2 |
উত্তরঃ
ক |
|
৮৪ |
i
= 1; এটি লুপের কী
অংশ? (ক) Condition (খ)
Initialization (গ) Increment (ঘ)
Exit point |
উত্তরঃ
খ |
|
৮৫ |
লুপের
ভিতরে আরেকটি লুপ
থাকাকে কী
বলে? (ক) Double loop (খ)
Nested loop (গ) Multi loop (ঘ)
Recursive loop |
উত্তরঃ
খ |
|
৮৬ |
লুপের
কাজের প্রক্রিয়ার প্রথম ধাপ
কোনটি? (ক) পুনরাবৃত্তি (খ)
শর্ত পরীক্ষা (গ) লুপ শেষ (ঘ)
মান বাড়ানো |
উত্তরঃ
খ |
|
৮৭ |
if
(i <= 5) এটি
লুপের কী?
(ক) initialization (খ)
condition (গ) increment (ঘ)
declaration |
উত্তরঃ
খ |
|
৮৮ |
printf()
ফাংশনের কাজ
কী? (ক) ইনপুট নেওয়া (খ) আউটপুট প্রদর্শন (গ) যোগ করা (ঘ)
মেমরি মোছা |
উত্তরঃ
খ |
|
৮৯ |
scanf()
এ '&' কেন ব্যবহার করা
হয়? (ক) মান বোঝাতে (খ) মেমরি অ্যাড্রেস বোঝাতে (গ)
নাম বোঝাতে (ঘ) স্ট্রিং বোঝাতে |
উত্তরঃ
খ |
|
৯০ |
লাইব্রেরি
ফাংশন কি
কাস্টমাইজ করা
যায়? (ক) হ্যাঁ (খ)
না (গ)
মাঝে মাঝে (ঘ) প্রো-ভার্সনে |
উত্তরঃ
খ |
|
৯১ |
যার
মান প্রোগ্রামে পরিবর্তন
করা যায় না
তাকে কী
বলে? (ক) ভেরিয়েবল (খ)
কনস্ট্যান্ট (গ)
কিওয়ার্ড (ঘ)
আইডেন্টিফায়ার |
উত্তরঃ
খ |
|
৯২ |
কনস্ট্যান্ট
ডিক্লেয়ার করার জন্য
কোন কিওয়ার্ড ব্যবহার
করা হয়?
(ক) var (খ)
static (গ)
const (ঘ)
final |
উত্তরঃ
গ |
|
৯৩ |
গ্লোবাল
ভ্যারিয়েবলের স্কোপ কতটুকু?
(ক) নির্দিষ্ট ফাংশনে (খ) পুরো প্রোগ্রাম জুড়ে (গ)
শুধু মেইন ফাংশনে (ঘ)
১ বাইট |
উত্তরঃ
খ |
|
৯৪ |
মেইন
ফাংশন (main) আসলে কী?
(ক) লাইব্রেরি ফাংশন (খ) ইউজার-ডিফাইনড ফাংশন (গ)
কিওয়ার্ড (ঘ)
অপারেটর |
উত্তরঃ
খ |
|
৯৫ |
malloc()
এর পূর্ণরূপ কী?
(ক) Memory Allocation (খ)
Main Allocation (গ) Master Allocation (ঘ)
Multi Allocation |
উত্তরঃ
ক |
|
৯৬ |
স্ট্রিং-এর দৈর্ঘ্য নির্ণয়ের
ফাংশন কোনটি? (ক)
strcpy() (খ) strcat() (গ)
strlen() (ঘ) strcmp() |
উত্তরঃ
গ |
|
৯৭ |
দুটি
স্ট্রিং তুলনা করতে
কোনটি ব্যবহৃত হয়?
(ক) strcpy() (খ)
strcmp() (গ) strcat() (ঘ)
strrev() |
উত্তরঃ
খ |
|
৯৮ |
মেমরি
অ্যাড্রেস পাওয়ার অপারেটর
কোনটি? (ক) * (খ)
& (গ)
% (ঘ)
# |
উত্তরঃ
খ |
|
৯৯ |
C
প্রোগ্রামের ক্ষুদ্রতম একক
ইউনিটকে কী
বলে? (ক) কিওয়ার্ড (খ)
টোকেন (গ)
স্টেটমেন্ট (ঘ)
হেডার ফাইল |
উত্তরঃ
খ |
|
১০০ |
Leap
Year চেক করার সঠিক
শর্ত কোনটি? (ক)
year % 4 == 0 (খ) year % 400 == 0 (গ) (year%4==0 &&
year%100!=0) || year%400==0 (ঘ) year % 100 == 0 |
উত্তরঃ
গ |
|
১০১ |
নিচের
কোন অপারেটরটি Bitwise XOR এর
জন্য ব্যবহৃত হয়?
(ক) & (খ)
| (গ)
^ (ঘ)
~ |
উত্তরঃ
গ |
|
১০২ |
ফ্যাক্টোরিয়াল
৫ (5!) এর মান
কত? (ক) ৫০ (খ)
১০০ (গ)
১২০ (ঘ)
২৪০ |
উত্তরঃ
গ |
|
১০৩ |
Fibonacci
Series প্রথম দুটি পদ
কি কি?
(ক) ১, ১ (খ)
0, ১ (গ)
১, ২ (ঘ)
০, ০ |
উত্তরঃ
খ |
|
১০৪ |
Prime
Number কোনটি? (ক) ৯ (খ)
১৫ (গ)
১৭ (ঘ)
২১ |
উত্তরঃ
গ |
|
১০৫ |
ax²
+ bx + c = 0 সমীকরণে
b² - 4ac কে কী
বলা হয়?
(ক) মূল (খ)
Discriminant (গ) চলক (ঘ)
ধ্রুবক |
উত্তরঃ
খ |
|
১০৬ |
Array
রিভার্স করার জন্য
লুপের ইনিশিয়ালাইজেশন কী
হওয়া উচিত? (ক)
i = 0 (খ)
i = 1 (গ)
i = size - 1 (ঘ) i = size |
উত্তরঃ
গ |
|
১০৭ |
কমপক্ষে
একবার এক্সিকিউট হবেই
এমন লুপ
কোনটি? (ক) for (খ)
while (গ)
do-while (ঘ) nested loop |
উত্তরঃ
গ |
|
১০৮ |
while
লুপে শর্তটি কোথায়
চেক করা
হয়? (ক) শুরুতে (খ)
শেষে (গ)
মাঝখানে (ঘ)
বডির ভেতরে |
উত্তরঃ
ক |
|
১০৯ |
printf("%.2f",
average); এখানে .2f কেন ব্যবহার করা
হয়েছে? (ক) ২টি সংখ্যা নিতে (খ)
দশমিকের পর
২ ঘর
দেখাতে (গ)
ইনপুট নিতে (ঘ) ভুল সংশোধন করতে |
উত্তরঃ
খ |
|
১১০ |
AND
লজিক গেটে দুটি
ইনপুটই ১
হলে আউটপুট কত?
(ক) ০ (খ)
১ (গ)
১০ (ঘ)
কোনোটিই নয় |
উত্তরঃ
খ |
|
১১১ |
C++
এ 'private' মেম্বারদের সরাসরি এক্সেস
করা যায় না
কেন? (ক) ইনহেরিটেন্সের জন্য (খ) ইনক্যাপসুলেশনের জন্য (গ) পলিমরফিজমের জন্য (ঘ) ওভাররাইডিংয়ের জন্য |
উত্তরঃ
খ |
|
১১২ |
LCM
বের করার সঠিক
সূত্র কোনটি? (ক)
(a * b)/GCD (খ) a + b/GCD (গ)
(a-b)* GCD (ঘ) GCD/(a*b) |
উত্তরঃ
ক |
|
১১৩ |
Array'র গড়
বের করার সময়
সামেশনকে কী
দিয়ে ভাগ
করতে হয়?
(ক) সর্বোচ্চ সংখ্যা (খ) সর্বনিম্ন সংখ্যা (গ) উপাদান সংখ্যা (ঘ) ২ দিয়ে |
উত্তরঃ
গ |
|
১১৪ |
C
ভাষায় গাণিতিক ফাংশন
যেমন sqrt() ব্যবহারের জন্য কোন
হেডার ফাইল দরকার?
(ক) stdio.h (খ)
conio.h (গ) math.h (ঘ)
iostream |
উত্তরঃ
গ |
|
১১৫ |
জোড়
সংখ্যা (Even number) বের করার ভাগশেষ
বা মডুলাস কত
হতে হবে?
(ক) ১ (খ)
২ (গ)
০ (ঘ)
৩ |
উত্তরঃ
গ |
|
১১৬ |
scanf("%lf",
&a); এখানে %lf কেন ব্যবহৃত হয়?
(ক) integer এর জন্য (খ) double এর জন্য (গ) character এর জন্য (ঘ) string এর জন্য |
উত্তরঃ
খ |
|
১১৭ |
Base
class এর গুণাবলি Derived class এ
নিয়ে আসা
কী? (ক) Encapsulation (খ)
Inheritance (গ) Polymorphism (ঘ)
Abstraction |
উত্তরঃ
খ |
|
১১৮ |
ফিবোনাচি
সিরিজের ৪র্থ পদ
কত? (ক) ১ (খ)
২ (গ)
৩ (ঘ)
৫ |
উত্তরঃ
খ |
|
১১৯ |
বিটওয়াইজ
OR (|) অপারেটরের ক্ষেত্রে ১|০ এর
মান কত?
(ক) ০ (খ)
১ (গ)
১১ (ঘ)
২ |
উত্তরঃ
খ |
|
১২০ |
১
থেকে ১০০
পর্যন্ত বিজোড় সংখ্যার
যোগফল নির্ণয়ে লুপের
আপডেট কী
হবে? (ক) i++ (খ)
i = i + 2 (গ) i-- (ঘ)
i = i * 2 |
উত্তরঃ
খ |
|
১২১ |
১
থেকে n পর্যন্ত সংখ্যার যোগফলের
গাণিতিক সূত্র কোনটি?
(ক) n(n+1)/2 (খ)
n(n-1)/2 (গ) (n+1)/2 (ঘ)
n² |
উত্তরঃ
ক |
|
১২২ |
একটি
অবজেক্ট ক্রিয়েট করলে
স্বয়ংক্রিয়ভাবে কোন
মেথড কল
হয়? (ক) Destructor (খ)
Constructor (গ) Main (ঘ)
Void |
উত্তরঃ
খ |
|
১২৩ |
নিচের
কোনটি লুপ
কন্ট্রোল স্টেটমেন্ট নয়?
(ক) break (খ)
continue (গ) goto (ঘ)
scan |
উত্তরঃ
ঘ |
|
১২৪ |
C++
এ shape->getArea() এখানে '->' চিহ্নটি কী
নির্দেশ করে?
(ক) অবজেক্ট মেম্বার এক্সেস (খ)
পয়েন্টারের মাধ্যমে এক্সেস (গ)
অ্যাড্রেস এক্সেস (ঘ) ভ্যালু এক্সেস |
উত্তরঃ
খ |
|
১২৫ |
৩টি
সংখ্যার গড়
নির্ণয়ে ডাটা টাইপ
float কেন নেওয়া হয়
কেন? (ক) বড় সংখ্যা নিতে (খ)
দশমিক মান
পেতে (গ)
মেমরি বাঁচাতে (ঘ) দ্রুত ফলাফল পেতে |
উত্তরঃ
খ |
|
১২৬ |
অ্যারে
ইনডেক্স ভুল
হলে কী
ধরনের Error হয়? (ক) Syntax Error (খ)
Logical Error (গ) Runtime Error (ঘ)
Linker Error |
উত্তরঃ
গ |
|
১২৭ |
কোন
ফাংশনকে virtual করার উদ্দেশ্য কী?
(ক) মেমরি কমানো (খ) রানটাইম পলিমরফিজম নিশ্চিত
করা (গ)
ডাটা হাইড করা (ঘ)
ইনপুট নেওয়া |
উত্তরঃ
খ |
|
১২৮ |
bitwise
AND এর ক্ষেত্রে ৫
& ৩ এর
মান কত?
(ক) ১ (খ)
২ (গ)
৫ (ঘ)
৩ |
উত্তরঃ
ক |
|
১২৯ |
পজিটিভ
না নেগেটিভ চেক
করতে শর্তটি কী
হওয়া উচিত? (ক)
num > 0 (খ) num < 0 (গ)
num == 0 (ঘ) num >= 0 |
উত্তরঃ
ঘ |
|
১৩০ |
C++
এ একটি ক্লাস
থেকে আরেকটি ক্লাসে
পাবলিক ইনহেরিট করলে
প্রোটেক্টেড মেম্বার কী
হয়? (ক) পাবলিক (খ)
প্রাইভেট (গ)
প্রোটেক্টেড (ঘ)
হিডেন |
উত্তরঃ
গ |
|
১৩১ |
১
থেকে ১০০
প্রিন্ট করার লুপে
i++ না দিলে কী
হবে? (ক) প্রোগ্রাম বন্ধ হবে (খ)
ইনফিনিট লুপ
হবে (গ)
একবার প্রিন্ট হবে (ঘ)
এরর দেখাবে |
উত্তরঃ
খ |
|
১৩২ |
printf("\n");
এর কাজ
কী? (ক) নতুন লাইন তৈরি
করা (খ)
ডাটা মোছা (গ) প্রোগ্রাম শেষ
করা (ঘ)
ইনপুট নেওয়া |
উত্তরঃ
ক |
|
১৩৩ |
'shape
= &rec;' এখানে
কী হচ্ছে? (ক)
অবজেক্ট কপি (খ)
অ্যাড্রেস অ্যাসাইন (গ) ডাটা ডিলিট (ঘ) ফাংশন কল |
উত্তরঃ
খ |
|
১৩৪ |
লুপের
ভেতরে break ব্যবহার করলে কী
হয়? (ক) লুপ থেকে বের
হয়ে যায় (খ) পরের ধাপে যায় (গ)
রিস্টার্ট হয় (ঘ)
মান বাড়ে |
উত্তরঃ
ক |
|
১৩৫ |
main()
ফাংশনের রিটার্ন টাইপ
int হলে শেষে কী
লিখতে হয়?
(ক) exit(0) (খ)
return 0 (গ) end (ঘ)
stop |
উত্তরঃ
খ |
|
১৩৬ |
একটি
পূর্ণসংখ্যার ফ্যাক্টোরিয়াল ১
হতে পারে যদি
সংখ্যাটি হয়?
(ক) ১ বা
০ (খ)
২ (গ)
৫ (ঘ)
১০ |
উত্তরঃ
ক |
|
১৩৭ |
'Rectangle
area: %d' এখানে %d কেন ব্যবহৃত হয়েছে?
(ক) দশমিক দেখাতে (খ) পূর্ণসংখ্যা দেখাতে (গ) ক্যারেক্টার দেখাতে (ঘ) স্ট্রিং দেখাতে |
উত্তরঃ
খ |
|
১৩৮ |
virtual
function কোন ধরনের পলিমরফিজমের
উদাহরণ? (ক) স্ট্যাটিক (খ)
ডাইনামিক/রানটাইম (গ) কম্পাইল টাইম (ঘ) ইনহেরিটেন্স |
উত্তরঃ
খ |
|
১৩৯ |
C
প্রোগ্রামিং এ
কোন ফাংশনটি দিয়ে
আউটপুট স্ক্রিন পরিষ্কার
করা হয়?
(ক) clrscr() (খ)
clear() (গ) delete() (ঘ)
printf() |
উত্তরঃ
ক |
Object
Oriented Programming
• OOP হলো এমন একটি প্রোগ্রামিং প্যারাডাইম যা মূলত Objects এবং তাদের পারস্পরিক interaction এর ওপর ভিত্তি করে তৈরি।
• OOP-এর প্রধান উদ্দেশ্য হলো Code reusability, Security এবং flexibility নিশ্চিত করা।
• বিভিন্ন OOP languages হলো Java, C++,
Python, C#, JavaScript, Ruby, PHP, Swift, Kotlin, Go, Rust, Perl, Scala, R
• OOP-এর Four Pillars হলো Encapsulation, Abstraction, Inheritance এবং Polymorphism।
OOP-এর মূল ধারণা-
• অবজেক্ট: OOP-তে, অবজেক্ট হল ক্লাসের উদাহরণ যা ডেটা ধারণ করে। অবজেক্ট বাস্তব বিশ্বের যেকোন কিছু হতে পারে। যেমন মানুষ একটা অবজেক্ট হতে পারে।
• ক্লাস: ক্লাসগুলো টেমপ্লেট বা ব্লুপ্রিন্ট যা অবজেক্টগুলোর গঠন এবং বৈশিষ্ট্য নির্দেশ করে। একটি ক্লাস একটি অবজেক্টের গুণাবলী এবং বৈশিষ্ট্য নির্দেশ করে।
• ইনহেরিটেন্স: ইনহেরিটেন্স হল সেই প্রক্রিয়া যার মাধ্যমে একটি ক্লাস অন্য ক্লাসের গুণাবলী এবং বৈশিষ্ট্য গ্রহণ করতে পারে। যেই ক্লাস থেকে ইনহেরিট করা হয় তাকে প্যারেন্ট ক্লাস বলা হয়, এবং যেই ক্লাস এটা থেকে ইনহেরিট করে তাকে চাইল্ড ক্লাস বলা হয়।
• পলিমরফিজম: পলিমরফিজম হল অবজেক্টগুলোর বিভিন্ন রূপ গ্রহণ এবং বিভিন্নভাবে আচরণ করার ক্ষমতা। পলিমরফিজম মেথড ওভারলোডিং এবং মেথড ওভাররাইডিংয়ের মাধ্যমে অর্জন করা যায়।
• ইনক্যাপসুলেশন: ইনক্যাপসুলেশন হল অবজেক্টের অভ্যন্তরীণ মেকানিজম লুকানোর প্রক্রিয়া। ইনক্যাপসুলেশন ডেটাকে বাইরের হস্তক্ষেপ থেকে রক্ষা করতে, কোডের সংগঠন এবং সিকিউরিটি বৃদ্ধি করতে সাহায্য করে।
• অ্যাবস্ট্রাকশন: অ্যাবস্ট্রাকশন হল প্রোগ্রামের জটিলতা ব্যবহারকারীর থেকে লুকিয়ে একটি সহজতর ইন্টারফেস উপস্থাপন করার প্রক্রিয়া।
Class
• Class হলো অবজেক্ট তৈরির একটি blueprint বা টেমপ্লেট বা কাঠামো।
• এটি অবজেক্টের properties (ডেটা মেম্বার/অ্যাট্রিবিউট) এবং behaviors (মেম্বার ফাংশন/মেথড) নির্ধারণ করে।
• একটি class হলো একটি logical construct, এটি কোনো ফিজিক্যাল Entity নয়।
• অবজেক্ট তৈরি না হওয়া পর্যন্ত এটি মেমোরিতে কোনো জায়গা দখল করে না।
• একটি ক্লাসের মধ্যে variables (ডেটা মেম্বার) এবং methods (মেম্বার ফাংশন) থাকে।
• একটি class নির্দিষ্ট ক্যাটাগরির অবজেক্টের জন্য একটি classification প্রদান করে।
• ক্লাস তৈরি করার জন্য "class" কিওয়ার্ড ব্যবহার করা হয়।
• ক্লাসের বিভিন্ন প্রকারভেদ হলো Abstract Class, Concrete Class, Final Class,
Nested/Inner Class, এবং Anonymous Class
Example:
"Fruit" হলো একটি ক্লাস যা সকল ফলের সাধারণ বৈশিষ্ট্য এবং আচরণ বর্ণনা করে।
class
Fruit {
String name;
}
ক্লাসের প্রকারভেদ:
১. Abstract Class
এই ক্লাস থেকে সরাসরি কোনো অবজেক্ট তৈরি করা যায় না। এটি মূলত একটি "ব্লু-প্রিন্ট" হিসেবে কাজ করে যা অন্য ক্লাস Inherit করে।
• উদাহরণ: একটি Vehicle ক্লাস অ্যাবস্ট্রাক্ট হতে পারে, কারণ 'যানবাহন' বলতে সরাসরি কিছু নেই, সেটি হয় 'কার' অথবা 'বাইক' হবে।
Java
abstract
class Animal {
abstract void makeSound();
}
২. Concrete Class (কনক্রিট ক্লাস)
যেসব ক্লাসের অবজেক্ট সরাসরি তৈরি করা যায়, সেগুলোকে কনক্রিট ক্লাস বলে। এতে সব মেথডের বিস্তারিত কাজ লেখা থাকে।
• উদাহরণ: Dog ক্লাস যা Animal-কে ইনহেরিট করে।
class
Dog extends Animal {
void makeSound() {
System.out.println("Ghew
Ghew");
}
}
৩. Final Class
যে ক্লাসকে অন্য কোনো ক্লাস ইনহেরিট এ ব্যবহার করতে পারে না, তাকে ফাইনাল ক্লাস বলে। নিরাপত্তার জন্য এটি ব্যবহৃত হয়।
• উদাহরণ: জাভার String ক্লাস একটি ফাইনাল ক্লাস।
৪. Nested/Inner Class
একটি ক্লাসের ভেতরে যখন অন্য একটি ক্লাস ঘোষণা করা হয়, তখন তাকে নেস্টেড ক্লাস বলে। এটি কোডের লজিক্যাল গ্রুপিং বাড়ায়।
• উদাহরণ: একটি CPU ক্লাসের ভেতরে Processor ক্লাস থাকতে পারে।
৫. Anonymous Class
যে ক্লাসের কোনো নাম থাকে না এবং একসাথেই Declare ও অবজেক্ট তৈরি করা হয়, তাকে অ্যানোনিমাস ক্লাস বলে। এটি সাধারণত ইন্টারফেসের কাজ দ্রুত করার জন্য ব্যবহৃত হয়।
Object
• Object হলো একটি ক্লাসের Instance।
• এটি একটি real-world entity যার নির্দিষ্ট state এবং behavior থাকে।
• অবজেক্ট হলো physical entities এবং এগুলো মেমোরিতে জায়গা দখল করে।
• Java বা C++ এ অবজেক্ট তৈরি করতে "new" কিওয়ার্ড ব্যবহার করা হয়।
• প্রতিটি অবজেক্টের নিজস্ব state থাকে; যেমন- একটি অবজেক্ট "Rose", যার কালার "red" হলো তার স্টেট।
• ক্লাস থেকে অবজেক্ট তৈরির প্রক্রিয়াকে instantiation বলা হয়।
• যখন new কিওয়ার্ড ব্যবহার করা হয়, তখন অবজেক্টের জন্য মেমোরি বরাদ্দ করা হয়।
• একটি reference variable অবজেক্টের মেমোরি অ্যাড্রেস ধরে রাখে।
• একটি একক ক্লাস থেকে আমরা multiple অবজেক্ট তৈরি করতে পারি।
• প্রতিটি অবজেক্টের নিজস্ব অ্যাট্রিবিউট এবং মেথড থাকে, তবে সেই অ্যাট্রিবিউটগুলোর ভ্যালু বা মান ভিন্ন হতে পারে।
• Example: যদি Fruit একটি ক্লাস হয়, তবে apple, mango, এবং banana হলো এর অবজেক্ট।
Declaration:
Fruit
Apple = new Fruit();
// এখানে Apple হলো Fruit ক্লাসের একটি অবজেক্ট।
Objects
এবং
Classes এর
মধ্যকার পার্থক্য:
|
Class |
Object |
|
Class
হল Object এর ব্লুপ্রিন্ট। |
Object
হল Class এর একটি উদাহরণ। |
|
Class
ইউজার কর্তৃক নির্দেশিত
ভ্যারিয়েবল। |
Object
হল Class এর একটি ভ্যারিয়েবল। |
|
একটি
class এর অনেকগুলো object থাকতে
পারে। |
একটি
object একটা মাত্র class কে
অনুসরণ করে
তৈরি হয়। |
|
Class
এর জন্য কোন
মেমোরি অ্যালোকেশন হয়না। |
Object
যখনই তৈরি হয়
তখনই এর
জন্য কোন
মেমোরি অ্যালোকেশন হয়। |
|
Class
একটা লজিক্যাল Entity |
Objects
একটা ফিজিক্যাল entity |
|
Class
একবারই তৈরি করা
হয়। |
Objects
বার বার
তৈরি করা
যায়। |
|
Class
প্রোগ্রামের শুরুতেই তৈরি
করা যায়। |
Objects
প্রোগ্রামের যেকোনো জায়গায়
তৈরি করা
যায়। |
|
উদাহরণ-
Fruit নামে একটা বিভিন্ন
ফলের একটা ক্লাস
হতে পারে। |
উদাহরণ-
উক্ত ক্লাসের Apple, Banana, Mango, Guava ইত্যাদি অবজেক্ট তৈরি
করা সম্ভব। |
Attributes
• কোন ক্লাসের ডাটা বা বৈশিষ্ট্যকে অ্যাট্রিবিউট বলা হয়।
• এগুলোকে অনেক সময় Fields বা Variables বলা হয়।
• একটি অবজেক্টের কী কী তথ্য থাকবে, তা অ্যাট্রিবিউট নির্ধারণ করে।
• অ্যাট্রিবিউট তথ্য জমা রাখে।
• অবজেক্টের State প্রকাশ করে
• উদাহরণ: একটি 'Car' ক্লাসের অ্যাট্রিবিউট হতে পারে- রঙ, মডেল, গতি ইত্যাদি।
Methods
• এগুলো হলো ক্লাসের ভেতরে লেখা ফাংশন।
• একটি অবজেক্ট কী ধরণের কাজ সম্পাদন করবে, তা মেথড নির্ধারণ করে।
• উদাহরণ: ওই 'Car' অবজেক্টটি চলতে পারে, ব্রেক চাপতে পারে, বা হর্ন বাজাতে পারে।
নিচের প্রোগ্রামে Color, Speed হচ্ছে Attributes এবং drive, hon হচ্ছে মেথড
class
Car {
// Attributes (বৈশিষ্ট্য)
String color = "Red";
int speed = 120;
// Method (কাজ)
void drive() {
System.out.println("The car is
driving at " + speed + " km/h.");
}
void hon() {
System.out.println("Beep
Beep!");
}
}
Written
Questions
1. Object
Oriented programming কি? কেন দরকার? OOP মূলিক ধারাগুলো লিখুন? মার্ক - ৫ (১৭, ১৫তম)
2. Object কী? কীভাবে object তৈরি করতে হয় উদাহরণসহ ব্যাখ্যা করুন। (১৬তম)
3. Object এবং Class এর মধ্যে উদাহরণসহ পার্থক্য লিখুন? মার্ক - 3/5 (১৭, ১৫তম)
4. Method এবং Attributes বলতে কি বুঝেন? পার্থক্য কি?
Encapsulation:
• ডেটা এবং সেই ডেটার ওপর কাজ করা মেথডগুলোকে একটি ইউনিটে একত্রিত করাকে Encapsulation বলে।
• অবজেক্টের নির্দিষ্ট কিছু উপাদানে সরাসরি অ্যাক্সেস limit করে।
• এতে private, protected, এবং public অ্যাক্সেস মডিফায়ার ব্যবহার করা হয়।
• এটি ডেটাকে বাহিরের unwanted change থেকে রক্ষা করে এবং modularity বৃদ্ধি করে।
• Encapsulation-এর মাধ্যমে Abstraction-ও achieve করা সম্ভব।
• এনক্যাপসুলেশনের জন্য Setter এবং Getter মেথড ব্যবহার করা হয়।
• Getter: ক্লাসের ভেতরের কোনো প্রাইভেট ভ্যারিয়েবলের মান Read করার জন্য এটি ব্যবহৃত হয়।
• Setter: ক্লাসের ভেতরের কোনো প্রাইভেট ভ্যারিয়েবলের মান Write করার জন্য এটি ব্যবহৃত হয়।
Note: ক্যাপসুলের মধ্যে যেমন তার মেডিসিন সুরক্ষিত থাকে, ঠিক তেমনি Encapsulation-এর মাধ্যমে Data + Method সুরক্ষিত রাখা হয়।
Abstraction:
• জটিল ইমপ্লিমেন্টেশন ডিটেইলস লুকিয়ে রেখে অবজেক্টের শুধুমাত্র প্রয়োজনীয় ফিচারগুলো দেখানোকে Abstraction বলে।
• এটি Abstract classes, interfaces (Java-তে), virtual
functions (C++ এ) এবং অ্যাক্সেস স্পেসিফায়ারের মাধ্যমে করা হয়।
• এটি জটিল সিস্টেমকে সহজতর করে।
• Abstraction মূলত এক্সটার্নাল ইন্টারফেস নিয়ে কাজ করে, যেখানে Encapsulation ইন্টারনাল স্ট্রাকচার নিয়ে কাজ করে।
Note: কোডের ভেতরের জটিলতা ইউজারের কাছে লুকানোর জন্য Abstraction ব্যবহার করা হয়।
Data
abstraction এবং
Data Encapsulation এর মধ্যকার পার্থক্য নিন্মরূপ:
|
অ্যাবস্ট্রাকশন (Abstraction) |
এনক্যাপসুলেশন (Encapsulation) |
|
অ্যাবস্ট্রাকশন
হল একটি প্রক্রিয়া
যা কোডের অপ্রয়োজনীয়
বিবরণ বা
তথ্য লুকিয়ে রাখে। |
এনক্যাপসুলেশন
হল একটি প্রক্রিয়া
যা ডেটাকে ক্যাপসুলেট
করে রাখা হয়
যা ডাটাকে সুরক্ষিত
রাখতে সহায়তা করে। |
|
এটা
বাস্তবায়নে অ্যাবস্ট্রাক্ট ক্লাস এবং
ইন্টারফেস ব্যবহার করা
হয়। |
এটা
বাস্তবায়নে অ্যাক্সেস মডিফায়ার
যেমন পাবলিক, প্রাইভেট
এবং প্রোটেক্টেড ব্যবহার করে। |
|
ইন্টারফেস
এবং অ্যাবস্ট্রাক্ট ক্লাস ব্যবহার
করে বাস্তবায়নের কমপ্লেক্সিটি হাইড লুকানো
হয়। |
ডেটা
গেটার এবং
সেটার মত
পদ্ধতির মাধ্যমে লুকানো
হয়। |
|
প্রোগ্রামের
জটিলতা না
দেখানোর জন্য ব্যবহার
করা হয়। |
ইন্টারন্যাল
ডাটাকে সিকিউর রাখার
জন্য এনক্যাপসুলেশন ব্যবহার করা
হয়। |
Written
Questions
1. Data
abstraction & Data encapsulations এর মধ্যে পার্থক্য কি? মার্ক - 3
2.
Encapsulation কি? এর সুবিধা কি? মার্ক - 3
3. Encapsulation এর উদ্দেশ্য কি?
Overloading
Method
Overloading
✓ Method
overloading একটি ক্লাসকে একই নামে একাধিক মেথড থাকার প্রক্রিয়া, তবে তাদের parameter lists ভিন্ন হয়।
✓ এটি compile-time polymorphism-এর একটি উদাহরণ।
✓
Overloading অবশ্যই একটি মাত্র ক্লাসের মধ্যে হতে হয়।
✓ এক্ষেত্রে মেথডের return type একই হতে পারে আবার ভিন্নও হতে পারে।
✓ এতে Inheritance বা ইনহেরিটেন্সের কোনো প্রয়োজন নেই।
Example:
class
Calculator {
public int add(int a, int b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
}
Notes: উপরে একই ক্লাস Calculator-এর মধ্যেই মেথড নাম add একই, কিন্তু প্যারামিটার একটায় a, b দুইটা এবং অন্যটায় a, b, c তিনটা আছে।
Method
Overriding
✓ Method
overriding তখনই ঘটে যখন একটি চাইল্ড ক্লাস তার প্যারেন্ট ক্লাসে আগে থেকে সংজ্ঞায়িত কোনো মেথডের নিজস্ব ইমপ্লিমেন্টেশন বা রূপ প্রদান করে।
✓ চাইল্ড ক্লাসের মেথড নাম এবং parameter list অবশ্যই প্যারেন্ট ক্লাসের মেথডের মতো হুবহু একই হতে হবে।
✓ এটি runtime polymorphism-এর একটি উদাহরণ।
✓ এতে Inheritance বা ইনহেরিটেন্স থাকা আবশ্যক।
✓ মেথডের return type অবশ্যই প্যারেন্ট ক্লাসের মেথডের মতো একই হতে হবে।
Example:
class
Animal {
public void makeSound() {
System.out.println("The animal
makes a sound.");
}
}
class
Dog extends Animal {
@Override
public void makeSound() {
System.out.println("The dog
barks.");
}
}
Notes: এখানে Animal ক্লাসের makeSound() মেথডটি Dog ক্লাসে এসে পরিবর্তন হয়ে গেছে। অর্থাৎ চাইল্ড ক্লাস তার নিজের মতো করে মেথডটিকে নতুন রূপ দিয়েছে।