Студопедия — Задача 1. Вычислить площадь четырёхугольника со сторонами a,b,c,d и диагональю e.
Студопедия Главная Случайная страница Обратная связь

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

Задача 1. Вычислить площадь четырёхугольника со сторонами a,b,c,d и диагональю e.






ПОВТОРЕНИЕ

  1. Базовые алгоритмические структуры – следование, ветвление, цикл.
  2. Типы алгоритмов – линейный, разветвляющийся, циклический.
  3. Суть метода последовательной (пошаговой) детализации – сначала общий план, а затем – детали.
  4. Вспомогательный алгоритм – алгоритм, описывающий решение какой-либо подзадачи и, как правило, вызываемый многократно.
  5. Подпрограмма – часть программы, которая реализует вспомогательный алгоритм. Основная программа реализует основной алгоритм решения задачи и содержит в себе обращения к подпрограммам.
  6. Подпрограммы предназначены для разбиения задачи на подзадачи. Позволяют экономить память (программа становится короче), ускоряют написание и отладку программ.
  7. Подпрограммы в Паскале – стандартные функции и процедуры (sqr, sqrt, readln, write…) и функции и подпрограммы пользователя.

ФУНКЦИИ

Рассмотрим задачу вычисления суммы тангенсов трёх чисел x,y,z. Для её решения можно воспользоваться следующей программой:

Program tangens;

Var x,y,z:real;

Begin

ReadLn(x,y,z);

Writeln((sin(x)/cos(x)+sin(y)/cos(y)+sin(z)/cos(z)):8:2)

End.

В операторе вывода три раза повторяется одно и то же выражение с разными значениями параметра. Это выражение - sin(x)/cos(x), которое вычисляет тангенс числа, так как в Паскале нет стандартной функции для его вычисления. Но эту функцию можно написать самим и в этом случае программа будет иметь следующий вид:

Program tangens;

Var x,y,z:real;

Function tan(a:real):real;

Begin

tan:=sin(a)/cos(a)

End;

 

Begin

ReadLn(x,y,z);

Writeln((tan (x)+ tan (y)+ tan (z)):8:2)

End.

Функция – это подпрограмма, в результате работы которой получается скалярная величина (т.е. одно значение), которая обязательно присваивается переменной с тем же именем, что и имя функции. Вызов функций, созданных пользователем, производится аналогично вызову стандартных функций, то есть внутри выражений либо в операторе присваивания, либо в операторе вывода.

Описание функций:

Function < имя функции > ( < список формальных параметров > ):< тип результата >;

< описательная часть >

Begin

< тело функции >

< имя функции >:=< выражение >;

end;

 

Описание функции идет после описания переменных, до начала основной части.

Значения, передаваемые в функцию, называются фактическими параметрами. В предыдущей задаче в качестве фактических параметров использовались переменные x,y,z. Параметры, описываемые внутри функции, называются формальными. Желательно, чтобы их имена не совпадали с именами фактических во избежание путаницы. При вызове функции формальному параметру присваивается значение фактического. Имя функции одновременно является и именем переменной, которой будет присвоен результат выполнения функции, поэтому необходимо, чтобы был описан её тип. Если имя функции используется в левой части оператора присваивания, то оно играет роль обычной переменной и пишется без параметров: tan:=sin(a)/cos(a). Это можно делать только внутри самой функции.

Если имя функции записывается в правой части оператора присваивания или внутри оператора вывода, то это означает вызов функции и наличие параметров необходимо:

b:=tan(x) или write(tan(x)).

В качестве фактических параметров могут использоваться не только переменные, но и выражения: writeln(tan((x+y+z)*2)). В этом случае при вызове функции формальный параметр получит значение этого выражения. В нашем случае переменная a получит значение (x+y+z)*2.

Задача 1. Вычислить площадь четырёхугольника со сторонами a,b,c,d и диагональю e.

Чтобы вычислить площадь такого четырёхугольника, необходимо вычислить площади двух треугольников, из которых он состоит, а затем сложить. Для вычисления площади отдельного треугольника воспользуемся формулой Герона.

Program geron;

Var a,b,c,d,e:real;

Function S(x,y,z:real):real;

Var p:real; { локальная переменная. Память выделяется тогда, когда функция начинает свою работу. После завершения работы эта часть памяти освобождается, и значение переменной будет снова неопределено }

Begin

p:=(x+y+z)/2;

S:=sqrt(p*(p-x)*(p-y)*(p-z))

End;

 

Begin

Readln(a,b,c,d,e);

Writeln(‘S=’,(S (a,b,e)+ S (c,d,e)):8:2)

End.

Внутри функции мы использовали локальную переменную p, которая видна только внутри этой функции и не оказывает никакого влияния на переменные, описанные в основной программе.

Задача 2. Найти наибольший общий делитель для значений a+b, |a-b| и a*b.

Будем использовать функцию для вычисления наибольшего общего делителя двух произвольных чисел. Для этого воспользуемся правилом Эвклида:

НОД(M-N,N), если M>N

НОД(M,N)= НОД(M,N-M), если N>M

N, если N=M

Проверим эту формулу на числах 24 и 40.

НОД(24,40)=НОД(24,16)=НОД(8,16)=НОД(8,8)=8

Запишем программу:

Program NOD;

Var a,b,rez:integer;

 

Function Evklid(M,N:integer):integer;

Begin

While M<>N do

If M<>N then M:=M-N

Else N:=N-M;

Evklid:=N

End;

 

Begin

ReadLn(a,b);

Rez:= Evklid (Evklid (a+b,abs(a-b)),a*b);

Writeln(‘НОД=’,Rez)

End.

В данной программе мы воспользовались так же правилом:

НОД(x,y,z)=НОД(НОД(x,y),z).







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



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

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

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

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

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

Билиодигестивные анастомозы Показания для наложения билиодигестивных анастомозов: 1. нарушения проходимости терминального отдела холедоха при доброкачественной патологии (стенозы и стриктуры холедоха) 2. опухоли большого дуоденального сосочка...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

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