تمام کامپیوترهای رقمی ، بدون توجه به اندازه انها ، اساسا دستگاههای الکترونیکی ای هستند که برای انتقال ، ذخیره وپردازش اطلاعات ( یعنی داده ها) مورد استفاده قرار می گیرند .
کامپیوتر ها قادرند انواع مختلفی از داده ها را پردازش کنند .
از این میان می توان داده های عددی ، کا راکتری (نام ، ادرس ) داده های گرافیکی ( نمودار ،رسم ، عکس ) وصوت ( موسیقی ، سخنرانی ) را نام برد.
دو نوع از متداولترین داده ها ، داده های عددی وداده های کاراکتری هستند .
برنامه های کاربردی علمی ومهندسی عمدتا با داده های عددی سروکار دارند ، حال انکه برنامه های کاربردی تجاری وبازرگانیمعمولا نیازمند پردازش هر دو نوع داده ی عددی و کاراکتری هستند .
برای پردازش مجموعه خاصی از داده ها ، باید به کامپیوتر مجموعه ای از دستورها ی مناسب داده شود که به ان برنامه می گویند .
این دستورها وارد کامپیوتر شده پس از ان در بخشی از حافظه ذخیره می شود .
می خواهیم برنامه ای بنویسیم که مساحت یک دایره را با استفاده از دستور a=πr² محاسبه کند .
داده ورودی شعاع دایره r است که یک مقدار عددی است .
در برنامه به مراحل زیر نیاز داریم :
1- مقدار عددی شعاع دیره را بخوانید .
2- با استفاده از دستور بالا، مقدار مساحت را محاسبه کنید .
این مقدار همراه با داده ورودی ، در حافظه کامپیوتر ذخیره می شود .
3- مقادیر شعاع ومساحت متناظر با ان را چاپ کن .
4- پایان .
پایان مقدمه
تاریخچه زبان پاسکال :
انواع زبانها ی برنامه نویسی :
زبانهای مختلف ومتعددی وجود دارد که به کمک انها می توان برای کامپیوتر برنامه نوشت .
ابتدایی ترین این زبان , زبان ماشین است که از مجموعه ای از دستورهای رمزی با 0 و1 با جزئیات کامل برای کنترل مدارهای داخل کامپیوتر تشکیل شده است .معمولا یک برنامه کامپیوتری به یک زبان سطح بالا نوشته می شود که مجموعه دستورهای ان زبان با زبان طبیعی و فرایند اندیشه انسان سازگار است .
اکثر این زبانها ، مانند زبان پاسکال ، زبان همه منظوره هستند .
از دیگر زبان های همه منظوره می توان زبان C , C+ +و فورترن را نام برد .
علاوه بر این زبان های یک منظوره متعددی وجود دارد که برای کاربرد های خاص طراحی شده اند مانند زبانهای CSMP و SIMAN که معروفتر از بقیه هستند .
زبان های یک منظوره اخیر مخصوص شبیه ساز هستند .
زبان یک منظوره LIST زبان پردازش لیست است که از ان به طور گسترده ای برای برنامه های کاربردی هوش مصنوعی استفاده می شود .
نیکلاس ورث، زبان پاسکال را برای اولین بار در نیمه اول دهه 1970 در دانشگاه صنعتی زوریخ ، در سوئیس ، طراحی کرد .
هدف اولیه ورث ایجاد یک زبان برنامه نویسی سطح بالا و منظم برای اموزش برنامه نویسی ساخیافته بود .
تعریف اولیه ورث از این زبان را گاهی اوقات پاسکال استاندارد یا پاسکال استاندارد تعریف شده توسط ینسن و ورث می گویند .
از سال 1983 ، شرکت borland که یک شرکت کوچک نرم افزاری است ، کامپایلر پاسکال ارزان قیمتی به نام توربو پاسکال tuorbo pascal برای استفاده روی کامپیوتر های شخصی به بازار عرضه کرده است .
توربو پاشکال ، به خاطر قیمت پائین و استفاده ساده از ان موقیت فراوانی کسب کرده است این کامپایلر همراه با توسعه و تکامل زبان پاسکال ، به یک محیط برنا مه نویسی کامل تبدیل شده است که حاوی یک ویرایشگر و یک اشکال زدای سؤال و جوابی است.
ساختار یک برنامه پاسکال :
مراحل برنامه نوسی :
1- برسی صورت مساله و اجزای مربوطه
2- شناسایی پارامتر های ورودی و انتخاب نام یا شاخص مناسب برای هر کدام
3- شناسایی پارامتر های خروجی و انتخاب شاخص مناسب برای هر کدام
4- طراحی دستورالعمل با الگوریتم مناسب برای حل مساله با توجه به داده های ورودی و اطلاعات مورد نیاز خروجی .
نوشتن الگوریتم به زبان فلوچارت با استفاده از علائم استاندارد مورد نیاز .
5- ترجمه الگوریتم طراحی شده به خطوط برنامه های زبان مورد نظر .
6- تایپ متن برنامه در محیط نرم افزار مورد نظر .
7- کامپایل کردن و ترجمه برنامه به زبان ماشین ( این کار توسط ابزار برنامه نویسی انجام می شود .
8- اجرای برنامه و رفع اشکالات جواب خروجی ( این اشکالات ناشی از الگوریتم اشتباه می باشد .
مراحل ساختن فایلهایی که در کامپیوتر برای تولید یک برنامه مورد نیاز است :
مراحل ساختن فایلهایی که در کامپیوتر برای تولید یک برنامه مورد نیاز است : source code متن برنامه نوشته شده می باشد که از الگوریتم برنامه ترجمه شده است .
تمرین 1 : برنامه ای بنویسید که حاصل جمع و میانگین دو عدد را محاسبه کند و نمایش دهد.
out put input sum = x وy 0- شروع 1-خواندن 2 عدد ورودی و ذخیره در شاخص های مربوطه محاسبه حاصل جمع x وy sum .
3-محاسبه میانگین و ذخیره در شاخص مربوطه 2 average = sum ⁄ 4-چاپ خروجی sum و average 5-پایان معرفی علائم فلورچارت : 1- start \ end 2- flow جهت حرکت داده ها ورودی , خروجی ( I, o ) در یافت اطلاعات از key board ,scanner, disk, modem , خروجی اطلاعات از monitor , printer,disk, modem 4- هر نوع محاسبه ای در این محل انجام می شود .
5-NO if هر نوع تصمیم گیری در این مکان انجام می شود که شرط کلی برای if این است که اگر از بالا یک علامت وارد شود دو علامت YES و NO خارج می شود .
YES الگوریتم : تمرین 2 : برنامه ای بنویسید که قیمت یک زمین دایره ای شکل را به ازای متری 750 هزار محاسبه کند .
خروجی ورودی مساحت area rediuse متغیر pi=3.14 ثابت p=750000 فلورچارت یا روند نما : شکل نمایش هندسی الگوریتم است .
شرع حداکثر یک خروجی ولی پایان حداقل یک ورودی دارد .
متوازی الاضلاع یک یا بیشتر ورودی ولی یک خروجی دارد .
مستطیل یکی یا بیشتر ورودی و فقط یک خروجی .
لوزی یک یا بیشتر ورودی و فقط یک خروجی یا yes و no.
مثال 1 : الگوریتمی بنویسید که اضلاع مثلث را دریافت , محیط و مساحت را چاپ کند ؟
شروع اندازه سه ضلع را دریافت و در aو b و c بریزد .
حاصل جمع a+b+c را در p بریزد .
حاصل عبارت p/2 –a ) (p/2-b ) (p/2 –c ) √p/2 ( را در s قرار بده .
محتویات p و s را نمایش بده .
پایان .
مثال2 : الگوریتمی بنویسید که اندازه شعاع را دریافت و محیط و مساحت دایره را محاسبه نماید .
شروع r را دریافت کن .
π* R2 P 3- π R*P* S 5- P وS را چاپ کن .
6- پایان .
مثال 3 : فلورچارت و الگوریتمی بنویسید که ضرایب معادله درجه اول را دریافت و معادله را حل وفصل کند .
الگوریتم وفلورچارت که ضرایب معادله درجه اول را دریافت و معادله را حل وبحث نماید .
الگوریتم وفلورچارت که ضرایب یک دستگاه معادله دو مجهول را دریافت و دستگاه را حل و بحث نماید .
معادله درجه 1 1) ax +b=c 2) ax² + bx + c = 0 Δ =b² - 4 ac x¹ , x ² = _-b ± √ ∆ نوع نوشتن در پاسکال : مثال 4 : برنامه ای بنویسید که محیط و مساحت یک مستطیل را محاسبه کند .
program reactangle ; var ; integer a ,b : integer ; s , m : begin read ( a ,b ); : = a * b ; s m := ( a+ b ) * 2 ; writeln ( s , m ) ; end .
هر برنامه پاسکال از یک عنوان و یک بلاک تشکیل می شود .
عنوان برنامه با کلمه program شروع می شود که پس از ان برخی اطلاعات اضافی که ممکن است مورد نیاز باشد ظاهر می شود .
معمولا طول این بخش از برنامه , تنها یک خط است .
بلاک دارای دو بخش اصلی به نام بخش اعلان و بخش دستور است .
بخش اعلان , عنصر های داده ای مختلفی را تعریف می کند که در داخل برنامه مورد استفاده قرار می گیرد .
بخش دستور شامل دستورهای اجرایی است که باعث انجام عملیات خاصی می شوند .
در هر برنامه پاسکال , حد اقل باید یک دستور وجود داشته باشد .
در زیر ساختار کلی هر برنامه پاسکال توضیح داده می شود .
عنوان بلاک که تشکیل شده است از : الف – اعلان ها که شامل : -1 برچسب ها -2 ثابت ها 3- تعریف های نوع 4- متغیر ها 5 - زیر برنامه های procedure و تابع function ب- دستورها, است .
اجزای اصلی یک برنامه از هم تفکیک شده اند تا تاکیدی بر سازمان کلی برنامه باشند .
program circle; (* area of a circle *) var area , radiuse : real ; begin read (radiuse) ; area := 3.14159 *sqr (radiuse) ; ; writeln ( area ) end.
در برنامه بالا , ویژگی های زیر مد نظر بوده است : بعضی از کلمه ها با حروف بزرگ نوشته شده اند .
این کلمه ها کلمه های ذخیره شده ( یا کلمه های کلیدی ) بوده و دارای معنی از پیش تعریف شده ای هستند .
خط اول شامل نام برنامه (circle) است که عنوان برنامه نام دارد .
خط دوم توضیحی است که هدف برنامه را مشخص می کند .
سه خط تو رفته بین begin و end , دستورهای برنامه هستند .
این دستورها باعث می شوند برای شعاع یک مقدار وارد کامپیوتر شوند , برای مساحت یک مقدار محاسبه شود و مقدار مساحت چاپ شود .
مقادیر عددی شعاع و مساحت با نام های نمادی radiuse و area نشان داده شده اند .
به این نامهای نمادی متغیر می گویند .
نام نمادی sqr در خط ششم , یک تابع استاندارد است که برای محاسبه مربع شعاع به کار می رود .
در پایان برنامه , بیشتر خطها با سمی کالن , ; , به پایان رسیده اند .
بعضی از انها علامت نقطه گذاری ندارند و خط اخر با یک نقطه , .
, به پایان رسیده است نقطه , بخشی از ساختار دستوری زبان پاسکال است .
نمونه هایی از برنامه های ساده پاسکال : مثال 5 : مساحت یک دایره شامل یک شناسه ثابت , به نام pi است که مقدار عددی 3.14159 را نشان می دهد .
علاوه بر این , با اجرای این برنامه , پیغامی چاپ می شود که می گوید مقدار شعاع را ( با چاپ rediuse ) وارد کند و پس از ان , مقدار مساحت را با پیغام مناسب در خروجی چاپ می کند .
program circle; (* area of a circle – version 2* ) const pi = 3.14159; var rediuse, area : real ; begin write ( ` rediuse = `) ; read (rediuse); area := pi *sqr (rediuse ) ; writeln ( `area = ` , area) ; end.
خروجی حاصل از اجرای این برنامه سؤال جوابی در زیر نشان داده شده است .
rediuse = 3 area= 2.8274310000e+01 در توربو پاسکال 7 خروجی عددی را با نماد علمی چاپ می کند .
بنا براین مقدار محاسبه شده برای مساحت 2.82743110 است که معادل 28.27431 است .
روش دیگر فورمت خروجی عددی را در مثال زیر مشاهده می کنید .
مساحت دایره با استفاده از زیر برنامه function را برای محاسبه و برگرداندن یک مقدار توضیح می دهیم .
program circle; (* area of a circle – version 3* ) var rediuse, area : real ; function funct ( r : real ): real ; const pi = 3.14159 ; begin funct :=pi *sqr(r) ; end; begin write ( `rediuse = `) ; read( rediuse ); area := funct ( rediuse ) ; writeln ( `area = ` , area) ; end.
در این برنامه از تابع funct استفاده شده است که محاسبات واقعی را انجام می دهد r در داخل برنامه function , پارامتر نام دارد که مقدار شعاع دایره را نشان می دهد که از بلاک برنامه اصلی به تابع funct منتقل شده است .
نام تابع funct , مساحت محاسبه شده را نشان می دهد .
در بلاک اصلی دسترسی به تابع با دستور زیر انجام می گیرد : area := funct ( rediuse ) ; این دستور باعث می شود مقدار rediuse در تابع funct منتقل شود .پس از ان مقدار برگشتی تابع funct در area جایگزین می شود .
مثال6 : مساحت دایره با استفاده از زیر برنامه procedure با توجه به مثال تابع function با استفاده از یک زیر برنامه procedure نوشته ایم : program circle; (* area of a circle – version 4* ) var rediuse, area : real ; ; procedure calc ( var r , a : real ) const pi = 3.14159 ; begin a :=pi *sqr(r) ; end; begin write ( `rediuse = `) ; read( rediuse ); calc (rediuse , area ) ; writeln ( `area = ` , area) ; end.
و حالا محاسبات واقعی در یک زیر برنامه procedure به نام calc انجام می شود.
در داخل این زیر برنامه rو a پارامتر هستند که به ترتیب مقدار شعاع rediuseو مساحت area را نشان می دهند .
بر خلاف یک زیر برنامه function نام زیر برنامه procedure یعنی calc یک کمیت محاسبه شده را نشان نمیدهد در داخل بلاک , دسترسی به این برنامه procedure , با دستور زیر صورت می گیرد : calc ( rediuse , area ); این دستور باعث می شود مقدار معلوم rediuse به زیر برنامه calc منتقل شود و مقدار تازه محاسبه شده ی area برگردانده می شود .
فصل دوم : فایلهای ورودی و خروجی : معمولا داده های ورودی , مستقیما از طریق صفحه کلید با تایپ شدن وارد کامپیوتر می شوند .
عنصرهای داده ها, عضو های فایل ورودی را تشکیل می دهد .
این عنصر ها به صورت ترتیبی و متوالی در این فایل مرتب می شوند که ترتیب ان ها را برنامه مشخص می کند .
علاوه بر این , عنصرهای داده ای در خط های منطقی گروه بندی می شوند که در ان هر خط متناظر با یک خط از داده ای است که از طریق صفحه کلید با تایپ وارد کامپیوتر می شود .
اطلاعات خروجی در فایل خروجی قرار می گیرد که اساسا تصویر ائینه گونه ای از فایل ورودی است .
عنصرهای داده ای خروجی به صورت ترتیبی و متوالی در این فایل مرتب می شوند که ترتیب ان را برنامه مشخص می کند .
این عنص ها ممکن است در خطهای منطقی گروه بندی شوند که متناظر با خطهای منطقی خروجی , هنگام چاپ یا نمایش ان است .
دستور READ : از دستور read , برای خواندن عنصر های داده ای ورودی و جایگزینی انها در متغیر های , صحیح, اعشاری , کاراکتری یا رشته ای استفاده می شود .
این دستور به صورت زیر نوشته می شود : read ( input variables ) که در ان متغیر ورودی ( input variables ) با کاما از هم جدا می شوند : مثال 1 : نمونه ای از یک دستور read در زیر نشان داده شده است : ; (a , b , c ) read این دستور باعث می شود سه عنصر داده ای از فایل داده های ورودی خوانده شده و به ترتیب در متغیر های a,b,c جایگزین شوند .
عنصر های داده ای از فایل داده های ورودی خوانده می شوند و در متغیر های مربوطه , به همان ترتیبی که در دستور read مشخص شده اند جایگزین می شوند.
هر متغیر باید از همان نوع عنصر های داده ای متناظرش باشد .
هر عنصر داده ای را تنها یک بار می توان خواند .
مثال 2 : بخشی از یک برنامه پاسکال : a,b : real ; var integer ; : j I, .
.
; (a , b , I, j ) read دستور read باعث می شود دو عدد اعشاری و دو صحیح از فایل ورودی خوانده شده , و به ترتیب در متغیر های a , b , I, j جایگزین شوند .
مثال 3 : بخشی از یک برنامه توربو پاسکال : ; var name : string .
read ( name ) ; این دستور باعث می شود رشته ای از کاراکتر ها در کامپیوتر خوانده شده و در متغیر رشته ای name جایگزین شود .
هنگامی که با استفاده از دستور read یک رشته و چند عنصر داده ای دیگر را می خوانید , رشته اصلی و هر عنصر داده ای بعد از ان در یک رشته ادغام می شود .
پس از ان این رشته مرکب در یک متغیر رشته ای جایگزین می شود .
در این صورت بهتر است رشته را در یک خط مستقل قرار دهید و ان را با استفاده از دستور readln در کامپیوتر بخوانید .
دستور readln : مانند دستور read , از دستور readln برای خواندن عنصر های داده ای فایل ورودی و جایگزینی انها در متغیر های صحیح , اعشاری , کاراکتر یا رشته ای استفاده می شود این دستور به صورت زیر نوشته می شود : read ( input variables ) تفاوت بین دستور read و readlnدر این است که دستور readln باعث می شود تا دستور بعدی read و readln شروع به خواندن یک خط جدید از داده ها کند , در حالی که دستور read اجازه می دهد تا دستور read یا readln بعدی , داده را از همان خط بخواند .
مثال 4 : p1 ,p2 ,p 3 ,p 4 : integer ; var .
read ( p1,p2 ); read ( p3 ,p4 ); فرض کنید فایل ورودی از هشت عدد زیر تشکیل شده که در دو خط زیر مرتب هستند .
1 2 3 4 5 6 7 8 دستور read باعث می شود اعداد 1,2,3,4 به ترتیب در متغیر های p1,p2,p3 ,p4 جایگزین شود .
اگر به جای دستورهای read از دستورهای readln در برنامه استفاده شود : p1 ,p2 ,p 3 ,p 4 : integer ; var .
read ( p1,p2 ); read ( p3 ,p4 ); انگاه در متغیر های p1,p2 همچنان مقادیر 1 ,2 اما در متغیر های p3 ,p4 از خط دوم داده های ورودی , مقادیر 5,6 جایگزین می شود .
این اولین دستوری است readln است که باعث می شود مقادیر p3, p4 از خط دوم داده های ورودی خوانده شوند .
اگر بعد از دستور read یک دستور readln قرار گیرد انگاه دستور readln کار خواندن داده ها را از جایی شروع می کند که دستور read قبلی به پایان رسیده است .
بنابراین ,دستور readln الزاما شروع به خواندن داده از خط جدید نمی کند .
در چنین مواردی , دستور readln مانند یک دستور read رفتار می کند .
مثال 5 : حال فرص کنید دستورهای read مثال 4 به صورتهای زیر نوشته شده اند : read (p1,p2 ); readln (p3,p4); در متغیر های p1,p2 p3,p4 به ترتیب مقادیر 1,2,3,4 جایگزین می شود زیرا دستور readln شروع به خواندن سومین مقدار اولین خط می کند .
بهتر است از دستور readln برای خواندن داده ها به صورت خط به خط ( یا سطری ) استفاده کنید .
مثال 6 : یک برنامه پاسکال از سه دستور زیر تشکیل شده است : readln (a ,b ); readln (c ,d ); readln (e ,f ); فرض کنید تمام متغیر های برنامه از نوع صحیح هستند و فایل ورودی شامل اعداد زیر است : 2 3 1 4 5 6 9 8 7 انگاه مقادیر 4,5 در متغیرهای c,d مقادیر 7,8 در متغیرهای c,f جایگزین میشود اگر این دستور از ابتدای خط شروع شود , انگاه مقادیر 1,2 در a,b جایگزین میشود اما اگر این دستور بعد از یک دستور read مانند دستور زیر قرار گرفته باشد : read (x); انگاه در x مقدار 1 و در a,b به ترتیب مقادیر 2,3 جایگزین می شود .
دستور write : دستور write برای نوشتن عنصرهای داده ای در فیل خروجی به کار می رود .
این دستور به صورت زیر نوشته می شود : ) write ( output data item عنصر های داده ای خروجی می تواند رشته , ثابت عددی , متغیر یا عبارت باشند .
در پاسکال ansi این متغیر ها و عبارتها می توانند از نوع صحیح , اعشاری , کاراکتری یا بولیین باشند .
نمونه ای از یک دستور write در زیر نشان داده شده است : write ( ` x= ` , x ) ; این دستور باعث می شود مقدار متغیر عددی x با پیغام در فایل خروجی چاپ شود .
بنابراین اگر x مقدار 123.456 را نمایش دهد , انگاه خروجی زیر در فایل خروجی نوشته می شود .
x= 1.2345600000e+02 به همین ترتیب دستور write زیر : ` , a+b ) ;=write ( `sum باعث می شود مقدار عددی a+b با پیغام مناسب در فایل خروجی نوشته شود.
بنابراین , اگر a و b به ترتیب مقادیر –1و 3 را نمایش دهند , انگاه دستور write , خروجی زیر را تولید می کند : sum = 2 مثال 7 : یک برنامه پاسکال از دستور write زیر تشکیل شده است : write ( ` red ` , ` white `, ` blue `) ; این دستور باعث می شود خط زیر در خروجی چاپ شود : red white blue مثال 8 : بخشی از یک برنامه پاسکال دیگر در زیر نشان داده شده است : var a,b : real ; I,j :integer ; P,q :char .
write ( ` a= `, a ` b=`,b , ` I=`,I ); write ( ` j= `, j ` p=`,p , ` q=`,q ); فرض کنید در متغیر های برنامه , مقادیر مقادیر زیر جایگزین شده است : متغیر مقدار ان a 12500.0 b -14.8 I 5 J -9 P x Q y در پاسکال ansi اطلاعات خروجی حاصل در یک خط , به صورت زیر چاپ می شود : a= 1.2500000e+04 b=-1.5800000e+01 I= 5 j= -9 p=x q=y در توربو پاسکال 7 اطلاعات خروجی به صورت تقریبا متفاوت زیر چاپ می شوند: a= 1.2500000e+04 b=-1.5800000e+01 I=5 j=-9 p=x q=y توربو پاسکال 7 می تواند رشته هایی را که توسط متغیر های رشته ای نمایش داده می شوند چاپ کند .
علاوه بر این توربو پاسکال 7 می تواند رشته ها را به صورت کامل بخواند و انها را در متغیر های رشته ای جایگزین کند .
مثال 9 : یک برنامه توربو پاسکال 7 از دستور زیر تشکیل شده است : ( ` name : ` , customer ) ; write فرض کنید customer یک متغیر رشته ای است که در ان رشته ` wiliam brown ` جایگزین شده است انگاه پس از اجرای برنامه , خروجی زیر تولید می شود : wiliam brown name : دستور writeln : دستور writeln کاری شبیه دستور write انجام می دهد با این تفاوت که دستور writeln پس از اخرین عنصر داده ای , علامت پایان خط را تولید می کند .
به این ترتیب , هر دستور write یا writeln بعدی , چاپ خط جدیدی از خروجی را شروع می کند .
دستور writeln به صورت کلی زیر نوشته می شود : writeln ( output data item ) که در ان عنصر های داده ای خروجی ( output data item ) مانند دستور write , می توانند رشته , ثابت عددی , متغیر یا عبارت باشند .
پایان فصل دوم فصل 3 ( دستورهای کنترلی ) : دستور while –do : دستور while –do یک دستور کنترلی تکراری است که برای اجرای حلقه تکرار شرطی به کار می رود .
این دستور به صورت کلی زیر نوشته می شود : while boolean expression do statement بخش دستور یا statement این دستور , به صورت مکرر تا وقتی اجرا می شود که ارزش عبارت بولیین این دستور یعنی boolean expression درست باشد .این دستور می تواند ساده یا ساختیافته باشد که معمولا یک دستور مرکب است و دارای ویژگی هایی است که می تواند مقدار عبارت بولین را تغییر دهد .
مثال 10 : می خواهیم برنامه ای بنویسیم که اعداد 1,2,…., 20 را به صورت سطری چاپ کند .این برنامه با استفاده از یک دستور while- do به صورت زیر نوشته می شود .
digit := 1; while digit begin writeln (digit); digit := digit +1 end.
که در ان digit بنا به فرض یک متغیر صحیح است .
بنابراین کار چاپ اعداد با مقدار digit = 1 شروع می شود .ابتدا مقدار جاری digit را چاپ می کنیم , مقدار digit را یک واحد افزایش داده , پس از ان این فرایند را تکرار می کنیم .
این فرایند را تا انجا ادامه می یابد که مقدار جایگزین شده در digit بزرگتر از20 نباشد.
اثر نهایی دستور while –do فرایند چاپ و افزایش مکرر مقدار متغیر digit به اندازه 20 بار و بالاخره چاپ 20 خط متوالی در خروجی است که هر خط شامل یک عدد صحیح متوالی است که از 1 شروع می شود وبا 20 به پایان می رسد .
دستور for : در زبان پاسکال دستور for برای اجرای حلقه تکرار غیر شرطی به کار می رود .
این دستور اجازه می دهد یک عمل به تعداد دفعات مشخصی تکرار شود .
در زبان پاسکال دستور for به دو صورت مختلف نوشته می شود .متداولترین صورت ان به این شکل است : for control variable :=value 1 to value 2 do statement بخش دستور statement این حلقه می تواند یک دستور ساده یا دستوری ساختیافته باشد هر چند معمولا دستوری مرکب است که ممکن است شامل دستورهای کنترلی دیگر باشد .
این دستور به اندازه تعداد مقادیر متوالی جایگزین شده در متغیر کنترلی control variable اجرا می شود .
بنا براین تعدادمقادیر جایگزین شده در متغیر کنترلی ، تعداد دفعات اجرای دستور statement را مشخص می کند .
متغیر کنترلی باید یک نوع متغیر ساده بجز نوع اعشاری باشد که معمولا این متغیر یک متغیر صحیح یا یک متغیر تعریف شده توسط کاربر است .
مقدار مشخص value 1 در متغیر کنترلی جایگزین می شود .
هر با که این دستور تکرار می شود متغیر کنترلی به طور اتوماتیک مقدار متوالی بعدیش را اختیار می کند و این کار تا انجا ادامه می یابد که متغیر کنترلی مقدار مشخص شده نهایی value 2 را اختیار کند .اگر متغیر کنترلی یک متغیر صحیح باشد انگاه هر با که این دستور اجرا می شود این متغیر به طور اتوماتیک به اندازه واحد افزایش می یابد ، از این رو این دستور به تعداد) value 1 +1 value 2- ( بار اجرا می شود .
هنگام نوشتن دستور for ، مقادیر value 1 و value 2 را می توان به صورت ثابت ، متغیر یا عبارت بیان کرد .
این مقادیر باید همنوع با متغیر کنترلی باشد .
اگر بخواهیم این دستور بیشتر از یک بار اجرا شود ، مقدار value 1 باید کوچکتر از value 2 باشد .
اگر value 1 برابر با value 2 باشد ، این دستور تنها یک بار اجرا می شود .
اگر value 1 بزرگتر از value 2 باشد ، این دستور اصلا اجرا نمی شود .
مثال 11 : این مثال از یک دستور مرکب تشکیل شده است که یک بار اجرا میشود که n یک متغیر صحیح است که مقدار ان ،طبق فرض مشخص است و xیک مقدار اعشاری است .
با هر بار عبور از حلقه ، عددی جدید( یعنی مقدار جدیدی برایx) در کامپیوتر خوانده شده و با sum جمع می شود انگاه مجموع تمام n عدد ، پس از پایان حلقه ، در خروجی چاپ می شود .
sum := 0; for count := 1 to n do begin write ( `x= `); readln (x) ; sum := sum +x end; writeln ( ` sum =`, sum ); صورت دوم دستور for شبیه صورت اول است با این تفاوت که در ان بجای to از کلمه کلیدی downto استفاده می شود بنابراین دستور for را می توان به صورت زیر نوشت : for control variable :=value 1 downto value 2 do statement کار این صورت از دستور for شبیه صورت اول است با این تفاوت که در ان متغیر کنترلیvariable control از بالا به پایین ارزیابی می شود و نه از پایین به بالا .
بنابراین اگر متغیر کنترلی یک متغیر صحیح باشد ، با هر عبور متوالی از این حلقه مقدار ان از value 1 تا value 2، به طور اتوماتیک یک واحد کاهش می یابد .
بنابراین value 1 باید بزرگتر از value 2 باشد .
اگر مقدار این دو متغیر برابر باشد ، این دستور تنها یک بار اجرا می شود و اگر مقدار value 1 کوچکتر از value 2 باشد ، انگاه این دستور اصلا اجرا نمی شود .
مثال 12: یک مثال از صورت دوم دستور for : for I:= 0 downto -12do begin z := 2* I+5; ,z ); writeln ( ` I =`,I, ` z = ` end ; این مثال در 13 خط ، 13 عدد را با پیغام مناسب چاپ می کند در هر خط مقدار جاری متغیر صحیح I ، با مقدار متناظر ان طبق فرمول z=2I+5 با پیغام مناسب در خروجی چاپ می شود .
که مقادیر متوالی I از I=0 در خط اول تا I= -12 در خط اخر کاهش می یابد .
دستور if : دستور if یک دستور کنترلی شرطی است و تنها در صورتی که شرط منطقی معین مقداری مشخص یعنی درست یا نادرست داشته باشد اجازه می دهد عملی انجام دهد .
این دستور دارای دو صورت مختلف است .
ساده ترین صورت ان چنین است: if boolean expession then statement به این دستور اغلب دستور if- then می گویند .
بخش دستور statement ، این دستور شرطی تنها در صورتی اجرا می شود که عبارت بولیین boolean expession درست باشد .
مثال 13 : چند مثال از دستور if- then بیان شده است : if count if tag = `*` then begin writeln (accountno ) ; credite := 0 end ; if test then begin x:=100 ; test := false end ; if (blance در مثال اول ، اگر متغیر صحیح count بزرگتر از 100 نباشد ، انگاه این متغیر یک واحد افزایش می یابد .
در مثال دوم ، اگر در متغیر کاراکتری tag یک ستاره ، `*` جایگزین شده باشد ، انگاه مقدار accountno را چاپ کرده ، مقدار 0 را در متغیر credite جایگزین می کند .
این مثال از یک دستور مرکب تشکیل شده است مثال سوم شامل یک متغیر بولیین ، test و هم یک دستور مرکب است .
اگر test از ابتدا درست true باشد ، انگاه مقدار 100 در x جایگزین و test برابر نادرست false قرار داده می شود .
در مثال اخر ، اگر مقدار balance کوچکتر از 1000.0 یا اگر متغیر کاراکتری status