Процедуры и функции для работы со строками 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);
ifyNew * yR < 0 then
xL := xNew; yL := yNew;
// Пододвинулась вправо левая граница промежутка
xR := xNew; yR := yNew;
// Пододвинулась влево правая граница промежутка
end;
ifAbs(xNew - xOld) < Eps thenbreak;
Inc(n);
ifn > nMax then
Writeln(‘За ’, nMax, ‘ шагов требуемая точность не достигнута.’);
break;
end;
end;
xNew := (xR * yL - xL * yR) / (yL - yR);
Writeln('Result: x=', xNew:0:12, ‘ n=’, n);
end;
procedureNewtonSearchRoot(xL, xR, Eps: double;
f, df, d2f: MyFuncType);
xOld, xNew:
double;
n:
integer;
n := 0;
iff(xL) * d2f(xL) > 0 thenxNew := xL elsexNew := xR;
xOld := xNew;
xNew := xOld - f(xOld) / df(xOld);
ifAbs(xNew - xOld) < Eps thenbreak;
Inc(n);
ifn > 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] ofsingle;
);
Type01:
(
R1, R2: MyRecordType2D;
);
Type02 .. Type03:
(
c1: char;
T1: TDateTime;
);
end;
MyRecordType2 = record
r: single;
Type00:
(
bWas: boolean; mC: array[1..4] ofchar;
Type010: (k: integer;);
Type011 .. Type013: (b: byte;);
);
Type01:
(
R1, R2: MyRecordType2D;
Type020: (c: char;);
Type021 .. Type023: (s0: shortint;);
);
end;
functionLength(S: string): byte;
Возвращает длину строки S. Значение длины равноценно значению Ord(s[0]), поскольку код «нулевого» байта строки есть её текущая длина.
functionCopy(S: string; iStart, iLength: byte): string;
Возвращает подстроку строки S – набор из iLength символов, начинающийся с символа с номером iStart. Нумерация символов в строке начинается с единицы.
Замечание: Copy(S, n, 1) равноценно S[n].
procedureDelete(S: string; iStart, iLength: byte);
Удаляет из строки S её подстроку – набор из iLength символов, начинающийся с символа с номером iStart. Нумерация символов в строке начинается с единицы.
functionIndex(S, SWhat: string): byte;
Ищет первое вхождение подстроки sWhat в строку S. Результат – номер символа, начиная с которого найдено вхождение. Результат – ноль, если вхождение не найдено.
functionStr(X: <числовой тип>): string;
Возвращает строковое выражение числа X.
procedureVal(S: string; varX: <числовой тип>; IER: integer);
Пытается преобразовать строку S в число и занести его в параметр-переменную X. Если попытка завершается удачно, IER=0, в противном случае IER<>0.