آموزش زبان برنامه نویسی فرترن

صادق غفرانی

عضو جدید
سلام دوست عزیز.. می خواستم 1 سوال بپرسم.. می دونین چطور می تونم تو فرترن با یک دستور if دو تا شرط رو تعریف کنم.طوری که می خوام بگم اگه همزمان a بزرگتر از صفر باشه و c کوچکتر از صفر یک متن رو برام بنویسه... کل برنامه ام حل شده... قط تو همین 1 شرط موندم
ممنون می شم
 

meysam480

کاربر بیش فعال
کاربر ممتاز
سلام دوست عزیز.. می خواستم 1 سوال بپرسم.. می دونین چطور می تونم تو فرترن با یک دستور if دو تا شرط رو تعریف کنم.طوری که می خوام بگم اگه همزمان a بزرگتر از صفر باشه و c کوچکتر از صفر یک متن رو برام بنویسه... کل برنامه ام حل شده... قط تو همین 1 شرط موندم
ممنون می شم

IF ( a > 0 .AND. C < 0 ) WRITE(*,*) " your sentences"





 

coriolis

عضو جدید
کیست کسی که مرا یاری کند ؟؟؟

کیست کسی که مرا یاری کند ؟؟؟

دوستان ،
کسی می دونه چگونه می شه data از فایلهای excel خواند و یا توی یک سلول خاصی dataوارد کرد ؟
 

bahar_engineer

عضو جدید
مشکل با لینک کردن کتابخانه فرترن

مشکل با لینک کردن کتابخانه فرترن

سلام
من یه پروژه دارم که فرترن قدیمی هست ... توی این برنامه 11 زیربرنامه هست که متعلق به کتابخانه گرافیکی calcomp هستن که مخصوص رسم پلات هست.

من کتابخانه رو بدست آوردم اما نمی دونم چطور اون رو به برنامه لینک کنم؟!

من compaq visual fortran 6.5 دارم که البته به 6.6 هم ارتقا پیدا می کنه ...

چطور می تونم کتابخانه رو به برنامه اضافه کنم؟ آخه زیربرنامه ها رو نمی شناسه و می گه
resolved external subroutine ...

ممنون می شم کمکم کنید خیلی حیاتیه هر چی سرچ می کنم پیدا نمی کنم
 

fizikdan

عضو جدید
سلام
می خواستم بدونم کسی در مورد برنامه نویسی تابع گاما با فرترن 90 کار کرده یا می تونه کمک کنه؟
 

dreamy

عضو جدید
بچه ها درمورد فرترن 90 اگه مقاله ای دارین بزارین متشکر
 

kartalin

عضو جدید
با سلام
کتاب آموزش زبان فرترن که توسط دکتر محمود مشعل ترجمه شده
اگه کسی داره لطفا فایل پی دی اف اونو بزاره
ممنونم
 

omid20110

کاربر فعال تالار اسلام و قرآن ,
کاربر ممتاز
سلام به همگی.
میخواستم ببینم کسی میدونه چطور روش لاسونن برای گسسته سازی معادله انتقال حرارت یک بعدی رو میشه تو فرترن کد نویسی کرد؟
شرایط مرزی و اولیه معلومه.
 

pepper

کاربر فعال
سلام
من نمی دونم روش لانسون چیه
ولی برای روشای اختلاف محدود و حجم محدود
ابتدا باید معادلات رو گسسته کرد
بعد معادلات گسسته شده رو به فرم
ApTp=AeTe+AwTw+b
و با الگوریتم توماس (سه قطری) حل کرد

برای کد نویسی ابتدا شبکه رو تولید میکنیم

بعد ضرایب Ap,Ae,Aw,b رو محاسبه میکنیم
حالا با با داشتن شرایط مرزی برای جایی که مرز هست مقادیر مرزی رو اعمال میکنیم
مثلا برا گره ابتدایی مینویسیم

if (i=1) b=b+Aw*T(1) and Aw(1)=0.0

حالا با الگوریم سه قطری میدان دمارو حساب می کنیم بعد بعد به گام زمانی بعدی میرویم
مراحل بالا رو تکرار میکنیم
 

Asghar_

عضو جدید
سلام دوستان

من یه کدی در مورد خواندن داده ها از یک فایل رو نوشتم که دچار مشکل و سرددرگمی شدم...اصلا من برای نوشتن این کد باید از قبل یه فایل داده رو مشخص کنم؟مثلا یه سری ارقامو داخل یه فایل txt وارد کنم و سپس کد را اجرا کنم؟؟؟

ممنون میشم راهنمایی بفرمایید ...با فرترن 95 نوشتم.

کد:
program reade
implicit none
character(len=4)::filename
integer::nvals=0
integer::sd
real::value
write(*,*)'please inter input file name'
read(*,*)filename
write(*,1000)filename
1000 format('','the input file name:',A)

open(unit=3,file=filename,status='old',action='read',iostat=sd)

openif:if(sd==0) then
readloop:do
       read(3,*,iostat=sd)value
       if(sd/=0) exit
         nvals=nvals+1
         write(*,1010)nvals,value
         1010 format('','line',i6,':value=',f10.4)
         end do readloop


readif:if(sd>0) then
write(*,1020)nvals+1
1020 format('0','an error occurred reading line',i6)
else
  write(*,1030)nvals
  1030 format('0','end of file reached.there were',i6,'value in the file.')

  end if readif

else openif

  write(*,1040)sd
  1040 format('','error opening file:iostat=',i6)
  end if openif

  close(unit=3)

end program reade
 

Asghar_

عضو جدید
سلام دوستان

یه کد نوشتم میخواستم که یه ماتریس 3*4 رو بخونم.....یعنی از یه فایل داده،آرایه دوبعدی(ماتریس) دوبعدی رو بخونم....ولی نمیدونم چرا وقتی ارایه رو میخونه درست خونده نمیشه و وقتی میخوام یه عضوی از آرایه رو رایت بگیرم اشتباه خروجی میده...ممنون میشم که راهنمایی کنین

با تشکر





کد:
program ee
implicit none
integer::i
integer::j
integer,dimension(4,3)::istat          
open(7,file='initial.txt',status='old',action='read')        !Should be equal to the numbers of datas with numbers elements arrays......12 elements there is
read(7,*)istat
write(*,*)istat
write(*,*)istat(3,1)
!or:
!read(7,*)((istat(i,j),j=1,3),i=1,4)
!write(*,*)((istat(i,j),j=1,3),i=1,4)
end program ee

اینم لینک دانلود فایل فرترن و فایل داده ها...فایل داده ها رو به هر طریقی ستونی و ماتریسی در آورد ولی بازم درست نشد.

http://kanakh.com/upload/uploads/13957393441.rar
 

mech.shima

دستیار مدیر مهندسی مکانیک
کاربر ممتاز
سلام دوستان

یه کد نوشتم میخواستم که یه ماتریس 3*4 رو بخونم.....یعنی از یه فایل داده،آرایه دوبعدی(ماتریس) دوبعدی رو بخونم....ولی نمیدونم چرا وقتی ارایه رو میخونه درست خونده نمیشه و وقتی میخوام یه عضوی از آرایه رو رایت بگیرم اشتباه خروجی میده...ممنون میشم که راهنمایی کنین

با تشکر





کد:
program ee
implicit none
integer::i
integer::j
integer,dimension(4,3)::istat          
open(7,file='initial.txt',status='old',action='read')        !Should be equal to the numbers of datas with numbers elements arrays......12 elements there is
read(7,*)istat
write(*,*)istat
write(*,*)istat(3,1)
!or:
!read(7,*)((istat(i,j),j=1,3),i=1,4)
!write(*,*)((istat(i,j),j=1,3),i=1,4)
end program ee

اینم لینک دانلود فایل فرترن و فایل داده ها...فایل داده ها رو به هر طریقی ستونی و ماتریسی در آورد ولی بازم درست نشد.

http://kanakh.com/upload/uploads/13957393441.rar

سلام
فرترن رو از رو سیستمم حذف کردم که بتونم فایلتون رو بخونم
اما به نظر نمیاد مشکل حادی داشته باشه
اینکه ارایه ها رو اشتباهی میخونه شاید یه سری قوانین رو رعایت نکردین و الا خوندن آرایه که کار سختی نیست مسلما
یه دور دیگه بنویسید برنامه رو گاهی یه اشتباه کوچیک باعث میشه که خروجی مورد نظرتون درنمیاد
خط READ رو یه دور چک کنید
 

Asghar_

عضو جدید
سلام
فرترن رو از رو سیستمم حذف کردم که بتونم فایلتون رو بخونم
اما به نظر نمیاد مشکل حادی داشته باشه
اینکه ارایه ها رو اشتباهی میخونه شاید یه سری قوانین رو رعایت نکردین و الا خوندن آرایه که کار سختی نیست مسلما
یه دور دیگه بنویسید برنامه رو گاهی یه اشتباه کوچیک باعث میشه که خروجی مورد نظرتون درنمیاد
خط READ رو یه دور چک کنید

این خوندن با ان خوندن تو متلب فرق داره ها:D

فرق فوکوله.مشکل حاده به نظرم
 

Asghar_

عضو جدید
به شکل زیر توجه کنین..میبینین که کلا ماتریس دچار برهم ریختگی شده.....

 

mech.shima

دستیار مدیر مهندسی مکانیک
کاربر ممتاز
این خوندن با ان خوندن تو متلب فرق داره ها:D

فرق فوکوله.مشکل حاده به نظرم
صددرصد فرق میکنه
کاری رو که با متلب با یه خط مینویسیم با فرترن یه صفحه میشه تا حالیش کنی چی ازش میخوای
 

amir-sky

کاربر حرفه ای
کاربر ممتاز
سلام دوستان

یه کد نوشتم میخواستم که یه ماتریس 3*4 رو بخونم.....یعنی از یه فایل داده،آرایه دوبعدی(ماتریس) دوبعدی رو بخونم....ولی نمیدونم چرا وقتی ارایه رو میخونه درست خونده نمیشه و وقتی میخوام یه عضوی از آرایه رو رایت بگیرم اشتباه خروجی میده...ممنون میشم که راهنمایی کنین

با تشکر





کد:
program ee
implicit none
integer::i
integer::j
integer,dimension(4,3)::istat          
open(7,file='initial.txt',status='old',action='read')        !Should be equal to the numbers of datas with numbers elements arrays......12 elements there is
read(7,*)istat
write(*,*)istat
write(*,*)istat(3,1)
!or:
!read(7,*)((istat(i,j),j=1,3),i=1,4)
!write(*,*)((istat(i,j),j=1,3),i=1,4)
end program ee

اینم لینک دانلود فایل فرترن و فایل داده ها...فایل داده ها رو به هر طریقی ستونی و ماتریسی در آورد ولی بازم درست نشد.

http://kanakh.com/upload/uploads/13957393441.rar

سلام دوست عزیز

شما یک اشتباه رایج در کدنوسی فرترن رو انجام دادین.که حداقل واسه خودم تو یه برهه ای مشکل ساز شده بود و منو سردرگم کرده بود.

[FONT=&quot] [/FONT] [FONT=&quot]توجه کنید که فرترن، داده های آرایه رو در ستونها ذخیره میکنه(به صورت ستونی در حافظه ذخیر میکنه)،اما داده ها را در طول خط میخونه..پس همیشه ترانهاده آرایه اصلی را باید در فایل داده ها باشه..[/FONT]

در ضمن راههای دیگه ای هم وجود داره که این وارونگی رو انجام ندیم و همون آرایه اصلی رو استفاده کنیم...که توسط حلقه DO ضمنی انجام میشه.اگه خواستی بیشتر توضیح میدم.

من فایل شما رو درست کردم.

http://kanakh.com/upload/uploads/13957478101.rar
 

Asghar_

عضو جدید
سلام دوست عزیز

شما یک اشتباه رایج در کدنوسی فرترن رو انجام دادین.که حداقل واسه خودم تو یه برهه ای مشکل ساز شده بود و منو سردرگم کرده بود.

توجه کنید که فرترن، داده های آرایه رو در ستونها ذخیره میکنه(به صورت ستونی در حافظه ذخیر میکنه)،اما داده ها را در طول خط میخونه..پس همیشه ترانهاده آرایه اصلی را باید در فایل داده ها باشه..

در ضمن راههای دیگه ای هم وجود داره که این وارونگی رو انجام ندیم و همون آرایه اصلی رو استفاده کنیم...که توسط حلقه DO ضمنی انجام میشه.اگه خواستی بیشتر توضیح میدم.

من فایل شما رو درست کردم.

http://kanakh.com/upload/uploads/13957478101.rar

ممنون;)

درست شد:D

آره اگه وقت کردی بیشتر توضیح بدین...

با تشکر
 

mech 89

عضو جدید
سلام دوستان کسی می دونه برنامه الگوریتم توماس توی فرترن چه طوری باید نوشت خیلی سریع بهش احتیاج دارم کمکم کنید
 

pepper

کاربر فعال
سلام دوستان کسی می دونه برنامه الگوریتم توماس توی فرترن چه طوری باید نوشت خیلی سریع بهش احتیاج دارم کمکم کنید

فکر کنم دیر شده اما خدمت شما
 

پیوست ها

  • The Thomas algorithm program.txt
    1 کیلوبایت · بازدیدها: 0
بالا