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
14454
Разница в синтаксисе. Конечно, в разных языках по разному оформляется. Но в среднем
процедура:
Код:
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
14454
Да.
Различие в дальнейшем использовании. Функцию необходимо присваивать чему-то. Её можно использовать в формулах
Код:
C:=scalprod(a,b)/scalprod(a,a)scalprod(b,b)


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

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

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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