КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Нетипизированные
..... ..... Begin Var Type End Begin Else Begin Var Type Var Begin Begin End Begin Var Const np = 20 {Количество вычислений функций} x: real; i: integer; begin {PrintFunc} for i:= 1 to np do x:= i * (2 * pi / np); GotoXY (XPos, WhereY); WriteLn (x:5:3, F(x):18:5) end {PrintFunc} {----------} Function Sin1(x: real): real; far; sin1:= (sin(x) + 1) * exp(-x) end; {----------} Function Cos1(x: real): real; far; cos1:= (cos(x) + 1) * exp(-x) end; {----------} begin {основная программа} ClrScr; {Очищаем экран} PrintFunc (1, sin1); GotoXY (1,1); {Переводим курсор в левый верхний угол} PrintFunc (40, cos1) end. Обратите внимание: для установления правильных связей функций SIN1 и COS1 с процедурой PRINTFUNC они должны компилироваться с расчетом на дальнюю модель памяти. Вот почему в программу вставлены стандартные директивы FAR сразу за заголовками функций. В таком режиме должны компилироваться любые процедуры (функции), которые будут передаваться в качестве фактических параметоов вызова. pi: Proc1; f1, f2: Func2; ар: array [1..N] of Proc1; Переменным процедурных типов допускается присваивать в качестве значений имена соответствующих подпрограмм. После такого присваивания имя переменной становится синонимом имени подпрограммы, например: Proc = Procedure (n: word; var a: byte); ProcVar: Proc; x, у: byte; Procedure Proc1(x: word; var y: byte); far; if x > 255 then y:= x mod 255 у:= byte(x) end; begin {Главная программа} ProcVar:= Proc1; for x:= 150 to 180 do ProcVar (x + 100, у); Write (у:8) end. Разумеется, такого рода присваивания допустимы и для параметров-функций, например: FuncType = Function (i: integer): integer; VarFunc: FuncType; i: integer; Function MyFunc (count: integer): integer; far; ..... end; {MyFunc} begin {Основная программа} i:= MyFunc(1); {Обычное использование результата функции} VarFunc:= MyFunc; {Присваивание переменной процедурного типа имени функции MyFunc} end. Отметим, что присваивание VarFunc:= MyFunc(1); будет недопустимым, так как слева и справа от знака присваивания используются несовместимые типы: слева -- процедурный тип, а справа -- INTEGER; имя функции со списком фактических параметров MyFunc(1) трактуется Турбо Паскалем как обращение к значению функции, в то время как имя функции без списка параметров рассматривается как имя функции.
Дата добавления: 2014-01-06; Просмотров: 265; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |