мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| pascal:subprograms [15/10/2011 11:17] – oca | pascal:subprograms [23/04/2016 15:07] (текущий) – ybezrukov | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Процедуры и функции ====== | ||
| - | |||
| - | Ниже сказанное относится не только к языку Паскаль, | ||
| - | |||
| - | **Процедура (подпрограмма)** -- большой (более или менее) фрагмент кода, который описан один раз, но может вызываться из разных мест программы. Процедурами, | ||
| - | |||
| - | Процедуры можно разделять по нескольким критериям. В данном случае, | ||
| - | |||
| - | * **стандартные** добавляются автоматически, | ||
| - | * **библиотечные** | ||
| - | * **локальные** описываются в программе. | ||
| - | |||
| - | Библиотеки могут | ||
| - | * поставляться изначально как стандартные, | ||
| - | * создаваться программистом или его коллегами для себя; | ||
| - | * создаваться и распространяться некоторой третьей стороной. | ||
| - | |||
| - | Иначе говоря, | ||
| - | |||
| - | Пример, | ||
| - | |||
| - | Идея сортировки в следующем: | ||
| - | Массив рассматриваем как состоящий из двух частей - сортированной и несортированной в каждый момент работы программы | ||
| - | 1) Находим максимальный во всём массиве элемент. | ||
| - | В рассматриваемой части массива | ||
| - | |||
| - | <code pascal | Крайне общий алгоритм программы сортировки массива> | ||
| - | uses allForSorting; | ||
| - | // Скорее всего - не существует в реальности. | ||
| - | // Содержит ВСЁ (происхождение чего мы не хотим объяснять) | ||
| - | |||
| - | const | ||
| - | n=1000; | ||
| - | | ||
| - | type | ||
| - | ArrayType = array[1..N] of integer; | ||
| - | // Описание типа (" | ||
| - | var | ||
| - | SortedA : ArrayType; | ||
| - | |||
| - | begin | ||
| - | FillArray (SortedA); | ||
| - | PrintArray(SortedA); | ||
| - | SortArray (SortedA); | ||
| - | PrintArray(SortedA); | ||
| - | |||
| - | end. | ||
| - | |||
| - | </ | ||
| - | |||
| - | |||
| - | Важно то, что с помощью механизма **передачи параметров**, | ||
| - | |||
| - | **Описание процедуры** -- это общее описание алгоритма, | ||
| - | |||
| - | В программе может содержатся **предварительное описание** или **объявление** процедуры, | ||
| - | |||
| - | **Вызов процедуры** -- применение ранее описанного алгоритма к конкретно указанным объектам уже при работе программы. | ||
| - | |||
| - | При описании алгоритма процедуры, | ||
| - | |||
| - | **Функция** -- специальным образом оформленная процедура, | ||
| - | |||
| - | |||
| - | |||
| - | Например, | ||
| - | |||
| - | Большинство языков программирования позволяют оформлять многократно используемый код в виде процедур и/или функций. Целью написания процедур может быть: | ||
| - | |||
| - | минимизация написания повторяющегося кода - когда программисту приходится несколько раз разрабатывать и описывать идентичные последовательности команд, | ||
| - | минимизация включения повторяющегося кода - когда в программу включается в различных местах программы множество одинаковых или практически одинаковых фрагментов; | ||
| - | |||
| - | стандартизация кода | ||
| - | | ||
| - | | ||
| ===== Процедуры ===== | ===== Процедуры ===== | ||
| Строка 275: | Строка 200: | ||
| </ | </ | ||
| - | |||
| - | |||
| - | </ | ||