trains_hr.gif
 


В ПОМОЩЬ СТУДЕНТУ И ШКОЛЬНИКУ

 


Горбачев Л.И. Основы программирования в среде Turbo Pascal.

[НАЗАД]    [ДАЛЕЕ]

2. Строки.

   Строка - это последовательность символов кодовой таблицы ПЭВМ. При использовании в выражениях строка заключается в апострофы. Количество символов в строке (длина строки) может динамически изменяться от 0 до 255.

   2.1. Строковые константы и переменные.

   Для определения данных строкового типа используется служебное слово string, за которым может следовать заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если это значение не указывается, то по умолчанию длина строки равна 255 байт (символов).

   Данные типа string (строки символов), как и числовые данные, подразделяются на константы и переменные.

   Строковые константы - это последовательность символов, заключенных в апострофы. Например, 'ABC 3A', 'Пример 2'.

   Строковые константы могут быть описаны в разделе констант, например: const Str = 'STROKA'; C = 'СТРОКА';

   Турбо-Паскаль реализует переменные типа string, которые являются расширением стандарта языка Паскаль.

   Описание строковых переменных имеет вид:
type имя_типа = string[N];
var имя_перем : имя_типа; или var имя_перем : string[N];

   Здесь N - целая константа, указывающая максимальную длину строки (количество символов в строке). В Турбо Паскале 1 <= N <= 255.

Пример:
type Line : string[80]; var MyLine : Line;

   Возможно также описание вида: var имя_перем : string; которое определяет строковую переменную максимально возможной длины (в 255 символов).

Пример:
Const Adress = 'ул. Королева, 10'; { Строковая константа }
type Flot = string[125];
var FStr: Flot; { Описание с заданием типа }
St1: string; { По умолчанию длина строки равна 255 }
St2, St3: string[50];
Name: string[280]; { Ошибка, длина Name больше 255 байт }

   Для определения объема памяти в байтах, требуемой для размещения строки, к значению ее максимальной длины прибавляется 1. Например, для размещения в памяти переменных FStr, St1, St2 требуется соответственно 126, 255 и 51 байт. Дополнительный байт расположен в самом начале строки (имеет нулевой номер) и содержит значение текущей длины строки.

   В Турбо Паскале переменные типа string[N] занимают N+1 байт. Так, в приведенном примере St3 будет занимать 51 байт.

   Строковые переменные аналогичны массивам типа char. Их отличием является то, что число символов (или текущая длина строки) может динамически меняться в интервале от нуля до заданного верхнего значения N. Как и в массивах, к отдельным символам строки можно обратиться с помощью индексов в квадратных скобках: St1[1], St2[8]. Нулевой индекс определяет позицию, в которой содержится текущая длина строки.

   Турбо Паскаль допускает также использование типизованных констант строкового типа:
const S1: string[6] = 'строка';
S2: string[2] = #13#10;
S3: string[5] = '0';

   2.2. Операции над строковыми данными.

 

   Строковые данные могут участвовать в строковых выражениях, состоящих из строковых констант, переменных типа string и char, знаков операций и встроенных функций. При этом над строковыми данными допустимы следующие операции: присваивание, сцепление (конкатенация) и отношения.

      2.2.1. Операция присваивания.

   Общий вид этой операции следующий:
имя_строковой_переменной := строковое_выражение;

Например, S1 := 'D'; S2 := 'AbCd'; S1 := S2;

   Если длина строкового выражения превышает максимальную длину строковой переменной, то все лишние символы справа отбрасываются.

Пример:
program Prim; {В результате выполнения этой программы получим: C =C.}
uses CRT;
var Str: string[5];
Cr, C: char;
begin
ClrScr;
Str := 'ABCD';
C := Str[3];
WriteLn(' C =', C);
Cr := ReadKey;
end.

   Ввод и вывод значений строковых переменных осуществляется без апострофов. Например, для выполнения оператора ReadLn(Str) во входном файле необходимо набрать ABCD, начиная с 1-й позиции.
ЗАМЕЧАНИЕ: Для исключения ошибок ввода строковых переменных всегда используйте оператор ReadLn (вместо Read).

      2.2.2. Операция сцепления (конкатенация).

   Эта операция применяется для сцепления нескольких строк в одну результирующую строку. Для обозначения операции сцепления в Турбо Паскале используется знак "+".
'AB' + 'CD'='ABCD'
'кот' + ' ' + 'усатый'='кот усатый'

Пример: Программа, иллюстрирующая операцию конкатенации.
program Szepka; {Пусть была введена строка ЛЕВ+.После выполнения этой программы получим: S2 = ЛЕВS1+}
var C : char;
S1 : string[3];
S2 : string[7];
begin
ReadLn(S1, C);
S2 := S1 + 'S1' + C;
Write('S2 = ', S2)
end.

Пример: Программа, с помощью которой на дисплей выводятся строчные буквы русского алфавита.
program RusAlfavit;
uses CRT;
var Str : string[32]; I : integer;
begin
Clrscr;
Str := '';
for I := 1 to 32 do Str := Str + Chr(Ord('А') + I - 1);
WriteLn(Str);
repeat until KeyPressed
end.

Сделаем незначительные поправки:
1) замените в строке Str : string[32] число 32 на 26;
2) замените в строке for I := 1 to 32 do число 32 на 26;
3) замените в строке Str := Str + Chr(Ord('А') + I - 1); русскую букву А на латинскую букву A, Вы получите распечатку прописных букв латинского алфавита.

      2.2.3. Операции отношения.

   Операции отношения (=, <, >, <>, >=, <=) проводят сравнение двух строковых операндов и имеют более низкий приоритет, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается большей, в которой первый несовпадающий символ имеет больший номер в таблице ASCII.

   Результат выполнения операций отношения над строковыми операндами всегда имеет логический тип и принимает значение True (истинно) или False (ложно). Строки считаются равными, если полностью совпадают по текущей (а не по объявленной) длине и содержат одни и те же символы. Например, в результате выполнения программы
program Stroka;
var S1 : string[3];
S2 : string[10];
begin
S1 := 'ABC';
S2 := S1;
if S1 = S2 then WriteLn('S1 равно S2')
else WriteLn('S1 не равно S2');
end.

   Следует также учитывать, что одинаковые прописные и строчные буквы в строках определяют разные значения строковых переменных. Так, если S1 := 'ABC', а S2 := 'Abc', то S1 не равно S2.

   Для сравнения значений строковых типов применяются следующие правила:
- более короткая строка всегда меньше более длинной;
- если длины сравниваемых строк равны, то происходит поэлементное сравнение символов этих строк с учетом лексикографической упорядоченности значений стандартного символьного типа char.

[НАЗАД]    [ДАЛЕЕ]


Главная
Новости
TurboPascal
Учебное пособие
Лекции
Исходники
Математика
Книги
Лекции
Шпоры
ЦТ и ЕГЭ
Физика

Книги

Шпоры
ЦТ и ЕГЭ

Литература

Сочинения

Краткие содержания

Другое
Мой родной край
Фотогалерея
Форум
Ссылки

Гостевая






 

                                        © Copyright(c) 2004 Amro Group. All rights reserved

 

Hosted by uCoz