প্যাসক্যাল ভাষায় অ্যারে (Array) এবং স্ট্রিং (String) দুইটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার যা ডেটা সংরক্ষণ এবং প্রসেসিংয়ের জন্য ব্যবহৃত হয়। অ্যারে একটি নির্দিষ্ট ধরনের ডেটার সংকলন, আর স্ট্রিং হলো অক্ষরের একটি সিকোয়েন্স।
১. অ্যারে (Array)
অ্যারে এমন একটি ডেটা স্ট্রাকচার যা একাধিক ভেরিয়েবলকে একসাথে সংরক্ষণ করতে সক্ষম। অ্যারে এক ধরনের ডেটার একাধিক মান একই সাথে রাখতে পারে, যেমন সংখ্যার একটি সারণী বা স্ট্রিংয়ের একটি গ্রুপ। প্যাসক্যাল ভাষায় অ্যারে ডিক্লেয়ার এবং ব্যবহার করা হয় নির্দিষ্ট সাইনট্যাক্সে।
অ্যারে ডিক্লেয়ারেশন (Array Declaration)
অ্যারে ডিক্লেয়ার করার জন্য প্রথমে var কিওয়ার্ড ব্যবহার করা হয় এবং তারপর অ্যারের নাম এবং ডেটা টাইপ উল্লেখ করা হয়। এরপরে অ্যারের আকার নির্দিষ্ট করতে হয়।
var
numbers: array[1..5] of Integer;
names: array[1..3] of String;এখানে:
numbersঅ্যারে ১ থেকে ৫ পর্যন্ত ইনটিজার (Integer) সংখ্যা ধারণ করতে পারে।namesঅ্যারে ৩টি স্ট্রিং ধারণ করতে পারে।
অ্যারে ইনিশিয়ালাইজেশন (Array Initialization)
অ্যারে তে মান সেট করা হয় নিম্নরূপ:
numbers[1] := 10;
numbers[2] := 20;
numbers[3] := 30;
numbers[4] := 40;
numbers[5] := 50;অ্যারে ব্যবহার (Using Arrays)
অ্যারে ব্যবহার করে একাধিক মানের উপর অপারেশন করা সম্ভব। যেমন একটি অ্যারের সব উপাদান প্রিন্ট করা:
var
i: Integer;
begin
for i := 1 to 5 do
writeln('Element ', i, ': ', numbers[i]);
end.এটি numbers অ্যারের সব উপাদানকে একে একে প্রিন্ট করবে।
২. স্ট্রিং (String)
স্ট্রিং একটি ডেটা টাইপ যা অক্ষরের একটি সিকোয়েন্স ধারণ করে। প্যাসক্যাল ভাষায় স্ট্রিং সাধারণত একক বা ডাবল কোটেশন চিহ্নের মধ্যে লেখা হয়।
স্ট্রিং ডিক্লেয়ারেশন (String Declaration)
স্ট্রিং ডিক্লেয়ার করতে সাধারণত String বা ShortString ডেটা টাইপ ব্যবহার করা হয়।
var
name: String;
city: String[20]; { Maximum 20 characters }এখানে:
nameহলো একটি স্ট্রিং ভেরিয়েবল।cityহলো একটি স্ট্রিং যেটি সর্বাধিক ২০টি অক্ষর ধারণ করতে পারে।
স্ট্রিং ইনিশিয়ালাইজেশন (String Initialization)
স্ট্রিংয়ের মান প্রদান করা হয় ডাবল কোটেশন চিহ্নে:
name := 'John';
city := 'Dhaka';স্ট্রিং অপারেশন (String Operations)
স্ট্রিংয়ের বিভিন্ন অপারেশন করা যায়, যেমন দুটি স্ট্রিংকে যুক্ত করা:
var
fullName: String;
begin
fullName := 'John ' + 'Doe';
writeln(fullName); { Output: John Doe }
end.স্ট্রিংয়ের দৈর্ঘ্য বের করা:
writeln('Length of name: ', Length(name)); { Output: 4 }স্ট্রিংয়ের কিছু ফাংশন (String Functions)
- Length: স্ট্রিংয়ের দৈর্ঘ্য (অক্ষরের সংখ্যা) নির্ণয় করে।
- Copy: একটি স্ট্রিং থেকে নির্দিষ্ট অংশ কপি করে।
- Concat: দুটি বা তার বেশি স্ট্রিং একত্রিত করে।
var
subStr: String;
begin
subStr := Copy(name, 1, 2); { 'Jo' }
writeln('Substring: ', subStr);
end.৩. অ্যারে এবং স্ট্রিংয়ের মধ্যে পার্থক্য
- অ্যারে: একটি অ্যারে একই ধরনের একাধিক উপাদান ধারণ করতে পারে (যেমন একাধিক সংখ্যা বা স্ট্রিং)। অ্যারে নির্দিষ্ট আকারের হয় এবং তার আকার পরিবর্তন করা যায় না একবার সেট হলে।
- স্ট্রিং: স্ট্রিং হল অক্ষরের একটি সিকোয়েন্স। এটি একটি বিশেষ ধরনের অ্যারে, তবে প্যাসক্যাল ভাষায় স্ট্রিং ডেটা টাইপ বিশেষভাবে ব্যবহৃত হয় এবং স্ট্রিংয়ের দৈর্ঘ্য পরিবর্তনীয়।
সারাংশ (Summary)
প্যাসক্যাল ভাষায় অ্যারে এবং স্ট্রিং দুইটি গুরুত্বপূর্ণ ডেটা টাইপ। অ্যারে একাধিক উপাদান একসাথে সংরক্ষণ করতে সাহায্য করে, আর স্ট্রিং হলো অক্ষরের সিকোয়েন্স যা সাধারণত টেক্সট ডেটা ধারণ করে। অ্যারে ডিক্লেয়ার এবং ব্যবহার করা সহজ, এবং স্ট্রিংয়ের উপর বিভিন্ন অপারেশন যেমন যুক্তকরণ, দৈর্ঘ্য নির্ণয় এবং সাবস্ট্রিং কপি করা যায়।
প্যাসক্যাল ভাষায় অ্যারে (Array) একটি ডেটা স্ট্রাকচার, যা একযোগে একাধিক মান সংরক্ষণ করতে ব্যবহৃত হয়। অ্যারে দুটি ধরনের হতে পারে: একমাত্রিক (1D) এবং দ্বিমাত্রিক (2D)। একমাত্রিক অ্যারে একটি একক তালিকা (list) হিসাবে কাজ করে, যেখানে একাধিক মান সংরক্ষণ করা যায়। দ্বিমাত্রিক অ্যারে একটি টেবিল বা ম্যাট্রিক্সের মতো কাজ করে, যেখানে সারি এবং কলামে ডেটা সংরক্ষিত থাকে।
একমাত্রিক অ্যারে ডিক্লারেশন (1D Array Declaration)
একমাত্রিক অ্যারে এমন একটি অ্যারে যা এক বা একাধিক মান রাখে এবং প্রতিটি মানের জন্য একটি নির্দিষ্ট ইনডেক্স থাকে।
সিনট্যাক্স:
var
array_name: array[lower_bound..upper_bound] of data_type;এখানে,
array_nameহল অ্যারের নাম।lower_boundহল অ্যারের শুরু ইনডেক্স।upper_boundহল অ্যারের শেষ ইনডেক্স।data_typeহল অ্যারের ভেতরে সংরক্ষিত মানের ধরনের।
উদাহরণ:
var
numbers: array[1..5] of Integer; {একটি একমাত্রিক অ্যারে, যেখানে ৫টি পূর্ণসংখ্যা রাখা যাবে}এখানে numbers অ্যারে ৫টি পূর্ণসংখ্যা সংরক্ষণ করতে সক্ষম এবং ইনডেক্সের পরিসর ১ থেকে ৫ পর্যন্ত।
অ্যারে মান অ্যাসাইন এবং ব্যবহার:
begin
numbers[1] := 10;
numbers[2] := 20;
numbers[3] := 30;
numbers[4] := 40;
numbers[5] := 50;
writeln('The first number is: ', numbers[1]);
writeln('The second number is: ', numbers[2]);
end.দ্বিমাত্রিক অ্যারে ডিক্লারেশন (2D Array Declaration)
দ্বিমাত্রিক অ্যারে একটি টেবিলের মতো কাজ করে, যেখানে দুটি ইনডেক্স থাকে: একটি সারির জন্য এবং একটি কলামের জন্য।
সিনট্যাক্স:
var
array_name: array[lower_bound1..upper_bound1, lower_bound2..upper_bound2] of data_type;এখানে,
lower_bound1..upper_bound1হল প্রথম ডাইমেনশন (সারি) ইনডেক্স।lower_bound2..upper_bound2হল দ্বিতীয় ডাইমেনশন (কলাম) ইনডেক্স।data_typeহল অ্যারের ভেতরে সংরক্ষিত মানের ধরনের।
উদাহরণ:
var
matrix: array[1..3, 1..3] of Integer; {একটি ৩x৩ দ্বিমাত্রিক অ্যারে}এখানে matrix অ্যারে ৩টি সারি এবং ৩টি কলাম রাখে, মোট ৯টি পূর্ণসংখ্যা সংরক্ষণ করতে সক্ষম।
অ্যারে মান অ্যাসাইন এবং ব্যবহার:
begin
matrix[1, 1] := 1;
matrix[1, 2] := 2;
matrix[1, 3] := 3;
matrix[2, 1] := 4;
matrix[2, 2] := 5;
matrix[2, 3] := 6;
matrix[3, 1] := 7;
matrix[3, 2] := 8;
matrix[3, 3] := 9;
writeln('The element at position [1, 1] is: ', matrix[1, 1]);
writeln('The element at position [2, 3] is: ', matrix[2, 3]);
writeln('The element at position [3, 2] is: ', matrix[3, 2]);
end.এখানে, আমরা বিভিন্ন সারি এবং কলামের মান অ্যাসাইন করে তা প্রিন্ট করেছি।
সারাংশ
প্যাসক্যাল ভাষায় অ্যারে ডিক্লেয়ারেশন খুবই সহজ এবং সরল। একমাত্রিক অ্যারে শুধুমাত্র একটি তালিকা হিসেবে কাজ করে, যেখানে একাধিক মান রাখা যায়। আর দ্বিমাত্রিক অ্যারে একটি টেবিলের মতো দুটি ডাইমেনশনে (সারি এবং কলাম) ডেটা সংরক্ষণ করে। অ্যারের মাধ্যমে একাধিক ডেটা স্টোর এবং ব্যবহারের কাজ খুবই সহজ হয়ে যায়।
প্যাসক্যাল প্রোগ্রামিং ভাষায় অ্যারে একটি ডেটা স্ট্রাকচার যা একাধিক মান একত্রে সংরক্ষণ করতে ব্যবহৃত হয়। প্রতিটি মানের একটি নির্দিষ্ট ইন্ডেক্স থাকে, যা দিয়ে অ্যারের কোনো উপাদান অ্যাক্সেস করা হয়। অ্যারে ব্যবহার করে আপনি একই ধরনের ডেটা গুচ্ছ একটি একক ভেরিয়েবলে রাখতে পারেন।
অ্যারে ইন্ডেক্সিং (Array Indexing)
প্যাসক্যাল ভাষায় অ্যারের ইন্ডেক্সিং শূন্য (০) থেকে শুরু হয়। অর্থাৎ, অ্যারের প্রথম উপাদানের ইন্ডেক্স ০ হবে, দ্বিতীয় উপাদানের ইন্ডেক্স ১ হবে, এবং তেমনি পরবর্তী উপাদানের ইন্ডেক্স বৃদ্ধি পাবে।
উদাহরণ:
program ArrayExample;
var
numbers: array[0..4] of Integer; { একটি অ্যারে ঘোষণা যা ৫টি পূর্ণসংখ্যা ধারণ করবে (0 থেকে 4) }
begin
numbers[0] := 10; { প্রথম উপাদানে ১০ অ্যাসাইন করা হচ্ছে }
numbers[1] := 20; { দ্বিতীয় উপাদানে ২০ অ্যাসাইন করা হচ্ছে }
numbers[2] := 30; { তৃতীয় উপাদানে ৩০ অ্যাসাইন করা হচ্ছে }
numbers[3] := 40; { চতুর্থ উপাদানে ৪০ অ্যাসাইন করা হচ্ছে }
numbers[4] := 50; { পঞ্চম উপাদানে ৫০ অ্যাসাইন করা হচ্ছে }
writeln('The value at index 0: ', numbers[0]); { অ্যারের প্রথম উপাদান প্রদর্শন হবে }
writeln('The value at index 1: ', numbers[1]); { অ্যারের দ্বিতীয় উপাদান প্রদর্শন হবে }
end.উপরে, numbers নামক একটি অ্যারে ডিক্লেয়ার করা হয়েছে, যেটি ৫টি পূর্ণসংখ্যা ধারণ করতে সক্ষম (ইন্ডেক্স ০ থেকে ৪)। তারপর, প্রতিটি উপাদানে মান অ্যাসাইন করা হয়েছে এবং সেগুলো প্রদর্শন করা হয়েছে।
অ্যারে এর সাথে বিভিন্ন অপারেশন
প্যাসক্যাল ভাষায় অ্যারে ব্যবহার করে বিভিন্ন ধরনের অপারেশন করা যায়। এই অপারেশনগুলো অ্যারের উপাদান অ্যাক্সেস, মান পরিবর্তন, অ্যারে শিরোনাম (size) এবং আরও অনেক কিছু নিয়ে কাজ করে।
১. অ্যারে উপাদান অ্যাক্সেস (Accessing Array Elements)
অ্যারের একটি নির্দিষ্ট উপাদান অ্যাক্সেস করতে, আপনি ইন্ডেক্স ব্যবহার করেন। উদাহরণ:
writeln('The third element is: ', numbers[2]); { তৃতীয় উপাদান (ইন্ডেক্স ২) প্রদর্শন হবে }২. অ্যারের উপাদান পরিবর্তন (Modifying Array Elements)
অ্যারের কোন উপাদানের মান পরিবর্তন করতে, ইন্ডেক্স এবং নতুন মানের সাহায্যে আপনি সেটি করতে পারেন।
numbers[1] := 100; { দ্বিতীয় উপাদানটি ১০০ করে পরিবর্তন করা হবে }৩. অ্যারে শিরোনাম নির্ধারণ (Array Size)
প্যাসক্যাল ভাষায় অ্যারের আকার (size) কম্পাইল টাইমে নির্ধারণ করতে হয়, কিন্তু আপনি অ্যারের শেষ ইন্ডেক্স (উদাহরণস্বরূপ, ৪) জানলে তার আকার বের করতে পারেন।
writeln('Size of array: ', High(numbers) - Low(numbers) + 1);এখানে, High(numbers) অ্যারের সর্বোচ্চ ইন্ডেক্স এবং Low(numbers) অ্যারের সর্বনিম্ন ইন্ডেক্স দেয়। তাদের পার্থক্য এবং ১ যোগ করে অ্যারের আকার বের করা হয়।
৪. অ্যারে লুপিং (Looping Through an Array)
অ্যারের সমস্ত উপাদান একে একে প্রসেস করতে আপনি লুপ ব্যবহার করতে পারেন। সাধারণত for লুপ অ্যারের মধ্যে মান বাছাই করার জন্য ব্যবহার হয়।
for i := Low(numbers) to High(numbers) do
writeln('Element at index ', i, ' is: ', numbers[i]);এখানে Low(numbers) এবং High(numbers) ব্যবহার করে অ্যারের শুরু এবং শেষ ইন্ডেক্স চিহ্নিত করা হয়েছে এবং লুপের মাধ্যমে অ্যারের সমস্ত উপাদান প্রদর্শন করা হচ্ছে।
৫. অ্যারে ইনিশিয়ালাইজেশন (Array Initialization)
প্যাসক্যাল ভাষায় আপনি অ্যারের উপাদানগুলো একসঙ্গে ইনিশিয়ালাইজ করতে পারেন।
var
numbers: array[0..4] of Integer = (10, 20, 30, 40, 50); { অ্যারে একসাথে ইনিশিয়ালাইজ করা হয়েছে }এভাবে আপনি একটি অ্যারে এক লাইনে ডিফাইন এবং ইনিশিয়ালাইজ করতে পারবেন।
৬. মাল্টিডাইমেনশনাল অ্যারে (Multidimensional Arrays)
প্যাসক্যাল ভাষায় মাল্টিডাইমেনশনাল অ্যারে তৈরি করা সম্ভব। এটি একাধিক সারি এবং কলাম সহ একটি অ্যারে।
var
matrix: array[1..2, 1..3] of Integer;
begin
matrix[1, 1] := 10;
matrix[1, 2] := 20;
matrix[1, 3] := 30;
matrix[2, 1] := 40;
matrix[2, 2] := 50;
matrix[2, 3] := 60;
writeln('Matrix element at (1,1): ', matrix[1, 1]);
writeln('Matrix element at (2,3): ', matrix[2, 3]);
end.এখানে matrix নামক ২x৩ আকারের একটি মাল্টিডাইমেনশনাল অ্যারে তৈরি করা হয়েছে, যেখানে দুটি সারি এবং তিনটি কলাম রয়েছে।
সারাংশ
- অ্যারে ইন্ডেক্সিং: প্যাসক্যাল ভাষায় অ্যারের ইন্ডেক্স শূন্য (০) থেকে শুরু হয়।
- অ্যারে অপারেশন: অ্যারে উপাদান অ্যাক্সেস, মান পরিবর্তন, লুপিং, মাল্টিডাইমেনশনাল অ্যারে, ইনিশিয়ালাইজেশন ইত্যাদি অপারেশন করা যায়।
- অ্যারে শিরোনাম: অ্যারের আকার নির্ধারণের জন্য
Low()এবংHigh()ফাংশন ব্যবহার করা হয়।
অ্যারে ব্যবহারের মাধ্যমে আপনি একাধিক ডেটা একই ধরনের ভেরিয়েবলগুলোর মধ্যে সহজেই সংরক্ষণ ও প্রসেস করতে পারবেন, যা আপনার প্রোগ্রামিংকে আরও সহজ এবং কার্যকরী করে তোলে।
প্যাসক্যাল প্রোগ্রামিং ভাষায় স্ট্রিং (String) হলো অক্ষরের একটি সিকোয়েন্স, যা সাধারণত টেক্সট ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। স্ট্রিংয়ের প্রতিটি অক্ষর একটি নির্দিষ্ট অবস্থানে থাকে, এবং আপনি স্ট্রিংয়ের অক্ষরগুলোকে সহজেই প্রক্রিয়া বা ম্যানিপুলেট করতে পারেন।
স্ট্রিং (String) এর ধারণা
প্যাসক্যাল ভাষায় স্ট্রিং হলো অক্ষরের একটি সিরিজ, যার মধ্যে প্রতিটি অক্ষর আলাদাভাবে অ্যাক্সেসযোগ্য। স্ট্রিংগুলি সাধারণত ডাবল কোট ("" অথবা '') দ্বারা ঘেরা থাকে। প্যাসক্যালের স্ট্রিং ডেটা টাইপ সাধারণত String বা AnsiString নামে পরিচিত, তবে সংস্করণের উপর নির্ভর করে এটি ভিন্ন হতে পারে।
স্ট্রিং ডিক্লেয়ারেশন:
var
name: String; // স্ট্রিং ডিক্লেয়ারেশনএখানে, name একটি স্ট্রিং ভেরিয়েবল যা অক্ষরের সিকোয়েন্স ধারণ করবে।
স্ট্রিং ম্যানিপুলেশন
প্যাসক্যাল ভাষায় স্ট্রিং নিয়ে বিভিন্ন কাজ করা সম্ভব, যেমন স্ট্রিং সংযোজন (concatenation), দৈর্ঘ্য নির্ধারণ (length), সাবস্ট্রিং বের করা (substring extraction), এবং অক্ষরের পরিবর্তন (character replacement) ইত্যাদি।
১. স্ট্রিং সংযোজন (Concatenation)
স্ট্রিংয়ের মধ্যে দুটি স্ট্রিং একত্রিত করতে + অপারেটর ব্যবহার করা হয়।
var
firstName, lastName, fullName: String;
begin
firstName := 'John';
lastName := 'Doe';
fullName := firstName + ' ' + lastName; // স্ট্রিং সংযোজন
writeln(fullName); // আউটপুট: John Doe
end.এখানে, firstName এবং lastName দুটি স্ট্রিংয়ের মান একত্রিত করা হয়েছে।
২. স্ট্রিং দৈর্ঘ্য নির্ধারণ (Length of a String)
স্ট্রিংয়ের দৈর্ঘ্য (অর্থাৎ, অক্ষরের সংখ্যা) বের করতে length() ফাংশন ব্যবহার করা হয়।
var
name: String;
nameLength: Integer;
begin
name := 'John Doe';
nameLength := length(name); // স্ট্রিংয়ের দৈর্ঘ্য নির্ধারণ
writeln('Length of name: ', nameLength); // আউটপুট: 8
end.এখানে, length(name) ফাংশনটি স্ট্রিংয়ের অক্ষরের সংখ্যা প্রদান করেছে।
৩. সাবস্ট্রিং বের করা (Extracting a Substring)
স্ট্রিংয়ের মধ্যে নির্দিষ্ট অংশ বের করতে Copy() ফাংশন ব্যবহার করা হয়।
var
name: String;
subName: String;
begin
name := 'John Doe';
subName := Copy(name, 1, 4); // প্রথম ৪টি অক্ষর নেয়ার জন্য
writeln(subName); // আউটপুট: John
end.এখানে, Copy(name, 1, 4) ফাংশনটি name স্ট্রিংয়ের ১ম থেকে ৪র্থ অক্ষর পর্যন্ত নিয়ে এসেছে।
৪. স্ট্রিংয়ের অক্ষর অ্যাক্সেস (Accessing Characters in a String)
স্ট্রিংয়ের নির্দিষ্ট অবস্থানে থাকা অক্ষরকে অ্যাক্সেস করতে ইনডেক্স ব্যবহার করা হয়। ইনডেক্স ১ থেকে শুরু হয়।
var
name: String;
charAtPos: Char;
begin
name := 'John Doe';
charAtPos := name[1]; // প্রথম অক্ষর
writeln('First character: ', charAtPos); // আউটপুট: J
end.এখানে, name[1] প্রথম অক্ষরকে অ্যাক্সেস করেছে।
৫. স্ট্রিংয়ে পরিবর্তন (Modifying a String)
স্ট্রিংয়ের একটি নির্দিষ্ট অক্ষর পরিবর্তন করতে ইনডেক্স ব্যবহার করা হয়।
var
name: String;
begin
name := 'John Doe';
name[1] := 'P'; // প্রথম অক্ষর 'P' দিয়ে পরিবর্তন করা
writeln(name); // আউটপুট: Phon Doe
end.এখানে, name[1] := 'P' স্ট্রিংয়ের প্রথম অক্ষরকে 'P' দিয়ে পরিবর্তন করেছে।
৬. স্ট্রিংয়ের অক্ষর মুছে ফেলা (Removing Characters)
প্যাসক্যাল ভাষায় স্ট্রিংয়ের নির্দিষ্ট অংশ মুছে ফেলতে Delete() ফাংশন ব্যবহার করা হয়।
var
name: String;
begin
name := 'John Doe';
Delete(name, 5, 3); // ৫ম অক্ষর থেকে ৩টি অক্ষর মুছে ফেলা
writeln(name); // আউটপুট: John
end.এখানে, Delete(name, 5, 3) ফাংশনটি name স্ট্রিংয়ের ৫ম অক্ষর থেকে ৩টি অক্ষর মুছে ফেলেছে।
স্ট্রিংয়ের অন্যান্য ফাংশন
প্যাসক্যাল ভাষায় আরও কিছু স্ট্রিং ম্যানিপুলেশন ফাংশন রয়েছে, যেমন:
- Pos(): একটি সাবস্ট্রিংয়ের অবস্থান খুঁজে বের করা
- UpperCase(): স্ট্রিংকে বড় হাতের অক্ষরে রূপান্তর করা
- LowerCase(): স্ট্রিংকে ছোট হাতের অক্ষরে রূপান্তর করা
- Trim(): স্ট্রিংয়ের শুরুর এবং শেষের ফাঁকা স্থান মুছে ফেলা
উদাহরণ:
var
str: String;
begin
str := ' Pascal ';
writeln('Uppercase: ', UpperCase(str)); // আউটপুট: PASCAL
writeln('Lowercase: ', LowerCase(str)); // আউটপুট: pascal
writeln('Trimmed: ', Trim(str)); // আউটপুট: Pascal
end.সারাংশ
প্যাসক্যাল প্রোগ্রামিং ভাষায় স্ট্রিং অক্ষরের একটি সিকোয়েন্স যা টেক্সট ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। স্ট্রিং ম্যানিপুলেশন ফাংশন ব্যবহার করে আপনি স্ট্রিংয়ের দৈর্ঘ্য বের করতে, সাবস্ট্রিং তৈরি করতে, স্ট্রিংয়ের অক্ষর পরিবর্তন করতে এবং অন্যান্য কার্যকলাপ করতে পারেন। প্যাসক্যালের স্ট্রিং ম্যানিপুলেশন ফাংশনগুলি প্রোগ্রামিংয়ের সময় স্ট্রিং ডেটার সাথে কাজ করার জন্য অত্যন্ত সহায়ক।
প্যাসক্যাল ভাষায় Set এবং String Handling Functions ডেটা সংরক্ষণ এবং প্রক্রিয়াকরণের জন্য গুরুত্বপূর্ণ সরঞ্জাম। এখানে আমরা এই দুটি বিষয় বিস্তারিতভাবে আলোচনা করব।
১. Set (সেট)
Set হলো একটি বিশেষ ধরনের ডেটা স্ট্রাকচার যা এক বা একাধিক অনন্য মান সংরক্ষণ করতে ব্যবহৃত হয়। এটি গুণগতভাবে সেট থিওরি (Mathematical Set Theory)-এর ওপর ভিত্তি করে তৈরি। একটি সেটের মধ্যে কোনো মান একাধিকবার থাকতে পারে না, অর্থাৎ এটি শুধুমাত্র একক মান সংরক্ষণ করে।
প্যাসক্যাল ভাষায় set ডেটা টাইপ ব্যবহার করতে হলে আপনাকে তার উপাদানের ধরন নির্দিষ্ট করতে হবে। সাধারণভাবে set ডেটা টাইপ সংখ্যা বা নির্দিষ্ট ধরণের ডেটা ধারণ করে থাকে।
Set ডেটা টাইপের সঠিক সিনট্যাক্স:
type
SetType = set of ElementType;এখানে ElementType হলো সেটের উপাদান, যেমন পূর্ণসংখ্যা (Integer), চর (Char) ইত্যাদি।
উদাহরণ:
program SetExample;
var
numbers: set of 1..10;
begin
numbers := [1, 3, 5, 7, 9]; // এক সেটের মধ্যে ১, ৩, ৫, ৭, ৯ মান সংরক্ষণ
writeln('Numbers in the set:');
writeln(numbers);
end.Set-এ কিছু কার্যকারী ফাংশন:
In: একটি উপাদান সেটের মধ্যে আছে কিনা তা চেক করে।
if 3 in numbers then writeln('3 is in the set');+ (Union): দুটি সেটের ইউনিয়ন করে।
numbers := numbers + [2, 4, 6];- (Difference): একটি সেট থেকে অন্য সেটের উপাদান বাদ দেয়।
numbers := numbers - [1, 3];*** (Intersection)**: দুটি সেটের ইন্টারসেকশন (common elements) বের করে।
var newSet: set of 1..10; newSet := numbers * [3, 5, 7];=: দুটি সেট সমান কিনা চেক করে।
if numbers = [1, 3, 5, 7, 9] then writeln('Sets are equal');
২. String Handling Functions (স্ট্রিং হ্যান্ডলিং ফাংশন)
প্যাসক্যাল ভাষায় স্ট্রিংগুলি ব্যবহার করার জন্য বিভিন্ন ফাংশন এবং প্রক্রিয়া রয়েছে। স্ট্রিং হচ্ছে অক্ষরের একটি সিকোয়েন্স (sequence) এবং এগুলোর উপর বিভিন্ন অপারেশন যেমন স্ট্রিংয়ের দৈর্ঘ্য বের করা, স্ট্রিংয়ের অংশ বের করা, স্ট্রিং একত্রিত করা ইত্যাদি করা সম্ভব।
প্যাসক্যাল স্ট্রিং হ্যান্ডলিং ফাংশন:
Length: একটি স্ট্রিংয়ের দৈর্ঘ্য (characters count) প্রদান করে।
var str: string; begin str := 'Hello, World!'; writeln('Length of the string is: ', length(str)); end.Concat: দুটি বা তার বেশি স্ট্রিং একত্রিত করে একটি নতুন স্ট্রিং তৈরি করে।
var str1, str2, result: string; begin str1 := 'Hello, '; str2 := 'World!'; result := concat(str1, str2); // Hello, World! writeln(result); end.Copy: একটি স্ট্রিং থেকে নির্দিষ্ট অংশ কপি করে।
var str, subStr: string; begin str := 'Hello, World!'; subStr := copy(str, 1, 5); // "Hello" writeln('Sub-string is: ', subStr); end.Pos: একটি সাবস্ট্রিং কোথায় প্রথম দেখা গেছে তা নির্ধারণ করে।
var str: string; begin str := 'Hello, World!'; writeln('Position of "World" is: ', pos('World', str)); // 8 end.Delete: একটি স্ট্রিং থেকে নির্দিষ্ট অংশ মুছে ফেলে।
var str: string; begin str := 'Hello, World!'; delete(str, 7, 5); // Removes 'World' writeln(str); // "Hello, !" end.Insert: একটি স্ট্রিংয়ে নতুন অংশ যোগ করে নির্দিষ্ট অবস্থানে।
var str: string; begin str := 'Hello, !'; insert('World ', str, 7); // Inserts 'World ' at position 7 writeln(str); // "Hello, World !" end.UpperCase / LowerCase: স্ট্রিংয়ের সব অক্ষরকে বড় হাতের বা ছোট হাতের অক্ষরে পরিবর্তন করে।
var str: string; begin str := 'Hello'; writeln(upperCase(str)); // "HELLO" writeln(lowerCase(str)); // "hello" end.
সারাংশ
Set এবং String Handling Functions প্যাসক্যাল ভাষার গুরুত্বপূর্ণ অংশ। Set ব্যবহার করে আপনি একাধিক মান সংরক্ষণ, মুছে ফেলা, ইউনিয়ন বা ইন্টারসেকশন করতে পারেন, যা গাণিতিক সেটের মতো কাজ করে। অন্যদিকে, String Handling Functions স্ট্রিংগুলির উপর নানা ধরনের কার্যক্রম পরিচালনা করতে সহায়তা করে, যেমন দৈর্ঘ্য নির্ধারণ, স্ট্রিং একত্রিত করা, অংশ কপি করা, ছোট বা বড় হাতের অক্ষরে রূপান্তর ইত্যাদি। এগুলি প্যাসক্যাল প্রোগ্রামিংকে আরও শক্তিশালী এবং নমনীয় করে তোলে।
Read more