- •Обращение к полям записи
- •Оператор with
- •Записи с вариантами
- •Рекурсия
- •Вычислить n!
- •Вычисления чисел Фибоначчи
- •Вычисления значений формул
- •Быстрая сортировка
- •Процедуры и функции общие для всех типов файлов
- •Режимы работы файла
- •Опция компиляции
- •Процедуры и функции модуля system
- •Процедуры и функции для типизированных файлов
- •Как добиться прямого доступа??
- •Стандартная конструкция редактирования файла
- •Тектовые файлы
- •Процедуры и функции для текстовых файлов
- •Способы считывания
- •Бинарные файлы
- •Работа с динамической памятью
- •Pointer
- •Дерево Absolute
- •Типизированные ( переменные ) указатели
- •Процедуры работы с кучей
- •Динамические массивы
- •Связные списки
- •Упорядоченные списки
- •Деревья
Вычисления значений формул
<Формула>=<Цифра> |(<Формула> <Операция> <Формула>)
<Цифра>=0..9
<Операция>= +,-,*
Function f:longint;
Var c,op:char; left,right:integer;
Begin
Read(c);
If (c>=’0’) and (c<=’9’)
Then f:=ord(c) – ord(‘0’)
Else
Begin
Left:=f: read(op); righr:=f;
Case op of
‘+’:f:=left+right’
‘-‘:f:=left-right;
‘*’:f:left*right;
End;
Read(c);
End;
End;
Begin
Writeln(f);
Readln;
End;
Написать функцию для вычисления значения формулы преобразовав f(x) так, что бы она вычисляла результат деления и работала с многоразрядными числами
Быстрая сортировка
Идея быстрой сортировки:
Выбрать элемент, который назовем опорным
Разделить массив на 2 части. Левую (в которой содержатся элементы не больше опорного) и Правую(В которой содержатся элементы не меньшими опорного)
Повторить действия для левой и правой части
Const n =____;
Type TVector=array[1..n] of integer;
Procedure quicksort(var x:tvector; l,r:word);
Vat y,buf:integer;
I,j:integer;
Begin
Y:=x[(l+r) div 2];
I:=l;
j:=r;
while i<=j do begin
while x[i]<y do inc(i);
while y[j]>y do dec(j);
if i<=j then
buf:=x[i]; x[i]:=x[j]; x[j]:=buf;
inc(i); dec(j);
end;
end;
if i<j then quickSort(I,J);
else auicksort(I,r);
end;
begin
input(x);
quicksort(x,1,n);
output;
end.
Д.З. Посчитать время работы сортировки «qs» для 100к элементов, 200к, 400к.
T:=gettickcount;
T:=gettickcount-t;
{замер времени исполнения функции}
Файлы
Физические (поименованная область на диске )
Логические (переменная файлового типа)
Три типа файлов:
Типизированные файлы
File–of– базовый тип(любой кроме файловов)
Type TSstudent=record
……
End;
Myfile=file of TStudent
Var
F1:file of byte;
F2:file of integer;
F3:file of array[1..100] of byte;
F4:file of char ;
F5:file of myfile;
{Все компоненты нумеруются с нуля}
Текстовые файлы
Text
Var t:text
Нетипизированные файлы
File
Var t:file
Два типа доступа к файлам:
Последовательный (sequentialaccessfile) ( в текстовых файлах используется только последловательный)
Прямой (randomaccessfile) (В бинарный и типизированных)
Размер файловой переменной
Var t:file of
Sizeof(?) - 128
Var t:text
Sizeof(?) - 256
Var t:file
Sizeof(f)-128
Процедуры и функции общие для всех типов файлов
Procedureassignfile(varf;fn:string) (связывает файловую переменнуюfс физическим файлом на диске)
Например:
assignFile(f,’c:\temp\test.pas’)
assignFile(f,’ test.pas’)
readln(filename); assignFile(f,filename);
“con” – консоль (путь файла)
‘prn’ – Принтер
‘lpt1(3)’
‘aux’ – мультимедийные устройства
‘nul’ –
assignFile(f,’ con’)
procedurereset(varf) (Открывает файлы для чтения а типизированные и бинарные еще и для записи. После открытия указатель устанавливается на начало файла)
procedurerewrite(varf) (Открывает файл для записи. Если файла не существует, то он создастся. Если файл существует – то содержимое файла уничтожается, а указатель устанавливается на начало файла)
procedure closefile (var f) (Закрывает открытый файл)
functionEOF(varf):Boolean(Возвращает значение тру если достигнут признак конца файла)
assignFile(f,’filename’);
reset(f);
writeln(eof(f));
assignFile(f,’filename’);
reset(f);
while not eof(f) do begin
считали оброботали вся фигня лалала что за мачмала под звуки репа у моего окна
end;
closeile(f);
FunctionIOresult:word(После вызова значения «Сбрасывается» в 0. При ошибке после обращения к этой функции выключаются операции ввода вывода.)