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