- •3. Система программитрования турбо паскаль
- •3.1 Окно среды разработчика
- •3.2. Элементы диалоговой среды
- •3.3. Команды редактора
- •3.4. Модули
- •4. Общие сведения о языке паскаль
- •4.1 Алфавит языка
- •4.2. Типы данных в TurboPascal 7.0
- •4.3. Операции и выражения в языке Паскаль
- •4.4 Стандартные функции в языке Паскаль
- •5. Линейные алгоритмы
- •5.1. Структура программы на языке Паскаль
- •5.2. Конструкция «следование»
- •6. Разветвляющиеся алгоритмы
- •And, * (умножение), / (деление), div, mod;
- •6.1. Операторы условных переходов
- •Var a, b, c : Real; lv : Boolean;
- •Var a, b, c : Real; lv : Boolean;
- •Var X, y : Real;
- •6.2. Оператор безусловного перехода
- •Var n, p, X : Real;
- •20: WriteLn('Факториал числа ' , n:4:2,' равен ' ,p:4:2);
- •7. Циклические алгоритмы
- •7.1. Цикл с предусловием While
- •X, xn, xk, dx, y, s, p: real;
- •7.2. Цикл с постусловием repeat
- •X1, x0, X, eps: real;
- •7.3. Цикл с параметром for
- •I: integer; c: char;
- •7.4. Принудительное завершение цикла
- •X, xn, xk, dx: real;
- •8. Символьный тип
- •8.1. Особенности символьного типа
- •8.2. Объявление символьной переменной
- •8.3. Операции с символами
- •Строковые переменные
- •9.1. Определение и типы строк
- •9.2. Упакованный строковый тип
- •9.3. Строковый тип
- •9.5. Примеры работы со строками
- •9.6. Индивидуальные задания по работе со строками и символами
- •10. Массивы
- •10.1. Организация данных в массиве
- •10.2. Объявление массивов
- •10.3. Ввод и вывод значений элементов массива
- •10.4. Подсчет количества элементов по заданному условию
- •10.5. Поиск минимального элемента массива
- •10.6. Вычисление произведения ненулевых элементов массива
- •10.7. Сортировка элементов массива
- •10.8. Заполнение массива случайными числами
- •10. 9. Индивидуальные задания по работе с массивам
- •11. Процедуры и функции
- •11.1. Понятие подпрограммы
- •11.2. Описание процедуры
- •11.3. Описание функции
- •11.4. Области действия имен
- •11.5. Индивидуальные задания по разработке процедур и функций
- •Var k,l; real;
10. Массивы
10.1. Организация данных в массиве
Массив (ARRAY)- это упорядоченная конечная последовательность однородных данных (числовых, символьных и т д.), имеющих одно общее имя. Таким образом, все элементы массива должны быть одного и того же типа, возможно структурированного, количество элементов фиксировано и заранее известно.
Каждому массиву задается имя, например, МАС. Элемент массива обозначается указанием имени массива, за которым следует в квадратных скобках индекс, задающий правило вычисления номера нужного элемента в массиве, например, МАС1[17]. Элемент массива часто называют переменной с индексом. Индекс может быть переменной или выражением, в которое могут входить переменные, например, МАС[А+7]. Обычно типом индекса является диапазон целочисленного типа. Элементы массива упорядочены и доступ к любому из них осуществляется простым указанием его порядкового номера (индекса).
Если индекс один, массив является одномерным.
Если индексов несколько, то массив является многомерным. В качестве двумерного массива может быть представлена матрица или таблица. Индексы в этом случае разделяются запятыми: МАС2[2,7]. Для двумерного массива индексы связывают со строками и столбцами: 2 строка и 7 столбец. Первая или вторая цифра называется строкой (или столбцом) в общем случае не важно. По меньшей мере, это можно утверждать для языка высокого уровня, т.к. внутренние механизмы извлечения данных недоступны программисту. Важно, однако, не изменять расположение строк и столбцов при программировании. В дальнейшем будем считать, что первый индекс определяет номер строки, а второй – номер столбца. Однако это обстоятельство может оказаться важным при использовании стандартной процедуры копирования памяти MOVE.
Глубина вложенности структурированных типов вообще, а следовательно, и массивов - произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления любого массива не может быть больше 65520 байт.
В линейной физической памяти компьютера элементы массива размещаются последовательно, начиная с адреса, связанного с именем массива. При переходе от младших адресов к старшим наиболее быстро меняется самый правый индекс массива:
1.1 |
1.2 |
1.3 |
2.1 |
2.2 |
2.3 |
3.1 |
3.2 |
3.3 |
4.1 |
4.2 |
4.4 |
На представленной схеме изображен массив из 4 строк и 3 столбцов. Каждый элемент занимает объем памяти, отводимый для хранения данных заданного типа. При задании индекса извлекаемого элемента, например, [4,2] машиной для обращения к указанному элементу производится вычисление по формуле:
Адрес элемента = Адрес массива + Длина строки Х (№ строки – 1) + № столбца.
Если для упрощения считать, что элемент занимает 1 байт (например, целые числа без знака), то формула приобретает вид:
Адрес элемента = Адрес массива + 3 Х (4-1) + 2 = Адрес массива + 11.
Это и есть адрес элемента с индексом [4,2], вычисленный относительно начала размещения массива.
В отличие от простой совокупности значений, присвоенных переменным, массив позволяет обращаться к элементу по индексу. Это дает возможность применять механизмы циклов, что значительно повышает эффективность программирования. Параметр цикла используется в этом случае в качестве изменяющегося индекса элемента массива.