- •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 с параметром
- •Вложенные циклы
- •Взаимозаменяемость циклов различных видов
- •Дополнительные конструкции переходов для циклов
- •«Вечные» циклы
- •Простейшие алгоритмы
- •Вычисление суммы и произведения
- •Организация счетчика
- •Нахождение наибольшего и наименьшего значений
- •Рекуррентные последовательности
- •Итерационные алгоритмы
- •Подпрограммы (процедуры и функции)
- •Понятие подпрограммы, ее описания и вызова
- •Цели введения подпрограмм
- •Способы передачи параметров. Виды параметров
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Корректность передачи параметров
- •Досрочное завершение работы программы и подпрограммы
- •Реализация вызова подпрограммы
- •Область действия и время жизни идентификаторов
- •Правила видимости
- •Время жизни идентификаторов
- •Побочный эффект функции
- •Массивы
- •Описание переменных-массивов
- •Обозначение элементов массива
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Типизированные константы-массивы
- •Операции над массивами
- •Именная эквивалентность типов
- •Передача массива в качестве параметра
- •Открытые массивы
- •Типичные задачи для одномерных массивов
- •Поиск заданного элемента в массиве
- •Анализ методов поиска по количеству операций сравнения
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Сортировки массивов
- •Понятие сортировки
- •Параметры оценки алгоритмов
- •Сортировка простым включением (простыми вставками) Принцип сортировки включением
- •Сортировка простым выбором Принцип сортировки выбором
- •Сортировка простым обменом (метод пузырька) Принцип сортировки обменом
- •Сравнение эффективности базовых методов сортировки
- •Использование индексных массивов при сортировке
- •Рекурсия
- •Что такое рекурсия
- •Рекурсивные подпрограммы
- •Прямая и косвенная рекурсия
- •Предварительное (опережающее) описание подпрограммы
- •Опасности рекурсии
- •Бесконечная рекурсия
- •Итерация и рекурсия. Необоснованное применение рекурсии
- •Глубокая рекурсия
- •Когда использовать рекурсию
- •Формы рекурсивных подпрограмм
- •Примеры рекурсивных программ
- •Ввод последовательности целых чисел, заканчивающейся нулем, вывод в обратном порядке
- •Поиск максимального элемента массива
- •Задача о Ханойских башнях
- •Символьные и строковые типы данных
- •Символьные типы данных
- •Представление символов в памяти компьютера
- •Символьные константы и переменные Неименованные символьные константы
- •Стандартные функции над символами
- •Строковые типы данных
- •Строковые типы. Представление строк в памяти компьютера
- •Стандартные функции и процедуры для строк
- •Выделение слов из строки
-
Перечисляемые типы
Перечисляемые типы – это пользовательские типы, состоящие из указанных пользователем значений.
Описание перечисляемого типа состоит из списка его элементов, заключенного в круглые скобки. Каждый из элементов представляет собой уникальный идентификатор константы:
Type Svetofor=(Red, Yellow, Green);
WeekDay =(Mon, Tue, Wed, Thu, Fri, Sat, Sun);
Использование одного и того же идентификатора в разных типах считается ошибкой.
Переменная перечисляемого типа может принимать значение любой из констант этого типа.
Перечисляемые типы являются порядковыми. Поэтому идентификаторы любого перечисляемого типа на самом деле обозначают числа 0, 1, 2 и т.д. Перечисляемые типы можно использовать в качестве индексов массивов.
-
Интервальные типы
Интервальный тип определяет диапазон значений какого-либо порядкового типа, который является для него базовым. Диапазон задается наименьшим и наибольшим значениями.
Type Digit = 0..9; {Интервал целых чисел от 0 до 9; базовый тип - целые}
DigitSim = ’0’ .. ’9’; {Интервал цифр от ’0’ до ’9’; базовый тип - символы}
Значения переменных интервального типа должны принадлежать указанному диапазону. Операции для интервального типа те же, что и для базового типа.
Именно интервальные типы чаще всего используют в качестве индексов массивов.
-
Порядковые типы
К порядковым типам относятся целые, логические, символьные, перечисляемые и интервальные типы.
Порядковые типы можно использовать в операторах for и case, в качестве индексов массивов, для задания элементов множеств и интервальных типов.
Множество допустимых значений любого порядкового типа – это упорядоченная последовательность, каждый элемент которой имеет свой порядковый номер, представляемый целым числом. Первое значение любого порядкового типа (кроме целых типов) имеет значение 0, следующее 1 и т.д. Порядковым номером значений целых типов является само это значение, т.е. Ord(n) = n.
Все операции, выполняемые над порядковыми типами, выполняются с их кодами
Для порядковых типов определены следующие функции:
1 |
Ord(n) |
Возвращает порядковый номер значения n |
2 |
Pred(n) |
Возвращает значение, предшествующее значению n, т.е. значение с номером Ord(n)-1; Ord(Pred(n))=Ord(n)-1; |
3 |
Succ(n) |
Возвращает следующее значение, которое соответствует порядковому номеру Ord(n)+1; Ord(Succ(n))=Ord(n)+1 |
4 |
Inc(n) |
Увеличивает значение n на 1 для целых типов, т.е. n:=n+1 |
5 |
Dec(n) |
Уменьшает значение n на 1 для целых типов, т.е. n:=n‑1 |
6 |
Low(X) |
Возвращает младшее значение в диапазоне типа; здесь X – имя типа или имя переменной. Например, Low(integer) вернет значение -2 147 483 648 |
7 |
High(X) |
Возвращает старшее значение в диапазоне типа; здесь X – имя типа или имя переменной. Например, High(integer) вернет значение 2 147 483 647 |
Для логического типа boolean справедливо:
Ord(false)=0, Ord(true)=1, Succ(false)=true, Pred(true)=false;