- •§1. Начало программирования на языке Паскаль.
- •Краткое знакомство.
- •Функциональные клавиши Турбо Паскаль.
- •§2. Алфавит языка Паскаль. Переменные. Типы переменных Алфавит языка Паскаль.
- •Стандартные математические функции
- •Типы переменных
- •§3. Операторы присваивания.
- •Оператор ввода-вывода.
- •Арифметические операции.
- •Стандартные функции
- •Правила записи арифметических выражений.
- •Правила записи стандартных функций.
- •Оператор ввода .
- •Оператор вывода .
- •§4. Структура программы.
- •Первая программа.
- •Эксперименты с программой.
- •§5. Разветвляющие алгоритмы. Составной оператор
- •Оператор if или условный оператор
- •Блок-схема полного у словного оператора
- •Блок-схема неполного у да Условие словного оператора
- •§6. Оператор цикла с параметром Циклический алгоритм
- •Цикл с предусловием «Пока»
- •Цикл с постусловием «До»
- •Цикл с параметром «Для» Цикл с параметром «Для»
- •Блок-схема цикла «for»
- •§7. Базовые циклические алгоритмы
- •1. Алгоритм вычисления суммы чисел.
- •2. Подсчет количества чисел удовлетворяющих заданному условию.
- •3. Вычислить сумму чисел, кратных 3, из десяти чисел введенных с клавиатуры.
- •4. Алгоритм вычисления n!.
- •5. Алгоритм вычисления аn.
- •§8. Цикл с предусловием while
- •Блок-схема цикла «Пока»
- •§9. Оператор цикла с постусловием Repeat
- •Блок-схема цикла «До»
- •§10. Эксперимент с программой. Лабораторная работа
- •§11. Оператор варианта выбора
- •§12. Типы определенные пользователем Раздел описания типов
- •Перечислимый тип данных
- •§13. Вложенные циклы
- •§14. Одномерные массивы Работа с элементами
- •Способы задания значений элементов массива
- •Алгоритмы работы с массивами
- •Эксперименты с программой
- •§15. Обработка символьных массивов. Данные символьного типа.
- •Описание строковых переменных
- •Операции над строковыми переменными
- •§16. Двумерные массивы Работа с элементами
- •5.Вычисление суммы элементов всего двумерного массива.
- •6. Задача поиска максимального (минимального) элемента и его индексов.
- •7. Алгоритм поиска минимального элемента и его индексов для всего массива.
- •8. Квадратные матрицы.
- •Примеры решения задач
- •§17. Подпрограммы
- •Процедура в Паскале и ее формат.
- •Функции
- •§18. Примеры рекурсивного программирования
- •Задачи с рекурсивной формулировкой
- •Задачи, из постановки которых можно извлечь рекурсию
- •Задачи, которые можно решить как частный случай обобщенной
- •Задачи, в которых можно использовать характеристику или свойство функции
- •§19. Графика
- •Установка цвета и стиля заполнения
- •Процедуры создания графических примитивов
- •1. Текущий указатель.
- •2. Вывод точки
- •3. Вывод отрезка
- •4. Построение прямоугольника
- •5. Построение дуг, окружностей, эллипсов.
- •6. Построение закрашенного эллипса:
- •7. Заполнение внутренней или внешней области замкнутой фигуры.
- •Материалы для дополнительного чтения. §20. Файловый тип данных
- •Связь переменной файлового типа с файлом на диске.
- •Чтение из файла.
- •Закрытие файла
- •Признак конца файла
- •Запись в файл
- •Прямой доступ к элементам файла
- •§21. Текстовые файлы
- •§22. Множества
- •Операции над множествами
- •Операция определения принадлежности элемента множеству
- •Сравнение множеств
- •§23. Комбинированный тип данных (записи)
- •2. С использованием оператора присоединения.
- •§24. Приближенные вычисления.
- •§25. Основы структурного программирования
- •10. Комплексный пример
- •Содержание
Задачи, которые можно решить как частный случай обобщенной
Если нельзя извлечь рекурсию из постановки задачи, то можно расширить задачу, обобщить ее (например, введя дополнительный параметр). Удачное обобщение может помочь увидеть рекурсию. После этого возвращаемся к частному случаю и решаем исходную задачу.
Пример 1 Определить, является ли заданное натуральное число простым.
Данную задачу можно обобщить, например, так: определить, верно ли, что заданное натуральное число N не делится ни на одно число, большее или равное М (2MN), но меньше N.
Соответствующая функция должна принимать значение «истина» в двух случаях:
если M=N;
если N не делится на М и функция принимает значение «истина» для чисел М+1 и N.
Function Simple(m,n : integer): boolean;
begin
if m=n Then Simple:=True
else Simple:=(n Mod m <> 0) And Simple(m+1,n);
end;
Задачи, в которых можно использовать характеристику или свойство функции
Пример 1. Для заданного натурального числа N1 определить натуральное число a, для которого выполняется неравенство :
2а-1 N < 2a.
a(N) = 1 , если N=1
a(N)=a(N div 2) + 1, если N>1
Рассмотрим пример. Пусть N=34.
2a-134<2a, прибавим 1 и переходим к 34 div 2
2a-117<2a +1
2a-1 8<2a +1
2a-1 4<2a +1
2a-1 2<2a +1
2a-1 1<2a ; получим а=1
А теперь возвращаемся назад, к последней единице прибавляем все предыдущие. Таким образом, получается 6.
Function A(N : integer) : integer;
begin
if N=1 then a:=1 else a:=a (N div 2) +1;
end;
§19. Графика
В графическом режиме экран рассматривается как последовательность точек (пикселов), из которых строится изображение.
Количество пикселов в строке и количество строк на экране характеризуют его разрешающую способность.
640х480 - в строке 640 пикселов , а строк всего 480.
Пиксел определяют : координаты X, Y и цвет. Х
(0,0)
(640,0)
(0,480) (640,480)
Для работы в графическом режиме разработана библиотека GRAPH, содержащая множество графических процедур и набор драйверов.
Драйвер находится в файле с расширением .BGI
Для того, чтобы в программе можно было использовать процедуры модуля GRAPH, его надо подключить к программе, использовав раздел описаний модулей:
USES GRAPH;
С момента подключения модуля GRAPH программисту доступны все находящиеся в ней подпрограммы.
В первую очередь вызывается процедура InitGraph, которая устанавливает один из возможных графических режимов.
Формат процедуры :
InitGraph( Driver, Mode,’c:\tp7\bgi’);
В программе нужно описать переменные Driver и Mode :
var Driver, Mode : integer;
В разделе операторов, перед тем как написать первый графический оператор, следует выполнить :
Driver:=Detect; InitGraph(Driver, Mode,’c:\tp7\bgi’);
Перед окончанием программы следует закрыть видеорежим с помощью процедуры CloseGraph.
