Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Описание двумерных массивов

Пример

Пример

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

Пример

Ввод и вывод одномерных массивов

Обращение к элементу массива

Пример

Пример

var

amper: array [0..30] ofreal;

Описан массив с именем amper, состоящий из 31 элемента типа real; индексация его элементов начинается с нуля и заканчивается целым числом 30; справа от символа ":" находится определение регулярного типа

 

var

v,w: array [-1..15] ofinteger;

Описаны два эквивалентных массива v и w целого типа, содержащие по 17 элементов в каждом.

 

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

type

имя типа = array [t2] of t1;

var

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

 

type

vec= array [-5..10] ofinteger;

var

b: vec;

 

 

Массивы не могут обрабатываться целиком за исключением единственного случая, когда они используются в операторе присваивания, например,

а:=b,

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

имя массива [индекс]

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

 

 

Для ввода и вывода всего массива или его части используют операторы цикла, как правило, оператор for.

var

z: arra y [10..100] o f intege r;

k: integer;

begin

for k:=10 to 100 do read(z[k]);

for k:=21 to 30 do write(z[k]);

 

Задачи такого рода являются весьма распространёнными в вычислительной практике и программировать их можно с использованием любого из трёх описанных выше операторов цикла. Но наилучшиим для этой цели является оператор for. Однако, каким бы оператором мы не пользовались, всегда нужно иметь в виду следующее.

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

Дан массив c(20), содержащий положительные и отрицательные элементы. Вывести порядковый номер первого отрицательного элемента массива.

program vybor1;

var

c: arra y [1..20] ofreal;

n: intege r;

begin

fo r n:=1 to 20 do read(c[n]); readln;

n:=1;

{ поиск первого отрицательного элемента }

while (n<=20) and (c[n]>0) do n:=n+1;

if n<=20

then write('n=',n) { печать номера первого отрицательного

элемента массива }

else write(‘отрицательных элементов нет’);

end.

 

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

 

2. Вход в тело цикла извне, минуя оператор цикла, запрещён.

Ниже приведены примеры организации циклических вычислительных процессов с помощью оператора for.

Дан вектор a(50). Вычислить сумму его элементов.

program summa;

var

i: integer;

s: rea l;

a: array [1..50] ofreal;

begin

write(‘введите массив -‘);

for i:=1 to 50 do read(a[i]);

s:= 0; { oбнуление ячейки s, предназначенной

для накопления суммы }

for i:=1 to 50 do s:=s+a[i]; { нaкопление суммы элементов массива }

write('s=',s:10:3)

end.

Если один цикл находится в теле другого, то он называется вложенным (внутренним). Внешний цикл сам может оказаться вложенным по отношению к какому-либо другому циклу. Использование вложенных циклов позволяет компактно описывать довольно сложные алгоритмы.

Пример - работа с двумерным массивом.

 

В процессе решения многих важных практических задач (например, задач оптимизации, статистики и т.д.) возникает необходимость обработки двумерных массивов данных, которые в математике называются матрицами и представляют собой прямоугольные таблицы, состоящие из m строк и n столбцов, содержащие m*n чисел:

 

а11 а12 ... а1n

а21 а22 ... а2n

А =......

аm1 аm2 ... аmn

 

Числа аij, составляющие матрицу А, называются её элементами. Индексы i и j элемента аij указывают соответственно номера строки и столбца, на пересечении которых расположен элемент.

Обработка матрицы сводится, в большинстве случаев, к перебору ее элементов в определенной последовательности и выполнению над ними арифметических операций.

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

Алгоритм сложного цикла следующий:

1) параметру i внешнего цикла присваивается его начальное значение m1, после чего следует вход во внутренний цикл;

2) вычисления, составляющие тело внутреннего цикла, повторяются заданное число раз с параметром j, меняющимся от начального значения n1 до конечного n2 с шагом n3;

3) далее происходит возврат во внешний цикл, его параметр i изменяется на шаг m3, после чего полученное текущее значение параметра (i) сравнивается с его конечным значением m2; если i<m2, выполняется переход к пункту 2), в противном случае осуществляется выход из внешнего цикла.

 

Рис.1. Структура сложного цикла: а) детализированный вариант; б) упрощённый вариант

 

 

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

<== предыдущая лекция | следующая лекция ==>
Массивы. Операторы цикла с параметром (for) | Организация сложных циклов
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 350; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.