Студопедия — Пример разработки подпрограммы функции
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Пример разработки подпрограммы функции






Задача. Разработать функцию вычисления среднего арифметического трех заданных чисел.

 

 

Решение.

1) Разработка определения функции.

Функция реализует алгоритм, входными данными которого являются три вещественных числа

Результатом функции должно быть среднее арифметическое трех вещественных чисел, то есть одно вещественное число.

Следовательно, функция вычисляет значение и только одно. Следующая диаграмма позволяет уяснить:

· что возвращает функция и возвращает ли вообще – т.е. определить тип функции;

· какие данные являются входными для алгоритма этой функции

2) Математическая модель задачи.

a, b, c – три числа

формула вычисления среднего арифметического (a+b+c)/3

 

Определение функции

Function average (a, b, c:real):real

{

average:=(a+b+c)/3;

 

}

3) разработка алгоритма основной программы.

Begin

Ввод значений первой тройки чисел в переменные a1, b1, c1

Вычислить значение функции и результат присвоить переменной z

Вывод значения z

Ввод значений второй тройки чисел в переменные a2, b2, c2

Вызов функции для значений переменных a2, b2, c2 в операторе вывода

If(среднее ар. Первой тройки чисел=среднему арифм. Второй тройки чисел)

Вывод сообщения: равны

Else

If (среднее ар. Первой тройки чисел>среднему арифм. Второй тройки чисел)

Вывод сообщения: первая больше второй

Else

Вывод сообщения: вторая больше первой

end

 

4) реализация разработки

Program prim1;

 

function average (a, b, c:real):real

begin

average:=(a+b+c)/3;

end;

 

 

(* текст основной программы *)

var

a1, b1, c1, a2, b2, c2, z:real; //глобальные переменные

BEGIN

Writeln(‘введите значения первой тройки чисел’);

Readln(a1, b1, c1);

Z:=(average(a1,b1,c1); //вызов функции и присваивание рез-та

Writeln(‘Среднее арифм. Чисел=’, z);

Writeln(‘введите значения второй тройки чисел);

Readln(a2, b2, c2);

Writeln(‘среднее арифметическое чисел a2,b2,c2=’, average(a2,b2,c2));

if (average(a1,b1,c1) = = average(a2,b2,c2))

writeln(‘среднее арифм. исел равны”;

else

if (average(a1,b1,c1) >average(a2,b2,c2))

writeln(первая больше второй ”;

else

writeln(‘вторая больше первой”;

end.

5) Набор тестов.

Тест 1.

Входные данные:

A1=1, b1=2,c1=3, a2=1,b2=2,c2=3

Эталон результата

Среднее арифметическое чисел 1, 2, 3 = 2

Среднее арифметическое чисел 1 2 3 =2

Равны

Тест 2.

Входные данные:

A1=1, b1=5,c1=3, a2=1,b2=2,c2=3

Среднее арифметическое чисел 1 5 3 = 3

Среднее арифметическое чисел 1 2 3 =2

Первый больше второго

Тест 3.

Входные данные:

A1=1, b1=2,c1=3, a2=1,b2=5,c2=3

Эталон результата

Среднее арифметическое чисел 1 2 3 = 2

Среднее арифметическое чисел 1 5 3 =3

Второй больше первого

 

 

Варианты

Вариант1.

1.Разработать функцию, которая вычисляет количество единиц в двоичном коде целого числа.

2. Разработать процедуру, которая в последовательности целых чисел находит число, в двоичном представлении которого больше всего единиц и количество единиц в этом числе.

3. Дана последовательность из n целых чисел. Определить количество чисел, содержащих в своей десятичной записи хотя бы одну цифру 7 и являющихся простыми числами.

 

Вариант2

1. Разработать функцию, которая определяет, образует ли последовательность цифр в целом числе арифметическую прогрессию.

2. Разработать процедуру, которая в последовательности целых чисел находит количество чисел, цифры которых образуют арифметическую прогрессию и максимальное среди этих чисел.

3. Дана последовательность целых чисел, заканчивающаяся отрицательным числом. Если последовательность упорядочена по возрастанию, то определить «максимальное расстояние» между парой чисел следующих друг за другом, а если нет, то определить, сколько раз было нарушено правило упорядоченности по возрастанию.

 

Вариант3

1. Разработать функцию, которая определяет, является ли целое число простым.

2. Разработать процедуру, которая в последовательности целых чисел находит количество простых чисел и максимальное среди этих чисел.

3. Дана последовательность из n целых чисел. Для скольких чисел последовательности выполняется условие: сумма цифр числа является степенью трех.

 

Вариант4

1. Разработать функцию, которая преобразует целое число по правилу: удаляет из записи этого числа цифры 3 и 7, оставляя порядок оставшихся цифр прежним.

2. Разработать процедуру, которая в последовательности целых чисел находит количество преобразованных по правилу 1 чисел и наименьшее среди этих чисел.

3. Дана последовательность из n целых чисел. Вывести те числа последовательности, у которых первая и последняя цифры равны и которые не содержат цифры нуль.

 

Вариант5

1. Разработать функцию, которая определяет сумму цифр целого числа.

2. Разработать процедуру, которая в последовательности целых чисел находит количество чисел, сумма цифр которых кратна 7 и максимальное среди них.

3. Дана последовательность целых чисел, заканчивающаяся нулем. Найти количество чисел последовательности, являющиеся степенью двух и сумма цифр этих чисел кратна 7..

 

Вариант6

1. Разработать функцию, которая определяет делиться ли целое число на каждую из своих цифр.

2. Разработать процедуру, которая в последовательности целых чисел находит количество чисел, делящихся на каждую из своих цифр и минимальное среди них.

3. Дана последовательность из n целых чисел. Определить, количество чисел у которых первая цифра в записи числа больше последней и цифры числа упорядочены по убыванию.

Вариант7

1. Разработать функцию, которая определяет, является ли целое число степенью двух, т.е. можно ли его представить в виде 2P.

2. Разработать процедуру, которая определяет, является ли целое простым числом

3. Разработать процедуру, которая в последовательности целых чисел подсчитывает количество чисел являющихся числом Мерсена. (число N является числом Мерсена, если это простое число и N+1=2P) и количество простых чисел, не являющихся числом Мерсена.

Вариант8

1. Разработать функцию, которая определяет НОД двух целых чисел.

2. Разработать функцию, которая вычисляет НОК и НОД последовательности из N целых чисел. (НОК(a1, a2, a,3 a4….. aN).= (a1,* a2* a,3*a4*…..*aN)./ НОД(a1, a2, a,3 a4….. aN).

3. Дана последовательность из n целых чисел. Вывести те числа последовательности, которые не имеют в своей записи цифры три и делятся на каждую из своих цифр.

Вариант9

1. Разработать функцию, которая, которая вычисляет десятичное число М, которое получается из двоичной записи числа Р изменением порядка цифр на обратный.

2. Разработать процедуру, которая в последовательности натуральных чисел, заканчивающейся нулем находит количество чисел, для которых Р и М равны.

3. Дана последовательность из n целых чисел. Определить количество чисел последовательности, которые содержат нечетное количество цифр и являются палиндромами.

 

Вариант10

1. Разработать функцию, которая определить,является ли целое число совершенным.

(Число считается совершенным, если оно равно сумме всех своих делителей кроме самого этого числа. Например: 6=1+2+3)

2. Разработать процедуру, которая в последовательности натуральных чисел, заканчивающейся нулем находит количество совершенных чисел и максимальное среди них.

3. Дана последовательность из n целых чисел. Определить количество чисел «близнецов» в последовательности. Числа «близнецы» это простые числа, которые отличаются друг от друга на 2, например, 41 и 43.

Вариант11

1. Разработать функцию, которая определяет, являются ли два числа дружественными.

2. Разработать процедуру, которая среди первых N натуральных чисел находит первую пару дружественных. (Число считается дружественным, если сумма делителей одного равна сумме делителей другого).

3. Дана последовательность из n целых чисел. Определить, сколько в последовательности простых чисел, у которых первая и последняя цифры равны.

Вариант12

1. Разработать функцию, которая вычисляет количество делителей целого натурального числа.

2. Разработать процедуру, которая в последовательности натуральных чисел находит числа с максимальным и минимальным количеством делителей.

3. Дана последовательность из n целых чисел. Найти среднее арифметическое тех чисел последовательности, которые имеют в своей записи цифру три.

Вариант13

1. Разработать функцию, которая вычисляет НОД двух целых натуральных чисел по алгоритму Евклида.

2. Разработать процедуру, которая находит первую пару взаимно простых чисел и общее количество взаимно простых чисел среди первых N натуральных чисел.

3. Дана последовательность из n целых чисел. Определить количество чисел последовательности равных «перевертышу» первого простого числа в последовательности. Число «перевертыш» – это число, записанное наоборот, например, число 13, его перевертыш 31.

Вариант14

1. Разработать функцию, которая вычисляет цифровой корень натурального числа по алгоритму: Сложить все цифры введенного числа, затем его суммы и так повторять столько раз, пока число не станет однозначным – это и будет цифровым корнем исходного числа.(Например:n=34697 S1=3+4+6+9+7=29 S2=2+9=11 s3=2 2- цифровой корень числа n)

2. Разработать процедуру, которая в последовательности натуральных чисел находит количество чисел с максимальным цифровым корнем.

3. Даны три последовательности. Каждая заканчивается нулем. Определить в какой из них больше чисел, являющихся степенью трех и с суммой цифр равной 9.

Вариант 15

1. Разработать функцию, которая определяет, является ли целое число симметричным, т.е.343 или 3443.

2. Разработать процедуру, которая в последовательности из N находит первое симметричное число и их общее количество.

3. Даны коэффициенты двух многочленов n- ой степени Р и Q и вещественное число х. Вычислить значение выражения P(x+Q(x)P(x+1))

 

Вариант 16.

1. Разработать функцию, которая, используя поразрядное вычитание, находит разность двух целых чисел.

2. Разработать процедуру, которая в последовательности из N целых чисел находит количество пар чисел, разность между которыми больше заданного М.

3. Дана последовательность из n целых чисел. Если в последовательности есть два числа палиндрома (например, 121), то определить равны ли у них суммы цифр.

Вариант 17.

1. Разработать функцию, которая переводит целое число из семеричной системы счисления в десятичную.

2. Разработать процедуру, которая в последовательности неотрицательных целых чисел, записанных в семеричной системе счисления, находит максимальное, которое представлено в десятичной системе счисления.

3. Даны три последовательности целых положительных чисел, заканчивающихся отрицательным числом. Найти сумму чисел каждой последовательности. Определить какая сумма представляет число, которое делится на свою первую цифру.

 

Вариант 18

1. Разработать функцию, которая определяет, является ли целое число палиндромом

2. Разработать процедуру, которая формирует число палиндром из целого числа, используя алгоритм

· если это число не палиндром, то изменить порядок его цифр на обратный и сложить исходное число с получившимся;

· если сумма не палиндром, то повторим предыдущее действие и так до получения палиндрома.

Примечание. Результатом процедуры являются число палиндром и количество применений алгоритма для его получения.

3. Дана последовательность из n целых чисел. Найти количество совершенных чисел и максимальное среди них. Совершенное число равно сумме своих делителей, не включая само число. Например, число 6 (1+2+3) и число 28 (1+2+4+7+14).

 

Вариант 19.

1. Разработать функцию, которая определяет, равны ли в целом числе первая и последняя цифры..

2. Разработать процедуру, которая в последовательности из N целых чисел находит первое число, у которого первая и последняя цифры равны и общее количество таких чисел в последовательности.

3. Даны два многочлена n-ой степени, т.е. заданы их коэффициенты и число х. Определить, значение многочлена и его производной. У какого многочленов значение и значение производной наибольшее.

Вариант 20

1. Разработать функцию, которая возводит действительное число в целую степень n.

2. Разработать процедуру, которая среди трехзначных чисел находит первое число Армстронга и их общее количество. (Число Армстронга должно удовлетворять условию, например: 153=13+53+33).

3. Дана последовательность из n целых чисел. Определить сколько чисел в последовательности имеют нечетное количество цифр и имеют ровно три простых множителя.

 

Контрольные вопросы.

  1. Что такое подпрограмма и их назначение?
  2. Какие три понятия связаны с подпрограммой? Определите их назначение.
  3. Что понимается под определениями:

· глобальная переменная

· локальная переменная

  1. Приведите карту распределения памяти для Паскаль программ.
  2. Перечислите способы обмена данными между программой и подпрограммой.
  3. В чем отличие подпрограммы функции от подпрограммы процедуры.
  4. Определите правила передачи данных в подпрограмму через аппарат формальных и фактических параметров.
  5. Какого типа может возвращать результат функция?
  6. Что необходимо предусмотреть в теле функции, чтобы она корректно возвращала результат?
  7. Какие виды формальных параметров определены в языке Паскаль.
  8. В каких случаях используется передача данных в подпрограмму по ссылке?
  9. В каких случаях следует использовать спецификатор const при объявлении формальных праметров?
  10. Укажите особенности в описании структурных формальных параметров.

14. Расскажите о процедурном типе и процедурных параметрах.

15. Какие подпрограммы могут быть использованы в качестве фактического параметра?

 

16. Ответьте на вопросы в следующих примерах

 


1. Рассмотрите программу

· Определите область действия имен

· Определите виды подпрограмм

· Определите виды формальных параметров

· Укажите точки вызова подпрограмм и способы передачи параметров

program proc_func;

var x,y,c:byte;

const m=10;

procedure Z1(x,a:byte; var y:integer);

const m1=15;

var c:byte;

begin

c:=5;

y:=(x+a*c) div m1;

end;

procedure ZA;

begin

Z1(x,y,c); writeln('x=',x,'y=',y,'c=',c)

end;

BEGIN

x:=2; y:=3; c:=10; ZA;

END.

3. Рассмотрите программу

· Определите результат работы программы. Объясните его.

· Расскажите об особенностях использования и организации п/п функции

program proc_func;
var x,y:integer;
function F1(var y:integer):integer;
begin
y:=y*5;F1:=y
end;
BEGIN
x:=2; y:=3; x:=y+F1(y)
end.

 

4.Рассмотрите программу.

· Вместо.......... Вставьте требуемое описание.

· Объясните использование в ней подпрограмм.

· Для чего используется директивы $f+ и $f-

program proc_func;
var x,y,c:byte;
const m=10;
$f+
function f1(x:real):real;
begin
f1:=sin(x);
end;
function f2(x:real):real;
begin
f2:=cos(x);
end;
$f-
procedure print(x:real;Fi:.......;nameFunc:string);
BEGIN
writeln('Таблица значений функции’, nameFunc);
writeln(' x: y ');
while x<=1 do
begin
writeln(' ',x:-5:2,': ',Fi(x):-5:2);
x:=x+0.1
end
end;
Begin
print(0,f1,'SIN(X)');
print(0,f2,'COS(X)');
end.
 

5. Рассмотрите программу

· Как называется такая последовательность вызовов п/п

· Что необходимо предусмотреть в программе, чтобы программа выполнилась правильно

Program Rowardd;
Procedure P1;
Begin
Writeln(‘Я вызываю процедуру Р2’);
P2
End;
Procedure P2;
Begin
Writeln(‘Я вызываю проседуру Р1’);
P1
End;
BEGIN
P1
 
END.

 

 


 







Дата добавления: 2015-10-15; просмотров: 995. Нарушение авторских прав; Мы поможем в написании вашей работы!



Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...

Уравнение волны. Уравнение плоской гармонической волны. Волновое уравнение. Уравнение сферической волны Уравнением упругой волны называют функцию , которая определяет смещение любой частицы среды с координатами относительно своего положения равновесия в произвольный момент времени t...

Медицинская документация родильного дома Учетные формы родильного дома № 111/у Индивидуальная карта беременной и родильницы № 113/у Обменная карта родильного дома...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия