Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 1 курс / метод указания / Программирование в интегрированной среде Turbo Pascal. Учебное пособие.doc
Скачиваний:
115
Добавлен:
08.06.2015
Размер:
1.51 Mб
Скачать

Блок-схемы операторов цикла

Инкрементный оператор цикла For

Декрементный оператор цикла For

Оператор While

Оператор Repeat

Использование операторов цикла во многих случаях обусловлено необходимостью применения в программах переменных с индексами (массивов). Их описание осуществляется двумя эквивалентными способами:

  1. с определением типа массива

Type

<имя типа> = array [<список диапазонов индексов>]

of <тип элементов>;

Var

<имя массива> :<имя типа> ;

  1. без определения типа массива

Var

<имя массива> :array [<список диапазонов индексов>]

of <тип элементов>;

Здесь <имя типа>, <имя массива> - идентификаторы;

<список диапазонов индексов> - в общем случае список выражений порядкового типа, кроме Longint, в частном случае - список диапазонов индексов;

<тип элементов> - тип элементов массива (real,integerи т.д.).

Первый способ обладает большей общностью. Однако чаще используется второй, так как он проще.

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

Примеры определения массивов:

Type m=array [1..5]ofbyte;

Var n : m;

dates : array [1980..2000] of integer;

x,y,z : array [1..10,1..10] of real;

Доступ к каждому элементу массива осуществляется с помощью индекса. Он не должен выходить за пределы указанного диапазона. Например,

fori:=1to10do

for j:=1 to 10 do

begin z[i,j]:=0;

for k:=1 to 10 do z[i,j]:=z[i,j]+x[i,k]*y[k,j]

end;

В ТР одним оператором присваивания все элементы одного массива можно передать другому массиву того же типа, например:

Var p,q : array [-5..5] of single;

begin…p: =q; …end.

Однако необходимо учитывать, что массивы можно сравнивать только поэлементно.

Пример. Составить таблицу значений функции:

,

где xиyзаданы в виде одномерных массивов:

x = 0.1, 0.3, 0.5; y = 1, 2, 3, 4.

Текст программы

Program Tab_1;

Uses Printer;

Const m=3;n=4;

Var x,y:array[1..10]of real;

f:array[1..10,1..10]of real;

i,j:integer; a,b:real;

BEGIN

writeln('Введите элементы массивов x и y:');

for i:=1 to m do {Ввод элементов массива x}

begin

write('x[',i,']='); readln(x[i]);

end;

for j:=1 to n do {Ввод элементов массива y}

begin

write('y[',j,']='); readln(y[j]);

end;

for i:=1 to m do

for j:=1 to n do

begin

a:=exp(x[i]*y[j])/(x[i]*y[j]);

b:=y[j]*exp(4*ln(x[i]))/4;

f[i,j]:=a+b;

writeln(Lst,'f=',f[i,j]:10,' при x=',

x[i]:4:1,' и y=',y[j]:4:1);

end;

END.

!! Проанализируйте программу, наберите ее текст и осуществите компиляцию. Сохраните программу в файле с названием Tab_1.pas.

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

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

  1. с определением типа

Type

<имя интервального типа>= <k1> . . <k2>;

Var

<имя переменной>:<имя интервального типа>;

  1. без определения типа

Var

<имя переменной>: <k1> . . <k2>;

где k1 и k2 соответственно верхняя и нижняя границы диапазона, причем k1>k2.

Например,

Type index=1. .50;

years = 1900 . . 2010;

Var birthday: years;

mass : array [index, index] of real;

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

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

Например:

const

vector : array [0..3] of integer = (1,2,3,4);

matrix:array [0..2,0..3]ofreal=

((1,2,3,4),(1.1,1.2,1.3,1.4),(2.3,2.4,2.5,7));

Соседние файлы в папке метод указания