
- •Переменные
- •Типы переменных и констант
- •Целые типы данных языка Turbo Pascal
- •Стандартные математические функции, используемые
- •Арифметические выражения
- •Операторы
- •Оператор присваивания
- •Ввод и вывод результатов вычислений
- •Общая структура программы на Turbo Pascal
- •Пример выполнения задания 1
- •Тема 2 Логические выражения Условный оператор
- •Условный оператор
- •Пример выполнения задания 2
- •Тема 3 Использование циклических структур. Операторы цикла с предусловием и с постусловием
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Пример выполнения задания 3
- •Тема 4 Использование циклических структур. Оператор цикла с параметром
- •Пример выполнения задания 4
- •Тема 5 Использование и обработка одномерного массива
- •Описание одномерного массива
- •Часто встречающиеся задачи на одномерный массив
- •Пример выполнения задания 5
- •Тема 6 Использование и обработка двумерного массива
- •Задачи с использованием главной или побочной диагонали матрицы
- •Пример выполнения задания 6
- •Тема 7 Организация программ с использованием функций
- •Пример выполнения задания 7
- •Тема 8 Организация программ с использованием процедур
- •Параметры
- •Пример выполнения задания 8
- •Тема 9 Текстовые файлы
- •Символьный тип данных
- •Операции над строками
- •Особенности работы со строками
- •Редактирование строк
- •Сору (s:string; start, len:integer):string;
- •Преобразование строк
- •Процедуры и функции для работы с текстовыми файлами
- •Примеры выполнения задания 9
- •Тема 10
- •Работа с комбинированными типами данных
- •(Записями)
- •Общие сведения
- •Особенности работы с записями
- •Пример выполнения задания 10
- •Тема 11 Типизированные файлы
- •Процедуры и функции для работы с типизированными файлами
- •Прямой доступ к элементам файла
- •Примеры выполнения задания 11
Особенности работы со строками
1. Строку можно вводить и выводить как единое целое с помощью операторов readln, writeIn, например:
read (st); writeln (пример);
2. Значением строки может быть любая последовательность символов, заключенная в апострофы:
А:=abcd1; В:=; {пустая строка}
3. Для строк применима операция слияния.
Слияние строки записывается в естественном виде. Если сумма получается длиннее, чем описанная длина левой части оператора присваивания, излишек отсекается.
var S1, S2, S3, : string;
………………………………….
S1 := Вам;
S2 := привет!';
S3 := S1 + S2; {S3 =Вам привет!}
……………………..
4. Сравнение строк происходит посимвольно, начиная от первого символа в строке. Строки равны, если имеют одинаковую длину и посимвольно эквивалентны.
Результат выполнения операций отношения над строками всегда имеет логический тип и принимает значение True, если выражение истинно, и False, если выражение ложно.
abcd = abcd |
true, |
abсd <> abcde |
true, |
abсd <> abcd |
false. |
Если при посимвольном сравнении окажется, что один символ больше другого (его код больше), то строка, его содержащая, тоже считается большей. Остаток строк и их длины не играют роли. Любой символ всегда больше «пустого места»:
abcd > abcD |
(так как d > D) |
abсd > abc |
(так как d > ) |
aBсd < ab |
(так как B < b) |
Можно, конечно, использовать и нестрогие отношения:
>= или <=.
5. Строку можно рассматривать как массив, состоящий из отдельных символов, например, описания
st : string [25]; и st : array [0..25] of char; идентичны.
Нулевой символ предназначен для указания количества символов в строке и может изменяться от символа с кодом 0 до символа с кодом N. С ним можно работать, как и с остальными символами строки:
N := ord(A[0]); где N – длина строки А.
6. Отдельный символ строки совместим с типом char:
var В : string; S : char;
B := Hello;
S := B[1]; {S = H}
В[2] := o; {В =Hоllo}
Для работы со строками в TURBO PASCALе реализовано большое количество стандартных процедур и функций.
Редактирование строк
Функция
length (s : string):word;
вычисляет текущую длину строки s (количество символов в строке). Строка может быть задана идентификатором или непосредственно, в апострофах.
s:=Петербург
п:=length(s); {n = 9}
k:=length (Мы изучаем Паскаль); {k = 18}
m:=length ("); {m=0}
Пример. Дана строка s. Создать строку s1 из символов строки s, вставив после каждого символа a символ c.
s1:=’;
for i:=1 to length (s) do
begin s1:=s1 + s[i];
if s[i] = a then s1:=s1 + c
end;
Функция
pos (subs, s:string):byte;
вычисляет номер символа в строке s, с которого начинается первое включение в s подстроки subs. Если же s не содержит в себе subs, то функция даст результат 0.
s:=Компьютер;
п:=pos(ю, s); {п = 6}
s1:=Kомп;
k:=pos(s1, s); {k = 1}
Очевидным недостатком функции pos является то, что она возвращает только первую позицию subs в s от начала строки, т. е. после обращения к функции
р := pos (noo, Boonoonoonoos);
она завершит свою работу, вернув значение 4, хотя есть еще и 7, и 10.
Функция