ফোরট্রানে Derived Types এর মাধ্যমে কাস্টম ডেটা স্ট্রাকচার তৈরি
ফোরট্রানে Derived Types (বা User-defined Types) ব্যবহার করে আপনি কাস্টম ডেটা স্ট্রাকচার তৈরি করতে পারেন। এটি ফোরট্রানের একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে বিভিন্ন ডেটার ধরন (যেমন, ইন্টিজার, রিয়েল, ক্যারেক্টার ইত্যাদি) একত্রিত করে একটি নতুন টাইপ তৈরি করতে সাহায্য করে।
Derived Type দিয়ে আপনি একটি নতুন ডেটা টাইপ তৈরি করতে পারেন, যা বিভিন্ন প্রপার্টি বা ভ্যারিয়েবল ধারণ করতে পারে। এটি মূলত Struct এর মতো কাজ করে, যা C প্রোগ্রামিং ভাষায় ব্যবহৃত হয়।
১. Derived Type তৈরি করার সাধারণ গঠন
type :: type_name
! সদস্য (members) ঘোষণা
type1 :: member1
type2 :: member2
...
end type type_nametype_name: আপনার তৈরি করা ডেটা টাইপের নাম।type1,type2, ...: এই ডেটা টাইপের সদস্য ভ্যারিয়েবল বা উপাদানগুলির ডেটা টাইপ।
২. Derived Type এর উদাহরণ
ধরা যাক, আপনি একটি Person নামক ডেটা টাইপ তৈরি করতে চান, যা মানুষের নাম, বয়স এবং উচ্চতা ধারণ করবে।
program derived_type_example
implicit none
! Derived Type ডিক্লারেশন
type :: Person
character(len=30) :: name
integer :: age
real :: height
end type Person
! ভেরিয়েবল ঘোষণা
type(Person) :: p1, p2
! সদস্য ভ্যারিয়েবল মান সেট করা
p1%name = 'John Doe'
p1%age = 30
p1%height = 5.9
p2%name = 'Jane Smith'
p2%age = 25
p2%height = 5.7
! মান প্রিন্ট করা
print *, 'Person 1: ', p1%name, ', Age: ', p1%age, ', Height: ', p1%height
print *, 'Person 2: ', p2%name, ', Age: ', p2%age, ', Height: ', p2%height
end program derived_type_exampleএখানে:
type Personদিয়ে আমরা একটি কাস্টম টাইপ তৈরি করেছি, যার মধ্যেname,age, এবংheightসদস্য আছে।p1%name,p1%age,p1%heightসদস্য অ্যাক্সেস করার জন্য%সিম্বল ব্যবহার করা হয়েছে।আউটপুট হবে:
Person 1: John Doe , Age: 30 , Height: 5.9 Person 2: Jane Smith , Age: 25 , Height: 5.7
৩. Derived Type এ ফাংশন এবং সাবরুটিন ব্যবহার
ফোরট্রানে আপনি Derived Type এর মধ্যে function বা subroutine অন্তর্ভুক্ত করতে পারেন। এর মাধ্যমে আপনি ডেটা টাইপের উপর নির্দিষ্ট কাজ বা অপারেশন করতে পারেন।
ফাংশন ব্যবহার করা:
program derived_type_with_function
implicit none
! Derived Type ডিক্লারেশন
type :: Rectangle
real :: length
real :: width
contains
procedure :: area
end type Rectangle
! Derived Type এর ফাংশন
contains
function area(this)
real :: area
class(Rectangle), intent(in) :: this
area = this%length * this%width
end function area
! ভেরিয়েবল ঘোষণা
type(Rectangle) :: rect
! সদস্য ভ্যারিয়েবল মান সেট করা
rect%length = 5.0
rect%width = 3.0
! ফাংশন কল
print *, 'Area of rectangle: ', rect%area()
end program derived_type_with_functionএখানে:
Rectangleটাইপের মধ্যেlengthএবংwidthসদস্য আছে এবংareaনামক একটি ফাংশন রয়েছে।rect%area()ফাংশন কল করে আমরা আয়তক্ষেত্রের এলাকা বের করছি।
আউটপুট হবে:
Area of rectangle: 15.0৪. Derived Type এর মধ্যে Array বা অন্যান্য Derived Type ব্যবহার করা
ফোরট্রানে Derived Type এর মধ্যে অ্যারে বা অন্য Derived Type অন্তর্ভুক্ত করা সম্ভব। এটি আপনাকে আরও জটিল ডেটা স্ট্রাকচার তৈরি করতে সাহায্য করে।
Derived Type এর মধ্যে Array ব্যবহার করা:
program derived_type_with_array
implicit none
! Derived Type ডিক্লারেশন
type :: Student
character(len=30) :: name
integer :: scores(5)
end type Student
! ভেরিয়েবল ঘোষণা
type(Student) :: student1
! সদস্য ভ্যারিয়েবল মান সেট করা
student1%name = 'John Doe'
student1%scores = [85, 90, 78, 92, 88]
! ছাত্রের নাম এবং স্কোর প্রিন্ট করা
print *, 'Student: ', student1%name
print *, 'Scores: ', student1%scores
end program derived_type_with_arrayএখানে:
scores(5)অ্যারের মধ্যে ৫টি মান রয়েছে যাstudent1এর জন্য সেট করা হয়েছে।আউটপুট হবে:
Student: John Doe Scores: 85 90 78 92 88
৫. Derived Type এর সুবিধা
- কাস্টম ডেটা স্ট্রাকচার: আপনি আপনার প্রয়োজন অনুযায়ী কাস্টম ডেটা টাইপ তৈরি করতে পারেন।
- মডুলার এবং পরিষ্কার কোড: ডেটা টাইপের মধ্যে সম্পর্কিত তথ্য এবং ফাংশন একত্রিত করতে পারে, যা কোডের রক্ষণাবেক্ষণ সহজ করে তোলে।
- কোড পুনঃব্যবহারযোগ্যতা: একবার ডেটা টাইপ তৈরি করার পরে, এটি পুনরায় ব্যবহার করা যায় অন্য অংশে।
- ডেটা নিরাপত্তা: আপনি ডেটা এবং তার কার্যক্রমকে একত্রিত করে কোডের নিরাপত্তা বাড়াতে পারেন, যেমন, তথ্য অপ্রয়োজনীয়ভাবে অ্যাক্সেস বা পরিবর্তন করা থেকে বিরত থাকা।
উপসংহার
ফোরট্রানে Derived Types ব্যবহারের মাধ্যমে আপনি কাস্টম ডেটা স্ট্রাকচার তৈরি করতে পারেন, যা কোডকে আরও মডুলার এবং কার্যকরী করে তোলে। এটি ডেটা এবং কার্যকলাপকে একত্রিত করে আরও পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য কোড তৈরি করতে সহায়ক। Array বা অন্য Derived Type অন্তর্ভুক্ত করে আপনি আরও জটিল স্ট্রাকচার তৈরি করতে পারেন এবং ফাংশন ও সাবরুটিনের মাধ্যমে এর কার্যক্রম পরিচালনা করতে পারেন।
Read more