Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Процедуры и функции для работы со строками string

CaseTag02: MyTagType02 of

CaseTag01: MyTagType01 of

CaseTag0: MyTagType0 of

CaseTag0: MyTagType0 of

Type

Begin

Type

End.

Else

Сase X of

Else

Begin

Var

Type

Пример.

End

Else

...

Begin

Begin

Begin

Whiletrue do

Begin

Var

Begin

Begin

Else

End

Begin

Begin

xOld:= xNew;

xNew:= (xR * yL - xL * yR) / (yL - yR);

 

yNew:= f(xNew);

 

if yNew * yR < 0 then

xL:= xNew; yL:= yNew;

// Пододвинулась вправо левая граница промежутка

xR:= xNew; yR:= yNew;

// Пододвинулась влево правая граница промежутка

end;

 

if Abs(xNew - xOld) < Eps then break;

Inc(n);

if n > nMax then

Writeln(‘За ’, nMax, ‘ шагов требуемая точность не достигнута.’);

break;

end;

end;

 

xNew:= (xR * yL - xL * yR) / (yL - yR);

Writeln('Result: x=', xNew:0:12, ‘ n=’, n);

end;

 

procedure NewtonSearchRoot(xL, xR, Eps: double;

f, df, d2f: MyFuncType);

xOld, xNew:

double;

n:

integer;

n:= 0;

 

if f(xL) * d2f(xL) > 0 then xNew:= xL else xNew:= xR;

 

xOld:= xNew;

xNew:= xOld - f(xOld) / df(xOld);

 

if Abs(xNew - xOld) < Eps then break;

Inc(n);

if n > nMax then

Writeln(‘За ’, nMax, ‘шагов требуемая точность не достигнута.’);

break;

end;

end;

 

Writeln('Result: x=', xNew:0:12, ‘ n=’, n);

end;

 

ChordSearchRoot(-2, 0, 0.000000000001, f);

NewtonSearchRoot(-2, 0, 0.000000000001, f, dfdx, d2fdx2);

Readln;

end.

 


Результат работы программы:

 

Result: x = - 0.852605502013 n = 55

Result: x = - 0.852605502014 n = 6

 


Оператор выбора

 

< Оператор выбора> ::=

case <Выражение-селектор> of

<Список 1>:

<Оператор 1>;

<Список 2>:

<Оператор 2>;

<Список N>:

<Оператор N>;

<Операторы>;

 


 

ColorType =

(

Red, Orange, Yellow, Green, Blue, DarkBlue, Purple, Black, White

);

 

MyColor:

ColorType;

 

X:

integer;

 


MyColor:= Green;

с ase MyColor of

Red:

X:= 1;

Orange:

X:= 2;

Yellow:

X:= 3;

Green:

X:= 4;

Blue:

X:= 5;

DarkBlue, Purple:

X:= 0;

X:= -1;

end;

 

Write('Input Persons''Age: ');

readln(X);

 

0.. 1:

writeln('Baby');

2.. 9:

writeln('Child');

10.. 19:

writeln('Teenager');

20.. 35:

writeln('Young Person');

36.. 64:

writeln('Mead Age Person');

 


65.. 90:

writeln('Old Person');

91.. 120:

writeln('Very Old Person');

121.. 180:

writeln('Very Very Old Person');

writeln('Unimpossible Age');

end;

 

readln;

 


Тип «Запись» (продолжение)

Упакованные записи

 

{$PACKRECORDS 1}

MyRecordType1A = record

A: byte;

B: word;

end;

{$PACKRECORDS 2}

MyRecordType1B = packed record

A: byte;

B: word;

end;

 

 

MyRecordType1C = record

A: byte;

B: word;

end;

{$ALIGNMENT ON}

{$ALIGN 8}

MyRecordType1D = record

A: byte;

B: word;

end;

writeln(SizeOf(MyRecordType1A)); // 3

writeln(SizeOf(MyRecordType1B)); // 3

writeln(SizeOf(MyRecordType1C)); // 4

writeln(SizeOf(MyRecordType1D)); // 4

readln;

end.


Записи с вариантной частью

 

 

MyTagType0 = (Type00, Type01, Type02, Type03);

MyTagType01 = (Type010, Type011, Type012, Type013);

MyTagType02 = (Type020, Type021, Type022, Type023);

 


MyRecordType1 = record

i: integer; d: double;

Type00:

(

s: string [7];

mA: array [1..3] of single;

);

Type01:

(

R1, R2: MyRecordType2D;

);

Type02.. Type03:

(

c1: char;

T1: TDateTime;

);

end;

MyRecordType2 = record

r: single;

Type00:

(

bWas: boolean; mC: array [1..4] of char;

Type010: (k: integer;);

Type011.. Type013: (b: byte;);

);

Type01:

(

R1, R2: MyRecordType2D;

Type020: (c: char;);

Type021.. Type023: (s0: shortint;);

);

end;

 

function Length(S: string): byte;

Возвращает длину строки S. Значение длины равноценно значению Ord(s[0]), поскольку код «нулевого» байта строки есть её текущая длина.

 

function Copy(S: string; iStart, iLength: byte): string;

Возвращает подстроку строки S – набор из iLength символов, начинающийся с символа с номером iStart. Нумерация символов в строке начинается с единицы.

Замечание: Copy(S, n, 1) равноценно S[n].

 

procedure Delete(S: string; iStart, iLength: byte);

Удаляет из строки S её подстроку – набор из iLength символов, начинающийся с символа с номером iStart. Нумерация символов в строке начинается с единицы.

 

function Index(S, SWhat: string): byte;

Ищет первое вхождение подстроки sWhat в строку S. Результат – номер символа, начиная с которого найдено вхождение. Результат – ноль, если вхождение не найдено.

 

function Str(X: <числовой тип>): string;

Возвращает строковое выражение числа X.

 

procedure Val(S: string; var X: <числовой тип>; IER: integer);

Пытается преобразовать строку S в число и занести его в параметр-переменную X. Если попытка завершается удачно, IER=0, в противном случае IER<>0.

 

 


<== предыдущая лекция | следующая лекция ==>
Whiletrue do | 
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 231; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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