- •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 с параметром
- •Вложенные циклы
- •Взаимозаменяемость циклов различных видов
- •Дополнительные конструкции переходов для циклов
- •«Вечные» циклы
- •Простейшие алгоритмы
- •Вычисление суммы и произведения
- •Организация счетчика
- •Нахождение наибольшего и наименьшего значений
- •Рекуррентные последовательности
- •Итерационные алгоритмы
- •Подпрограммы (процедуры и функции)
- •Понятие подпрограммы, ее описания и вызова
- •Цели введения подпрограмм
- •Способы передачи параметров. Виды параметров
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Корректность передачи параметров
- •Досрочное завершение работы программы и подпрограммы
- •Реализация вызова подпрограммы
- •Область действия и время жизни идентификаторов
- •Правила видимости
- •Время жизни идентификаторов
- •Побочный эффект функции
- •Массивы
- •Описание переменных-массивов
- •Обозначение элементов массива
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Типизированные константы-массивы
- •Операции над массивами
- •Именная эквивалентность типов
- •Передача массива в качестве параметра
- •Открытые массивы
- •Типичные задачи для одномерных массивов
- •Поиск заданного элемента в массиве
- •Анализ методов поиска по количеству операций сравнения
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Сортировки массивов
- •Понятие сортировки
- •Параметры оценки алгоритмов
- •Сортировка простым включением (простыми вставками) Принцип сортировки включением
- •Сортировка простым выбором Принцип сортировки выбором
- •Сортировка простым обменом (метод пузырька) Принцип сортировки обменом
- •Сравнение эффективности базовых методов сортировки
- •Использование индексных массивов при сортировке
- •Рекурсия
- •Что такое рекурсия
- •Рекурсивные подпрограммы
- •Прямая и косвенная рекурсия
- •Предварительное (опережающее) описание подпрограммы
- •Опасности рекурсии
- •Бесконечная рекурсия
- •Итерация и рекурсия. Необоснованное применение рекурсии
- •Глубокая рекурсия
- •Когда использовать рекурсию
- •Формы рекурсивных подпрограмм
- •Примеры рекурсивных программ
- •Ввод последовательности целых чисел, заканчивающейся нулем, вывод в обратном порядке
- •Поиск максимального элемента массива
- •Задача о Ханойских башнях
- •Символьные и строковые типы данных
- •Символьные типы данных
- •Представление символов в памяти компьютера
- •Символьные константы и переменные Неименованные символьные константы
- •Стандартные функции над символами
- •Строковые типы данных
- •Строковые типы. Представление строк в памяти компьютера
- •Стандартные функции и процедуры для строк
- •Выделение слов из строки
-
Составной оператор
Объединяет группу операторов в единое целое, после чего они считаются одним оператором.
begin оператор1; оператор2; … end
Например, из двух чисел выбрать большее и сообщить, какое из них оказалось больше:
If x>y
then begin max:=x; writeln(‘Первое больше’) end
else if y>x
then begin max:=y; writeln(‘Второе больше’) end
else begin max:=y; writeln(‘Числа равны’) end
-
Оператор выбора
Оператор выбора позволяет выбрать одно из нескольких продолжений программы, причем выбор осуществляется по значению выражения любого порядкового типа.(integer, char, boolean, перечислимого типа, но не real и не string).
CASE выражение_выбора OF
константа_выбора1 : оператор1;
константа_выбора2 : оператор2;
. . . . . . . .
ELSE операторы
END
В качестве константы_выбора можно использовать список констант и диапазон константа1 .. константа2. Тип всех констант выбора должен совпадать с типом значения выражения.
Вычисляется значение выражения_выбора, затем выполняется оператор, соответствующий этому значению.
Если значению выражения_выбора не соответствует ни одна из альтернатив, выполняется оператор, следующий за словом else; при отсутствии ELSE никакие альтернативы не выполняются.
Пример из п. 2.12.4 с помощью CASE решается нагляднее:
CASE x OF
a..b : y: = f1(x);
c..d : y: = f2(x);
ELSE y := f3(x);
END;
-
Оператор цикла с предусловием while
Оператор цикла WHILE многократно выполняет одни и те же действия, пока истинно условие, являющееся логическим выражением. Этот цикл является самым универсальным из всех операторов цикла.
WHILE условие_продолжения DO оператор |
//заголовок цикла //тело цикла |
WHILE условие_продолжения DO BEGIN оператор1; оператор2; ... END |
//тело цикла – составной оператор |
Значение условия вычисляется заново при каждом повторении цикла. Если оно истинно, выполняется тело цикла, если ложно, цикл завершается. Поэтому условие в цикле WHILE – это условие продолжения цикла. Особенности цикла:
-
Тело цикла не выполнится ни разу, если условие ложно при первой проверке.
-
Цикл выполняется бесконечно («зацикливание»), если условие истинно всегда. Во избежание этого в теле цикла должны изменяться переменные, входящие в условие.
Пример. Выдать цифры произвольного целого числа.
var x : word; {x – исходное число}
d : byte; {очередная цифра}
begin
write(‘x=’); readln(x); {ввод числа с клавиатуры}
while (x<>0) do
begin
d:=x mod 10; {очередная цифра: при первом выполнении цикла – единицы,}
write(d:3); {при втором выполнении – десятки и т.д.}
x:=x div 10; {удаление из числа очередной цифры}
end
end.
-
Оператор цикла с постусловием repeat
Оператор цикла REPEAT многократно выполняет одни и те же действия, пока ложно условие, являющееся логическим выражением.
REPEAT оператор; … оператор UNTIL условие_окончания
В теле цикла после REPEAT может быть несколько операторов, причем операторные скобки BEGIN и END не нужны. Выполняется тело цикла. Затем вычисляется значение условия. Если оно ложно, цикл продолжает работу. Если же значение условия истинно, цикл завершается. Поэтому условие в цикле REPEAT – это условие окончания цикла.
Пример: Ввести число, не равное нулю.
repeat
write(‘Введите число, не равное 0:’);
readln(x)
until x<>0
Особенности цикла REPEAT:
-
Тело цикла выполняется по крайней мере один раз, поэтому цикл REPEAT менее универсальный по сравнению с циклом WHILE.
-
Цикл выполняется бесконечно («зацикливание»), если условие всегда ложно. Во избежание этого в теле цикла должны изменяться переменные, входящие в условие.