
- •Переменные
- •Типы переменных и констант
- •Целые типы данных языка 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
Сору (s:string; start, len:integer):string;
позволяет выделить из строки последовательность из len символов, начиная с номера start. Если start больше длины всей строки s, то функция вернет пустую строку, а если len больше, чем число символов от start до конца строки s, вернется остаток строки s, от start до конца. Например:
scopy:=сору(ABС***123, 4, 3); {scopy ='***'}
scopy:=сору(АВС, 4, 3); {scopy ="}
scopy:=copy(ABC***123, 4, 11); {scopy ='*** 123}
Процедура
delete (var s:string; start, len:integer);
удаляет из строки s len символов, начиная с символа с номером start:
s:=СТРОКА;
delete (s, 2, 3); {s ='СКА'}
После удаления подстроки ее оставшиеся части s как бы склеиваются.
Если start = 0 или превышает длину строки s, то строка не изменяется. Также не изменит строку значение len = 0. При len большем, чем остаток строки, будет удалена подстрока от start и до конца s. Это можно использовать при «подрезании» строк до заданной величины:
delete (s, 17, 255);
Здесь строки s длиной менее 17 символов пройдут через процедуру неизменными, а все остальные будут укорочены до длины в 16 символов.
Если start > 255, возникнет ошибка при выполнении.
Процедура
insert (subs:string; var s:string; start:integer);
вставляет строку subs в строку s, начиная с позиции start:
s:=Начало–конец;
insert (середина–, s, 8 );
{теперь s = Начало–середина–конец}
Если измененная строка s оказывается слишком длинной, то она автоматически укорачивается до объявленной длины s (при этом, как всегда, «теряется» правый конец строки).
Преобразование строк
Процедура
str (x[:width [:dec]]; var s:string);
служит для преобразования числовых значений в строковые, где х может быть переменной или значением целого или вещественного типов. Можно задавать поля формата, указывая ширину поля для числа и число знаков после десятичной точки. Для целых значений можно задать только поле width, для действительных – либо оба поля (формат с фиксированной точкой), либо одно width. В последнем случае задается экспоненциальный формат общей длиной width. Можно задавать значения полей формата целочисленными переменными или константами:
var f, п:integer;
s : string;
. . . . . . . . . . . . . . . . . . .
f:=7; n:=2;
str(–123.456:f:n, s); {s = –123.46}
str(1.234567:6:4, s); {s =1.2346}
Процедура
val (s:string; var v:t; var errcode:integer);
преобразует числовые значения, записанные в строке s, в числовую переменную v (t – описание типа этой переменной: целый или действительный). Если преобразование возможно, то переменная errcode равна нулю, в противном случае она содержит номер позиции в s, содержащей ошибочный символ, в этом случае содержимое v не меняется. Тип t переменной v должен соответствовать содержимому строки s. Если в s имеется точка или степень числа Е + пп, то v должна быть вещественного типа, в остальных случаях может быть и целой.
Процедуры и функции для работы с текстовыми файлами
Процедура
assign (f:text;name:string);
связывает файловую переменную f с существующим или вновь создаваемым на винчестере файлом, название которого содержится в строке пате.
Имя файла на диске состоит из идентификатора, содержащего не более 8 символов, за которым следует расширение – последовательность до трех разрешенных символов, отделяемое от имени точкой.
Например, assign(f,D:\USER1\X.txt) – связь файловой переменной с файлом X.txt из папки USER1 на диске D.
Процедура открытия файла f для чтения
reset (f:text);
Чтение начинается с первого элемента файла f.
Процедура reset предполагает, что открываемый файл уже существует (в противном случае компьютер укажет на ошибку). Информация в файле сохраняется.
Процедура открытия файла для записи
rewrite (f:text);
Запись начинается с первого элемента файла f. Если ранее в этот файл были записаны какие-либо элементы, то они становятся недоступными, т. е. файл считается пустым.
Процедура rewrite допускает, что открываемый файл не существует, в этом случае она создает файл с заданным именем.
Следует помнить, что после открытия файла можно работать только в одном режиме: либо только читать из файла, либо только записывать в него. При изменении режима работы с файлом необходимо заново его открыть, используя нужную процедуру. Иначе говоря, нельзя для одного и того же текстового файла одновременно производить операции чтения и записи.
Процедура
close (f:text);
закрывает открытый до этого файл. Попытка закрыть уже закрытый (или еще не открытый) файл вызовет сбой программы. Закрытие файла гарантирует сохранность данных в файле. Процедуры открытия могут применяться многократно к одному и тому же файлу. Если файл был до этого открыт, то он автоматически предварительно закрывается.
Логическая функция
eof (f:text): boolean;
(End Of File) получает значение true, если достигнут признак конца файла и false, признак конца файла не достигнут. Признак конца файла возникает при закрытии файла.
Логическая функция
eoln (f:text):boolean;
(End Of Line) анализирует текущее положение конца строки в текстовом файле f, открытом для чтения. Еoln(f) возвращает значение true, если следующей операцией будет прочитан признак конца строки (символ #13) или конца файла (символ #26) и false во всех прочих случаях. Функция как бы предчувствует результат предстоящего чтения и анализирует его. Необходимость в eoln(f) возникает всякий раз, когда заранее неизвестно, где встретится конец строки.
Функции еof(f) и еoln(f) можно использовать в логических выражениях и, в частности, в операторах цикла, например:
while not eof(f) do
begin
. . . . . . . . . . . . .
end.
Пока не достигнут конец файла (логическое выражение not eof (f) имеет значение true , т. к. eof (f) – false), повторяется циклическая часть программы, заключенная в операторные скобки begin … end.
Под чтением файла понимается ввод данных из внешнего файла, находящегося на диске, в оперативную память ПК.
Процедура
readln(f:text; s:string);
обеспечивает чтение из внешнего файла, с которым связана файловая переменная f, текущей строки и присваивание значения этой строки переменной s. После выполнения чтения указатель файла устанавливается на первый символ следующей строки.
Процедура
read (f:text; ch:char);
обеспечивает чтение из внешнего файла, с которым новая переменная f, текущего символа и присваивание значения этого символа переменной ch. После выполнения чтения указатель файла устанавливается на следующий символ строки.
Процедура
readln(f:text);
обеспечивает установку указателя файла на первый символ следующей строки.
Запись в файл. Под записью файла понимается вывод результатов оперативной памяти машины на диск, т. е. создание нового файла на внешнем устройстве.
Процедурa
writeln (f:text, s:string);
выполняет запись значения строки s в текущую строку внешнего файла, с которым связана файловая переменная f. После выполнения записи записывается признак конца строки в элемент файла, на который установлен указатель файла. Новая запись будет производиться в следующую строку файла.
Процедура
write (f:text; ch:char);
выполняет запись значения символа ch в элемент внешнего файла, на который установлен указатель файла. После выполнения записи указатель файла устанавливается на следующую позицию.
Процедура
writeln(f:text);
записывает признак конца строки в элемент файла, на который установлен указатель файла.