داروهاي ضد اضطراب نخوريد

به گفته دانشمندان ، داروهاي ضد تشويش و اضطراب از قبيل واليوم و زاناكس مي‌توانند مانند هرويين در فرد ايجاد اعتياد كنند.

به گزارش ايسنا، دوپامين فعال نيز جزو داروهايي است كه مصرف مكرر آن به اعتياد منجر مي‌شود. دانشمندان معتقدند به‌كمك اين يافته مي‌توان داروهاي بهتري درست كرد كه هيچ‌گونه اعتيادي به دنبال نداشته باشد.

تلاش‌هاي پيشين براي ساخت داروهاي ضد تشويش و اضطراب به گونه‌اي كه اعتيادآور نباشند، موفقيت‌آم

آواز خروس از گلوي كودكان

گاهي كودكان به دنبال سرماخوردگي دچار حمله شديد و مشكل تنفسي مي‌شوند كه در اصطلاح به آن خروسك مي‌گويند كه اين بيماري بر اثر التهاب ناي و حنجره ايجاد مي‌شود.

دكتر بيتا نجفيان، متخصص بيماري‌هاي كودكان و فوق تخصص نوزادان در تعريف اين بيماري در گفتگو با «جام‌جم»، به عفونت و التهاب ناحيه گلوتيك و ساب گلوتيك (پاييني گلو)‌ خروسك (Group) مي‌گويد.

به گفته وي، سن شايع اين بيماري از 6 ماهگي تا 3 سالگي بوده و در فصول سرد و در پسران شايع‌تر است و تقريبا عامل تمامي موارد بيماري، ويروس است.

بيماري در ابتدا شبيه يك سرماخوردگي معمولي آغاز و بتدريج پس از يك تا 2 روز علائم اصلي به صورت سرفه، خشونت صدا و استريدور (خرخر شديد)‌ ظاهر مي‌شود.

طبق گفته دكتر نجفيان، سرفه‌ها خشك و پشت‌سر هم بوده و صدايي شبيه فوك يا آخر صداي خروس است كه بر حسب شدت بيماري ممكن است به صورت تندي تنفس، زجر تنفسي، كبودي و بالاخره نارسايي تنفسي هم بروز كند.

اين فوق تخصص نوزادان با اشاره به اين كه معمولا در خروسك، شدت تب خفيف است و بندرت به بيش از 39 درجه مي‌رسد، اذعان مي‌كند: بيماري 3 تا 7 روز طول مي‌كشد و در روزهاي دوم و سوم به شدت بيماري افزوده مي‌شود.

دكتر نجفيان مي‌گويد: از مشخصات بيماري تندي تنفس (بيش از 40 بار در دقيقه)‌، آبريزش از دهان، سختي بلع و تب بالاست كه در شب تشديد‌مي‌شود.

گفته مي‌شود سوار شدن عفونت باكتريال در اين بيماري نادر است و در چنين وضعي به شكل اوتيت يا التهاب گوش مياني بروز مي‌كند.

تشخيص بيماري

اصولا تشخيص خروسك از سوي پزشك و با علائم باليني است كه در صورت شك، پزشك مي‌تواند راديوگرافي رخ و نيمرخ گردن را درخواست كند تا نماي باريك شدن (ناي)‌ را ملاحظه كند.

وي خاطرنشان مي‌كند: نبود اين علامات دليل بر رد بيماري نيست و در آزمايش خون افزايش گلبول‌هاي سفيد از نوع لنفوسيت ديده مي‌شود.

نحوه درمان

دكتر نجفيان با اشاره به اين كه خروسك (لروپ)‌ يك عفونت ويروسي است و درمان آن نگهدارنده و محافظتي تا پايان دوره بيماري است، مي‌افزايد: بيشتر بيماران را مي‌توان به صورت سرپايي يا با چند ساعت تحت نظر بودن آنها در اورژانس درمان كرد.

وي اصول درمان سرپايي خروسك را شامل استراحت، مصرف مايعات و بخور مي‌داند و ابراز مي‌كند: خانواده‌ها بايد توجه داشته باشند كه در صورت بروز علائمي همچون آبريزش از دهان، كبود شدن لب، بيقراري، تند شدن تنفس و اضطراب در كودك سريعا وي را به پزشك برسانند.

پيشگيري، قبل از درمان

شستن مكرر دست و تماس نگرفتن با افرادي كه دچار عفونت‌هاي تنفسي هستند، از راه‌هاي پيشگيري از خروسك است.

اين فوق‌تخصص نوزادان درباره بيماري در كودكان شيرخوار مي‌گويد: بهتر است تا هر زماني كه كودك قادر به گرفتن سينه مادر است، به او شير داده ‌شود و نبايد كسي در اطراف او سيگار بكشد.

دكتر نجفيان تصريح مي‌كند: بايد پيش از تجويز هر دارويي (حتي شربت سرماخوردگي)‌ به كودك، با پزشك اطفال مشورت شود و وي را از مكان‌هاي پرجمعيت و تماس با افراد بيمار دور نگه داشت.

نكته كليدي

يكي از نكات مهمي كه در درمان سرپايي و بستري كودك حائز اهميت است، حضور مادر بر بالين كودك است كه مي‌تواند بسيار كمك‌كننده باشد، زيرا آغوش مادر، بهترين بستر براي كودك بيمار است

عوارض زخم‌ها و قطع اندام

هفته پيش درباره زخم‌ها و طرز برخورد با آنها مطالبي گفته شد اما زخم‌ها با عوارض و شرايطي مي‌تواند همراه باشد كه دانستن آنها مفيد است. در اين نوشتار به اين عوارض اشاره مي‌كنيم.

عفونت زخم

نشانه‌ها عموما در حين تعويض پانسمان يا در حين كشيدن بخيه‌ها خود را نشان مي‌دهد. خروج چرك و يا تجمع مايع سفيد رنگ در محل بخيه‌ها از علائم رايج است.

عفونت مي‌تواند جوش‌خوردگي زخم را به تاخير بيندازد. به‌همين منظور عموما توصيه به ويزيت مجدد محل بخيه پس از 1 تا 2‌روز و در حين كشيدن بخيه‌ها مي‌شود. اگر زخم حاوي مواد خارجي (خاك، براده آهن، آسفالت) باشد بايد با آب فراوان شستشو داد. براي زدودن آلودگي نبايد زخم را تراشيد؛ شستشو به تنهايي كفايت مي‌كند.

شستشو از زمان بروز حادثه تا ترميم زخم مقدور است، استثنا در مورد زخم ناشي از سوختگي با مواد اسيدي و قليايي است. در اين گونه موارد ابتدا با حجم فراواني از آب، زخم بيمار را بشوييد و سپس اقدام به انتقال بيمار نماييد.

عدم جوش خوردگي

بسته به بيماري‌هاي زمينه‌اي، عفونت يا قرار نگرفتن لبه‌هاي زخم در كنار هم ممكن است جوش خوردگي با تاخير صورت بگيرد. درمان علت مسبب اغلب كفايت مي‌كند هرچند گاهي علل مولد چنان در ترميم اثرگذار مي‌شود كه براي بهبود نياز به اقدامات درماني خاص مي‌باشد.

پارگي شريان

يكي از عوارض ناتوان كننده بريدگي‌ها، پارگي شريان مي‌باشد. در پارگي شريان مهم‌ترين اصل بندآوردن خونريزي است. اما بعد از كنترل خونريزي بايد بيمار از نظر نياز به ترميم شريان بررسي شود. اگر شريان قطع شده رگ اصلي خون‌رسان باشد، بايد ترميم گردد.

پارگي وريد

عموما خونريزي وريد خفيف بوده و براحتي قابل كنترل است. از طرفي معمولا خون توسط بيش از يك وريد از اندام‌ها تخليه مي‌گردد. همين اصل باعث مي‌شود كه ترميم وريد معمولا انجام نشود.

پارگي تاندون

تاندون كه همان بخش انتهايي عضله را تشكيل مي‌دهد اتصال دهنده عضله به استخوان است. قطع تاندون، معادل از دست رفتن عملكرد عضله است. بسته به تاندون قطع شده، ميزان آسيب وارده روند ترميم متغير است. اغلب نياز به ترميم در اتاق عمل مي‌باشد.

انتقال اندام قطع شده

در بسياري از حوادث بخشي يا تمام يك اندام قطع مي‌شود. قطع عضو مي‌تواند اثر مخربي برعملكرد فيزيكي، شغلي و رواني فرد به‌جا بگذارد.زماني كه با اين گونه حوادث روبه‌رو مي‌شويد بايد بخش قطع شده را با پارچه‌اي مرطوب و تميز پوشاند، سپس آن را درون كيسه‌اي پلاستيكي كه نسبت به آب نفوذناپذير است قرار داد. كيسه پلاستيكي را درون ظرفي محتوي آب و يخ قرار دهيد و آ ن را جهت بررسي احتمال انجام پيوند به مراكز درماني انجام دهنده پيوند اعضا بفرستيد.

خوراکي براي شادابي پوست

براى برخوردارى از يك پوست زيبا و سالم به دنبال كرم ها و ماسك هاى مختلف نباشيد و پولتان را بيش از اين هدر ندهيد.به ماسك هاى طبيعى متوسل شويد و كمى رژيم غذايى تان را تغيير بدهيد تا به پوستى صاف و شفاف دست پيدا كنيد.از آنجا كه سرما به دليل ايجاد خشكى در پوست رابطه مستقيمى با چروك و پيرى زودرس دارد،در اين فصل بيشتر به پوستتان رسيدگى كنيد. معناى رسيدگى هم اين نيست كه به فروشگاه هاى عرضه محصولات آرايشى و بهداشتى برويد و هرچه در جيبتان است بدهيد و يك كرم ضد چروك خريدارى كنيد.اگر مى خواهيد پوست خوبى داشته باشيد،اجازه ندهيد كه هيچ گاه پوستتان خشك شود.بهترين وسيله براى چرب نگه داشتن پوست، روغن زيتون است.مصرف روغن زيتون در وعده هاى غذايى به ويژه سالاد و استعمال آن به صورت يك امولسيون طبيعى به دليل خاصيت آنتى اكسيدانى و دارا بودن ويتامين هاى A ، E ، K و C مى تواند از خشكى و زبرى پوست كه زمينه ساز چروك و پيرى زودرس است، جلوگيرى كند و به پوست شادابى و طراوت بخشد. علاوه بر روغن زيتون،عسل،زرده تخم مرغ،آب ليمو و بابونه نيز قادرند همانند يك ماسك محافظتى، پوست را در برابر انواع آسيب ها محفوظ نگه دارند. براى جلوگيرى از چروك پوست،عسل و زرده تخم مرغ را مخلوط کنيد و به صورت خود بماليد. البته اگر پوستتان چرب است اين دو ماده را به صورت جداگانه استفاده نمائيد.براى از بين بردن التهابات پوستى از بخور بابونه استفاده كنيد يا بابونه را آسياب كنيد و به همراه مقدارى آب به صورتتان به ويژه،جاى جوش ها بماليد. اگر هم پوستتان حساس است و با كوچكترين تغيير مثلاً وزش باد ِسرد دچار خشكى مى شود از آب ليمو استفاده نماييد.مطمئناً با استفاده از روش هاى فوق ديگر هيچ احتياجى به كرم و امولسيون هاى شيميايى نخواهيد داشت .

10 روش سریع برای رفع مشکلات رایانه

۱- شبکه Wi-Fi شما به شدت کند است
اگر دلیل این کندی قطع شبکه نباشد، احتمالا تداخلی ایجاد شده است. ابتدا جای روتر (router یا همان مودم) را تغییر دهید تا آنرا از معرض موارد مشکل زایی چون امواج مایکرو ویو یا تلفن بیسیم دور کنید. شاید شما از یک کانال شلوغ استفاده میکنید؟ کانال را از طریق صفحه configuration روتر تغییر دهید، بخش Channel را پیدا کنید و ۱، ۶ یا ۱۱ را امتحان کنید.
۲ - کیفیت صفحه نمایش یا display بسیار بد است
با کلیک راست بر روی desktop، تنیم صفحه نمایش را بررسی کنید، در ویندوز XP به بخش Properties و در ویندوز ویستا به Personalize بروید و از آنجا Settings را انتخاب کنید. اگر نمیتوانید رزولوشن یا کیفیت رنگ را افزایش دهید، دکمه Advanced, Adapter را انتخاب کنید. اگر اداپتور VGA استاندارد یا هر اداپتور دیگر در آنجا فهرست شده بود، یک درایور مخصوص به نوع PC را دانلود کنید.
اگر اداپتور موجود بود، یک نسخه از درایور قبل از آن را امتحان کنید. در ویندوز XP به ترتیب بر روی Properties, Driver, Roll Back Driver کلیک کنید در ویستا Personalization Control Panel را باز کرده و به ترتیب بر Display Settings, Advanced Settings, Properties کلیک کرده و در نهایت Driver, Roll Back Driver را انتخاب کنید.
۳ - چاپگر شما مطالب بی ربطی را چاپ میکند
این احتمال وجود دارد که یک دستور چاپ کنسل شده به خوبی از حافظه چاپگر پاک نشده باشد، چاپگر را چند دقیقه خاموش و مجددا روشن کنید. در این بین این کار را انجام دهید: بر روی منوی Start در ویندوز XP به سراغ Printers and Faxes و در ویستا به Printers بروید و تمام دستورات چاپ را پاک کنید. اگر مشکل ادامه پیدا کرد، درایور چاپگر را مجددا نصب کنید.
۴ - چاپگر از پیش تعیین شده یا default دیگر عمل نمیکند
بعضی از برنامه های کاربردی مانند OneNote مایکروسافت، به عنوان انتخاب خروجی خود نوعی ابزارهای مانند چاپگر را نصب میکنند و بعضی از آنها این چاپگر مجازی را به عنوان چاپگر اصلی تعیین میکنند. برای حل این مشکل به منوی Start رفته، گزینه Run را انتخاب کنید و در آن عبارت control printers را تایپ کرده، دکمه Enter را بزنید. چاپگر مورد نظر خود را با کلیک راست انتخاب نموده و گزینه Set as Default Printer را انتخاب کنید.
۵ - شما هر روز با پیامهای مکرر error در زمینه مشکلات حافظه مواجه میشوید
برای بررسی اینکه آیا RAM واقعا مشکل دارد یا خیر، برنامه رایگان MemTest۸۶ را دانلود کرده و آنرا بر روی دیسک بوت قرار داده سپس تستهای موجود در آنرا انجام دهید.
۶ - کامپیوتر شما به شدت آهسته آغاز به کار میکند
در منوی Start، گزینه Run را انتخاب کرده و در آن عبارت msconfig را تایپ کنید. سپس بر روی Startup کلیک کرده و تمام برنامه های کاربردی که بر روی روی آن بالا می آیند را بررسی کنید. هر یک از مواردی را که در زمان روشن شدن و بالا آمدن وبندوز نمیخواهید، حذف کنید. اما هر بار تنها یکی از برنامه ها را حذف کنید زیرا در این میان برنامه هایی وجود دارند که برای راه افتادن سیستم لازم هستند.
۷ - فایلهای ویدئویی بدون صدا یا تصویر پخش میشوند
به احتمال زیاد رمزگذار یا codec دستگاه شما تاریخ گذشته است. بهترین راه به روز رسانی کامل آن است که از طریق برنامه هایی چون ACE Mega CodecS و K-Lite Codec انجام پذیر است.
۸ - یکی از کلیدهای صفحه کلیدتان شکسته است.
اگر بخشی از کلید شکسته است، آن را با یک کلید بدون استفاده مانند کلید Insert عوض کنید. کلیدهای لپ تاپ برای جایگزین شدن یا تعویض روشهای مختلفی دارند که معمولا در وب سایتهای آنها وجود دارد.
۹ - شما یکی از پینهای ورودی port یا کابل را کج کرده اید
معمولا استفاده از انبردست، وضعیت را بدتر میکند، برای این کار بهترین وسیله یک مداد اتود با اندازه مغزی بزرگ است که معمولا به انواع این پینها میخورد.کافی است پین را در محل قرار گیری مغزی مداد قرار دهید و آنرا صاف کنید.
۱۰ - مواد موجود در فولدرها تنها با نشانه های بزرگ نمایش داده میشوند
برای تصحیح این حالت باید تنظیم از پیش تعیین شده یا default را در ویندوز تغییر دهید. شکل نمایش مورد نظر خود را در هر فولدری که باز باشد انتخاب کنید، سپس بر روی گزینه های Tools, Folder Options کلیک کرده، گزینه tab را انتخاب کنید و سپس بر روی Apply to All Folders کلیک کنید تا این شیوه نمایش برای تمام فولدرها منظور شود

 

آموزش Pascal



اجزاء تشکيل دهنده کامپيوتر عبارتند از :
1.سخت افزار
2.نرم افزار
• سخت افزار
خروجی<============== پردازش<===============ورودی
كامپيوترهاي امروزي معمولاً از قطعات زير تشكيل مي‌شوند:
دستگاههاي ورودي
حافظه‌هاي جانبي
حافظه‌هاي اصلي
واحد پردازشگر مركزي
دستگاههاي خروجي

• نرم افزار:
نرم‌افزار يكي از بخش‌هاي اساسي كامپيوتر به شمار مي‌آيد، كه در واقع سخت‌افزار را بكار مي‌گيرد. بعبارت ديگر رابط بين كاربر و سخت‌افزار را نرم‌افزار مي‌نامند. نرم‌افزار در حقيقت روح و جان يك كامپيوتر است، كه به سخت‌افزار هويت مي‌بخشد.

زبانهاي برنامه‌نويسي :
نرم‌افزارها توسط زبانهاي برنامه‌نويسي نوشته مي‌شوند. زبانهاي برنامه‌نويسي، يك سيستم ارتباطي هستند كه توسط آنها مي‌توان دستورات لازم را به ماشين انتقال داد.
هرزبان برنامه‌نويسي به مجموعه‌أي از علايم، قواعد و دستورالعمل‌ها گفته مي‌شود كه امكان ارتباط با كامپيوتر را جهت بيان كاري يا حل مسئله‌اي فراهم مي‌كند.
در حالت كلي زبانهاي برنامه‌نويسي را به سه دسته زير تقسيم‌بندي مي‌كنند:
1.زبانهاي سطح بالا
2.زبانهاي سطح پايين
3.زبانهاي سطح مياني
زبان Pascal
این زبان توسط پروفسور نيكلاس ويژت در انستيتو فني فدرال سوئيس در در اواخر سال 1960 و اوايل 1970 مطرح گرديد و به افتخار بلز پاسكال دانشمند فرانسوي قرن هفدهم ميلادي، پاسكال نامگذاري شده است.پاسکال یک زبان سطح بالا است.
اجزاي تشکيل‌دهنده يک برنامه:
1.کلمات ذخيره‌شده ( Reserved Words )
2.شناسه‌ها ( identifier )

کلمات ذخيره‌شده ( Reserved Words )
کلمات ذخيره شده، کلماتي هستند که مترجم زبان آنها را مي‌شناسد و معناي خاصي براي زبان دارند. مترجم زبان به محض مشاهده اين کلمات اعمال خاصي را انجام مي‌دهد. هر زبان داراي تعداد مشخصي کلمات ذخيره شده مي‌باشد و اين تعداد قابل افزايش توسط برنامه‌نويس نيست.
بعضی از کلمات ذخیره شده در پاسکال عبارت است از :
And,file,goto,var, while,unit,until,program,procedure,..
شناسه‌ها ( identifier )
شناسه در پاسکال براي نامگذاري ثابتها، تايپها، پروسيجروها، توابع، ميدانهاي يک رکورد، برنامه و همچنين يونيت مورد استفاده قرار مي‌گيرد.
در حالت کلي دو نوع شناسه وجود دارد :
1.id هاي استاندارد: اين نوع id ها از قبل در زبان پاسکال تعريف شدهاند و در برنامهها، معناي خاصي دارند .

2.Id هاي غيراستاندارد: اين نوع id ها بوسيله کاربر بطور مجزا تعريف ميشوند و اصطلاحاً به آنها userdefined گفته ميشود.
ساختار برنامه در زبان پاسکال :
اجزاء اصلي يک برنامه به زبان پاسکال بصورت زير مي‌باشد:
1. عنوان برنامه
2.قسمت تعاريف برنامه
3.قسمت دستور العملها

قسمت تعاريف برنامه:
1.اعلان ثابتها Constant Declaration
2.اعلان انواع Type Declaration
3.اعلان متغيرها Declaration Variable
4.اعلان برچسبها Declaration Label

درحالت کلي مي‌توان شکل يک برنامه در زبان پاسکال را بصورت زير بيان کرد:
1.استفاده از کلمه ذخيره شده Program و اسم برنامه ( که مي‌تواند بکار برده نشود )
2.قسمت تعاريف شناسه‌ها
3.بلوک اصلي برنامه که با Begin شروع و به End همراه نقطه ( . ) ختم مي‌شود.
4.هر دستور در پاسکال به ( ; ) ختم مي‌شود.
فرم کلی برنامه در پاسکال:
; نام program
; تعریف ثابت Const
; تعریف متغیرVar
;تعریف نوع Type
BRGIN
; دستورات برنامه
END; متغيرها (Variables)
متغير، محلي از حافظه است که داراي نوع و اسم مي‌باشد. نوع متغير همان نوع داده بوده و اسم متغير از قواعد اسم‌گذاري شناسه تبعيت مي‌کند.
انواع داده‌ها ( data types ):
1.داده‌هاي ساده (Simple data type)
.2داده‌هاي ساخت‌يافته ( ( Structural Data Types
3. داده‌هاي اشاره‌گر (Pointer Data Types)


داده‌هاي ساده (Simple data type)
1.انواع صحیح شامل اعداد بدون ممیز است متداولترین انواع صحیح را در شكل زير ببينيد:

2.اعداد اعشاری: شامل اعداد با نقطه ممیز است متداولترین آن در شكل زير ببينيد::


3.:Char این نوع داده که به آن کاراکتری می گویند حداکثر می تواند یک کاراکتر را در خود نگه دارد و اندازه آن یک بایت از حافظه را اشغال می کند.
4.نوع String:
این نوع داده برای ذخیره رشته ها مثل اسامی افراد به کار می رود حداکثر طول آن 255 کاراکتر است در ضمن برای هر رشته باید طول آن را مشخص کنیم در غیر این صورت طول آن را به طور پیش فرض 80 در نظر می گیرد.
5.نوع Boolean:
این نوع داده که داده های بولی خوانده می شود مقادیر این نوع داده های بولی دارای دو ارزش درستی یا نادرستی است که در پاسکال با 0و1 نمایش می دهند 0 به معنای نادرستی و1 به معنای درستی است.

2.انواع داده‌هاي ساخت‌يافته عبارتند از:
• آرايه‌ها
• رکوردها
• مجموعه‌ها
• فايلها
3. داده‌هاي اشاره‌گر (Pointer Data Types)
ممکن است در نوشتن برنامه، نوع داده‌هاي بحث شده در بالا به دلايل مختلف از جمله مشخص نبودن تعداد وروديهاي مسئله و غيره مشخص نباشد لذا نياز به متغيرهايي هست که بتوانند آدرس متغيرهاي ديگر را در خود نگه دارند، اين نوع داده‌ها، داده‌هاي اشاره‌گر نام دارند.
• در پاسکال براي معرفي متغيرها بصورت زير عمل مي‌کنند:
Var
; نوع متغير: اسم متغير
• براي تعريف يک ثابت بصورت زيرعمل مي‌کنيم :
; مقدار ثابت = اسم متغير Const

شکل کلي يک دستور جايگزيني در پاسکال بصورت زير است:
عبارت محاسباتي = : اسم شناسه
عبارت قياسي يا
عبارت منطقي
افزودن توضيحات به برنامه (Comment):
افزودن مطلب توضيحي در درون خود برنامه عملي پسنديده و مطلوب است بدين ترتيب که بعد از مدتي امکان فراموشي کار با برنامه از بين مي‌رود و در کل مي‌توان گفت که نوشتن توضيحات در برنامه خوانايي آن را بالا مي‌برد.
در پاسکال توضيحات بين دو آکولاد محصور مي‌شوند.
{ This is comment }
{ This program written by A. Pascal }

قبل از این که شروع به نوشتن یک برنامه کنیم ابتدا باید دستورات ورودی و خروجی را در پاسکال یاد بگیریم :
خروجي با دستور Write :
اين دستور براي نوشتن اطلاعات در خروجي بکار مي‌رود. اطلاعات خروجي مي‌توانند ثابتهاي عددي، مقادير متغيرها، عبارات و غيره باشند. شکل دستور در حالت کلي بصورت زير است:
(....... و متغير2 و متغير1 )write
يا (....... و' عبارت 2' و'عبارت1 ')
يا (....... و ثابت 2 وثابت 1 )
مثال:
Var
A , B: integer ;
Ch: char ;
R: Real ;
Begin
A: = 10 ; B: = 15 ;
Ch: = ' T ' ;
R: = 12.25
Write ( ' A = ' , A, ' B = ' , B ) ;
Write ( ' ch = ' , ch , ' R= ' , R ) ;
Write ( ' sum of A and B = ' , A + B ) ;
End. { end of program}

بعد از اجراي برنامه فوق در خروجي خواهيم داشت:

A = 10 B = 15 ch = TR = 1.2250000000 e + 01 sum of A and
B = 25
خروجي با دستور Writeln :
اين دستور همانند دستور Write عمل مي‌کند با اين تفاوت که بعد از اجرا، کنترل را به ابتداي سطر بعد منتقل مي‌کند در نتيجه موجب چاپ داده‌هاي بعدي در ابتداي سطر بعد مي‌شود.
خروجي برنامه بالا بصورت زير مي‌باشد:
A = 10 B = 15
Ch = T R = 1.225000000 e + 01
Sum of A and B = 25
خروجي فرمت‌بندي شده:
اگر بخواهيم اطلاعات با فاصله هاي مشخص يا در مکان مشخصي در صفحه نمايش قرار گيرند، بايد فرمت چاپ را در دستورات بيان شده مشخص کنيم.
طريقه تعيين فرمت چاپ براي اعداد صحيح :
( طول ميدان: داده صحيح ) Writeln يا Write
در تعريف طول ميدان براي متغيرها يا داده‌هايي از نوع صحيح به نکات زير توجه کنيد:
1.اگر طول ميدان از طول ارقام عدد صحيح بيشتر تعريف شود، عدد در منتهي‌اليه سمت راست ميدان نوشته مي‌شود.
.2اگر طول ميدان از طول ارقام عدد صحيح کمتر تعريف شود، طول ميدان به اندازه تعداد ارقام در نظر گرفته مي‌شود و طول ميدان تعريف شده بي‌اثر خواهد بود.

مثال:
X:= 3200 ;
A: = 12 ;
B: = 217 ;
Write ( X:3 , A:5 , B:5 ) ;
خروجی: 217 دوتا فاصله 12 سه تافاصله 3200


طول ميدان اعداد اعشاري :
براي نمايش اعداد اعشاري بصورت دلخواه، مي توان با تعريف طول ميدان و تعداد ارقام اعشاري، عدد مزبور را نمايش داد.
: در حالت کلي طول ميدان را مي‌توان به صورت زير تعريف کرد:
( تعداد ارقام بعد از مميز: طول ميدان: متغير اعشاري) Writeln يا Write
در تعريف فرمت براي اعداد اعشاري به نکات زير بايد توجه کرد:
.1 اگر طول ميدان بزرگتر از تعداد ارقام عدد ذکر شود، عدد در منتهي اليه سمت راست ميدان چاپ مي‌شود.
2.اگر فقط طول ميدان ذکر شود، عدد به صورت نماد علمي در طول ميدان مشخص شده
چاپ می شود .از آنجائي که براي نمايش اعداد در نماد علمي حداقل 8 محل مورد نياز است، لذا هنگامي که تنها طول ميدان ذکر شده باشد، اگر از 8 رقم کمتر باشد، حداقل 8 رقم در نظر گرفته مي‌شود.
3.هنگامي که طول ميدان همراه با تعداد ارقام بعد از مميز ذکر شود، اگر طول ميدان کوچکتر از مقدار عدد باشد، پاسکال تنها طول ميدان را به اندازه‌اي که مورد نياز است تصحيح کرده و آنرا برابر اندازه واقعي که عدد در آن قرار مي‌گيرد، اصلاح مي‌کند.
4.اگر تعداد ارقام بعد از مميز زياد باشد و تعداد ارقام بعد از مميز ذکر شده در طول ميدان کمتر از تعداد ارقام اعشاري عدد باشد، تعداد ارقام اعشار مطابق درخواست برنامه‌نويس نشان داده خواهد شد و رقم آخر اعشار آن نسبت به عدد بعدي گرد مي‌شود.
طول ميدان کاراکترها و رشته‌ها :
براي نمايش رشته‌ها و کاراکترهاي با طول ميدان بصورت زير عمل مي‌کنيم.
(طول ميدان: متغير يا عبارت رشته‌اي يا کاراکتري) Writeln يا Write
در توربو پاسکال، کليه موارد گفته شده در مورد اعداد صحيح براي رشته‌ها نيز صادق است.
ورودي با Readln , Read
از اين دستورات براي خواندن داده ها و اختصاص آنها به متغيرها استفاده مي‌شود. در خواندن داده ها به دو موضوع بايد دقت شود:
1- منبع داده‌ها يعني دستگاه ورودي که از آن داده‌ها خوانده مي‌شود.
2- متغيري که داده‌هاي خوانده شده در آن قرار مي‌گيرد.
شکل کلي دستور ورودي Read بصورت زير مي‌باشد:
;( ..... و متغير 2 و متغير 1Read (
اين دستور عمل خواندن داده‌ها و ذخيره آنها در متغيرها را انجام مي‌دهد و پس از اتمام عمل خواندن کنترل را براي خواندن و نوشتن‌هاي بعدي. در همان خط نگه مي‌دارد
شکل کلي دستور ورودي ReadLN بصورت زير مي‌باشد:
;( ..... و متغير 2 و متغير 1ReadLN (
اين دستور عمل خواندن داده‌ها و ذخيره آنها در متغيرها را انجام مي‌دهد و پس از اتمام عمل خواندن کنترل را براي خواندن و نوشتن‌هاي بعدي به خط بعد می رود.
تا به ما قادر شدیم که یک برنامه کامل را بنویسیم حال چند مثال را حل می کنیم:
1.برنامه ای بنویسید که محتویات دو عدد را عوض کند؟
program Example_1 ( input , output ) ;
Var
first , second , temp: integer Begin
Writeln ;
Writeln ( 'Please Enter two numbers ' ) ;
Readln ( first , second ) ;
Temp: = first ;
First: = second ;
Second: = temp ;
Write ( ' first = ' , first , ' second = ': 10 , second ) ;
End. { end of program }
خروجي برنامه بالا به صورت زير مي‌باشد:
Please Enter two numbers
15 17
First = 17 second = 15

2.برنامه ای بنویسید که حقوق پایه و تعداد فرزندان یک کارگر را از ورودی گرفته و مبلغ حقوق وی را بر اساس فرمول زیر محاسبه کند؟
10* تعداد فرزندان+ حقوق پایه= حقوق کل

program TEST( input , output ) ;
Var
CHILD:BYTE
:LONGINT SALARY
: integer ; KOL
Begin
Writeln ; Writeln ( 'Please Enter salary an number of child);
Readln ( salary, child ) ;
Kol:=salary+child*10;
Writeln ('kol is',kol);
End. { end of program }
در درس بعدی انواع عمگرها ،دستورات شرطی،دستور case ،حلقه ها را خواهم گفت در ضمن این مطالب هر هفته آپدیت می شود.

عملگر ها:

انواع عملگر ها عبارت است از:
1.عملگرهای رابطه ای

2.عملگرهای منطقی

3.عملگر های محاسباتی


عملگرهای رابطه ای:

آن دسته از عبارات منطقی که عمل مقایسه را انجام می دهند یکی از اشکال زیر را دارند:
Variable relational-operator Variable
Variable relational-operator constant

عملگر های رابطه ای به شرح زیرند:
> کوچکتر
< بزرگتر
<= بزرگتر مساوی
= > کوچکتر مساوی
<> نامساوی
= مساوی

نکته: دو عملوند یا داده ای که با هم مقایسه می شوند اغلب یا دو متغیر هستند یا یک متغیر و یک ثابت هستند. نوع داده ی عملوند های یک عملگر رابطه ای باید یکسان باشد.

عملگرهای منطقی:

با استفاده از عملگر های منطقی not , or , and می توان عبارات منطقی پیچیده تری ایجاد نمود .

مثال :
(x < y ) or (y > 5)

متغیر های منطقی در واقع عبارات منطقی هستند . بنابر این از آنها می توان به عنوان عملگر های منطقی استفاده نمود .

مثال
:(X and (not y

جداول درستی :

عملگر Andو OR:

عملوند2 OR عملوند 1 عملوند2 and عملوند 1
عملوند2
عملوند 1

True True
True
true

True false
False
True

False True
true
false

False False
False
False


عملگر Not:

عملوند 1 not
عملوند 1

false
true

True
false


تقدم عملگرها ترتیب ارزیابی را مشخص می کند.جدول تقدم عملگرها عبارتند از :


عملگر

Not

* / div mod and

+ - or

< <= = <> >= >

دستورات کنترلی:

1.دستور IF:

در پاسکال یک ساختار انتخابی ابتدایی شامل دستور IF است که در دستور همراه یک عبارت منطقی قرار می گیرد .دستور IF مشخص می کند که در یک حالت خاص ، کدام مجموعه از دستورات باید اجرا شوند.

دستور if یک انتخابی:
If condition then
Statement-

دستور if دو انتخابی:
If condition then
Statement1
Else Statement2

مثال: برنامه ای بنویسید که تعداد فرزندان و حقوق پایه و رتبه یک کارگر را از ورودی دریافت کرده و حقوق کلی او را بر اساس فرمول زیر حساب کند؟

کسریها - مزایا + بیمه = حقوق کل
5*رتبه+1000* تعداد فرزندان =مزایا
مالیات+بیمه=کسریها


بیشتر
کمتر یا مساوی 2
تعداد فرزند

تعداد فرزندان
1000
بیمه

هر چیزی دیگر
0تا 20
رتبه

حقوق پایه
حقوق پایه*100/10
مالیات


Program salary_kol;
uses wincrt;
Var
Salary:longint;
kasry,bimeh,mazaya,kol,net:real;
Num,grade:integer;
Begin
Writeln('Enter salary and grade and number of child');
Readln(salary,grade,num);
If num<=2 then
Bimeh:=100
Else
Bimeh:=num*500;
If (grade>0) and (grade<=20) then
begin
Net:=20/100*salary;
Mazaya:=num*1000+grade*50 ;
Kasry:=bimeh+net;
Kol:= salary+mazaya-kasry;
End
Else
If (grade>20)then
begin
Net:=20/100*salary;
Mazaya:=num*1000+grade*50 ;
Kasry:=bimeh+net;
Kol:= salary+mazaya-kasry;
End;
Writeln('salary kol is:',kol);
Readln;
End.
دستور case:

برای انتخاب یک حالت از چندین گزینه ، در پاسکال علاوه بر دستور if ،دستور دیگری به نام case وجود دارد. Case میتواند تعدادی شرط را بگیرد و انتخاب کند.

مقادیری را که دستور case می پذیردORDINAL است .مقادیری که دارای ORDINAL هستند دارای ترکیب نیستند و همچنین قابل شمارش هستند مثل :integer,character,byte,boolean,longint,…پسstring,real,… نمی توانند ORDINAL باشند.دستور case دارای begin نمی باشد.
Case selector of
Label : statement ;
Label : statement ;
.
.
.
.
.
label : statement
end [case]

مثال:
case N of
1,2 : begin
write (‘1,2,’) ;
writeln( ‘buckle my shoe’)
end ; {1,2}
3 , 4 :writeln (‘ 3,4 , shut the door ‘) ;
5 , 6 :writeln (‘ 5 , 6 , oick up sticks’)
end {case}


عبارت otherwise یا else برای دستور :case

چنانچه انتخاب کننده case یک مقدار غیر قابل انتظار داشته باشد می توان از این عبارت برای نمایش پیغام خطا یا عمل تصحیح استفاده نمود.در دستور case بعد، در صورتی که مقدار غیر منتظره ای در DayNumber ذخیره شود، عبارت otherwise پیغام خطای invalid day number را نمایش می دهد.
{compute gross pay for a particular day }
case DayNumber of
1, 7 : Gross := Hours * 1.5 * dailyRate ;
2, 3 , 4 , 5 , 6 : Gross := Hours * DailyRate ;
otherwise
writeln (‘ invalid day number . ‘)
end {case}

مثال:برنامه ای بنویسید که دو عدد را از ورودی دریافت کرده وچنانچه عدد اول در بازه 0 تا 5 بود توان دوم عدد دوم را چاپ کند اگر 68 بود ضرب آن دو عدد را نمایش دهد در غیر اینصورت مقادیر مجاز را چاپ کند؟
Program case_of;
Uses wincrt;
Var a,b:integer;
Begin
Writeln('enter tow number');
Readln(a,b);
Case a of
0..5:Writeln('sqrt(b):',b*b);
68:writeln('a*b:',a*b)
Else
writeln('Enter 0..5 or 68');
End;{case}
Readln;
End.

حلقه ها:
1.حلقه FOR:

حلقه for برای تعداد تکرار 0 یا بیشتر و در ضمن برای تعداد تکرار معین به کار می رود .

شکل کلی دستور for به صورت زیر است:
Do مقدار نهایی To} مقدار شروع =: متغیرfor

Downto

To زمانی به کار میرود که مقدار اولیه از مقدار نهایی کمتر باشد.
downTo زمانی به کار میرود که مقدار اولیه از مقدار نهایی بیشتر باشد.

مثال:برنامه ای بنویسید که مجموع مضارب 5 بین 0 تا 100 را حساب کند؟
Program zarb;
Uses wincrt;
Var I,sum:integer;
Begin
Sum:=0;
For i:=1 to 20 do
Begin
Sum:=sum+i*5;
End;
Writeln('sum is:',sum);
End.

مثال:برنامه ای بنویسید که تعداد مضارب 5و7 را در بازه [231,846] چاپ کند؟
Program number;
Uses wincrt;
Var I,s,k:integer;
Begin
S:=0;
K:=0;
For i:=846 downto 231 do
Begin
If I mod 7=0 then
S:=s+1;
If I mod 5=0 then
K:=k+1;
End;
Writeln('7=',s);
Writeln('5=',k);
End.

حلقه های for می توانند علاوه بر نوع integer ، از انواع دیگر ترتیبی نیز استفاده کنند . در مثال زیر ، از متغییر char استفاده شده است.

مثال :
For nextch := ‘ A’ to ‘Z’ do Write (nextch );


2.حلقه while:

ساده ترین دستور کنترل حلقه دستور While می باشند. دستوراتی که تکرار می شوند بدنه حلقه نام دارند و بعد از کلمهdo قرار می گیرند. بدنه حلقه یک دستور مرکب است که بین begin و end محصور شده است.

حلقه While یک حلقه با تکرار 0 یا بیشتر و تعداد تکرار در آن نامعین است.

شکل آن بصورت زیر است:
Do شرطWhile
begin

دستورات
End;

مثال:برنامه ای بنویسید که تعدادی از اسامی را از ورودی دریافت کند و سپس بگوید اسم 'ali' چند بار تکرار شده است؟(آخرین اسم end باشد)
Program repeat_ali;
Uses wincrt;
Var s:integer;
Name:string;
Begin
S:=0;
Writeln('Enter names ');
Readln(name);
While name<>'end' do
Begin
Readln(name);
If name='ali' then
S:=s+1;
End;
Writeln('ali repeat:',s);
End.
3.حلقه Repeat:

دستور repeat یک حلقه شرطی را مشخص می کند که تا وقتی که شرط آن درست بشود ، حلقه تکرار می گردد (یعنی این حلقه تا زمانی اجرا می شود که شرط آن نا درست باشد و به محض درست بودن شرط حلقه دیگر اجرا نمی شود ).
Repeat
loop-body
Until termination-condition

حلقه شرطی دستور repeat ، یک حلقه repeat – until نامیده می شود. توجه داشته باشید که چون کلمات repeat و until بدنه حلقه را محصور می کنند نیازی به کلمات begin و end نیست . این نوع حلقه حداقل یکبار تکرار می شود.

مثال:
Repeat
write (‘Enter a digit >’);
read (ch)
Until (‘0’ <= ch) and (ch <= ‘9’)

حلقه های لانه ای:

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

مثال:
Program m_n;
Uses wincrt;
Var
I , j : integer ;
Begin
Writeln (‘I’ :12 , ‘j’ :5);
For I:=1 to 3 do
Begin
Writeln (‘outer’ :5,I :7 );
For j:= 1 to I do
Writeln (‘inner’ :7 , I :5 , j:5)
End;
End.
دستورات break,continue:
Break: این دستور در داخل حلقه ها بکار رفته و باعث خروج از داخلی ترین حلقه شده و دستور بعد از آن حلقه اجرا شود.
Continue: این دستور نیز مانند break در درون حلقه ها بکار رفته و باعث می شود کنترل برنامه به ابتدای حلقه باز گردد.

دستورات halt,exit:
Halt پرس و جویی است که باعث خروج کامل از برنامه و بازگشت به سیستم عامل می گردد.
Exit پرس و جویی است که باعث خروج از زیر برنامه می شود و چنانچه در قسمت اصلی برنامه به کار رود مانند halt عمل می کند.

دستور goto

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

برچسبها نیز می بایست در ابتدای برنامه تعریف شوند .تعریف آن به صورت زیر است.
; نام برچسبLABEL

تعریفی از پارامتر ها:

پارامترها خطوط ارتباطی بین برنامه اصلی و پیمانه های آن هستند . پارامترها باعث می شوند که توابع و رویه ها روانتر عمل کنند زیرا آنها به یک پیمانه این قابلیت را می دهند که با هر بار فراخوانی ، داده های مختلفی را مورد پردازش قرار دهد. در بخش بعدی خواهید دید که چگونه برنامه نویسان برای ارسال اطلاعات بین برنامه اصلی و پیمانه ها و یا ارسال اطلاعات بین پایانه ها ، از پارامتر استفاده می کنند.

پارامتر های واقعی و صوری:

هر دستور فرا خوانی رویه ، دو قسمت دارد :نام رویه و لیست پا رامترهای واقعی .برای مثال ، رویه Line را در نظر بگیرید که از یک نقطه روی صفحه به نقطه دیگر خطی رسم میکند . دستور فراخوانی آن شامل نام رویه یعنی line و لیست پارامتر های واقعی یا ((x1,y1,x2,y2 می باشد.

Line ( X1 , Y1 , X2 , Y2 )
در هر بار فراخوانی این رویه ،برنامه نویس چهار متغیر یا چهار عدد را که مختصات دو نقطه را نشان می دهند، در آن قرار می دهد. چون با هر بار فراخوانی line، مختصات نقاط می توانند تغییر کنند ، باید آنها را در قسمت تعاریف رویه نشان دهیم . برای اینکار، از نامهای ساختگی که اصطلاحا" به آنها، پارامترهای صوری می گوییم ،استفاده می کنیم.

Procedure Line ( XStart , YStart , XEnd , YEnd : Integer ) ;

رویه line تا وقتی فراخوانی نشود ، نمی داند که چه داده ای دریافت خواهد کرد. برنامه فراخوان،اطلاعات مورد نیاز line را از طریق پارامتر های واقعی به رویه ارسال می کند و هر پارامتر واقعی با پارامتر صوری متناظر با آن جفت می شود .

پارامتر واقعی پارامتر صوری
X1 <-------------------Xstart
Y1 <------------------- Ystart
X2 <---------------------Xend
Y2 <-------------------- Yend

ناحیه داده های رویه:

هر بار که رویه ای فراخوانی می شود ،ناحیه ای از حافظه برای ذخیره داده های رویه اختصاص می یابد . ناحیه داده های رویه شامل سلولهایی از حافظه است که برای ذخیره پارامتر های صوری و متغیرهای محلی یا ثابتهایی که در رویه تعریف می شوند ،می باشد. هر گاه که رویه ای پایان می یابد ناحیه داده های مربوط به آن پاک می شود .

انواع پارامتر های صوری:

پارامتر های صوری به دو دسته تقسیم می شوند:
1.پارامتر های مقدار
2.پارامتر های متغیر

پارامتر های مقدار ، اطلاعاتی که به رویه فرستاده می شود را در یافت می کند.
پارامتر متغیر ، محتوی یک پارامتر واقعی را تغییر داده و آن را به عنوان نتیجه حاصل از رویه بر می گر داند.

مثال: رویه ComputerSumAve چهار پارامتر دارد : دو پارامتر برای ورودی (Num1,Num2) و دو پارامتر برای خروجی (Average,Sum) .رویه ComputerSumAve مجموع و میانگین دو عدد را محاسبه می کند ولی آنها را نمایش نمی دهد.

Procedure computesumave (num1, num 2, {input}: real ;
Var sum , Average {output}: real ) ;
begin { computeSumAve }
sum := num1 + num2 ;
average := sum / 2.0
end ;{ ComputeSumAve }

دستور فراخوانی :
ComputerSumAve( x , y , total , Mean )
قواعد تناظر لیست پارامتر ها:

• تناظر میان پارامتر های واقعی و صوری از روی موقعیت آنها در لیست پارامتر ها تعیین می شود.این لیستها باید هم اندازه باشند ولی اسامی پارامتر ها ی واقعی و صوری متناظر می توانند با هم متفاوت باشند.
• در مورد پارامتر های متغیر ، نوع پارامتر های واقعی و صوری باید با یک دیگر یکسان باشند.در مورد پارامترهای مقدار ، نوع داده پارامتر واقعی باید با نوع پارامتر صوری متناظرش سازگار باشد.
• در مورد پارامتر های متغیر ، پارامتر های واقعی باید یک متغیر باشد ولی برای پارامتر های مقدار یک پارامتر واقعی می تواند ، متغیر ، ثابت یا یک عبارت باشد.

زیر برنامه ها:

1.پروسی جر((Procedure:

یک نوع از زیر برنامه ها در پاسکال پروسی جر است که بصورت پردازه، رویه ، روال و غیره نیز ترجمه شده است.
فرم کلی پرو سی جر بصورت زیر است:
;(پارامتر های پروسی جر)نام پروسی جرP rocedure
[ type
Const
Var
Label ]
Begin

دستورات پروسی جر

End;

با یک مثال نحوه صدا زدن رویه ها را شرح می دهیم.
مثال:برنامه ای با پروسی جر بنویسد که طول و عرض مستطیلی را گرفته و محیط آن را حساب کند؟
Program environment;
Uses wincrt ;
Procedure rectangle ( a,b:integer;var k:integer ) ;
Begin
K:=2*( a+b ) ;
End;
Var
X,y,p:integer ;
Begin
Readln( x,y ) ;
Rectangle( x,y,p ) ;
Writeln( p ) ;
End.

تعریف رویه با کلمه کلیدی procedure آغاز می شود بعد از آن یک نام اختیاری که این نام از قواعد نامگذاری متغییرها پیروی می کند آورده می شود. پارامتر های رویه در درون پرانتز ها نوشته می شوند. در رویه بین آرگومان ها سمی کالن(; ) قرار می گیرد ولی هنگام صدا زدن بین آرگو مان ها کاما (, )قرار می گیرد.
رویه میتواند هیچ، یک یا چند خروجی داشته باشد.
نکته:هنگام صدا زدن رویه نمی توان از عبارات محاسباتی، عبارات مقایسه ای، دستور write و یا مقدار دهی به کار برد.
P:=rectangle( x,y,p ) ;
Write( rectangle(x,y,p ) ) ;
.......If rectangle( x,y,p ) >20 then
P:= rectangle(x,y,p )* 2+6 ;
همه عبارات بالا دارای خطای کامپایلری است.

اعلان forward:
در حالت معمولی قبل از صدا زدن یک زیر برنام،آن روال باید در قسمت بالاتر تعریف شود.اگر در یک برنامه یک زیر برنامه قبل از تعریف شدنش صدا زده شود می بایست از کلمه کلیدی forwad استفاده شود تا خطا گرفته نشود.
Procedure add1( i:integer );forward ;
Procedure add2( m:integer ) ;
Begin
Add1( m ) ;
End ;
Procedure add1 ;
Begin
Writeln( i+10 ) ;
End ;
Begin
Add2( 7 ) ;
End.

2.تابع((Function :

توابع مانند رویه ها ، پیمانه های مستقلی هستند . با این تفاوت که رویه ها می توانند هر تعداد خروجی داشته باشند در حالی که توابع فقط یک خروجی دارد. با نوشتن اسم تابع در یک عبارت می توان یک تابع از پیش تعریف شده را فراخوانی کرد.
توابع استاندارد:
نوع داده خروجی آرگومان تابع
با نوع آرگومان یکسان است real یا integer Abs (x)
Real real یا integer Arctan(x)
Real real یا integer Cos(x)
Real real یا integer Exp(x)
Real real یا integer Ln(x)
integer real Round(x)
با نوع آرگومان یکسان است real یا integer Sin(x)
Real real یا integer Sqr(x)
Real real یا integer Sqrt(x)
integer real Trunc(x)

توابع تعریف شده توسط کاربر:

برای تعریف توابع خاص خودمان ، تعریف تابع را بنویسید و آن را در قسمت تعریف برنامه فراخوان قرار دهید. تابع، خروجی خود را توسط پارامترهایش ارائه نمی کند.

1) عنوان تابع با کلمه رزرو شده Function بجای Procedure شروع می شود:
;نوع خروجی:(پارامتر های ورودی)نام تابعFunction
2) تمام پارامترهای تابع باید از نوع پارامتر مقدار باشند.

3) نوع داده نتیجه تابع در انتهای عنوان تابع و بعد از لیست پارامترهای صوری قرار می گیرد.

4) در بدنه تابع، خروجی تابع با نسبت دادن مقدار به نام تابع مشخص می شود.
آخرین داده ای که به نام تابع نسبت داده می شود به عنوان نتیجه تابع
بر می گردد.
نحوه نوشتن تابع:

;نوع خروجی تابع: (پارامتر های تابع)نام تابع function
[ type
Const
Var
Label ]
Begin

دستورات تابع

End ;

فراخوانی تابع:
;(Z : = Exponent ( X , Y

توابع بازگشتی:

توابع بازگشتی دارای دو ویژگی اصلی می باشند:
1.خودش را صدا می زند.
2.یک شر برای اتمام فراخوانی ها وجود دارد.

نکته: در پاسکال هم توابع و هم رویه ها را می توان بصورت بازگشتی تعریف نمود.

مثال:برنامه ای بنویسد که یک عدد را از ورودی دریافت کرده و به کمک تابع بازگشتی و غیر بازگشتی فاکتوریل آن را حساب کند؟
Program factorial ;
Uses wincrt ;
Var x:integer ;
Function fact1 ( n:integer ):integer ;
Var I,f:integer ;
Begin
F:=1 ;
For i:=1 to n do
F:=f*I ;
Fact1:=f ;
End;
Function fact2( n:integer ):integer ;
Begin
If n<=1 then
Fact2:=1
Else
=n*fact2( n-1) ;:Fact2
End;
Begin
Readln( x ) ;
Writeln( fact1(x) ) ;
Writeln( fact2(x) ) ;
End .

مثال:تابع بازگشتی بنویسد که a*b را محاسبه کند؟
a+a*(b-1) if b>1
a if b=1
Function multiply( a,b:integer ):integer ;
Begin
If b=1 then
Multiply:=a
Else
Multiply:=a+multiply( a,(b-1) ) ;
End ;

مثال:در برنامه زیر خروجی f(3,6) چند است؟
Function f( m,n:integer ):integer ;
Begin
If (m=1) or(n=0) or(m=n) then
F:=1
Else
F:=f(m-1,n)+f( m-1,n-1 )
End;
خروجی این تابع برابر 4 است.


این هم یک مثال جالب:
برنامه ای بنویسید که رشته ای را به یک تابع فرستاده و معکوس رشته را توسط نام تابع برگرداند.همچنین به کمک پرامتر مرجع حروف کوچک رشته ورودی را تبدیل به حروف بزرگ کرده و رشته معادل را برگرداند؟
Program reverse ;
Uses wincrt ;
Var s,p,t:string ;
Function fstr( s:string;var p:string ):string ;
Var I,len:byte; c:char; t:string ;
Begin
Len:=ord( s[0] ) ;
For i:=1 to len do
Begin
If (s>='a')and(s<='z') then
P:=char(ord( s)-32 ) )
Else
P:=s ;
T:=s[len-i+1] ;
End;{if}
T[0]:=s[0] ;
P[0]:=s[0] ;
Fstr:=t ;
End ;
Begin
Readln(s) ;
T:=fstr( s,p ) ;
Writeln( s,' ',p,' ',t ) ;
End.
زیر برنامه های استاندارد رشته ای:

1.تابع concat:

این تابع برای الحاق رشته ها استفاده می شود.
خروجی Concat( 'ali','reza' ) ; ---àalireza

2.پردازه str:

با این پردازه می توان عددی(صحیح یا اعشاری )را به رشته معادل تبدیل کرد. Str( n:integer;var s:string ) ;
Str( n:real;var s:string ) ;
مثال:
Begin
R:=13 ;
Str(r,a) ;
A:=a+'ali' ;
خروجی Writeln(a ) ; -à 13ali
End.
3.پردازه val:

با این پردازه برعکس str ارزش عددی یک رشته حاوی ارقام بدست می آید.
Val( s:string;var x:integer ) ;
Val( s:string;var x:real ) ;
4.تابع pos:

با این تابع می توان دریافت یک حرف یا یک رشته در چه مکانی از رشته دیگر است.
Poc( sub,s:string ):byte ;

3 <---- Writeln( pos('jid','majid') ) ;
5.تابع copy:

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

Copy( s:string;start,len:integer ):string ;

Writeln( copy('alireza';4,3) ) ; ---à rez

6.تابع upcase:

این تابع یک کاراکتر را از ورودی گرفته و آن را تبدیل به حرف بزرگ می کند.
Upcase (c:char ):char ;

Writeln( upcase('a') ) ;---àA
7.پردازه insert:

این پردازه برای درج رشته ای در داخل رشته دیگر استفاده می شود:
Insert( s1:string;s2:string;index:integer ) ;

S:='hello reza' ;
Insert( 'ali',s,7 ) ;
Writeln( s ) ;
خروجی hello alireza:

Index شماره مکان درج در رشته s2 را مشخص می کند.

8.پردازه delete:

با این پردازه می توان بخشی از یک رشته را حذف کرد.
Delete( var s:string;start,len:integer ) ;
پارامتر len تعداد کاراکتر حذف شده از رشته s و پارامتر start موقعیت حذف را تعیین می کند.
S:='alireza' ;
Delete( s,4,3 ) ; ----àalia


حال یک سری نکات مهم را بیان می کنیم:
نکته 1:هنگام تعریف توابع بین پارامترهای (; ) قرار می گیرد ولی هنگام صدا زدن تابع بین آرگومان ها (, ) قرار می گیرد.

2.تابع ممکن است ورودی نداشته باشد بنابراین از گذاشتن پرانتز باید خودداری کرد. Function example:integer ;

3.نوع برگشتی تابع می تواند از نوع های ساده( real,integer,char ... ) ،رشته و شمارشی باشد. ولی از نوع آرایه،مجموعه وفایل نمی توانند باشد.

4.درون عبارات محاسباتی،دستور write و مقایسه ای می توان آن را صدا زد.

5.رویه ممکن است ورودی و خروجی نداشته باشد در این صورت از پرانتز نباید استفاده کرد.procedure example ;
6.دستورات readln و writeln در واقع رویه های از پیش تعریف شده اند.

7. دستورات INC و DEC در واقع رویه های از پیش تعریف شده،با فرم کلی زیر می باشند:
Procedure inc( var x[;n:logint] ) ;
Procedure dec( var x[;n:logint] ) ;

8. دستورات halt و exit در واقع رویه های از پیش تعریف شده،با فرم کلی زیر می باشند:
:word) ] ; کد خروجیProcedure halt[ (
Procedure exit ;
9.تعداد آرگو مان های فرستاده شده به تابع یا رویه باید برابر باشد، همچنین نوع آرگو مان های متناظر نیز باید یکسان باشد.

10.نام پارامترها کاملا اختیاری است و می تواند همنام آرگو مان ها باشد.

11.درون یک زیر برنامه نمی توان متغیری محلی همنام با پارامتر ها تعریف کرد.در این حالت خطای کامپایلری رخ می دهد.

12.ترکیب const و var غیر مجاز بوده و خطا دارد.

حوزه عمل شناسه ها:

در یک برنامه پاسکال ، هر شناسه ، دامنه ای دارد که حوزه عمل آن شناسه نامیده می شود.منظور از دامنه شناسه ، بخشی از برنامه است که شناسه در آن تعریف می شود.یک شناسه تنها توسط دستوری که در حوزه عملش قرار دارد می تواند مورد مراجعه و بازیابی قرار گیرد. شناسه ممکن است محلی یا سراسری باشد.


قانون شماره 1 حوزه عمل : حوزه های محلی یا سراسری

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

آرایه:

آرایه یک نوع ساختمان داده است که تعدادی داده هم نوع در آن ذخیره می شوند. با استفاده از آرایه می توانیم برای مجموعه ای از داده ها ، نام یک متغیر ( مثلا Scores ) را بکار بریم. علاوه بر این می توانیم به تک تک عناصر موجود در آرایه مراجعه کنیم.
در پاسکال یک آرایه در محل های پشت سر هم از حافظه اصلی ذخیره می شود. هر عنصر آرایه در یک سلول از حافظه قرار می گیرد. بعضی از اعمال نظیر ارسال کردن آرایه به عنوان پارامتر به یک رویه را می توان انجام داد. همچنین می توان داده های ذخیره شده در آرایه را بازیابی کرده و مثل متغیر های ساده ، آنها را مورد پردازش قرار داد.

تعریف نوع آرایه ها:

شکل استفاده:


Type
Array type = array [ subscript type] of element type ;


مثال:


Type
SmallArray = array [1. . 5] of char ;

85 67 33 95 88



اندیس های آرایه:
برای پردازش داده های ذخیره شده در یک آرایه، باید بتوانیم عناصر آن را بازیابی کنیم. برای انجام چنین کاری باید نام آرایه را همراه با یک اندیس ( که گاهی اوقات شاخص نامیده می شود) به کار بریم. اندیس آرایه که میان یک جفت کروشه قرار می گیرد، عنصر خاصی از آرایه را برای پردازش انتخاب می کند.

مثال:

اگر متغیر X از نوع RealArray باشد :
Type
RealArray = array [1 . . 8] of Real ; { array type declaration }

Var
X : RealArray ; { Allocate storage for array X . }


برای مراجعه به اولین عضو آرایه ، از X[1] (بصورت X اندیس 1 خوانده شود)، برای مراجعه به دومین عنصر از از X[2] و برای مراجعه به هشتمین عنصر از X[8] استفاده می کنیم.

خواندن و نمایش دادن یک آرایه:

داده ها باید بصورت عنصر در داخل آرایه قرار گیرند و در موقع نمایش دادن نیز باید آنها را بصورت عنصر به عنصر چاپ کرد. با توجه به تعاریف :
Const
Maxitems = 8 ;
Type
IndexRange = 1 . . MaxItems ;
RealArray = array [ IndexRange ] of Real ;
Var
X : RealArray ; { array of data }
I : IndexRange ; { loop-control variable }


For I : = 1 to MaxItems do
Read ( X ) ;

مثال:برنامه جدولی از تفاضل ها

Program table;
Uses wincrt;
Const
MaxItems = 8 ; { number of data items }
Type
IndexRange = 1 . . MaxItems ;
RwalArray = array [IndexRange] of Real ;
Var
X : RealArray ; { array of data }
I : IndexRange ; { loop-control variable }
Average , { average value of data }
Sum : Real ; { sum of the data }
Begin { ShowDiff }
{ Enter the data . }
Write ( ‘Enter’ , MaxItems : 1, ‘ numbers> ‘ ) ;
For I : =1 to MaxItems do
Read ( X ) ;
{ Compute the average value . }
Sum : = 0.0 ;
For I := 1 to MaxItems do
Sum := Sum + X[1]; { Add each element to sum. }
Average := Sum / MaxItems ; { Get average value . }
Writeln ( ‘The average value is ‘ , Average : 3 : 1 ) ; Writeln ;
{ Display the difference between each item and the average . }
WriteLn ( ‘ Table of difference between X and average’ ) ;
WriteLn ( ‘I’ :4 , ‘X’ :8 , ‘Difference’ : 14 ) ;
For I := 1 to MaxItems do
WritLn ( I :4, X :8:1, X _ Average :14:1 )
End . { ShowDiff }

اجرای برنامه جدولی از تفاضل ها:
Enter 8 numbers > 16.0 12.0 6.0 8.0 2.5 12.0 14.0 -54.5
The average value is 2.0
Table
I X Difference
1 16.0 14.0
2 12.0 10.0
3 6.0 4.0
4 8.0 6.0
5 2.5 0.5
6 12.0 10.0
7 14.0 12.0
8 -54.5 -56.5

پارامترهای آرایه مقدار یا متغیر:

وقتی آرایه ای بصورت یک پارامتر متغیر به رویه ارسال می شود، پاسگال آدرس اولین عنصر آرایه واقعی را به ناحیه داده های رویه ارسال می کند. از آنجا که عناصر آرایه در سلول های مجاور هم از حافظه ذخیره می شوند، می توان به کل داده های آرایه دستیابی داشت.
رویه مستقیما با آرایه واقعی کار می کند.وقتی آرایه ای بصورت یک پارامتر مقدار به رویه ارسال می شود، هنگام فراخوانی رویه، یک نسخه محلی از آرایه ایجاد می شود. بنابراین آرایه محلی طوری مقدار می گیرد که حاوی همان مقادیری باشد که در ارایه واقعی وجود دارند. رویه با آرایه محلی کار می کند و تغییراتی که در محتویات آرایه محلی اعمال می شود، روی آرایه واقعی تاثیر نمی گذارد.

مقایسه دو آرایه:

Function SameArray (A , B : TestArray ) : Boolean ;
Var
I : Integer ; { array subscript }
Begin
I := 1 ; { Start with first pair . }
{ Test corresponding elements of arrays A and B . }
while (I < MaxSize) and (A = B) do
{ invariant :
1 <= I <= MaxSize and
A = B for all prior values of I
}
I := I + 1 ; { Advance to next pair . }
SamArray := (A) = B) { Define result . }
End ; { SameArray }

رویه برای مرتب کردن عناصر آرایه:
Procedure SelectSort (var Scores {input / output} : ScoreArray ;
ClassLength { input } : Integer) ;
Ver
Fill , { index of element to contaion next smallest score }
IndexofMin: Integer ;
Begin {SelectSort}
For fill := 1 to ClassLength-1 do
Begin
IndexOfMin := FindMin( Scores, Fill, ClassLength ) ;
{ Exchange elements at Fill and IndexofMin . }
if IndexOfMin <> Fill then
Switch ( Scores[IndexOfMin], Scores[Fill] )
End { for Fill }
End ; { SelectSort }

آرایه فشرده:
استفاده از یک آرایه فشرده شده برای یک رشته به پاسکال این امکان را می دهد که در هر سلول حافظه کامپیوتر بیش از یک کاراکتر ذخیره شود. علاوه بر این استفاده از آرایه های فشرده شده باعث می شود که اعمال روی آرایه های فشرده شده برای پردازش رشته به سادگی انجام شود.

تعریف آرایه های فشرده:
شکل استفاده :
type string type = packed array [1 . . size] of char ;


مثال:

type string10 = packed array [1 . . 10] of char ;

تذکر :
نوع اندیس برای string type باید از1 شروع شود.

تذکر:
هنگام نمایش یک متغیر رشته ای ، می توان از یک قالب مشخص استفاده کرد.
دستورات :
Write ( ‘Hello’ , FirstName :4 ) ;
writeLn ( ‘ ! Good to see you .’ )
Hello A.C. ! Good to see you .

کاراکتر های یک رشته درست مثل هر متغیر از نوع char می توانند مورد استفاده قرار گیرند.

مثال 1 :
در صورتی که FirstName حاوی رشته ‘A.C. Jones’ باشد،
دستورات
FirstName [1] := ‘D’ ;
FirstName [6] := ‘B ;’

محتویاتFirstName را به ‘D.C. Bones’ تغییر می دهند.

تذکر:
یک عنصر رشته ای برای یک پارامتر متغیر از نوع Char نمی تواند ارسال شود. ولی یک کاراکتر مستقیما می تواند به عنوان عنصری ازیک متغیر رشته ای خوانده شود.

دستور :
Read ( FirstName [1] )

اولین کاراکتر موجود در رشته FirstName را با کاراکتر داده خوانده شده جایگزین می کند.

مثال :
برنامه نوشتن نامه فرم :

Const
StringLength = 40
Type
StringType = packed array [1 . . StringLength] of Char ;
Var
BodyFile , { input – body of letter }
Letter : Text ; { output – completed letter file }
begin { FormLetter }
Reset ( BodyFile ) ;
Rewrite ( Letter ) ;
WriteLn (Output , ‘writing job application letter .’ ) ;
Preamble ( Letter ) ;
WriteBody ( BodyFile, Letter ) ;
WriteLn ( Output, ‘Letter copied to output file .’ )
End . { FormLetter }

آرایه های دو بعدی:
آرایه های دو بعدی متداول ترین آرایه های چند بعدی هستند که معمولا اطلاعات را به شکل جدول ذخیره می کنند. مثلا نقشه صندلی های یک کلاس، آرایه دو بعدی است که در هر محل ان ردیف و شماره صندلی یک دانشجو قرار می گیرد.

آرایه های چند بعدی:
شکل استفاده :

Type
Multidim = array [ subscript1 , subscript2 , . . . , subscriptn ]
Of element type ;
Type
Multidim = array [subscrip1] of array [ subscript2 ] . . .
Of array [subscript n] of element type ;

پردازش آرایه ها:

دو روش برای دستیابی به عناصر یک آرایه یک بعدی داریم:

1.دستیابی تصادفی
2.دستیابی ترتیبی

برای هر یک از آرایه دو بعدی یا یک جدول، سه روش دستیابی داریم:

1.دستیابی تصادفی
2.دستیابی سطر یه سطر
3.دستیابی ستون به ستون

روش دستیابی سطر به سطر یک آرایه:

For row_subscript . . . do . } { Specify the row

For column_subscript . } . . . do { Access each column of row

Process Table { row_subscript , column_subscript }

روش دستیابی ستون به ستون یک آرایه:

For column_subscript . . . do [Specify the column]

.] For row_subscript . . . Do [Access each row of column

Process Table [ row_subscript , column_subscrip]

مقدار اولیه دادن به یک آرایه:
رویه، Initialize به هر عضو از پارامتر آرایه خود یعنی Sales مقدار اولیه Invalue را می دهد. این رویه به عناصر آرایه به روش سطر به سطر دستیابی می کند.

Procedure Initialize (var Sales { output } : SalesArray ;
InValue { input } : Real ; )
var
NextPerson : Pepole ; { Row subscript }
NextQuarter : Quarter ; { Column subscript }
Begin { Initialize }
For NextPerson : = 1 to NumberSalesPeopel do
For NextQuarter := Fall to Summer do
Sales[NextPerson, NextQuarter] := InValue
End ; { Initialize }
آرایه سه بعدی:

پاسکال تعداد ابعاد ممکن برای یک آرایه را محدود نمی کند، ولی بیشتر آرایه های با ابعاد دو و سه متداولتر هستند.

حال چند مثال جالب را حل می کنیم:

مثال1:
برنامه ای بنویسید که نمره ریاضی تعدادی از دانشجو را در آرایه ای ذخیره کند.سپس بیشترین و کمترین نمره و محل آن را در آرایه چاپ کند؟

Progam min_max ;
Uses wincrt ;
Var a:array [1..100] of real ;
Max,min:real ;
I, locmax,locmin,n:integer ;
Begin
Write ( 'please enter number of students:' ) ;
Readln ( n ) ;
For i:= 1 to n do
Readln ( a ) ;
Max:= a[0] ; min:= a[0] ;
Locmax:=1 ; locmin:=1 ;
For i:=2 to n do
Begin
If ( a>max ) then
Begin
Max:=a ; locmax:=I ;
End ;
If a
Begin
Min:=a ; locmin:=I ;
End ;
End ;
Writeln ( 'max=',max,'position=' , locmax ) ;
Writeln ( 'min=',min,'position=' , locmin ) ;
End .

مثال2: هشت عدد را خوانده و در آرایه ای ذخیره کنید.سپس به روش حبابی آن را به صورت صعودی مرتب کرده و چاپ کنید؟
Program bubble_sort ;
Uses wincrt ;
Const n:=8 ;
Var
A:array [1..n] of integer ;
I,j,temp:integer ;
Begin
Write ( 'please enter 8 integer numbers:' ) ;
For i:=1 to n do
Readln ( a ) ;
For j:=1 to n-1 do
For i:=1 to n-j do
If a>a[i+1] then
Begin
Temp:=a ;
A:=a[i+1] ;
A[i+1]:=temp ;
End ;
Writeln ( 'sorted numbers:' ) ;
For i:= 1 to n do
Writeln ( 'a[',I,']=',a ) ;
End .
مثال3: هشت عدد را خوانده و در آرایه ای ذخیره کنید.سپس به روش انتخابی آن را به صورت صعودی مرتب کرده و چاپ کنید؟
Program selection_sort ;
Uses wincrt ;
Const n:=8 ;
Var
x:array [1..n] of integer ;
I,j,min,index :integer ;
Begin
Write ( 'please enter 8 integer numbers:' ) ;
For i:=1 to n do
Readln ( a ) ;
For j:=1 to n-1 do
Begin
Min:=x ; index:=I ;
For j:=i+1 to n do
If x[j]
Begin
Min:=x[j] ;
Index:=j ;
End ;
X[index]:=x ;
X:=min ;
End;
Writeln ( 'sorted numbers:' ) ;
For i:= 1 to n do
Writeln ( 'a[',I,']=',a ) ;
End .

مثال 4 :فرض کنید آرایه x با n خانه از قبل مرتب باشد. متغیر k حاوی کلیدی است که می خواهیم دنبال آن بگردیم. متغیر های low,high,mid از نوع صحیح می باشند. تکه برنامه زیر آرایه x را جهت یافتن k جستجو می کند . (جستجوی دودویی)
Low:=1 ; high:=n ;
While low<=high do
Begin
Mid:=( low+high ) div 2 ;
If k
High:=mid-1
Else
If k>x[mid] then
Low:=mid+1
Else
Begin
Write( 'the number',k,'exist in array ' ) ;
Halt ;
End ;
End ;
Write( 'the number',k,'not exist in array ' ) ;

نکته:در روش ججستجوی دودویی ، در بدترین حالت با [ logn ]+1عمل مقایسه می توانیم کلید را پیدا کنیم.

فایل های متن ، فایل های داده و فایل های خروجی:

یک فایل متن مجموعه ای از کاراکتر ها است که تحت یک نام روی دیسک ذخیره می شود . می توانید کلیه داده هایی که توسط برنامه مورد پردازش قرار می گیرند را قبل از اجرای برنامه ، در یک فایل متن ذخیره کنید . سپس به برنامه دستور خواندن داده ها را از فایل متن به جای صفحه کلید بدهید .

فایل داده:
یک فایل داده (یا فایل ورودی ) فایلی است که شامل اطلاعات ورودی برنامه است یک فایل داده می تواند از نوع متن دودویی باشد .

مزایای فایل داده ها :
یکی از مزایای فایل های داده این است که می توان آن ها را با استفاده از ویراستار برنامه(یا واژه پرداز)بازیابی کرد و قبل از اینکه فایل ، توسط برنامه پردازش شود خطاهای آن را اصلاح کرد . مزیت دیگر آنها این است که می توانند چندین بار توسط برنامه خوانده شوند .این خاصیت ،اشکال زدایی را آسان می کند. همچنین می توان نتایج برنامه را به جای صفحه کلید در یک متن ،نوشت .


ساختار اطلاعات در یک فایل متن:

یک فایل متن می تواند توسط یک ویراستار ،ایجاد و ذخیره شود هر کاراکتری که تایپ می شود به طور موقت در حافظه اصلی قرار می گیرد و روی صفحه ، نمایش داده می شود . وقتی فایلی ذخیره می کنید ، اطلاعات روی صفحه نمایش ، به صورت رشته ای از کاراکتر ها روی دیسک ذخیره می شوند .

ساختار منطقی یک فایل متن:

از نظر منطقی فایل متن شامل خطوطی از کاراکتر ها است که این خطوط توسط کاراکتر< eoln> از یکدیگر جدا می شوند . با استفاده از یک ویراستار یا یک فرمان سیستم عامل (نظیر فرمان زیر ) می توان یک فایل متن را روی صفحه نمایش مشاهده کرد.

> type filename

خواندن اطلاعات از فایل متن:

می توان از رویه readln برای خواندن داده از یک فایل متن استفاده کرد. برنامه ای در نظر بگیرید که شامل تعریف متغیرهای زیر است :

Var
Salary : real ; { input – a salary }
First . last ; char; { input – initials }
Separator : char ; { input – blank between salary and first }
Mydata :Text ; { a text file used as data file }

عبارت :
Readln ( mydata, Salary, Separator, First, last )

رویه :read

رویه ورودی دیگر ، رویه read است که کار آن نیز خواندن اطلاعات از صفحه کلید یا فایل است . بر خلاف readln ، رویه read تنها کاراکتر های داده ای که در لیست ورودی اش مشخص شده را می خواند.
مثال :
دستورات :
Read ( mydata , salary ); { read salary from mydata. }
Read ( mydata , separator ) { read the balank character }
Read ( mydata , first , last ) { read initials from mydata }
Readln ( mydata ) { skip past < eoln > character in mydata. }

نتیجه یکسانی با دستور زیر دارند.

Readln ( mydata , salary , separator , first , last )

نوشتن نتایج در فایل متن :

برای نوشتن نتایج در فایل های متن از رویه های write و writeln استفاده می کنیم .این رویه ها درست مانند همان رویه های چاپ نتایج روی صفحه نمایش هستند اگر اولین پارامتر در فراخوانی write یا writeln ، متغیری از نوع text باشد خروجی به جای صفحه نمایش به فایل فرستاده می شود .

رويه هاي write , writeln:

شكل استفاده :

Write ( outfile , output list )
Writeln ( outfile , output list )

مثال :

Write ( myresult , salary )
Writeln ( myresult , hours : 3 :1 , ‘ s’ , salary :4 :2 )

نامهاي داخلي و خارجي فايل:

براي اینکه پاسكال قادر به بازيابي يك فايل ذخيره شده روي ديسك باشد ، بايد نام دايركتوري ديسك كه فايل در آنجا قرار مي گيرد را داشته باشيد.

رويه Reset:

شكل استفاده :

Reset ( infile )

مثال :

Reset ( mydata )

فايل mydata را به عنوان ورودي برنامه آماده مي كندو نشانگر موقعيت فايل نيز به ابتداي فايل منتقل مي شود. نشانگر موقعيت فايل همواره به كاراكتر بعدي كه قرار است پردازش شود ، اشاره مي كند.بعد از عمل reset ، كاراكتري كه خوانده مي شود ، اولين كاراكتر فايل است.

نکته :

عمل reset قبل از اينكه كاراكتري از فايل mydataخوانده شود ، انجام مي گيرد و اگر فايل mydata قبلاروي ديسك ذخيره نشده باشد ، اين عمل ناموفق است ، براي خواندن و پردازش فايل در بار دوم و در همان برنامه ، عمل reset بايد انجام شود.

رويه rewrite:

شكل استفاده :
Rewrite ( outfile )

مثال :

Rewrite( outdata )

فايل outdata را براي خروجي آماده مي كند .اين فايل در ابتدا خالي است.كليه داده هايي كه قبلا در فايل outdata ذخيره شده اند، از بين مي روند.

تست انتهاي فايل : تابع EOF:

شكل استفاده :
EOF( filename )

مثال :
EOF( infile )


تمام فايل ها به طور اتوماتيك با كاراكتر< eof > خاتمه مي يابند.و تابع از پیش ساخته شده EOF در پاسكال (مخفف ENDOF FILE ׂ( تست مي كند كه آيا كاراكتر بعدي فايل eof است يا خير؟

نکته :

در صورتي كه كليه كاراكتر هاي فايل infile پردازش شده باشند (يعني كاراكتر بعدي ، كاراكتر < eof > باشد)، true را بر مي گرداند و اگر هنوز کاراکتر هایی برای خواندن وجود داشته باشند false را بر می گرداند .

تست انتهای خط : تابع EOLN :

شكل استفاده :
EOLN( filename )

مثال :
EOLN ( infile )



پاسکال تابعی به نام EOLN ( END OF LINE )دارد که قادر به تشخیص کاراکتر < eoln > است. در صورتی که کاراکتر بعدی < eoln > باشد , تابع EOLN مقدار true و در غیر این صورت false را بر می گرداند.
نکته :
1.اگر کاراکتر بعدی فایل , < eoln > باشد ,نتیجه تابع true و در غیر این صورت false خواهد بود .


2.اگر file name حذف شود ,فایل سیستم input (صفحه کلید ) ، فایل ورودی است. در پاسکال استاندارد , فراخوانی تابع EOLN در صورتی که EOF( filename ) ، True باشد ،خطا است.

استفاده از فایل های متن:

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

Assign( ):

این تابع شناسه فایل را به فایل خارجی منسوب می کند در اگر فایل وجود نداشته باشد آن را می سازد.
نحوه کاربرد:
Assign( my_file,external_name ) ;
بستن فایل=close ( )
این تابع برای بستن فایل می باشد.
نکته:
1.اگر قبل از خاتمه برنامه تمامی فایل ها را نبندید ،هیچ کدام از اعمالی که بر فایل اعمال نموده اید ،اجرا نخواهد شد.
2.قبل از این که بتوانید بین عملیات ها سوئیچ کنید، باید فایل را ببندید، به عنوان نمونه ،بعد از نوشتن اقلامی در فایل، باید آن را ببندید و مجددا قبل
ازخواندن اقلام دوباره آن را باز کنید.

نحوه کاربرد:
Close( file_name ) ;
دستیابی تصادفی به فایل ها-seek( ):

پاسکال روشی را برای دستیابی به فایل ها ارائه می کند که به آن دستیابی تصادفی می گویند. دستیابی تصادفی اجازه می دهد تا قلم داده خاصی از فایل را که می خواهید پردازش کنید، با مشخص کردن موقعیت آن، انتخاب کنید.

نحوه کاربرد:
Seek( file_name,position_number ) ;


حال چند مثال جالب از فایل ها را حل میکنیم:

مثال1.برنامه ای بنویسید که نام،تاریخ تولد، شماره تلفن فردی را گرفته و در فایلی ذخیره کند؟
Program file_ex ;
Uses wincrt ;
Type rec_type=record
Name:string ;
Date_of_brith:string ;
Telephone_number:string ;
End ;
Var
My_file:file of rec_type ;
Rec_var: rec_type ;
Ch:char ;
Begin
Clrscr ;
Assign( my_file,'file_1.dat' ) ;
Rewrite ( my_file ) ;
Repeat
Write( 'enter a name:' ) ;
Readln( rec_var.name ) ;
Write( 'enter a date of brith:' );
Readln( rec_var.date_of_brith ) ;
Write( 'enter a telephone number:' ) ;
Readln( rec_var.telephone_number ) ;
Write( my_file,rec_var ) ;
Write( 'continue? Reply y/n: ' ) ;
Readln( ch ) ;
Until ( ch='n') or(ch='N') ;
Close( my_file ) ;
End .

مثال 2. برنامه بالا را برای افزودن رکورد جدید تغییر دهید؟

Program file_ex ;
Uses wincrt ;
Type rec_type=record
Name:string ;
Date_of_brith:string ;
Telephone_number:string ;
End ;
Var
My_file:file of rec_type ;
Rec_var: rec_type ;
Ch:char ;
Begin
Clrscr ;
Assign( my_file,'file_1.dat' ) ;
Reset ( my_file ) ;
Seek( my_file,filesize( my_file) ) ;
Write( 'enter a name:' ) ;
Readln( rec_var.name ) ;
Write( 'enter a date of brith:' );
Readln( rec_var.date_of_brith ) ;
Write( 'enter a telephone number:' ) ;
Readln( rec_var.telephone_number ) ;
Write( my_file,rec_var ) ;
Close( my_file ) ;
End .

مثال3. برنامه ای کامل برای جستجوی قلم داده ای خاص در درون فایل بنویسید؟

Program file_ex ;
Uses wincrt ;
Type rec_type=record
Name:string ;
Date_of_brith:string ;
Telephone_number:string ;
End ;
Var
My_file:file of rec_type ;
Rec_var: rec_type ;
Sought_name: string ;
Found:Boolean ;
Found_ind, counter:integer ;
Begin
Clrscr ;
Assign( my_file,'file_1.dat' ) ;
Reset ( my_file ) ;
Counter:=0 ;
Write( 'enter a name to be Found :' ) ;
Readln (Sought_name ) ;
Repeat
Seek( my_file,counter) ;
Read(my_file,rec_var ) ;
Found:=rec_var.name= Sought_name ;
If Found then

10پيشنهاد براي سالم بودن

برخي پيشنهادها مي‌توانند، پيشنهادهاي سازنده‌اي باشند و روي زندگي شما تاثير بگذارند به شرطي که به آنها فکر کنيد، و عمل کردن به آنها را از ياد نبريد. اين 10 پيشنهاد براي سالم ماندن شماست: 1- ورزش کنيد: براساس توانايي بدني و فرم فيزيکي‌تان سعي کنيد هر دو روز يک بار يک ساعت ورزش کنيد و اگر نمي‌توانيد حداقل هر روز نيم ساعت پياده‌روي کنيد. 2- غذاي سالم طبيعي بخوريد: اين موضوع به ويژه در مورد شير، تخم‌مرغ و ميوه‌ها مهم است.سعي کنيد مواد غذايي را مصرف کنيد که از حيوانات يا گياهان پرورش‌يافته صنعتي به دست نيامده باشند.مواد طبيعي به ويژه شير و تخم‌‌مرغ طبيعي امگا3 بالايي دارند که براي فعاليت قلب و عروق بسيار مفيد است. 3- هواي خانه و محل کارتان را تهويه کنيد: بررسي‌ها نشان داده هواي منازل ما آلوده است و حتي گاهي ميزان آلودگي آن از فضاي بيرون از خانه بيشتر است.توصيه مي‌شود هر روز حداقل يک مرتبه پنجره‌ها را باز بگذاريد تا هواي داخل خانه يا محل کارتان تهويه شود. 4- هر چند وقت يک بار چکاپ کامل دهيد: توصيه مي‌شود از 50 سالگي به بعد به طور مرتب سلامت خود را مورد بررسي قرار دهيد تا از وجود هر نوع بيماري به ويژه انواع سرطان‌ها به سرعت باخبر شويد.انجام ماموگرافي هر دو سال يکبار،تست هموکولت دو يا رديابي خون در ادرار هر دو سال يک بار و اندازه‌گيري PSA براي مردان در هر سال ضروري است.در ضمن آزمايشات کلي مي‌تواند شما را از ميزان قند و چربي خون‌تان يا ديگر مسايل باخبر کند. 5- صرفه‌جو باشيد : جالب است بدانيد داشتن يک رفتار اکولوژيک در سلامت شما بسيار موثر است.وقتي به خريد مي‌رويد تنها ضروريات را بخريد.به جاي آنکه برخي وسايل را دور بريزيد، آنها را تعمير کنيد يا وسايل ديگري با آ‌نها بسازيد. 6- مراقب گو‌ش‌هاي‌تان باشيد: اگر عادت داريد از هدفون استفاده کنيد،مدت زمان گوش دادن به موسيقي و صداي ضبط‌تان را پايين بياوريد.ترجيحا هدفون را کنار گذاشته و با صداي آزاد موسيقي گوش دهيد. 7- مراقب دندان‌هايتان باشيد: آخرين باري که به دندان‌پزشک مراجعه کرديد کي بود؟ هر سال براي چکاپ دندان‌ها سري به مطب دندان‌پزشکي بزنيد.درست مسواک زدن و استفاده از نخ دندان را هم فراموش نکنيد. 8- قدرت بينايي را کنترل کنيد: اگر حس مي‌کنيد خوب و واضح اشيا را نمي‌بينيد،صبر جايز نيست.از يک دکتر چشم‌پزشک وقت ملاقات بگيريد.ابتلا به ناراحتي‌هاي چشمي مي‌تواند ديد شما را بسيار محدود کند.از 45 سالگي به بعد هم هر دو سال سري به مطب چشم‌پزشکي بزنيد تا از سلامت چشمان‌تان مطمئن شويد. 9- روزانه 5 نوع ميوه و سبزي بخوريد: خوردن 5 نوع ميوه و سبزي در روز جزو برنامه ملي سلامت تغذيه است.اين نوع موادغذايي حاوي فيبر، ويتامين و مواد معدني مورد نياز براي خوب کار کردن ارگانيسم‌هاست و مي‌تواند از بروز بسياري ناراحتي‌ها و بيماري‌ها از جمله سرطان جلوگيري کند. 10 - دو بار در هفته ماهي بخوريد: ماهي‌ها منابع غني امگا3 هستند و مي‌توانند از بروز بيماري‌هاي قلبي‌عروقي، آلزايمر، افسردگي، تحليل رفتگي ماهيچه‌ها با افزايش سن و ... جلوگيري کنند.

استخوان‌هايتان را با ماءالشعير تلخ تقويت کنيد

دانشمندان مي‌گويند که مصرف ماءالشعير تلخ در تقويت استخوان‌ها موثر است.

به گزارش ايسنا، مطالعه انجام شده بر 100 نوع ماءالشعير تلخ نشان داده ماءالشعير منبع بي‌نظيري از سيليکون رژيمي است. اين نوع سيليکون نقش حياتي در سلامت استخوان دارد.

دانشمندان براي اندازه‌گيري محتواي سيليکون، ابتدا ماءالشعيرهاي تلخ را با محتواي خام آن‌ها مقايسه کردند. آنها دريافتند که ماءالشعيرهاي تلخ پس از فرآيند مالت‌زدگي، مقدار متوسطي از 30 ميلي‌گرم بر ليتر، سيليکون رژيمي را دربرداشتند؛ البته هيچ پيشنهادي مبني بر جذب روزانه سيليکون نشده است.

۹ مشخصه ای که یک وب سایت نباید داشته باشد !

عموماً وقتی از سایت شما صحبت می‌شود، نباید هیچ کم و کسری در آن وجود داشته باشد.

اما خیلی کم به آن چه که نباید در وب‌سایت باشد، پرداخته شده است. این مساُله تاُثیر منفی بر عملکرد سایت دارد، زیرا برنامه‌ریزی ضعیف و غافل شدن از سایت، ممکن است به از دست دادن شغل، مسایل امنیتی، ترافیک کم و سایر مشکلات منجر شود. البته این مشکلات قابل جلوگیری هستند. و این هم ۹ عاملی که باید از آنها اجتناب کنید:
۱) گذاشتن عکس در صفحه‌ی اصلی:
با وجود آن که عکس شما یک نوع خوشامدگویی به بازدیدکنندگان شمار می‌آید، برخی کارشناسان عقیده دارند، این عکس، دلیل حضور بازدیدکنندگان را در سایت شما کم رنگ می‌کند. لارینا کیس، رییس بخش کارشناسی موفقیت و عملکرد ـ یک موسسه‌ی مشاوره در فیلادلفیا ـ در این‌باره می‌گوید:”دیدن این عکس، مانند ملاقات یک شخص جدید است، و به جای پرداختن به مسایل بازدیدکنندگان، مثل این است که به آنها بگویید:”من چقدر در عکس، عالی هستم“. وب سایت شما باید تماماً درباره‌ی بازدیدکننگان باشد و نه در مورد شما. قبل از هر چیز باید آنها را به سایت، علاقمند کنید“.
۲) زیاده رو ی در پخش قطعات دیداری و شنیداری:
این مورد شامل هر قطعه‌ی دیدنی و شنیدنی می‌شود. از یک طرف تصاویر متحرک گیج کننده در صفحه‌ی اصلی واز طرف دیگرهر نوع عکس، از مشتریان سایت گرفته تا موش خانگی شما. مورد اول چیزی بیش از بهره‌گیری بیهوده از فن‌آوری جدید نیست و مثال آخر، گمراه شدن از مسیر فعالیت‌های حرفه‌ای است. گذشته از این، بارگذاری موسیقی‌های پرزرق برق و پر سر و صدا مدت زیاد‌ی طول می‌کشد و همین امر، بازدید کنندگان سایت شما را فراری می‌دهد. روت آترلی( یکی از شرکای اصلی مرکز استراتژی‌های خلاق،یک آژانس ارتباطات مردمی در ریچموند،ب،س،کانادا) می‌گوید: ”داشتن یک سایت با فن‌آوری قوی برای بسیاری از وب سایت‌ها ضروری است، اما برای حضور تکنولوژی باید دلیلی مهم‌تر از تحت تاثیر قراردادن مردم، وجود داشته باشد.
۳) وجود گزینه‌های گیج‌کننده‌ی فراوان:
این مورد شامل هر قطعه‌ی دیدنی و شنیدنی می‌شود. از یک طرف تصاویر متحرک گیج کننده در صفحه‌ی اصلی واز طرف دیگرهر نوع عکس، از مشتریان سایتبه شما حق می‌دهم، چرا که می‌خواهید صفحات و مطالب گوناگون زیادی به بازدیدکنندگان سایت خود ارایه دهید. اما ساختار سایت باید به اندازه‌ی کافی ساده باشد، تا بازدیدکنندگان گیج و سر در گم نشوند. کیس در این باره می‌گوید:”از تنظیم فهرست انتخابی با حدود ۲۰ گزینه‌ی انتخابی خودداری کنید، افراد،در هر بار می‌توانند بین ۵ تا ۹ مطلب را به خاطر بسپارند. سعی کنید از این حد فراتر نروید، چون در غیر این صورت،آنها گیج شده، سایت شما را ترک می‌کنند.“
۴) اطلاعاتی که ممکن است به حریم شخصی افراد و مسایل امنیتی لطمه وارد کند:
البته این مساُله تا حد زیادی به ماهیت وب سایت، شغل و کنارآمدن شما با قضایا بستگی دارد. در هر صورت ضروری است، که مطالب وب سایت خود را خوب بررسی کنید، تا اطلاعاتی که به مسایل شخصی و مسایل امنیتی لطمه وارد می‌کند، و همچنین مورد علاقه‌ی هکرها است در آن موجود نباشد. در ابتدایی ترین مراحل، باید از گذاشتن عکس‌ها، آدرس‌های ایمیل و جزییات شخصی کارکنان در وب سایت خودداری کنید. همچنین، چگونگی طراحی ساختار
۵) گذاشتن اطلاعاتی در وب سایت که به سود رقبای شما باشد:
مسئولین بخش برنامه‌ریزی اطلاعات یک وب سایت، باید مانند دزدها فکر کنند. به این ترتیب، احتمال این که این افراد، برنامه‌های اطلاعاتی را طراحی کنند که مورد علاقه‌ی رقیبان سایت باشد، از یبن می‌رود. برخی بخش‌های اطلاعاتی در نوع خود بی‌ضرر هستند، اما در ترکیب با یکدیگر، می توانند مطالب زیادی را درباره‌ی فعالیت‌های شغلی، شرکای استراتژیک، مشتری‌هاو ساختار درونی سازمان شما آشکار سازند. در این جا هم حضور یک کارشناس بسیار سودمند است.
۶) سخنان نامفهوم و کلمات فنی پیچیده:
هدف اصلی بیشتر وب سایت‌ها آگاه ساختن مشتریان از نحوه فعالیت‌های سایت و چگونگی ارائه خدمات و تولیدات به مشتریان است. وقتی در سایت خود از زبانی فنی یا اصطلاحاتی نامفهوم استفاده می‌کنید به طوری که اکثر مردم از درک آنها عاجزند در حقیقت به کار بیهوده‌ای دست زده‌اید. از بیانی شیوا و مستقیم استفاده کنید. شرهورویتس متصدی امور تبلیغات و نویسنده‌ی کتاب اصول کسب درآمد: بازاریابی با رعایت حقوق مشتری در این باره می‌گوید: استفاده از کلمات پیچیده یا زیاده گویی در اینترنت امری عادی است. اما این مسأله با صداقت‏، کیفیت محصولات و درستکاری فعالیت‌های شما مغایرت دارد.
۷) مطالبی که شغل شما را بهتر از آنچه که هست نشان می‌دهند:
مطمئناَ قصد شما فروش اجناس از طریق وب سایت است. اما بازاریابی ـ فوت و فن فروش و تعاریف اظهار نظرهای مشتریان ـ که بیشتر از آگاهی دادن و جذب مردم به لاف زدن می‌پردازد؛ فقط بازدید کنندگان را فراری می‌دهد. آترلی می‌گوید : ”وب سایت خود را با تبلیغات پر نکنید بلکه آن را به شکل یک مکالمه دو طرفه بین خود و بازدید کنندگان طراحی کنید“.
۸) مکان‌های گفتگوی بدون نظارت:
اگر قصد دارید یک محیط گفتگو ایجاد کنید، از یک ناظر برای پذیرفتن موارد احتمالی استفاده کنید به این ترتیب از هرز نامه‌ها، درخواست‌های خلاف عرف، نقض حریم امنیتی و سایر درد سرها دوری می‌کنید.
۹) لینک‌های به درد نخور و مطالب قدیمی:
هیچ چیز به اندازه اطلاعات نامربوط و قدیمی بازدید کنندگان سایت را گمراه نمی‌کند. همین اتفاق در مورد لینک‌هایی صادق است که افراد را به صفحات غلط هدایت می‌کند. به طور منظم سایت خود را بررسی کرده و لینک‌های تغییر یافته و از رده خارج را شناسایی کنید.

ميوه ‌درشت نخريد

اين روزها وقتي براي خريد به بازار ميوه‌فروشان مراجعه مي‌كنيم، ميوه‌هايي با ظاهر بسيار درشت كه طعم، خاصيت و ماندگاري چنداني نيز ندارند توجهمان را جلب مي‌كند. در واقع اغلب اين ميوه‌ها حاصل استفاده بي‌رويه از كودها و سموم شيميايي و باقي ماندن تركيبات نامطلوب آنها در اين‌گونه محصولات است كه به اين صورت ظاهر مي‌شوند.

امروزه اغلب محصولات كشاورزي در تمام مراحل رشد از طريق كودها و سموم شيميايي تغذيه مي‌شوند. اين محصولات طعم خوب و كيفيت بالا ندارند و نيترات موجود در آنها مي‌تواند موجب بروز انواع سرطان‌هاي گوارشي در مصرف‌كنندگان گردد.

نيترات موجود در كودها مي‌تواند در همه انواع ميوه و سبزي رسوخ كند. اما محصولاتي كه در دل خاك جاي مي‌گيرند، مثل: پياز، سيب‌زميني، هويج و ... قابليت جذب بيشتري دارند. معمولا نفوذ تركيبات نامطلوب كودها در محصولاتي كه در دل خاك رشد مي‌كنند، مي‌تواند موجب بزرگ و سنگين شدن سبزي‌هاي غده‌اي گشته و سود بيشتري را براي باغدار به دنبال داشته باشد.

اين سموم مي‌توانند در انواع ميوه و سبزي كه به صورت بوته‌اي در سطح زمين رشد مي‌كنند و ارتفاع كمتري دارند نيز نفوذ كند. اما در مقابل ميوه‌هاي درختي كه ارتفاع بيشتري از زمين دارند، كمتر در معرض اثرات نامطلوب كودها قرار دارند. متاسفانه ذرات كودهاي شيميايي وقتي به داخل ميوه و سبزي راه‌پيدا مي‌كنند با هيچ روشي از بين نمي‌روند. البته توصيه مي‌شود براي كاهش سموم سطحي، ميوه‌ها را قبل از مصرف با مواد ضدعفوني‌كننده بشوييد.

چه بايد كرد؟

درشتي ميوه‌ها در بيشتر مواقع به دليل نيترات بالاي موجود در آنهاست. لذا هنگام خريد از ميوه‌هاي درشت صرف‌نظر كنيد و ميوه‌هاي متوسط يا كوچك با رنگ روشن را انتخاب كنيد. چرا كه تيره بودن ميوه خود نشان نيترات بالاي آن است.

از خريد سيب‌زميني‌هاي كدر و تيره‌رنگ اجتناب كنيد و پيازهايي را كه بخش خروج جوانه آنها باريك‌تر است، انتخاب كنيد.

كودهاي شيميايي و سموم دفع آفات باعث كاهش ويتامينC و بي‌طعم شدن محصول مي‌شوند بنابراين وقتي مي‌بينيد خيار يا گوجه فرنگي طعم واقعي خود را ندارند مي‌توانيد مطمئن شويد كه مقداري از سموم جذب آنها شده است، بنابراين ميوه و سبزيجات بي‌مزه را نخوريد.

از خريد سبزيجات غده‌اي درشت مثل پياز، سيب‌زميني و هويج پرهيز كنيد و بدانيد كه در هر كيلو سيب‌زميني يا پياز 7 تا 8 عدد از اين محصول جاي گيرد.

ميوه‌هاي تكثير يافته با كودهاي شيميايي بلافاصله پس از بريده شدن تغيير رنگ داده و تيره مي‌شوند لذا وقتي سيبي را گاز زديد و به سرعت كدر شد از مصرف آن بپرهيزيد.

سبزي‌هاي برگ درشت و سفت را انتخاب نكنيد و قبل از مصرف ميوه و سبزي به دقت آنها را ضدعفوني كنيد.

بهترين توصيه به هموطنان عزيز آن است كه از مصرف ميوه‌هاي گلخانه‌اي، انباري و وارداتي اجتناب كنيد و نوع فصلي آنها را كه معمولا در فصل معين خود رشد مي‌كنند و تازه‌تر و پرخاصيت‌تر هستند و طعم و ماندگاري بيشتري دارند و در مقايسه با ميوه‌هاي غيرفصلي (گلخانه‌اي)‌ كود و سموم كمتري براي پرورش آنها به كار رفته، استفاده كنيد.