История изменений
Исправление Xenius, (текущая версия) :
Ну т.е. если я пишу функцию print_hello(), то вывод в ней - это все равно побочный эффект?
То это уже не функция, а процедура. Впрочем в C можно искусственно создать различие между функциями и процедурами, если в функция с возвращаемым значением избегать побочных эффектов, а все процедуры делать типа void. Если понадобится вернуть значение из процедуры, можно применить возврат по ссылке (указателю).
В паскале функции тоже могут что угодно делать, в том числе и побочные эффекты, но там по крайней мере есть специальное ключевое слово и хорошим стилем будет избегать побочных эффектах в подпрограммах, описаных со словом function.
А вообще почему бы тебе не прочитать учебник Столярова, а не мои попытки его пересказать?
Исправление Xenius, :
Ну т.е. если я пишу функцию print_hello(), то вывод в ней - это все равно побочный эффект?
То это уже не функция, а процедура. Впрочем в C можно искусственно создать различие между функциями и процедурами, если в функция с возвращаемым значением избегать побочных эффектов, а все процедуры делать типа void. Если понадобится вернуть значение из процедуры, можно применить возврат по ссылке (указателю).
В паскале функции тоже могут что угодно делать, в том числе и побочные эффекты, но там по крайней мере есть специальное ключевое слово и хорошим стилем будет избегать побочных эффектах в подпрограммах, описаных со словом function.
Исходная версия Xenius, :
Ну т.е. если я пишу функцию print_hello(), то вывод в ней - это все равно побочный эффект?
То это уже не функция, а процедура. Впрочем в C можно искусственно создать различие между функциями и процедурами, если в функция с возвращаемым значением избегать побочных эффектов, а все процедуры делать типа void. Если понадобится вернуть значение из процедуры, можно применить возврат по ссылке (указателю)