Процедуры Break, Continue.

Процедура Break прекращает выполнение того цикла, внутри которого она находится.

Цикл 1

Цикл 2

If <условие> then Break

Процедура Continue завершает текущую интерацию цикла и осуществляет переход на начало следующей итерации. Её действие эквивалентно выполнению оператора Goto<конец цикла>.

Вычисление суммы бесконечного ряда с заданной точностью

Пример: даны действительные числа X и ὲ (ὲ>0)

K=0

A[0]

Элемент накапливается в сумму до тех пор пока он больше или равен ὲ.

K=1

A[1]

(A[k])/(A[k-1])=R

A[k]=a[k-1]*R

Итерационные циклы, рекурентная формула.

Посчитать при k=0 первый элемент ряда. Вычислить множитель

Пример:

programex;

Var

x,eps:real;

a,s:real;{текущее слагаемое сумма}

k: word;{номер слагаемого}

R: real;{коэффицент в рекуррентной формуле}

Begin

writeln ('Введите x и точность');

readln(x,eps);

k:=0; A:=x;{Слагаемое при k=0}

S:=0;

whileAbs(A)>=eps do

Begin

S:=s+A;

inc(k);

R:=sqr(X)*(2*K-1)/(k*(2*k+1));

A:=A*R;

end;

Writeln('Сумма -',S);

writeln('Количество учтенных слагаемых- ',k);

readln

end.

Задача 3:

Протабулировать функцию z=x+cos(y) при x, изменяющемся от a до с шагом h1, и y, изменяющемся от с до d с шагом h2. Для решения задачи в области определения функции вводится разностная сетка {xi,yj,}, изображенная на рисунке где

Код:

programex2;

Var

x,y,z:real; {координаты узла сетки и значение функции в нем}

H1,H2:real; {шаги сетки}

A,B,C,D:real; {граници области}

N,M:word; {количество точек по направлениям}

I,J:word;

Begin

writeln('Введите значения границ области по x,y');

readln(a,b,c,d);

writeln('enter steps H1,H2');

readln(h1,h2);

n:=round((b-a)/h1);

m:=round((d-c)/h2);

y:=c;

forI:=0 toM do{перебор слоев по Y}

Begin

writeln('y=',Y:10);

X:=A;

forJ:=0 toN do{вычисление функции при y=const}

Begin

Z:=x+cos(y);

writeln('x=',x:12,'z=', Z:12);

x:= X+h1;

end;

y:=y+h2; {переход на следующий слой по y}

readln

End

end.

Табулирование функции с переменным шагом.

Протабулировать функцию F9X,Y)=(x^3)+Sin(x)+y, где x изменяется на отрезке [a b ] с шагом delta(X), Y изменяется на отрезке [c,d] причем если Q=((T*x)+(x^2)/18 < 8, то с шагом delta(y1), иначе с шагом delta(y2).

programA1;

Var

x,y,a,b,c,d,Q,dx,dy1,dy2,F,T:real;

Begin

writeln('введите a,b,c,d,dx,dy1,dy2,T');

readln(a,b,c,d,dx,dy1,dy2,T);

X:=a;

whileX<=b do

Begin

y:=c;

whiley<=d do

Begin

f:=sqr(x)*x+Sin(x)+y;

writeln('F=',f,'x=',x,'y=',y);

Q:=((T*x+SQR(x))/18);

ifQ<8 theny:=y+dy1 elsey:=y+dy2;

end;

x:=x+dx;

end;

end.

Вложенные циклы:

В паскале все три оператора цикла допускают вложенный цикл.

Правила которыми надо пользоваться при организации вложенных циклов.

1.Внутренний цикл должен содержаться целиком во внешнем цикле

- Могут заканчиваться одновременно.

2. Если для организации вложенных циклов используются цикл с параметром то параметры цикла должны быть различными.

3.Из внутреннего цикла можно в любом месте выйти во внешний.

- Войти во внутренний цикл можно только через заголовок.

Задача1:

Составить программу которая выводит буквы латинского алфавите в следующем порядке.

A

AB

…..

ABC……Z

programA1;

Var

c , c1 :char;

Begin

forc:= 'A' to'Z' do

Begin

forc1:='A' toc do

write(c1);

writeln;

end;

end.

Во входном файле задан текст заканчивающийся точкой слова в тексте разделены одним или несколькими пробелами. Определить колличество слов начинающихся с заданной буквы.

Тип Описание типа, характеристика типа Описание переменной   Представление констант
Перечисляемый Нестандартный.Требуется описать тип: Type {тип} <имя типа> = (<знач1>,<знач2>,…,<знач n>); var{переменная} <имя>:<имя типа>; значения представлены идентификаторами и упорядочены.Первое значение имеет №0. В соответствии с типом: только перечисленные в описании типа значения.

Значения перечисляемого типа нельзя вводить и выводить с помощью стандартных процедур Read\write.

Для того чтобы осуществить ввод переменной перечислимого типа нужно представить этот тип как литерную или строковую константу и с помощью опертора If или case осуществить ввод расшифровку.

Тип Операции(в порядке убывания приоритета) Основные стандартные функции Примеры
п е р е ч и с л я е м ы й Отношения    

Массивы.

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

Одномерные массивы.

Для объявления массива следует знать:

-число элементов;

-тип элементов;

-порядок нумерации элементов

Паскаль поддерживает следующие способы нумерации элеменетов

-целочисленный индекс: a-5,a-4,…..a10;

-Литерный индекс: a’a’,a’b’,…..a’z’;

-булевский индекс: afalse,atrue;

-Индекс перечислимого типа: ared,ablue…..;

Аналогично осуществляется нумерация элементов и в многомерном массиве, типы индексов могут не совпадать.

Объявление массивов может производиться двумя способами:

1)с использованием раздела Type:

Type

T_array=array[T] ofta;

Var

a,b,c:T_array;

2)без использования раздела Type:

Var

a,b,c: :array[t] ofta;

t_array - {имя типа для массива}

t- {тип индекса, отвечающий за способ нумерации;(любой порядковый за исключением longint)}

ta- {базовый тип массива.(может быть в любой форме кроме файлового)}

Если Ta – массив, то t_array будет типом для многомерного массив. Если типы T и Ta не являются стандартными, то они должны быть объявлены в разделе Type.

При объявлении одномерных массивов в качестве типа индекса, часто используется ограниченный тип (тип диапазон).

Первый способ:

Const

N=<значение>;

Var

a:=array[0..N] ofreal;

Второй способ:

Const

M=0;

N=<значение>;

Type

T=M..N;

t_array=array[T] ofreal;

Var

a:t_array;

При использовании диапазонов при выполнении программы вводиться дополнительный контроль значений, которые присваиваются переменным.

Использование индексов нечислового типа.

Type

mas1=array[1..20] ofreal; {индекс - тип диапазон}

color=(red,white,blue);{}

mas2=array[color] ofcolor;{индекс - перечисляемый тип}

diap=1..100;

mas3=array[diap] ofreal;

Var

x:mas1;

y:mas2;

z:mas3;

Элементы массива X:x[1],x[2],….x[20]; вещественные числа.

Элементы массива Y: y[red],y[white],y[blue];

Элементы массива Z:Z[1]….Z[100] вещественные числа.

Ввод и вывод массивов:

Ввод:

writeln('Введите числовую последовательность');

writeln('Колличество элементов массива',N);

fori:=1 toN doread(A[i]);

readln;

Вывод:

writeln('Результирующая последовательность',N);

fori:=1 toN dowriteln(A[i],'');

readln;

Пример 1. Верно ли, что отрицательный член в последовательности c1,c2,c3…cn встерчается раньше, чем в последовательностях a1,a2..a30 и b1…b40.

programpr1;

Const

nc=<значение>;

na=30;

nb=40;

Var

a: array[1..na] ofreal;

b: array[1..nb] ofreal;

c: array[1..nc] ofreal;

ia, ib , ic : word; {индексы текущих элементов в соотрветствующих массивах}

Begin

writeln ('Введите последовательность C , количество элементов :',nc);

foric:=1 tonc do

read(c[ic]);

readln;

writeln('введите последовательность A, количество элементов:',na);

foria:=1 tona do

read(a[ia]);

readln;

writeln('введите последовательность B, количество элементов:',nb);

forib:=1 tonb do

read(b[ib]);

readln;

foric:= 1 tonc do

ifc[ic]<0 then break;

foric:= 1 tonc do

ifb[ib]<0 then break;

foric:= 1 tonc do

ifa[ia]<0 then break;

if(ic,ia)and(ic,ib) thenwriteln('true')

elsewriteln('false');

readln;

end.

Дан текст состоящий из букв латинского алфавита и заканчивающийся точкой написать сколько раз в тексте встречается в тексте каждый символ, сообщение об этом символе должно появиться один раз, заглавные и малые буквы не различать.

Матрицы

1) Можно задать как двумерный массив

2) Можно задать как массив массивов(строк).

1)

Const

n=10; m=13;

Var

C:array[1..n,1..m] ofreal;

2)

typete=array[1..m] ofreal;

Var

c:array[1..n] ofte;

Первое объявление позволяет работать с матрицей только поэлементарно.

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

Запись вида C[i]:=C[L] означает замену элементов i-ой строки на элементы L-ой строки, что эквивалентно

forj:=1 tom do

C[i,j]:=c[L,j];

I.

Var

a:array[1..20,1..30] ofinteger;

II.

Var

a:array[1..20]of array[1..30] ofinteger;

В обоих случаях описан двумерный массив, соответствующий таблице состоящей из 20 строк и 30 столбцов. Приведенные описания совершенно равноправны.

Например, ячейка, находящаяся в 5 строке и 6 столбце будет называться A[5][6] или A[5,6].

Наши рекомендации