русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Writeln


Дата добавления: 2013-12-23; просмотров: 1010; Нарушение авторских прав


End;

Begin

Begin

Begin

Var

Program M5;

End.

End

Begin

Begin

Var

Const

Program M4;

End.

Begin

Var

Const

Program M3;

End.

Begin

Var

Program M2;

End.

Begin

Var

Program M1;

End;

Writeln;

Var

Способ.

Var

Способ.

A : Array [1..20] Of Array [1..30] Of Integer;

A : Array [1..20,1..30] Of Integer;

 

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

 

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

 

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

 

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

for i:=1 to m do

for j:=1 to n do a[i,j]:=random(10);

 

Для "красивого" вывода матрицы на экран используйте такой цикл:



for i:=1 to m do begin

for j:=1 to n do write(a[i,j]:5);

 

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

 

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

 

A : Array [1..20] Of Integer;

A[1]:=7; {Заполняем массив значениями (отдельно каждый компонент)}

A[2]:=32;

A[3]:=-70;

... {Трудоемкая задача?}

A[20]:=56;

Writeln(A[1],A[2],A[3], ?,A[20])

 

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

 

A : Array [1..20] Of Integer;

I : Integer;

For I:=1 To 20 Do {Организуем цикл с параметром I по всем возможным}

Readln(A[I]); {значениям индексов и вводим A[I] с клавиатуры }

For I:=20 Downto 1 Do {Распечатываем массив в обратном порядке}

Write(A[I],'VVV')

 

Эта программа вводит с клавиатуры 20 целых чисел, а затем распечатывает их в обратном порядке. Теперь попробуйте написать такую же программу, но без использования структуры массива. Во сколько раз она станет длиннее? Кстати, введение язык Паскаль цикла с параметром было обусловлено во многом необходимостью обработки информационных последовательностей, т. е. массивов.

 

Следующая программа заполняет массив значениям квадратов индексов элементов:

 

N=50; {Константа N будет содержать количество элементов массива}

A : Array [1..N] Of Integer;

I : Integer;

For I:=1 To N Do

A[I]:=I*I

For I:=1 To N Do

Write(A[I],'VVV')

 

В дальнейшем для учебных целей мы будем использовать массивы, заданные с помощью генератора случайных чисел. В языке Паскаль случайные числа формирует функция Random. Числа получаются дробными, равномерно расположенными в интервале от 0 до 1. Выражение, дающее целое случайное число в интервале [-50,50] будет выглядеть так:

Trunc(Random*101)-50

 

Пример:

x:=random (10)-5; результатом будет числа от -5 до 5 тоесть 10-5, 9-5, 8-5,...5-5,4-5,3-5,2-5,1-5,0-5...

после begin нужно прописать randomize иначе случайные числа будут ПОВТОРЯТЬСЯ при каждой генерации!

 

по умолчанию функция генерирует числа меньше 1, то есть

x:=random; результатом будет числа от 0.000....01 до 1.

x:=random(10); 1,2,3,4,5,6,7,8,9,10

x:=random(7);1,2,3,5,6,7.

и т д)

 

Зададим и распечатаем случайный массив из сорока целых чисел:

 

N=40; {Константа N будет содержать количество элементов массива}

A : Array [1..N] Of Integer;

I : Integer;

For I:=1 To N Do

A[I]:= Trunc(Random*101)-50

Write(A[I],'VVV')

 

С обработкой линейных массивов связано множество задач. Их мы рассмотрим на практических занятиях.

 

 

Для иллюстрации способов работы с двумерными массивами решим задачу: "Задать и распечатать массив 10X10, состоящий из целых случайных чисел в интервале [1,100]. Найти сумму элементов, лежащих выше главной диагонали."

 

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

 

A : Array[1..10,1..10] Of Integer;

I, K : Byte;

S : Integer;

S:=0;

For I:=1 To 10 Do

For K:=1 To 10 Do

A[I,K]:=Trunc(Random*100)+1;

Write(A[I,K]:6);

If K>I Then S:=S+A[I,K]



<== предыдущая лекция | следующая лекция ==>
Двумерные и многомерные массивы | ОБЩИЕ ПОНЯТИЯ, ОТНОСЯЩИЕСЯ К ПЕРЕДАЧЕ ИНФОРМАЦИИ НА РАССТОЯНИЕ (ИНФОРМАЦИЯ — СООБЩЕНИЕ — СВЯЗЬ)


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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