Составные типы данных. Одномерные массивы


End.

Begin

Begin

Var

Const

Прерывание циклов

End.

Begin

Begin

Var

Цикл с предуловием

End.

Begin

Repeat

Begin

Var

End.

Repeat

Begin

Var

Repeat

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

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

<оператор n>;

until <логическое выражение>;

Цикл выполняется хотя бы один раз.

Пример. Программа выводит на печать коды символов, пока не будет введен символ ‘*’

Program CalcSymbolCode;

uses crt;

var

sym:char;

begin

clrscr;

repeat

writeln(‘Введите символ (* - выход)’);

readln(sym); {read(sym) будет читать коды 13 и 10,}

{связанные с нажатием Enter}

Writeln(‘Символ ‘, sym,’ имеет код ‘, ord(sym));

until sym=’*’;

readln;

readln;

end.

Пример. Вычисление с точностью , использую рекуррентную формулу.

 

exp(x*ln(n)) – возведение х в степень n

Рекуррентная формула – выражение одного элемента последовательности через значение предыдущих элементов.

 

program nroot;

uses crt;

n:integer;

y,x,d,r:real;

clrscr;

writeln(‘Введите x, n, e’);

readln(x, n ,e);

d:=(x/exp((n-1)*ln(y)) – y/n;

y:=y+d;

until abs(d) < e ;

writeln(‘Корень равен‘, );

readln;

Примеры на вложенные циклы.

Вычислить определенный интеграл

 

program integral;

i, n:longint;

a, b, c, h, x, int, int0:real;

writeln(‘Введите a,b,n,e’);

readln(a, b, n, e);

int:=0;

writeln(‘n=’,n); {контрольный вывод}

x:=a;

int0:=int;

h:=(b-a)/n;

int:=0;

for i:=1 to n do

int:=int+sinx;

x:=x+h;

end;

int:=int*h;

n:=n*2;

until abs(int-int0)<=e;

writeln(‘int=’, int);

while <условие> do <оператор>

Выполняется 0 или более раз. Условие должно быть максимально простым.

Пример.

 

Выведем рекуррентную формулу.

 

 

 

 

program mycos;

{вычисление х с заданной точностью е}

s, x, y, t, e ,f:real;

writeln(‘Введите x, e’);

readln(x,e);

S:=1;

t:=1;

n:=1;

while abs(f)>e do

f:=-sqr(x)/((2*n-1)*2*n)

t:=t*f;

S:=S+t;

end;

write(‘x=’,x,’cosx=’,s);

В некоторых случаях необходимо прерывать цикл раньше, чем он выполнится или прервать очередную итерацию и перейти к следующей. Это всегда можно сделать, усложнив условия или добавив дополнительные операторы ветвления в тело цикла.

В ВР break, continue.

break – завершает выполнение цикла, внутри которого записана

continue – выполняет переход к следующей итерации.

 

 

 

Цикл аналогичен предыдущему, но может никогда не завершиться из-за ограниченной сходимости ряда. Поэтому, необходимо предусмотреть аварийный выход.

const MaxIter=200

n > MaxIter – прерывание цикла

program Hypercos;

MaxIter=200;

n:integer;

done:boolean;

s, x, y, t, e, f:real;

writeln(‘Введите x, n’);

readln(x,e);

s:=1;

t:=1;

n:=1;

done:=true;

while abs(t)>e do

f:=sqr(x/((2*n-1)*2*n);

t:=t*f;

S:=S+t;

n:=n+1;

if n>MaxIter then begin

writeln(‘Ряд расходится’);

done:=false;

break;

end;

end;

if done then writeln(‘x=’,x,#13#10,’ch(x)=’,s,’n=’,n-1);

if n<=MaxIter then continue else begin

writeln(‘Ряд расходится’);

done:=false;

break;

end;

 

 


 

ЛЕКЦИЯ №10

Составные или сложные типы состоят из компонент(элементов) других типов. Поэтому при рассмотрении составных типов указывают тип компонент и метод их объединения для получения составного типа.

 

Регулярный тип (массив) – представляется в виде фиксированного числа однотипных элементов, которые располагаются в смежных ячейках памяти.

Местоположение элементов в массиве называется индексом.

Примеры:

Вектор одномерный массив:

Матрица (двумерный массив

Регулярный тип определяется пользователем

<регулярный тип>::={<тип индекса>,{<тип индекса>},] of <тип элемента>;

<тип элемента> -любой, кроме файлового. Также может быть массив.

<тип индекса>::=|перечисляемый |диапазонный|char|boolean