Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемПетр Петриков
1 Функции в Turbo Pascal Шутилина Л.А.
2 В Паскале помимо процедур можно использовать функции. Их еще называют функции пользователя ( в отличие от стандартных функций, таких как sin, random и др.) Обращение к функции приводит к вычислению ее значения – объекта типа real, integer или char. Function Имя(параметры):тип результата; var список локальных переменных begin Команды Имя:=выражение; end; Вызов функции пользователя осуществляется так же, как и стандартных функций в Паскале, т.е. их значения могут присваиваться переменным, входить в состав выражений.
3 Составить программу для вычисления площади выпуклого четырехугольника, заданного длинами его сторон и диагональю. A B D C Диагональ делит четырехугольник на два треугольника, к которым применима формула Герона: Рассмотрим пример:
4 program Function_of_user; uses Crt; var AB,BC,CD,DA,AC,S1,S2,S:real; Function f(a,b,c:real):real; var p:real; begin p:=(a+b+c)/2; F:=Sqrt(p*(p-a)*(p-b)*(p-c)); end; begin readln (AB,BC,CD,DA,AC); S1:=f(AB,BC,AC); S2:=f(CD,DA,AC); s:=S1+S2; writeln (S:8:2); Writeln (f(AB,BC,AC)+ f(CD,DA,AC):8:2); readln; end. Вызов функции
5 Для многих программ не важно, что изберет программист для их реализации: процедуру или функцию, но есть определенные правила, которые дают четкие отличия процедур и функций
6 ПроцедурыФункции 1Может иметь несколько результатов или выполнять некоторое действие Имеет только один результат, тип которого указывается отдельно при объявлении функции. 2Результатами могут быть значения любого типа массивы, строки, числа и т.д. Результат может быть только значением типа real, integer или char. 3Команда вызова процедуры – отдельная команда, которая употребляется самостоятельно Обращение к функции может использоваться только как компонент выражения соответствующего типа. 4В теле функции должен быть хотя бы один оператор присваивания, в левой части которого указано имя функции. Сравнение процедур и функций.
7 Написать программу вывода на экран компьютера таблицы тригонометрических функций sin x, cos x. tg x. Для вычисления функции tg x использовать функцию пользователя, а для вывода таблицы – процедуру. Мы с вами знаем много стандартных функций ЯП Паскаль. К ним относятся и функции sin x и cos x. А для вычисления такой распространенной функции, как тангенс, стандартной функции в Паскале нет. Поэтому мы напишем ее самостоятельно. Пример задачи 1
8 Program Table_of_function; uses CRT; var x, nx,kx: integer; function Tg(kx:integer):real; begin if cos(kx) 0 then Tg:=sin(kx)/cos(kx) else Tg:=-100; end; procedure output(a:integer;b,c,d:real); var i:integer; begin for i:=1 to 35 do write('_'); writeln; writeln (a:8,b:8:2,c:8:2,d:8:2); end; begin clrscr; writeln ('Zadayte diapason dlja x: nx, kx'); Readln (nx, kx); {*** zagolovok tablizy***} writeln ('x sinx cosx tgx'); for x:=nx to kx do output(x,sin(x),cos(x),tg(x)); readln; end.
9 Из данного примера видно, что стандартные функции и функции пользователя в программе используются совершенно одинаково. Для вывода информации на экран компьютера мы использовали процедуру, т.к. функция не может производить подобные действия – вывод чего-то на экран компьютера. В описании процедуры использованы 4 параметра – значения. Поэтому в качестве фактических параметров при вызове процедуры мы можем использовать имена переменных, выражения (в виде функций) и константы. Параметров–значений в этой процедуре нет, т.к. она ничего не вычисляет.
10 Написать программу, которая определяет, является ли билет «Счастливым», т.е. сумма правых трех цифр числа должна быть равна сумме левых трех цифр. Для написания этой программы нам надо вспомнить операции DIV целая часть от деления и MOD остаток от деления. 20 div 7 =2 123 div 10 = mod 7 =6 123 mod 100 = 23 Пример задачи 2
11 Program Bilet; uses Crt; var Nomer: longint; lev,prav:integer; function summa(x:integer):integer; var i,j,k:integer; Begin i:=x div 100; j:=x div 10 mod 10; k:=x mod 10; summa:=i+j+k; end; begin clrscr; writeln ( Zadayte nomer bileta-); writeln (celoe 6-zn chislo'); readln (nomer); lev:= nomer div 1000; prav:= nomer mod 1000; if summa(lev)=summa(prav) Then writeln ('Yes) else writeln ('No'); readln; end.
12 Написать программу для вычисления значения функции f(0.8,a)+f(a,b)-f(2a-1,ab), где a, b действительные числа и Пример задачи 3
13 Program F_X_Y; uses CRT; var a,b,z: real; function f(x,y:real):real; begin f:= (sqr(x)-sqr(y))/(sqr(x)-2*x*y+sqr(y)+6); end; begin clrscr; writeln ('Zadayte a,b'); readln(a,b); z:=f(0.8,a)+f(a,b)-f(2*a-1,a*b); writeln(z:8:2); readln; end. При а=1 и в=2 ответ –0,06 При а=2, в=3 ответ –0,15
14 Даны отрезки a,b,c и d. Для каждой тройки этих отрезков, из которых можно построить треугольник, определить периметр этого треугольника. Использовать функцию, которая будет определять, существует ли треугольник с данными сторонами x,y,z, если да, то высчитывает его периметр, если нет, то выводит значение 0 и процедуру вывода ответов на экран ПК. Написать программу с использованием функции, которая переворачивает заданное целое 4-значное число «задом наперед». Задачи для самостоятельного решения
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.