- •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 с параметром
- •Вложенные циклы
- •Взаимозаменяемость циклов различных видов
- •Дополнительные конструкции переходов для циклов
- •«Вечные» циклы
- •Простейшие алгоритмы
- •Вычисление суммы и произведения
- •Организация счетчика
- •Нахождение наибольшего и наименьшего значений
- •Рекуррентные последовательности
- •Итерационные алгоритмы
- •Подпрограммы (процедуры и функции)
- •Понятие подпрограммы, ее описания и вызова
- •Цели введения подпрограмм
- •Способы передачи параметров. Виды параметров
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Корректность передачи параметров
- •Досрочное завершение работы программы и подпрограммы
- •Реализация вызова подпрограммы
- •Область действия и время жизни идентификаторов
- •Правила видимости
- •Время жизни идентификаторов
- •Побочный эффект функции
- •Массивы
- •Описание переменных-массивов
- •Обозначение элементов массива
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Типизированные константы-массивы
- •Операции над массивами
- •Именная эквивалентность типов
- •Передача массива в качестве параметра
- •Открытые массивы
- •Типичные задачи для одномерных массивов
- •Поиск заданного элемента в массиве
- •Анализ методов поиска по количеству операций сравнения
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Сортировки массивов
- •Понятие сортировки
- •Параметры оценки алгоритмов
- •Сортировка простым включением (простыми вставками) Принцип сортировки включением
- •Сортировка простым выбором Принцип сортировки выбором
- •Сортировка простым обменом (метод пузырька) Принцип сортировки обменом
- •Сравнение эффективности базовых методов сортировки
- •Использование индексных массивов при сортировке
- •Рекурсия
- •Что такое рекурсия
- •Рекурсивные подпрограммы
- •Прямая и косвенная рекурсия
- •Предварительное (опережающее) описание подпрограммы
- •Опасности рекурсии
- •Бесконечная рекурсия
- •Итерация и рекурсия. Необоснованное применение рекурсии
- •Глубокая рекурсия
- •Когда использовать рекурсию
- •Формы рекурсивных подпрограмм
- •Примеры рекурсивных программ
- •Ввод последовательности целых чисел, заканчивающейся нулем, вывод в обратном порядке
- •Поиск максимального элемента массива
- •Задача о Ханойских башнях
- •Символьные и строковые типы данных
- •Символьные типы данных
- •Представление символов в памяти компьютера
- •Символьные константы и переменные Неименованные символьные константы
- •Стандартные функции над символами
- •Строковые типы данных
- •Строковые типы. Представление строк в памяти компьютера
- •Стандартные функции и процедуры для строк
- •Выделение слов из строки
-
Оператор цикла for с параметром
Оператор FOR выполняет одни и те же действия определенное количество раз, известное перед началом его выполнения.
FOR параметр_цикла := начальное_значение TO конечное_значение DO
оператор
Параметр_цикла может быть переменной любого порядкового типа, а начальное и конечное значения – выражения того же типа.
Например, оператор for i:='a' to 'z' do write(i) выводит все буквы латинского алфавита.
Особенности цикла FOR:
-
Начальное_значение и конечное_значение вычисляются один раз до начала выполнения цикла.
-
Тело цикла не выполнится ни разу, если начальное_значение превосходит конечное_значение.
-
После каждого выполнения тела цикла параметр_цикла увеличивается на 1.
-
Нельзя менять значение параметра_цикла внутри цикла и использовать его значение после окончания цикла (он может иметь неопределенное значение).
Вторая форма цикла FOR:
FOR параметр_цикла := начальное_значение DOWNTO конечное_значение DO оператор
На каждом шаге параметр_цикла уменьшается на 1. Цикл выполняется, пока параметр_цикла > или = конечное_значение.
Например, цикл for i:=10 downto 5 do write(i:3) выдаст 10 9 8 7 6 5
-
Вложенные циклы
Цикл называется вложенным, если он размещается в теле другого цикла. На первом проходе внешний цикл вызывает внутренний, который исполняется до своего завершения, после чего управление передается в тело внешнего цикла. На втором проходе внешний цикл опять вызывает внутренний. И так до тех пор, пока не завершится внешний цикл.
For i:=1 to 2 do {Внешний цикл} begin for j:=1 to 3 do {Внутренний цикл} write(i:4, j:2); writeln end; |
Эти вложенные циклы выведут следующие две строки: 1 1 1 2 1 3 2 1 2 2 2 3 |
-
Взаимозаменяемость циклов различных видов
В простых случаях повторяющиеся действия можно реализовать с помощью циклов всех видов. Например, выполнить некоторый оператор S при i [a, b] с шагом =1:
-
for i:=a to b do S;
-
i=a; while i<=b do begin S; i:=i+1 end;
-
i=a; repeat S; i:=i+1 until i>b;
Замечание. Условие в цикле repeat получается логическим отрицанием условия цикла while:
while условие do оператор;
repeat оператор until not условие;
-
Дополнительные конструкции переходов для циклов
Досрочный выход из цикла любого вида
Выход реализован в виде стандартной процедуры break, которая передает управление первому оператору, непосредственно следующему за циклом
Переход на новое повторение цикла
Переход выполняется стандартной процедурой continue, которая прекращает текущую итерацию цикла и передает управление на начало цикла для выполнения очередной итерации, например:
-
«Вечные» циклы
-
while true do оператор;
-
repeat оператор until false
В «вечных» циклах для выхода из цикла используется оператор break.
-
Простейшие алгоритмы
-
Вычисление суммы и произведения
-
При вычислении суммы и произведения используется прием накопления:
-
Задать начальные значения суммы и произведения: sum:=0; prod:=1;
-
Повторять для всех слагаемых X и сомножителей Y: sum:=sum + X; prod:=prod * Y; Конец повторения
Если надо суммировать не все числа, а только удовлетворяющие определенному условию, например, принадлежащие отрезку [1,10], то это условие надо проверять перед суммированием:
Если (x>=1) и (x<=10), то sum:=sum+x;