- •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 k:integer; x,y:real; { k – целого типа, x, y – вещественного}.
Переменная может принимать любое значение внутри диапазона значений, определяемого ее типом.
-
Описание констант
Константы бывают неименованными и именованными.
Неименованные константы, называемые также литералами, это конкретные значения, заданные в программе своим изображением, например, в выражении x+1 литералом является 1.
Именованные константы объявляются в разделе описаний констант. При объявлении константы указывается ее имя и значение. Тип константы определяется изображением ее значения.
Например: const year=2010; Eps=0.000001. Константа year целого типа, константа Eps – вещественного.
Именованные константы облегчают чтение, понимание и модификацию программы. Для изменения значения именованной константы достаточно сделать это в одном месте, где она описана.
-
Описание типизированных констант
Для типизированных констант в описании задается не только значение, но и тип.
Например, const step : real = 0.0001.
Типизированные константы – это по существу переменные с начальным значением. Они получают описанное для них значение только один раз в начале выполнения программы. В отличие от констант типизированным константам можно присваивать новое значение с помощью оператора присваивания.
-
Выражения
Выражения состоят из операндов (констант, переменных, вызовов функций), объединенных знаками операций. Для изменения порядка выполнения операций используют скобки. При вычислении выражения определяется его значение и тип. Тип выражения определяется типом операндов, входящих в выражение, и зависит от операций, выполняемых над ними.
-
Операции отношения
-
= равно
< больше
<= больше или равно
<> не равно
> меньше
>= меньше или равно
Операции отношения применяются для сравнения значений любых простых типов, давая логический результат:
-
true, если отношение выполняется;
-
false – если не выполняется.
Для значений логического типа считается, что false < true.
Вещественные числа совершенно недопустимо сравнивать операцией ‘=’. Правильный способ состоит в сравнении абсолютного значения разности чисел с некоторой малой величиной, например, abs(x-y) < 0.000001. Поэтому для вещественных нет существенного различия между операциями <= и < .
-
Приоритеты операций
Приоритет операций |
Категория операции |
Операции |
1 (наибольший) |
Унарные операции: арифметические, логические, операция взятия адреса |
- + not @ |
2 |
Бинарные операции типа умножения: арифметические, логические |
* / div mod and |
3 |
Бинарные операции типа сложения: арифметические, логические |
+ - or xor |
4 (наименьший) |
Бинарные операции отношения Операция принадлежности элемента множеству |
= <> < > <= >= in |
Операции и вызовы функций в выражении выполняются слева направо с учетом приоритетов операций и наличия в выражении круглых скобок. Операции наибольшего приоритета выполняются в первую очередь, операции наименьшего приоритета – в последнюю очередь.
При вычислении выражения должны соблюдаться правила совместимости типов. Если операнды принадлежат к различным типам, то перед выполнением операции происходит неявное преобразование их значений к общему типу, который включает в себя оба операнда. Например, перед выполнением сложения x+i, где x типа integer, i типа byte, значение i преобразуется в значение типа integer.
Для явного преобразования типов предназначены следующие функции:
|
Функция |
Результат |
Пример |
1 |
int(x) |
Выдает вещественное, равное целой части x (т.е. обнуляет дробную часть) |
int(4.5)=4.0 |
2 |
frac(x) |
Выдает вещественное, равное дробной части. |
frac(4.5)=0.5 |
3 |
round(x) |
Округляет до ближайшего целого. Если значение x точно посередине, то в большую сторону по абсолютному значению |
round(4.5)=5 |
4 |
trunc(x) |
Округляет вещественное до ближайшего целого, отбрасывая дробную часть |
trunc(4.5)=4 |