Студопедия

КАТЕГОРИИ:

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


Процедурный тип




В программировании часто встречается ситуация, когда в алгоритме используется результат вычисления некоторой функции, но сам алгоритм не зависит от того, какая именно функция вычисляется. В языке Turbo Pascal можно описать и использовать так называемый процедурный тип данных. Описание процедурного типа состоит из слова procedure или function, за которым в круглых скобках записывается список формальных параметров. Для функции после списка формальных параметров через двоеточие указывается тип функции. После того, как определен процедурный тип, можно описать переменные процедурного типа. Переменным процедурного типа можно присваивать значения конкретных процедур и функций. Естественно, что процедурная переменная и та процедура, которая присваивается ей в качестве значения, должны иметь одинаковое число формальных параметров, совпадающих по типам. Если переменная имеет тип функции, то для функций кроме формальных параметров должны совпадать типы функций. Те процедуры и функции, которые будут использоваться либо в качестве значений для процедурных переменных, либо в качестве фактических параметров при вызове процедур и функций, должны удовлетворять следующим правилам:

-должны компилироваться с ключом компилятора {$F+}

-не должны быть стандартными процедурами или функциями

-не должны объявляться внутри других процедур или функций

С погрешностью 0.0001 методом простой итерации уточнить корни уравнений ln(x)- x +1.8 = 0 на отрезке [1; 3] и на [0; 2].

Текст программы

program lab12;

const e = 0.0001;

type tip = function (x : real): real; { Процедурный тип}

{$F+} { Директива дальней компиляции}

function f1(x : real) : real;

begin f1 := ln(x) - x + 1.8 end;

function pf1(x : real) : real;

begin pf1 := 1/x – 1 end;

function f2(x : real) : real;

begin f2 := exp(x) - x*x*x end;

function pf2(x : real) : real;

begin pf2 := exp(x) - 3*x*x end;

{$F-} { Отмена директивы}

function Koren(a, b : real; f, pf : tip) : real; { Основная подпрограмма}

var x : real;

begin x := (a + b)/2; {Начальное приближение}

repeat

x := x - f(x)/pf(x)

until abs(f(x)) < e;

Koren := x

end;

begin

writeln('Корень уравнения ln(x)-x+1.8 на отрезке [1; 3] : ', Koren(1, 3, f1, pf1):6:4);

writeln('Корень уравнения exp(x)-x*x*x на отрезке [0;2] : ', Koren(0, 2, f2, pf2):6:4);

readln

end.

 

Сортировка символьных данных

Понятие: сортировка символов сводится к сравнению кодов этих символов и принятие соответствующих мер.
Сортировка строк, имхо, сложнее, поскольку имеем два варианта, например:
яблоко - книга ----> я>к при сравнении кодов я и к.
книга - камень ----> к=к, далее н<а и т. д.

Пример: сортировка символов по возрастанию (брал именно символы, чтобы легче было разобраться)

uses crt; var i,j,l,min:integer; //переменные-счетчики, min - для сортировки r:char; // вспомогательная переменная для обмена элементов a:array [1..10] of char; //массив со словами или символами. я использовал символы, чтобы упростить задачу begin clrscr; writeln('Ввод слов, символов'); for i:=1 to 10 do begin write(i,' - '); readln(a[i]); end; //ввод-вывод исходных данных writeln('Исходный массив'); for i:=1 to 10 do write(a[i],' '); writeln; //алгоритм сортровки. начало for i:=1 to 10 do begin min:=ord(a[i]); for j:=i to 10 do if ord(a[j])<min then //сравнение кодов элементов по таблице windows begin min:=ord(a[j]); l:=j; end; r:=a[i]; a[i]:=a[l]; //ставим элемент с наименьшим кодом на первое место относительно i (если i=2, то превое место - 2 и т. д.) a[l]:=r; end; //конец алгоритма writeln('Результат: '); for i:=1 to 10 do write(a[i],' '); end.

Поделиться:

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





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты