2014 dxdy logo

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

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




На страницу 1, 2, 3, 4  След.
 
 Фортран
Сообщение21.09.2015, 13:48 
Аватара пользователя
Прогаем сейчас на фортран.
И вот вопрос, можно ли как-то задать функцию в начале, а потом обращаться к ее терму?

 
 
 
 Re: Фортран
Сообщение21.09.2015, 14:23 
Sicker в сообщении #1055452 писал(а):
Прогаем сейчас на фортран.
И вот вопрос, можно ли как-то задать функцию в начале, а потом обращаться к ее терму?
Если я правильно понял вопрос - нет. Но форма вопроса такова, что я мог понять его и неправильно. :D

 
 
 
 Re: Фортран
Сообщение21.09.2015, 14:36 
Аватара пользователя
Pphantom
Те если я захочу определить функцию f как $f(x)=x^2$
И потом все время писать $f(x)$, и компилятор будет будет знать, что это $x^2$, так нельзя?

 
 
 
 Re: Фортран
Сообщение21.09.2015, 14:47 
Sicker в сообщении #1055466 писал(а):
Те если я захочу определить функцию f как $f(x)=x^2$
И потом все время писать $f(x)$, и компилятор будет будет знать, что это $x^2$, так нельзя?
Нечто подобное можно, но без гарантии именно такой реализации. Например, так:
Используется синтаксис Fortran
pure function f(x)
  real(8),intent(in) :: x
  real(8) :: f

  f=x**2
end function f
 
А вот то, будет сформирован отдельный вызов функции или она будет обработана как inline-функция (то, что Вы хотите, обычно называется именно так) - зависит от компилятора и его представлений об оптимизации вызовов.

 
 
 
 Re: Фортран
Сообщение21.09.2015, 14:50 
Аватара пользователя
Pphantom
Ваш код не работает.
И я его вообще не понимаю.
Те все время все функции явно прописывают, даже если это многочлен сотой степени?

 
 
 
 Re: Фортран
Сообщение21.09.2015, 14:58 
Sicker в сообщении #1055472 писал(а):
Ваш код не работает.
В каком смысле он "не работает"? Это отдельная функция, она сама по себе работать и не должна.
Sicker в сообщении #1055472 писал(а):
И я его вообще не понимаю.
Что именно непонятно?
Sicker в сообщении #1055472 писал(а):
Те все время все функции явно прописывают, даже если это многочлен сотой степени?
В некоторых частных случаях можно придумать что-нибудь другое, но обычно это не надо. Что Вы, собственно, хотели бы увидеть в случае многочлена сотой степени?

 
 
 
 Re: Фортран
Сообщение21.09.2015, 15:01 
Аватара пользователя
Pphantom в сообщении #1055473 писал(а):
Что именно непонятно?

Что за восьмерки, что за двойные звезды.
Pphantom в сообщении #1055473 писал(а):
Что Вы, собственно, хотели бы увидеть в случае многочлена сотой степени?

Значок функции $f$?
Я вообще не понимаю, это такие нужные и элементарные вещи, неужели они в языке не отлажены? Нафига его вообще придумали?

 
 
 
 Re: Фортран
Сообщение21.09.2015, 15:04 
Аватара пользователя
Sicker в сообщении #1055476 писал(а):
Что за восьмерки, что за двойные звезды.
Восьмерка - это размер в байтах, т.е. real(8) - это double precision. ** - это возведение в степень.

Sicker в сообщении #1055476 писал(а):
Значок функции $f$?
Объясните, что Вы хотите в итоге получить, можно с примером на каком-нибудь другом языке, где это есть. Вам нужны функции в параметрах другой функции?

 
 
 
 Re: Фортран
Сообщение21.09.2015, 15:04 
Аватара пользователя
Sicker в сообщении #1055472 писал(а):
Ваш код не работает.
Просто готовить не умеете. Фортран - язык древний. В нем все подпрограммы (Function/Subroutine) компилируются независимо. Вызовы осуществляются из главной (не именованной) программы. Никаких областей видимости переменных/подпрограмм нет (по крайней мере раньше так было), поэтому редактору связей надо явно указывать какие подпрограммы использует данная программа. В общем, книжку читайте - там все написано.

 
 
 
 Re: Фортран
Сообщение21.09.2015, 15:08 
Sicker в сообщении #1055476 писал(а):

Что за восьмерки, что за двойные звезды.
Кхм... Вы "прогать сейчас на фортране" начали пять минут назад или уже пятнадцать? :wink: Может быть, стоит сначала познакомиться с базовыми сведениями по синтаксису языка?

"Восьмерки" (точнее, real(8)) - стандартный 8-байтовый вещественный тип. Если, например, C привычнее - это аналог double. "Двойные звезды" - столь же стандартная операция возведения в степень.
Sicker в сообщении #1055476 писал(а):
Значок функции $f$?
Да без проблем, использование функции и будет выглядеть как f(x). Только сам многочлен Вы как описывать собираетесь?
Sicker в сообщении #1055476 писал(а):
Я вообще не понимаю, это такие нужные и элементарные вещи, неужели они в языке не отлажены? Нафига его вообще придумали?
Может быть, таки стоит сначала чуть-чуть познакомиться с языком? :facepalm:

-- 21.09.2015, 15:11 --

amon в сообщении #1055478 писал(а):
Фортран - язык древний. В нем все подпрограммы (Function/Subroutine) компилируются независимо. Вызовы осуществляются из главной (не именованной) программы. Никаких областей видимости переменных/подпрограмм нет (по крайней мере раньше так было), поэтому редактору связей надо явно указывать какие подпрограммы использует данная программа.
Не учите человека плохому. :D Описанные проблемы пропали в Fortran 90, четверть века тому назад.

 
 
 
 Re: Фортран
Сообщение21.09.2015, 15:15 
Аватара пользователя
Какой я оказывается старый!

 
 
 
 Re: Фортран
Сообщение21.09.2015, 15:25 
Такого языка — Фортран — по сути дела, нет. Есть уйма различных компиляторов, каждый со своим языком. Они, спору нет, похожи (точнее, были похожи до появления Фортрана-77 и -90), но у каждого свои особенности. Вы что именно понимаете под Фортраном?

 
 
 
 Re: Фортран
Сообщение21.09.2015, 15:39 
iifat в сообщении #1055491 писал(а):
Такого языка — Фортран — по сути дела, нет. Есть уйма различных компиляторов, каждый со своим языком. Они, спору нет, похожи (точнее, были похожи до появления Фортрана-77 и -90), но у каждого свои особенности. Вы что именно понимаете под Фортраном?
Ну, пожалуй, это преувеличение. Сейчас практически все компиляторы соблюдают какой-либо стандарт, но при этом имеют какие-то собственные расширения (не очень большие по объему). Во всяком случае, до компиляторозависимых фокусов ТС еще долго добираться.

 
 
 
 Re: Фортран
Сообщение21.09.2015, 15:41 
Аватара пользователя
Pphantom в сообщении #1055482 писал(а):
Да без проблем, использование функции и будет выглядеть как f(x). Только сам многочлен Вы как описывать собираетесь?

$f(x)=x^2$ :facepalm:

 
 
 
 Re: Фортран
Сообщение21.09.2015, 15:42 
Ну, я в середине восьмидесятых читал сравнение десятка, что ли, Фортранов. Оператор GOTO 5 во всех выполнялся одинаково. И всё.

 
 
 [ Сообщений: 59 ]  На страницу 1, 2, 3, 4  След.


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