- •1.Свойства алгоритма
- •2.Схемы алгоритмов.
- •3.Циклические алгоритмы. Классификация. Вычисление сумм, произведений.
- •4.Итерационные циклы.
- •5.Вложенные циклы.
- •6.Массивы
- •7. Язык turbo pascal. Алфавит языка. Идентификаторы turbo pascal.
- •8.Константы в тп(целые, логические, вещественные, строковые)
- •9.Оператор присваивания. Приоритет операций. Стандартные функции.
- •10.Оператор условного перехода if.Составной и пустой операторы.
- •11.Оператор выбора case.Комментарии.
- •12.Операторы и процедуры безусловного перехода(goto,continue,break)
- •13.Процеуры безусловного перехода (exit, halt)
- •14.Составной и пустой операторы. Структура простой программы.
- •15.Оператор цикла со счетчиком.
- •16.Оператор цикла с постусловием.
- •17.Оператор цикла с предусловием.
- •18.Классификация типов в тп.
- •19.Целые типы. Правила объявления. Применяемые функции.
- •20.Логический тип.
- •21. Вещественный тип. Операции и функции для вещественного типа.
- •23.Структурированные типы: массивы.
- •24.Типизированные константы.
- •25.Перечислимые типы.
- •26.Изменение типа выражения.
- •27.Библиотечный модуль crt
- •28.Графические возможности тп.
- •29.Полная структура программы в Турбо Паскаль.
- •30.Структура сложной программы в Паскаль:
- •31 Подпрограммы. Структура описания. Отличие процедуры от функции.
- •32 Вложенные подпрограммы. Принципы локализации имен (локальные и глобальные).
- •33 Вызов подпрограмм (формальные и фактические параметры). Оформление на са.
- •34 Процедуры без параметров и с параметрами.
- •35 Передача в подпрограмму параметров регулярного типа (массивов, строк).
- •36 Функции. Описание. Вызов функции.
- •37 Рекурсии. Прямая и косвенная рекурсия. Директива forward.
- •38 Символьный тип.
- •39 Процедурные типы. Параметры-функции. Параметры-процедуры.
- •40 Строковый тип. Операции, процедуры и функции.
- •41 Модульное программирование. Оформление модуля в тп. Режимы компиляции
- •42 Записи. Вложенные записи. Записи с вариантами
- •43 Файловый тип. Файлы. Требования к имени. Связывание.
- •44 Текстовые файлы. Ввод (вывод) информации из файла (в файл, устройство)
- •45 Типизированные файлы и не типизированные файлы.
- •46 Адресный тип. Динамическая память. Адреса и указатели.
- •47 Структуризация. Восходящее программирование. Универсальный алгоритм перевода чисел(2,8,10,16)
- •48 Нисходящий метод проектирования программ. Алгоритм работы операционного устройства
- •49 Среда тп. Основные выполняемые функции. Система меню (работа с файлами, запуск, компиляция, отладка (Debug), работа с окнами).
- •50 Этапы подготовки и решения задач на эвм.
- •51 Решения задач на эвм (Компиляция, компоновка, загрузка, выполнение). Определение транслятора, интерпретатора.
- •52 Направления в программировании. Классификация языков программирования.
- •53 Динамические структуры данных. Списки. Очередь, стек
35 Передача в подпрограмму параметров регулярного типа (массивов, строк).
Типом любого формального параметра может быть только стандартный
или ранее объявленный тип.
Пример:
TYPE TYPE
ATYPE=ARRAY[1..10]OF REAL;
INTYPE=STRING[15];
PROCEDURE S(A:ATYPE);
OUTTYPE=STRING[30];
FUNCTION ST(S:INTYPE):
OUTTYPE
Иной способ для передачи параметров переменных отключением контроля компиляции.
Открытый массив PROCEDURE I (A: ARRAY OF REAL);
36 Функции. Описание. Вызов функции.
Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.
FUNCTION<имя>[(<формальные параметры>)]:<тип>
Сразу за заголовками может следовать одна стандартных директив: ASSEMBLER <тело подпрограммы на ассемблере>, EXTERNAL<объявление внешней подпрограммы>, FAR, FORWARD, INLINE<встроенные машинные инструменты>, INTERRUPT,NEAR. FUNCTION<имя функции>(параметр: тип); Begin <тело подпрограммы> end;
37 Рекурсии. Прямая и косвенная рекурсия. Директива forward.
Рекурсия – это такой способ организации вычислительного процесса при котором программа в ходе выполнения составляющих её операторов обращается сама к себе.
Для избежания переполнения стёка, следует размещать промежуточные результаты во вспомогательной переменной.
Begin
…………………………
F:=fac(n-1); - вспомогательная переменная
……………………….
End;
Рекурсивный вызов может быть косвенным, который разрешается опережающим описанием:
Procedure b(j: byte);
Forward;
Procedure a (i: byte);
Begin
B(i);
End;
38 Символьный тип.
Значением символьного типа является множество всех символов ПК.
Каждому символу присваивается целое число в диапазоне 0..255.Это
служит кодом внутреннего представления символа, его возвращает
функция ORD. Для кодировки используется код ASCII – 7 битный код,
т.е. с его помощью кодируется 128 символов (0..127). В то же время
в 8-битном байте, отведённом для хранения символа в ТП, можно
закодировать в 2 раза больше символов (0..255). (0-127ASCII, 128-
255-может меняться на ПК разных типов).
0-31 – служебные коды (пробелы)
39 Процедурные типы. Параметры-функции. Параметры-процедуры.
Процедурные типы – гибкое средство для передачи функций и процедур
в качестве фактических параметров обращения к другим процедурам и
функциям.
Type p1=procedure(a, b, c: real; var d: real);
F= function: string;
Любые процедуры или функции, передаваемые в качестве фактических
параметров объявляется директивой far.
Стандартные процедуры или функции ТП могут передаваться
рассмотренным образом. В программе могут быть объявлены
переменные процедурных типов.
Var p1:proc1;
F: func2;
Ap: array [1..n] of proc1;
Переменные процедурных типов допускается присваивать в качестве
значений имена соответствующих подпрограмм=> переменные становятся
синонимом имени подпрограммы.
Процедурные типы - это нововведение фирмы Borland (в стандартном Паскале таких типов нет). Основное назначение этих типов - дать программисту гибкие средства передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям.
Для объявления процедурного типа используется заголовок процедуры (функции), в котором опускается ее имя, например:
type
Prod = Procedure (a, b, c: Real; var d: Real);
Proc2 = Procedure (var a, b) ;
РгосЗ = Procedure;
Func1 = Function: String;
Func2 = Function (var s: String): Real;
Как видно из приведенных примеров, существует два процедурных типа: тип-процедура и тип-функция.
Пример 8.3 иллюстрирует механизм передачи процедур в качестве фактических параметров вызова. Программа выводит на экран таблицу двух функций:
sin1(х) = (sin(x) + 1) * ехр(-х)
cos1(x) = (cos(x) + 1) * exp(-x).
Вычисление и печать значений этих функций реализуются в процедуре PRINTFUNC, которой в качестве параметров передаются номер позиции N на экране, куда будет выводиться очередной результат (с помощью этого параметра реализуется вывод в две колонки), и имя нужной функции.
Пример 8.3.
Uses CRT;
type
Func = Function (x: Real) : Real;
{----------------}
Procedure PrintFunc (XPos: Byte; F:Func) ;
{Осуществляет печать функции F . (XPos - горизонтальная позиция начала вывода) }
const
np = 20; {Количество вычислений функций}
var
х : Real; i : Integer;
begin {PrintFunc}
for i := 1 to np do
begin
x := i * (2 * pi / np) ;
GotoXY (XPos, WhereY) ;
WriteLn (x:5:3, F(x):18:5)
end
end; {PrintFunc}
{-----------------}
Function Sin1fx: Real): Real; far;
begin
sinl := (sin(x) + 1) * exp(-x)
end;
Function Cos1(x: Real): Real; far;
begin
cosl := (cos(x) + 1) * exp(-x)
end;
{---------------}
begin {основная программа}
ClrScr; {Очищаем экран}
PrintFunc (1, sin1); GotoXY (1,1); {Переводим курсор в левый верхний угол}
PrintFunc (40, cos1)
end.
Обратите внимание: для установления правильных связей функций SIN1 и COS1 с процедурой PRINTFUNC они должны компилироваться с расчетом на дальнюю модель памяти. Вот почему в программу вставлены стандартные директивы FAR сразу за заголовками функций. В таком режиме должны компилироваться любые процедуры (функции), которые будут передаваться в качестве фактических параметров вызова.
Стандартные процедуры (функции) Турбо Паскаля не могут передаваться рассмотренным способом.
В программе могут быть объявлены переменные процедурных типов, например, так:
var
p1 : Proc1;
f1, f2 : Func2;
р : array [1..N] of Proc1;
Переменным процедурных типов допускается присваивать в качестве значений имена соответствующих подпрограмм. После такого присваивания имя переменной становится синонимом имени подпрограммы, например:
type
Proc = Procedure (n: word; var a: Byte);
var
ProcVar: Proc; x, у : Byte;
Procedure Procl(x: word; var y: Byte); far;
begin
if x > 255 then
у := x mod 255
else
у := Byte(x)
end;
begin {Главная программа}
ProcVar := Proc1;
for x := 150 to' 180 do
begin
ProcVar (x + 100, y);
Write (y:8)
end
end.
Разумеется, такого рода присваивания допустимы и для параметров-функций, например:
type
FuncType = Function (i : Integer) : Integer;
var
VarFunc : FuncType;
i : Integer;
Function MyFunc (count : Integer) : Integer; far;
begin
.......
end; {MyFunc}
begin {Основная программа}
......
i := MyFunc(1); {Обычное использование результата функции}
.......
VarFunc := MyFunc;
{Присваивание переменной процедурного типа имени функции MyFunc}
.......
end.
Отметим, что присваивание
VarFunc := MyFunc(1);
будет недопустимым, так как слева и справа от знака присваивания используются несовместимые типы: слева - процедурный тип, а справа - INTEGER; имя функции со списком фактических параметров MyFunc(1) трактуется Турбо Паскалем как обращение к значению функции, в то время как имя функции без списка параметров рассматривается как имя функции.
В отличие от стандартного Паскаля, в Турбо Паскале разрешается использовать в передаваемой процедуре (функции) любые типы параметров: параметры-значения, параметры-переменные, параметры-константы (в стандартном Паскале только параметры-значения).