Fortran - ตัวละคร

ภาษา Fortran สามารถถือว่าอักขระเป็นอักขระเดี่ยวหรือสตริงที่ต่อเนื่องกัน

อักขระอาจเป็นสัญลักษณ์ใด ๆ ที่นำมาจากชุดอักขระพื้นฐานเช่นจากตัวอักษรตัวเลขทศนิยมขีดล่างและอักขระพิเศษ 21 ตัว

ค่าคงที่ของอักขระคือสตริงอักขระที่มีค่าคงที่

ชนิดข้อมูลที่แท้จริง characterเก็บอักขระและสตริง ความยาวของสตริงสามารถระบุได้โดยlenตัวระบุ หากไม่มีการระบุความยาวก็คือ 1. คุณสามารถอ้างถึงอักขระแต่ละตัวภายในสตริงที่อ้างอิงตามตำแหน่ง อักขระทางซ้ายสุดอยู่ที่ตำแหน่ง 1

การประกาศตัวละคร

การประกาศข้อมูลประเภทอักขระจะเหมือนกับตัวแปรอื่น ๆ -

type-specifier :: variable_name

ตัวอย่างเช่น,

character :: reply, sex

คุณสามารถกำหนดค่าเช่น

reply = ‘N’ 
sex = ‘F’

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการประกาศและการใช้ชนิดข้อมูลอักขระ -

program hello
implicit none

   character(len = 15) :: surname, firstname 
   character(len = 6) :: title 
   character(len = 25)::greetings
   
   title = 'Mr. ' 
   firstname = 'Rowan ' 
   surname = 'Atkinson'
   greetings = 'A big hello from Mr. Bean'
   
   print *, 'Here is ', title, firstname, surname
   print *, greetings
   
end program hello

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -

Here is Mr. Rowan Atkinson       
A big hello from Mr. Bean

การต่ออักขระ

ตัวดำเนินการเชื่อมต่อ // เชื่อมต่ออักขระ

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงสิ่งนี้ -

program hello
implicit none

   character(len = 15) :: surname, firstname 
   character(len = 6) :: title 
   character(len = 40):: name
   character(len = 25)::greetings
   
   title = 'Mr. ' 
   firstname = 'Rowan ' 
   surname = 'Atkinson'
   
   name = title//firstname//surname
   greetings = 'A big hello from Mr. Bean'
   
   print *, 'Here is ', name
   print *, greetings
   
end program hello

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -

Here is Mr.Rowan Atkinson       
A big hello from Mr.Bean

ฟังก์ชั่นตัวละครบางอย่าง

ตารางต่อไปนี้แสดงฟังก์ชันอักขระที่ใช้บ่อยพร้อมกับคำอธิบาย -

ซีเนียร์ No ฟังก์ชั่นและคำอธิบาย
1

len(string)

ส่งกลับความยาวของสตริงอักขระ

2

index(string,sustring)

มันกำหนดตำแหน่งของสตริงย่อยในสตริงอื่นส่งคืน 0 หากไม่พบ

3

achar(int)

จะแปลงจำนวนเต็มเป็นอักขระ

4

iachar(c)

มันแปลงอักขระเป็นจำนวนเต็ม

5

trim(string)

ส่งคืนสตริงโดยลบช่องว่างต่อท้ายออก

6

scan(string, chars)

โดยจะค้นหา "สตริง" จากซ้ายไปขวา (ยกเว้น back = .true.) สำหรับการเกิดครั้งแรกของอักขระใด ๆ ที่อยู่ใน "ตัวอักษร" จะส่งคืนจำนวนเต็มที่ให้ตำแหน่งของอักขระนั้นหรือเป็นศูนย์หากไม่พบอักขระใดใน "ตัวอักษร"

7

verify(string, chars)

มันจะสแกน "สตริง" จากซ้ายไปขวา (ยกเว้น back = .true.) สำหรับการเกิดครั้งแรกของอักขระใด ๆ ที่ไม่มีอยู่ใน "ตัวอักษร" จะส่งคืนจำนวนเต็มที่ให้ตำแหน่งของอักขระนั้นหรือเป็นศูนย์หากพบเฉพาะอักขระใน "ตัวอักษร"

8

adjustl(string)

เหลือเพียงแสดงอักขระที่มีอยู่ใน "สตริง"

9

adjustr(string)

มันแสดงให้เห็นถึงตัวอักษรที่มีอยู่ใน "สตริง" อย่างถูกต้อง

10

len_trim(string)

ส่งคืนจำนวนเต็มเท่ากับความยาวของ "string" (len (string)) ลบด้วยจำนวนช่องว่างต่อท้าย

11

repeat(string,ncopy)

ส่งคืนสตริงที่มีความยาวเท่ากับ "ncopy" คูณความยาวของ "สตริง" และมีสำเนา "สตริง" ที่ต่อกัน "ncopy"

ตัวอย่าง 1

ตัวอย่างนี้แสดงการใช้ไฟล์ index ฟังก์ชัน -

program testingChars
implicit none

   character (80) :: text 
   integer :: i 
   
   text = 'The intrinsic data type character stores characters and   strings.'
   i=index(text,'character') 
   
   if (i /= 0) then
      print *, ' The word character found at position ',i 
      print *, ' in text: ', text 
   end if
   
end program testingChars

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -

The word character found at position 25
in text : The intrinsic data type character stores characters and strings.

ตัวอย่าง 2

ตัวอย่างนี้แสดงให้เห็นถึงการใช้ไฟล์ trim ฟังก์ชัน -

program hello
implicit none

   character(len = 15) :: surname, firstname 
   character(len = 6) :: title 
   character(len = 25)::greetings
   
   title = 'Mr.' 
   firstname = 'Rowan' 
   surname = 'Atkinson'
   
   print *, 'Here is', title, firstname, surname
   print *, 'Here is', trim(title),' ',trim(firstname),' ', trim(surname)
   
end program hello

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -

Here isMr.   Rowan          Atkinson       
 Here isMr. Rowan Atkinson

ตัวอย่างที่ 3

ตัวอย่างนี้แสดงให้เห็นถึงการใช้ achar ฟังก์ชัน -

program testingChars
implicit none

   character:: ch
   integer:: i
   
   do i = 65, 90
      ch = achar(i)
      print*, i, ' ', ch
   end do
   
end program testingChars

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -

65  A
66  B
67  C
68  D
69  E
70  F
71  G
72  H
73  I
74  J
75  K
76  L
77  M
78  N
79  O
80  P
81  Q
82  R
83  S
84  T
85  U
86  V
87  W
88  X
89  Y
90  Z

การตรวจสอบลำดับคำศัพท์ของอักขระ

ฟังก์ชันต่อไปนี้กำหนดลำดับของคำศัพท์ -

ซีเนียร์ No ฟังก์ชั่นและคำอธิบาย
1

lle(char, char)

เปรียบเทียบว่าอักขระตัวแรกมีศัพท์น้อยกว่าหรือเท่ากับตัวที่สองหรือไม่

2

lge(char, char)

เปรียบเทียบว่าอักขระตัวแรกมีค่ามากกว่าหรือเท่ากับตัวที่สองหรือไม่

3

lgt(char, char)

เปรียบเทียบว่าอักขระตัวแรกมีค่ามากกว่าตัวที่สองหรือไม่

4

llt(char, char)

เปรียบเทียบว่าอักขระตัวแรกมีศัพท์น้อยกว่าตัวที่สองหรือไม่

Example 4

ฟังก์ชันต่อไปนี้แสดงให้เห็นถึงการใช้งาน -

program testingChars
implicit none

   character:: a, b, c
   a = 'A'
   b = 'a'
   c = 'B'
   
   if(lgt(a,b)) then
      print *, 'A is lexically greater than a'
   else
      print *, 'a is lexically greater than A'
   end if
   
   if(lgt(a,c)) then
      print *, 'A is lexically greater than B'
   else
      print *, 'B is lexically greater than A'
   end if  
   
   if(llt(a,b)) then
      print *, 'A is lexically less than a'
   end if
   
   if(llt(a,c)) then
      print *, 'A is lexically less than B'
   end if
   
end program testingChars

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -

a is lexically greater than A
B is lexically greater than A
A is lexically less than a
A is lexically less than B