- •Оглавление
- •Тема1 41
- •Тема 2 Условный оператор, оператор выбора 41
- •Тема 4. Строки и символы 43
- •Предисловие
- •1 Основы построения программы на языке Турбо-Паскаль
- •1.1 Алфавит языка и специфика его использования
- •1.2 Этапы решения задачи на эвм
- •1.3 Общая структура программы на языке Паскаль
- •1.4 Выражения
- •1.4.1 Арифметические выражения
- •1.4.2 Логические выражения
- •1.5 Стандартные функции
- •2 Типы данных
- •2.1 Стандартные типы данных
- •2.1.1 Целочисленные типы
- •2.1.2 Логический тип (булевый тип).
- •2.1.3 Символьный тип
- •2.1.4 Перечисляемый тип
- •2.1.5 Интервальный тип
- •2.1.6 Вещественный тип
- •2.2 Объявление констант
- •2.3 Объявление переменных
- •3 Алгоритмизация вычислительных процессов
- •3.1. Понятие алгоритма
- •3.2 Операторы для записи линейных процессов
- •3.2.1 Оператор присваивания
- •3.2.2 Оператор ввода числовых данных
- •3.2.3 Оператор вывода числовых данных
- •3.2.4 Вывод числовых данных с форматом
- •4 Разветвляющиеся вычислительные процессы
- •4.1 Типы разветвляющихся алгоритмов
- •4.2 Операторы перехода
- •4.2.1 Условный оператор
- •4.2.3 Оператор выбора
- •4.2.4 Метка. Оператор перехода
- •5 Итерационные циклические процессы
- •5.1 Типы циклических процессов
- •5.2 Итерационные циклические процессы
- •5.2.1 Оператор цикла с предварительным условием
- •5.2.2 Оператор цикла с последующим условием
- •5.3 Оператор цикла с параметром
- •6 Структурированные типы данных
- •6.1 Массивы
- •6.2 Записи
- •6.2.1 Оператор присоединения
- •6.3 Множества
- •6.4 Строки
- •6.4.1 Основные операции
- •7 Подпрограммы
- •7.1 Процедуры
- •7.2 Функции
- •8 Работа с файлами
- •8.1 Инициация файла
- •8.2 Процедуры и функции для работы с файлами
- •8.3 Текстовые файлы
- •8.4 Типизированные файлы
- •8.5 Нетипизированные файлы
- •9 Указатели и динамическая память
- •9.1 Выделение и освобождение динамической памяти
- •10 Модули
- •10.1 Компиляция модулей
- •10.2 Стандартные модули
- •10.2.1 Модуль crt
- •10.2.2 Модуль Graph
- •10.2.3 Модуль Overlay
- •Индивидуальные задания
- •Тема 2 Условный оператор, оператор выбора
- •Тема 3.
- •Задание в - обработка числовых последовательностей
- •Тема 4. Строки и символы
- •Тема 5. Массивы
- •Тема 6. Файлы
- •Тестовые задания
- •Электронные образовательные интернет-ресурсы Дистанционные курсы
- •Электронные учебники
6.4 Строки
Турбо - Паскаль предоставляет средства для работы с данными строкового типа. Строковый тип данных представляет собой цепочку символов. Длина цепочки может изменяться от 0 до 255. Для определения строкового типа используется служебное слово STRING, за которым в квадратных скобках указывается максимальная длина строки
Например:
Type
line = string[25];
Var
mline : line;
...
В данном примере переменная mline представляет собой последовательность, включающую до 25 символов, причем каждый символ имеет стандартный тип CHAR.
6.4.1 Основные операции
Для строковых типов данных определена операция "конкатенация", обозначаемая символом '+'. Смысл операции заключается в формировании новой строки. Динамическая длина сформированной строки равна сумме символов строк-операндов, а ее значение равно последовательности символов исходных строк.
Например:
Var
str1, str2, st : string[10];
Begin
str1 := 'Турбо - ';
str2 := 'Паскаль';
st := str1 + str2;
WriteLn(st)
End.
В результате выполнения программы будет на экране отображена текстовая строка: 'Турбо-Паск'.
Кроме операции конкатенации над значениями строковых типов разрешены операции сравнения < , <=, > , >=, = , <>, IN, при выполнении которых действуют следующие правила:
а) более короткая строка всегда меньше более длинной;
б) если длины сравниваемых строк равны, то происходит поэлементное сравнение символов этих строк с учетом лексикографической упорядоченности значений стандартного символьного типа CHAR.
Например: 'a' < 'б', т.к. ORD('a') < ORD('б');
в) компаратор IN определяет вхождение левого операнда в правый. Если левый операнд входит в правый, то результат компарации будет истинным (TRUE), в противном случае - ложным (FALSE). Левым операндом может быть только элементарное данное (здесь символ), а правым - любое множество элементов.
Доступ к отдельным элементам строк осуществляется аналогично доступу к элементам одномерного массива: после имени строковой переменной необходимо в квадратных скобках указать арифметическое выражение целого типа.
Например:
Var
mline : string;i : integer;
Begin
. .
for i := 1 to length( mline ) do
mline[i] IN ['a'...'z'] then
line[i] := chr( ord( mline[i] ) + 1);
. .
Можно заметить, что работа со строковыми данными аналогична работе с символьными массивами, однако, это не означает их полную идентичность. Необходимо помнить, что если длина символьного ряда статична, то длина стринга динамична.
Для строковых типов данных определены следующие стандартные процедуры и функции:
STR(x[:width[:decimals]];var s:string) - эта функция преобразует численное значение x в его строковое представление s.
VAL(s:string; var x,code:integer) - эта функция преобразует строковое значение s в его численное представление x.
INSERT(source: string; var s: string; index: integer) - эта процедура предназначена для вставки строки SOURCE в строку S, начиная с символа с номером INDEX в этой строке.
DELETE(var s: string; index, count: integer) - эта процедура производит удаление из строки-параметра S подстроки длиной COUNT, начиная с символа с номером INDEX.
CONCAT(s1, [s2,...]: string): string - эта функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина результирующей строки превышает 255 символов, то она усекается до этой длины.
COPY(s: string; index: integer; count: integer): string - эта функция возвращает подстроку, выделенную из исходной строки S, длиной COUNT символов, начиная с символа под номером INDEX.
POS(substr, s: string): byte - эта функция производит поиск в строке S подстроки SUBSTR. Результатом функции является номер позиции подстроки в исходной строке.
LENGTH(s: string): integer - эта функция возвращает текущую длину строки S.
MOVE(var x, y; count: word) - эта функция копирует заданное количество COUNT последовательных байт из источника X в приемник Y.
FILLCHAR(var x; count: word; value) - эта функция заполняет заданное количество COUNT последовательных байт переменной X указанным значением VALUE.
UPCASE(CH) - эта функция возвращает для символьного выражения CH соответствующую заглавную букву; если значением CH является любой другой символ (в т.ч. строчная буква русского алфавита), функция возвращает его без преобразования.