کاربر:Esi Gonzalez/صفحه تمرین: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Esi Gonzalez (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
Esi Gonzalez (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۸:
[[:en:Object-Oriented Fortran|فورترن شیءگرا]] یک افزونه شیءگرا از فورترن بود که در آن می توانستیم داده‌ها را در اشیاء مختلف گروه‌بندی کنیم. نمونه‌های اشیاء می‌توانستند به صورت موازی با یکدیگر ساخته شوند و توابعشان را اجرا کنند. فورترن شیءگرا برای Sun، Iris، iPSC و NCUBE موجود بود، اما الان دیگر پیشتیبانی نمی‌شود.
 
افزونه‌های این‌چنینی که مختص یک یا چند ماشینند یا در طول زمان از بین رفتند، یا عناصری از آنها در استانداردهای اصلی گنجانده شد. مهم‌ترین افزونه‌ی باقی‌مانده [[اوپناپن ام‌پی]] است که یک افزونه‌ی چند‌پلتفرمه برای برنامه‌نویسی با حافظه‌ی مشترک است. Coarray Fortran یک افزونه جدید است که برای پشتیبانی برنامه‌نویسی موازی در نظر گرفته شده.
 
===FOR TRANSIT برای ماشین IBM 650===
 
FOR TRANSIT برای ماشین IBM 650
FOR TRANSIT یک نسخه ی ساده شده از زبان FORTRAN ماشین IBM 704 بود، که برای ماشین IBM 650 پیاده سازی شد. برای این کار از یک برنامه ی مترجم ساخت دهه 1950 دانشگاه کارنگی استفاده شد. توضیح زیر در راهنمای مرجع IBM آمده است ( سیستم خودکار برنامه نویسی FOR TRANSIT C28-4038 متعلق به IBM، کپی رایت 1957 و 1959)
سیستم FORTRAN برای ماشینی پیچیده تر از ماشین IBM 650 ساخته شده بود، و بنابراین بعضی از 32 دستور موجود در راهنمای برنامه نویسان FORTRAN برای سیستم FOR TRANSIT مورد قبول نیستند. بعلاوه، برخی محدودیت ها به زبان FORTRAN اضافه شده اند. با این حال، هیچ کدام از این محدودیت ها موجب آن نمی شوند که یک کد منبع که برای FOR TRANSIT نوشته شده است برای سیستم فورترن ماشین IBM 704 ناسازگار باشد.
سطر ۳۹ ⟵ ۴۰:
بسیاری از کامپایلرهای فورترن، بخش هایی از پیش پردازنده ی C را در خود ادغام کرده اند. SIMSCRIPT یک پیش پردازنده ی فورترن مخصوص کاربردهای خاص برای مدلسازی و شبیه سازی سیستم های گسسته‌ی (Discrete System) بزرگ است.
 
زبان برنامه نویسی F طراحی شد تا زیرمجموعه مرتبی از فورترن 95 باشد که هدفش حذف کردن قابلیت های زائد، بدون ساختار و منسوخ شده ی فورترن، مثل دستور EQUIVALENCE بود. F قابلیت های آرایه را که در فورترن 90 اضافه شده بود حفظ می کند و دستورات کنترلی ای که توسط مفاهیم برنامه نویسی ساختاریافته (Structured Programming) منسوخ شده بودند را حذف می کند. این دستورات هم به فورترن 77 اضافه شده بودند هم به فورترن 90. سازندگان زبان F آن را "یک زبان برنامه نویسی کامپایل شده و ساختاریافته برای آرایه ها توصیف کردند که "خصوصا برای آموزش و محاسبات علمی مناسب است".<ref>{{cite web | url=http://www.fortran.com/F/index.html | title= F Programming Language Homepage|publisher=Fortran.com|accessdate=19 November 2014}}</ref>
 
لاهی (Lahey) و فوجیتسو (Fujitsu) تیم مشترک تشکیل دادند تا یک زبان فورترن برای فریم‌ورک .NET مایکروسافت خلق کنند. زبان Seilverfrost FTN95 هم توانایی ایجاد کد .NET را دارد.
 
لاهی (Lahey) و فوجیتسو (Fujitsu) تیم مشترک تشکیل دادند تا یک زبان فورترن برای فریم‌ورک .NET مایکروسافت خلق کنند. زبان Seilverfrost FTN95 هم توانایی ایجاد کد .NET را دارد.
<ref>{{cite web | url=http://www.lahey.com/lf71/lfnet.htm | title=Fortran for .NET Language System | url-status=dead | archiveurl=https://web.archive.org/web/20141018201259/http://www.lahey.com/lf71/lfnet.htm | archivedate=18 October 2014 | df=dmy-all }}</ref>
زبان Silverfrost FTN95 هم توانایی ایجاد کد .NET را دارد.
<ref>{{cite web | url=http://www.silverfrost.com/11/ftn95_overview.aspx | title=FTN95: Fortran 95 for Windows|publisher=Silverfrost.com|accessdate=19 November 2014}}</ref>
===نمونه کد===
 
اطلاعات بیشتر در: {{details|Wikibooks:Fortran/Fortran examples}}
 
برنامه زیر تخصیص حافظه یحافظه‌ی پویا و عملیات روی آرایه هاآرایه‌ها را شرح می دهدمی‌دهد که دو قابلیت معرفی شده در فورترن 90 هستند. به طور خاص نبود حلقه هایحلقه‌های DO و دستورات IF/THEN برای تغییر دادن آرایه شایان ذکر است؛است که در عوض عملیات ریاضی روی کل آرایه به عنوان یک موجودیت اعمال می شودمی‌شود. بعلاوه، نامگذاری متغیرها به گونه ای که نام متغیرمتغیر، آن را توصیف کند، و قالب کلی کد که مطابق با شیوه برنامه نویسیبرنامه‌نویسی امروزی است نیز واضحآشکار است. این مثال، میانگین داده هاییداده‌هایی که در تعامل با کاربر از ورودی گرفته می شودمی‌شود را محاسبه می کندمی‌کند.
 
 
سطر ۶۳ ⟵ ۶۶:
real :: average_points=0., positive_average=0., negative_average=0.
 
! تعداد اعداد را از ورودی دریافت می‌کند و در متغیر number_of_points می ریزد
write (*,*) "Input number of points to average:"
read (*,*) number_of_points
 
! به تعداد number_of_points که ورودی گرفته، برای آرایه‌ی points عنصر داریم. پس برایشان حافظه تخصیص می‌دهد
allocate (points(number_of_points))
 
! خود اعداد را می‌گیرد و در آرایه‌ی points می‌ریزد
write (*,*) "Enter the points to average:"
read (*,*) points
 
! با بدست آوردن مجموع اعداد و تقسیم آن بر تعدادشان، میانگینشان را به دست می‌آورد
! Take the average by summing points and dividing by number_of_points
if (number_of_points > 0) average_points = sum(points) / number_of_points
 
! مجموع اعداد بزرگتر از صفر را پیدا می کند و تقسیم بر تعدادشان می‌کند که می شود میانگین اعداد مثبت
! Now form average over positive and negative points only
if (count(points > 0.) > 0) then
positive_average = sum(points, points > 0.) / count(points > 0.)
end if
 
! مجموع اعداد کوچکتر از صفر را پیدا می کند و تقسیم بر تعدادشان می‌کند که می شود میانگین اعداد منفی
if (count(points < 0.) > 0) then
negative_average = sum(points, points < 0.) / count(points < 0.)