- •СОДЕРЖАНИЕ
- •Раздел 1. ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММНОМ ОБЕСПЕЧЕНИИ
- •1.1. Принцип программного управления
- •1.2. Автоматическое выполнение команд программы
- •1.3. Этапы постановки и решения задачи на компьютере
- •1.4. Назначение и классификация языков программирования
- •1.4.1. Машинно-ориентированные языки
- •1.4.2. Машинно-независимые языки
- •1.5. Структура программного обеспечения
- •1.5.1. Системы программирования
- •1.5.2. Операционные системы
- •Раздел 2. ОСНОВЫ АЛГОРИТМИЗАЦИИ
- •2.1. Алгоритм и его свойства
- •2.2. Способы описания алгоритмов
- •2.2.1. Словесное описание
- •2.2.2. Графическое описание
- •2.2.3. Запись на алгоритмическом языке
- •2.3. Разновидности структур алгоритмов
- •2.3.1. Линейный вычислительный процесс
- •2.3.2. Разветвляющийся вычислительный процесс
- •2.3.3. Циклический вычислительный процесс
- •Раздел 3. СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ
- •3.1. Теория структурного программирования
- •3.2. Реализация структурного проектирования в современных языках программирования
- •3.3. Преобразование неструктурированных программ в структурированные
- •3.3.2. Метод введения переменной состояния
- •3.3.3. Метод булевого признака
- •3.4. Способы графического представления структурированных схем алгоритмов
- •3.4.1. Метод Дамке
- •3.4.2. Схемы Насси-Шнейдермана
- •Раздел 4. АЛГОРИТМИЧЕСКИЙ ЯЗЫК ПРОГРАММИРОВАНИЯ ПАСКАЛЬ
- •4.1. Общая характеристика языка Паскаль
- •4.2. Алфавит языка Паскаль
- •4.3. Основные понятия языка
- •4.3.1. Идентификаторы
- •4.3.2. Комментарии
- •4.4. Структура простейшей программы
- •4.5. Способы описания синтаксиса
- •4.5.2. Синтаксические диаграммы
- •Раздел 5. ОСНОВНЫЕ ТИПЫ ДАННЫХ
- •5.1. Классификация данных
- •5.2. Стандартные скалярные типы данных
- •5.2.1. Целочисленные типы
- •Формат
- •5.2.2. Вещественные типы
- •Функция
- •5.2.3. Символьный тип (тип Char)
- •5.2.4. Логический тип (тип Boolean)
- •Функция
- •5.3. Выражения
- •5.4. Оператор присваивания
- •Раздел 6. СТРУКТУРА ПРОГРАММЫ
- •6.1. Программный модуль
- •6.2. Раздел меток
- •6.3. Раздел констант
- •6.4. Раздел типов
- •6.5. Раздел переменных
- •6.6. Раздел операторов
- •Раздел 7. ОПЕРАТОРЫ
- •7.1. Составной оператор
- •7.2. Программирование линейных и разветвляющихся структур алгоритмов
- •7.2.1. Оператор перехода Goto
- •7.2.2. Условный оператор If
- •7.2.3. Оператор варианта (выбора) Case
- •7.2.4. Пустой оператор
- •7.3. Программирование циклических структур алгоритмов
- •7.3.1. Оператор цикла с параметром (оператор For)
- •7.3.2. Оператор цикла с постусловием
- •7.3.3. Оператор цикла с предусловием
- •7.3.4. Операторы Continue и Leave
- •Раздел 8. СТРУКТУРИРОВАНИЕ И ОФОРМЛЕНИЕ ПРОГРАММ
- •Раздел 9. ОПИСАННЫЕ СКАЛЯРНЫЕ ТИПЫ
- •9.1. Перечислимый скалярный тип
- •9.2. Тип диапазон
- •10.1. Массивы
- •10.1.1. Задание массивов
- •10.1.2. Действия над элементами массивов
- •10.1.3. Действия над массивами
- •10.1.4. Типизованные константы типа массив
- •10.2. Строковые данные
- •10.2.1. Строковые константы
- •10.2.2. Строковые переменные
- •10.2.3. Встроенные функции, определенные над данными типа String
- •ЛИТЕРАТУРА
A[1,1] A[1,2]
A[2,1] A[2,2]
Расположение данного массива в памяти иллюстрирует рисунок 10.3.
A[1,1] A[1,2] A[2,1] A[2,2]
Слово (2 байта) – для типа Integer.
Рисунок 10.3 – Расположение двумерного массива в памяти
10.1.2. Действия над элементами массивов
Элементы массива называются индексированными переменными. Для обращения к конкретному элементу массива необходимо указывать имя массива и индексы элемента в квадратных скобках.
Элементы массива могут использоваться в выражениях аналогично простым переменным и вместе с простыми переменными. Например,
Sin (X [I + 5] ) * X [I] + Y.
Здесь Y – простая переменная, X [I + 5], X [I] – элементы массива X. Инициализация массива – это присвоение всем элементам массива
исходного значения.
Пример 10.7.
Инициализация двумерного массива.
Type
Mas = Array [1 .. 10, 1 .. 20] Of Integer; Var
J, I: Integer; Mas1, Mas2: Mas;
----------------------------------
{Инициализация: установка начального значения, равного 0}
For I := 1 To 10 Do For J := 1 To 20 Do
179
Mas1[I, J] := 0;
Пример 10.8.
Простейший ввод-вывод элементов массива (объявления – в соответствии с примером 10.7).
----------------------------------
{Ввод исходных значений в массив}
For I := 1 To 10 Do For J := 1 To 20 Do
Read (Mas1[I, J]);
{Вывод значений элементов массива}
For I := 1 To 10 Do For J := 1 To 20 Do
Writeln (Mas1[I, J]);
Ввод-вывод всех элементов массива как одной полной переменной в Паскале не предусмотрен.
Пример 10.9.
Присвоение значения одного массива другому может быть выполнено
так:
For I := 1 To 10 Do
For J := 1 To 20 Do
Mas2 [I, J] := Mas1 [I, J];
Массив Mas2 должен быть объявлен так же, как и массив Mas1 (оба массива должны быть одного и того же типа). Массив Mas1 к этому моменту должен быть определен (все его элементы должны иметь значения). Значения элементов Mas1 после присваивания не изменяются.
В двух следующих пунктах описан другой способ присвоения значения одного массива другому.
180
10.1.3. Действия над массивами
Полные переменные типа массив не могут использоваться в качестве операндов выражений.
Значения полных переменных могут быть использованы только в операторах присваивания, причем полной переменной может быть присвоено только значение полной переменной того же типа.
Например,
В := А;
Здесь А и В – массивы одного и того же типа.
К этому моменту массив А уже должен быть определен – всем его элементам должны быть присвоены значения.
Это же касается и подмассивов. Например, если А и В – двумерные массивы одного типа, то запись
B[I] := A[I];
означает, что I-ой строке массива В будет присвоено значение I-ой строки массива А.
10.1.4. Типизованные константы типа массив
Для инициализации массива в языке Паскаль могут быть использованы типизованные константы типа массив.
Синтаксис константы-массив представляет рисунок 10.4.
( <Типизованная_константа> )
,
Рисунок 10.4 – Синтаксическая диаграмма задания типа массив
Типизованные константы-массив объявляются в разделе констант.
181
Пример 10.10.
Объявление одномерной константы-массив.
Type
Mas = Array [1..10] Of Integer;
Const
{Для присваивания типа типизованной константе-массив используется имя типа}
M: Mas = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
{Для присваивания типа типизованной константе-массив используется задание типа}
Simv: Array [1..5] Of Char = (‘A’, ‘B’, ‘C’, ‘D’, ‘E’);
{или (эквивалентная форма записи):
Simv: Array [1..5] Of Char = (‘ABCDE’);}
В данном примере элементам М[1], M[2], ..., M[10] константы-массив М присваиваются значения 1, 2, ..., 10 соответственно. Аналогично элементам Simv[1], Simv[2], ..., Simv[10] константы-массив Simv присваиваются значения
‘A’, ‘B’, ‘C’, ‘D’, ‘E’.
При объявлении многомерной константы-массив учитывается, что задание типа
Array [1..M, 1..N, 1..K] Of <Тип>
с учетом полной формы задания массивов эквивалентно объявлению
Array [1..M, 1..N] Of Array [1..K] Of <Тип>
или
Array [1..M] Of Array [1.. N] Of Array [1..K] Of <Тип>
Многомерный массив фактически состоит из массивов меньшей мерности.
Отсюда следует, что при задании многомерной константы-массив в качестве <Типизованной_константы> (см. рисунок 10.4) следует использовать константу-массив на единицу меньшей размерности, чем текущая константамассив. Массив каждой размерности заключается в круглые скобки.
182
Пример 10.11.
Объявление многомерных констант-массивов.
Type
Mas3 = Array [1..2, 1..2, 1..2] Of Integer;
Const
M3: Mas3 = (((0,1), (2,3)), ((4,5), (6,7)));
Массиву М3 будут присвоены следующие начальные значения:
M3[1,1,1] |
= 0 |
M3[1,2,1] = 2 |
M3[2,1,1] = 4 |
M3[2,2,1] = 6 |
M3[1,1,2] |
=1 |
M3[1,2,2] = 3 |
M3[2,1,2] = 5 |
M3[2,2,2] = 7 |
Значения присваиваются в порядке размещения элементов массива в памяти машины. Наиболее быстро изменяется последний индекс.
Вывод значений структурной константы-массив производится аналогично массивам – поэлементно в цикле. Вывод полной константы массив сразу не предусмотрен.
С помощью структурной константы-массив может производиться инициализация массива.
Пример 10.12.
Инициализация массива с помощью структурной константы-массив (применительно к предыдущим примерам).
------------------
Var
M1: Mas;
MM: Mas3;
-----------------
Begin
M1 := M;
MM := M3;
Следует напомнить, что типизованные константы следует рассматривать как инициализированные переменные, то есть они могут изменять исходное значение в ходе выполнения программы.
183