2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 процедуры и функции.
Сообщение25.04.2009, 03:32 


15/04/09
16
подскажите как решается вот такая вот задача:

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

 Профиль  
                  
 
 
Сообщение25.04.2009, 11:29 


21/03/06
1545
Москва
Если не ошибаюсь, функция возвращает результат, а процедура - нет.

 Профиль  
                  
 
 
Сообщение25.04.2009, 12:09 
Заслуженный участник


11/05/08
32166
e2e4 в сообщении #208031 писал(а):
, а процедура - нет.

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

 Профиль  
                  
 
 
Сообщение25.04.2009, 12:15 
Заслуженный участник
Аватара пользователя


13/08/08
14468
Разница в синтаксисе. Конечно, в разных языках по разному оформляется. Но в среднем
процедура:
Код:
call matrix_input (A,1,n)
call matrix_input (B,1,n)


функция:

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


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

 Профиль  
                  
 
 
Сообщение25.04.2009, 12:30 
Заслуженный участник


11/05/08
32166
Почему именно глобальные-то? Это можно и иногда даже полезно (например, в отладочных целях), но вообще-то дурной вкус.

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

Код:
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 
Заслуженный участник
Аватара пользователя


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


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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: TheRuinedMap


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group