function Ax(var b:integer):integer;
begin
b:=1;
Ax:=1
end;
А теперь отвлечемся от Паскаля (условно
С общей точки зрения кусок кода в примере - функция, процедура или функционально-процедурный мутант?
Спасибо за аргументированные ответы
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК ! 
4. НЕ используйте форум для личного общения! 
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел! 
![]() ![]()  | 
	
| Vinchkovsky | 
                        
			
			  
			
				 Сообщение
					#1				
			 
		 | 
	
| 
        	
        		 Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация:    0           	 | 
       
			
			 Рассмотрим такую функцию: 
			
			
					
		function Ax(var b:integer):integer; А теперь отвлечемся от Паскаля (условно С общей точки зрения кусок кода в примере - функция, процедура или функционально-процедурный мутант? Спасибо за аргументированные ответы  | 
	
| Archon | 
                        
			
			  
			
				 Сообщение
					#2				
			 
		 | 
	
        	
        		![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация:    24           	 | 
       
			
			 Можно ли считать функцией обособленный кусок кода, принимающий параметр, изменяющий его и возвращающий некоторое значение? Определённо. 
			
			-------------------- Close the World...txeN eht nepO 
					
		 | 
	
| Vinchkovsky | 
                        
			
			  
			
				 Сообщение
					#3				
			 
		 | 
	
| 
        	
        		 Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация:    0           	 | 
       
			
			 Archon, спасибо за ответ, тогда слова предподавателя о том, что функция возвращает одно значение, а процедура много, неверны? 
			
			
					
		Еще раз отмечу, что речь идет об основных понятиях программирования, не привязанных к конкретному языку  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#4				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Цитата слова предподавателя о том, что функция возвращает одно значение, а процедура много, неверны? Не в этом отличие процедуры от функции... А в том, что возвращаемое функцией значение можно использовать непосредственно в выражении. С процедурой такое не пройдет...P.S. То, что ты привел - это функция с побочным эффектом, кстати...  | 
	
| Archon | 
                        
			
			  
			
				 Сообщение
					#5				
			 
		 | 
	
        	
        		![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация:    24           	 | 
       
			
			 В общем случае неверны. По идее процедура вообще не возвращает значения. Она может это делать только опосредованно: для Паскаля через var-параметры, например. Функция это тоже может делать. За подробностями сюда: Wikipedia: Функция (программирование) 
			
			-------------------- Close the World...txeN eht nepO 
					
		 | 
	
| Vinchkovsky | 
                        
			
			  
			
				 Сообщение
					#6				
			 
		 | 
	
| 
        	
        		 Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация:    0           	 | 
       
			
			 Цитата Не в этом отличие процедуры от функции... А в том, что возвращаемое функцией значение можно использовать непосредственно в выражении. С процедурой такое не пройдет... Понятно, так и отвечал предподавателю, он сказал, что это неверно и выдвинул свою версию. Я ему показал функцию, как в примере, на что он ничего внятного не ответил, сославшись на спешку. Поэтому и решил уточнить, все ли функции в Паскале есть функциями Возможно, все это звучит странно; дополнительно сбили с толку слова местного "гения" о том, что функции такого виду по определению ни функции ни процедуры (хотя, если уж так и мыслить, то это процедуры). Спасибо за ответ, который расставил все точки над ''i'' окончательно Archon, спасибо за ссылку; видно, предподаватель ошибся, хотя, возможно, хоте все пояснить понятно. Сообщение отредактировано: Vinchkovsky -  | 
	
| Vinchkovsky | 
                        
			
			  
			
				 Сообщение
					#7				
			 
		 | 
	
| 
        	
        		 Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация:    0           	 | 
       
			
			 Читаю в книге: 
			
			
					
		Цитата Если алгорит выдает одно значение ... то такой алгоритм может быть алгоритмом-функцией, если выдает много значений ... алгоритмом-процедурой В.Шелест, "Программирование", "БХВ-Петербург", 2002 Как с этим быть? Если утверджение верно, то в Паскале процедура выдает значение через var-параметры. Но тогда и функция может возвращать сколько угодно значений через var-параметры? Единственное логичное объяснение вижу в различии понятий "выдает" и "возвращает", хотя это звучит несколько бредово и предподаватель оперировал вторым понятием  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#8				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Цитата Если алгорит выдает одно значение ... то такой алгоритм может быть алгоритмом-функцией, если выдает много значений ... алгоритмом-процедурой Перефразируем: Если алгоритм выдает одно значение, он может быть реализован функцией. Если выдает много значений, то функцией (в чистом виде, без side-effects) он быть не может... И вот тогда уже он может быть реализован либо функцией, либо процедурой. Так понятнее?Цитата Но тогда и функция может возвращать сколько угодно значений через var-параметры? Может. В качестве побочного эффекта, повторяю. Но не должна. А одно - должна вернуть... | 
	
| Vinchkovsky | 
                        
			
			  
			
				 Сообщение
					#9				
			 
		 | 
	
| 
        	
        		 Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация:    0           	 | 
       
			
			 Спасибо за помощь, писал сообщение в спешке, хорошо не подумал, уже в дороге вспомнил о побочном эффекте.  
			
			
					
		Немного запутала фраза с Википедии: Цитата Особенность, отличающая ее от процедур, состоит в том, что функция возвращает значение, ... . Я понял, что функция возращает одно значение, процедура не возращает + каждая из подпрограм может это делать опосредственно. Видимо, на самом деле имелось ввиду, что что функция обязательно возвращает значение, в отличии от процедуры, которая может это делать. Спасибо за помощь (на практике все понимаю, в теории же хотелось разобраться).  | 
	
| Lapp | 
                        
			
			  
			
				 Сообщение
					#10				
			 
		 | 
	
        	
        		![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация:    159           	 | 
       
			
			 на практике все понимаю, в теории же хотелось разобраться). Ты писал где-то выше, что вопрос носит абстрактный характер, не привязанный к языку, но потом все же речь шла только о Паскале. Да, в Паскале фукнкция - это процедура, возвращающая значение. Иными словами, функиональность функции больше, чем процедуры. В языке Си процедур вообще нет, но зато в понятие функции внесено усовершенстовование: она не обязательно должна возвращать значение. Это еще раз показывает, что между функцией и процедурой отличия не принципиального, а чисто технического характера: функцию иногда удобнее использовать для вычисления параметров выражения. -------------------- я - ветер, я северный холодный ветер 
					
		я час расставанья, я год возвращенья домой  | 
	
![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 18:58 |