СЛОЖНЫЕ ТИПЫ ДАННЫХ
Следуя классификации типов данных, приведенной на рисунке
1, в программах на языке Паскаль используется наряду со скалярными (простыми)
типами данных структурированные (сложные). В отличие от простых данные
структурированного типа характеризуются некоторым множеством образующих
элементов, то есть переменная или константа структурированного типа всегда
имеет несколько компонентов.
Рис. 1 Классификация типов данных
Массивы Одномерные массивы
Понятие массива используется при решении
научно-технических и экономических задач обработки совокупностей простых
значений. Например, линейная таблица. В общем случае массив- это
упорядоченная совокупность значений одинакового типа. Простые значения, образующие
массив, упорядочены так, что каждому значению соответствует совокупность
номеров, определяющих его местоположение в общей последовательности. Номер
называется индексом. Основными характеристиками массива являются: имя,
размерность (число элементов), тип его элементов и тип индексов. Общий вид
массива:
Способ 1:
VAR
<Имя>: ARRAY [<Тип- индексов>] OF <Тип-
элементов>;
Способ 2:
TYPE
<Имя>= ARRAY [<Тип- индексов>] OF <Тип-
элементов>;
VAR
<Имя 1>:<Имя>;
Приведенные способы являются наиболее
распространенными. Количество индексов, необходимое при обращении к элементу
массива, определяет размерность массива:
-
одномерные массивы или линейные;
-
двумерные массивы или прямоугольная таблица (матрица); - n- мерные массивы.
Для описания количества элементов массива можно использовать
предварительно описанные константы. CONST
G1=4; G2=6;
VAR
MasJ: array[1..G1] OF integer;
A, B: array[1..G2] OF char;
После объявления (описания) массива,
каждый его элемент можно обработать, указав идентификатор (имя) массива и
индекс элемента в квадратных скобках: М[2]- обращение ко второму элементу
массива М, Mas[5]- обращение к пятому элементу массива Mas. Индексированный
элемент массива используется в операторах языка Паскали и входит в качестве
параметров в операторы ввода, вывода. Кроме того индексированному элементу
можно присвоить любое значение, соответствующее его типу. Типичные ситуации
при работе с данными типа массив можно классифицировать следующим образом:
1. Инициализация-
операция присваивания начальных значений каждому элементу массива одного и того
же значения, соответствующего базовому типу. Выполняется эта операция с помощью
оператора с параметром.
2. Ввод/
вывод элементов массива- операция поэлементного ввода/ вывода элементов
массива.
3. Копирование-
операция присваивания значений всех элементов одного массива всем
соответствующим элементам другого массива.
4. Поиск
элементов в массиве- операция поиска по некоторому условию.
5. Перестановка
значений массива- операция замены значения одного элемента массива значением
другого с помощью дополнительной переменной того же типа, что и элементы
массива.
6. Сортировка
массива- операция распределения элементов массива в соответствии с
определенными правилами:
-
линейная сортировка;
-
сортировка методом пузырька;
-
метод быстрой сортировки с разделением; - бинарный поиск.
Пример
Задание
Найти сумму действительных элементов массива, заданного 9
элементами.
Программа
Текст программы
{Вычисление суммы элементов массива}
Program Sum_massiva;
Uses Crt; Const n=9; Type
M=array[1..n] of real; Var i:integer;
sum:real;
A:m;
Begin
ClrScr;
Writeln('Введи 9 элементов массива через
пробел->');
For i:=1 to n do {ввод элементов массива}
Read(A[i]); sum:=0;
For i:=1 to n do {нахождение суммы эл.
массива} sum:=sum+A[i];
Writeln('Сумма элементов массива=
',sum:7:2); Readln End.
Результат выполнения программы
Темы для самостоятельного изучения
1. Какие
действия можно производить над массивами?
2. В
чем заключается идея линейной сортировки?
3. Почему
«пузырьковый метод» самый популярный?
4. Почему
метод быстрой сортировки с разделением самый эффективный?
5. Почему
бинарный поиск эффективен для больших отсортированных массивов?
Выполнить
Составить программу по индивидуальному заданию, учитывая
следующие требования:
- количество элементов
массива задавать в разделе CONST или вводить с клавиатуры; - массив описывать одним из
представленных способов; - программу
сопровождать диалогом и комментариями.
Вариант 1
1.
Увеличить все элементы массива в два раза, вывести новый массив
и подсчитать его сумму.
2.
Упорядочить элементы массива по возрастанию (без повторений).
|
Вариант 6
1.
Подсчитать количество элементов массива кратных 2.
2.
Переставить элементы массива так, чтобы шли все отрицательные
элементы (по убыванию), потом нулевой элемент и положительные элементы (по
возрастанию).
|
Вариант 2
1.
Найти сумму элементов массива имеющих четные порядковые номера.
2.
Разместить в порядке убывания элементы массива так, чтобы
вторые и последующие
|
Вариант 7
1.
Подсчитать количество нулевых,
положительных и отрицательных элементов массива.
2.
Упорядочить элементы массива по убыванию
|
вхождения одинаковых
элементов заменялись нулевым значением.
|
(без повторений).
|
Вариант 3
1.
Подсчитать сумму положительных действительных элементов
массива.
2.
Переставить элементы массива так, чтобы шли все положительные
элементы (по убыванию), потом нулевой элемент и отрицательные элементы (по
возрастанию).
|
Вариант 8
1.
Подсчитать сумму нечетных элементов целочисленного массива.
2.
Разместить в порядке возрастания элементы массива так, чтобы
вторые и последующие вхождения одинаковых элементов заменялись 1.
|
Вариант 4
1.
Вывести все положительные и отрицательные элементы массива.
2.
Упорядочить элементы массива так, чтобы вначале размещался
ноль, потом элементы массива по возрастанию их абсолютной величины..
|
Вариант 9
1.
Подсчитать количество отрицательных целых элементов массива,
стоящих на нечетных местах.
2.
Переставить элементы массива симметрично относительно середины
массива.
|
Вариант 5
1.
Найти абсолютное значение разности элементов массива, имеющих
четные порядковые номера.
2.
Переставить элементы массива в обратном порядке следования.
|
Вариант 10
1.
Подсчитать сумму положительных элементов целочисленного
массива, кратных 2.
2.
Переставить элементы массива относительно середины, первый-
средний, второй- следующий за средним и т.д.
|
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.