Слайд 5К строкам можно применять
операцию “+” -сцепление, например:
stS := 'а' +
'b'; // "ab"
stS := stS + 'с';
// “abc”
S1:= '1' + '11' ;
Слайд 7
function Copy(S: String; Pos: Integer; N: Integer): String;
st:= 'Инженер Иванов';
fam:=copy(st, 9, 6) ;
значением переменной fam будет строка 'Иванов’.
Строковые функции
Слайд 8Строковые функции
function Concat(s1, s2,..., sn: String): String;
n:='Невский ';
m:=' проспект ';
S:=Concat(n,
m);
//S:=' Невский проспект '
Слайд 9function Length(S: String): Integer;
n:=length('Иванов');
m:=length(' Невский проспект ');
значение переменных n и
m будет равно 6 и 20
Строковые функции
Слайд 10function Pos(S1: String; S: String): Byte;
pos (Подстрока,Строка) ;
р :=
pos('Пе','Санкт-Петербург');
значение переменной р будет равно 7. Если в строке нет
искомой подстроки, то значение функции роs будет равно нулю.
Строковые функции
Слайд 11Процедуры со строками
Procedure SetLength(S:String; NewLength: Integer); - устанавливает новую (меньшую)
длину NewLength строки S, если NewLength больше текущей длины строки,
обращение к SetLength игнорируется
Слайд 12Процедуры со строками
procedure Delete(var S: String; pos: Integer; n:Integer);
delete(Строка, р,
n)
s:='Город Санкт-Петербург';
delete(s,7,6);
значением переменной s будет строка
'Город Петербург'.
Слайд 13Процедура Insert(s,s1,p) вставляет в строку s подстроку s1, начиная с
заданной позиции p.
Пример:
s:=‘mir’;
insert (‘ku’, s,1);
s:=‘рис 2’;
s1:=‘№’;
insert(s1,s,5);
Процедуры со строками
Слайд 14Function StrToFloat(St:String): Extended;
Function StrToInt(St:String): Integer;
Procedure Val(St: String; var X; Code:
Integer);
Function FloatToStr(Value: Extended): String;
Function IntToStr(Value: Integer) : String;
Функции преобразования строкового
типа
Слайд 15Файл
Файл – это структурированный тип данных, позволяющий осуществлять взаимодействие с
внешней средой (ввод/вывод информации) в программе посредством обработки специальных объектов
данных – файловых переменных.
Файловый тип данных (или файл) определяет упорядоченную совокупность произвольного числа однотипных компонент.
Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства.
Слайд 16Любой файл имеет 3 характерные особенности:
Файл имеет имя, (=> возможность
работать одновременно с несколькими файлами)
Файл содержит компоненты одного типа
(любой тип, кроме файлов).
Длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.
Слайд 17Файл
Файлы на внешних устройствах часто называют физическими файлами. В программах
на языке Паскаль имена файлов задаются с помощью строк. Например,
имя файла на диске может иметь вид:
'LAB1.DAT'
'c:\ABC150\pr.txt‘
Слайд 18Представление файла.
Признак
Конца Файла.
Файл, не имеющий ни одной компоненты,
называется пустым.
Слайд 19Для доступа к компонентам файла Object Pascal хранит указатель файла.
Каждый
раз, когда какой -либо компонент записывается в файл или считывается
из него, указатель файла перемещается к следующей компоненте.
Слайд 20Типы файловых переменных
В языке Object Pascal в зависимости от вида
считываемой и записываемой информации можно описать три вида файловых переменных:
типизированные
текстовые
нетипизированный
Файловая
переменная обозначает и таким образом связана с буфером в ОЗУ, куда копируется для временного хранения данные при вводе/выводе информации.
Слайд 21Ввод (чтение) информации
Операция ввода означает перепись данных с внешнего устройства
(из входного файла) в основную память ЭВМ (буфер ОЗУ).
Информация может
быть введена (или прочитана):
из файлов на дисках;
при помощи устройств ввода.
При чтении за один раз считывается максимальное количество информации, равное или меньшее по объему буфера в ОЗУ.
Слайд 22Размер буфера
Размер буфера для типизированных файловых переменных устанавливается равным размеру
типа данных.
Размер буфера для текстовых и нетипизированных файловых переменных может
устанавливаться программистом.
Слайд 23Вывод (запись) информации
Операция вывода - это пересылка данных из основной
памяти (буфера ОЗУ) на внешнее устройство (в выходной файл).
Информация
может быть введена (записана):
в файлы на дисках;
на устройства вывода
При записи информация сначала направляется в буфер ОЗУ. Там она накапливается до тех пор, пока весь объем буфера не будет полностью заполнен (исключая случаев когда она принудительно извлекается). Только после этого происходит передача данных по назначению.
Слайд 24Правила работы с файловыми переменными
Минимальной порцией чтения и записи информации
при работе с буфером ОЗУ является один байт.
Файловые переменные не
могут участвовать в операторах присваивания.
При использовании файловых переменных в качестве формальных параметров в заголовках подпрограмм, они всегда должны быть определены как параметры переменные.
Имеются различия в наборах команд при работе с различными типами файловых переменных.
Слайд 25Последовательность действий при работе с файлами
Описание файловой переменной в разделе
var
Связывание файловой переменной с физическим устройством (физическим файлом)(ASSIGNFILE).
Открытие в режиме
чтения (RESET), записи (REWRITE) или дозаписи (APPEND) (для текстовых файлов).
Выполнение операции чтения (READ) или записи (WRITE) информации, а также ее обработка.
Закрытие файла (CLOSEFILE)
Слайд 26Закрытие файла
Файл F закрывается, и каталог диска обновляется, в нем
отображаются новые сведения о состоянии файла. Файл следует закрывать даже
тогда, когда он открывался только для чтения
CloseFile(f);
Слайд 27Описание файловых переменных
Типизированный
Type DIM = array [1..100] of real;
FDIM =
file of DIM;
FINT = file of integer;
Var F1:FDIM; F2:FINT; F3:file
of real;
Текстовый
Var ftext:TextFile;
Нетипизированный файл
Var FN: file;
Слайд 28Связывание с физическим файлом
Формат процедуры ASSIGNFILE:
AssignFile(,);
Пример:
assignfile (f1, ‘c:\file.dat’);
Слайд 29Особенности использования
Не анализируется корректность имени файла и его существование.
После выполнения
процедуры файл считается пока закрытым и размер буфера не определенным.
После
ее выполнения к файлу через файловую переменную возможно применять некоторые стандартные функции (rename, erass)
Слайд 30Открытие файла
Формат процедуры RESET для текстовых и типизированных файлов:
Reset
();
Примеры: reset (f1); reset(ftext);
Формат процедуры RESET для нетипизированных файлов:
Reset(f[, BufSize])
;
Пример: Reset (FN, 256) ;
Параметр BufSize задает число байтов, считываемых из файла или записываемых в него за одно обращение. Минимальное значение BufSize - 1 байт, максимальное - 64 К байт. Если BufSize не указан, то по умолчанию он принимается равным 128.
Слайд 31Особенности использования RESET
Открывает физический файл для чтения.
Фиксирует размер буфера равным:
объему
памяти, необходимому для хранения одного элемента в типизированных файлах;
128 байтам
для текстовых файлов;
заданным программистом.
Устанавливает указатель в файле на самом первом (нулевом по счету) элементе.
Содержимое файла не изменяет.
Слайд 32Открытие файла для записи
Формат процедуру REWRITE для текстовых и типизированных
файлов:
Rewrite ();
Примеры: rewrite (f1); rewrite (ftext);
Формат процедуры REWRITE для нетипизированных
файлов:
Rewrite(f[, BufSize]) ;
Пример: Rewrite(FN, 512) ;
Слайд 33Особенности использования
Открывает физический файл для записи.
Очищает содержимое физического файла, подготавливая
его тем самым для записи.
Фиксирует размер буфера равным:
объему памяти, необходимому
для хранения одного элемента в типизированных файлах;
128 байтам для текстовых файлов;
заданным программистом.
Устанавливает указатель в файле для записи первого элемента.
Слайд 34Открытие файла для дозаписи
Только для текстовых файлов
Формат процедуры APPEND
Append ();
Пример:
append(ftext);
Слайд 35Особенности использования
Открывает физический файл для дозаписи.
Фиксирует размер буфера равным 128
байтам.
Устанавливает указатель в файле после последнего элемента.
Содержимое файла не очищает.
Слайд 36Буфер ввода/вывода для текстовых файлов
По умолчанию размер буфера для
текстовых файлов равен 128 байтам, но его можно изменить, используя
стандартную процедуру SETTEXTBUF.
Формат использования:
SetTextBuf (<ФП>,<Буфер>[,<Размер буфера>]);
<Буфер> - это описанная в программе переменная (ее место в памяти будет использоваться под буфер ввода/вывода)
Слайд 37 - необязательный параметр, обозначающий размер буфера в байтах
(по умолчанию он равен размеру, указанной на месте второго аргумента
переменной).
Пример:
var ft:textfile;
Buf: array [1..4096] of char; //4кбайта памяти
…
assignfile (ft, ‘ttt.txt’);
settextbuf (ft, buf);
settextbuf (ft, buf,1024);
…
Буфер ввода/вывода для текстовых файлов
Слайд 38Запись в типизированный файл
Осуществляется запись значений только одного типа данных,
совместимым с указанным при описании файловой переменной. Запись осуществляется в
формате машинного представления значения.
Формат оператора записи:
write (<ФП>, <зн1>[,<зн2>,..<знn>]);
Слайд 39Пример:
var f1:FDIM; f2:FINT; f3:File of real;
var p1:DIM; p2:integer; p3:real;
…
//инициализация p1,
p2, p3, f1, f2, f3
rewrite(f1); rewrite(f2); rewrite(f3);
write(f1,p1);
write (f2, p2,89);
write
(f3, 7.8,p3);
Слайд 40Запись в текстовый файл
Осуществляется запись значений простых (кроме перечисляемого типа)
и строковых типов данных.
При этом:
Информация записывается в виде символов с
кодами шрифта, используемом при вводе.
Можно указать формат записи значений (ширина поля вывода, количество знаков после запятой)
Порции информации могут разделятся на строки. Признаком конца строки служит символ с кодом #13 или совокупность символов #13#10
Слайд 41Запись в тестовый файл
Признак конца файла - символ с кодом
#26
При записи значений числовых и логических типов они преобразуются в
текстовый вид.
Запись в физический файл происходит только либо при использовании стандартных процедур
Flush (<ФП>);
либо при заполнении буфера, либо при закрытии файла
CloseFile (<ФП>);
Слайд 42Запись в тестовый файл
Формат оператора записи
write (,[, …]);
writeln (,[, …]);
Пример:
var
ftext:textfile; p1:char; p2:integer; p3:real;
…
p1:=‘A’; p2:=89; p3:=45.67;
assignfile (ftext, ‘c:\text.txt’);
rewrite(ftext);
write (ftext,p1:7); writeln
(ftext, p2:4, 777,4);
writeln(ftext, 7.8,p3:6:1);
…
Слайд 43Запись в нетипизированный файл
Запись осуществляется значениями любого типа.
При этом:
информация записывается
в формате многомерного представления значений по байтам;
размер записываемой информации за
1 раз определяется в процедуре REWRITE;
запись осуществляется в буфер, а при его заполнении или закрытие файла автоматически в физический файл.
Слайд 44Формат оператора записи в нетипизированный файл:
BlockWrite(, , < Число значений>[,
] ) ;
Эта процедура осуществляет за одно обращение запись из
переменной ПБуф количества блоков, заданное параметром Число значений, при этом длина блока равна длине буфера.
Число значений, не может быть меньше 1. За одно обращение нельзя записать больше, чем 64 К байтов.
Слайд 45Необязательный параметр Результат возвращает число блоков, записанных успешно текущей операцией
BlockWrite.
В случае успешного завершения операции записи Результат = Число значений,
в случае аварийной ситуации параметр Результат будет содержать число удачно прочитанных блоков.
Отсюда следует, что с помощью параметра Результат можно контролировать правильность выполнения операции записи.
Слайд 46Пример:
var s:string[64];
FN:file;
…
s:=‘Привет! Привет! Привет!’
rewrite(FN,8);
BlockWrite(FN, s,2);
…
Слайд 47Чтение из типизированного файла
Формат чтения из типизированного файла
read (, [,…]);
Пример:
var
F1:FDIM; f2:FINT;
var p1:DIM; p2:integer; p3:real;
…
//связывание f1 и f2 с файлом
reset(f1);
while
not eof(f1) do
read (f1,p1);
…
Слайд 48Чтение из текстового файла
Чтение из текстового файла может осуществляться
в простые (кроме перечисляемых) и в строковые переменные.
Формат оператора:
read (,
<П1>[,<П2>…<Пn>]);
readln (<ФП>, <П1>[,<П2>…<Пn>]);
Пример:
var ftext:textfile; p1:char; p2:integer; p3:real;
…
reset(ftext);
read (ftext,p1); readln (ftext, p2, p3);
…
Слайд 49При этом информация:
Записывается в виде символов, используемых при вводе;
Для чтения
из различных строк необходимо:
читать построчно (в строковые элементы);
читать посимвольно или
поэлементно и производить поиск признака конца строки (#13) и файла (#26) с последующим переходом для чтения на новую строку или завершения чтения.
При чтении значений числовых и логических значений они преобразуются из текстового формата в соответствующий им формат.
Слайд 50Чтение из нетипизированного файла
Формат оператора:
BlockRead(, , [, ]);
Эта
процедура осуществляет за одно обращение чтение в переменную ПБуф количества
блоков, заданное параметром Число значений, при этом длина блока равна длине буфера.
Значение Число значений, не может быть меньше 1. За одно обращение нельзя прочесть больше, чем 64 К байтов.
Слайд 51Необязательный параметр Результат возвращает число блоков, прочитанных текущей операцией BlockRead.
В случае успешного завершения операции чтения Результат = Число значений,
в случае аварийной ситуации параметр Результат будет содержать число удачно прочитанных блоков. Отсюда следует, что с помощью параметра Результат можно контролировать правильность выполнения операции чтения.
Слайд 52Пример:
var s:string[64];
FN:file;
…
reset(FN,8);
BlockRead(FN, s,2);
…
Слайд 53Функции и процедуры над файлами
Процедура Seek. Синтаксис: Seek( FileVar,PosExp)
Используется для изменения значения
указателя файла. FileVar - имя файловой переменой, PosExp - выражение целого типа. Файл FileVar должен
быть открыт. Значение выражения не должно выходить за пределы интервала [0; FileSize(FileVar)].
С помощью операции Seek указатель файла перемешается к тому элементу файла, порядковый номер которого определяется величиной выражения PosExp. Если это выражение равно 0, указатель файла будет установлен в начало, если выражение равно FileSize (FileVar), то указатель будет установлен в конец.
Слайд 54Процедура Erase
Синтаксис: Erase(FileVar)
FileVar - имя файловой переменной. Рекомендуется, чтобы файл FiteVar был закрыт.
После выполнения процедуры Erase будет
удален набор данных, связанных с файлом FileVar.
Процедура Rename (изменение имени файла)
Синтаксис: Rename( FileVar,StrExp)
FileVar -
имя файловой переменой, a StrExp - строковое выражение.
Файл FileVar должен быть закрыт. Процедура Rename изменяет имя набора данных, связанного с файлом FileVar, на имя, определенное строковым выражением StrExp. Последовательность символов, представляемых StrExp, должна быть правильным именем набора данных без указания дисковода и каталога, кроме того, нельзя указывать имя уже существующего набора данных.
Слайд 55Функция Eof
Синтаксис: Eof(FileVar)
FileVar - имя файловой переменой. Файл FileVar должен быть открытым.
Функция Eof возвращает значение True, если указатель
находится в конце файла, в противном случае - значение False.
Функция FileSize
Синтаксис: FileSize(FileVar)
FileVar - имя файловой
переменой. Файл FileVar должен быть открытым.
Результатом функции FileSize будет величина типа integer, значение которой равно количеству элементов файла FileVar.
Слайд 56Функция FilePos
Синтаксис: FilePos(FileVar)
FileVar - имя файловой переменой. Файл FileVar должен быть открытым.
Функция FilePos возвращает величину целого типа,
значение которой равно положению указателя файла FileVar.