
- •Алфавит и лексемы
- •Константы
- •Имена, ключевые слова и знаки операций
- •Ввод с клавиатуры
- •Вывод на экран
- •Условный оператор if
- •Оператор варианта case
- •Цикл с предусловием while
- •Цикл с постусловием repeat
- •Цикл с параметром for
- •Рекомендации по использованию циклов
- •Оператор перехода goto
- •Перечисляемый тип данных
- •Интервальный тип данных
- •Двумерные массивы
- •Операции
- •Процедуры и функции для работы со строками
- •Множества
- •Операции над множествами
- •Подпрограммы для работы со всеми типами файлов Процедуры
- •Функции
- •Текстовые файлы
- •Бестиповые файлы
- •Компонентные файлы
- •Прямой доступ
- •Процедуры
- •Функции
- •Глобальные и локальные переменные
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Нетипизированные параметры
- •Открытые массивы и строки
- •Рекурсивные подпрограммы
- •Описание модулей
- •Использование модулей
- •Модуль System
- •Модуль Crt
- •Работа с экраном
- •Работа с клавиатурой
- •Модули Dos и WinDos
- •Модуль Graph
- •Структура графической программы
- •Модуль Strings
Двумерные массивы
Элемент массива может быть любого типа, кроме файлового, следовательно, он может быть и массивом:
const n = 4; m = 3;
type mas = array [1 .. n] of integer;
mas2 = array [1 .. m] of mas;
Более компактно это можно записать так:
type mas2 = array [1 .. m, 1 .. n] of integer;
Здесь описан тип массива, состоящего из m массивов, каждый из которых содержит n целых чисел. Иными словами, это матрица из m строк и n столбцов (рис. 1). Обе размерности массива должны быть константами или константными выражениями. Имя типа указывается при описании переменных:
var a, b : mas2;
В памяти двумерный массив располагается по строкам:
a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34
| 1-я строка | 2-я строка | 3-я строка |
При просмотре массива от начала в первую очередь изменяется правый индекс (номер столбца).
|
Рис. 1. |
К элементу двумерного массива обращаются, указывая номер строки и номер столбца, на пересечении которых он расположен, например:
a[1, 4] b[i, j] b[j, i]
Необходимо помнить, что компилятор воспринимает как номер строки первый индекс, как бы он ни был обозначен в программе.
При инициализации двумерных массивов каждая строка заключается в дополнительную пару круглых скобок:
const a : mas2 = (( 2, 3, 1, 0),
( 1, 9, 1, 3),
( 3, 5, 7, 0) );
С массивами в целом определена только одна операция - присваивание массивов одного типа (например, b:= a). Все остальные действия выполняются с отдельными элементами. Например, чтобы ввести с клавиатуры двумерный массив, необходимо организовать вложенные циклы:
for i := 1 to m do
for j := 1 to n do read(a[i, j]);
Для приведенного здесь порядка следования циклов элементы массива должны вводиться по строкам.
Пример #3. |
|||
|
Программа, которая для целочисленной матрицы 3 х 4 определяет среднее арифметическое ее элементов и количество положительных элементов в каждой строке. |
||
Схема алгоритма приведена на рис. 2.
program sred_n; const m = 3; n = 4; var a : array [1 .. m, 1 .. n] of integer; i, j, n_pos_el : integer; sred : real; begin for i := 1 to m do for j := 1 to n do read(a[i, j]); sred := 0; for i := 1 to m do begin n_pos_el := 0; for j := 1 to n do begin sred := sred + a[i, j]; if a[i, j] > 0 then inc(n_pos_el); end; writeln('В ', i, '-й строке ', n_pos_el, ' положительных элементов'); end; sred := sred / m / n; writeln('Среднее арифметическое: ', sred:6:2); end.
|
Лекция 10
Строки
Строки используются для хранения последовательностей символов. В Паскале три типа строк:
стандартные (string);
определяемые программистом на основе string;
строки в динамической памяти.
Строка типа string может содержать до 255 символов. Под каждый символ отводится по одному байту, в котором хранится код символа. Еще один байт отводится под фактическую длину строки. Для коротких строк использовать стандартную строку неэффективно, поэтому в язык введена возможность самостоятельно задавать максимальную длину строки, например:
type str4 = string [4];
Здесь описан собственный тип данных с именем str4. Переменная этого типа занимает в памяти 5 байт. Длина строки должна быть константой или константным выражением.
Примеры описания строк:
const n = 15;
var s : string; { строка стандартого типа }
s1 : str4; { строка типа str4, описанного выше }
s2 : string [n]; { описание типа задано при описании переменной }
Инициализация строк, как и переменных других типов, выполняется в разделе описания констант:
const s3 : string [15] = 'shooshpanchik';