- •35 Жегуло а.И. Компьютерные науки 2010-2011 гг. Компьютерные науки Лекции для студентов 1 курса, 2010-2011 уч. Г., семестр 1
- •1. Основные понятия 3
- •2. Введение в язык программирования Pascal 3
- •7. Массивы 16
- •8. Сортировки массивов 22
- •9. Рекурсия 25
- •1. Символьные и строковые типы данных 31
- •Основные понятия
- •Способы описания алгоритма:
- •Введение в язык программирования Pascal
- •Структура программы на языке Pascal
- •Правила записи программ
- •Стиль программирования
- •Переменные и константы. Понятие типа данных
- •Классификация типов данных
- •Стандартные простые типы данных
- •Целые типы
- •Вещественные типы
- •Логические (булевские) типы
- •Перечисляемые типы
- •Интервальные типы
- •Порядковые типы
- •Описание данных
- •Описание переменных
- •Описание констант
- •Описание типизированных констант
- •Выражения
- •Операции отношения
- •Приоритеты операций
- •Арифметические выражения
- •Логические выражения
- •Операторы
- •Оператор присваивания
- •Оператор ввода с клавиатуры
- •Оператор вывода на экран монитора
- •Форматный вывод
- •Условный оператор (оператор альтернативы)
- •Составной оператор
- •Оператор выбора
- •Оператор цикла с предусловием while
- •Оператор цикла с постусловием repeat
- •Оператор цикла for с параметром
- •Вложенные циклы
- •Взаимозаменяемость циклов различных видов
- •Дополнительные конструкции переходов для циклов
- •«Вечные» циклы
- •Простейшие алгоритмы
- •Вычисление суммы и произведения
- •Организация счетчика
- •Нахождение наибольшего и наименьшего значений
- •Рекуррентные последовательности
- •Итерационные алгоритмы
- •Подпрограммы (процедуры и функции)
- •Понятие подпрограммы, ее описания и вызова
- •Цели введения подпрограмм
- •Способы передачи параметров. Виды параметров
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Корректность передачи параметров
- •Досрочное завершение работы программы и подпрограммы
- •Реализация вызова подпрограммы
- •Область действия и время жизни идентификаторов
- •Правила видимости
- •Время жизни идентификаторов
- •Побочный эффект функции
- •Массивы
- •Описание переменных-массивов
- •Обозначение элементов массива
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Типизированные константы-массивы
- •Операции над массивами
- •Именная эквивалентность типов
- •Передача массива в качестве параметра
- •Открытые массивы
- •Типичные задачи для одномерных массивов
- •Поиск заданного элемента в массиве
- •Анализ методов поиска по количеству операций сравнения
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Сортировки массивов
- •Понятие сортировки
- •Параметры оценки алгоритмов
- •Сортировка простым включением (простыми вставками) Принцип сортировки включением
- •Сортировка простым выбором Принцип сортировки выбором
- •Сортировка простым обменом (метод пузырька) Принцип сортировки обменом
- •Сравнение эффективности базовых методов сортировки
- •Использование индексных массивов при сортировке
- •Рекурсия
- •Что такое рекурсия
- •Рекурсивные подпрограммы
- •Прямая и косвенная рекурсия
- •Предварительное (опережающее) описание подпрограммы
- •Опасности рекурсии
- •Бесконечная рекурсия
- •Итерация и рекурсия. Необоснованное применение рекурсии
- •Глубокая рекурсия
- •Когда использовать рекурсию
- •Формы рекурсивных подпрограмм
- •Примеры рекурсивных программ
- •Ввод последовательности целых чисел, заканчивающейся нулем, вывод в обратном порядке
- •Поиск максимального элемента массива
- •Задача о Ханойских башнях
- •Символьные и строковые типы данных
- •Символьные типы данных
- •Представление символов в памяти компьютера
- •Символьные константы и переменные Неименованные символьные константы
- •Стандартные функции над символами
- •Строковые типы данных
- •Строковые типы. Представление строк в памяти компьютера
- •Стандартные функции и процедуры для строк
- •Выделение слов из строки
-
Двумерные массивы – матрицы
Описание двумерного массива:
var A : array[1..m, 1..n] of integer;
|
1 |
|
|
n |
1 |
|
|
|
|
|
|
|
|
|
m |
|
|
|
|
В памяти компьютера массив располагается по строкам.
Быстрее меняется младший индекс, это означает, что сначала перебираем элементы строки слева направо, затем переходим на следующую строку и т.д.
Пример. Дана целочисленная матрица mn элементов. Найти скалярное произведение строк, содержащих максимальный и минимальный элементы.
Program Matrix_1;
Const m=3; n=4;
Var A: array[1..m,1..n] of integer;
i,j: byte;
imax, imin: byte;
max, min, S: integer;
begin
{1. Ввод в массив}
for i:=1 to m do {Цикл по строкам матрицы}
for j:=1 to n do {Цикл по элементам строки}
begin write(‘A[‘, i, ‘,’ j, ‘]=’);
readln(A[i,j])
end;
{2. Нахождение максимального и минимального элементов массива}
imax:=1; jmax:=1; {В качестве начального максимального берем A[1,1]}
imin:=1; jmin:=1; {В качестве начального минимального берем A[1,1]}
for i:=1 to m do {Цикл по строкам матрицы}
for j:=1 to n do {Цикл по элементам строки}
begin if A[i,j] > A[imax,jmax]
then begin imax:=i; jmax:=j end; {Запоминаем индексы максимума}
if A[i,j] < A[imin,jmin]
then begin imin:=i; jmin:=j end; {Запоминаем индексы минимума}
end;
{3. Скалярное произведение строк с индексами imax и imin }
S:=0;
for j:=1 to n do
S:=S+A[imax,j]*A[imin,j];
{4. Вывод результата}
writeln(‘Скалярное произвед. строк с индексами ’,imax,‘ и ‘,imin,‘ равно ‘,S:10:3)
end.
-
Трехмерные массивы
Описание трехмерного массива:
var A : array[1..m,1..n,1..p] of integer;
Например, для ввода значений в трехмерный массив с клавиатуры можно использовать следующий тройной цикл:
for i:=1 to m do {Цикл по плоскостям массива}
for j:=1 to n do {Цикл по строкам выбранной плоскости}
for k:=1 to p do {Цикл по элементам строки}
readln(M[i,j,p])
-
Сортировки массивов
-
Понятие сортировки
-
Сортировка (sorting) определяется в программировании как процесс перестановки объектов некоторого набора данных в определенном порядке (по возрастанию или по убыванию). Точнее этот процесс следовало бы назвать упорядочиванием (ordering), но закрепился именно термин «сортировка».
Цель сортировки – облегчить последующий поиск в уже упорядоченном наборе данных. Области использования сортировок: статистика, обработка экспериментальных данных, словари, каталоги, справочники и т.д.
Каждый объект сортируемого набора обычно содержит некоторые полезные данные, а также ключ.
Для ключей устанавливается порядок:
-
по возрастанию ki-1 <ki
-
по неубыванию ki-1 <=ki
-
по убыванию ki-1 > ki
-
по невозрастанию ki-1 >=ki
Алгоритмы сортировки очень сильно зависят от структуры сортируемых данных:.
-
Внутренние сортировки – оперирует с массивами, целиком помещающимися в оперативной памяти с произвольным доступом к любому элементу массива; данные обычно сортируются «на месте», т.е. без использования пересылок в другие массивы.
-
Внешние сортировки – это методы сортировки последовательных файлов, расположенных на внешних устройствах; при этом обычно используется дополнительная память на дисках.
Будем сортировать массивы, элементами которых являются только целочисленные ключи. Рассмотрим методы сортировки массивов «на месте».