русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

V. ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ


Дата добавления: 2015-06-12; просмотров: 2287; Нарушение авторских прав


 

Структура функции:

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

Label <метки>;

Const <константы>; раздел объявления меток, констант, типов данных,

Type <типы данных>; переменных (может отсутствовать)

Var <переменные>;

Begin

<операторы, составляющие тело функции>;

End;

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

<имя_функции>:=<значение>.

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

 

Пример 1.

Создать функцию пользователя, вычисляющую х!

Решение:

Program pr1;

Var

x: integer; y: real;

Function Fact(x: integer): real;

Var

i: integer; f: real;

begin

f:=1;

for i:=1 to x do f:=f*i; {вычисляем произведение}

Fact:=f; {имени функции присваиваем полученное значение}

end;

begin {основная программа}

Write (‘x=’); Readln(x); {ввод значения х}

y:=Fact(x); {вызов функции с аргументом х }

Writeln(‘y=’, y:4:0); {вывод результата}

Readln;

end.

 

Результат:

x= 4

y= 24

 

Пример 2.

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

gc=

Решение:

Program pr2;

Var x: integer;

y: real;

Function gc(x:integer):real;

begin

gc:=(exp(x)+exp(-x))/2;

end;

begin {основная программа}

Write (‘x=’); Readln(x); {ввод значения х}

y:=gc(x); {вызов функции и присваивание ее значения переменной y}

writeln('Гиперболический косинус=', y:8:4); {вывод результата}

Readln;

end.

 

Пример 3.

Два треугольника длинами своих сторон. Определить, площадь какого из них больше (создать функцию для вычисления площади треугольника по длинам его сторон).



Для решения задачи используем формулу Герона , где x, y, z – стороны треугольника, p – полупериметр)

Решение:

Program pr3;

var

a1, b1, с1, s1, a2, b2, с2, s2: real;

{функция вычисления площади треугольника со сторонами x,y,z}

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

Var

p: real;

Begin

p:= (x + y + z)/2; {полупериметр треугольника}

PlTr:=Sqrt(p*(p-x)*(p-y)*(p-z));

End;

BEGIN {основная программа}

{ввод исходных данных}

Write('Cтороны 1-го треугольника:'); Readln(a1, b1, c1);

Write('Cтороны 2-го треугольника:'); Readln(a2, b2, c2);

S1:=PlTr(a1, b1, c1);{вызов функции для нахождения площади 1-го треугольника}

S2:=PlTr(a2, b2, c2);{вызов функции для нахождения площади 2-го треугольника}

if S1>S2 then Writeln(‘S1>S2’)

else if S1<S2 then Writeln(‘S1<S2’)

else Writeln(‘S1=S2’);

Readln;

END.

 

Результат:

Cтороны 1-го треугольника:3 4 5

Cтороны 1-го треугольника:6 7 8

S1<S2

 

Пример 4.

Создать функцию нахождения максимального из двух чисел

Решение:

Program Pr4;

Var

a,b,m:real;

Function Max(a,b:real):real;

begin

if a>b {если a больше b}

then Max:=a {то функция принимает значение a}

else Max:=b; {иначе функция принимает значение b}

end;

BEGIN

write('a,b='); readln(a,b); {ввод исходных данных}

m:=Max(a,b); {вызов функции}

write('Max=',m:5:1); {вывод результата}

readln;

END.

 

Результат:

a,b=14 9

Max= 14.0

 

Пример 5.

Создать функцию нахождения наибольшего общего делителя двух натуральных чисел.

Решение:

Program Pr5;

Var

a,b:integer;

Function NOD(a,b:integer):integer;

begin

while a<>b do {пока числа не равны}

if a>b then a:=a-b {заменяем большее из них разностью большего и меньшего}

else b:=b-a;

NOD:=a;

end;

BEGIN

write('a,b='); readln(a,b); {ввод исходных данных}

write('NOD=', NOD(a,b)); {вызов функции и вывод ее значения}

readln;

END.

 

Результат:

a,b=24 16

NOD=8

 

Пример 6.

Составить функцию для вычисления xn, где x,n – целые числа

Степень принимает отрицательное значение, если основание степени Х<0 и показатель степени –нечетное число.

Решение:

Program Pr6;

Var

x,n:integer;

Function stepen(x,n:integer):real;

begin

if (n mod 2 <> 0) and (x<0) then stepen:=-exp(n*ln(abs(x)))

else stepen:=exp(n*ln(abs(x)));

end;

BEGIN

write('x,n='); readln(x,n); {ввод исходных данных}

write('stepen=',stepen(x,n):6:2); {вызов функции и вывод ее значения}

readln;

END.

 

Результат:

1 случай

x,n=2 3

stepen= 8.00

2 случай

x,n=-2 3

stepen= -8.00

3 случай

x,n=2 -2

stepen= 0.25

4 случай

x,n=-2 -2

stepen= 0.25

 

Пример 7.

Вычислить, используя функцию нахождения знаменателя:

(n слагаемых)

Решение:

Program pr7;

Var s: real;

i, n: integer;

Function Fakt(x: integer): real; {функция вычисления факториала}

Var

i: integer; f: real;

begin

f:=1;

for i:=1 to x do f:=f*i;

Fakt:=f;

end;

Begin

write('n= '); Readln(n); {вводим количество слагаемых суммы}

s:=0;

For i:=1 to n do {перебираем i от 1 до n}

s:=s+i/Fakt(i+1); {добавляем к сумме очередную дробь, вызывая}

{ функцию для вычисления знаменателя}

writeln('s=',s:6:4); {вывод результата}

Readln;

end.

 

Результат:

n=3

s=0.9583

 

Пример 8.

Вычислить, используя функцию нахождения знаменателя:

(n слагаемых)

Решение:

Program pr8;

Var s: real;

i, n: integer;

{ функция вычисления суммы первых m натуральных чисел}

Function Sum(m:integer ):integer;

Var

k, S: integer;

begin

S:=0;

for k:=1 to m do

S:=S+k;

Sum:=S;

end;

 

Begin

write('n= '); Readln(n); {вводим количество слагаемых суммы}

s:=0;

for i:=1 to n do {перебираем i от 1 до n}

s:=s+i*5/sum(i+1); {добавляем к сумме очередную дробь, вызывая}

{ функцию для вычисления знаменателя}

writeln('s=',s:6:4) {вывод результата}

end.

Результат:

n=3

s=4.8333

 

ЗАДАНИЯ

 

1. Найти минимальное из A, B, C, создав функцию выбора минимального из двух произвольных чисел.

2. Найти максимальное из чисел A, B, C, D, создав процедуру выбора максимального из 2-х произвольных чисел.

3. Сократить дробь вида a/b (a, b – вводимые натуральные числа), создав функцию для нахождения наибольшего общего делителя двух натуральных чисел.

4. Найти наибольший общий делитель чисел A, B, C, создав функцию для нахождения НОД двух натуральных чисел.

5. Два прямоугольных треугольника заданы своими катетами. Определить, у какого из них площадь больше (создать функцию для вычисления площади прямоугольного треугольника по его катетам).

6. Два прямоугольника заданы координатами вершин. Определить, площадь какого из них больше (использовать функцию нахождения площади прямоугольника).

7. Два прямоугольных треугольника заданы своими катетами. Определить, у какого из них периметр больше (создать функцию для вычисления периметра прямоугольного треугольника по его катетам).

8. Вводятся 2 натуральных числа. Найти среднее арифметическое цифр каждого из них (создать функцию для нахождения среднего арифметического цифр произвольного натурального числа).

9. Вводятся 3 натуральных числа. Найти сумму цифр каждого из них (создать функцию для нахождения суммы цифр произвольного натурального числа).

10. Вычислить 3-2 + 42 +5-2, создав функцию для вычисления степени.

11. Вычислить (-32 + 24 )/4-2, создав функцию для вычисления степени.

12. Найти (a! + b!)/(a+b)!, создав функцию для вычисления факториала произвольного натурального числа.

13. Найти m! + (m+n)!, создав функцию для вычисления факториала произвольного натурального числа.

14. Вычислить, используя функцию нахождения знаменателя:

(15 слагаемых)

15. Вычислить, используя функцию нахождения знаменателя:

... (n слагаемых)

16. Вычислить, используя функцию нахождения знаменателя:

(n слаг.)

17. Вычислить, используя функцию нахождения знаменателя:

(15 слаг)

 

18. Вычислить, используя функцию нахождения знаменателя:

... (n слагаемых)

19. Вычислить, используя функцию нахождения знаменателя:

(n слаг.)

20. Вычислить, используя функцию нахождения знаменателя:

(15 слаг)

 


 

ЛИТЕРАТУРА

1. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие.-М.: «Нолидж», 1999-616с., ил.

2. Д. Праймс. Программирование на языке Паскаль. Практическое руководство М.: Мир, 1997.

3. Васюкова Н.Д., Тюляева В.Р. Практикум по основам программирования языка Паскаль. Учебное пособие. М.: Высшая школа. 1991.

4. Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. Учебное пособие.-М.: «Нолидж», 1999-432с., ил.

5. Д. Праймс. Программирование на языке Паскаль. Практическое руководство М.: Мир, 1997.

6. Вирт Н. Алгоритмы и структуры данных. – М.,1989.

 

 



<== предыдущая лекция | следующая лекция ==>
C - Cos x | Пояснювальна записка


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.225 сек.