Учебники

Фортран — Персонажи

Язык Фортрана может обрабатывать символы как отдельные символы или смежные строки.

Символами могут быть любые символы, взятые из базового набора символов, т. Е. Из букв, десятичных цифр, подчеркивания и 21 специального символа.

Символьная константа — это символьная строка с фиксированным значением.

Внутренний символ типа данных хранит символы и строки. Длина строки может быть указана спецификатором len . Если длина не указана, она равна 1. Вы можете ссылаться на отдельные символы в строке, ссылаясь на позицию; самый левый символ находится в позиции 1.

Декларация персонажа

Объявление данных символьного типа аналогично другим переменным —

type-specifier :: variable_name

Например,

character :: reply, sex

Вы можете назначить значение, как,

reply = N 
sex = F

В следующем примере демонстрируется объявление и использование символьного типа данных —

Live Demo

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

Конкатенация персонажей

Оператор конкатенации //, объединяет символы.

Следующий пример демонстрирует это —

Live Demo

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

Некоторые функции персонажа

В следующей таблице приведены некоторые часто используемые символьные функции вместе с описанием —

Sr.No Описание функции
1

Len (строка)

Возвращает длину строки символов

2

Индекс (строка, sustring)

Он находит расположение подстроки в другой строке, возвращает 0, если не найден.

3

Ахар (целое)

Преобразует целое число в символ

4

iachar (с)

Преобразует символ в целое число

5

подрезать (строка)

Возвращает строку с удаленными конечными пробелами.

6

сканирование (строка, символы)

Он ищет «строку» слева направо (если только не = = .true.) Для первого вхождения любого символа, содержащегося в «символах». Возвращает целое число, указывающее позицию этого символа, или ноль, если ни один из символов в «символах» не был найден.

7

проверить (строка, символы)

Он сканирует «строку» слева направо (если только не задано = .true.) Для первого вхождения любого символа, не содержащегося в «символах». Возвращает целое число, указывающее позицию этого символа, или ноль, если были найдены только символы в «символах»

8

adjustl (строка)

Выравнивает по левому краю символы, содержащиеся в «строке»

9

adjustr (строка)

Правильно оправдывает символы, содержащиеся в «строке»

10

len_trim (строка)

Возвращает целое число, равное длине строки (len (string)) минус количество конечных пробелов

11

повтор (строка, ncopy)

Он возвращает строку с длиной, равной «ncopy», умноженной на длину «строки», и содержащей «ncopy» сцепленные копии «строки»

Len (строка)

Возвращает длину строки символов

Индекс (строка, sustring)

Он находит расположение подстроки в другой строке, возвращает 0, если не найден.

Ахар (целое)

Преобразует целое число в символ

iachar (с)

Преобразует символ в целое число

подрезать (строка)

Возвращает строку с удаленными конечными пробелами.

сканирование (строка, символы)

Он ищет «строку» слева направо (если только не = = .true.) Для первого вхождения любого символа, содержащегося в «символах». Возвращает целое число, указывающее позицию этого символа, или ноль, если ни один из символов в «символах» не был найден.

проверить (строка, символы)

Он сканирует «строку» слева направо (если только не задано = .true.) Для первого вхождения любого символа, не содержащегося в «символах». Возвращает целое число, указывающее позицию этого символа, или ноль, если были найдены только символы в «символах»

adjustl (строка)

Выравнивает по левому краю символы, содержащиеся в «строке»

adjustr (строка)

Правильно оправдывает символы, содержащиеся в «строке»

len_trim (строка)

Возвращает целое число, равное длине строки (len (string)) минус количество конечных пробелов

повтор (строка, ncopy)

Он возвращает строку с длиной, равной «ncopy», умноженной на длину «строки», и содержащей «ncopy» сцепленные копии «строки»

Пример 1

В этом примере показано использование функции индекса

Live Demo

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

Этот пример демонстрирует использование функции обрезки

Live Demo

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

Этот пример демонстрирует использование функции ачар

Live Demo

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

Проверка лексического порядка символов

Следующие функции определяют лексическую последовательность символов —

Sr.No Описание функции
1

lle (char, char)

Сравнивает, является ли первый символ лексически меньше или равен второму

2

lge (char, char)

Сравнивает, является ли первый символ лексически большим или равным второму

3

ЛГТ (символ, символ)

Сравнивает, является ли первый символ лексически большим, чем второй

4

llt (char, char)

Сравнивает, является ли первый символ лексически меньше, чем второй

lle (char, char)

Сравнивает, является ли первый символ лексически меньше или равен второму

lge (char, char)

Сравнивает, является ли первый символ лексически большим или равным второму

ЛГТ (символ, символ)

Сравнивает, является ли первый символ лексически большим, чем второй

llt (char, char)

Сравнивает, является ли первый символ лексически меньше, чем второй

Пример 4

Следующая функция демонстрирует использование —

Live Demo

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

Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —