
- •1. Основы работы на компьютере
- •1.1. Операционная система ms dos
- •Работа с каталогами
- •Работа с файлами
- •1.2. Программа-оболочка norton commander
- •Работа с каталогами
- •Работа с файлами
- •Управляющее меню программы
- •2. Основы алгоритмизации
- •Основы программирования на turbo pascal
- •Типы данных
- •Программирование разветвляющихся процессов
- •Программирование циклических процессов
- •Работа со сложными типами данных
- •4.1. Массивы
- •4.2. Строки типа string
- •4.3. Множества
- •4.4. Комбинированный тип данных – записи
- •Тема 1. Операционная система ms dos
- •Варианты задания
- •Тема 2. Программы-оболочки
- •Пример выполнения задания
- •Варианты задания
- •Тема 3. Основы алгоритмизации
- •Пример выполнения задания
- •Варианты задания
- •Тема 4. Программирование линейных и разветвляющихся процессов Пример выполнения задания
- •Варианты задания
- •Пример выполнения задания
- •Варианты задания
- •Тема 6. Работа с массивами Пример выполнения задания
- •Варианты задания
- •Тема 7. Записи Пример выполнения задания
- •Варианты задания
- •Библиографический список
- •Приложения
- •Основная таблица кода ascii
- •Альтернативная таблица (коды со 128 по 255)
- •Оглавление
- •1. Основы работы на компьютере ……………………………………….……. 1
- •1.1. Операционная система ms dos ………………………………………… 1
4.2. Строки типа string
Для организации необходимых действий со строками в Turbo Pascal используется стандартный тип данных string. Строки записываются в виде заключенных в апострофы символов, например: ‘aurinko’, ‘солнце’, ‘’(пустая строка), ‘ ’(пробел), ‘об’’ем’(апостроф указывается дважды). Строковые переменные описываются следующим образом:
var st : string[<константное выражение>];
Значение константного выражения (обозначим его через n) называют объявленным размером строки. N измеряется в байтах и находится в следующих пределах: 0 n 255. Если размер строки не указан, то считается, что n = = 255 . При вводе или присваивании строк символы, выходящие за объявленный предел, отбрасываются. Символы в стринге пронумерованы от нуля. В нулевом байте содержится информация о длине строки, представленная символом, т.е. фактический размер строки может быть определен как ord(st[0]). Приведем простой пример описания и некоторых действий со строковыми переменными.
program primer;
type stroka = string[30]; {Тип-строка, содержащая не более 30 символов}
var s : stroka;
s1 : string; {Строка максимального размера}
s2 : string[10]; {Строка из 10 символов}
begin
s2 := ‘Это string’;
s2[0] := chr(3); {Изменяем размер строки}
writeln(s2) end. {На экран будет выведено слово “Это”}
При сравнении строк большей считается та строка, в которой содержится больше символов. Если число символов в строках одинаковое, то решение принимается по первым неодинаковым символам, например ‘Это’ < ‘это’, ‘Марс’ > ‘Марк’ и т. д. Ниже приводятся стандартные процедуры и функции, используемые при работе со строками.
Функция length(s) возвращает фактический размер стринга s.
Функция pos(s1,s) возвращает позицию первого вхождения подстроки s1 в строку s.
Функция copy(s, p, n) копирует из строки s n символов, начиная с символа, находящегося на позиции p.
Процедура delete(s, p, n) удаляет из строки s n символов, начиная с символа на позиции p.
Процедура insert(s1, s, p) вставляет подстроку s1 и строку s, начиная с позиции p.
Функция concat(s1, s2, …) объединяет в одну строки s1, s2, …
Для взаимного преобразования строковых и числовых данных служат процедуры:
str((<число>[:n[:k]], <переменная типа string>);
val(<строка>, <переменная-число>, <номер>).
В процедурах строка может содержать только цифры и разделитель целой и дробной частей числа, номер возвращает номер ошибочно введенной позиции, n и k задают формат числа (k - число позиций, отводимых под дробную часть).
Пример14. В строке s1 заменить подстроку s2 на подстроку s3. Строки выбрать произвольно.
Ниже приведены структурограмма и программа наших действий.
Ввод
(s1,
s2, s3)
Вычисление длины строк s2 и s3 (n и i)
Нахождение p - позиции 1-го вхождения s2 в s1
ДА p 0 НЕТ
Удаление s2 из s1 Вывод
Вставка s3 в s1 (‘Заменяемая
Копирование s3 из s1 в s строка не
Вывод (s, s1) обнаружена)
program stringi;
const cs = ‘любой’;
var s, s1, s2, s3 : string;
i, n, p : byte;
begin
writeln(‘’Введите исходную строку s1);
readln(s1); {‘На любой работе надо что-то делать’}
s2 := cs; s3 := ‘этой’;
i := length(s3); {Длина s3}
n := ord(s2[0]); {Длина s2}
p := pos(s2, s1); {Первое вхождение s2 в s1}
if p <> 0 then begin
delete(s1, p, n); {Удаление s2 из s1}
insert(s3, p, i); {Вставка s3 в s1}
s := copy(s1, p, i); {Копируем s3 из s1 в s}
writeln(‘Результирующая строка: ’, s1);
writeln(‘В нее вставлена подстрока: ’, s) end
else writeln(‘Заменяемая строка не обнаружена’ end.