ফোরট্রানে Allocatable Components এর ব্যবহার
ফোরট্রানে Allocatable কিওয়ার্ডটি ডাইনামিক মেমরি বরাদ্দের জন্য ব্যবহৃত হয়। যখন আমরা একটি ডাইনামিক অ্যারে বা অন্যান্য ডাটা কাঠামো তৈরি করতে চাই, যার আকার রানটাইমে পরিবর্তিত হতে পারে, তখন Allocatable কম্পোনেন্ট ব্যবহৃত হয়। Allocatable কম্পোনেন্টগুলো খুবই গুরুত্বপূর্ণ কারণ এগুলির আকার কোড চলাকালীন সময় নির্ধারণ করা যায় এবং পরে প্রয়োজনীয়তা অনুযায়ী মেমরি বরাদ্দ বা মুক্ত করা যায়।
ফোরট্রানে allocatable components ব্যবহার করা হয় মেমরি ব্যবস্থাপনা উন্নত করতে, বিশেষ করে যখন অ্যারের আকার পরিবর্তনশীল এবং বড় আকারের ডেটাসেটের সাথে কাজ করা হয়।
১. Allocatable Components এর সাধারণ ব্যবহার
ফোরট্রানে allocatable কম্পোনেন্ট একটি মডিউল বা প্রোগ্রামে একটি ডাইনামিক অ্যারে, মেটাডেটা, বা অন্যান্য ডেটা কাঠামো তৈরি করতে ব্যবহৃত হয়। এটি কোডের মেমরি ব্যবস্থাপনা সঠিকভাবে করতে সাহায্য করে এবং খুব বড় ডেটাসেটের সাথে কাজ করার সময় ডাইনামিক মেমরি বরাদ্দের সুবিধা প্রদান করে।
Allocatable অ্যারে ব্যবহারের উদাহরণ:
program allocatable_example
integer, allocatable :: arr(:)
integer :: n
! আকার ডাইনামিকভাবে নির্ধারণ করা
print *, "Enter the size of the array: "
read *, n
! অ্যারে বরাদ্দ করা
allocate(arr(n))
! অ্যারে ইনিশিয়ালাইজ করা
arr = 5
! অ্যারে আউটপুট দেখানো
print *, "Array contents: ", arr
! অ্যারে মুক্ত করা
deallocate(arr)
print *, "Array deallocated successfully."
end program allocatable_exampleব্যাখ্যা:
- এখানে, allocatable অ্যারে arr ডাইনামিকভাবে বরাদ্দ করা হয়েছে। ব্যবহারকারীর ইনপুট অনুযায়ী অ্যারের আকার নির্ধারিত হয়।
- অ্যারে বরাদ্দ করার পর, এটি ইনিশিয়ালাইজ করা হয়েছে এবং তারপর প্রিন্ট করা হয়েছে।
- শেষে, deallocate কমান্ড ব্যবহার করে মেমরি মুক্ত করা হয়েছে।
আউটপুট হবে:
Enter the size of the array:
5
Array contents: 5 5 5 5 5
Array deallocated successfully.২. Allocatable Components in Modules (মডিউলে Allocatable কম্পোনেন্ট)
ফোরট্রানে মডিউলগুলিতে allocatable components ব্যবহার করা সাধারণ। মডিউলগুলি প্রোগ্রামের ভিন্ন অংশে ডাইনামিক অ্যারের সাথে কাজ করতে দেয় এবং মডিউলের মাধ্যমে সেই অ্যারে একাধিক অংশে ব্যবহার করা যায়।
উদাহরণ: মডিউলে allocatable কম্পোনেন্ট ব্যবহার
module dynamic_array
implicit none
integer, allocatable :: arr(:)
contains
! অ্যারে বরাদ্দের জন্য সাবরুটিন
subroutine allocate_array(size)
integer :: size
allocate(arr(size))
arr = 0
end subroutine allocate_array
! অ্যারের মান প্রিন্ট করার জন্য সাবরুটিন
subroutine print_array
print *, "Array contents: ", arr
end subroutine print_array
end module dynamic_array
program main
use dynamic_array
integer :: n
print *, "Enter size for the array: "
read *, n
! অ্যারে বরাদ্দ করা
call allocate_array(n)
! অ্যারে প্রিন্ট করা
call print_array
! অ্যারে মুক্ত করা
deallocate(arr)
print *, "Array deallocated successfully."
end program mainব্যাখ্যা:
- dynamic_array মডিউলে একটি allocatable অ্যারে arr তৈরি করা হয়েছে।
- allocate_array সাবরুটিনটি অ্যারের সাইজ নেয় এবং allocate দিয়ে মেমরি বরাদ্দ করে, তারপর সেটিকে শূন্য দ্বারা ইনিশিয়ালাইজ করা হয়।
- print_array সাবরুটিন অ্যারের কনটেন্ট প্রিন্ট করে।
- deallocate কমান্ড ব্যবহারের মাধ্যমে মেমরি মুক্ত করা হয়েছে।
৩. Allocatable Components এবং টাইপ
Allocatable কম্পোনেন্ট শুধুমাত্র অ্যারে নয়, অন্যান্য ডাটা টাইপের জন্যও ব্যবহার করা যেতে পারে। যেমন allocatable পয়েন্টার বা স্ট্রাকচার, যেগুলি ডাইনামিকভাবে আকার পরিবর্তন করতে পারে।
উদাহরণ: Allocatable Structure এর ব্যবহার
module dynamic_structure
implicit none
type :: person
character(len=100) :: name
integer :: age
end type person
type(person), allocatable :: people(:)
contains
! স্ট্রাকচার অ্যারে বরাদ্দ করার জন্য সাবরুটিন
subroutine allocate_people(n)
integer :: n
allocate(people(n))
end subroutine allocate_people
end module dynamic_structure
program main
use dynamic_structure
integer :: n
print *, "Enter the number of people: "
read *, n
! স্ট্রাকচার অ্যারে বরাদ্দ করা
call allocate_people(n)
! ইনপুট গ্রহণ এবং প্রিন্ট করা
do i = 1, n
print *, "Enter name of person ", i, ": "
read *, people(i)%name
print *, "Enter age of person ", i, ": "
read *, people(i)%age
end do
! স্ট্রাকচার অ্যারের কনটেন্ট প্রিন্ট করা
print *, "People data:"
do i = 1, n
print *, people(i)%name, people(i)%age
end do
! অ্যারে মুক্ত করা
deallocate(people)
print *, "People data deallocated successfully."
end program mainব্যাখ্যা:
- person নামক একটি টাইপ ডিফাইন করা হয়েছে যা মানুষের নাম এবং বয়স ধারণ করবে।
- people নামক একটি allocatable স্ট্রাকচার অ্যারে ডাইনামিকভাবে বরাদ্দ করা হয়েছে এবং এর উপাদানগুলির জন্য ইনপুট নেওয়া হয়েছে।
- শেষের দিকে deallocate ব্যবহার করে মেমরি মুক্ত করা হয়েছে।
উপসংহার
Allocatable components ফোরট্রানে ডাইনামিক মেমরি ব্যবস্থাপনার একটি শক্তিশালী উপায়। ALLOCATE এবং DEALLOCATE ব্যবহার করে আপনি মেমরি বরাদ্দ এবং মুক্ত করতে পারেন, যা ডেটা কাঠামো এবং অ্যারের আকার পরিবর্তনশীল হওয়া পরিস্থিতিতে খুবই উপকারী। মডিউল, স্ট্রাকচার বা অ্যারে এর মধ্যে allocatable ব্যবহার করলে আপনার কোড মডুলার, পুনঃব্যবহারযোগ্য এবং সহজে রক্ষণাবেক্ষণযোগ্য হয়ে ওঠে।
Read more