0

آموزش زبان برنامه نویسی پاسکال – قسمت اول

 
mrl5639940271
mrl5639940271
کاربر برنزی
تاریخ عضویت : اسفند 1387 
تعداد پست ها : 34
محل سکونت : خراسان جنوبی

آموزش زبان برنامه نویسی پاسکال – قسمت اول


 

زبان پاسکال یکی از زبانهای پایه برای شروع برنامه نویسی است . به همین علت اگر میخواهید یادگیری برنامه نویسی را آغاز کنید باید با یادگیری پاسکال این کار را شروع کنید . این زبان توسط پروفسور نیکلاس ویژت در انستیتو فنی فدرال سوئیس در در اواخر سال ۱۹۶۰ و اوایل ۱۹۷۰ مطرح گردید و به افتخار بلز پاسکال دانشمند فرانسوی قرن هفدهم میلادی، پاسکال نامگذاری شده است.پاسکال یک زبان سطح بالا است.

آموزش زبان برنامه نویسی پاسکال

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

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

 

زبانهای برنامه‌نویسی :
نرم‌افزارها توسط زبانهای برنامه‌نویسی نوشته می‌شوند. زبانهای برنامه‌نویسی، یک سیستم ارتباطی هستند که توسط آنها می‌توان دستورات لازم را به ماشین انتقال داد.
هرزبان برنامه‌نویسی به مجموعه‌أی از علایم، قواعد و دستورالعمل‌ها گفته می‌شود که امکان ارتباط با کامپیوتر را جهت بیان کاری یا حل مسئله‌ای فراهم می‌کند.
در حالت کلی زبانهای برنامه‌نویسی را به سه دسته زیر تقسیم‌بندی می‌کنند:
۱٫زبانهای سطح بالا
۲٫زبانهای سطح پایین
۳٫زبانهای سطح میانی
زبان Pascal
این زبان توسط پروفسور نیکلاس ویژت در انستیتو فنی فدرال سوئیس در در اواخر سال ۱۹۶۰ و اوایل ۱۹۷۰ مطرح گردید و به افتخار بلز پاسکال دانشمند فرانسوی قرن هفدهم میلادی، پاسکال نامگذاری شده است.پاسکال یک زبان سطح بالا است.
اجزای تشکیل‌دهنده یک برنامه:
۱٫کلمات ذخیره‌شده Reserved Words -
2.شناسه‌ها – identifier

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

۲٫Id های غیراستاندارد: این نوع id ها بوسیله کاربر بطور مجزا تعریف میشوند و اصطلاحاً به آنها userdefined گفته میشود.
ساختار برنامه در زبان پاسکال :
اجزاء اصلی یک برنامه به زبان پاسکال بصورت زیر می‌باشد:
۱٫ عنوان برنامه
۲٫قسمت تعاریف برنامه
۳٫قسمت دستور العملها

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

درحالت کلی می‌توان شکل یک برنامه در زبان پاسکال را بصورت زیر بیان کرد:
۱٫استفاده از کلمه ذخیره شده Program و اسم برنامه ( که می‌تواند بکار برده نشود )
۲٫قسمت تعاریف شناسه‌ها
۳٫بلوک اصلی برنامه که با Begin شروع و به End همراه نقطه ( . ) ختم می‌شود.
۴٫هر دستور در پاسکال به ( ; ) ختم می‌شود.
فرم کلی برنامه در پاسکال:
; نام 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.انواع صحیح شامل اعداد بدون ممیز است متداولترین انواع صحیح را در شکل زیر ببینید:

۲٫اعداد اعشاری: شامل اعداد با نقطه ممیز است متداولترین آن در شکل زیر ببینید::
۳٫:Char این نوع داده که به آن کاراکتری می گویند حداکثر می تواند یک کاراکتر را در خود نگه دارد و اندازه آن یک بایت از حافظه را اشغال می کند.
۴٫نوع String:
این نوع داده برای ذخیره رشته ها مثل اسامی افراد به کار می رود حداکثر طول آن ۲۵۵ کاراکتر است در ضمن برای هر رشته باید طول آن را مشخص کنیم در غیر این صورت طول آن را به طور پیش فرض ۸۰ در نظر می گیرد.
۵٫نوع Boolean:
این نوع داده که داده های بولی خوانده می شود مقادیر این نوع داده های بولی دارای دو ارزش درستی یا نادرستی است که در پاسکال با ۰و۱ نمایش می دهند ۰ به معنای نادرستی و۱ به معنای درستی است.

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

شکل کلی یک دستور جایگزینی در پاسکال بصورت زیر است:
عبارت محاسباتی = : اسم شناسه
عبارت قیاسی یا
عبارت منطقی
افزودن توضیحات به برنامه (Comment):
افزودن مطلب توضیحی در درون خود برنامه عملی پسندیده و مطلوب است بدین ترتیب که بعد از مدتی امکان فراموشی کار با برنامه از بین می‌رود و در کل می‌توان گفت که نوشتن توضیحات در برنامه خوانایی آن را بالا می‌برد.
در پاسکال توضیحات بین دو آکولاد محصور می‌شوند.

{ This is comment }
{ This program written by A. Pascal }

قبل از این که شروع به نوشتن یک برنامه کنیم ابتدا باید دستورات ورودی و خروجی را در پاسکال یاد بگیریم :
خروجی با دستور Write :
این دستور برای نوشتن اطلاعات در خروجی بکار می‌رود. اطلاعات خروجی می‌توانند ثابتهای عددی، مقادیر متغیرها، عبارات و غیره باشند. شکل دستور در حالت کلی بصورت زیر است:
(....... و متغیر۲ و متغیر۱ )write
یا (....... و' عبارت ۲' و'عبارت۱ ')
یا (....... و ثابت ۲ وثابت ۱ )
مثال:
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
در تعریف طول میدان برای متغیرها یا داده‌هایی از نوع صحیح به نکات زیر توجه کنید:
۱٫اگر طول میدان از طول ارقام عدد صحیح بیشتر تعریف شود، عدد در منتهی‌الیه سمت راست میدان نوشته می‌شود.
.۲اگر طول میدان از طول ارقام عدد صحیح کمتر تعریف شود، طول میدان به اندازه تعداد ارقام در نظر گرفته می‌شود و طول میدان تعریف شده بی‌اثر خواهد بود.

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

طول میدان اعداد اعشاری :
برای نمایش اعداد اعشاری بصورت دلخواه، می توان با تعریف طول میدان و تعداد ارقام اعشاری، عدد مزبور را نمایش داد.
: در حالت کلی طول میدان را می‌توان به صورت زیر تعریف کرد:
( تعداد ارقام بعد از ممیز: طول میدان: متغیر اعشاری) Writeln یا Write
در تعریف فرمت برای اعداد اعشاری به نکات زیر باید توجه کرد:
.۱ اگر طول میدان بزرگتر از تعداد ارقام عدد ذکر شود، عدد در منتهی الیه سمت راست میدان چاپ می‌شود.
۲٫اگر فقط طول میدان ذکر شود، عدد به صورت نماد علمی در طول میدان مشخص شده
چاپ می شود .از آنجائی که برای نمایش اعداد در نماد علمی حداقل ۸ محل مورد نیاز است، لذا هنگامی که تنها طول میدان ذکر شده باشد، اگر از ۸ رقم کمتر باشد، حداقل ۸ رقم در نظر گرفته می‌شود.
۳٫هنگامی که طول میدان همراه با تعداد ارقام بعد از ممیز ذکر شود، اگر طول میدان کوچکتر از مقدار عدد باشد، پاسکال تنها طول میدان را به اندازه‌ای که مورد نیاز است تصحیح کرده و آنرا برابر اندازه واقعی که عدد در آن قرار می‌گیرد، اصلاح می‌کند.
۴٫اگر تعداد ارقام بعد از ممیز زیاد باشد و تعداد ارقام بعد از ممیز ذکر شده در طول میدان کمتر از تعداد ارقام اعشاری عدد باشد، تعداد ارقام اعشار مطابق درخواست برنامه‌نویس نشان داده خواهد شد و رقم آخر اعشار آن نسبت به عدد بعدی گرد می‌شود.
طول میدان کاراکترها و رشته‌ها :
برای نمایش رشته‌ها و کاراکترهای با طول میدان بصورت زیر عمل می‌کنیم.
(طول میدان: متغیر یا عبارت رشته‌ای یا کاراکتری) Writeln یا Write
در توربو پاسکال، کلیه موارد گفته شده در مورد اعداد صحیح برای رشته‌ها نیز صادق است.
ورودی با Readln , Read
از این دستورات برای خواندن داده ها و اختصاص آنها به متغیرها استفاده می‌شود. در خواندن داده ها به دو موضوع باید دقت شود:
۱- منبع داده‌ها یعنی دستگاه ورودی که از آن داده‌ها خوانده می‌شود.
۲- متغیری که داده‌های خوانده شده در آن قرار می‌گیرد.
شکل کلی دستور ورودی Read بصورت زیر می‌باشد:
;( ..... و متغیر ۲ و متغیر ۱Read (

این دستور عمل خواندن داده‌ها و ذخیره آنها در متغیرها را انجام می‌دهد و پس از اتمام عمل خواندن کنترل را برای خواندن و نوشتن‌های بعدی. در همان خط نگه می‌دارد
شکل کلی دستور ورودی ReadLN بصورت زیر می‌باشد:
;( ..... و متغیر ۲ و متغیر ۱ReadLN (
این دستور عمل خواندن داده‌ها و ذخیره آنها در متغیرها را انجام می‌دهد و پس از اتمام عمل خواندن کنترل را برای خواندن و نوشتن‌های بعدی به خط بعد می رود.
تا به ما قادر شدیم که یک برنامه کامل را بنویسیم حال چند مثال را حل می کنیم:
۱٫برنامه ای بنویسید که محتویات دو عدد را عوض کند؟
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.برنامه ای بنویسید که حقوق پایه و تعداد فرزندان یک کارگر را از ورودی گرفته و مبلغ حقوق وی را بر اساس فرمول زیر محاسبه کند؟
۱۰* تعداد فرزندان+ حقوق پایه= حقوق کل

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 ،حلقه ها را بحث خواهد شد .

جمعه 8 بهمن 1389  12:57 PM
تشکرات از این پست
mrl5639940271
mrl5639940271
کاربر برنزی
تاریخ عضویت : اسفند 1387 
تعداد پست ها : 34
محل سکونت : خراسان جنوبی

پاسخ به:آموزش زبان برنامه نویسی پاسکال – قسمت دوم


عملگر ها:

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

۲٫عملگرهای منطقی

۳٫عملگر های محاسباتی
عملگرهای رابطه ای:

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

آموزش زبان برنامه سازی پاسکال - قسمت دوم

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

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

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

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

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

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

مثال
:( X and (not y

 

جداول درستی :

عملگر And و OR:

عملوند۲ OR عملوند ۱ عملوند۲ and عملوند ۱
عملوند۲
عملوند ۱

True True
True
true

True false
False
True

False True
true
false

False False
False
False
عملگر Not:

عملوند ۱ not
عملوند ۱

false
true

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

Not

* / div mod and

+ – or

< <= = <> >= >

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

۱٫دستور IF:

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

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

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

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

کسریها – مزایا + بیمه = حقوق کل
۵*رتبه+۱۰۰۰* تعداد فرزندان =مزایا
مالیات+بیمه=کسریها
بیشتر
کمتر یا مساوی ۲
تعداد فرزند

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

هر چیزی دیگر
۰تا ۲۰
رتبه

حقوق پایه
حقوق پایه*۱۰۰/۱۰
مالیات
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 (‘۱,۲,’) ;
writeln( ‘buckle my shoe’)
end ; {1,2}
3 , 4 :writeln (‘ ۳,۴ , shut the door ‘) ;
۵ , ۶ :writeln (‘ ۵ , ۶ , 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}

مثال:برنامه ای بنویسید که دو عدد را از ورودی دریافت کرده وچنانچه عدد اول در بازه ۰ تا ۵ بود توان دوم عدد دوم را چاپ کند اگر ۶۸ بود ضرب آن دو عدد را نمایش دهد در غیر اینصورت مقادیر مجاز را چاپ کند؟
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.

حلقه ها:
۱٫حلقه FOR:

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

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

Downto

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

مثال:برنامه ای بنویسید که مجموع مضارب ۵ بین ۰ تا ۱۰۰ را حساب کند؟
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.

مثال:برنامه ای بنویسید که تعداد مضارب ۵و۷ را در بازه [۲۳۱,۸۴۶] چاپ کند؟
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 یک حلقه با تکرار ۰ یا بیشتر و تعداد تکرار در آن نامعین است.

شکل آن بصورت زیر است:
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 (‘۰’ <= ch) and (ch <= ‘۹’)

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

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

مثال:
Program m_n;
Uses wincrt;
Var
I , j : integer ;
Begin
Writeln (‘I’ :۱۲ , ‘j’ :۵);
For I:=1 to 3 do
Begin
Writeln (‘outer’ :۵,I :7 );
For j:= 1 to I do
Writeln (‘inner’ :۷ , I :5 , j:5)
End;
End.

جمعه 8 بهمن 1389  12:58 PM
تشکرات از این پست
mrl5639940271
mrl5639940271
کاربر برنزی
تاریخ عضویت : اسفند 1387 
تعداد پست ها : 34
محل سکونت : خراسان جنوبی

آموزش زبان برنامه سازی پاسکال – قسمت سوم

دستورات 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

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

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

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

پارامتر های صوری به دو دسته تقسیم می شوند:
۱٫پارامتر های مقدار
۲٫پارامتر های متغیر

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

مثال: رویه 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 )
قواعد تناظر لیست پارامتر ها:

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

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

۱٫پروسی جر((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)

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

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

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

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

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

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

دستورات تابع

End ;

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

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

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

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

مثال:برنامه ای بنویسد که یک عدد را از ورودی دریافت کرده و به کمک تابع بازگشتی و غیر بازگشتی فاکتوریل آن را حساب کند؟
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;
خروجی این تابع برابر ۴ است.
این هم یک مثال جالب:
برنامه ای بنویسید که رشته ای را به یک تابع فرستاده و معکوس رشته را توسط نام تابع برگرداند.همچنین به کمک پرامتر مرجع حروف کوچک رشته ورودی را تبدیل به حروف بزرگ کرده و رشته معادل را برگرداند؟
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[i]>=’a')and(s[i]<=’z') then
P[i]:=char(ord( s[i])-32 ) )
Else
P[i]:=s[i] ;
T[i]:=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.
زیر برنامه های استاندارد رشته ای:

۱٫تابع 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 ) ; -à ۱۳ali
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 را مشخص می کند.

۸٫پردازه delete:

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

جمعه 8 بهمن 1389  1:04 PM
تشکرات از این پست
mohamadaminsh
mohamadaminsh
کاربر طلایی1
تاریخ عضویت : دی 1389 
تعداد پست ها : 25772
محل سکونت : خوزستان

پاسخ به:آموزش زبان برنامه نویسی پاسکال – قسمت اول

خوبه بدك نبود براي شايد براي بقيه تازه كار ها بهتر باشه

کریمی که جهان پاینده دارد               تواند حجتی را زنده دارد

 

دانلود پروژه و کارآموزی و کارافرینی

پنج شنبه 28 بهمن 1389  10:40 PM
تشکرات از این پست
mohamadaminsh
mohamadaminsh
کاربر طلایی1
تاریخ عضویت : دی 1389 
تعداد پست ها : 25772
محل سکونت : خوزستان

پاسخ به:آموزش زبان برنامه نویسی پاسکال – قسمت اول

خوبه بدك نبود براي شايد براي بقيه تازه كار ها بهتر باشه

کریمی که جهان پاینده دارد               تواند حجتی را زنده دارد

 

دانلود پروژه و کارآموزی و کارافرینی

پنج شنبه 28 بهمن 1389  10:41 PM
تشکرات از این پست
mohamadaminsh
mohamadaminsh
کاربر طلایی1
تاریخ عضویت : دی 1389 
تعداد پست ها : 25772
محل سکونت : خوزستان

پاسخ به:آموزش زبان برنامه نویسی پاسکال – قسمت اول

بدك نبود ولي خوبه واسه بچه هاي رشته كامپيوتر

کریمی که جهان پاینده دارد               تواند حجتی را زنده دارد

 

دانلود پروژه و کارآموزی و کارافرینی

پنج شنبه 28 بهمن 1389  10:42 PM
تشکرات از این پست
EleRam
EleRam
کاربر برنزی
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 36
محل سکونت : خراسان رضوی

پاسخ به:آموزش زبان برنامه نویسی پاسکال – قسمت اول


 

پاسکال دیگه منسوخ شده و تقریبا کسی باهاش کار نمی کنه، حتی برای یادگیری و آموزش تا جایی که در آموزش و پرورش ایران هم مدت هاست که برای دانش آموزان تدریس نمی کنن !

 

پس بهتره دنبال جایگزین های بهتری براش باشید (حداقل ویژوال بیسیک 6)

یک شنبه 3 اردیبهشت 1391  11:36 PM
تشکرات از این پست
دسترسی سریع به انجمن ها