چرا فرترن؟
با توجه به اینکه فرترن زبانی بسیار سریع میباشد، در بسیاری از نرم افزارهای مهندسی به عنوان زبان کد استفاده شده است. بسیاری از کدهای CFD بر اساس زبان قدرتمند فرترن نوشته شده اند. مطالعه کدها و همچنین توسعه دادن کدهای جدید مستلزم آشنایی با زبان برنامه نویسی فرترن می باشد. گرچه کدهای آماده ای که در متلب و سایر نرم افزارها ارائه شده اند، کار دانشجویان را برای توسعه کد راحت تر کرده اند، ویژگی ها و توابع موجود در متلب باعث عدم تسلط دانشجویان با روشهای عددی استفاده شده در کدهای پیشرفته میباشد، از این رو به دانشجویان بشدت توصیه می شود برای بهتر آموختن CFD و همچنین محاسبات عددی پیشرفته شروع به کد نویسی در زبان های مادر مانند فرترن و سی پلاس پلاس کنند. با همه این تفاسیر در دانشگاههای بزرگ دنیا برای آموزش دینامیک سیالات عددی و روشهای عددی پیشرفته از ترکیب همه زبانهای برنامه نویسی بالاخص فرترن ،سی پلاس پلاس ،متلب و پایتون استفاده میکنند.
چه افرادی به فرترن نیاز دارند؟
زبان برنامه نویسی فرترن علاوه بر CFD در دیگر علوم مانند هواشناسی، فیزیک، شیمی و مواردی که با داده های بسیار عظیم سر و کار دارند بسیار پرکاربرد است. دانشجویان مهندسی مکانیک به عنوان پیش زمینه در دروس محاسبات عددی و دینامیک سیالات محاسباتی (cfd) بایستی به زبان برنامه نویسی فرترن تسلط داشته باشند.
ویژگیهای این دوره؟
در اینجا در بخش اول از دوره آموزش دینامیک سیالات محاسباتی، زبان برنامه نویسی فرترن از مقدماتی تا پیشرفته ارائه خدمت شما عزیزان ارائه شده است. آموزش متمرکز بر یادگیری دانشجویان و همراه با مثال و کد میباشد. این آموزش در حدود بیست جلسه 50 دقیقه ای تهیه شده است و با دنبال کردن آن به مدت 20 روز میتوانید بیشتر مهارتهای مورد نیاز برای کدنویسی روشهای عددی را فرا بگیرید. در همین پست پس از معرفی سرفصلهای هر بخش یک سری تمرین برای بهبود مهارتهای شما فراهم دیده شده است. دانش خود را از طریق این تمرین ها به کمال برسانید. جلسه اول برای شما عزیزان رایگان است و میتوانید از فرمت آموزش دیدن بفرمایید.
نرم افزارهای مورد نیاز
نرم افزارهای مورد نیاز کامپایلر های معروف فرترن مانند simply fortran، intel- visula fortran, pgi visual fortran و یا ftn95 (plato-silverfrost) میباشد. شما با هرکدام که راخت تر هستید میتوانید از این آموزش استفاده نمایید با این حال در ویدئوها از simplyfortran استفاده شده و بهتر است برای این آموزش از این کامپایلر ساده و پرقدرت استفاده کنید. یک نسخه از این نرم افزار به همراه پلاتو در اینجا ارائه شده اند که میتوانید دانلود کرده و استفاده نمایید.
دوستانی که با لینوکس کار میکنند میتوانند پس از نصب کامپایلرهای مناسب از این آموزش استفاده کنند. در انتها یک در یک جلسه آموزش کدنویسی فرترن در لینوکس نیز اضافه میشود.
کامپایلر simplyfortran و silverfrost-ftn95 رو برای دانلود اضافه کردم
[purchase_link id=”122341″ style=”button” color=”blue” text=”برای خرید کلیک فرمایید”]
جلسه صفرم :
معرفی زبان فرترن و کامپایلر -رایگان
- معرفی زبان برنامه نویسی فرترن
- معرفی برخی کامپایلرهای فرترن
- نصب کامپایلر simplyfortran
- نوشتن و اجرای کد (سلام به شما)
- نوشتن و اجرای کد (پیشبینی تعداد مقالات)
جلسه اول برای شما عزیزان رایگان است و میتوانید از فرمت آموزش دیدن بفرمایید.
جلسه اول :
مفاهیم ضروری 1
- خلاصه جلسه اول
- مراحل اجرای یک کد ، نوشتن و اجرای کد (افزایش سرمایه)
- مفاهیم اساسی :مفهوم دستور (statement)، توضیح (comment)، تعریف کردن (declaration)، متغیر و نوع آن (variable and type)، دستورات اجرایی (execution statement)، مقداردهی (assingmrnt)، عبارت (expression)، دستورات ورودی و خروجی ساده (input output –IO)
- مفاهیم اساسی : اثر جای خالی و خط خالی در کدهای فرترن (space and blank line) ، مفهوم مکان حافظه (memory location) ، زبان ماشین
- ساختار کلی یک برنامه فرترن
- نکات مربوط به نوشتن دستورات (statement) تعداد کاراکترها در هر خط کد، استفاده از فضای خالی در دستورات (space)، کلمات کلیدی (keywords)، نوشتن یک دستور در چند خط (&)، چند دستور در یک خط (;)،
- متغیرها و انواع ذاتی آنها در فرترن
جلسه دوم :
مفاهیم ضروری 2
- خلاصه جلسه دوم
- قواعد نامگذاری در فرترن (names in fortran)
- متغیرها، تعریف و مقداردهی آنها در فرترن (variables and their declaration and assignment)، ثوابت (parameters) و مقداردهی حین تعریف کردن (::) و تابع data
- مفهوم implicit none
- کدنویسی حرکت یک پرتابه تحت شتاب جاذبه
- نکات شیوه برنامه نویسی (programming style)
- عملگرهای ریاضی در فرترن و اولویت اجرای آنها
جلسه سوم :
مفاهیم ضروری 3
- خلاصه جلسه سوم
- عملیات ریاضی ساده
- دستورات IO، (read و write و print و format و open)
جلسه چهارم :
مفاهیم ضروری 4
- خلاصه جلسه چهارم
- معرفی اجمالی حلقه تکرار (do loops)
- معرفی تابع (achari) و کارکردن با ASCII table
- استفاده از حلقه های تکرار برای محاسبه ریشه دوم اعداد با استفاده از روش نیوتن
جلسه پنجم :
مفاهیم ضروری 5
- خلاصه جلسه پنجم
- دستورات شرطی در فرترن
- نوشتن و اجرای کد با دستورات شرطی (قبول یا رد شدن دانشجویان)
- ساختار شرطی (if if struct) ، دستور( if if statemnt)و عملگرهای رابطهای (relational operand)
جلسه ششم :
مفاهیم ضروری 6
- خلاصه جلسه ششم
- متغیرهای مختلط
- معرفی توابع ذاتی (نوشتن و اجرای کد پرتابه)
- لیست توابع ذاتی فرترن
جلسه هفتم :
ساختارهای تصمیم گیری پیشرفته در فرترن
- خلاصه جلسه هفتم
- آنچه در بخش پیشرفته آموزش خواهید دید
- ساختار if پیشرفته
- مثالی از کاربرد ساختار if، elseif (نوشتن و اجرای کد ممان تیر)
- مثالی از ساختار پیشرفته if، (تکمیل نمرات دانشجویان)
- ساختار if تودرتو (nested if) + ترکیب if و do
- متغیرها وعملگرهای منطقی
- ساختار case و ساختار goto
جلسه هشتم :
ساختارهای تکرار پیشرفته 1 – تکرارهای معین
- خلاصه جلسه هشتم
- مفهوم تکرارهای معین (deterministic repeatition)
- محاسبه فاکتوریل، جملات دنباله و ترکیب احتمال دو عدد
- ساختار کلی do
- حلقه های تو در تو (nested do)
- محاسبه مبلغ ماهیانه وام در درصدها و زمان باز پرداخت مختلف
جلسه نهم :
ساختارهای تکرار پیشرفته 2 – تکرارهای نا معین
- خلاصه جلسه نهم
- معرفی تکرارهای نامشخص نوشتن و اجرای بازی حدس اعداد رندوم تولید شده
- خروج مشروط از حلقه تکرار do (conditional exit)
- ساختار do while
- الگوریتم تعیین اعداد اول
- نوشتن و اجرای کد محاسبه سینوس یک زاویه با استفاده از سریها
- نوشتن و اجرای کد خواندن تعداد نامشخصی از داده های یک فایل
جلسه دهم :
زیر برنامه ها – توابع
- خلاصه جلسه دهم
- چرایی استفاده از زیربرنامه ها، معرفی انواع آنها
- نوشتن و اجرای کد محاسبه ریشه یک معادله با استفاده از توابع
- عرفی main program تغییر مختصات با استفاده از توابع
- ساختار کلی یک تابع – چند ورودی و تنها یک خروجی
- آرگومانهای dummy
جلسه یازدهم :
زیر برنامه ها – سابروتین ها و ماژولها
- خلاصه جلسه یازدهم
- مفهوم سابروتین و تفاوت آن با تابع
- نوشتن و اجرای یک مثال با استفاده از سابروتین
- نوشتن و اجرای کد جابجایی اعداد با استفاده از سابروتین
- ساختار کلی main program
- برنامه خارجی (external program)
- ساخت فایل dll
- مفهوم ماژول
جلسه دوازدهم :
زیر برنامه ها – خواص آرگومانها
- خلاصه جلسه دوازدهم
- ویژگیهای آرگومانها
- خاصیت intent
- آرگومانهای اختیاری
- خاصیت overloading
- خاصیت recursion
- ساخت فایل dll
- مفهوم ماژول
جلسه سیزدهم :
آرایه ها 1
- خلاصه جلسه سیزدهم
- معرفی آرایه ها
- نوشتن و اجرای کد خواندن تعداد زیادی از داده ها و انجام عملیات بر روی آنها با استفاده از آرایه ها
- مفاهیم، rank، shape، extent، size، array constructor، lower bound و array elements و array declaration
- تعریف آرایه ها با استفاده از impled do
جلسه چهاردهم :
آرایه ها 2
- خلاصه جلسه سیزدهم
- مفهوم آرایه های دینامیک
- مثالی از آرایه های دینامیک
- مرتب کردن لیست با استفاده از آرایه ها
- سایر خواص آرایه ها
جلسه پانزدهم (ادامه جلسه چهاردهم):
آرایه ها 3
- ادامه جلسه چهاردهم
- مقدار دهی به آرایه استفاده از دستور DATA
- معرفی ساختار where
- نوشتن و اجرای کد خواندن تعداد زیادی از داده ها و انجام عملیات بر روی آنها با استفاده از آرایه ها
- مفاهیم، rank، shape، extent، size، array constructor، lower bound و array elements و array declaration
- تعریف آرایه ها با استفاده از impled do
جلسه شانزدهم :
کنترل ورودیها و خروجیها 1
- خلاصه جلسه پانزدهم
- معرفی دستور FORMAT
- شکل کلی دستور print و read
جلسه هفدهم :
کنترل ورودیها و خروجیها 2
- خلاصه جلسه شانزدهم
- چاپ و خواندن اعداد صحیح در هر مبنا (باینری و …)
- چاپ اعداد حقیقی (فرمت اعشاری؛ نمایی؛ مهندسی؛ علمی)
- چاپ اعداد مختلط، متغیرهای منطقی و کاراکتر ها
جلسه هجدهم :
کنترل ورودیها و خروجیها 3
- خلاصه جلسه هفدهم
- کنترل خروجی با استفاده از edit descriptorها (توصیف کننده ها)
- معرفی مشخص کننده ها (specifiers)
جلسه نوزدهم :
کنترل ورودیها و خروجیها 4
- خلاصه جلسه هجدهم
- فایلهای خارجی (external files)
- خواص دستور open و close
- فایلها با دسترسی مستقیم (direct access files)
- دستور inquire
- خاصیت non-advancing
جلسه بیستم :
کارکردن با کاراکترها
- خلاصه جلسه نوزدهم
- کار با کاراکترها
- مرتب کردن (sorting)
- رسم توابع بر روی ترمینال با استفاده از کاراکترها
- تعیین تعداد کلمات موجود در یک متن
- کار با زیر رشته ها
جلسه بیست و یکم :
تایپ های مشتق شده 1 (derived types)
- خلاصه جلسه بیستم
- تفاوت انواع داده های مشتق شده با 5 داده اصلی (ذاتی)
- تعریف یک تایپ مشتق شده؛ بیان کردن آن (declaration) و مقدار دهی با آن (assignments)
- کار کردن با یک نوع مشتق شده و مولفه های آن
جلسه بیست و دوم :
تایپ های مشتق شده 2 (derived types)
- خلاصه جلسه بیست و یکم
- مقداردهی مشتق شده (derived assignment)
- عملگر مشتق شده (derived operator)
جلسه بیست وسوم :
ساخت پایگاه داده در فرترن
- خلاصه جلسه بیست و دوم
- فرمت کامل یک نوع مشتق شده (derived data type)
- پایگاه داده در هشت مرحله با قابلیت تغییر رکورد و اضافه کردن
جلسه بیست و چهارم :
جستجو در داده ها و متغیرهای اشاره گر
- خلاصه جلسه بیست و سوم
- جستجوی خطی و دوتایی در بین داده ها
- مرتب کردن فایل بزرگی از داده ها با استفاده از مفهوم keyed files
- معرفی متغیرهای اشاره گر (pointers)
- خواص متغیرهای اشاره گر
جلسه بیست و پنجم :
تولید اعداد رندوم و کار با ماتریسها
- خلاصه جلسه بیست و چهارم
- تولید اعداد رندوم (استفاده از سابروتین clock و مفهوم seed)
- مفهوم random seed و دستورات get=seed و put=seed
- آرایه های دوبعدی (ماتریسها)
- ترتیب مؤلفه های آرایه های دوبعدی در فرترن
جلسه بیست وششم :
ماتریسها
- خلاصه جلسه بیست و پنجم
- عملکرد اپراتورهای ذاتی بر روی ماتریسها
- آموزش نحوه یافتن خطا در کد
- تعریف یک عملگر جدید برای ضرب ماتریسها
- معرفی یک سری توابع ذاتی ماتریسی
محمد غفور امیری
با اهدا سلام و احترام.
عرض ادب
آقای دکتر
1)بنده قسمت سئم رو هم دیدم.منها وقتی از دستور Format استفاده میکنم.به جای اینکه عدد رو بزنه،برام ،ستاره ****** چاپ میکنه.
2) عدد 10 که میزارین قبل دستور Format و توو آموزش میگین unit number هست،این عدد چیه؟
3)اگر 2 تا دستور format داشته باشیم ،باید عدد 20 رو قبلش بنویسیم؟
ممنون میشم بنده رو راهنمایی بفرمایین.
با تشکر
دکتر یاسر عباسی
سلام و وقت بخیر
۱) این اشکال چند دلیل میتونه داشته باشه. مثلا عددتون تعداد ستونهای بیشتری رو نیاز داره نسبت به دستور فرمت. یا نوع داده اتون با دستور فرمت همخوانی نداره
۲) ببینید در هنگام استفاده از دستورات write و print باید به مفسر گفته بشه که از کدوم فرمت استفاده کنه. این عدد نقش بین واسط دستورات print و write و فرمت مورد نظره.
۳) حتما نبایستی مضرب ده باشه و میتونه هر عدد طبیعی بین ۱ تا ۹۹ باشه.
۴) در جلسات آینده با مفهوم format بهتر آشنا خواهید شد.
محمد غفور امیری
با سلام مجدد
آقای دکتر ،قسمت 21 هم همینجوره
دکتر یاسر عباسی
با مدیریت هماهنگ کنید
محمد غفور امیری
با اهدا سلام و احترام
آقای دکتر بنده این مجموعه رو کامل خریدم.
ولی روی قسمت 18،رمز گذاشتن و نمیشه دید.
این درست نیست که پول رو میگیرن و روی مجموعه هم رمز میزارنو
لطفا پیگیری فرمایین
دکتر یاسر عباسی
سلام
اولا که رمز رو بهتون دادن
ثانیا بایستی با مدیریت وبسایت هماهنگ کنید
محمد غفور امیری
با اهداء سلام و احترام
آقای دکتر،بعضی وقتا ،برنامه رو که میخایم اجرا کنیم،پیام میده که اول برنامه رو save کین و سپس اجرا کنین.
ولی بنده برنامه رو save کرده بودم.
و هر کاری میکنم برنامه اجرا نمیشه و دائم همین پیغام رو میده.
بنده ناچارم که به فولدری که کدها رو اونجا ذخیره کردم برم و همه ی کد ها رو پاک کنم تا برنامه درست عمل کنه.
ممنون میشم بفرمایین که علت چیه و چه جوری درستش کنم؟
دکتر یاسر عباسی
یک بار ذخیره کردن پروژه هست و یکبار ذخیره کردن خود متن کدی که نوشتید، این مورد رو دقت بفرمایید. توی جلسه اول کامل توضیح داده شده است.
محمد غفور امیری
با اهداء سلام و احترام
آقای دکتر،بنده آموزشهای CFD در 14 جلسه رو هم نگاه میکنم،
جلسه ی پنجم رو نمیزارین؟
دکتر یاسر عباسی
جلسه ۵ و ۶ آماده شدن و فقط ضبط اونها مونده و در اسرع وقت هر دو رو اضافه میکنم
محمد غفور امیری
با اهداء سلام و احترام
میبخسد آقای دکتر.
بنده چند سال پیش یه اشتباه خیلی خیلی بزرگ کردم و لپ تاپ apple خریدم.
و الان بشدت پشیمونم. اون برنامه هاش اصلا بدرد ما نمیخوره و کارایی که میشه یا ویندوز انجام داد رو انجام نمیده.
نمونه ی خیلی ساده اش اینه که برنامه ی word اش ،فارسی رو ساپورت نمیکنه،
معذرت میخام اینجوری میگم::::::
کلا MacBook چیز بدرد نخوریه،برای بنده که تا حالا همینجوری بوده و تونستم فقط باهاش فیلم ببینم که البته زیرنویس فارسی رو هم توو فیلماش ساپورت نمیکنه.
سوال بنده اینه:::::
آیا برای مکینتاش ،برنامه فرترن وجود داره؟
و اگر هست شما دارین؟
و یا باید خریداری بشه؟
با تشکر
دکتر یاسر عباسی
سلام و وقت بخیر
با یه جستجوی ساده عبارت “دانلود فرترن برای مک” میتونید از همین وبسایتهای داخلی کامپایلر مورد نظر رو دانلود کنید و تقریبا 90% کامپایلر ها عملکردشون یکسانه و شبیه همین موردی هست که من تو آموزشها استفاده کردم.
حتی میتونید از کامپایلرهای آنلاین هم استفاده کنید.
در آخر استفاده از ویندوز مجازی روی مک هم یک راهکاره.
محمد غفور امیری
با اهداء سلام و احترام
آقای دکتر ،دیگه کد تخفیف نمیخوره که همه ی آموزش رو یه جا خریداری کنیم؟
دکتر یاسر عباسی
سلام مجدد
این مورد رو بایستی با مدیریت هماهنگ بفرمایید
محمد غفور امیری
با اهداء سلام و احترام
آقای دکتر ،چرا آموزش رو با مثال شروع کردین و آخر جلسه ی اول گفتین که خودمون کد بنویسیم؟
ممکنه بعضی از دوستان اصلا پیش زمینه نداشته باشن ،مثلا در مورد integer ها و یا real ها؟
ببینین مثلا خود بنده ،وقتی آخر جلسه اول رسیدم،و شما گفتین که یه کد بنویسیم،یه خورده حس کردم که امکان داره خوب و ساده و جامع آموزش نداده باشین و از جلسه ی بعد بگین که کد سنگین تری بنویسیم،
که هنوز آموزش نداده باشین،همونجوری که مثالای جلسه ی اول رو آموزش ندادین و فقط کپی کردین و اجرا
آخرش هم گفتین که خودمون کد بنویسیم.
ببینین اگه یکی ندونه integer چیه ؟
همون اول جا میزنه،بنده پیش زمینه ی خیلی کمی داشتم.
بهتر نبود که از اول این موارد رو آموزش میدادین؟
و آیا آموزش دادین؟
چون بنده همین الان هم فکر میکنم که ممکنه که کامل و ساده نباشه.
منظورم اینه دستورات سنگین تر رو اموزش دادین؟؟؟؟؟؟
ممنون میشم بنده رو راهنمایی بفرمایین.
با تشکر
دکتر یاسر عباسی
دوست عزیز، جلسه اول بیشتر در مورد این بود که شما با فضای نرم افزار کامپایلر، نحوه ساخت پروژه، نحوه ساخت فایل مربوط به فرترن و … و شکل کلی دستورات فرترن آشنا بشید (مفاهیمی مانند تعریف متغیر، مقدار دهی به متغیر و …) ، در جلسات آینده من به طور کامل در مورد انواع متغیرهای پرکاربرد در فرترن (integer, real, complex, logical , …) توضیح جامع داده ام و نهایتا روش تعریف نوع رو هم توضیح دادم (یعنی شما یک متغیر بسازید که از این 5 نوع اصلی نباشه). (الان خاطرم نیست جلسه چندم بود)
محمد غفور امیری
با اهدا سلام و احترام
آقای دکتر
اگر این آموزش رو کامل ببینیم،کد نویسی رو کاکلا یاد میگیریم،منظورم اینه که میشه مسائل درس cfd رو حل کرد ؟
دکتر یاسر عباسی
سلام، بله، تقریبا تمام مواردی که شما در کدنویسی بهش نیاز دارین تو این دوره ارائه شده، حتی برای کدنویسی یه سایر زبانها هم به شما دیده میده
نوید
سلام دکتر عباسی
نرم افزاری که روی سایت قرار دادید ابتدا که نصب میشه بدون مشکل اجرا میشه ولی بعد از یکبار خاموش و روشن کردن کامپیوتر ارور میده ممنون میشه راهنمایی کنید چیکار کنم
_
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
“”C:\Program Files (x86)\Simply Fortran\mingw\bin\gfortran.exe”” -O Proje
gfortran.exe: no input files; unwilling to write output files
Error (E42): Last command making (Project.exe) returned a bad status
Error (E02): Make execution terminated
* Complete *
دکتر یاسر عباسی
@نوید,
سلام
تا حالا به این مشکل بر نخوردم
کرکش رو اعمال کردید؟