
- •Учебно-методическое пособие по изучению теоретического материала и самостоятельному выполнению лабораторных заданий
- •1. Введение
- •2. Общие методические рекомендации по изучению курса
- •3. Методические рекомендации по изучению теоретического материала курса
- •3.1 Содержание разделов дисциплины
- •Тема 1. «Структура программы на языке «Паскаль». Основные типы данных. Правила записи имён в языке Паскаль. Линейные вычислительные процессы.»
- •Тема 2. «Базовые конструкции языка «Паскаль». Ветвящиеся вычислительные процессы.»
- •Тема 3. «Одномерные и многомерные массивы. Циклические вычислительные процессы.»
- •Тема 4. «Обработка символьной информации»
- •Тема 5. «Процедуры в языке Паскаль»
- •Тема 6. «Функции в языке Паскаль»
- •Тема 7. Рекурсивные функции. Явная и неявная рекурсия.
- •Тема 8. Многомодульные приложения (дополнительная тема).
- •4. Методические рекомендации по выполнению лабораторных работ
- •4.1 Лабораторная работа №1 «Структура программ на языке Паскаль, основные типы данных, основные операции, линейные вычислительные процессы»
- •Варианты заданий на лабораторную работу № 1.
- •Var a,b,c,r : real;
- •Var a,b,c,r : real;
- •Var a,b,c,r : real;
- •4.2 Лабораторная работа №2 «Условные операторы. Правила записи условий простые и сложные условия, ветвящиеся вычислительные процессы»
- •Варианты заданий на лабораторную работу № 2.
- •Var a,b,X : real;
- •Var a,b,X : real;
- •Var a,b,X : real;
- •Var a,b,X : real;
- •Var a,b,X : real;
- •4.3 Лабораторная работа №3 «Массивы и циклы в языке Паскаль»
- •Варианты заданий на лабораторную работу № 3.
- •4.4 Лабораторная работа №4 «Обработка символьной и строковой информации в языке Паскаль»
- •Варианты заданий на лабораторную работу № 4.
- •4.5 Лабораторная работа №5 «Процедуры в языке Паскаль»
- •Варианты заданий на лабораторную работу № 5.
- •Var a,b : integer; // Числа, вводимые пользователем
- •I : integer; // Счётчик цикла
- •Var a,b : integer; // Числа, вводимые пользователем
- •I : integer; // Счётчик цикла
- •Var a,b : integer; // Числа, вводимые пользователем
- •I : integer; // Счётчик цикла
- •Var X : integer;
- •Var I : integer; // Счётчик цикла
- •4.6 Лабораторная работа №6 «Функции в языке Паскаль»
- •Варианты заданий на лабораторную работу № 6.
- •Пример решения типовой задачи лабораторной работы № 6.
- •Var I : integer; // Счётчик цикла
- •Var X : integer;
- •Var X : integer;
- •В результате внесённых изменений наша программа примет следующий вид:
- •Var X : integer;
- •Результат работы этой программы представлен на следующем рисунке:
- •Var X : integer;
- •4.7 Лабораторная работа №7 «Рекурсия и рекурсивные функции в языке Паскаль»
- •Варианты заданий на лабораторную работу № 7.
- •Var x1, x2, Xn : real; // Вычисляемые числа
- •Var x1, x2, Xn : real; // Вычисляемые числа
- •Var x1, x2, Xn : real; // Вычисляемые числа
- •Var r : real ; // Граница вычислений, вводимая пользователем
- •Var x1, x2, Xn : real ; // Вычисляемые числа
- •I : integer; // Число итераций цикла
- •Var r : real ; // Граница вычислений, вводимая пользователем
- •Var Xn : real; // Вычисляемые числа
- •Var Xn : real; // Вычисляемые числа
- •5. Вопросы для подготовки к зачёту
- •6. Список рекомендуемой литературы
- •7. Программное обеспечение и Интернет-ресурсы
Варианты заданий на лабораторную работу № 6.
Варианты заданий на работу №6 полностью совпадают с вариантами заданий на предыдущую работу №5
Пример решения типовой задачи лабораторной работы № 6.
Рассмотрим решение поставленной в шестой лабораторной работе задачи на примере аналогичного варианта задания для пятой лабораторной работы:
Написать программу, в которой:
|
Этап первый. Преобразование основной вычислительной процедуры из предыдущей работы в функцию, возвращающую значение вычисления.
Отличие функций от процедур состоит в том, что функции, имея все возможности процедур, имеют ещё одну дополнительную возможность, а именно – возвращать одно значение напрямую, без использования параметров.
Следовательно, для того, что бы преобразовать написанную в предыдущей работе вычислительную процедуру в функцию нам необходимо:
Заменить слово «Procedure» на слово «Function».
Удалить из заголовка параметр «Z».
Добавить тип возвращаемого значения функции.
Присвоить вычисленный результат самой функции.
Присвоить полученное значение нужной переменной в главной части программы.
Исходная процедура:
Procedure Calc(x,y : integer; var z : integer);
Var I : integer; // Счётчик цикла
Begin
z:=0;
for i:=x to y do
if (z > (2147483647 - i*i))
then begin z:=-1;
break; // Оператор досрочной остановки цикла.
End
else z:=z + i*i;
End;
Функция, вычисляющая то же самое:
Function Calc(x,y : integer) : integer;
var i : integer; // Счётчик цикла
z : integer; // Вычисляемый результат
Begin
z:=0;
for i:=x to y do
if (z > (2147483647 - i*i))
then begin z:=-1;
break; // Оператор досрочной остановки цикла.
End
else z:=z + i*i;
Calc:=z; // Вычисленный результат возвращается из функции.
End;
Изменение главной части программы:
Rez:=Calc(a,b); // Вызов функции вычисления.
Этап второй. Преобразование процедуры ввода исходных данных в функцию, возвращающую значение ввода без использования параметров-переменных.
Рассмотрим исходную процедуру ввода данных:
Procedure Vvod(var p1, p2 : integer);
Var X : integer;
Begin
Write('Введите начало диапазона. a='); Readln(p1);
Write('Введите окончание диапазона. b='); Readln(p2);
if p1>p2
then Begin
Writeln('Нижняя граница выше верхней');
x:=p1;
p1:=p2;
p2:=x;
Writeln('Значение границ изменено: a=', p1,' b=', p2);
End;
End;
Так как по условию задачи мы не можем использовать параметры-переменные, а функция может напрямую возвратить только одно значение, то, следовательно, внутри функции должен быть организован ввод только одного числа.
Кроме того. В этом случае мы не сможем проверить корректность границ внутри функции. Эту проверку придётся вынести в главную часть программы.
В результате функция ввода будет выглядеть так:
Function Vvod : integer;