Fortran - ฟังก์ชั่นที่แท้จริง
ฟังก์ชันภายในเป็นฟังก์ชันทั่วไปและสำคัญบางอย่างที่จัดเตรียมไว้ให้เป็นส่วนหนึ่งของภาษาฟอร์แทรน เราได้กล่าวถึงฟังก์ชันเหล่านี้บางส่วนแล้วในบทอาร์เรย์อักขระและสตริง
ฟังก์ชันภายในสามารถแบ่งได้เป็น -
- ฟังก์ชันตัวเลข
- ฟังก์ชันทางคณิตศาสตร์
- ฟังก์ชั่นการสอบถามตัวเลข
- ฟังก์ชันการจัดการจุดลอยตัว
- ฟังก์ชั่นการจัดการบิต
- ฟังก์ชั่นตัวละคร
- ชนิดฟังก์ชั่น
- ฟังก์ชั่นตรรกะ
- ฟังก์ชันอาร์เรย์
เราได้กล่าวถึงฟังก์ชันอาร์เรย์ในบทอาร์เรย์ ในส่วนต่อไปนี้เราให้คำอธิบายสั้น ๆ เกี่ยวกับฟังก์ชันเหล่านี้ทั้งหมดจากหมวดหมู่อื่น ๆ
ในคอลัมน์ชื่อฟังก์ชัน
- A แสดงถึงตัวแปรตัวเลขประเภทใดก็ได้
- R แทนตัวแปรจริงหรือจำนวนเต็ม
- X และ Y แสดงถึงตัวแปรจริง
- Z แสดงถึงตัวแปรที่ซับซ้อน
- W แทนตัวแปรจริงหรือซับซ้อน
ฟังก์ชันตัวเลข
ซีเนียร์ No | ฟังก์ชั่นและคำอธิบาย |
---|---|
1 | ABS (A) ส่งคืนค่าสัมบูรณ์ของ A |
2 | AIMAG (Z) ส่งคืนส่วนจินตภาพของจำนวนเชิงซ้อน Z |
3 | AINT (A [, KIND]) มันจะตัดทอนส่วนที่เป็นเศษส่วนของ A ไปทางศูนย์โดยส่งกลับจำนวนจริงจำนวนเต็ม |
4 | ANINT (A [, KIND]) ส่งคืนค่าจริงจำนวนเต็มที่ใกล้เคียงที่สุดหรือจำนวนเต็ม |
5 | CEILING (A [, KIND]) ส่งคืนจำนวนเต็มที่น้อยที่สุดที่มากกว่าหรือเท่ากับตัวเลข A |
6 | CMPLX (X [, Y, KIND]) มันแปลงตัวแปรจริง X และ Y เป็นจำนวนเชิงซ้อน X + iY ถ้าไม่มี Y จะใช้ 0 |
7 | CONJG (Z) มันจะคืนค่าคอนจูเกตที่ซับซ้อนของจำนวนเชิงซ้อน Z |
8 | DBLE (A) จะแปลง A เป็นจำนวนจริงที่มีความแม่นยำสองเท่า |
9 | DIM (X, Y) ส่งกลับผลต่างที่เป็นบวกของ X และ Y |
10 | DPROD (X, Y) ส่งคืนผลิตภัณฑ์จริงที่มีความแม่นยำสองเท่าของ X และ Y |
11 | FLOOR (A [, KIND]) ให้จำนวนเต็มที่มากที่สุดน้อยกว่าหรือเท่ากับจำนวน A |
12 | INT (A [, KIND]) มันจะแปลงตัวเลข (จริงหรือจำนวนเต็ม) เป็นจำนวนเต็มตัดทอนส่วนจริงให้เป็นศูนย์ |
13 | MAX (A1, A2 [, A3,...]) ส่งคืนค่าสูงสุดจากอาร์กิวเมนต์ทั้งหมดเป็นประเภทเดียวกัน |
14 | MIN (A1, A2 [, A3,...]) ส่งคืนค่าต่ำสุดจากอาร์กิวเมนต์ทั้งหมดเป็นประเภทเดียวกัน |
15 | MOD (A, P) ส่งคืนส่วนที่เหลือของ A ในการหารด้วย P อาร์กิวเมนต์ทั้งสองเป็นประเภทเดียวกัน (A-INT (A / P) * P) |
16 | MODULO (A, P) ส่งคืน A modulo P: (A-FLOOR (A / P) * P) |
17 | NINT (A [, KIND]) จะส่งกลับจำนวนเต็มที่ใกล้ที่สุดของจำนวน A |
18 | REAL (A [, KIND]) มันแปลงเป็นประเภทจริง |
19 | SIGN (A, B) มันจะคืนค่าสัมบูรณ์ของ A คูณด้วยเครื่องหมาย P โดยทั่วไปมันจะโอนเครื่องหมายของ B ไปเป็น A |
ตัวอย่าง
program numericFunctions
implicit none
! define constants
! define variables
real :: a, b
complex :: z
! values for a, b
a = 15.2345
b = -20.7689
write(*,*) 'abs(a): ',abs(a),' abs(b): ',abs(b)
write(*,*) 'aint(a): ',aint(a),' aint(b): ',aint(b)
write(*,*) 'ceiling(a): ',ceiling(a),' ceiling(b): ',ceiling(b)
write(*,*) 'floor(a): ',floor(a),' floor(b): ',floor(b)
z = cmplx(a, b)
write(*,*) 'z: ',z
end program numericFunctions
เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังนี้ -
abs(a): 15.2344999 abs(b): 20.7688999
aint(a): 15.0000000 aint(b): -20.0000000
ceiling(a): 16 ceiling(b): -20
floor(a): 15 floor(b): -21
z: (15.2344999, -20.7688999)
ฟังก์ชันทางคณิตศาสตร์
ซีเนียร์ No | ฟังก์ชั่นและคำอธิบาย |
---|---|
1 | ACOS (X) ส่งคืนค่าโคไซน์ผกผันในช่วง (0, π) เป็นเรเดียน |
2 | ASIN (X) ส่งคืนไซน์ผกผันในช่วง (-π / 2, π / 2) เป็นเรเดียน |
3 | ATAN (X) มันจะคืนค่าแทนเจนต์ผกผันในช่วง (-π / 2, π / 2) เป็นเรเดียน |
4 | ATAN2 (Y, X) มันจะคืนค่าแทนเจนต์ผกผันในช่วง (-π, π) เป็นเรเดียน |
5 | COS (X) ส่งคืนค่าโคไซน์ของอาร์กิวเมนต์เป็นเรเดียน |
6 | COSH (X) ส่งคืนค่าไฮเพอร์โบลิกโคไซน์ของอาร์กิวเมนต์เป็นเรเดียน |
7 | EXP (X) ส่งคืนค่าเอ็กซ์โพเนนเชียลของ X |
8 | LOG (X) ส่งคืนค่าลอการิทึมธรรมชาติของ X |
9 | LOG10 (X) ส่งคืนค่าลอการิทึมทั่วไป (ฐาน 10) ของ X |
10 | SIN (X) ส่งคืนค่าไซน์ของอาร์กิวเมนต์เป็นเรเดียน |
11 | SINH (X) ส่งคืนค่าไฮเพอร์โบลิกไซน์ของอาร์กิวเมนต์เป็นเรเดียน |
12 | SQRT (X) ส่งคืนค่ารากที่สองของ X |
13 | TAN (X) ส่งกลับค่าแทนเจนต์ของอาร์กิวเมนต์เป็นเรเดียน |
14 | TANH (X) ส่งคืนค่าแทนเจนต์ไฮเพอร์โบลิกของอาร์กิวเมนต์เป็นเรเดียน |
ตัวอย่าง
โปรแกรมต่อไปนี้คำนวณตำแหน่งแนวนอนและแนวตั้ง x และ y ตามลำดับของโพรเจกไทล์หลังจากเวลาผ่านไป t -
โดยที่ x = ut cos a และ y = ut sin a - g t2 / 2
program projectileMotion
implicit none
! define constants
real, parameter :: g = 9.8
real, parameter :: pi = 3.1415927
!define variables
real :: a, t, u, x, y
!values for a, t, and u
a = 45.0
t = 20.0
u = 10.0
! convert angle to radians
a = a * pi / 180.0
x = u * cos(a) * t
y = u * sin(a) * t - 0.5 * g * t * t
write(*,*) 'x: ',x,' y: ',y
end program projectileMotion
เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังนี้ -
x: 141.421356 y: -1818.57861
ฟังก์ชั่นการสอบถามตัวเลข
ฟังก์ชันเหล่านี้ทำงานร่วมกับแบบจำลองจำนวนเต็มและเลขคณิตทศนิยม ฟังก์ชันจะส่งคืนคุณสมบัติของตัวเลขชนิดเดียวกับตัวแปร X ซึ่งอาจเป็นจริงและในบางกรณีจำนวนเต็ม
ซีเนียร์ No | ฟังก์ชั่นและคำอธิบาย |
---|---|
1 | DIGITS (X) ส่งคืนจำนวนหลักสำคัญของแบบจำลอง |
2 | EPSILON (X) จะส่งคืนจำนวนที่แทบจะเล็กน้อยเมื่อเทียบกับหนึ่ง กล่าวอีกนัยหนึ่งคือส่งคืนค่าที่น้อยที่สุดเช่น REAL (1.0, KIND (X)) + EPSILON (X) ไม่เท่ากับ REAL (1.0, KIND (X)) |
3 | HUGE (X) จะส่งกลับจำนวนมากที่สุดของแบบจำลอง |
4 | MAXEXPONENT (X) จะส่งกลับเลขชี้กำลังสูงสุดของแบบจำลอง |
5 | MINEXPONENT (X) จะส่งกลับเลขชี้กำลังขั้นต่ำของแบบจำลอง |
6 | PRECISION (X) จะคืนค่าความแม่นยำทศนิยม |
7 | RADIX (X) มันส่งคืนฐานของแบบจำลอง |
8 | RANGE (X) ส่งกลับช่วงเลขชี้กำลังทศนิยม |
9 | TINY (X) จะส่งคืนจำนวนบวกที่น้อยที่สุดของแบบจำลอง |
ฟังก์ชันการจัดการจุดลอยตัว
ซีเนียร์ No | ฟังก์ชั่นและคำอธิบาย |
---|---|
1 | EXPONENT (X) ส่งคืนส่วนเลขชี้กำลังของหมายเลขรุ่น |
2 | FRACTION (X) ส่งคืนส่วนที่เป็นเศษส่วนของตัวเลข |
3 | NEAREST (X, S) จะส่งคืนหมายเลขโปรเซสเซอร์ที่ใกล้เคียงที่สุดในทิศทางที่กำหนด |
4 | RRSPACING (X) จะส่งกลับซึ่งกันและกันของระยะห่างสัมพัทธ์ของหมายเลขรุ่นใกล้กับหมายเลขที่กำหนด |
5 | SCALE (X, I) มันคูณค่าจริงด้วยฐานเป็นเลขจำนวนเต็ม |
6 | SET_EXPONENT (X, I) มันส่งคืนส่วนเลขชี้กำลังของตัวเลข |
7 | SPACING (X) จะคืนค่าระยะห่างสัมบูรณ์ของหมายเลขรุ่นใกล้กับหมายเลขที่กำหนด |
ฟังก์ชั่นการจัดการบิต
ซีเนียร์ No | ฟังก์ชั่นและคำอธิบาย |
---|---|
1 | BIT_SIZE (I) ส่งคืนจำนวนบิตของโมเดล |
2 | BTEST (I, POS) การทดสอบบิต |
3 | IAND (I, J) ตรรกะ AND |
4 | IBCLR (I, POS) ล้างบิต |
5 | IBITS (I, POS, LEN) การสกัดบิต |
6 | IBSET (I, POS) ตั้งค่าบิต |
7 | IEOR (I, J) พิเศษหรือ |
8 | IOR (I, J) รวมหรือ |
9 | ISHFT (I, SHIFT) กะตรรกะ |
10 | ISHFTC (I, SHIFT [, SIZE]) กะวงกลม |
11 | NOT (I) ส่วนประกอบทางตรรกะ |
ฟังก์ชั่นตัวละคร
ซีเนียร์ No | ฟังก์ชั่นและคำอธิบาย |
---|---|
1 | ACHAR (I) ส่งคืนอักขระ Ith ในลำดับการเรียง ASCII |
2 | ADJUSTL (STRING) มันปรับสตริงด้านซ้ายโดยการลบช่องว่างที่นำหน้าและแทรกช่องว่างต่อท้าย |
3 | ADJUSTR (STRING) มันปรับสตริงได้อย่างถูกต้องโดยการลบช่องว่างต่อท้ายและแทรกช่องว่างที่นำหน้า |
4 | CHAR (I [, KIND]) มันจะส่งคืนอักขระ Ith ในลำดับการเรียงข้อมูลจำเพาะของเครื่อง |
5 | IACHAR (C) ส่งคืนตำแหน่งของอักขระในลำดับการเรียง ASCII |
6 | ICHAR (C) จะส่งคืนตำแหน่งของอักขระในลำดับการเรียงข้อมูลจำเพาะของเครื่อง (โปรเซสเซอร์) |
7 | INDEX (STRING, SUBSTRING [, BACK]) จะส่งคืนตำแหน่งซ้ายสุด (ขวาสุดถ้า BACK คือ. TRUE.) ตำแหน่งเริ่มต้นของ SUBSTRING ภายใน STRING |
8 | LEN (STRING) ส่งกลับความยาวของสตริง |
9 | LEN_TRIM (STRING) ส่งกลับความยาวของสตริงโดยไม่ต้องต่อท้ายอักขระว่าง |
10 | LGE (STRING_A, STRING_B) คำศัพท์ที่มากกว่าหรือเท่ากับ |
11 | LGT (STRING_A, STRING_B) ค่าเฉลี่ยมากกว่า |
12 | LLE (STRING_A, STRING_B) คำศัพท์น้อยกว่าหรือเท่ากับ |
13 | LLT (STRING_A, STRING_B) น้อยกว่า |
14 | REPEAT (STRING, NCOPIES) การเรียงต่อกันซ้ำ ๆ |
15 | SCAN (STRING, SET [, BACK]) จะคืนค่าดัชนีของตัวอักษรซ้ายสุด (ขวาสุดถ้า BACK เป็น. TRUE.) ของ STRING ที่เป็นของ SET หรือ 0 ถ้าไม่มีอยู่ |
16 | TRIM (STRING) ลบอักขระว่างต่อท้าย |
17 | VERIFY (STRING, SET [, BACK]) ตรวจสอบชุดของอักขระในสตริง |
ชนิดฟังก์ชั่น
ซีเนียร์ No | ฟังก์ชั่นและคำอธิบาย |
---|---|
1 | KIND (X) มันส่งกลับค่าพารามิเตอร์ชนิดชนิด |
2 | SELECTED_INT_KIND (R) มันส่งคืนชนิดของพารามิเตอร์ type สำหรับช่วงเลขชี้กำลังที่ระบุ |
3 | SELECTED_REAL_KIND ([P, R]) ค่าพารามิเตอร์ประเภทชนิดจริงให้ความแม่นยำและช่วง |
ฟังก์ชันลอจิก
ซีเนียร์ No | ฟังก์ชั่นและคำอธิบาย |
---|---|
1 | LOGICAL (L [, KIND]) แปลงระหว่างอ็อบเจ็กต์ประเภทตรรกะด้วยพารามิเตอร์ชนิดที่แตกต่างกัน |