- •Экзаменационные вопросы
- •Глава 1. Архитектура экономических информационных систем
- •1) Между микропроцессором и основной памятью
- •2) Между микропроцессором и портами ввода - вывода внешних устройств
- •3) Между основной памятью и портами ввода - вывода внешних устройств (в режиме прямого доступа к памяти)
- •2. Классическая архитектура эвм и принципы фон Неймана
- •30 Минут
- •66 Часть I. Пятница. Вечер
- •1.2.1 Категории типов данных
- •Int double
- •1.2.2. Целый тип данных
- •Int c; (подразумевается signed int c );
- •1.2.4. Указатели
- •Void *addres;
- •1.2.5. Переменные перечислимого типа
- •1.2.6. Массивы
- •Int a[2][3]; /* представлено в виде матрицы
- •1.2.7. Структуры
- •1.2.8. Объединения (смеси)
- •Int vozrast;
- •Int telefon; } inform;
- •1.2.9. Поля битов
- •1.2.10. Переменные с изменяемой структурой
- •Int type; /* признак компонента */
- •Int age; /* возраст */
- •Int no_children;
- •1.2.11. Определение объектов и типов
- •1.2.12. Инициализация данных
- •Var a, b : intmas;
- •Var a, b : array [1 .. N] of integer;
- •Var a : array [1 .. N] of real;
- •I : integer;
- •Var a : array [1 .. N] of integer;
- •I, j, nmin, buf : integer;
- •Var a : array [1 .. M, 1 .. N] of integer;
- •I, j, n_pos_el : integer;
- •11 Мая 2008 года
- •Index Флаг, указывающий индексировать или нет документы данного ресурса.
- •Модели баз данных Концептуальная модель
- •Инфологическая модель данных "Сущность-связь"
- •Реляционная модель
- •Язык sql, быстрый старт.
- •База данных платежного поручения
- •31 И дальше отдельными файлами
Var a, b : intmas;
Можно описать тип прямо при определении переменных:
Var a, b : array [1 .. N] of integer;
С массивами в целом можно выполнять только присваивание. При этом массивы должны быть одного типа, например:
b := a;
Все остальные действия выполняются с отдельными элементами массива. Для обращения к элементу массива после имени массива указывается номер элемента в квадратных скобках:
a[4] b[i]
С элементом массива можно делать все, что допустимо для переменных того же типа.
Инициализация массивов. Можно присвоить значения элементам массива до начала выполнения программы. Это делается в разделе описания констант:
const a : intmas = (0, 5, -7, 100, 15, 1);
Количество констант должно точно соответствовать числу элементов массива.
Пример 1
Программа определяет максимальный элемент массива из 20 вещественных элементов.
Program max_elem;
const n = 20;
Var a : array [1 .. N] of real;
I : integer;
max : real;
begin
writeln('Введите ', n, ' элементов массива');
for i := 1 to n do read(a[i]);
max := a[1];
for i := 2 to n do
if a[i] > max then max := a[i];
writeln('Максимальный элемент: ', max:6:2)
end.
Пример 2
Упорядочивание по возрастанию элементов массива из 20 целых величин.
Для сортировки будем использовать метод выбора. Алгоритм состоит в том, что сначала выбирается наименьший элемент массива и меняется местами с первым элементом, затем просматриваются элементы, начиная со второго, и наименьший из них меняется местами со вторым элементом, и так далее n - 1 раз. На последнем проходе цикла при необходимости меняются местами предпоследний и последний элементы массива.
Program sort; { Сортировка выбором }
const n = 20;
Var a : array [1 .. N] of integer;
I, j, nmin, buf : integer;
begin
writeln('Введите ', n, ' элементов массива');
for i := 1 to n do read(a[i]);
for i := 1 to n - 1 do begin { просмотр массива n-1 раз }
nmin := i;
for j := i + 1 to n do { поиск минимума }
if a[j] < a[nmin] then nmin := j;
buf := a[i]; { перестановка }
a[i]:= a[nmin]; { двух }
a[nmin]:= buf; { элементов массива }
end;
writeln('Упорядоченный массив:');
for i := 1 to n do write(a[i]:5)
end.
Двумерные массивы
Элемент массива может быть любого типа, кроме файлового, следовательно, он может быть и массивом:
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.
Рис. 2
program sred_n;
const m = 3; n = 4;