TAHA
10-01-2009, 05:26 PM
اجزاء تشکيل دهنده کامپيوتر عبارتند از :
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,…پسstr ing,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.سخت افزار
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,…پسstr ing,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.