- •Язык программирования Pascal Алфавит языка Pascal
- •Числа. Представления чисел
- •Имена и идентификаторы.
- •Структура программы на Pascal
- •Типы данных
- •Простые типы данных. Данные целого типа.
- •Данные вещественного типа
- •Данные логического типа
- •Данные символьного типа
- •Стандартные процедуры и функции
- •Арифметические выражения
- •Логическое выражение
- •Оператор присваивания
- •Составной оператор
- •Пустой оператор
- •Операторы ввода
- •Вводи числовых данных
- •Ввод символьных данных
- •Ввод логических данных
- •Вывод данных на экран
- •Оператор выбора или оператор варианта
- •Перечислимый тип данных
- •Ограниченный тип данных или тип диапазон
- •Оператор цикла
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Итерационный цикл
- •Оператор присоединения
- •Подпрограммы
- •Подпрограммы-процедуры
- •Подпрограммы-функции
- •Параметры массивы и параметры строки.
- •Рекурсия
- •Типизированные константы
- •Алгоритм создания последовательного файла.
- •Алгоритм доступа к элементам файла.
- •Алгоритм добавления элементов в последовательный файл.
- •Строковый тип данных. Строковые выражения.
- •Операция отношения.
- •Процедуры.
- •Текстовый файл.
- •Заголовок модуля. Связь модуля с программой.
- •Стандартные модули
- •Объектно-ориентированное программирование (ооп)
- •Работа с массивами
- •Множества
- •Операции над множествами
- •Понятие файла
- •Работа с файлами
- •Структура модуля
- •Стандартные модули языка Delphi
Подпрограммы-функции
Подпрограммы-функции используются когда основной программе передается единственный результат. Передается он через имя функции.
Подпрограмма функции имеет следующую структуру:
Function <имя функции> (формальные параметры): <тип результата функции>;
<переменная результата>:<тип результата>;
begin
{блок оператора}
<имя функции>:<переменная результата>;
end;
Program ma;
Var
A, b,nod,nok:integer;
Function nod(x,y:integer):integer;
Begin
If x<y then
Z:=y
Else
Z:=x;
Nod:=z;
{основная программа}
Begin
Write (‘a,b=’);
Readln (a,b);
Nok:=(a*b)/nod;
Write (‘nod=’,nod);
Write (‘nok=’,nok);
Readln;
End.
Параметры массивы и параметры строки.
Типом любого параметра в списке формальных параметров процедуры или функции может быть только стандартный тип данных или объявленный ранее тип данных. Поэтому нельзя написать:
Procedure vvod (d:array [1..10] of byte);
Рекурсия
Рекурсия – это способ организации вычислительного процессу, при котором процедура или функция в ходе выполнения составляющих ее операторов обращается сама к себе, вызывает сама себя.
Процедура является рекурсивной, если она обращается сама к себе прямо или косвенно (через другие процедуры).
Пример рекурсивной функции вычисления факториала:
Function factorial(N: integer) : longint;
Begin
If N= 0 then
Factorial := 1
Else Factorial := factorial(N-1) * N
End;
Пример рекурсивной процедуры, возводящей число в степень:
Procedure Power (X: real; N: integer; var Y: real);
Begin
If N=0 then
Y:= 1
Else Begin Power(X, N-1,Y);
Y:= Y*X;
End;
End;
Задача: Построить последовательность чисел следующим образом: возьмем целое число i>1. Следующий член последовательности равен i/2, если i четное, и 3 i+1, если i нечетное. Если i=1, то последовательность останавливается.
Применение рекурсии позволяет решить задачу без использования циклов, как в основной программе, так и в процедуре:
Program Arsac;
Var first: word;
Procedure posledov (i: word);
Begin
Writeln (i);
If i=1 then exit;
If odd(i) then posledov(3*i+1) else posledov(i div 2);
End;
Begin
Write (‘ введите первое значение ’); readln (first);
Posledov (first);
Readln ;
End.
Типизированные константы
В ТР допускается использование типизированных констант, которые описываются в разделе описания констант.
Const
<имя констант>:<тип констант>=<значение>;
Типизированным константам можно присвоить другие значения в процессе работы программы и фактически они являются переменными с указанным начальным значением. Указанное в описании начальное значение константа принимает только один раз. В момент начала работы программы.
Типизированные константы могут быть любого типа, кроме файлов. Типизированную константу нельзя использовать в качестве значения при объявлении других констант или границ типа диапазона.
Описание типизированной константы с простым типом:
const
Maximum : integer = 9999;
Factor : real = -0.1;
Breakchar : char = #3;
Описание типизированной константы строкового типа:
const
Heading : string[7] = 'Section';
NewLine : string[2] = #13#10;
TrueStr : string[5] = 'Yes';
FalseStr : string[5] = 'No';
Файлы
Файл с точки зрения программирования – это структурированный тип данных, где элементы имеют один тип и одну длину, и хранятся на внешнем носителе. Размерность файла ограничена только свободным пространством диска. Файлы бывают типизированные и не типизированные. В программе конкретный файл, находящийся на диске, представляет файловая переменная, которая описывается следующим образом:
var
<файловая переменная>: file;
< файловая переменная >: file of <тип элементов>;
< файловая переменная >: text;
Пример:
var
f1: file;
f2: file of integer;
f3: text;
Над файловой переменной в программе нельзя выполнять никаких действий, она не может присутствовать в выражениях. Файл можно представить как последовательную цепочку элементов, пронумерованных от нуля и заканчивающуюся специальным кодом, называемым маркером конца файла.
Количество элементов, хранящихся в данный момент в файле, называется текущей длиной файла. Для доступа к элементам файла используют специальную величину, которая называется указателем файла. Указатель файла – это специальная ячейка памяти, которая хранит адрес элемента файла, предназначенного для текущей обработки. Указатель файла в программе явно не указывается.
Любые файлы могут быть доступны программе только после выполнения специальной процедуры открытия файла. Эта процедура связывает раннее объявленную файловую переменную с именем файла на диске.
Это связывание осуществляется с помощью встроенной процедуры.
Assign (<файловая переменная>; <имя файла на диске>:string);
Assign (f2, ‘c:\ студенты \ гр 248. dat’);
Файл открыть можно только по чтению или только по записи. Чтобы открыть файл для записи используют процедуру Rewrite с параметром файловой переменной.
Rewrite (f2);
Данная процедура создает новый файл с указанным именем и если файл с указанным именем уже существует, то информация теряется без предупреждения, указатель восставляется на первый элемент с номером ноль.
Чтобы открыть файл для чтения используют процедуру Reset с параметром файловой переменной.
Пример:
Reset (f2);
Указатель файла восставляется на первый элемент и открыть для чтения можно только уже существующий файл. В противном случае выдается ошибка и программа завершает работу аварийно.
Записать информацию в файл можно следующим образом:
Write (<файловая переменная>,<элементы оперативной памяти>);
Пример:
Write (f2, A);
После выполнения этой процедуры указатель файла смещается к следующему элементу.
Прочитать информацию с диска в оперативную память можно с помощью процедуры Read.
Read (<файловая переменная>, <элементы оперативной памяти>);
Пример:
Read (f2, B);
После выполнения всех работ над данными файла файл необходимо закрыть, в противном случае вся информация теряется. Закрыть файл можно с помощью процедуры Close.
Close (<файловая переменная>);
Пример:
Close (f2);
Уничтожить файл можно с помощью процедуры Erase. Уничтожить можно только закрытый файл.
Erase (<файловая переменная>);
Пример:
Erase (f2);
Переименовать файл можно с помощью процедуры Rename.
Rename (<файловая переменная>, <новое имя файловой переменной>: string);
Пример:
Rename (f2, f7: string);
Переместить указатель файла на элемент с нужным номером можно с помощью процедуры Seek.
Seek (<файловая переменная>, <номер элемента>);
Пример:
Seek (f2, 4);
Чтобы определить длину файла используют функцию Filesize.
Filesize (<файловая переменная>);
Пример:
Filesize (f2);
Чтобы определить местонахождение указателя файла используют функцию Filepos.
Filepos (<файловая переменная>);
Пример:
Filepos (f2);
Чтобы определить находиться ли указатель файла на маркере конца файла используют функцию Eof. Значение функции равно true. Если указатель файла находиться сразу за последним элементом файла, или равно false, если в любом другом месте.
Eof (<файловая переменная>);
Пример:
Eof (f2);
Обычно эта функция используется в конструкции:
While not Eof (f2) do
Begin
…………
End;
Чтобы иметь возможность после неправильного ввода имени файла при открытии для чтения ввести нужное Ия файла используют функцию Ioresult, которая возвращает число являющееся условным признаком последней операции ввода-вывода. Если операция завершилась успешно, функция возвращает значение равное нулю. Значение функции доступно, если отключен автоматический контроль ошибок ввода-вывода. Он отключается указанием директиву компилятора следующим образом:
{$I-} - выключить
{$I+} – включить.
Programma BASKET;
Type
Spisok = record
FIO: string [50];
ROST: integer;
Ves: integer;
God: integer;
End;
F: file of spisok;
Stud: spisok;
NR: byte;
Procedure sozd;
Var
Fname: string[50];
I: byte;
N: byte;
Begin
Write (‘введите имя файла’);
Readln (Fname);
Assign (F,Fname);
Rewrite (F);
For i:=1 to 28 do begin
Writeln (‘введите ФИО’);
Readln (stud.FIO);
Writeln (‘введите рост, вес, год рождения’)
Readln (stud.ROST, stud.ves, stud.GOD);
Write (F,stud);
End;
Procedure dob;
Var
Fname: string [50];
Otv:char;
Begin
{$I-}
Repeat
Write (‘введите имя файла’);
Readln (Fname);
Assign (F, Fname);
Reset (F);
Until IO result = 0;
{$I+}
0 = ‘Y’
Seek (F, filesize(F));
While (otv = ‘Y’) or (otv = ‘Y’) do begin
Write (‘введите FIO’);
Readln (stud.FIO);
Writeln (‘введите рост, вес, год рождения’)
Readln (stud.ROST, stud.ves, stud.GOD);
Write (F,stud);
Write (‘будете вводить еще?’);
Read (otv);
Close (F);
End;
Procedure poisk;
Var
Fname:string [50];
Otv: char;
Begin
{$I-}
Repeat
Write (‘введите имя файла’);
Readln (Fname);
Assign (F, Fname);
Reset (F);
Until IO result = 0;
{$I+}
0 = ‘Y’
Writeln (‘список студентов, чей рост >170’);
While not EOF (F) do begin
Read (F, stud);
If stud.ROST > 170 then
Writeln (stud.FIO,’ ‘, stud.ROST,’ ‘, stud.god);
End;
Close(F);
Readln;
End;
{основная программа}
Begin
While 1=1 do
Begin
Writeln (‘1.создание файла’);
Writeln (‘2.добавление в файл’);
Writeln (‘3.поиск рост >170’);
Writeln (‘4.выход из программы’);
Writeln (‘выберите номер работы’);
Readln(NR);
Case NR of
1:sozd;
2:dob;
3:poisk;
4:exit;
End;
End;
End.