русс | укр

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

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

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

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


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

Массивы — структурированный тип данных


Дата добавления: 2014-11-27; просмотров: 1996; Нарушение авторских прав


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

А вот указывать для каждой ячейки отдельное имя — неудобно. Как быть?

 

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

 

Хранение однотипных данных в виде таблицы

Массив — это совокупность однотипных данных, хранящихся в последовательных ячейках памяти и имеющих общее имя. Ячейки называются элементами массива. Все элементы пронумерованы по порядку, и этот номер называется индексом элемента массива.

Все элементы массива имеют один и тот же тип. Сам массив при этом имеет имя — одно для всех элементов. Для обращения к конкретному элементу массива необходимо указать имя массива и (в квадратных скобках) индекс элемента.

Простейший вид массива — одномерный массив (рис. 8.1).

Рис. 8.1. Условное изображение одномерного массива в виде строки

А — имя массива, числа в клетках таблицы — элементы массива.
Рассмотрим запись А[3] = -8.

В этой записи:
А — имя массива,
3 — номер элемента массива (индекс),
А[3] — обозначение 3-го элемента массива,
-8 — значение 3-го элемента массива.

 

Основные действия по работе с массивами

Нам предстоит научиться выполнять ряд наиболее распространенных действий с массивами:



описание;
заполнение массива случайными числами;
заполнение массива с клавиатуры;
вывод на экран;
поиск максимального элемента;
вычисление суммы всех элементов массива;
вычисление количества положительных элементов.

 

Описание массива на языке Паскаль

<Имя массивам array [<тип индекса>] of<Tnn компонентов>;

Здесь <тип компонентов> — это тип данных, который имеет каждый элемент массива, а <тип индекса> — границы изменения индекса.

Например:
var A: array [1..10] of integer;

Здесь тип индекса — интервальный, изменяется в интервале от 1 до 10, тип данных (элементов массива) — целый.

 

Заполнение массива случайными числами и вывод массива на экран

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

Рис. 8.2. Блок-схема алгоритма заполнения одномерного массива случайными числами и вывода массива на экран

Пример 8.1.
Основные действия по работе с массивами

Program Massivl;
uses Crt;
const { Раздел описания констант, то есть постоянных величин, определяемых в программе заранее и не изменяющихся по ходу выполнения программы }
N=10; { Имена констант не используются для имен переменных величин (из раздела var) }
var
A: array [1..N] of integer; { 1..N - тип индекса. Для индекса выбран интервальный тип, то есть интервал целых чисел от 1 до N, где N определено в разделе const }
i: ihteger; { Переменная, хранящая индекс элемента массива, к которому идет обращение }
begin
{II. Задание значений элементов массива как случайных чисел }
Randomize; { Инициализация датчика случайных чисел }
{ Задание элементов массива: }
for i:=1 to N do { Переменная i изменяется в цикле от 1 до N, то есть мы по очереди перебираем все элементы массива }
A[i]:=Random(100); { В очередной элемент массива A[i] записываем случайное число от 0 до 99, обратите внимание: i - номер элемента массива (принято говорить "индекс"), A[i] - значение элемента массива }
{ III. Вывод элементов массива на экран в одну строку }
ClrScr;
writeln('Введенный массив:');
for i:=l to N do
write(A[i]:4); { На каждый элемент массива выделяется по 4 позиции строки, чтобы они не склеивались при выводе!}
writeln { Этот "пустой" оператор вывода отработает только один раз и переведет курсор на новую строку для дальнейшей работы }
readln
end.

 

В данном примере мы заполнили массив случайными числами от 0 до 99. Это обеспечила нам функция random(100).
А если нам нужно получить случайные числа в другом диапазоне — например, не от нуля? Расчет нужно сделать такой: функция random(N) выдаст N различных чисел от 0 до N - 1. Если нам нужно, чтобы наименьшим числом диапазона было К, значит, необходимо прибавить это К к random(N). Наибольшее число, которое будет выдавать в этом случае формула random(N) + К, будет наибольшим числом диапазона.

Пусть, например, нам требуются случайные числа в диапазоне -100...+100. Считаем, сколько различных чисел в этом диапазоне: 100 положительных, 100 отрицательных и ноль. Итого 201.
Формула тут проста: вычесть из большего меньшее и прибавить 1.
Значит, N = 201, а К = -100.
То есть получаем формулу random(201) -100.

 

ЗАМЕЧАНИЕ

К сожалению, в таком виде формула работать не будет — при запуске программа «вылетит» с сообщением об ошибке. Это от «излишнего ума», который проявляет здесь среда Паскаль. Дело в том, что Паскаль считает тип этого выражения по функции random. А она имеет
тип word . Иными словами, беззнаковый. При попытке вычесть 100 из числа, меньшего 100, получаем отрицательный результат, что Паскаль не устраивает. Самый простой способ обойти эту напасть — паменять местами уменьшаемое (random) и вычитаемое, то есть написать: -100 + random(201). Тогда Паскаль будет считать тип этого выражения как integer по первому числу (-100), и оишбки не возникнет.

 

Задание 8.1.
Оформите эту программу так, чтобы задание массива и вывод его элементов на экран выполнялись в одном цикле. Вам понадобится составной оператор для тела цикла begin ... end.

Задание 8.2.
Добавьте в программу задания 8.1 новый цикл вывода элементов массива в обратном порядке (начиная с последнего). Попробуйте выполнить то же задание без введения нового цикла.

 

ЗАПОМНИТЕ!

Массив — это множество ячеек памяти. Поэтому любое действие с массивом заключаемся в том, чтобы перебрать все эти ячейки или, по крайней мере, какую-то их часть. Это значит, что любое действие с массивами должно содержать в себе цикл, в котором перебираются элементы массива. Если вы пишете программу с массивом и не написали цикла (for, while или repeat) — значит, вы ошиблись.



<== предыдущая лекция | следующая лекция ==>
Относительность выбора операторов while и repeat | Создание пользовательского типа данных


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


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

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

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


 


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

 
 

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

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