ЛАБОРАТОРНАЯ РАБОТА № 9
Тема: Использование процедур и функций в программе на Pascal Цель работы: Изучение особенностей использования процедур и функций
Пояснения к работе Подпрограмма – это часть программы, оформленная в виде отдельной синтаксической конструкции и снабженная именем. Вызов подпрограммы (т.е. выполнение действий, заданных в подпрограмме) может быть произведен в некоторой точке программы посредством указания имени этой подпрограммы. Подпрограммы определяются в разделе описания процедур и функций программы.
Процедуры
Процедура – это поименованное сложное действие ,которое представляет собой совокупность операторов.
Описание процедуры:
Procedure <имя_процедуры> [ (список формальных параметров) ];
Var
Объявление локальных переменных
Begin
операторы процедуры
End; Вызов процедуры осуществляется в следующей форме:
<имя_процедуры> [ (список фактических параметров) ]; Функции
Функция предназначена для вычисления какого-либо одного значения и используется в выражениях аналогично стандартным функциям.
Описание функции:
Function<имя_функции > [ (список формальных параметров) ] : тип_результата;
Var
Объявление локальных переменных
Begin
Операторы функции
End;
Для вызова функции используется имя функции со списком фактических параметров, имя обязательно должно быть частью какого-либо выражения (входить в правую часть оператора присвоения, присутствовать в списке данных оператора вывода, в логическом выражении условного оператора)
Отличия функции от процедуры:
результатом обращения к функции может быть одно единственное значение;
идентификатор результата не указывается в списке формальных параметров;
в выполняемой части функции, хотя бы один раз , имени функции должно быть присвоено значение результата (чаще всего перед выходом из функции);
после списка формальных параметров задается тип результата;
после обращения к функции управление передается на выполнение следующей операции данного выражения (в соответствии с приоритетом).
Фактические и формальные параметры При описании процедуры (функции) может указываться список формальных параметров. Каждый параметр является локальным по отношению к описываемой процедуре (функции), к нему можно обращаться только в пределах данной процедуры (функции). Фактические параметры – это параметры, которые передаются процедуре (функции) при обращении к ней. Число и тип формальных и фактических параметров должны совпадать.
Локальные и глобальные переменные В любой программе все переменные делятся на глобальные и локальные. Глобальные переменные – это переменные из раздела описания основной части программы, а локальные - из раздела описания процедур и функций. Локальные переменные существуют только в течение времени работы процедуры, определяются при ее вызове и исчезают после завершении работы процедуры. Пример выполнения работы:
Условие задачи: Разработать программу перестановки значений переменных A, B, C в порядке возрастания, т.е. так, чтобы AVar
A, B,C :Integer;
Procedure SWAP(Var X,Y:Integer);
Var
T: Integer;
Begin
T:=X; X:=Y; Y:=T;
End;
Begin
Readln(A, B,C);
If A>B Then Swap(A,B);
If B>C Then Swap(C,B);
If A>B Then Swap(A,B);
Writeln(A, B,C);
End.
| Пояснение При вызове процедуры Swap(A,B) управление передается на участок программного кода, занимаемый процедурой Swap. При этом значение переменной А присваивается переменной X, а значение переменной B становится значением переменной Y. При изменении переменной X произойдет изменение значения и переменной A. После выполнения процедуры осуществляется возврат на оператор основной программы, следующий за вызовом процедуры.
| Условие задачи: Разработать программу вычисления суммы трех чисел, используя функцию сложения двух чисел
Var
A,B,C :Integer;
Function SUM (X,Y:INTEGER) : INTEGER;
Begin
SUM:=X+Y;
End;
Begin
Readln(A, B, C);
Writeln(SUM(SUM(A, B ), C) );
End.
| Пояснение При вызове функции SUM(A,B); управление вычислительным процессом передается на участок программного кода, занимаемый функцией SUM. При этом значение переменной А присваивается переменной X функции SUM, а значение переменной B становится значением переменной Y. Имени функции присваивается результат сложения и осуществляется возврат в основную программу. Результат, полученный после первого вызова функции, подставляется в качестве фактического параметра вместе с переменной С и выполняется второй вызов функции. После возврата из функции управление передается оператору Writeln, который выводит результат функции.
|
Контрольные вопросы
Что такое процедура?
Что такое функция процедура?
В чем разница между функцией и процедурой?
Как оформляются определенные в программе функции и процедуры?
Что такое формальные и фактические параметры?
Как в программе выполнить процедуру или функцию?
Варианты к лабораторной работе №9
(ваш номер по журналу соответствует номеру варианта)
№
| Задание 1 (определение функции)
Задание 2 (определение процедуры)
| 1
| Для следующей программы написать функцию, которая определяет выполняется ли теорема Пифагора для трех величин.
READLN( A,B,C);
IF (PIF(A,B,C)=0 ) AND (PIF(B,C,A)=0) AND (PIF(A,C,B)=0) THEN WRITELN(‘НЕ ПРЯМОУГОЛЬНЫЙ» ELSE WRITELN(‘ПРЯМОУГОЛЬНЫЙ’);
| Ввести три числа. У каждого числа поменять знак, использовать свою процедуру замены числа на такое же значение с изменением знака.
| 2
| Ввести два числа. Определить в каком из них сумма цифр больше, используя функцию вычисления суммы цифр одного числа.
| Ввести пять слов. В каждом слове заменить буквы А на О. Использовать процедуру замены в строке букв А на О.
| 3
| Вычислить 4!+7!+2!, используя функцию вычисления факториала.
| Ввести три числа. Вывести первые цифры чисел. использовать процедуру замены числа на его первую цифру.
| 4
| Вычислить НОД(A,B)+НОД(C,B)+НОД(A,C), используя функцию нахождения НОД (наибольшего общего делителя) для двух чисел.
| Ввести три числа. Каждое число заменить на остаток от деления числа на 8. Использовать процедуру замены числа остатком от деления на 8 (mod не использовать).
| 5
| В пятиугольнике известны стороны и диагонали. Найти площадь пятиугольник, используя функцию вычисления площади треугольника по трем сторонам.
| Ввести три числа. Каждое число заменить на целую часть от деления на 3. Использовать процедуру замены числа целой частью от деления на 3 (div не использовать).
| 6
| Получить все шестизначные счастливые числа. Счастливым называют такое число, для которого сумма первых трех его цифр равна сумме последних трех его цифр. Использовать функцию определения суммы цифр трехзначного числа.
| Ввести два числа. Найти сумму чисел из первых двух цифр каждого числа, используя процедуру , которая оставляет только первые две цифры числа. Например, даны 1234 и 5432,результат 12+54=66.
| 7
| Ввести два числа. Найти количество цифр в двух числах, используя функцию вычисления количества цифр в одном числе.
| Ввести четыре цифры. Из цифр получить наименьшее число, которое можно получить из этих цифр, используя процедуру перестановки местами значений двух величин.
| 8
| Найти tg(2x)+tg(3x)/tg(x2), используя функцию вычисления тангенса.
| В учебном заведении три компьютерных класса. Ввести площадь каждого класса и количество компьютеров в нем. Для каждого класса вывести сообщение нарушены или не нарушены требования (на 1 ПК не менее 6 кв.м) . использовать свою процедуру проверки и вывода сообщения.
| 9
| Ввести стороны четырехугольника и его диагональ. Найти площадь четырехугольника, используя в качестве процедуры вычисление площади треугольника по трем сторонам (формула Геррона)
| Ввести три слова. В каждом слове заменить буквы О на У. Использовать процедуру замены в строке букв О на У.
| 10
| Вычислить 53+34+27, используя функцию возведения числа в степень
| Отсортировать одномерный массив по убыванию, используя процедуру перестановки местами значений двух величин.
| 11
| Даны стороны двух треугольников. Найти сумму их площадей, используя функцию вычисления площади треугольника по его сторонам
| Разработать программу перестановки значений переменных A, B, C в порядке убывания возрастания, т.е. так, чтобы A>B>C , используя процедуру перестановки двух значений.
| 12
| Вычислить s=min(a,b,c)+max(b,c)/min(a,c).
| Ввести четыре числа. Каждое число заменить на остаток от деления числа на 7. Использовать процедуру замены числа остатком от деления на 7(mod не использовать).
| 13
| В круглой заготовке радиуса R вырезаны два круглых отверстия радиусы которых R1 и R2. Найти площадь круглой заготовки, используя функцию вычисления площади окружности
| Ввести три целых числа каждое число заменить его модулем, используя свою процедуру замены числа на его модуль. (встроенной функцией ABS не пользоваться).
| 14
| Вычислить z=min(a,3b)*min(2a,-b,2b), используя функцию вычисления минимума из двух значений.
| Ввести пять чисел. В каждом числе удалить «хвостовые» цифры 5. (например, дано 2355, результат 23). Использовать процедуру замены исходного числа на значение, полученное после удаления «хвостовых» 5.
| 15
| Ввести два числа. Найти сумму всех цифр первого и второго числа, используя функцию нахождения суммы одного числа.
| Разработать программу перестановки значений переменных A, B, C,D в порядке возрастания, т.е. так, чтобы A | 16
| Ввести пять чисел. Найти сумму максимального и минимального, используя две функции: нахождения минимума из двух значений и максимума из двух значений.
| Ввести три цифры. Из цифр получить наименьшее число, которое можно получить из этих цифр, используя процедуру перестановки местами значений двух величин.
| 17
| Вычислить НОД(A,B,C)+НОД(A,B,C,D), используя функцию нахождения НОД (наибольшего общего делителя) для двух чисел.
| Ввести три числа. Найти сумму первых цифр каждого числа, используя процедуру , которая оставляет только первую цифру числа.
Например, даны 12 , 520, 231 ,результат 1+5+2=8
| 18
| Вычислить s=max(a,b)/min(a,c)+max(b,c).
| Ввести три числа. Вывести последние цифры чисел. Использовать процедуру замены числа на его последнюю цифру.
| 19
| Вычислить Y=MIN(A,3B)*MIN(2A-B, 2B), используя функцию нахождения минимума для двух чисел.
| Ввести три даты (день, месяц). Для каждой даты вывести сообщение правильно ли дата определена (не существует 32 дня и 13 месяца). Использовать свою процедуру проверки и вывода сообщения.
| 20
| Даны шесть чисел. Найти максимальное, используя функцию нахождения максимума из двух значений
| Ввести четыре числа. В каждом числе удалить «хвостовые» единицы. (например, дано 2311, результат 23). Использовать процедуру замены исходного числа на значение, полученное после удаления «хвостовых» единиц.
| 21
| Вычислить , используя функцию вычисления
| Ввести три даты (день, месяц). Для каждой даты вывести дату предыдущего дня . Использовать свою процедуру замены введенной даты на дату предыдущего дня.
| 22
| Вычислить 3!+6!+4!, используя функцию вычисления факториала.
| Ввести четыре слова. В каждом слове заменить буквы Е на Н. Использовать процедуру замены в строке букв Е на Н.
| 23
| Вычислить z=sign(x)+sign(y), где
Sign( a)=
| Отсортировать одномерный массив по возрастанию, используя процедуру перестановки местами значений двух величин.
| 24
| Ввести десять чисел. Найти минимальное, используя функцию нахождения минимума из двух значений.
| Ввести пять вещественных чисел. Каждое число округлить до ближайшего целого. Использовать процедуру замены числа результатом его округления (встроенной функцией ROUND не пользоваться).
| 25
| Ввести два числа. Определить в каком числе больше цифр, используя функцию определения количества цифр для натурального числа.
| Ввести три цифры. Из цифр получить наибольшее число, которое можно получить из этих цифр, используя процедуру перестановки местами значений двух величин.
| 26
| Ввести шесть различных чисел. Найти максимальное, используя функцию нахождения максимума из двух значений.
| Ввести три числа. Вывести сумму цифр каждого числа. Использовать процедуру замены числа на сумму его цифр.
| 27
| Даны три квадратных уравнения AX2+BX+C=0
BX2+AX+C=0
CX2+AX+B=0
Определить, сколько из них имеют вещественные корни, используя функцию вычисления корней квадратного уравнения.
| Ввести четыре цифры. Из цифр получить наибольшее число, которое можно получить из этих цифр, используя процедуру перестановки местами значений двух величин.
| 28
| Вычислить A3+B4+C7, используя функцию возведения числа в целую степень
| Разработать программу перестановки значений переменных A, B, C,D в порядке убывания возрастания, т.е. так, чтобы A>B>C>D.
| 29
| Вычислить , используя функцию вычисления
| Ввести три числа – номера месяцев. Вывести количество дней в каждом месяце. Использовать свою процедуру замены номера месяца на количество дней в нем
| 30
| Вычислить tg(x)+tg2(5x)/tg(x2), используя функцию вычисления тангенса.
| Ввести три числа. Каждое число заменить на целую часть от деления на 3. Использовать процедуру замены числа целой частью от деления на 3 (div не использовать).
| 31
| Вычислить s=max(a,b)+min(a,b,c)+max(a,c)
| Ввести три числа. В каждом числе удалить «хвостовые» нули. (например, дано 2300, результат 23). Использовать процедуру замены исходного числа на значение, полученное после удаления «хвостовых» нулей.
| 32
| Ввести восемь чисел. Найти максимальное, используя функцию нахождения максимума из двух значений.
| Ввести три даты (день, месяц). Для каждой даты вывести дату следующего дня. Использовать свою процедуру замены введенной даты на дату следующего дня.
|
|