Fortran - Nhân vật

Ngôn ngữ Fortran có thể coi các ký tự là ký tự đơn hoặc các chuỗi liền nhau.

Các ký tự có thể là bất kỳ ký hiệu nào được lấy từ bộ ký tự cơ bản, tức là từ các chữ cái, chữ số thập phân, dấu gạch dưới và 21 ký tự đặc biệt.

Hằng ký tự là một chuỗi ký tự có giá trị cố định.

Kiểu dữ liệu nội tại characterlưu trữ các ký tự và chuỗi ký tự. Độ dài của chuỗi có thể được chỉ định bởilenngười chỉ định. Nếu không có độ dài nào được chỉ định, nó là 1. Bạn có thể tham chiếu các ký tự riêng lẻ trong một chuỗi tham chiếu theo vị trí; ký tự bên trái nhất ở vị trí 1.

Tuyên bố nhân vật

Khai báo dữ liệu kiểu ký tự giống như các biến khác:

type-specifier :: variable_name

Ví dụ,

character :: reply, sex

bạn có thể gán một giá trị như,

reply = ‘N’ 
sex = ‘F’

Ví dụ sau minh họa việc khai báo và sử dụng kiểu dữ liệu ký tự:

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

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

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

Sự kết hợp của các ký tự

Toán tử nối //, nối các ký tự.

Ví dụ sau đây chứng minh điều này -

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

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

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

Một số chức năng ký tự

Bảng sau đây cho thấy một số hàm ký tự thường được sử dụng cùng với mô tả:

Sr.No Mô tả chức năng
1

len(string)

Nó trả về độ dài của một chuỗi ký tự

2

index(string,sustring)

Nó tìm vị trí của một chuỗi con trong một chuỗi khác, trả về 0 nếu không tìm thấy.

3

achar(int)

Nó chuyển đổi một số nguyên thành một ký tự

4

iachar(c)

Nó chuyển đổi một ký tự thành một số nguyên

5

trim(string)

Nó trả về chuỗi đã loại bỏ các khoảng trống ở cuối.

6

scan(string, chars)

Nó tìm kiếm "chuỗi" từ trái sang phải (trừ khi back = .true.) Cho lần xuất hiện đầu tiên của bất kỳ ký tự nào có trong "ký tự". Nó trả về một số nguyên cho vị trí của ký tự đó hoặc bằng 0 nếu không tìm thấy ký tự nào trong "ký tự".

7

verify(string, chars)

Nó quét "chuỗi" từ trái sang phải (trừ khi back = .true.) Để tìm lần xuất hiện đầu tiên của bất kỳ ký tự nào không có trong "ký tự". Nó trả về một số nguyên cho vị trí của ký tự đó hoặc bằng 0 nếu chỉ tìm thấy các ký tự trong "ký tự"

số 8

adjustl(string)

Nó còn lại biện minh cho các ký tự có trong "chuỗi"

9

adjustr(string)

Nó đúng minh chứng cho các ký tự có trong "chuỗi"

10

len_trim(string)

Nó trả về một số nguyên bằng độ dài của "string" (len (string)) trừ đi số khoảng trống ở cuối

11

repeat(string,ncopy)

Nó trả về một chuỗi có độ dài bằng "ncopy" nhân với độ dài của "chuỗi" và chứa các bản sao được nối "ncopy" của "chuỗi"

ví dụ 1

Ví dụ này cho thấy việc sử dụng index chức năng -

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

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

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

Ví dụ 2

Ví dụ này minh họa việc sử dụng trim chức năng -

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

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

Here isMr.   Rowan          Atkinson       
 Here isMr. Rowan Atkinson

Ví dụ 3

Ví dụ này minh họa việc sử dụng achar chức năng -

program testingChars
implicit none

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

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

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

Kiểm tra Thứ tự Lexical của các ký tự

Các hàm sau xác định chuỗi ký tự từ vựng:

Sr.No Mô tả chức năng
1

lle(char, char)

So sánh liệu ký tự đầu tiên nhỏ hơn hoặc bằng ký tự thứ hai

2

lge(char, char)

So sánh liệu ký tự đầu tiên lớn hơn hoặc bằng ký tự thứ hai

3

lgt(char, char)

So sánh liệu ký tự đầu tiên có lớn hơn về mặt từ vựng so với ký tự thứ hai hay không

4

llt(char, char)

So sánh xem ký tự đầu tiên có ít từ vựng hơn ký tự thứ hai hay không

Example 4

Hàm sau thể hiện việc sử dụng:

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

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

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