- •1. Алгоритмизация
- •1.1.Функциональная схема эвм.
- •1.2. Этапы решения задач на эвм.
- •1.3. Язык блок-схем для представления алгоритмов
- •1.4. Базовые структуры алгоритмов
- •1.5. Конструирование сложных алгоритмов
- •2. От алгоритма к программе
- •2.1. Концепция данных в Турбо-Паскале
- •2.2. Структура Паскаль - программы
- •2.3. Комментарии
- •2.4 Операторы
- •2.4.1 Оператор присваивания
- •2.4.2. Составной оператор
- •2.4.3. Логические выражения
- •2.4.4. Условный оператор
- •2.4.5. Оператор цикла с параметром
- •2.4.6. Оператор цикла с постусловием
- •2.4.7. Оператор цикла с предусловием
- •2.5. Производные типы
- •2.5.1 Перечислимые типы
- •2.5.3. Регулярные типы (массивы)
- •2.5.4. Многомерные массивы
- •2.5.5.Комбинированные типы (записи)
- •2.6. Подпрограммы
- •2.6.1. Функции
- •2.6.2. Процедуры
- •2.6.3. Формальные и фактические параметры
- •2.6.4. Параметры - значения
- •2.6.5. Параметры - переменные
- •2.6.6. Параметр - массив
- •2.6.7. Параметры подпрограмм без указания типа
- •2.6.8. Параметры - процедуры и параметры - функции
- •2.6.9 Локальные и глобальные переменные
- •3. Задания
- •3.1. Построение таблицы значений функции.
- •3.2 Вычисление сумм и произведений.
- •3.3. Вычисление функции разложением в ряд
- •3.4 Обработка одномерных массивов.
- •3.5 Проверка попадания точки в заданную область
- •3.6. Нахождение экстремумов последовательностей
- •3.7.Обработка простых двумерных массивов.
- •3.8 Обработка двумерных массивов
- •3.9. Разработка алгоритмов и программ нисходящим способом
- •3.10.Задачи на обработку символьных данных сложной структуры
- •Создать исходный типизированный файл.
- •Результаты записать в текстовый файл.
- •3.11 Задачи с использованием имени массива как параметра функции
- •3.12. Задача на использование формальных массивов в процедурах
- •3.13. Задачи на разработку программы с использованием созданной по условию процедуры
- •3.14.Задачи на использование функций в качестве параметров других функций.
- •3.15. Разработка многомодульных программ.
2.6.3. Формальные и фактические параметры
Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой подпрограмме (количества параметров, их последовательность и типы). Они задаются в заголовке подпрограммы в виде списка, разбитого на группы, разделенные точками с запятой. В группы включаются однотипные параметры одной категории.
Все формальные параметры можно разбить на следующие категории:
-
параметры-значения;
-
параметры-переменные;
-
параметры процедурного типа.
Тип формального параметра может быть любым, однако, в заголовке подпрограммы нельзя вводить определение нового типа.
Например, нельзя писать: Function Max( a: array[ 1..100] of real ): real;.
Чтобы правильно записать этот заголовок, следует в основной программе ввести имя нового типа, задающего массив, а затем использовать это имя в заголовке для описания формального параметра:
Type tarr = array[1..100] of real;
Function Max( a: tarr ): real;
При обращении к подпрограмме формальные параметры заменяются на фактические и последние участвуют в вычислениях.
2.6.4. Параметры - значения
Параметра - значения указываются в заголовке подпрограммы своим именем и через двоеточие - типом. Тип параметра - значения может быть любым за исключением файлового. Если параметров - значений одного типа несколько, их можно объединить в группу, перечислив имена через запятую, а затем после двоеточия указать их общий тип. Группы параметров разделяются точками с запятой.
Параметры - значения при вызове подпрограммы пересылаются в нее в виде копий значений фактических параметров. Из этого следует, что если даже подпрограмма изменит полученное значение параметра, в вызывающей программе никаких изменений не произойдет.
2.6.5. Параметры - переменные
Параметр переменная указывается в заголовке подпрограммы аналогично параметру - значению, но только перед именем параметра записывается слово Var. Действие слова Var распространяется до ближайшей точки с запятой, т.е. в пределах одной группы.
Например: Procedure F( i: integer; Var k,l: real; a: real ); .
В этом примере i, a - параметры значения, k,l - параметры - переменные.
При передаче подпрограмме фактического параметра - переменной, ей передается адрес параметра, т.е. подпрограмма получает доступ к памяти вызывающей программы. Поэтому если в процессе выполнения подпрограммы значение такого фактического параметра будет изменено, изменение коснется данных основной программы.
Выходные параметры процедур всегда должны быть параметрами - переменными, иначе результаты вычислений не будут доступны вызывающей программе.
2.6.6. Параметр - массив
Массив это производный тип данных. Поэтому для того чтобы передать массив в качестве параметра в подпрограмму, необходимо в разделе типов программы ввести новый тип, задающий требуемый массив. Именем этого типа описываются формальный параметр в заголовке подпрограммы и соответствующий ему фактический параметр. Рассмотрим такой параметр на примере функции, определяющей максимальный элемент в одномерном массиве.
Program MAXIM;
{ задание нового типа - одномерного массива из 100
вещественных чисел}
Type vect = array[ 1..100 ] of real;
Var x: vect;
k: integer;
v: real;
{ функция, находящая значение максимального
элемента в массиве }
{ входной параметр a - исходный массив, n - число
элементов в нем}
Function Max( a: vect; n: integer ): real;
Var I: integer;
s: real;
Begin
s := a[1];
For i := 1 to n Do
If a[i] > s Then s := a[i];
Max := s
End;
{ раздел операторов программы }
Begin
{ ввод массива x }
Writeln( ‘введите массив’ );
For k := 1 to 100 Do
Readln( x[k] );
{ обращение к функции Max }
v := Max( x, 100 );
Write( ‘max x = ‘, v)
End.
Функция Max из рассмотренного примера может быть вызвана только для массива, описанного типом vect.
Как написать подпрограмму, применимую для любого массива, рассмотрим в следующем разделе.