- •Алфавит языка, имена, числа, строки.
- •Структура программы.
- •3. Тип Integer.
- •4. Тип Real.
- •5. Тип Boolean и Char.
- •6. Описательная часть программного блока.
- •7. Процедуры ввода/вывода
- •8. Оператор присваивания.
- •9. Условный оператор
- •X, y, max: integer;
- •10. Оператор цикла с перечислением
- •11. Циклы с предусловием
- •12. Циклы с постусловием
- •13. Оператор варианта.
- •14. Классификация типов данных.
- •15. Перечислимые типы данных
- •16. Ограниченые типы данных.
- •17. Регулярные типы данных.
- •18. Многомерные массивы.
- •19. Комбинированные типы данных
- •20. Оператор with.
- •21 Записи с вариантами
- •22 Множественные типы данных.
- •23 Операции над данными множесвенного типа
- •24 Файловые типы данных
- •25 Текстовые файлы
- •26 Ссылочные типы данных
- •27 Оператор new
- •28 29 Процедуры и функции
- •30. Параметры процедур и функций.
- •31. Локальные и глобальные объекты в процедуах и функциях
- •32. Рекурсии в процедурах и функциях.
- •33. Структурное представление основных конструкций языка.
- •38. Данные с фиксированной точкой
- •1111111101000111(2)- Инвертируем биты - 0000000010111000(2)
- •39. Внутреннее представление чисел с плавающей точкой.
- •40. Внутреннее представление символьных и строковых данных.
- •41. Реализация алгоритма сортировки с применением метода "часового".
- •42. Сортировка методом "пузырька".
- •43. Сортировка выбором min элемента.
32. Рекурсии в процедурах и функциях.
Рекурсия - это такой способ организации вычислительного процесса, при котором подпрограмма в ходе выполнения составляющих ее операторов обращается сама к себе.
Рассмотрим классический пример - вычисление факториала (пример 18). Программа вводит с клавиатуры целое число N и выводит на экран значение N!, которое вычисляется с помощью рекурсивной функции РАС. Для выхода из программы необходимо либо ввести достаточно большое целое число, чтобы вызвать переполнение при умножении чисел с плавающей запятой, либо нажать Ctrl-Z и Enter.
При выполнении правильно организованной рекурсивной подпрограммы осуществляется многократный переход от некоторого текущего уровня организации алгоритма к нижнему уровню последовательно до тех пор, пока, наконец, не будет получено тривиальное решение поставленной задачи. В примере 8.5 решение при N = 0 тривиально и используется для остановки рекурсии.
Пример 8.5
Program Factorial;
{$S+} {Включаем контроль переполнения стека}
var
n: Integer;
Function Facfn: Integer): Real;
{Рекурсивная функция, вычисляющая n ! }
begin {Fac}
if n < 0 then
WriteLn ('Ошибка в задании N')
else
if n = 0 then
Fac := 1
else Fac := n * Fac(n-l)
end {Fac} ;
{---------------}
begin {main} repeat
ReadLn (n) ;
WriteLn ('n!= ',Fac(n))
until EOF
end {main} .
33. Структурное представление основных конструкций языка.
Блок-схема — это графическое представление алгоритма или фрагмента алгоритма. Блок-схема рисуется с использованием специальных символов, таких, как прямоугольники, ромбы, овалы, и малые окружности; эти символы соединяются стрелками, называемыми линиями связи.
Узел
слияния
- 2 входа 1 выход, операции над данными
не осуществляются
Простой предикат – вычисляет логическое выражение и в соответствии с получившимся результатом определяет направление. Вычисление без побочных эффектов. Функция - преобразование входных данных.
Программа называется простой, если ее схема имеет один вход один выход, и через каждый вход идет путь от входа к выходу.
Программа называется элементарной, если она простая и нельзя выделить фрагмента более чем из одного узла (отличного от самой программы), который тоже является простой программой.
Существует 15 элементарных программ (не более 4 узлов). 7 из них имеют функциональные узлы:
Функция:
Следование:
Если-то-иначе:
Если-то:
Цикл с предусловием:
Цикл с постусловием:
Цикл с внутренним условием:
С помощью указанных управляющих конструкций можно добиться сколь угодно высокой сложности.
Обычно операторы программы выполняются друг за другом в той последовательности, в которой они написаны. Это называется последовательным выполнением. Однако некоторые операторы позволяют программисту указать, что следующим должен выполнятся не очередной оператор, а какой-то другой. Это называется передачей управления.
