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

محتوای حذف‌شده محتوای افزوده‌شده
Esi Gonzalez (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۱:
گونه‌های مختلف:
عرضه‌کنندگان کامپیوترهای علمی عملکرد بالا(مثال: باروز، شرکت داده‌های کنترل (CDC)، Cray، هانی‌ول، IBM، Texas Instruments، و UNIVAC) افزونه‌های فورترن را اضافه کردند تا از قابلیت های سخت افزاری مانند حافظه نهان دستور، خط لوله های CPU، و آرایه های برداری بهره ببرند. برای مثال، یکی از کامپایلرهای فورترن شرکت IBM، سطحی از بهینه سازی را داشت که ترتیب دستورات را عوض می کرد تا واحدهای محاسباتی داخلی مختلف را همزمان مشغول نگه دارد.
یک مثال دیگر CFD است، یک گونه ی خاص از فورترن که مخصوص ابرکامپیوتر ILLIAC I ساخته شده است. این کامپیوتر در مرکز تحقیقاتی آمس متعلق به ناسا قرار دارد.هم چنین آزمایشگاه های تحقیقاتی IBM، یک نسخه ی توسعه یافته از یک زبان مبتنی بر فورترن به نام VECTRAN را برای پردازش بردارها و ماتریس‌ها ایجاد کردند.
فورترن شیءگرا یک افزونه شیءگرا از فورترن بود که در آن می توانستیم داده ها را در اشیاء مختلف گروه بندی کنیم. نمونه های اشیاء می توانستند به صورت موازی با یکدیگر ساخته شوند و توابعشان را اجرا کنند. فورترن شیءگرا برای Sun، Iris، iPSC و NCUBE موجود بود، اما الان دیگر پیشتیبانی نمی شود.
افزونه های این چنینی که مختص یک یا چند ماشینند یا در طول زمان از بین رفتند، یا عناصری از آنها در استانداردهای اصلی گنجانده شد. مهم ترین افزونه ی باقی مانده OpenMP است که یک افزونه ی چند‌پلتفرمه برای برنامه نویسی با حافظه ی مشترک است. Coarray Fortranیک افزونه جدید است که برای پشتیبانی برنامه نویسی موازی در نظر گرفته شده.
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 ناسازگار باشد.
 
دستورات مجاز این ها بودند:
برای استفاده از سرویس پرینت ابتدا باید سرویس‌دهنده CUPS را به لیست سرویس‌دهنده‌ها اضافه کنیم که این کار را با پر کردن فرم مربوط به تنظیمات سرویس‌دهنده انجام می‌دهیم. پارامترهایی که این فرم به آن نیاز دارد آدرس سرور CUPS (هاست و پورت) است. بعد از آن برای استفاده از آن به عنوان سرویس در فرآیند یک سرویس جدید ایجاد می‌کنیم و در فرم تنظیمات ‌آن در لیست کشویی سرویس دهنده‌ها سرویس‌دهنده‌ی CUPS را انتخاب می‌کنیم. این سرویس‌دهنده سه نوع خدمت ارائه می‌کند: گرفتن وضعیت عمل پرینت، مشاهده لیست پرینترها و پرینت کردن فایل
(بذارش اینجا)
در هر برنامه استفاده از حداکثر 10 زیرروال(subroutine) ممکن بود.
دستورات FOR TRANSIT به ستون 7 تا 56 کارت پانچ محدود می شدند.پانچ کارت ها به عنوان ورودی و خروجی IBM 650 استفاده می شدند. سه بار عبور لازم بود تا کد منبع به زبان "IT" ترجمه شود، و بعد دستورات IT کامپایل شده و به زبان اسمبلی SOAP ترجمه شود، و نهایتا برنامه به زبان مقصد (زبان ماشین) تولید شود، بعد می توان آن را درون ماشین بارگذاری کرد تا برنامه را اجرا کند (برای داده ورودی از پانچ کارت استفاده می شود، نتیجه را هم روی پانچ کارت خروجی می دهد)
 
زبانهای مبتنی بر فورترن:
== پرینت کردن فایل ==
قبل از فورترن 77، به طور معمول تعدادی پیش-پردازنده (preprocessor) برای میسر ساختن یک زبان مناسب تر مورد استفاده قرار می گرفتند، با این مزیت که کد پیش پردازش شده می توانست روی هر ماشینی که یک کامپایلر استاندارد فورترن داشت کامپایل شود. این پیش پردازنده ها معمولا از برنامه نویسی ساختاریافته، اسامی با طول بیش از 6 کاراکتر برای متغیرها، نوع داده‌های (data type) اضافه، کامپایل شرطی برنامه، و حتی قابلیت های ماکرو (macro) پشتیبانی می کردند. پیش پردازنده های متداول شامل FLECS, iftran MORTRAN, SFtran, S-Fortran, Ratfor و Ratfiv می شدند. برای مثال، Ratfor و Ratfiv یک زبان شبیه C پیاده سازی می کردند و کد پیش پردازش شده را به زبان فورترن 66 خروجی می دادند. علی رغم پیشرفت ها در زبان فورترن، پیش پردازنده ها هم چنان برای کامپایل شرطی برنامه ها و جایگزینی ماکروها مورد استفاده قرار می گیرند.
 
یکی از افزونه های فورترن که برای پشتیبانی برنامه نویسی سیستم ها عرضه شد، زبان LRLTRAN در آزمایشگاه ملی لارنس برکلی (Lawrence Radiation Laboratory) و با هدف پشتیبانی از محاسبات برداری و ذخیره سازی پویا ایجاد شد. این توزیع، سیستم عامل LTSS را شامل می شد.
پارامترهای ورودی:
بسیاری از کامپایلرهای فورترن، بخش هایی از پیش پردازنده ی C را در خود ادغام کرده اند. SIMSCRIPT یک پیش پردازنده ی فورترن مخصوص کاربردهای خاص برای مدلسازی و شبیه سازی سیستم های گسسته‌ی (Discrete System) بزرگ است.
* file: فایلی که قرار است پرینت شود.
زبان برنامه نویسی F طراحی شد تا زیرمجموعه مرتبی از فورترن 95 باشد که هدفش حذف کردن قابلیت های زائد، بدون ساختار و منسوخ شده ی فورترن، مثل دستور EQUIVALENCE بود. F قابلیت های آرایه را که در فورترن 90 اضافه شده بود حفظ می کند و دستورات کنترلی ای که توسط مفاهیم برنامه نویسی ساختاریافته (Structured Programming) منسوخ شده بودند را حذف می کند. این دستورات هم به فورترن 77 اضافه شده بودند هم به فورترن 90. سازندگان زبان F آن را "یک زبان برنامه نویسی کامپایل شده و ساختاریافته برای آرایه ها توصیف کردند که "خصوصا برای آموزش و محاسبات علمی مناسب است".
* duplex: پرینت به صورت دورو انجام شود یا نه.
لاهی (Lahey) و فوجیتسو (Fujitsu) تیم مشترک تشکیل دادند تا یک زبان فورترن برای فریم‌ورک .NET مایکروسافت خلق کنند. زبان Seilverfrost FTN95 هم توانایی ایجاد کد .NET را دارد.
* printerId:نام پرینتری که می‌خواهیم فایل را پرینت کند. این همان نام ثبت شده پرینتر روی سرور ‌CUPS است.اگر در قسمت قبل duplex را true انتخاب کرده باشیم فقط لیست پرینترهایی که می‌توانند دورو چاپ کنند را در لیست گزینه‌ها خواهیم داشت.
نمونه کد:
* copies: تعداد پرینت‌های خواسته‌شده از فایل
اطلاعات بیشتر در: Wikibooks:Fortran/Fortran examples
* ‌page format: قالب چاپ روی صفحه را انتخاب می‌کند. مثال:‌iso_a4_210x297mm، custom_max_79.73x2000.25mm و غیره. گزینه‌‌‌‌‌‌‌‌‌‌‌‌‌‌های این قسمت با توجه به پرینتری که انتخاب می شود ارائه می‌شوند. اینکه چه فرمتی برای پرینت مناسب‌تر است علاوه بر نوع فایل به ابعاد کاغذ مورداستفاده آن پرینتر هم بستگی دارد.
برنامه زیر تخصیص حافظه ی پویا و عملیات روی آرایه ها را شرح می دهد که دو قابلیت معرفی شده در فورترن 90 هستند. به طور خاص نبود حلقه های DO و دستورات IF/THEN برای تغییر دادن آرایه شایان ذکر است؛ عملیات ریاضی روی کل آرایه به عنوان یک موجودیت اعمال می شود. بعلاوه، نامگذاری متغیرها به گونه ای که نام متغیر آن را توصیف کند، و قالب کلی کد که مطابق با شیوه برنامه نویسی امروزی است نیز واضح است. این مثال، میانگین داده هایی که در تعامل با کاربر از ورودی گرفته می شود را محاسبه می کند.
* start page و ‌end page: برای فایل‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌های‌ صفحه‌بندی شده مثل ‌pdf، می توان بازه صفحاتی که می‌خواهیم از آن پرینت گرفته شود مشخص کنیم. اگر start page را خالی بگذاریم از صفحه اول پرینت می‌شود. مشابها اگر end page را خالی بگذاریم تا صفحه آخر پرینت می شود.
 
ورودی‌های این سرویس را می توان در فرم مربوط به service task یا فرم مربوط به user task وارد کرد.
 
در ایجاد فرم user task باید متغیرهای ورودی لازم برای فیلدهای چندمقداری (printerId و pageFormat) را از دیگر فیلدهای ورودی فرم بگیریم. یعنی اول فیلد دومقداری duplex را تعریف می‌کنیم، بعد فیلد printerId را تعریف می‌کنیم و در ایجاد این فیلد، فیلد duplex را به عنوان پارامتر ورودی فیلد وارد می‌کنیم. بعد فیلد pageFormat را تعریف می‌کنیم و هنگام ایجاد آن فیلدهای duplex و printerId را به عنوان پارامتر ورودی به آن می‌دهیم.
 
در ایجاد فرم service task میتوانید در بخش ورودی ها با زدن بر روی گزینه ی "< >" یک متغیر فرایند را به ورودی بدهید. برای فیلدهایی که نوع داده آنها string است این کار با زدن ctrl+space ممکن است.
 
پارامترهای خروجی
* job ID: شناسه عمل پرینت. می توانیم بعدا یک سرویس "گرفتن وضعیت عمل پرینت" تعریف کنیم و این شناسه را به عنوان پارامتر ورودی به آن بدهیم و وضعیت پرینت فایل (completed, pending, ...) را پیگیری کنیم.
<!--
[[تصویر:مثال.jpg|قاب|وسط|]]
 
[[File:مثال.jpg|thumb|center|height = 300|width = 400|شکل ۱: ورودی‌های فرم service task]]
 
[[File:مثال.jpg|thumb|center|height = 300|width = 400|شکل ۱: ورودی‌های فرم user task]]
-->
 
<img>
{{multiple image
| height = 100
| width = 600
| footer = شکل ۱: ورودی‌های فرم
| image1 = مثال.jpg
| alt1 = ورودی‌های فرم service task
| caption1 = ورودی‌های فرم service task
| image2 = مثال.jpg
| alt2 = ورودی‌های فرم user task
| caption2 = ورودی‌های فرم user task
}}
</img>
 
== گرفتن وضعیت عمل پرینت ==
 
برای پیگیری عمل پرینتی که قبلا انجام شده به وسیله شناسه پرینتی که پس از اجرای فرایند پرینت به عنوان خروجی نمایش داده می‌شود مورد استفاده قرار می‌گیرد.
 
پارامترهای ورودی:
* job ID: شناسه عمل پرینت
 
پارامترهای خروجی:
* jobUrl: آدرس مشخصات پرینت در سایت CUPS
* printerName: نام پرینتری که پرینت را انجام می دهد.
* jobId: همان شناسه است که ورودی سرویس است.
* jobState: وضعیت پرینت (completed, processing, pending, cancelled, ...)
* jobName: به طور پیش فرض پرینت‌ها یا نام ندارند (null) یا اینکه نام پیش‌فرض ("untitled") را دارند.
* userName: کاربری که دستور انجام فرایند پرینت را داده.
* jobCreateTime: زمانی که دستور پرینت به پرینتر مقصد رسیده.
* jobCompleteTime: زمانی که پرینت تمام/لغو شده.
* pagesPrinted: تعداد صفحات پرینت شده (؟)
* size: حجم محتوای پرینت شده به کیلوبایت.
 
== مشاهده لیست پرینترها ==
 
پارامترهای ورودی:
* duplex: فقط لیست پرینترهایی که می‌توانند دورو چاپ کنند را نشان بدهد یا نه.
* colored: فقط لیست پرینترهایی که رنگی پرینت می‌کنند را نشان بدهد یا نه.
 
پارامترهای خروجی:
* Result: لیست نام پرینترهایی که شرایط مشخص شده در پارامترهای ورودی را دارند.
 
:[[کاربر:Esi Gonzalez|Esi Gonzalez]] ([[بحث کاربر:Esi Gonzalez|بحث]]) ‏۱۱ سپتامبر ۲۰۱۹، ساعت ۰۸:۵۴ (UTC)