ইনট্রিনসিক ফাংশন এবং সাবরুটিনস ফোরট্রানে (Intrinsic Functions and Subroutines in Fortran)
ফোরট্রানে ইনট্রিনসিক ফাংশন এবং সাবরুটিনস ব্যবহার করে গণনা, ডেটা প্রক্রিয়াকরণ, এবং অন্যান্য সাধারণ কাজ সহজে সম্পাদন করা যায়। ইনট্রিনসিক ফাংশন এবং সাবরুটিনস হলো বিল্ট-ইন প্রোগ্রামিং ফাংশন যা ফোরট্রান ভাষায় আগে থেকেই উপলব্ধ। এরা প্রোগ্রামের বিভিন্ন স্থানে ব্যবহার করা যায় এবং ব্যবহারকারীর নিজস্ব ফাংশন বা সাবরুটিনের মতো আলাদা করে তৈরি করতে হয় না।
১. ম্যাথমেটিকাল ইনট্রিনসিক ফাংশনস (Mathematical Intrinsic Functions)
ফোরট্রানে বিভিন্ন গাণিতিক অপারেশনের জন্য ইনট্রিনসিক ফাংশন রয়েছে। কিছু সাধারণ গাণিতিক ইনট্রিনসিক ফাংশনের উদাহরণ নিচে দেয়া হলো।
| ফাংশন | বিবরণ | উদাহরণ |
|---|---|---|
abs(x) | একটি সংখ্যার মান নির্ণয় করে | abs(-5) = 5 |
sqrt(x) | বর্গমূল নির্ণয় করে | sqrt(16) = 4 |
exp(x) | e^x মান গণনা করে | exp(1) ≈ 2.718 |
log(x) | প্রাকৃতিক লগারিদম (ln) নির্ণয় করে | log(2.718) ≈ 1 |
sin(x) | সাইন ফাংশনের মান গণনা করে | sin(π/2) = 1 |
cos(x) | কোসাইন ফাংশনের মান গণনা করে | cos(0) = 1 |
tan(x) | ট্যানজেন্ট ফাংশনের মান গণনা করে | tan(π/4) = 1 |
উদাহরণ:
program math_intrinsics
real :: x = 9.0, result
result = sqrt(x) ! বর্গমূল
print *, "Square root of", x, "is", result
result = exp(1.0) ! e^1
print *, "Value of e^1 is", result
result = sin(3.14159 / 2) ! π/2 এর সাইন মান
print *, "sin(π/2) is approximately", result
end program math_intrinsics২. আরে অপারেশন ইনট্রিনসিক ফাংশনস (Array Operation Intrinsic Functions)
ফোরট্রানে অ্যারের ওপর বিভিন্ন ধরনের ইনট্রিনসিক ফাংশন ব্যবহার করা যায়। কিছু সাধারণ অ্যারে ইনট্রিনসিক ফাংশন:
| ফাংশন | বিবরণ | উদাহরণ |
|---|---|---|
sum(array) | অ্যারের সমস্ত উপাদানের যোগফল প্রদান করে | sum([1, 2, 3]) = 6 |
product(array) | অ্যারের সমস্ত উপাদানের গুণফল প্রদান করে | product([2, 3]) = 6 |
maxval(array) | অ্যারের মধ্যে সর্বোচ্চ মান প্রদান করে | maxval([2, 5, 3]) = 5 |
minval(array) | অ্যারের মধ্যে সর্বনিম্ন মান প্রদান করে | minval([2, 5, 3]) = 2 |
উদাহরণ:
program array_intrinsics
integer, dimension(5) :: arr = [1, 2, 3, 4, 5]
integer :: result
result = sum(arr)
print *, "Sum of elements:", result
result = maxval(arr)
print *, "Maximum value:", result
result = product(arr)
print *, "Product of elements:", result
end program array_intrinsics৩. স্ট্রিং ইনট্রিনসিক ফাংশনস (String Intrinsic Functions)
ফোরট্রানে স্ট্রিং ম্যানিপুলেশনের জন্য ইনট্রিনসিক ফাংশন রয়েছে। কিছু সাধারণ স্ট্রিং ইনট্রিনসিক ফাংশন:
| ফাংশন | বিবরণ | উদাহরণ |
|---|---|---|
len(string) | স্ট্রিংয়ের দৈর্ঘ্য প্রদান করে | len("Fortran") = 7 |
trim(string) | স্ট্রিংয়ের শেষে স্পেস সরিয়ে দেয় | trim("Fortran ") = "Fortran" |
index(string, substring) | স্ট্রিংয়ে সাবস্ট্রিংয়ের প্রথম অবস্থান প্রদান করে | index("Fortran", "tr") = 3 |
উদাহরণ:
program string_intrinsics
character(len=15) :: str = " Fortran "
integer :: pos
print *, "Length of str:", len(str)
print *, "Trimmed str:", trim(str)
pos = index("Fortran Programming", "Program")
print *, "Position of 'Program' in string:", pos
end program string_intrinsics৪. লোজিক্যাল ইনট্রিনসিক ফাংশনস (Logical Intrinsic Functions)
ফোরট্রানে লজিক্যাল অপারেশনের জন্য কিছু ইনট্রিনসিক ফাংশন রয়েছে:
| ফাংশন | বিবরণ | উদাহরণ |
|---|---|---|
all(array) | যদি অ্যারের সব মান সত্য হয়, তাহলে .TRUE. ফেরত দেয় | all([.TRUE., .TRUE.]) = .TRUE. |
any(array) | যদি অ্যারের কোনো একটি মান সত্য হয়, তাহলে .TRUE. ফেরত দেয় | any([.FALSE., .TRUE.]) = .TRUE. |
count(array) | অ্যারের মধ্যে সত্য মানের সংখ্যা গণনা করে | count([.TRUE., .FALSE., .TRUE.]) = 2 |
উদাহরণ:
program logical_intrinsics
logical, dimension(3) :: arr = [.TRUE., .FALSE., .TRUE.]
integer :: result
print *, "All elements are true:", all(arr)
print *, "Any element is true:", any(arr)
result = count(arr)
print *, "Number of true values:", result
end program logical_intrinsics৫. র্যান্ডম সংখ্যা জেনারেশন (Random Number Generation)
ফোরট্রানে random_number ইনট্রিনসিক ফাংশন ব্যবহার করে র্যান্ডম সংখ্যা তৈরি করা যায়।
উদাহরণ:
program random_example
real :: rand_num
call random_number(rand_num)
print *, "Random number:", rand_num
end program random_exampleএখানে random_number ফাংশনটি rand_num এ একটি র্যান্ডম সংখ্যা প্রদান করে।
৬. ডেটা টাইপ কনভার্সন ইনট্রিনসিক ফাংশনস (Data Type Conversion Intrinsic Functions)
ফোরট্রানে ডেটা টাইপ রূপান্তরের জন্য ইনট্রিনসিক ফাংশন রয়েছে:
| ফাংশন | বিবরণ | উদাহরণ |
|---|---|---|
int(x) | x কে পূর্ণসংখ্যায় রূপান্তর করে | int(5.7) = 5 |
real(x) | x কে ভগ্নাংশে রূপান্তর করে | real(3) = 3.0 |
char(x) | x কে ক্যারেক্টারে রূপান্তর করে | char(65) = "A" |
উদাহরণ:
program conversion_example
real :: x = 7.5
integer :: y
character :: ch
y = int(x)
ch = char(65)
print *, "Integer value:", y
print *, "Character:", ch
end program conversion_exampleউপসংহার
ফোরট্রানে ইনট্রিনসিক ফাংশন এবং সাবরুটিনস প্রোগ্রামিংয়ের প্রয়োজনীয় বিভিন্ন কাজ সহজে এবং দ্রুত সম্পন্ন করতে সহায়ক। গণিত, স্ট্রিং, লজিক্যাল, এবং র্যান্ডম সংখ্যার মতো বিভিন্ন ফাংশন ব্যবহার করে প্রোগ্রামকে আরও শক্তিশালী এবং কার্যকর করা সম্ভব।
ফোরট্রানের Built-in Intrinsic Functions এবং তাদের ব্যবহার
ফোরট্রান একটি শক্তিশালী প্রোগ্রামিং ভাষা যা অনেক ধরনের বিল্ট-ইন intrinsic functions সরবরাহ করে। এই ফাংশনগুলি সাধারণত গাণিতিক, স্ট্রিং, লজিক্যাল, ইনপুট/আউটপুট (I/O) এবং অন্যান্য কাজ সহজভাবে করতে ব্যবহৃত হয়। ফোরট্রানের ইনট্রিন্সিক ফাংশনগুলি ব্যবহার করে আপনি একাধিক জটিল কাজ যেমন গাণিতিক গণনা, স্ট্রিং অপারেশন, আর্গুমেন্টের মান যাচাই, সংখ্যা রাউন্ডিং ইত্যাদি দ্রুত ও সহজভাবে করতে পারেন।
নিচে ফোরট্রানের কিছু গুরুত্বপূর্ণ বিল্ট-ইন ইনট্রিন্সিক ফাংশন এবং তাদের ব্যবহার আলোচনা করা হলো।
১. গাণিতিক ইনট্রিন্সিক ফাংশন (Mathematical Intrinsic Functions)
ফোরট্রানে গাণিতিক ফাংশনগুলির মাধ্যমে বিভিন্ন গণনা যেমন পাই, লগারিদম, সাইন, কসমাইন, স্কয়ার রুট ইত্যাদি করা যায়।
উদাহরণ:
SQRT(x):xএর বর্গমূল বের করে।LOG(x):xএর প্রাকৃতিক লগারিদম বের করে।SIN(x):xএর সাইন বের করে।COS(x):xএর কসমাইন বের করে।EXP(x):eএরxতম শক্তি বের করে।ABS(x):xএর পরিমাণ বের করে (এটা সবসময় ধনাত্মক মান দেয়)।MOD(x, y):xকেyদিয়ে ভাগ করার পর যে ভাগশেষ থাকে তা বের করে।
উদাহরণ কোড:
PROGRAM math_example
REAL :: x, result
x = 25.0
result = SQRT(x) ! বর্গমূল বের করা
PRINT *, 'Square root of ', x, ' is ', result
result = LOG(x) ! প্রাকৃতিক লগারিদম বের করা
PRINT *, 'Natural log of ', x, ' is ', result
END PROGRAM math_exampleআউটপুট:
Square root of 25.0 is 5.000000
Natural log of 25.0 is 3.218876২. স্ট্রিং ইনট্রিন্সিক ফাংশন (String Intrinsic Functions)
ফোরট্রানে স্ট্রিং সংক্রান্ত বিভিন্ন কাজ যেমন স্ট্রিং দৈর্ঘ্য, সাবস্ট্রিং, স্ট্রিং ট্রিমিং ইত্যাদি করার জন্য বেশ কিছু বিল্ট-ইন ফাংশন রয়েছে।
উদাহরণ:
LEN(string): স্ট্রিংয়ের দৈর্ঘ্য বের করে।TRIM(string): স্ট্রিংয়ের ডান দিকের ফাঁকা জায়গাগুলি মুছে ফেলে।INDEX(string, substring): স্ট্রিংয়ের মধ্যে সাবস্ট্রিংয়ের প্রথম উপস্থিতি খুঁজে বের করে।ADJUSTL(string): স্ট্রিংয়ের বাম দিকে থাকা ফাঁকা জায়গাগুলি মুছে ফেলে।
উদাহরণ কোড:
PROGRAM string_example
CHARACTER(LEN=20) :: str, trimmed_str
INTEGER :: length
str = ' Hello, Fortran! '
length = LEN(str) ! স্ট্রিংয়ের দৈর্ঘ্য বের করা
PRINT *, 'Length of str: ', length
trimmed_str = TRIM(str) ! ট্রিম করা স্ট্রিং
PRINT *, 'Trimmed string: ', trimmed_str
END PROGRAM string_exampleআউটপুট:
Length of str: 20
Trimmed string: 'Hello, Fortran!'৩. লজিক্যাল ফাংশন (Logical Functions)
ফোরট্রানে লজিক্যাল ফাংশনগুলো ব্যবহৃত হয় শর্ত যাচাই করতে এবং সত্য/মিথ্যা (True/False) মান নির্ধারণ করতে।
উদাহরণ:
AND(a, b):aএবংbউভয়ের মান যদি সত্য হয় তবে এটি সত্য (True) ফেরত দেয়।OR(a, b):aঅথবাbকোন একটি যদি সত্য হয় তবে এটি সত্য (True) ফেরত দেয়।NOT(a):aএর বিপরীত মান (True এর পরিবর্তে False, বা False এর পরিবর্তে True) ফেরত দেয়।
উদাহরণ কোড:
PROGRAM logical_example
LOGICAL :: a, b
a = .TRUE.
b = .FALSE.
PRINT *, 'a AND b: ', AND(a, b)
PRINT *, 'a OR b: ', OR(a, b)
PRINT *, 'NOT a: ', NOT(a)
END PROGRAM logical_exampleআউটপুট:
a AND b: F
a OR b: T
NOT a: F৪. ডেটা টাইপ কনভার্সন ফাংশন (Data Type Conversion Functions)
ফোরট্রানে ডেটা টাইপ কনভার্সন করার জন্যও কিছু বিল্ট-ইন ফাংশন রয়েছে। যেমন:
REAL(x):xকে রিয়েল (floating point) টাইপে রূপান্তর করে।INT(x):xকে পূর্ণসংখ্যা (integer) টাইপে রূপান্তর করে।CHARACTER(x):xকে স্ট্রিং (character) টাইপে রূপান্তর করে।
উদাহরণ কোড:
PROGRAM type_conversion_example
INTEGER :: i
REAL :: r
CHARACTER(LEN=5) :: str
i = 5
r = REAL(i) ! পূর্ণসংখ্যাকে রিয়েল টাইপে কনভার্ট করা
PRINT *, 'Converted integer to real: ', r
str = CHARACTER(i) ! পূর্ণসংখ্যাকে স্ট্রিং টাইপে কনভার্ট করা
PRINT *, 'Converted integer to string: ', str
END PROGRAM type_conversion_exampleআউটপুট:
Converted integer to real: 5.000000
Converted integer to string: '5 '৫. অ্যারে ফাংশন (Array Functions)
ফোরট্রানে অ্যারে সম্পর্কিত কাজের জন্য কিছু বিল্ট-ইন ফাংশন রয়েছে, যেমন:
SUM(array): অ্যারের সব উপাদানের যোগফল বের করে।MAXVAL(array): অ্যারের সর্বোচ্চ মান বের করে।MINVAL(array): অ্যারের সর্বনিম্ন মান বের করে।SIZE(array): অ্যারের সাইজ বা উপাদানের সংখ্যা বের করে।
উদাহরণ কোড:
PROGRAM array_function_example
REAL, DIMENSION(5) :: arr
REAL :: total_sum
arr = [1.0, 2.0, 3.0, 4.0, 5.0]
total_sum = SUM(arr) ! অ্যারের উপাদান যোগফল
PRINT *, 'Sum of array: ', total_sum
PRINT *, 'Max value in array: ', MAXVAL(arr)
PRINT *, 'Size of array: ', SIZE(arr)
END PROGRAM array_function_exampleআউটপুট:
Sum of array: 15.000000
Max value in array: 5.000000
Size of array: 5উপসংহার
ফোরট্রান এর বিল্ট-ইন ইনট্রিন্সিক ফাংশনগুলি কোড লেখার সময় আপনার কাজকে সহজ এবং দ্রুত করে তোলে। এগুলি গাণিতিক, স্ট্রিং অপারেশন, লজিক্যাল ফাংশন, ডেটা টাইপ কনভার্সন, অ্যারে অপারেশন ইত্যাদি ক্ষেত্রের জন্য ব্যবহৃত হয়। এগুলির মাধ্যমে আপনি কম সময়ে জটিল কাজগুলো কার্যকর করতে পারেন, এবং কোডের কার্যকারিতা উন্নত করতে পারেন।
ফোরট্রানে Numerical এবং Mathematical Intrinsics
ফোরট্রানে Numerical এবং Mathematical Intrinsics হল প্রি-ডিফাইন্ড ফাংশন বা রুটিন, যা বিভিন্ন গাণিতিক এবং সংখ্যাগত কাজ সম্পাদন করতে ব্যবহৃত হয়। এগুলি আপনার প্রোগ্রামে সাধারণ গাণিতিক অপারেশন এবং সংখ্যাগত বিশ্লেষণগুলি সহজ এবং দ্রুতভাবে সম্পন্ন করার জন্য ব্যবহৃত হয়। ফোরট্রান ইতিমধ্যে অনেকগুলি শক্তিশালী Intrinsic Functions সরবরাহ করে যা বিভিন্ন গাণিতিক সমস্যার সমাধান করতে সাহায্য করে।
১. Numerical Intrinsics (সংখ্যাগত ইনট্রিনসিক ফাংশন)
Numerical Intrinsics হল ফোরট্রানে উপলব্ধ সংখ্যাগত ফাংশনগুলি, যা বিভিন্ন গণনা যেমন সংখ্যা বিশ্লেষণ, রুট নির্ধারণ, বর্গমূল, পেয়ারওয়াইজ অপারেশন এবং আরও অনেক কিছু করতে ব্যবহৃত হয়। নিচে কিছু গুরুত্বপূর্ণ Numerical Intrinsic ফাংশনের উদাহরণ দেওয়া হলো:
১.১. ABS (অ্যাবসোলিউট ভ্যালু)
এই ফাংশনটি একটি সংখ্যার অ্যাবসোলিউট ভ্যালু প্রদান করে (অর্থাৎ, সংখ্যাটি যে দিকে থাকুক না কেন, তার ধনাত্মক মান)।
real :: x, result
x = -5.2
result = abs(x)
print *, result ! আউটপুট হবে: 5.2১.২. SIGN (সংখ্যার সাইন)
এই ফাংশনটি একটি সংখ্যার সাইন প্রদান করে। এটি একটি সংখ্যা এবং সাইন ইনপুট হিসাবে নেয় এবং প্রথম সংখ্যার মান অনুযায়ী সাইন প্রদান করে।
real :: x, y, result
x = -5.2
y = 3.0
result = sign(x, y) ! x এর সাইন অনুযায়ী result হবে -5.2
print *, result১.৩. MOD (মডুলাস)
এই ফাংশনটি দুটি সংখ্যার মধ্যে মডুলাস অপারেশন (বিভাজ্যতার বাকি অংশ) করে।
integer :: a, b, result
a = 17
b = 5
result = mod(a, b) ! 17 এর 5 দিয়ে ভাগ করার বাকি অংশ হবে 2
print *, result ! আউটপুট: 2১.৪. SQRT (বর্গমূল)
এই ফাংশনটি একটি সংখ্যার বর্গমূল নির্ধারণ করে।
real :: x, result
x = 16.0
result = sqrt(x) ! বর্গমূল 4.0 হবে
print *, result ! আউটপুট: 4.0১.৫. EXP (এক্সপোনেনশিয়াল)
এই ফাংশনটি একটি সংখ্যা দ্বারা এক্সপোনেনশিয়াল গণনা করে, অর্থাৎ \( e^{x} \), যেখানে \( e \) হল ন্যাচারাল লগারিদমের ভিত্তি।
real :: x, result
x = 2.0
result = exp(x) ! e^2 এর মান 7.389056
print *, result২. Mathematical Intrinsics (গাণিতিক ইনট্রিনসিক ফাংশন)
Mathematical Intrinsics ফোরট্রানে গাণিতিক কাজ যেমন ত্রিকোণমিতিক ফাংশন, লগারিদম, পাওয়ার অপারেশন ইত্যাদি সম্পাদন করতে ব্যবহৃত হয়। এখানে কিছু গাণিতিক ফাংশনের উদাহরণ দেওয়া হলো:
২.১. SIN, COS, TAN (ত্রিকোণমিতিক ফাংশন)
এই ফাংশনগুলি যথাক্রমে সাইন, কসমাইন এবং ট্যানজেন্ট নির্ধারণ করে।
real :: angle, sine_value, cosine_value, tangent_value
angle = 30.0 ! ডিগ্রিতে
sine_value = sin(angle * 3.14159265358979 / 180.0) ! রেডিয়ানে কনভার্ট করে সাইন নির্ণয়
cosine_value = cos(angle * 3.14159265358979 / 180.0)
tangent_value = tan(angle * 3.14159265358979 / 180.0)
print *, 'Sine of angle: ', sine_value
print *, 'Cosine of angle: ', cosine_value
print *, 'Tangent of angle: ', tangent_value২.২. LOG, LOG10 (লগারিদম ফাংশন)
এই ফাংশনগুলি লগারিদম নির্ধারণ করতে ব্যবহৃত হয়। LOG ফাংশন ন্যাচারাল লগারিদম (\( \ln \)) দেয় এবং LOG10 ফাংশন দশমিক লগারিদম (\( \log_{10} \)) দেয়।
real :: x, log_value, log10_value
x = 100.0
log_value = log(x) ! ন্যাচারাল লগারিদম
log10_value = log10(x) ! দশমিক লগ
print *, 'Natural Log of ', x, ' is: ', log_value
print *, 'Log10 of ', x, ' is: ', log10_value২.৩. POWER (পাওয়ার)
এই ফাংশনটি একটি সংখ্যা তুলে দেয় নির্দিষ্ট শক্তিতে (পাওয়ার অপারেশন)।
real :: base, exponent, result
base = 2.0
exponent = 3.0
result = power(base, exponent) ! 2^3 = 8.0
print *, 'Result of ', base, '^', exponent, ' is: ', result২.৪. REAL, INT, AIMAG (ডেটা টাইপ কনভার্সন)
এই ফাংশনগুলি বিভিন্ন ডেটা টাইপ কনভার্সন বা সংখ্যার অংশ বের করার জন্য ব্যবহৃত হয়:
REAL(x): একটি ইন্টিজার বা কমপ্লেক্স ভ্যালুকে রিয়েল টাইপে রূপান্তর করে।INT(x): একটি রিয়েল বা কমপ্লেক্স ভ্যালুকে ইন্টিজার টাইপে রূপান্তর করে।AIMAG(x): একটি কমপ্লেক্স সংখ্যা থেকে কল্পনা অংশ বের করে।
real :: real_value
integer :: int_value
complex :: complex_value
real_value = 3.14159
int_value = int(real_value) ! 3
complex_value = (1.0, 2.0)
print *, 'Imaginary part of complex number: ', aimag(complex_value) ! 2.0২.৫. ATAN, ATAN2 (আংগুলের আধান)
এই ফাংশনগুলি আঙ্গুলের আধান নির্ধারণ করতে ব্যবহৃত হয়।
real :: x, y, angle
x = 1.0
y = 1.0
angle = atan2(y, x) ! আঙ্গুলের আধান নির্ধারণ (π/4)
print *, 'Angle: ', angle ! আউটপুট: 0.785398163397448উপসংহার
ফোরট্রানে Numerical এবং Mathematical Intrinsics ফাংশনগুলি গাণিতিক এবং সংখ্যাগত কাজগুলি সহজ এবং দ্রুত সম্পাদন করার জন্য শক্তিশালী টুল। এগুলির মাধ্যমে আপনি গাণিতিক হিসাব যেমন ত্রিকোণমিতিক ফাংশন, লগারিদম, শক্তি অপারেশন, বর্গমূল, অ্যাবসোলিউট ভ্যালু ইত্যাদি খুব সহজে সম্পাদন করতে পারেন। এটি কোডের পারফরম্যান্স উন্নত করার জন্য অত্যন্ত কার্যকরী এবং কার্যকর।
ফোরট্রানে Array এবং String Intrinsics এর ব্যবহার
ফোরট্রান একটি শক্তিশালী প্রোগ্রামিং ভাষা, যা অ্যারে (arrays) এবং স্ট্রিং (strings) ম্যানিপুলেশনের জন্য বিভিন্ন intrinsic functions প্রদান করে। এই intrinsic functions গুলি অ্যারে এবং স্ট্রিংয়ের উপর বিভিন্ন গাণিতিক, যৌক্তিক এবং স্ট্রিং প্রক্রিয়া করতে সহায়ক।
ফোরট্রানে অ্যারে এবং স্ট্রিংয়ের জন্য কিছু গুরুত্বপূর্ণ intrinsic functions ব্যবহৃত হয় যা কোডের কার্যকারিতা বৃদ্ধি করে এবং অ্যারে এবং স্ট্রিংয়ের সাথে কাজ করা সহজ করে তোলে।
১. Array Intrinsic Functions
ফোরট্রানে অ্যারের উপর অনেক intrinsic function পাওয়া যায় যা অ্যারের উপাদানগুলির উপর বিভিন্ন গাণিতিক এবং বিশ্লেষণমূলক কাজ করতে সহায়ক।
কিছু সাধারণ Array Intrinsics:
- SUM: অ্যারের সমস্ত উপাদানের যোগফল প্রদান করে।
- PRODUCT: অ্যারের সমস্ত উপাদানের গুণফল প্রদান করে।
- MAX: অ্যারের সর্বোচ্চ মান প্রদান করে।
- MIN: অ্যারের সর্বনিম্ন মান প্রদান করে।
- ALL: অ্যারের সব উপাদান সত্য কিনা তা চেক করে।
- ANY: অ্যারের কোনো উপাদান সত্য কিনা তা চেক করে।
- MAXVAL, MINVAL: অ্যারের সর্বোচ্চ এবং সর্বনিম্ন মান প্রদান করে।
- SIZE: অ্যারের আকার (ডাইমেনশন) প্রদান করে।
- RESHAPE: অ্যারের আকার পরিবর্তন করে।
উদাহরণ 1: SUM, PRODUCT, MAX, MIN এর ব্যবহার
program array_intrinsics
integer :: arr(5)
integer :: sum_result, product_result, max_value, min_value
arr = [1, 2, 3, 4, 5]
! অ্যারের উপাদানের যোগফল
sum_result = sum(arr)
! অ্যারের উপাদানের গুণফল
product_result = product(arr)
! সর্বোচ্চ মান
max_value = max(arr)
! সর্বনিম্ন মান
min_value = min(arr)
print *, 'Sum: ', sum_result
print *, 'Product: ', product_result
print *, 'Max Value: ', max_value
print *, 'Min Value: ', min_value
end program array_intrinsicsআউটপুট:
Sum: 15
Product: 120
Max Value: 5
Min Value: 1২. String Intrinsic Functions
ফোরট্রানে স্ট্রিংগুলির উপর কাজ করার জন্য বিভিন্ন string intrinsic functions পাওয়া যায়। এগুলি স্ট্রিংয়ের দৈর্ঘ্য, স্ট্রিং ট্রিমিং, স্ট্রিংয়ের সাদা স্থান সংযোজন এবং বিভিন্ন স্ট্রিং অপারেশন সম্পাদন করতে ব্যবহৃত হয়।
কিছু সাধারণ String Intrinsics:
- LEN: স্ট্রিংয়ের দৈর্ঘ্য প্রদান করে।
- TRIM: স্ট্রিংয়ের শেষে সাদা স্থান অপসারণ করে।
- ADJUSTL: স্ট্রিংয়ের বাম দিকে সাদা স্থান সরিয়ে স্ট্রিংটি বাম দিকে সরে আসে।
- ADJUSTR: স্ট্রিংয়ের ডান দিকে সাদা স্থান সরিয়ে স্ট্রিংটি ডান দিকে সরে আসে।
- INDEX: স্ট্রিংয়ের মধ্যে একটি সাবস্ট্রিংয়ের অবস্থান প্রদান করে।
- VERIFY: স্ট্রিংয়ের মধ্যে কোন নির্দিষ্ট চরিত্রের অস্তিত্ব পরীক্ষা করে।
- RESHAPE: স্ট্রিংয়ের আকার পরিবর্তন করা।
- SCAN: স্ট্রিংয়ের মধ্যে নির্দিষ্ট একটি চরিত্রের অবস্থান প্রদান করে।
উদাহরণ 2: LEN, TRIM, ADJUSTL, ADJUSTR এর ব্যবহার
program string_intrinsics
character(len=20) :: str = " Hello, World! "
character(len=20) :: adjusted_str
integer :: len_result, index_result
! LEN ফাংশন ব্যবহার করে স্ট্রিংয়ের দৈর্ঘ্য বের করা
len_result = len(str)
print *, 'Length of the string: ', len_result
! TRIM ফাংশন ব্যবহার করে স্ট্রিংয়ের সাদা স্থান অপসারণ করা
print *, 'Trimmed string: "', trim(str), '"'
! ADJUSTL ফাংশন ব্যবহার করে বাম দিকের সাদা স্থান সরানো
adjusted_str = adjustl(str)
print *, 'Adjusted left: "', adjusted_str, '"'
! ADJUSTR ফাংশন ব্যবহার করে ডান দিকের সাদা স্থান সরানো
adjusted_str = adjustr(str)
print *, 'Adjusted right: "', adjusted_str, '"'
! INDEX ফাংশন ব্যবহার করে একটি সাবস্ট্রিংয়ের অবস্থান খুঁজে বের করা
index_result = index(str, 'World')
print *, 'Index of "World": ', index_result
end program string_intrinsicsআউটপুট:
Length of the string: 20
Trimmed string: "Hello, World!"
Adjusted left: "Hello, World! "
Adjusted right: " Hello, World!"
Index of "World": 8৩. Array এবং String Intrinsics এর ব্যবহার একসাথে
এখানে Array এবং String Intrinsic Functions একসাথে ব্যবহার করার একটি উদাহরণ দেওয়া হলো:
উদাহরণ 3: Array এবং String Intrinsics একসাথে ব্যবহার
program array_string_example
character(len=20), allocatable :: names(:)
integer :: i
integer :: lengths(5)
! স্ট্রিংয়ের অ্যারে তৈরি
allocate(names(5))
names = ["Alice", "Bob", "Charlie", "David", "Eve"]
! প্রতিটি স্ট্রিংয়ের দৈর্ঘ্য বের করা
do i = 1, 5
lengths(i) = len(trim(names(i)))
end do
! দৈর্ঘ্য প্রিন্ট করা
print *, 'Lengths of strings: ', lengths
! অ্যারের স্ট্রিংগুলি প্রিন্ট করা
print *, 'Names in array: '
do i = 1, 5
print *, names(i)
end do
end program array_string_exampleব্যাখ্যা:
- এখানে, names অ্যারে 5টি স্ট্রিং ধারণ করছে এবং আমরা len(trim()) ফাংশন ব্যবহার করে প্রতিটি স্ট্রিংয়ের দৈর্ঘ্য বের করেছি।
- তারপর অ্যারের সমস্ত স্ট্রিং প্রিন্ট করা হয়েছে।
আউটপুট:
Lengths of strings: 5 3 7 5 3
Names in array:
Alice
Bob
Charlie
David
Eveউপসংহার
ফোরট্রানে Array এবং String Intrinsics এমন একটি গুরুত্বপূর্ণ টুল যা আপনাকে অ্যারে এবং স্ট্রিংয়ের উপরে বিভিন্ন কার্যক্রম সহজে সম্পাদন করতে সাহায্য করে। অ্যারের উপর গাণিতিক কাজ (যেমন যোগফল, গুণফল, সর্বোচ্চ/সর্বনিম্ন মান) এবং স্ট্রিংয়ের দৈর্ঘ্য বের করা, সাদা স্থান অপসারণ, সাবস্ট্রিং খুঁজে বের করা ইত্যাদি কাজ খুব সহজে করা যায় এই ইনট্রিন্সিক ফাংশনগুলির মাধ্যমে।
সিস্টেম এবং এনভায়রনমেন্ট রিলেটেড ইনট্রিনসিক ফাংশন (System and Environment Related Intrinsic Functions in Fortran)
ফোরট্রানে ইনট্রিনসিক ফাংশন এমন ফাংশন যা ফোরট্রান কম্পাইলার দ্বারা সরবরাহিত এবং সিস্টেম বা পরিবেশ সম্পর্কিত বিভিন্ন কার্য সম্পাদন করার জন্য ব্যবহৃত হয়। সিস্টেম এবং এনভায়রনমেন্ট রিলেটেড ইনট্রিনসিক ফাংশনগুলি ব্যবহারকারীকে কম্পিউটার সিস্টেমের অবস্থা জানাতে এবং পরিচালনা করতে সাহায্য করে।
এই ধরনের ফাংশনগুলি বিশেষত ফাইল সিস্টেম, টাইমিং, পার্থক্য, কম্পাইলার তথ্য ইত্যাদির সাথে সম্পর্কিত কাজে ব্যবহৃত হয়।
১. TIME এবং DATE_AND_TIME ফাংশন
ফোরট্রান সিস্টেমের সময় এবং তারিখ সম্পর্কিত বিভিন্ন তথ্য পেতে TIME এবং DATE_AND_TIME ইনট্রিনসিক ফাংশন প্রদান করে।
TIME
TIME ফাংশন সিস্টেমের বর্তমান সময়ের এলাপসড টাইম প্রদান করে (সেকেন্ডে)।
real :: elapsed_time
elapsed_time = time()
print *, "Elapsed time: ", elapsed_time, " seconds"DATE_AND_TIME
DATE_AND_TIME ফাংশন বর্তমান সিস্টেমের তারিখ এবং সময় প্রদান করে।
integer :: date(8), time(6)
call date_and_time(date, time)
print *, "Current date (YYYYMMDD): ", date
print *, "Current time (HHMMSS): ", timeএখানে:
dateএবংtimeঅ্যারে ব্যবহার করা হয়েছে তারিখ এবং সময় ধারণ করার জন্য।
২. CPU_TIME ফাংশন
CPU_TIME ফাংশন সিস্টেমের CPU সময় দেয়, যা একটি প্রোগ্রাম বা কম্পিউটার প্রক্রিয়া কত সময় ধরে CPU ব্যবহার করেছে তা নির্ধারণ করে।
real :: start_time, end_time
call cpu_time(start_time)
! কিছু কোড কার্যকর করা
call cpu_time(end_time)
print *, "Elapsed CPU time: ", end_time - start_time, " seconds"এখানে:
cpu_timeফাংশন CPU তে কার্যকর হওয়া সময় পরিমাপ করে।
৩. GET_COMMAND এবং COMMAND_ARGUMENT_COUNT ফাংশন
এই ফাংশনগুলি কম্পিউটার প্রোগ্রামের আর্গুমেন্ট বা কমান্ড লাইন ইনপুট সনাক্ত করতে ব্যবহৃত হয়।
GET_COMMAND
GET_COMMAND ফাংশন কম্পিউটারের কমান্ড লাইন থেকে আর্গুমেন্ট বা কোডটি ফেরত দেয়।
character(len=100) :: command_line
call get_command(command_line)
print *, "Command line input: ", command_lineCOMMAND_ARGUMENT_COUNT
COMMAND_ARGUMENT_COUNT ফাংশন কমান্ড লাইন আর্গুমেন্টের সংখ্যা প্রদান করে।
integer :: num_args
call command_argument_count(num_args)
print *, "Number of command-line arguments: ", num_args৪. SYSTEM_CLOCK এবং HUGE ফাংশন
এই ফাংশনগুলি সিস্টেমের ক্লক এবং বৃহত্তম মানের ডেটা প্রকার সম্পর্কিত তথ্য প্রদান করে।
SYSTEM_CLOCK
SYSTEM_CLOCK ফাংশন সিস্টেমের ক্লক কাউন্টার প্রদান করে, যা সময় পরিমাপ বা গণনা করার জন্য ব্যবহৃত হয়।
integer :: count_rate, clock_value
call system_clock(count_rate, clock_value)
print *, "Clock count rate: ", count_rate
print *, "Current clock value: ", clock_valueHUGE
HUGE ফাংশন সর্বাধিক মান প্রদান করে যা একটি নির্দিষ্ট ডেটা টাইপ ধারণ করতে পারে।
real :: max_value
max_value = huge(0.0)
print *, "Largest value for real: ", max_value৫. GET_ENVIRONMENT_VARIABLE এবং SET_ENVIRONMENT_VARIABLE
এই ফাংশনগুলি সিস্টেমের পরিবেশের চলকগুলি (environment variables) পরিচালনা করতে ব্যবহৃত হয়।
GET_ENVIRONMENT_VARIABLE
GET_ENVIRONMENT_VARIABLE ফাংশন সিস্টেমের পরিবেশ চলক মান পাওয়ার জন্য ব্যবহৃত হয়।
character(len=100) :: env_var
call get_environment_variable('HOME', env_var)
print *, "HOME environment variable: ", env_varSET_ENVIRONMENT_VARIABLE
SET_ENVIRONMENT_VARIABLE ফাংশন সিস্টেমের পরিবেশ চলক সেট করার জন্য ব্যবহৃত হয়।
call set_environment_variable('MY_VAR', 'MyValue')৬. IACHAR এবং CHAR
IACHAR এবং CHAR ফাংশনগুলি চরিত্র এবং তার ASCII মানের মধ্যে রূপান্তর করতে ব্যবহৃত হয়।
IACHAR
IACHAR ফাংশন একটি চরিত্রের ASCII মান প্রদান করে।
integer :: ascii_value
ascii_value = iachar('A')
print *, "ASCII value of 'A': ", ascii_valueCHAR
CHAR ফাংশন একটি ASCII মান থেকে চরিত্রে রূপান্তর করে।
character :: char_value
char_value = char(65)
print *, "Character corresponding to ASCII 65: ", char_value৭. FILESYSTEM FUNCTIONS
ফাইল সিস্টেম সম্পর্কিত কিছু গুরুত্বপূর্ণ ইনট্রিনসিক ফাংশন:
INQUIRE
INQUIRE ফাংশন ফাইলের অবস্থা, তার ধরন এবং অন্যান্য তথ্য পরীক্ষা করতে ব্যবহৃত হয়।
logical :: file_exists
character(len=20) :: filename
filename = 'data.txt'
inquire(file=filename, exist=file_exists)
if (file_exists) then
print *, "File exists"
else
print *, "File does not exist"
end ifউপসংহার
ফোরট্রানে সিস্টেম এবং এনভায়রনমেন্ট রিলেটেড ইনট্রিনসিক ফাংশন ব্যবহার করে প্রোগ্রামগুলি সিস্টেমের অবস্থা ও পারফরম্যান্স সম্পর্কে গুরুত্বপূর্ণ তথ্য পেতে পারে এবং সিস্টেম পরিবেশের সাথে যোগাযোগ করতে পারে। এই ফাংশনগুলির মাধ্যমে প্রোগ্রামাররা সিস্টেম টাইম, ডেটা, পরিবেশ চলক এবং ফাইল ব্যবস্থাপনা সহ বিভিন্ন কাজ করতে সক্ষম হন, যা ডিস্ট্রিবিউটেড সিস্টেম এবং প্যারালাল প্রোগ্রামিংয়ে কার্যকরী হয়ে ওঠে।
Read more