2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2, 3, 4  След.
 
 Фортран
Сообщение21.09.2015, 13:48 
Аватара пользователя


13/08/13

4323
Прогаем сейчас на фортран.
И вот вопрос, можно ли как-то задать функцию в начале, а потом обращаться к ее терму?

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 14:23 
Заслуженный участник


09/05/12
25179
Sicker в сообщении #1055452 писал(а):
Прогаем сейчас на фортран.
И вот вопрос, можно ли как-то задать функцию в начале, а потом обращаться к ее терму?
Если я правильно понял вопрос - нет. Но форма вопроса такова, что я мог понять его и неправильно. :D

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 14:36 
Аватара пользователя


13/08/13

4323
Pphantom
Те если я захочу определить функцию f как $f(x)=x^2$
И потом все время писать $f(x)$, и компилятор будет будет знать, что это $x^2$, так нельзя?

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 14:47 
Заслуженный участник


09/05/12
25179
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 
Аватара пользователя


13/08/13

4323
Pphantom
Ваш код не работает.
И я его вообще не понимаю.
Те все время все функции явно прописывают, даже если это многочлен сотой степени?

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 14:58 
Заслуженный участник


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

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 15:01 
Аватара пользователя


13/08/13

4323
Pphantom в сообщении #1055473 писал(а):
Что именно непонятно?

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

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

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


06/10/08
6422
Sicker в сообщении #1055476 писал(а):
Что за восьмерки, что за двойные звезды.
Восьмерка - это размер в байтах, т.е. real(8) - это double precision. ** - это возведение в степень.

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

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


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

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 15:08 
Заслуженный участник


09/05/12
25179
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 
Заслуженный участник
Аватара пользователя


04/09/14
5003
ФТИ им. Иоффе СПб
Какой я оказывается старый!

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 15:25 
Заслуженный участник


16/02/13
4105
Владивосток
Такого языка — Фортран — по сути дела, нет. Есть уйма различных компиляторов, каждый со своим языком. Они, спору нет, похожи (точнее, были похожи до появления Фортрана-77 и -90), но у каждого свои особенности. Вы что именно понимаете под Фортраном?

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 15:39 
Заслуженный участник


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

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 15:41 
Аватара пользователя


13/08/13

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

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

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 15:42 
Заслуженный участник


16/02/13
4105
Владивосток
Ну, я в середине восьмидесятых читал сравнение десятка, что ли, Фортранов. Оператор GOTO 5 во всех выполнялся одинаково. И всё.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу 1, 2, 3, 4  След.

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



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

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


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

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