Пример 5.4. Заполнение массива с помощью генератора произвольных чисел.
Тема 5. Cтруктурированные типы данных. Линейные (одномерные) массивы Понятие массива
При решении задач с использованием большого количества однотипных упорядоченных данных, часто возникает необходимость объединять ряд переменных, хранящих значения одинакового типа, в единую структуру, имеющую общее имя. Для этих целей, собственно говоря, существуют массивы.
МАССИВ - упорядоченная группа фиксированного количества переменных одного типа, имеющая общее имя. "Группа переменных" в данном смысле означает, что каждый элемент массива является переменной, для хранения значения которой в памяти отводится определенная область. "Упорядоченная" - означает, что переменные в массиве хранятся не хаотично, а в установленном порядке, по очереди. "Фиксированное количество" - означает, что количество переменных в массиве не бесконечно, оно ограничено определенным числом (размерностью массива), которое указывается при описании массива. "Одного типа" - означает, что переменные, входящие в массив, должны хранить данные одного типа (Real, Integer, Char, Boolean и т.д.), который называется типом элементов массива.
Каждому массиву присваивается собственное имя (идентификатор). По аналогии с переменными, значения элементов массива (переменных, составляющих массив) до выполнения программы не определены. Значения в элементы массива записываются с помощью оператора присваивания. Над переменными, составляющими массив (над элементами массива) определены те же действия, что и над обычными переменными: операции присваивания и считывания значений, преобразование и сравнение их.
Линейные одномерные массивы (вектора данных)
Каждый элемент массива имеет свое имя, представляющее собой имя массива и стоящие за ним квадратные скобки, в которых указывается индекс элемента - целое число, равное порядковому номеру этого элемента в массиве. Таким образом, для ссылки на отдельный элемент массива необходимо указать имя массива, а затем в "[ ]" индекс (номер) элемента: <имя массива>[<индекс>].
Например: A[1], B[14], Mas_2[12]. Кроме того, в качестве индекса можно использовать не только целое число, соответствующее порядковому номеру этого элемента в массиве, но и выражение целого типа. Например: A[5+6] или B[i+7] или Mas_2[i div k].
Массив описывается в разделе переменных посредством указания типа его элементов и максимального их количества. Тип элементов может быть любым. При задании максимального числа элементов массива обычно употребляют диапазон целых чисел. Общий вид описания массива в ЯП Паскаль следующий:
Var <имя массива>: array[<размерность>] of <тип элементов>;
К имени массива предъявляются те же требования, что и к имени переменной. Размерность - это диапазон целых чисел, каждое из которых является порядковым номером (индексом) одной из ячеек массива. Обычно диапазон индексов задают, начиная от единицы: [1..100]. Это удобно, но не является обязательным. Важно лишь, чтобы правая граница диапазона была больше или равна левой границы.
Пример 5.1. Описание линейных массивов.
const N=100; {раздел констант, в котором регистрируется константа N=100} var m: array[1..20] of real; {массив из 20 ячеек} m2: array[1..N] of integer; {массив из 100 ячеек} A: array[-N..0] of integer; {массив из 101 ячейки}
При описании массивов, задавая числовые пределы изменения индексов, обычно указывают максимально возможное число элементов, которое может быть востребовано в данной программе; при этом допускается, что фактическое количество элементов может оказаться меньше, чем затребовано. При обращении к элементу массива с индексом, не входящим в указанный при описании диапазон, произойдет ошибка.
Вводить и выводить значения из массивов возможно только поэлементно, и для этого используют в цикле операторы: Read, Readln, Write, Writeln и оператор присваивания.
Пример 5.2. Ввод/вывод массива (Readln/Writeln).
Ввод значений массива через оператор Readln, вывод заполненного массива с помощью оператора Writeln.
Для заполннения и вывода на экран значения каждой ячейки массива воспользуемся арифметическим оператором цикла, в котором счетчик будет меняться от первого номера ячейки до последнего.
const n=20; {раздел констант, в котором регистрируется константа n=20} var m: array[1..n] of real; {раздел описания переменных, в котором регистрируется массив m} i: integer; {описание переменной i} begin {начало раздела операторов} for i:=1 to N do {арифметический оператор цикла} begin {начало составного оператора} write('Input m[',i,'] = '); {вывод на экран: Input m[1] =, Input m[2] = и т.д.} readln(m[i]); {чтение введенного значения в 1, 2 и т.д. ячейку массива m} end; {конец составного оператора} for i:=1 to N do writeln('m[', i,'] = ', m[i]); {вывод введенного массива на экран столбиком} readln; {ожидание нажатия клавиши Enter} end. {конец программы}
Пример 5.3. Заполнение массива с помощью оператора присваивания.
Заполнение элементов массив A квадратами их индексов.
Для заполннения и вывода на экран значения каждой ячейки массива воспользуемся арифметическим оператором цикла, в котором счетчик будет меняться от первого номера ячейки до последнего.
const n=20; {раздел констант, в котором регистрируется константа n=20} var a: array[1..n] of integer; {раздел описания переменных, в котором регистрируется массив a} i: integer; {описание переменной i} begin {начало раздела операторов} for i:=1 to N do a[i]:=i*i; {заполнение массива: a[1]:=1, a[2]:=4 и т.д.} for i:=1 to N do write(a[i],' '); {вывод через пробел элементов массива на экран в строчку} readln; {ожидание нажатия клавиши Enter} end. {конец программы}
Кроме приведенных выше двух способов заполнения массива (с помощью оператора чтения и присваивания) существует еще один - с помощью генератора произвольных чисел. Для того, чтобы воспользоваться этим способом необходимо, первое - подключить генератор произвольных чисел с помощью команды randomize, второе - получить с помощью функции random произвольное значение. Команда randomize обычно указывается до применения функции random и вне цикла. Функция random работает следующим образом.
для получения случайного целого значения, используют функцию random с параметром: random(N), которая возвращает произвольное значение из диапазона чисел: от 0 до N-1. для получения случайного вещественного значения, используют функцию random без параметра: random, которая возвращает произвольное вещественное значение из диапазона чисел: [0,1).
Для большей наглядности приведем пример.
Пример 5.4. Заполнение массива с помощью генератора произвольных чисел.
Массив А заполняется целыми значениями из диапазона от -50 до 50, массив В вещественными числами из диапазона: [-50,50).
Для заполннения и вывода на экран значения каждой ячейки массивов воспользуемся арифметическим оператором цикла, в котором счетчик будет меняться от первого номера ячейки до последнего.
const n=10; {раздел констант, в котором регистрируется константа n=10} var a: array[1..n] of integer; {раздел описания переменных, в котором регистрируется массив a} b: array[1..n] of real; {регистрация массива b} i: integer; {регистрация переменной i} begin {начало раздела операторов} randomize; {подключение генератора произвольных чисел} writeln('Massiv A:'); {вывод на экран: Massiv A:} for i:=1 to N do a[i]:=random(101)-50; {заполнение массива произвольными целыми значениями} for i:=1 to N do write(a[i]:5); {форматный вывод элементов массива на экран в строчку} writeln; {пустой writeln - для разделения выводимых массивов пустой строкой} writeln('Massiv B:'); {вывод на экран: Massiv B:} for i:=1 to N do b[i]:=random(101)*random-50; {заполнение массива произвольными вещественными значениями} for i:=1 to N do writeln(b[i]:11:7); {форматный вывод элементов массива на экран в стролбиком} readln; {ожидание нажатия клавиши Enter} end. {конец программы}
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|