Intrinsic Functions এবং Subroutines (ইনট্রিনসিক ফাংশন এবং সাবরুটিনস)

ফোরট্রান (Fortran) - Computer Programming

337

ইনট্রিনসিক ফাংশন এবং সাবরুটিনস ফোরট্রানে (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

উপসংহার

ফোরট্রানে ইনট্রিনসিক ফাংশন এবং সাবরুটিনস প্রোগ্রামিংয়ের প্রয়োজনীয় বিভিন্ন কাজ সহজে এবং দ্রুত সম্পন্ন করতে সহায়ক। গণিত, স্ট্রিং, লজিক্যাল, এবং র্যান্ডম সংখ্যার মতো বিভিন্ন ফাংশন ব্যবহার করে প্রোগ্রামকে আরও শক্তিশালী এবং কার্যকর করা সম্ভব।

Content added By

ফোরট্রানের 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

উপসংহার

ফোরট্রান এর বিল্ট-ইন ইনট্রিন্সিক ফাংশনগুলি কোড লেখার সময় আপনার কাজকে সহজ এবং দ্রুত করে তোলে। এগুলি গাণিতিক, স্ট্রিং অপারেশন, লজিক্যাল ফাংশন, ডেটা টাইপ কনভার্সন, অ্যারে অপারেশন ইত্যাদি ক্ষেত্রের জন্য ব্যবহৃত হয়। এগুলির মাধ্যমে আপনি কম সময়ে জটিল কাজগুলো কার্যকর করতে পারেন, এবং কোডের কার্যকারিতা উন্নত করতে পারেন।

Content added By

ফোরট্রানে 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 ফাংশনগুলি গাণিতিক এবং সংখ্যাগত কাজগুলি সহজ এবং দ্রুত সম্পাদন করার জন্য শক্তিশালী টুল। এগুলির মাধ্যমে আপনি গাণিতিক হিসাব যেমন ত্রিকোণমিতিক ফাংশন, লগারিদম, শক্তি অপারেশন, বর্গমূল, অ্যাবসোলিউট ভ্যালু ইত্যাদি খুব সহজে সম্পাদন করতে পারেন। এটি কোডের পারফরম্যান্স উন্নত করার জন্য অত্যন্ত কার্যকরী এবং কার্যকর।

Content added By

ফোরট্রানে Array এবং String Intrinsics এর ব্যবহার

ফোরট্রান একটি শক্তিশালী প্রোগ্রামিং ভাষা, যা অ্যারে (arrays) এবং স্ট্রিং (strings) ম্যানিপুলেশনের জন্য বিভিন্ন intrinsic functions প্রদান করে। এই intrinsic functions গুলি অ্যারে এবং স্ট্রিংয়ের উপর বিভিন্ন গাণিতিক, যৌক্তিক এবং স্ট্রিং প্রক্রিয়া করতে সহায়ক।

ফোরট্রানে অ্যারে এবং স্ট্রিংয়ের জন্য কিছু গুরুত্বপূর্ণ intrinsic functions ব্যবহৃত হয় যা কোডের কার্যকারিতা বৃদ্ধি করে এবং অ্যারে এবং স্ট্রিংয়ের সাথে কাজ করা সহজ করে তোলে।


১. Array Intrinsic Functions

ফোরট্রানে অ্যারের উপর অনেক intrinsic function পাওয়া যায় যা অ্যারের উপাদানগুলির উপর বিভিন্ন গাণিতিক এবং বিশ্লেষণমূলক কাজ করতে সহায়ক।

কিছু সাধারণ Array Intrinsics:

  1. SUM: অ্যারের সমস্ত উপাদানের যোগফল প্রদান করে।
  2. PRODUCT: অ্যারের সমস্ত উপাদানের গুণফল প্রদান করে।
  3. MAX: অ্যারের সর্বোচ্চ মান প্রদান করে।
  4. MIN: অ্যারের সর্বনিম্ন মান প্রদান করে।
  5. ALL: অ্যারের সব উপাদান সত্য কিনা তা চেক করে।
  6. ANY: অ্যারের কোনো উপাদান সত্য কিনা তা চেক করে।
  7. MAXVAL, MINVAL: অ্যারের সর্বোচ্চ এবং সর্বনিম্ন মান প্রদান করে।
  8. SIZE: অ্যারের আকার (ডাইমেনশন) প্রদান করে।
  9. 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:

  1. LEN: স্ট্রিংয়ের দৈর্ঘ্য প্রদান করে।
  2. TRIM: স্ট্রিংয়ের শেষে সাদা স্থান অপসারণ করে।
  3. ADJUSTL: স্ট্রিংয়ের বাম দিকে সাদা স্থান সরিয়ে স্ট্রিংটি বাম দিকে সরে আসে।
  4. ADJUSTR: স্ট্রিংয়ের ডান দিকে সাদা স্থান সরিয়ে স্ট্রিংটি ডান দিকে সরে আসে।
  5. INDEX: স্ট্রিংয়ের মধ্যে একটি সাবস্ট্রিংয়ের অবস্থান প্রদান করে।
  6. VERIFY: স্ট্রিংয়ের মধ্যে কোন নির্দিষ্ট চরিত্রের অস্তিত্ব পরীক্ষা করে।
  7. RESHAPE: স্ট্রিংয়ের আকার পরিবর্তন করা।
  8. 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 এমন একটি গুরুত্বপূর্ণ টুল যা আপনাকে অ্যারে এবং স্ট্রিংয়ের উপরে বিভিন্ন কার্যক্রম সহজে সম্পাদন করতে সাহায্য করে। অ্যারের উপর গাণিতিক কাজ (যেমন যোগফল, গুণফল, সর্বোচ্চ/সর্বনিম্ন মান) এবং স্ট্রিংয়ের দৈর্ঘ্য বের করা, সাদা স্থান অপসারণ, সাবস্ট্রিং খুঁজে বের করা ইত্যাদি কাজ খুব সহজে করা যায় এই ইনট্রিন্সিক ফাংশনগুলির মাধ্যমে।

Content added By

সিস্টেম এবং এনভায়রনমেন্ট রিলেটেড ইনট্রিনসিক ফাংশন (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_line

COMMAND_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_value

HUGE

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_var

SET_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_value

CHAR

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

উপসংহার

ফোরট্রানে সিস্টেম এবং এনভায়রনমেন্ট রিলেটেড ইনট্রিনসিক ফাংশন ব্যবহার করে প্রোগ্রামগুলি সিস্টেমের অবস্থা ও পারফরম্যান্স সম্পর্কে গুরুত্বপূর্ণ তথ্য পেতে পারে এবং সিস্টেম পরিবেশের সাথে যোগাযোগ করতে পারে। এই ফাংশনগুলির মাধ্যমে প্রোগ্রামাররা সিস্টেম টাইম, ডেটা, পরিবেশ চলক এবং ফাইল ব্যবস্থাপনা সহ বিভিন্ন কাজ করতে সক্ষম হন, যা ডিস্ট্রিবিউটেড সিস্টেম এবং প্যারালাল প্রোগ্রামিংয়ে কার্যকরী হয়ে ওঠে।

Content added By
Promotion

Are you sure to start over?

Loading...