2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 процедуры и функции.
Сообщение25.04.2009, 03:32 
подскажите как решается вот такая вот задача:

Написать программу нахождения скалярного произведения двух одномерных массивов. Ввод и вывод матрицы оформить в виде процедуры. Нахождение скалярного произведения реализуйте с помощью функции.

 
 
 
 
Сообщение25.04.2009, 11:29 
Если не ошибаюсь, функция возвращает результат, а процедура - нет.

 
 
 
 
Сообщение25.04.2009, 12:09 
e2e4 в сообщении #208031 писал(а):
, а процедура - нет.

Вазвращает, если её об этом попросить. Иначе зачем такой язык был бы нужен?

 
 
 
 
Сообщение25.04.2009, 12:15 
Аватара пользователя
Разница в синтаксисе. Конечно, в разных языках по разному оформляется. Но в среднем
процедура:
Код:
call matrix_input (A,1,n)
call matrix_input (B,1,n)


функция:

Код:
SP=scalar_prod(A,B)


Вопрос о возвращении результата чисто терминологический. Функция непосредственно возвращает результат, то есть переменной присваивается значение функции.
Процедура в процессе выполнения изменяет глобальные переменные, что может делать и функция, кстати.

 
 
 
 
Сообщение25.04.2009, 12:30 
Почему именно глобальные-то? Это можно и иногда даже полезно (например, в отладочных целях), но вообще-то дурной вкус.

Конкретнее. Поскольку вопрос был судя по всему, о Паскале, интерфейс должен быть примерно таким:

Код:
type  intar = array[1..100] of integer;
. . . . . . . . . . . . . .
procedure intar_read(var a: intar);
. . . . . . . . . . . . . .
procedure intar_write(a: intar);
. . . . . . . . . . . . . .
function scalprod(a,b: intar): integer;
. . . . . . . . . . . . . .

 
 
 
 
Сообщение25.04.2009, 13:08 
Аватара пользователя
Да.
Различие в дальнейшем использовании. Функцию необходимо присваивать чему-то. Её можно использовать в формулах
Код:
C:=scalprod(a,b)/scalprod(a,a)scalprod(b,b)


Существуют языки без функций.

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group