мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
pascal:procfandfun [20/09/2012 10:06] ocapascal:procfandfun [20/09/2012 10:38] oca
Строка 1: Строка 1:
-====== Создание собственных процедур и функций ======+====== Процедуры и функции ======
  
-Ниже сказанное относится не только к языку Паскаль, но и к большинству других языков программирования, за исключением конкретных языковых конструкций (имён процедур), которые даны именно для Паскаля.+На уровне идей, всё ниже сказанное относится не только к языку Паскаль, но и к большинству других языков программирования. Исключением являются конкретные языковые конструкции (имён процедур), которые даны именно для Паскаля и некоторые механизмы реализации. 
 + 
 +**Процедура (подпрограмма)** -- большой (более или менее) фрагмент кода, который описан специальным образом один раз, но может вызываться из разных мест программы. Процедурами, а точнее -- **вызовами** стандартных процедур, являются многие "популярные" команды, такие, как команды ввода/вывода (//write//, //writeln//, //read// и //readln//).  
 + 
 +**Функции** -- это специальный вид процедур, которые **возвращают** значения заранее оговоренного типа, т.е. вызовы функций могут заменять значения указанного типа. Например: 
 + 
 +y:=sin(x);                    // // 
 + 
 +m:= round( i/j + frac(q) );   // // 
 + 
 +writeln(round(y));            // // 
 + 
 +Их описание и применение несколько отличается от описания и применения просто "чистых" процедур. 
 + 
 +Во многих современных версиях языков программирования, функции могут использоваться как процедуры. Например: 
 + 
 +while keypressed do readkey;     // // 
 + 
 +Обратное - неверно. Неверный пример: 
 + 
 +x:= z+read(z); //
  
-**Процедура (подпрограмма)** -- большой (более или менее) фрагмент кода, который описан один раз, но может вызываться из разных мест программы. Процедурами, вернее -- **вызовами** стандартных процедур, являются многие команды, такие, как команды ввода/вывода   - //write//, //writeln//, //read// и //readln//. 
  
 Процедуры можно разделять по нескольким критериям. В данном случае, говоря о стандартных процедурах, процедуры неявно различаются по месту расположения кода. А именно:  Процедуры можно разделять по нескольким критериям. В данном случае, говоря о стандартных процедурах, процедуры неявно различаются по месту расположения кода. А именно: 
  
-  * **стандартные** добавляются автоматически,   +  * **стандартные** добавляются в программу автоматически, пример -- //write//;  
-  * **библиотечные**  требуют подключения внешних библиотек, т.е. наборов дополнительных описаний различных объектов (пример -- //keypressed//, //readkey//, //delay// из CRT), +  * **стандартные библиотечные**  требуют указания в программе на необходимость подключения дополнительных системных библиотек (пример -- //keypressed//, //readkey//, //delay// из CRT);  
 +  * **дополнительные библиотечные**  требуют установки в системе и подключения в коде программы дополнительных библиотек (пример -- //circle//, //setfillstyle//, //getcolor// из graph или из нашей библиотеки oglgraph)
 +  * **собственные библиотечные**  требуют созданияустановки в системе и подключения в коде программы дополнительных библиотек; 
   * **локальные** описываются в программе.   * **локальные** описываются в программе.