Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 3_3.doc
Скачиваний:
33
Добавлен:
13.03.2016
Размер:
158.72 Кб
Скачать

3.12. Символьный тип данных

Символьный тип данных используется для хранения и обработки последовательностей символов из компьютерного алфавита – строк символов. Один символ занимает один байт памяти. Его внутреннее представление соответствует используемой таблице кодировки. В системах программирования в среде ОС MS Windows это код ASCII.

Символьная константа – строка, заключенная в апострофы или двойные кавычки. Например: `constant` или ``constant`` . Если внутри строки используется символ апострофа или кавычек, то ограничитель должен быть другим символом. Например: ``It`s constant``.

Символьные переменные объявляются оператором character:

Character [([len=]длина)] список переменных

Пример:

character (len=20) str1, str2 или то же самое:

character (20) str1, str2

character s

В последнем случае s – односимвольная величина.

Длина символьного объекта (константы или переменной) находится в пределах от 0 до 32767. Для указания длины можно использовать именованную константу. Например:

integer, parameter:: n=10

character (len=n) word

character (len=2*n) longword

Строковую переменную можно инициализировать при объявлении:

character (len=10):: st=’price’

В результате значение переменной st станет следующим: ‘price^^^^^`. В конце добавятся 5 хвостовых пробелов. Если же переменную st описать следующим образом:

character (len=3):: st=’price’ ,

то в переменную войдут лишь первые три символа: `pri`.

Символьная именованная константа объявляется с атрибутом PARAMETR. Например: character (10), parameter:: day=`Sunday`. Константа получит 4 хвостовых пробела. Если же константу описать так: character (*), parameter:: day=`Sunday`, то ее длина будет равна 6, т.е. длине константы.

Выделение подстроки. Символы в строке нумеруются начиная с единицы. Пусть объявлена переменная:

character (8):: St=’COMPUTER’

Внутренняя нумерация символов в ней будет следующей:

1

2

3

4

5

6

7

8

C

O

M

P

U

T

E

R

Подстрока – это часть последовательно расположенных символов строки. Формат идентификации подстроки следующий:

Имя_строки([first]:[last]) ,

где firstномер первого символа подстроки, last – номер последнего символа подстроки. По умолчанию first=1, last = длине строки. Например: St(1:5) – первые 5 символов строки (‘COMPU’). То же самое обозначает St(:5). St(4:8) равносильно обозначению St(4:). Один символ рассматривается как подстрока с совпадающими значениями first и last. Например: St(1:1) – первый символ, St(5:5) – пятый символ и т.д.

Массивы строкэто последовательность пронумерованных строк. Приведем примеры описания массива строк.

character(100), dimension(50)::spisok - массив из 50 строк длиной 100 символов. Тот же самый объект можно описать так:

character(100) spisok(50).

Далее в программе могут использоваться следующие обозначения:

spisok(1) – первая строка,

spisok(20) – 20-я строка,

spisok(5)(1:1) – первый символ пятой строки,

spisok(100)(:20) – первые 20 символов 100-й строки.

Функции определения длины строки. Различаются понятия: длина строки по описанию и длина строки по присвоенному значению. Вторая величина не учитывает хвостовых пробелов.

LEN(string) – функция определения длины строки по описанию;

LEN_TRIM(string) – функция определения длины строки без хвостовых пробелов.

Примеры использования функций:

character (10):: st=’COMPUTER’

print *, len(st) ! результат: 10

print *, len_trim(st) ! результат: 8

Пример 1: подсчитать число букв ‘a’ в данной строке.

character (20) str

print *, ‘введите строку:’

read *, str

k=0

do i=1, len_trim(str)

if(str(i:i)= = ‘a’) k=k+1

enddo

print *,’k=’, k

end

Операция конкатенации – объединение строк. Знак конкатенации – // (два слэша):

строка // строка

В результате операции получается строка с суммарной длиной операндов. Символьный оператор присваивания имеет вид:

символьная переменная = символьное выражение

Например:

character(20) st1

character(9):: st2=’Microsoft’, st3=’Office’

st1=st2//’_’//st3 !результат: Microsoft_Office

Пример 2. Из строки S выбрать все цифры и построить из них строку S1, сохраняя последовательность.

character (10) S, S1

integer k,i

read *,S ! вводим: ab1c23d4

k=1

do i=1,len_trim(S)

if (S(i:i)>=’0’ .and. S(i:i)<=’9’) then

S1(k:k)=S(i:i)

k=k+1

endif

enddo

print *, S1

end

Встроенные функции обработки символьных данных

Помимо функций LEN и LEN_TRIM, которые описывались выше, в Фортране имеется еще ряд функций работы с символьными величинами. Некоторые из них описаны в таблице. Замечание: С обозначает символьную величину, I – целую величину, STR – строку.