Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Тип Character

Материал взят из проекта Lahey: http://www.lahey.com/index.html, http://www.lahey.com/other.htm). | Возможности расширения языка | Вид семейства | Управление программой | Выражения для массивов | Секция (вырезка) массива | Модули и процедуры | Более подробная информация | Массивы и производные типы | Оператор и конструкция IF |


Читайте также:
  1. A)Read the following and copy out the adjectives describing character.
  2. ADJECTIVES APPLIED TO LITERARY CHARACTERS
  3. American English and its main characteristics
  4. Analysis of Major Characters
  5. APPEARANCE AND CHARACTER
  6. Appearance and character
  7. B-tree index basic characteristics

 

В предыдущих разделах были введены встроенные численные типы REAL и INTEGER. Третий встроенный тип CHARACTER представлен в данном разделе. Этот тип используется для манипуляции с данными, представляющими слова и предложения.

В языке Fortran строки имеют длину, индивидуальные символы могут вызываться по позиции (самый левый символ занимает позицию № 1). Как и с численными типами, программист может специфицировать литеральные константы встроенного типа character как описано ниже.

 

Константы Character

 

Пример ниже взят из программы, которая вычисляет площадь окружности. Программа читает значение радиуса, выводит площадь окружности. Без приглашения для пользователя вид такой программы очень неудобен - так как не обозначено, что именно нужно вводить. Включение символьных констант (или литералов) в вывод делает программу для пользователя более понятной. Например:

WRITE (*,*) `Пожалуйста, напечатайте значение радиуса окружности'

READ (*,*) radius

area = pi*radius*radius

WRITE (*,*) `Площадь окружности с радиусом `, radius, &

` равна `, area

Символы, которые появляются между двумя апострофами, это символы константы и они появятся на экране:

 

Пожалуйста, напечатайте значение радиуса окружности'

12.0

Площадь окружности с радиусом 12.0 равна 452.38925

 

Символы двойной кавычки могут быть использованы для определения символьных литералов. Если строка символов содержит символы ограничителей (апострофы или двойные кавычки), то другое может быть использовано в качестве ограничителей. Тем не менее, если строка содержит оба символа ограничителя или программист хочет всегда определиять строку, используя тот же символ, что и ограничитель, то ограничитель может быть задан в строке как два близких ограничителя (апострофы или двойные кавычки, как подойдет). Эти, что показаны как одиночный символ.

 

"Эта строка содержит апостроф '."

' Эта строка содержит двойные кавычки ".'

" Эта строка содержит апостроф ' и двойные кавычки ""."

 

Это могло бы появиться в выводе как:

 

Эта строка содержит апостроф '.

Эта строка содержит двойные кавычки ".

Эта строка содержит апостроф ' и двойные кавычки ".

 

Символьные переменные

 

Переменные REAL и INTEGER. Следующий оператор объявляет две символьные перменные, каждая из которых содержит один символ:

CHARACTER:: yesorno, sex

 

Значение, присваиваемое символьной переменной в форме символьной константы, таким образом:

yesorno = 'N'

sex = 'F'

 

Символьные переменные, содержащие несколько символов, известны как строки. Например, чтобы запомнить персональное имя, можно сделать следующее определение и присваивание:

CHARACTER(LEN=12):: surname, firstname

CHARACTER(LEN=6):: initials, title

title = 'Prof.'

initials = 'fjs'

firstname = 'Fred'

surname = 'Bloggs'

Заметим, что все определены с указанием длины, чтобы присваивать литеральные константы. Переменные, которые имеют непривычные символы, заполнены пробелами до конца. Если переменная не достаточной длины, чтобы содержать символы, присваиваемые ей, то могут быть использованы самые левые, а избыток отсечен. Например:

title = 'Professor'

 

будет эквивалентно оператору:

title = 'Profes'

 

Общая форма объявленияя символьной переменной такова:

 

CHARACTER [(LEN=)] [,attributes]:: name

 

Манипуляции с символами

 

Конкатенация

 

Арифметические операции, такие как + и -, могут быть использованы и с символьными переменными. Только для символьных определена операция конкатенации со знаком //. Она может быть применена для объединения двух строк:

 

CHARACTER (len=24):: name

CHARACTER (len=6):: surname

surname = 'Bloggs'

name = 'Prof ' // ' Fred ' // surname

 

Как с символьными литералами, если выражение, использующее операцию //, превышает длину переменной, то лишние символы справа отсекаются, и если слишком мало символов специфицировано, то символьные позиции справа заполняются пробелами.

 

Подстроки

 

Подстрока это часть большой символьной строки. Символы в строке могут быть указаны с помощью позиции в строке, начиная от первого самого левого символа.

 

CHARACTER (LEN=7):: lang

lang = 'Fortran'

WRITE (6,*) lang(1:1), lang(2:2), lang(3:4), lang(5:7)

 

Приведет к следующему выводу на экран:

 

Fortran

 

Подстрока специфицирована с помощью начальной и конечной позиции (start-position: end-position). Если значение для начальной позиции start-position опущено, берется 1 и если значение конечной позиции end-position опущено, берется максимальная длина строки. Так, lang(:3) эквивалентно lang(1:3) и lang(5:) эквивалентно lang(5:7).

 

Значения start-position и end-position должны быть целыми или выражениями, имеющими целое значение. Значение start-position должно быть >= 1, значение end-position <= длина строки. Если start-position > максимальной длины или end-position, то в результате получится строка нулевой длины.

 

Встроенные функции

 

О функциях пойдет речь более глубоко позднее в курсе, как бы ни было это полезно ввести на этой ранней стадии. Встроенные функции представляют действия, которые определены в стандарте языка и функции, табулированные ниже, относятся к символьным строкам. Эти встроенные функции представляют несколько общих, требующих символьных манипуляций:

 

•LEN(string) возвращает длину символьной строки

•INDEX(string,sustring) находит место подстроки в другой строке, возвращает 0, если не находит

•CHAR(int) преобразует целое в символ

•ICHAR(c) преобразует символ в целое

•TRIM(string) возвращает строку с завершающими пробелами, перемещенными.

 

Преобразование символьных и целых основаны на том, что доступнные символы представляют собой последовательность, а целые значения представляют позицию в последовательности набора символов. Поскльку они являются некоторой позицией в последовательности набора символов и к тому же машинно-зависимы, то соответсвующие целые значения здесь не обсуждаются. Тем не менее возможно установить, чтобы независимо от фактическую последовательность, имело место следующее:

 

INTEGER:: i

CHARACTER:: ch

...

i=ICHAR(CHAR(i))

ch=CHAR(ICHAR(ch))

 

Ниже пример того, как могут быть использованы встроенные функции:

 

CHARACTER(len=12):: surname, firstname

INTEGER:: length, pos

...

length = LEN(surname)! длина=12

firstname = 'Walter'

pos = INDEX(firstname, 'al')! pos=2

firstname = 'Fred'

pos = INDEX(firstname, 'al')! pos=0

length = LEN(TRIM(firstname))! длина=4


Дата добавления: 2015-11-14; просмотров: 70 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Спецификации или объявления| Логические выражения

mybiblioteka.su - 2015-2024 год. (0.01 сек.)