- •Программирование и алгоритмические языки
- •Основные понятия процедурного программирования. Области и процедуры
- •Способы обозначения и определения процедур
- •Языки блок-схем
- •Трассировка программы
- •Структурное программирование
- •Программы, как файловые процедуры
- •Итерационные и рекуррентные последовательности
- •Восходящее и нисходящее программирование
- •Язык программирования Pascal
- •Процедурный Паскаль Синтаксис Паскаль-программы
- •Основные операторы
- •Классификация типов Простые (скалярные) типы
- •Стандартные типы
- •Пользовательские скалярные типы данных
- •Алгоритмическое определение булевских операций
- •Стратегия вычисления условий
- •Вычисление кванторов
- •Символьный тип
- •Производные(структурные) типы Массивы
- •Операции над массивами
- •Расширенный синтаксис. Массивы размерности n.
- •Строки. Динамические массивы.
- •Комбинированные типы и записи
- •Оператор присоединения
- •Типизированные файлы.
- •Упорядоченные файлы
- •Поиск в упорядоченном файле
- •Арифметика упорядоченных файлов
- •Дихотомический поиск в упорядоченном массиве
- •Простые алгоритмы сортировки
- •Множества
- •Операции над множествами
- •Решето Эратосфена
- •Подпрограммы. Пользовательские процедуры и функции
- •Синтаксис обращения к процедурам
- •Синтаксис использования или обращения к процедурам.
- •Семантика
- •Правила построения модифицированного тела:
- •Пользовательские процедуры (продолжение)
- •Подпрограммы и функции
- •Описание функции
- •Обращение к функции
Комбинированные типы и записи
Record
N1: T1;
……..
Nm: Tm;
End.
Значениями типа «запись» являются функцией с областью определения, состоящей из имен N1,…,Nm. Причем f(N1)Ti i=1,…,m
В математике такая конструкция называется именованном декартовым произведением.
Просто декартовым произведением называется множество всех последовательностей длины m, таких, что tiTi.
Например
Real2=Real•Real
{<t1,t2>, t1real, t2real}
Запись – это набор переменных N1,…,Nm, типа T1,…,Tm, воспринимаемый как единое целое. Основная операция – операция выборки, с той же семантикой, что и у массивов, но с другим синтаксисом.
r.Ni, где r – переменная тип «запись», Ni – одно из имен N1,…,Nm.
Понятие «запись» не вычислительное, а логическое – это описание состояния некоторого объекта.
type
tTochka = record
x,y: real;
end;
{x,y – декартовы координаты точки}
record
ugol,radius: real;
end;
{полярные координаты точки}
Вычислить значение многочлена
Begin
read(n,x,a);
s:=a; k:=1;
for i:=1 to n do
begin
read(a);
k:=x•k;
s:=s+a•k;
end;
write(s);
End.
Уточним постановку: вычислить многочлен над комплексными числами.
Type complex=record
re:real;
comp:real;
end;
Var i,n: integer;
l:real;
x,a,k,s: complex;
Begin
read(n,x.re,x.comp,a.re,a.comp);
s.re:=a.re;
s.comp:=a.comp;
k.re:=1;
k.comp:=0;
for i:=1 to n do
begin
read(a.re,a.comp);
l:=k.re;
k.re:=x.re•k.re-x.comp•k.comp;
k.comp:=x.re•k.comp+l•x.comp;
s.re:=s.re+a.re•k.re-a.comp•k.comp;
s.comp:=s.comp+a.re•k.comp+a.re•x.comp;
end;
if s.comp<0
then
write(s.re,‘-’,abs(s.comp))
else
write(s.re,‘+’,abs(s.comp));
End.
Упражнение: написать программу зачисление абитуриентов в университет. В ходе зачисления используется информация:
ФИО
уникальный код абитуриента
оценка за экзамен
зачет/незачет по русскому языку
наличие медали
Абитуриент зачисляется, если он либо имеет медаль и 5 за первый экзамен, либо не имеет двоек и его средний балл больше проходного (считаем, что проходной балл уже подсчитан).
Оператор присоединения
Для того чтобы избежать необходимости выписывать полное точечное обозначение поля записи можно применять оператор присоединения вида: with r do s, где r – имя переменной типа «запись», а s – один оператор, в котором вместо имен вида r.Ni можно использовать имена вида Ni.
Семантика: оператор эквивалентен выполнению оператора S, в котором все имена вида Ni заменены именами вида r.Ni.
Типизированные файлы.
file of T, где Т – произвольный статический тип, кроме файла.
Семантика: последовательность компонент типа Т, произвольной длины.
Операторы: Assign (AssignFile), reset, rewrite, eof, close (CloseFile) – имеют ту же семантику. Операторы read и write имеют очевидную семантику, но другой синтаксис.
Read(f,v), где f – имя файла, v – единственная переменная типа Т.
Write(f,e), где f – имя файла, где е – единственное выражение типа Т.
Понятие строки и операции readln, writeln, eoln в этом случае не определены.