мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| pascal:procfandfun [18/10/2011 10:11] – создано oca | pascal:procfandfun [06/05/2019 03:50] (текущий) – [Функции] 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. | ||
| + | </ | ||
| + | |||
| + | |||
| + | Важно то, что с помощью механизма **передачи параметров**, | ||
| + | |||
| + | **Описание процедуры** -- это общее описание алгоритма, | ||
| + | |||
| + | В программе может содержатся **предварительное описание** или **объявление** процедуры, | ||
| + | |||
| + | **Вызов процедуры** -- применение ранее описанного алгоритма к конкретно указанным объектам уже при работе программы. | ||
| + | |||
| + | При описании алгоритма процедуры, | ||
| + | |||
| + | **Функция** -- специальным образом оформленная процедура, | ||
| + | |||
| + | |||
| + | |||
| + | Например, | ||
| + | |||
| + | Большинство языков программирования позволяют оформлять многократно используемый код в виде процедур и/или функций. Целью написания процедур может быть: | ||
| + | |||
| + | минимизация написания повторяющегося кода - когда программисту приходится несколько раз разрабатывать и описывать идентичные последовательности команд, | ||
| + | минимизация включения повторяющегося кода - когда в программу включается в различных местах программы множество одинаковых или практически одинаковых фрагментов; | ||
| + | |||
| + | стандартизация кода | ||
| + | |||
| + | |||