![]() |
|
|
|
|
امروز ... |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
قالب بندي ( فرمت ) بخش عظيمي از برنامه نويسي به خواندن و چاپ اطلاعات اختصاص دارد . بنابراين اين مهم ايجاب مي کند تا بتوان خواندن و نوشتن را سفارشي کرد به عبارت ساده تر بتوان حالات خاصي را به اين دو دستور داد از جمله اين حالات مي توان به اختصاص ميدانها و قالب بندي صفحه اشاره کرد . به عنوان مثال مي توان به گونه اي برنامه نوشت که عمل چاپ اطلاعات از سطر چهام شروع شود و يا در خواندن اطلاعات 5 حرف اول ناديده فرض شود . قبل از توضيح ميدانها بياييم ميدان را تعريف کنيم . برنامه هاي فرترن در کنسول غير گرافيکي اجرا ميشود يا به عبارت ديگر در محيط DOS ، ابتدا صفحه داس را تقسيم بندي مي کنيم . مي دانيم صفحه مشکي رنگي که در زمان اجراي برنامه ظاهر مي شود ( صفحه DOS ) از نقاط نوراني به نام pixel تشکيل شده است . مجموع تعدادي از اين پيکسل ها براي نمايش يک کاراکتر استفاده مي شود در هر يک از اين مجموعه ها تنها يک حرف نمايش داده مي شود . حال اگر تعدادي از اين مجموعه ي پيکسل ها کنار يکديگر قرار گيرند تا بتوان تعداد زيادي حرف را نمايش داد يک ميدان را تشکيل مي دهند البته اين جايگاه ها همگي داراي خصوصيت مشترک هستند مثلا همگي از نوع صحيح و يا همگي از نوع رشته اي هستند . اکنون که با ميدان ها آشنا شديم ، ببينيم چگونه مي توان اين ميدانها را اعمال کرد . اگر به خاطر داشته باشيد در مبحث خواندن و نوشتن ، ويژگي با نام قالب به طور مختصر توضيح داده شد . دستور زير را در نظر بگيريد : Read (*,*) A اين دستور متغير A را از صفحه کليد با قالب آزاد ( بدون محدوديت ) مي خواند . حال اگر بخواهيم يک قالب را بر اين متغير اعمال کنيم به يکي از دو روش زير عمل مي کنيم : Read ( *,1) A 1 Format ( F6.2) يا Read (*,”(F6.2)”)A چنانچه مي بينيد در قسمت FMT بايد يک شماره label اختصاص داد که در خطي که حاوي اين شماره است بلافاصله دستور Format قرار دارد و يا مي توان به طور مستقيم ميدان را در داخل يک پرانتز و گيومه قرار داد . دستور Format دستور اجرايي نيست يعني تا زماني که به اين دستور پرش داده نشود اجرا نخواهد شد پس لزومي ندارد که دستور فرمت در خط بعد از خواندن و يا نوشتن بيايد مي توان آن را در هر قسمت از بدنه اصلي برنامه قرار داد . اکنون بايد تمامي ميدان ها را شناخت ( در مثال هاي ذکر شده در پايين منظور از همان Space است که در حين اجراي برنامه نمايش داده نمي شود ) - ميدان I اين ميدان به صورت زير تعريف مي شود : ] حداقل طول ميدان . [ طول ميدان I طول ميدان تعداد جايگاه هاي ذکر شده در بالاست و حداقل طول ميدان ، حداقل تعداد ارقام نمايش داده شده در ميدان است . چنانچه طول عدد از طول ميدان بيشتر باشد ، به اندازه طول ميدان ستاره چاپ خواهد شد و اگر طول عدد از طول ميدان کمتر باشد از ميدان از سمت راست پر مي شود .
- ميدان مبنا ها B, O, Z در اين ميدان ها ابتدا عدد را به مبناي مورد نظر برده و سپس مانند ميدان I عمل کنيد . ميدان B عدد را به مبناي دو برده و O عدد را به مبناي 8 برده و Z عدد را به 16 مي برد .
اکنون برنامه اي بنويسيد که دو عدد را گرفته و عدد اول را در مبناي عدد دوم که يکي از سه عدد 2 يا 8 يا 16 است نمايش دهد : Read *,N,IBase Select case (IBase) Case (2) Print “(B0)”,N Case (8) Print “(O0)”,N Case (16) Print “(Z0)”,N End select End همانگونه که مي بينيد طول ميدان صفر در نظر گرفته شده است و موجب مي شود که طول ميدان به اندازه خود خروجي باشد . - ميدان F اين ميدان در حالت کلي به صورت زير است: تعداد رقم اعشار . طول کلي ميدان F براي محاسبه خروجي اين ميدان کافيست که ابتدا به اندازه طول کلي ميدان جايگاه در نظر گرفته شود سپس از سمت راست به اندازه تعداد رقم اعشار جايگاه خالي گذاشته شود در جايگاه بعد مميز قرار داده مي شود و بقيه جايگاه ها در سمت چپ ميدان به قسمت صحيح اختصاص داده مي شود . حال چنانچه نتوانيد ميدان را بسازيد در لحظه اجرا با پيغام خطا مواجه خواهيد شد . آنچه در مورد اين ميدان مهم است آنکه طول قسمت صحيح عدد بايد بتواند به طور کامل در قسمت صحيح ميدان قرار گيرد در غير اينصورت به تعداد طول کلي ميدان ستاره چاپ خواهد شد و اگر طول قسمت اعشاري ميدان کمتر از طول قسمت اعشاري عدد باشد تعدادي از رقمهاي اعشار که در آن قسمت مي توانند قرار گيرند با گرد کردن چاپ مي شوند . براي فهم بهتر مطلب به مثالهاي زير توجه کنيد :
- ميدان نماد علمي اين ميدان به وسيله سه مشخصه E ، EN ، ES تعيين مي شود . حالت کلي E به صورت زير است . دو ميدان بعد نيز به همين صورت تعيين مي شوند . ] طول توان E [ طول قسمت اعشاري . طول کلي ميدان E در هر سه اين ميدانها ابتدا ابتدا به اندازه طول کلي ميدان جايگاه قرار دهيد سپس از سمت راست شروع کرده و به اندازه طول توان جايگاه براي توان جدا کنيد ( چنانچه طول توان نوشته نشده باشد آنرا 2 در نظر بگيريد ) سپس يک جايگاه را به علامت مثبت يا منفي اختصاص دهيد ، جايگاه بعدي را براي حرف E در نظر بگيريد توجه کنيد که اگر در فرمت e نوشته شده باشد شما نيز بايد از حرف کوچک آن استفاده کنيد و اگر نوشته نشده باشد منظور همان E است . بعد از اين مرحله به اندازه طول قسمت اعشار جدا کرده و جايگاه بعدي را به مميز اختصاص دهيد . بقيه جايگاه ها در سمت راست براي قسمت صحيح باقي مي ماند . چنانچه نتوانيد اين ميدان را توليد کنيد در حين اجرا با پيغام خطاي مبني بر اشتباه بودن ميدان مواجه خواهيد شد . حال بايد عدد را در ميدان قرار دهيم از سمت چپ عدد شروع کرده و تمامي صفرهاي موجود در سمت چپ را ناديده مي گيريم سپس در مورد ميدان ٍE عدد بدست آمده را بعد مميز مي نويسيم و در صورتي که کل عدد در قسمت اعشاري جا نشود آنرا گرد مي کنيم . در مورد ميدان EN سه رقم عدد بدست آمده را سمت چپ مميز و بقيه را در سمت راست مميز قرار مي دهيم . در مورد ميدان ES يک رقم را در سمت چپ و بقيه را در سمت راست مي نويسيم . بايد توجه کرد که در صورت جا نشدن عدد بايد آنرا گرد کرد . حال نوبت به محاسبه قسمت توان مي رسد . با محاسبه ميزان کوچک شدن عدد توان مناسبي را اختيار مي کنيم . ممکن است عدد در اين ميدان کاملا تغيير کند .اگر عدد مورد نظر منفي بود يک جايگاه در سمت چپ به منفي تعلق مي گيرد . چنانچه يکي از قسمتهاي بالا قابل اجرا نباشد به اندازه طول کلي ميدان ستاره چاپ خواهد شد . اکنون به مثالهاي زير توجه کنيد :
- ميدان L اين ميدان به صورت زير تعريف مي شود : طول کلي ميدان L اين ميدان بسيار ساده بوده و با ايجاد جايگاه ها در آخرين جايگاه يکي از دو کلمه F يا T را قرار مي دهد .در ميدان L3 مقدار .True. به صورت T چاپ مي شود .
- ميدان رشته اي A اين ميدان براي قرار دادن متن استفاده مي شود : طول کلي ميدان A چنانچه ميدان براي متن مورد نظر بزرگ باشد از سمت راست ميدان پر مي شود و در سمت چپ جاهاي خالي باقي مي گذارد و در غير اينصورت از سمت راست متن به اندازه طول ميدان چاپ خواهد شد . اگر طول ميدان نوشته نشود ، طول آن به اندازه طول متن خواهد بود .
اکنون که اين ميدان ها را شناختيم مي توانيم صفحه DOS را به ميدانهاي مختلف براي کنترل بيشتر تقسيم کنيم اما براي جابجايي و تنظيم ميدان ها تعدادي دستور تحت عنوان کنترل قالب وجود دارد که در زير به آنها اشاره مي کنيم .
براي آگاهي کامل از نحوه اعمال اين فرمت ها به ضميمه مراجعه کنيد .
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
قوانین حقوق مولفان 2008 ،
گروه نرم افزاری سی سی
،شرایط و ضوابط سایت را مطالعه نمایید |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||