- •Предисловие
- •Основные навыки и умения
- •Логическая культура: знание логики, логическая интуиция.
- •Языковые знания и умения.
- •Поисковые знания и умения.
- •Алгоритмические навыки и умения.
- •Общие подходы к построению алгоритмов
- •Тестирование и сопровождение программ
- •Обязательный минимум содержания среднего (полного) общего образования
- •Технология обработки текстовой информации
- •Введение в информатику
- •Системы счисления
- •Перевод из десятичной системы счисления
- •Перевод в десятичную систему счисления
- •Перевод чисел из двоичной системы счисления в восьмеричную, шестнадцатеричную системы и обратно
- •Выполнение арифметических операций в позиционных системах счисления
- •Элементы математической логики
- •Логические законы
- •Алгоритм и его свойства
- •Исполнители. Компьютер - универсальный исполнитель
- •Работа компьютера
- •Turbo pascal - исполнитель паскаль-программ
- •Конструкции Паскаля
- •Типы данных
- •Целый тип данных
- •Вещественный тип данных
- •Символьный тип данных
- •Логический тип данных
- •Выражения
- •Операторы ввода-вывода
- •Оператор присваивания
- •Общий вид программы на Паскале
- •Условный оператор
- •If логическое_выражение then оператор1 else оператор2;
- •If логическое_выражение then оператор1;
- •Операторы цикла
- •Построение линейных алгоритмов
- •Построение ветвящихся алгоритмов
- •Построенние циклических алгоритмов
- •Нахождение суммы
- •Вложенные циклы
- •Переборный метод решения задач
- •Численные методы
- •Метод итераций
- •Метод половинного деления
- •Вычисление определенного интеграла методом трапеций
- •Случайные числа
- •Метод Монте-Карло (метод статистических испытаний)
- •Массивы Одномерные массивы
- •Перебор элементов массива
- •Перебор подмассивов
- •Классы задач по обработке массивов
- •Задачи первого класса
- •Задачи второго класса
- •Задачи третьего класса
- •Задачи четвертого класса
- •Сортировка массивов
- •Сортировка вставками
- •Сортировка пузырьком (обменом)
- •Сортировка выбором
- •Сортировка фон Неймана (слиянием)
- •Двумерные массивы
- •Обработка строк
- •Процедуры и функции
- •Рекурсия
- •Работа с графикой
- •Классы программного обеспечения
- •Компиляция и интерпретация
- •Текстовый редактор
- •Электронные таблицы
- •Системы управления базами данных (субд)
- •Пример решения экзаменационного билета
- •Контрольные работы
- •Контрольная работа №1
- •Контрольная работа № 2
- •Контрольная работа № 3
- •Контрольная работа № 4
- •Контрольная работа № 5
- •Библиографический список
Массивы Одномерные массивы
Если необходимо при решении задачи использовать большое количество данных одного типа, то обозначать их различными именами и обрабатывать становится затруднительно. В предыдущем разделе был показан прием, позволяющий вводить большое количество однородных данных, используя одну переменную. К сожалению, этот способ имеет существенный недостаток: сохраняется только последнее введенное значение, что не позволяет повторно обратиться к введенным данным. Например, задача нахождения количества элементов в заданной последовательности чисел, равных последнему элементу, предполагает просмотр элементов последовательности два раза: первый - при вводе элементов и получении значения последнего элемента и второй - при поиске количества элементов, совпадающих с последним. Логично ввести для всей последовательности одно обобщающее имя, а индексом (или номером) отметить то число, которое нас интересует. Этот прием часто используется и в обыденной жизни. Например, книги на книжной полке. Можно попросить ребенка, не умеющего читать, принести третью книгу с полки. И однозначно получим то, что хотели. Таким образом, в данном случае обобщающим именем служит “полка”, а индексом - порядковый номер книги на полке. Другой пример: можно не знать имени зрителя в концертном зале, но однозначно его определить, указав номер ряда и место в ряду, которое занимает зритель.
Такие данные описываются при помощи структурированного типа данных, который называется массивом.
Массив - упорядоченная совокупность данных, имеющая одно имя. Каждому элементу массива соответствует выражение порядкового типа (чаще целое число), определяющее место этого элемента в массиве, которое называется индексом. Если для определения места элемента используется один индекс, такой массив называют одномерным (вектором), два - двумерным (матрицей). В Паскале индекс заключается в квадратные скобки.
Массив может быть описан следующим образом:
var имя_массива: array [тип_индекса] of тип_элементов;
В качестве типа индекса может быть любой простой тип, кроме стандартного real и integer, чаще всего это тип-диапазон, с помощью которого компилятор определяет общее число элементов массива: [N..K], где N, K - нижняя и верхняя границы диапазона. Количество элементов в диапазоне определяется следующим образом: K - N +1.
Тип элементов или базовый тип - это простой или сложный тип, допустимый в Паскале.
Пример 1. var a: array [-5..5] of real;
a - имя массива, элементы которого имеют базовый тип real, первый элемент имеет индекс -5, индекс последнего элемента - 5, всего элементов 5 - (-5) + 1 = 11.
Пример 2. var aа: array [‘A’..’Z’] of integer;
aa - имя массива, элементы которого имеют базовый тип integer, первый элемент имеет индекс -’A’, последний - ‘Z’, всего элементов - 24.
В Паскале есть возможность создавать свои типы данных, которые должны быть описаны в специальном разделе описания типов TYPE.
Пример.
const n =10;
type vector = array [1..n] of real; {тип vector объединяет в себе все
одномерные массивы, состоящие из n
действительных элементов}
var a, b: vector;
c : array [1..20] of vector;
Часто возникает необходимость использования массива переменной длины (или динамического массива). Наиболее простой выход из такой ситуации следующий: при описании массива задать максимально возможную для данной задачи границу, а уже при решении задачи использовать не весь массив, а только его часть. Например:
var a: array [1..20] of real;
...
for i := 1 to 10 do
read (a[i]);
В качестве индекса массива может быть выражение, частным случаем которого является константа или переменная.
Элементы массива могут стоять как в левой части оператора присваивания, так и в выражениях. Над элементами массива можно производить операции, которые разрешены для его базового типа.
Ввод и вывод массивов в Паскале осуществляется поэлементно, для чего необходимо организовать цикл.
Пример.
for i := 1 to 10 do read (a[i]); |
for i := 1 to 10 do write (a[i]); |
for i := 1 to 10 do begin write (‘a[‘, i:2, ‘]=‘); readln (a[i]) end; |
Заполнять массив данными можно путем ввода их с клавиатуры, как было показано выше, или используя датчик псевдослучайных чисел.
Заполнение массива случайными числами будет осуществляться следующим образом:
Randomize;
for i := 1 to 10 do
begin
a[i] := 10 + random (41); {элементами массива будут целые числа
10 <= a[i] <= 50}
write (‘a[‘, i:2, ‘]= ’, a[i],' ')
end;
Если есть два одинаковых массива (с одинаковым типом индекса и базовым типом), то можно с помощью оператора присваивания переписать значения элементов одного массива в соответствующие позиции другого массива.
var a, b: array [1..30] of real;
…
a := b; {в массив а переписаны элементы массива b}
Во всех остальных случаях при обработке массивов необходимо использовать циклы, обрабатывая по одному элементу массива.