
- •Часть 1
- •Предмет и задачи информатики
- •История эвм
- •Состав вычислительной системы
- •Аппаратное обеспечение
- •Программное обеспечение
- •Операционная система
- •Кодирование Двоичный код
- •Кодирование чисел
- •Кодирование текстовых данных
- •Кодирование графических данных
- •Представление цвета в машинной графике
- •Кодирование звуковой информации
- •Прикладное программное обеспечение Системы обработки текстов
- •Интегрированный пакет Microsoft Office
- •Текстовый процессорWord
- •Создание в документе листа Microsoft Excel
- •О рисунках и других графических объектах
- •Закрепление областей листа
- •Скрытие и отображение столбцов и строк
- •Выделение фрагментов документа
- •Ввод данных с клавиатуры
- •Ввод текста
- •Ввод чисел
- •Ввод формул с клавиатуры
- •Установка границ ячеек
- •Работа с диаграммами
- •Работа с базами данных Основные понятия
- •Объекты базы данных
- •Запросы
- •Страницы
- •Макросы и модули
- •Безопасность баз данных
- •Технологии программирования
- •Алгоритм, программа
- •Интегрированная среда разработки приложений в Delphi
- •Стандарт и диалекты языка
- •Основы Паскаля
- •Основные понятия языка Алфавит
- •Имена и идентификаторы
- •Программные элементы
- •Описания
- •Раздел констант
- •Типизированные константы
- •Переменные
- •Функции и процедуры
- •Правила записи текста программы
- •Концепция данных
- •Основные типы данных Целые типы
- •Битовые операции
- •Вещественные типы
- •Тип дата-время
- •Символьные типы
- •Логические типы
- •Выражения
- •Оператор присваивания
- •Составной оператор
- •Раздел меток
- •Оператор перехода
- •Пустой оператор
- •Раздел типов
- •Условный оператор
- •Перечислимые типы (перечни)
- •Оператор варианта
- •Ограниченные типы
- •Операторы цикла
- •Операторы цикла с параметром
- •Оператор цикла с постусловием
- •Оператор цикла с предусловием
- •Регулярные типы (массивы)
- •Многомерные массивы
- •Комбинированные типы (записи)
- •Оператор присоединения
- •Подпрограммы
- •Подпрограммы-процедуры
- •Подпрограммы-функции
- •Формальные и фактические параметры
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •ПроцедураExit
- •Процедурные типы
- •Множественные типы
- •Оглавление
- •Часть 1
Формальные и фактические параметры
Формальные параметрызадаются при объявлении подпрограммы,фактические параметры– при вызове подпрограммы. Типы фактических параметров должны быть идентичны типам формальных параметров. Их число должно быть равно числу формальных параметров, должен совпадать и порядок следования фактических параметров с порядком записи формальных. Механизм передачи данных через формальные параметры реализуется с использованием специальной области памяти –стека. По умолчанию размер стека установлен 16384 байта. Можно изменить объем стека в настройках среды Delphi.
Параметры-значения
Синтаксис задания параметров-значений
<секция форм. параметров-значений>::=<имя>{,<имя>}:<имя типа>
В этом случае для фактического параметра создается копия в стеке. При вызове подпрограммы на месте параметра-значения может стоять выражение, совместимое по типу с формальным параметром. В подпрограмме его значение измениться не может. Входные параметры, задают как параметры-значения. Передавать в подпрограмму массивы в виде параметров значений нецелесообразно, так как расходуется лишняя память – в стеке создается дополнительная копия массива.
Параметры-переменные
Синтаксис задания параметров-переменных
<секция форм. параметров-переменн.>::=var<имя>{,<имя>}:<имя типа>
При использовании в подпрограммах параметров-переменных в стеке выделяются ячейки для размещения адресов фактических параметров. В отличие от параметров-значений, в подпрограмме значения параметров-переменных могут изменяться. Так как фактические параметры в этом случае передаются по адресу, любое изменение параметра-переменной внутри подпрограммы фиксируется в фактическом параметре. Выходные параметры задают как параметры-переменные.
Параметры-константы
Входные параметры могут передаваться в подпрограмму как параметры-константы. Синтаксис задания параметров-констант
<секция форм. парам. констант>::= const<имя>{,<имя>}:<имя типа>
Параметры-константы введены для того, чтобы ключевое слово varсохранить за выходными параметрами, а входной параметр мог передаваться по адресу. Компилятор сам определяет, что передавать по адресу, а что как копию. Например, простые переменные передаются как копии, а массивы – по адресу. Изменить параметры-константы внутри подпрограммы нельзя. Вместо параметров-констант можно подставлять выражения, как и для параметров-значений.
ПроцедураExit
Эту процедуру используют для досрочного выхода из подпрограммы.
Пример.
Пусть задан массив вещественных чисел. Найти первый отрицательный элемент в этом массиве
type mass= array[1..100] of real;
. . . . . . . . . . .
function Minus(const a1: mass):real;
var i:byte;
begin
for i:=1 to High(a1) do
if a1[i]<0 then begin Result:=a1[i]; Exit end
end;
Процедурные типы
В Паскале допускается использование в качестве параметров процедур и функций других процедур и (или) функций. Формальный параметр-процедура (функция) задается в виде заголовка той процедуры (функции), имя которой может быть задано в качестве фактического параметра – при этом имя такой процедуры (функции) и ее формальные параметры выбираются достаточно произвольным образом. В качестве параметров нельзя использовать процедуры (функции), фактические параметры которых вызываются по имени, т.е. параметрами таких процедур могут быть только параметры-значения. Это ограничение снижает гибкость использования процедур, но повышает надежность программ.
Применение процедурных типов требует установления специального дальнегомеханизма компилирования программы, который можно задать, поместив в начало программы директиву компилятору{$F+}.
Пример.
type f1= function (x: real):real;
. . . . . . . . . . . .
{$F+}
functionfr(x: real):real;
begin fr:=x-cos(x) end;
functionfg(x: real):real;
begin fg:=x*x+sin(x) end;
functionSUM (f:f1;m,k:integer):real;
vari : integer; r : real;
begin r:=0; for i:=m to k do r:=r+f(i); sum:=r end;
Тогда в программе можно записать, например, такой оператор
y:= SUM(fr,1,10)/SUM(fg,5,11)