Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Процедуры 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 первый элемент ряда. Вычислить множитель

Пример:

 

program ex;

 

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;

while Abs(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,}, изображенная на рисунке где

Код:

program ex2;

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;

for I:=0 to M do {перебор слоев по Y}

Begin

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

X:=A;

for J:=0 to N 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).

program A1;

 

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;

while X<=b do

Begin

y:=c;

while y<=d do

Begin

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

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

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

if Q<8 then y:=y+dy1 else y:=y+dy2;

end;

x:=x+dx;

end;

end.

 

 

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

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

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

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

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

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

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

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

 

Задача1:

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

A

AB

…..

ABC……Z

 

program A1;

 

Var

c, c1:char;

 

Begin

for c:= 'A' to 'Z' do

Begin

for c1:='A' to c 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] of ta;

Var

a,b,c:T_array;

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

Var

a,b,c:: array [t] of ta;

 

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

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

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

 

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

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

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

Const

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

Var

a:= array [0..N] of real;

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

Const

M=0;

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

Type

T=M..N;

t_array= array [T] of real;

Var

a:t_array;

 

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

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

Type

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

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

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

diap=1..100;

mas3= array [diap] of real;

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);

for i:=1 to N do read(A[i]);

readln;

Вывод:

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

for i:=1 to N do writeln(A[i],'');

readln;

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

 

program pr1;

Const

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

na=30;

nb=40;

Var

a: array [1..na] of real;

b: array [1..nb] of real;

c: array [1..nc] of real;

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

Begin

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

for ic:=1 to nc do

read(c[ic]);

readln;

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

for ia:=1 to na do

read(a[ia]);

readln;

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

for ib:=1 to nb do

read(b[ib]);

readln;

for ic:= 1 to nc do

if c[ic]<0 then break;

for ic:= 1 to nc do

if b[ib]<0 then break;

for ic:= 1 to nc do

if a[ia]<0 then break;

if (ic,ia) and (ic,ib) then writeln('true')

else writeln('false');

readln;

end.

 

 

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

 

Матрицы

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

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

1)

Const

n=10; m=13;

Var

C: array [1..n,1..m] of real;

2)

type te= array [1..m] of real;

Var

c: array [1..n] of te;

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

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

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

for j:=1 to m do

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

I.

Var

a: array [1..20,1..30] of integer;

II.

Var

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

 

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

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





Поделиться с друзьями:


Дата добавления: 2017-02-11; Мы поможем в написании ваших работ!; просмотров: 301 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

80% успеха - это появиться в нужном месте в нужное время. © Вуди Аллен
==> читать все изречения...

2294 - | 2147 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.