ﻣﺪرس :ﻧﻮري
آﺑﺎن 88
اﻧﻮاع زﻳﺮﺑﺎزه
yﮔﺎﻫﻲ اوﻗﺎت اﺳﺘﻔﺎده از زﻳﺮﺑﺎزهﻫﺎ ﺑﺮاي اﻓﺰاﻳﺶ دﻗﺖ ﺑﺮﻧﺎﻣﻪ ﻣﻨﺎﺳﺐ
ﻣﻲﺑﺎﺷﺪ.
yاﺳﺘﻔﺎده از زﻳﺮﺑﺎزهﻫﺎ ﺑﺎﻋﺚ ﺟﻠﻮﮔﻴﺮي از ﺑﺮوز ﺑﺮﺧﻲ ﺧﻄﺎﻫﺎ ﺧﻮاﻫﺪ ﺷﺪ.
yﺑﺮﻧﺎﻣﻪ زﻳﺮ در ﻫﺮ دو ﺧﻂ اﻧﺘﺴﺎب ﺧﻄﺎي ﻛﺎﻣﭙﺎﻳﻞ ﺧﻮاﻫﺪ داﺷﺖ.
type
var
;’Letter = ‘A’ .. ‘Z
;’NextChar :‘A’ .. ‘Z
;DaysInMonth = 1..31
;InDay : 1..31
var
begin
;NextChar : Letter
;’NextChar := ‘a
;InDay : DaysInMonth
InDay := 50
begin
end.
;’NextChar := ‘a
InDay := 50
end.
2
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
Syntaxﺗﻌﺮﻳﻒ زﻳﺮﺑﺎزه
type
Maxvalue
..
subrange-type = minvalue
type
’LowCase = ‘a’..‘z
3
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
اﻧﻮاع زﻳﺮﺑﺎزه
yزﻳﺮﺑﺎزهﻫﺎ ﺑﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ اﻣﻜﺎن ﺑﺮرﺳﻲ ﻣﻌﺘﺒﺮ ﺑﻮدن ﻣﻘﺎدﻳﺮ ﻣﺘﻐﻴﺮﻫﺎ را
ﻣﻲدﻫﻨﺪ.
yﺑﻪﻃﻮر ﻋﺎدي ،ﺑﺮرﺳﻲ ﻗﺮار ﮔﺮﻓﺘﻦ ﻣﻘﺎدﻳﺮ در ﺑﺎزه ﻣﻮرد ﻧﻈﺮ در زﻣﺎن
ﻛﺎﻣﭙﺎﻳﻞ اﺗﻔﺎق ﻣﻲاﻓﺘﺪ.
yﻳﻌﻨﻲ اﮔﺮ ﻛﺎﻣﭙﺎﻳﻠﺮ ﻋﻤﻠﻴﺎت اﻧﺘﺴﺎب ﻏﻴﺮ ﻣﻌﺘﺒﺮي را ﺷﻨﺎﺳﺎﻳﻲ ﻛﻨﺪ از ﻛﺎﻣﭙﺎﻳﻞ
ﺑﺮﻧﺎﻣﻪ ﺟﻠﻮﮔﻴﺮي ﻣﻲﻛﻨﺪ.
yوﻟﻲ اﮔﺮ در زﻣﺎن اﺟﺮا ﭼﻨﻴﻦ اﺗﻔﺎﻗﻲ ﺑﻴﻔﺘﺪ ،ﺑﺮﻧﺎﻣﻪ ﺑﺪون ﻣﺸﻜﻞ اداﻣﻪ ﻣﻲﻳﺎﺑﺪ.
yﻣﺜﻼً اﮔﺮ در دﺳﺘﻮر ) ،ReadLn(InDayﻛﺎرﺑﺮ ﻣﻘﺪار 50را وارد ﻛﻨﺪ،
ﺑﺮﻧﺎﻣﻪ ﻛﺎر ﺧﻮد را اداﻣﻪ ﻣﻲدﻫﺪ.
4
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
Range Checkدر زﻣﺎن اﺟﺮا
yاﮔﺮ ﺑﺨﻮاﻫﻴﻢ در زﻣﺎن اﺟﺮا ﻧﻴﺰ ﻋﻤﻠﻴﺎت ﺑﺮرﺳﻲ اﻋﺘﺒﺎر ﻣﻘﺎدﻳﺮ اﻧﺠﺎم ﺷﻮد
از دﺳﺘﻮراﻟﻌﻤﻞ } {$R+اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ.
}{$R+
type
;’Letter = ‘A’ .. ‘Z
;DaysInMonth = 1..31
var
;NextChar : Letter
;InDay : DaysInMonth
begin
;)ReadLn(NextChar
)ReadLn(InDay
end.
5
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
دﺳﺘﻮراﻟﻌﻤﻞ }{$R+
{$R+} yﻳﻚ Directiveﻧﺎﻣﻴﺪه ﻣﻲﺷﻮد.
Directive yﻫﺎ ﻛﻠﻤﺎﺗﻲ ﺑﻪ ﺻﻮرت $R ،$N ،$Eو ...ﻫﺴﺘﻨﺪ ﻛﻪ ﺗﻨﻈﻴﻤﺎت
ﻛﺎﻣﭙﺎﻳﻠﺮ را ﺗﻐﻴﻴﺮ ﻣﻲدﻫﻨﺪ.
yﻫﺮﭼﻨﺪ اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞﻫﺎ ﺑﻪ ﺻﻮرت ﺗﻮﺿﻴﺢ ) (commentﻣﻲآﻳﻨﺪ ،وﻟﻲ
ﺗﻮﺳﻂ ﻛﺎﻣﭙﺎﻳﻠﺮ ﺧﻮاﻧﺪه و اﺟﺮا ﻣﻲﺷﻮﻧﺪ.
{$R+} yﻋﻤﻠﻴﺎت Range Checkرا ﻓﻌﺎل ﻣﻲﺳﺎزد.
{$R-} yﻋﻤﻠﻴﺎت Range Checkرا ﻏﻴﺮ ﻓﻌﺎل ﻣﻲﺳﺎزد.
yﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض ﻋﻤﻠﻴﺎت Range Checkﻏﻴﺮﻓﻌﺎل اﺳﺖ
{$R-} y
6
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
اﻧﻮاع داده ﭘﻴﺸﺮﻓﺘﻪ )ﺻﺤﻴﺢ(
7
ﺑﺎزه
ﻧﻮع
0..255
Byte
-128..127
ShortInt
-32768..32767
Integer
0..65535
Word
-2147483648...2147483647
LongInt
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
اﻧﻮاع داده ﭘﻴﺸﺮﻓﺘﻪ )اﻋﺸﺎري(
8
ﺑﺎزه
ﻧﻮع
1.5E-45..3.4E38
Single
2.9E-39..1.7E38
Real
5.0E-324..1.7E308
Double
1.9E-4951..1.1E4932
Extended
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
اﻧﻮاع داده ﭘﻴﺸﺮﻓﺘﻪ )اﻋﺸﺎري(
yﺑﺮاي اﺳﺘﻔﺎده از اﻧﻮاع داده اﻋﺸﺎري ﺑﺠﺰ ،Realﺑﺎﻳﺪ از دﺳﺘﻮراﻟﻌﻤﻞ زﻳﺮ
اﺳﺘﻔﺎده ﻛﻨﻴﺪ.
}{$N+,E-
9
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
اﻧﺘﺴﺎب ﻣﻘﺎدﻳﺮ دادهﻫﺎ
yدر ﻋﺒﺎرتﻫﺎي رﻳﺎﺿﻲ
yاﻧﻮاع ﺻﺤﻴﺢ ﻗﺎﺑﻞ اﻧﺘﺴﺎب ﺑﻪ ﻫﻢ ﻫﺴﺘﻨﺪ.
yاﻧﻮاع اﻋﺸﺎري ﻗﺎﺑﻞ اﻧﺘﺴﺎب ﺑﻪ ﻫﻢ ﻫﺴﺘﻨﺪ.
yﺑﺮاي اﻧﺘﺴﺎب ﺑﺎﻳﺪ
yاﻧﻮاع ﺑﺎ ﻫﻢ ﻗﺎﺑﻞ اﻧﻄﺒﺎق ﺑﺎﺷﻨﺪ.
yﻣﻘﺪار ﻣﺤﺎﺳﺒﻪ ﺷﺪه در ﻧﻮع داده ﻗﺮار ﺑﮕﻴﺮد.
yﻋﺪد ﺻﺤﻴﺢ در ﻣﺘﻐﻴﺮ ﺣﻘﻴﻘﻲ ﻗﺎﺑﻞ اﻧﺘﺴﺎب اﺳﺖ.
10
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﺗﺮﺗﻴﺐ ﺗﻌﺎرﻳﻒ در ﭘﺎﺳﻜﺎل
yدر ﭘﺎﺳﻜﺎل اﺳﺘﺎﻧﺪارد ﺗﻌﺎرﻳﻒ ﺑﺎﻳﺪ ﺑﻪ ﺗﺮﺗﻴﺐ زﻳﺮ ﺑﺎﺷﻨﺪ.
yوﻟﻲ در ﺗﻮرﺑﻮ ﭘﺎﺳﻜﺎل ،ﻻزم ﻧﻴﺴﺖ اﻳﻦ ﺗﺮﺗﻴﺐ رﻋﺎﻳﺖ ﺷﻮد ،ﻓﻘﻂ ﻛﺎﻓﻲ
اﺳﺖ ﻫﺮ ﭼﻴﺰ ﻗﺒﻞ از اﺳﺘﻔﺎده ﺗﻌﺮﻳﻒ ﺷﺪه ﺑﺎﺷﺪ.
Constant declarations
Type declarations
Variable declarations
Procedure and Function declarations
11
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﮔﻮﻧﻪﻫﺎي ﺷﻤﺎرﺷﻲ Enumerated Types
yﺑﺮاي اﻓﺰاﻳﺶ ﻗﺪرت ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ،ﭘﺎﺳﻜﺎل ﺑﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ اﺟﺎزه ﺗﻌﺮﻳﻒ
اﻧﻮاع داده ﺟﺪﻳﺪ را ﻣﻲدﻫﺪ.
yدر اﻳﻦ ﻧﻮع دادهﻫﺎ ،ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ ﻣﻘﺎدﻳﺮ ﻣﻤﻜﻦ ﻗﺎﺑﻞ اﻧﺘﺴﺎب ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎ را
ﻣﺸﺨﺺ ﻛﺮده و ﻣﺘﻐﻴﺮﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه از آن ﻧﻮع ،ﻓﻘﻂ ﻣﻲﺗﻮاﻧﺪ اﻳﻦ
ﻣﻘﺎدﻳﺮ را ﺑﮕﻴﺮد.
12
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﮔﻮﻧﻪﻫﺎي ﺷﻤﺎرﺷﻲ
type
Days = (Saturday, Sunday, Monday,
Tuesday, Wednesday, Thursday, Friday);
var
Day : Days;
begin
if day = Saturday then WriteLn(‘Sat’);
WriteLn(Ord(day));
if Sunday < Monday then …
if Wednesday = Wednesday then …
if day < Sunday then …
end.
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
13
Syntaxﺗﻌﺮﻳﻒ ﮔﻮﻧﻪ ﺷﻤﺎرﺷﻲ
type
;)enumerated-type = (identifier-list
type
;)class = (Freshman, Sophomore, Junior, Senior
;)TDay = (Tuesday, Thursday
اﮔﺮ ﺗﻌﺮﻳﻒ TDayﺑﻪ ﻫﻤﺮاه ﺗﻌﺮﻳﻒ Daysدرﺻﻔﺤﻪ ﻗﺒﻞ در ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﺎﺷﻨﺪ،
ﺑﺮﻧﺎﻣﻪ ﻛﺎﻣﭙﺎﻳﻞ ﻧﺨﻮاﻫﺪ ﺷﺪ ،زﻳﺮا ﻫﺮ ﻧﺎم )ﻣﺜﻞ (Tuesdayﻓﻘﻂ ﻳﻚ ﺑﺎر ﻗﺎﺑﻞ اﺳﺘﻔﺎده
اﺳﺖ.
14
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﻛﺎر ﺑﺎ ﮔﻮﻧﻪﻫﺎي ﺷﻤﺎرﺷﻲ
type
0
1
2
Days = (Saturday, Sunday, Monday,
Tuesday, Wednesday, Thursday, Friday);
3
4
5
6
var
Today, Tomorrow : Days;
begin
Today := Friday;
Tomorrow := Saturday;
WriteLn(Today = Friday);
WriteLn(Tomorrow = Saturday);
WriteLn(Today > Tomorrow);
WriteLn(Today <> Wednesday);
WriteLn(Today >= Sunday)
end.
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
15
ﻛﺎر ﺑﺎ ﮔﻮﻧﻪﻫﺎي ﺷﻤﺎرﺷﻲ
type
0
1
2
Days = (Saturday, Sunday, Monday,
Tuesday, Wednesday, Thursday, Friday);
3
4
5
6
var
Today, Tomorrow : Days;
begin
Today := Friday;
Tomorrow := Saturday;
WriteLn(Ord(today));
WriteLn(Ord(tomorrow));
WriteLn(Ord(Succ(Today)));
WriteLn(Ord(Pred(Today)))
end.
ﻧﻮري: ﻣﺪرس
ﺗﻌﺮﻳﻒ ﻧﺸﺪه
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
16
ﻣﺘﻐﻴﺮﻫﺎي ﺷﻤﺎرﺷﻲ در دﺳﺘﻮرات
ورودي/ﺧﺮوﺟﻲ
yﻣﺘﻐﻴﺮﻫﺎي از ﻧﻮع ﺷﻤﺎرﺷﻲ را ﻧﻤﻲﺗﻮان در دﺳﺘﻮرات ورودي و ﺧﺮوﺟﻲ اﺳﺘﻔﺎده
ﻛﺮد )دﺳﺘﻮرات Writeو .(Read
yﺑﺮاي ﻧﻤﺎﻳﺶ ﻣﻘﺪار ﻣﺘﻐﻴﺮﻫﺎي ﺷﻤﺎرﺷﻲ ﻣﻲﺗﻮان
case day of
از caseاﺳﺘﻔﺎده ﻛﺮد.
;)’Saturday: Write(‘Sat
.
.
.
yﺑﺮاي درﻳﺎﻓﺖ ﻣﻘﺪار ﻳﻚ ﻣﺘﻐﻴﺮ ﺷﻤﺎرﺷﻲ از
ﻛﺎرﺑﺮ ﻣﻲﺗﻮان ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻛﺮد.
17
end
;)Read(D
if D = ‘Sat’ then
Day := Saturday
else if D = ‘Sun’ then
Day := Sunday
…
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
زﻳﺮﺑﺎزهاي از ﮔﻮﻧﻪﻫﺎي ﺷﻤﺎرﺷﻲ
ﻣﻲﺗﻮان زﻳﺮﺑﺎزهاي از ﻳﻚ ﮔﻮﻧﻪ ﺷﻤﺎرﺷﻲ را، ﻫﻤﺎﻧﻨﺪ ﺳﺎﻳﺮ اﻧﻮاع ﺗﺮﺗﻴﺒﻲy
.ﺗﻌﺮﻳﻒ ﻛﺮد
type
Days = (Saturday, Sunday, Monday,
Tuesday, Wednesday, Thursday, Friday);
WeekDays = Saturday..Wednesday;
var
SchoolDay : WeekDays;
Begin
SchoolDay := Monday;
SchoolDay := Friday;
end.
ﻧﻮري: ﻣﺪرس
Constant out of range
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
18
ﺗﻤﺮﻳﻦ
yﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ اﺳﺘﻔﺎده از ﺳﺮي زﻳﺮ ﺗﺎ ﺟﻤﻠﻪ Sin(x) ،100را
ﻣﺤﺎﺳﺒﻪ ﻛﺮده و ﺳﭙﺲ ﺑﺎ ﻣﻘﺪار واﻗﻌﻲ ) Sin(xﻣﻘﺎﻳﺴﻪ و ﺗﻔﺎوت را ﭼﺎپ
ﻛﻨﺪ.
x3 x5 x7
sin(x) = x − + − + ...
!3! 5! 7
19
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
© Copyright 2026 Paperzz