Lecturer (Information and Communication Technology) বিষয় ঃ কম্পিউটার বিজ্ঞান (Computer Science)
কোডঃ ৪৩১
পূর্ণমান-১০০
Exam Duration: Three Hours
sheet making ar going on
explain basic concepts and terms regarding structured programming and object-oriented programming
language. solve various real-life problems using structured programming and object-oriented programming languages.
Unit 3:
Programming Language
Structure Programming: an overview of C, C++ and java, constants, variables and data types, operator & expression, managing input & output operators,
decision making and branching, decision making and looping, arrays, handling of character string, user- defined function, structure and union, pointers, file management;
Object Oriented Programming: principles of object- oriented programming, tokens, expressions and control structure, functions, arrays, strings, pointers, references, basic input/output, classes and objects, constructors and destructors, operator overloading, inheritance, polymorphism and encapsulation, interfaces, files and streams, exception handling, dynamic memory.
----------------------------------------------------------------------------------------------------------------------
An overview of C language
C হল একটি উচ্চ-স্তরের প্রোগ্রামিং ভাষা যা 1970 এর দশকের গোড়ার দিকে ডেনিস রিচি বেল ল্যাবসে তৈরি করেছিলেন। এটি একটি সাধারণ-উদ্দেশ্য প্রোগ্রামিং ভাষা যা অপারেটিং সিস্টেম, কম্পাইলার, এমবেডেড সিস্টেম এবং অন্যান্য অ্যাপ্লিকেশনগুলিতে ব্যাপকভাবে ব্যবহৃত হয় যেখানে কর্মক্ষমতা এবং দক্ষতা গুরুত্বপূর্ণ।
C হল একটি কম্পাইল করা ভাষা, যার অর্থ হল সোর্স কোডটি এক্সিকিউশনের আগে একটি কম্পাইলার দ্বারা মেশিন কোডে অনুবাদ করা হয়। এটি তার দক্ষতা, গতি এবং সরাসরি কম্পিউটার হার্ডওয়্যার অ্যাক্সেস করার ক্ষমতার জন্য পরিচিত।
C এর তুলনামূলকভাবে ছোট সিনট্যাক্স রয়েছে এবং এটি ফাংশনগুলির চারপাশে গঠন করা হয়, যা কোডের ব্লক যা একটি নির্দিষ্ট কাজ সম্পাদন করে। এটি পয়েন্টার, অ্যারে, স্ট্রাকচার এবং গতিশীল মেমরি বরাদ্দের মতো বৈশিষ্ট্যগুলিকে সমর্থন করে।
C এর উল্লেখযোগ্য সুবিধা হল এর বহনযোগ্যতা। এটি বিভিন্ন প্ল্যাটফর্ম এবং অপারেটিং সিস্টেমে সংকলিত এবং চালানো যেতে পারে, এটি ক্রস-প্ল্যাটফর্ম সফ্টওয়্যার বিকাশের জন্য একটি চমৎকার পছন্দ করে তোলে।
C++, জাভা এবং পাইথন সহ অন্যান্য অনেক প্রোগ্রামিং ভাষাকে প্রভাবিত করেছে। এটি আজও ব্যাপকভাবে ব্যবহৃত হয়, বিশেষ করে সিস্টেম প্রোগ্রামিং এবং এমবেডেড সিস্টেমে, যেখানে এর গতি এবং দক্ষতা গুরুত্বপূর্ণ।
An overview of C++ language
C++ হল একটি সাধারণ-উদ্দেশ্যের প্রোগ্রামিং ভাষা যা C প্রোগ্রামিং ভাষার একটি এক্সটেনশন হিসেবে বিকশিত হয়েছিল। এটি 1980 এর দশকের গোড়ার দিকে Bjarne Stroustrup দ্বারা তৈরি করা হয়েছিল, এবং এর নাম C ভাষার একটি এক্সটেনশন হিসাবে এর শিকড়কে প্রতিফলিত করে। C++ হল একটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ, যার মানে হল এটি এমন অবজেক্ট তৈরি করতে সহায়তা করে যা ডেটা এবং ফাংশনকে এনক্যাপসুলেট করে।
C++ হল একটি কম্পাইল করা ভাষা, যার অর্থ হল সোর্স কোডটি এক্সিকিউশনের আগে একটি কম্পাইলার দ্বারা মেশিন কোডে অনুবাদ করা হয়। এটি ক্লাস, উত্তরাধিকার, টেমপ্লেট এবং পলিমারফিজমের মতো বৈশিষ্ট্যগুলিকে সমর্থন করে। C++ এছাড়াও নিম্ন-স্তরের প্রোগ্রামিং-এর জন্য সমর্থন প্রদান করে, যার মধ্যে রয়েছে সরাসরি মেমরি ম্যানিপুলেশন, যা C থেকে উত্তরাধিকার সূত্রে প্রাপ্ত একটি বৈশিষ্ট্য।
C++ এর একটি উল্লেখযোগ্য সুবিধা হল এর কর্মক্ষমতা। এটি প্রায়শই ভিডিও গেমস, রিয়েল-টাইম সিস্টেম এবং বৈজ্ঞানিক কম্পিউটিং-এর মতো উচ্চ কর্মক্ষমতা প্রয়োজন এমন অ্যাপ্লিকেশন তৈরির জন্য ব্যবহৃত হয়। C++ ক্রস-প্ল্যাটফর্ম সফ্টওয়্যারের বিকাশকেও সমর্থন করে এবং বিভিন্ন প্ল্যাটফর্ম এবং অপারেটিং সিস্টেমে কম্পাইল এবং চালানো যেতে পারে।
C++ জাভা, পাইথন এবং C# সহ অন্যান্য অনেক প্রোগ্রামিং ভাষাকে প্রভাবিত করেছে। এটি আজও ব্যাপকভাবে ব্যবহৃত হয়, বিশেষ করে সিস্টেম প্রোগ্রামিং, এমবেডেড সিস্টেম এবং কর্মক্ষমতা-সমালোচনামূলক অ্যাপ্লিকেশনগুলিতে।
সংক্ষেপে, C++ হল একটি শক্তিশালী, দক্ষ এবং নমনীয় প্রোগ্রামিং ভাষা যা নিম্ন-স্তরের প্রোগ্রামিং, অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং এবং উচ্চ-পারফরম্যান্স কম্পিউটিং-এর জন্য সমর্থন প্রদান করে।
An overview of JAVA Programming language
জাভা একটি সাধারণ-উদ্দেশ্য প্রোগ্রামিং ভাষা যা প্রথম 1995 সালে সান মাইক্রোসিস্টেম দ্বারা প্রকাশিত হয়েছিল। এটি একটি উচ্চ-স্তরের, অবজেক্ট-ভিত্তিক ভাষা যা প্ল্যাটফর্ম-স্বাধীনতার জন্য ডিজাইন করা হয়েছে, যার মানে জাভাতে লেখা প্রোগ্রামগুলি যে কোনওটিতে চালানো যেতে পারে। যে কম্পিউটার বা ডিভাইসে একটি জাভা ভার্চুয়াল মেশিন (JVM) ইনস্টল করা আছে।
জাভা হল একটি কম্পাইল করা ভাষা, যার অর্থ হল সোর্স কোডটি এক্সিকিউশনের আগে কম্পাইলার দ্বারা বাইটকোডে অনুবাদ করা হয়। বাইটকোড তারপর JVM দ্বারা ব্যাখ্যা করা হয়, যা প্রোগ্রামটি চালায়। জাভা প্রোগ্রামগুলি সাধারণত ক্লাস এবং প্যাকেজে সংগঠিত হয় এবং তারা পুনরায় ব্যবহারযোগ্য কোড তৈরি করতে উত্তরাধিকার, পলিমরফিজম এবং ইন্টারফেসের মতো বৈশিষ্ট্যগুলি ব্যবহার করতে পারে।
জাভার একটি উল্লেখযোগ্য সুবিধা হল এর প্ল্যাটফর্মের স্বাধীনতা। জাভা প্রোগ্রামগুলি যেকোন প্ল্যাটফর্মে চলতে পারে যার একটি JVM আছে, যা এটিকে ক্রস-প্ল্যাটফর্ম সফ্টওয়্যার বিকাশের জন্য একটি চমৎকার পছন্দ করে তোলে। জাভা তার স্যান্ডবক্স পরিবেশ এবং সিস্টেম সংস্থানগুলিতে অ্যাক্সেস নিয়ন্ত্রণ করার ক্ষমতা সহ তার সুরক্ষা বৈশিষ্ট্যগুলির জন্যও পরিচিত।
জাভা একটি সুবিশাল স্ট্যান্ডার্ড লাইব্রেরি রয়েছে যা বিকাশকারীদের অ্যাপ্লিকেশন বিকাশের জন্য অনেক সরঞ্জাম এবং কাঠামো সরবরাহ করে। জাভা এন্টারপ্রাইজ-স্তরের অ্যাপ্লিকেশন, যেমন ওয়েব অ্যাপ্লিকেশন এবং মোবাইল অ্যাপ্লিকেশনগুলির বিকাশের জন্যও ব্যবহৃত হয়।
জাভা কোটলিন, স্কালা এবং গ্রোভি সহ অন্যান্য অনেক প্রোগ্রামিং ভাষাকে প্রভাবিত করেছে। এটি আজও ব্যাপকভাবে ব্যবহৃত হয়, বিশেষ করে এন্টারপ্রাইজ-স্তরের অ্যাপ্লিকেশন, মোবাইল ডেভেলপমেন্ট এবং ওয়েব ডেভেলপমেন্টে।
সংক্ষেপে, জাভা একটি শক্তিশালী, প্ল্যাটফর্ম-স্বাধীন প্রোগ্রামিং ভাষা যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং, সুরক্ষা এবং অ্যাপ্লিকেশন বিকাশের জন্য সরঞ্জাম এবং কাঠামোর একটি বিশাল লাইব্রেরির জন্য সমর্থন সরবরাহ করে।
handling of character string
অক্ষর স্ট্রিংগুলি পরিচালনা করা প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ দিক, কারণ অনেক অ্যাপ্লিকেশনের জন্য পাঠ্য ডেটা ম্যানিপুলেশন প্রয়োজন। সি-তে, অক্ষর স্ট্রিংগুলিকে অক্ষরের অ্যারে হিসাবে উপস্থাপন করা হয়, স্ট্রিংয়ের শেষে একটি নাল টার্মিনেটর ('\0') দিয়ে ক্রমটির শেষ নির্দেশ করে। C অক্ষর স্ট্রিংগুলির সাথে কাজ করার জন্য অনেকগুলি ফাংশন সরবরাহ করে, যার মধ্যে স্ট্রিংগুলির মধ্যে সাবস্ট্রিংগুলি অনুলিপি করা, সংযুক্ত করা, তুলনা করা এবং অনুসন্ধান করার জন্য ফাংশন রয়েছে৷
এখানে C-তে অক্ষর স্ট্রিংগুলি পরিচালনা করার জন্য সাধারণভাবে ব্যবহৃত কিছু ফাংশন রয়েছে:
strlen() - একটি স্ট্রিং এর দৈর্ঘ্য প্রদান করে।
strcpy() - একটি স্ট্রিং অন্য স্ট্রিং কপি করে।
strcat() - একটি স্ট্রিংকে অন্যটির শেষে সংযুক্ত করে।
strcmp() - দুটি স্ট্রিং অভিধানিকভাবে তুলনা করে।
strchr() - একটি স্ট্রিং-এ একটি অক্ষর অনুসন্ধান করে এবং একটি পয়েন্টার তার প্রথম উপস্থিতিতে ফেরত দেয়।
strstr() - একটি স্ট্রিং-এ একটি সাবস্ট্রিং অনুসন্ধান করে এবং একটি পয়েন্টার তার প্রথম উপস্থিতিতে ফিরিয়ে দেয়।
এখানে একটি উদাহরণ প্রোগ্রাম যা এই ফাংশনগুলির ব্যবহার প্রদর্শন করে:
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello";
char str2[50] = "World";
char str3[50];
// String length
printf("Length of str1: %d\n", strlen(str1));
// String copy
strcpy(str3, str1);
printf("str3 after copying str1: %s\n", str3);
// String concatenation
strcat(str1, str2);
printf("str1 after concatenation: %s\n", str1);
// String comparison
int cmp = strcmp(str1, str2);
printf("Comparison result: %d\n", cmp);
// String search
char *ptr = strchr(str1, 'o');
printf("First occurrence of 'o': %s\n", ptr);
// Substring search
ptr = strstr(str1, "World");
printf("Substring 'World' found at: %s\n", ptr);
return 0;
}
Structure and Union
সি প্রোগ্রামিং ল্যাঙ্গুয়েজে, স্ট্রাকচার এবং ইউনিয়ন হল দুটি গুরুত্বপূর্ণ ইউজার-ডিফাইন ডাটা টাইপ যা প্রোগ্রামারদের বিভিন্ন ধরনের ভেরিয়েবলকে একক নামে একত্রিত করতে দেয়। একটি প্রোগ্রামে জটিল ডেটা স্ট্রাকচারের প্রতিনিধিত্ব করতে উভয় কাঠামো এবং ইউনিয়ন ব্যবহার করা হয়।
কাঠামো একটি ব্যবহারকারী-সংজ্ঞায়িত ডেটা টাইপ যা একটি একক নামের অধীনে বিভিন্ন ডেটা প্রকারের ভেরিয়েবলকে গোষ্ঠীভুক্ত করে। struct কীওয়ার্ড ব্যবহার করে একটি কাঠামো ঘোষণা করা হয় এবং এতে এক বা একাধিক সদস্য থাকে, যা বিভিন্ন ডেটা প্রকারের ভেরিয়েবল। এখানে একটি কাঠামো ঘোষণার একটি উদাহরণ:
struct person {
char name[50];
int age;
float height;
};
এই উদাহরণে, ব্যক্তি নামক একটি কাঠামোকে তিনটি সদস্য দিয়ে সংজ্ঞায়িত করা হয়েছে: আকার 50 এর একটি অক্ষর অ্যারের নাম, একটি পূর্ণসংখ্যা বয়স এবং একটি ভাসমান উচ্চতা। কাঠামোটি সংজ্ঞায়িত হয়ে গেলে, আমরা টাইপ ব্যক্তির ভেরিয়েবল তৈরি করতে পারি এবং এটি ব্যবহার করে সদস্যদের অ্যাক্সেস করতে পারি। অপারেটর.
struct person p1;
strcpy(p1.name, "John");
p1.age = 30;
p1.height = 5.8;
printf("Name: %s\n", p1.name);
printf("Age: %d\n", p1.age);
printf("Height: %f\n", p1.height);
আউটপুট:
Name: John
Age: 30
Height: 5.800000
ইউনিয়ন হল একটি ব্যবহারকারী-সংজ্ঞায়িত ডেটা টাইপ যা বিভিন্ন ডেটা প্রকারের ভেরিয়েবলকে একই মেমরি স্পেস শেয়ার করতে দেয়। ইউনিয়ন কীওয়ার্ড ব্যবহার করে একটি ইউনিয়ন ঘোষণা করা হয় এবং এতে এক বা একাধিক সদস্য থাকে, যা বিভিন্ন ডেটা প্রকারের ভেরিয়েবল। এখানে একটি ইউনিয়ন ঘোষণার একটি উদাহরণ:
union data {
int i;
float f;
char str[20];
};
এই উদাহরণে, ডেটা নামক একটি ইউনিয়নকে তিনজন সদস্য দিয়ে সংজ্ঞায়িত করা হয়েছে: একটি পূর্ণসংখ্যা i, একটি ফ্লোট f, এবং 20 আকারের একটি অক্ষর অ্যারে str। একটি ইউনিয়নের সদস্যরা একই মেমরি স্পেস ভাগ করে, যার মানে হল যে একজন সদস্যকে সংশোধন করা প্রভাবিত করবে পাশাপাশি অন্যান্য সদস্যদের মান.
union data d1;
d1.i = 10;
printf("Value of i: %d\n", d1.i);
d1.f = 3.14;
printf("Value of f: %f\n", d1.f);
printf("Value of i: %d\n", d1.i); // note how this has changed due to the previous assignment
strcpy(d1.str, "Hello");
printf("Value of str: %s\n", d1.str);
printf("Value of i: %d\n", d1.i); // note how this has changed due to the previous assignment
আউটপুট:
Value of i: 10
Value of f: 3.140000
Value of i: 1078523331
Value of str: Hello
Value of i: 1819043144
সংক্ষেপে, স্ট্রাকচার এবং ইউনিয়নগুলি সি প্রোগ্রামিং ভাষার দুটি গুরুত্বপূর্ণ ডেটা টাইপ যা প্রোগ্রামারদের একক নামের অধীনে বিভিন্ন ধরণের ভেরিয়েবলকে গোষ্ঠীবদ্ধ করতে দেয়। স্ট্রাকচারগুলি বিভিন্ন ডাটা টাইপের বিভিন্ন সদস্যের সাথে জটিল ডাটা স্ট্রাকচারের প্রতিনিধিত্ব করতে ব্যবহৃত হয়, যখন ইউনিয়নগুলি বিভিন্ন ডাটা টাইপের বিভিন্ন সদস্যের মধ্যে একই মেমরি স্পেস ভাগ করতে ব্যবহৃত হয়।
Pointer:
সি প্রোগ্রামিং-এ, একটি পয়েন্টার একটি ভেরিয়েবল যা অন্য ভেরিয়েবলের মেমরি ঠিকানা সংরক্ষণ করে। পয়েন্টারগুলি মেমরিতে সংরক্ষিত ডেটা অ্যাক্সেস এবং ম্যানিপুলেট করতে ব্যবহৃত হয়। এগুলি গতিশীল মেমরি বরাদ্দকরণ এবং অ্যারে এবং লিঙ্কযুক্ত তালিকার মতো ডেটা কাঠামোর সাথে কাজ করার জন্য বিশেষভাবে কার্যকর।
একটি পয়েন্টার ভেরিয়েবলকে ভেরিয়েবল নামের আগে তারকাচিহ্ন (*) অপারেটর ব্যবহার করে ঘোষণা করা হয়। উদাহরণস্বরূপ, নিম্নলিখিত কোডটি একটি পয়েন্টার ভেরিয়েবল 'ptr' ঘোষণা করে যা একটি পূর্ণসংখ্যা ভেরিয়েবলের মেমরি ঠিকানা সংরক্ষণ করতে পারে:
int *ptr;
0 comments:
Post a Comment