ﺁﻳﺎ ﺟﺰﻭﻩ ﺭﺍ ﺍﺯ ﺳﺎﻳﺖ ﻣﺎ ﺩﺍﻧﻠﻮﺩ ﻛﺮﺩﻩ ﺍﻳﺪ؟
ﻛﺘﺎﺑﺨﺎﻧﻪ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ PNUEB
ﭘﻴﺎﻡ ﻧﻮﺭﻱ ﻫﺎ ﺑﺸﺘﺎﺑﻴﺪ
ﻣﺰﺍﻳﺎﻱ ﻋﻀﻮﻳﺖ ﺩﺭ ﻛﺘﺎﺑﺨﺎﻧﻪ : PNUEB
ﺩﺍﻧﻠﻮﺩ ﺭﺍﻳﮕﺎﻥ ﻭ ﻧﺎﻣﺤﺪﻭﺩ ﺧﻼﺻﻪ ﺩﺭﺱ ﻭ ﺟﺰﻭﻩ
ﺩﺍﻧﻠﻮﺩ ﺭﺍﻳﮕﺎﻥ ﻭ ﻧﺎﻣﺤﺪﻭﺩ ﺣﻞ ﺍﻟﻤﺴﺎﺋﻞ ﻭ ﺭﺍﻫﻨﻤﺎ
ﺩﺍﻧﻠﻮﺩ ﻛﺘﺎﺑﭽﻪ ﻧﻤﻮﻧﻪ ﺳﻮﺍﻻﺕ ﺩﺭﻭﺱ ﻣﺨﺘﻠﻒ ﭘﻴﺎﻡ ﻧﻮﺭ ﺑﺎ ﺟﻮﺍﺏ
www.PNUEB.com
ﻛﺘﺎﺑﭽﻪ ﻧﻤﻮﻧﻪ ﺳﻮﺍﻻﺕ ﭼﻴﺴﺖ:
ﺳﺎﻳﺖ ﻣﺎ ﺍﻓﺘﺨﺎﺭ ﺩﺍﺭﺩ ﺑﺮﺍﻱ ﺍﻭﻟﻴﻦ ﺑﺎﺭ ﺩﺭ ﺍﻳﺮﺍﻥ ﺗﻮﺍﻧﺴﺘﻪ ﺍﺳﺖ ﻛﺘﺎﺑﭽﻪ ﻧﻤﻮﻧﻪ ﺳﻮﺍﻻﺕ ﺗﻤﺎﻡ ﺩﺭﻭﺱ ﭘﻴﺎﻡ ﻧﻮﺭ
ﻛﻪ ﻫﺮ ﻳﻚ ﺣﺎﻭﻱ ﺗﻤﺎﻣﻲ ﺁﺯﻣﻮﻥ ﻫﺎﻱ ﺑﺮﮔﺰﺍﺭ ﺷﺪﻩ ﭘﻴﺎﻡ ﻧﻮﺭ )ﺗﻤﺎﻣﻲ ﻧﻴﻤﺴﺎﻟﻬﺎﻱ ﻣﻮﺟﻮﺩ ﺣﺘﻲ ﺍﻻﻣﻜﺎﻥ ﺑﺎ
ﺟﻮﺍﺏ( ﺭﺍ ﺩﺭ ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﻧﺎﻡ ﻛﺘﺎﺑﭽﻪ ﺟﻤﻊ ﺁﻭﺭﻱ ﻛﻨﺪ ﻭ ﻫﺮ ﺗﺮﻡ ﻧﻴﺰ ﺁﻥ ﺭﺍ ﺁﭘﺪﻳﺖ ﻧﻤﺎﻳﺪ.
ﻣﺮﺍﺣﻞ ﺳﺎﺧﺖ ﻳﻚ ﻛﺘﺎﺑﭽﻪ ﻧﻤﻮﻧﻪ ﺳﻮﺍﻝ
)ﺑﺮﺍﻱ ﺁﺷﻨﺎﻳﻲ ﺑﺎ ﺯﺣﻤﺖ ﺑﺴﻴﺎﺭ ﺯﻳﺎﺩ ﺗﻮﻟﻴﺪ ﺁﻥ ﺩﺭ ﻫﺮ ﺗﺮﻡ( :
ﺩﺳﺘﻪ ﺑﻨﺪﻱ ﻓﺎﻳﻠﻬﺎ – ﺳﺮچ ﺑﺮ ﺍﺳﺎﺱ ﻛﺪ ﺩﺭﺱ – ﭼﺴﺒﺎﻧﺪﻥ ﺳﻮﺍﻝ ﻭ ﺟﻮﺍﺏ – ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﻳﻚ ﺩﺭﺱ ﺩﺭ ﻧﻴﻤﺴﺎﻟﻬﺎﻱ ﻣﺨﺘﻠﻒ ﻭ ﭼﺴﺒﺎﻧﺪﻥ ﺑﻪ ﻛﺘﺎﺑﭽﻪ ﻫﻤﺎﻥ ﺩﺭﺱ – ﭼﺴﺒﺎﻧﺪﻥ ﻧﻴﻤﺴﺎﻟﻬﺎﻱ
ﻣﺨﺘﻠﻒ ﻳﻚ ﺩﺭﺱ ﺑﻪ ﻳﻜﺪﻳﮕﺮ – ﻭﺍﺭﺩ ﻛﺮﺩﻥ ﺍﻃﻼﻋﺎﺕ ﺗﻚ ﺗﻚ ﻧﻴﻤﺴﺎﻟﻬﺎ ﺩﺭ ﺳﺎﻳﺖ -ﺁﭘﻠﻮﺩ ﻛﺘﺎﺑﭽﻪ ﻭ ﺧﻴﻠﻲ ﻣﻮﺍﺭﺩ ﺩﻳﮕﺮ..
ﻫﻤﭽﻨﻴﻦ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﻐﻴﻴﺮﺍﺕ ﻛﺪﻫﺎﻱ ﺩﺭﺳﻲ ﺩﺍﻧﺸﮕﺎﻩ ﺍﺳﺘﺜﻨﺎﺋﺎﺕ ﺯﻳﺎﺩﻱ ﺩﺭ ﺳﺎﺧﺖ ﻛﺘﺎﺑﭽﻪ ﺑﻮﺟﻮﺩ ﻣﻲ ﺁﻳﺪ ﻛﻪ ﻛﺎﺭ ﺳﺎﺧﺖ ﻛﺘﺎﺑﭽﻪ ﺭﺍ ﺑﺴﻴﺎﺭ ﭘﻴﭽﻴﺪﻩ ﻣﻲ ﻛﻨﺪ .
www.PNUEB.com
m
o
c
*
b
e
u
w
w
w
n
*p
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﺍﻃﻼﻋﺎﺕ)ﮔﺮﻭﻩ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
m
o
ﮐﺎﻣﭙﻴﻮﺗﺮﺮ 1
ﺍﺻﻮﻝ ﭙ ﻮ
*cﻮ
b
e
u
n
اراﺋﻪ دﻫﻨﺪه *p :
w
w
ﺟﻌﻔﺮ ﺗﻨﻬﺎ
w
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﺍﻃﻼﻋﺎﺕ)ﮔﺮﻭﻩ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﻛﻠﻲ ﺍﻳﻦ ﺩﺭﺱ
ﺍﻫﺪﺍﻑ ﻛﻠ
m
داﻧﺸﺠﻮ o
cاز ﻣﻄﺎﻟﻌﻪ اﻳﻦ درس ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
ﭘﺲ
*
b
eاﻓﺰار و ﺳﺨﺖ اﻓﺰار را ﺑﺸﻨﺎﺳﺪ
اﺻﻮل و ﻣﺒﺎﻧﻲ اوﻟﻴﻪ ﻧﺮم
ﻣﻔﻬﻮم زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ u
nرا ﺑﺪاﻧﺪ
ﻧﻮﻳﺴﻲ
م
ﻣﻔﺎﻫﻴﻢ اوﻟﻴﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ p
ﺳﺎﺧﺖ*ﻳﺎﻓﺘﻪ را ﺑﺪاﻧﺪ
ﺑﺘﻮاﻧﺪ دﺳﺘﻮرات زﺑﺎن ﭘﺎﺳﻜﺎل را درw
ﺑﺮﻧﺎﻣﻪ ﺑﻜﺎر ﺑﺒﺮد
زﺑﺎن ﺎ w
اﺳﺘﻔﺎده ﻧ ﺎ ﺪ
ﻧﻤﺎﻳﺪ
wﻔﺎ
ﭘﺎﺳﻜﺎل ا
ﻜﺎل
اﺳﺘﺎﻧﺪارد ز ﺎن
ﻫﺎي ا ﺎﻧﺪا
ال ﺎ
ﺗﻮاﺑﻊ و روال
از ﺗ ا
از ﺗﻮاﺑﻊ ،روال ﻫﺎ و ﻓﺎﻳﻞ ﻫﺎ در ﺑﺮﻧﺎﻣﻪ اﺳﺘﻔﺎده ﻛﻨﺪ
ﺑﺎ اﺳﺘﻔﺎده از ﻗﺎﺑﻠﻴﺖ ﻫﺎي زﺑﺎن ﭘﺎﺳﻜﺎل ﺑﺮﻧﺎﻣﻪ اي را ﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ
ﺑﻨﻮﻳﺴﺪ.
ﺟﺎﻳﮕﺎه اﻳﻦ درس در رﺷﺘﻪ ﻋﻠﻮم ﻛﺎﻣﭙﻴﻮﺗﺮ
m
o
c
*
لا ﻟﻪ
اوﻟﻴﻪ
ﻳﺎد ﮔﮔﻴﺮي ااﺻﻮل
ﺑﻨﺎﺑﺮاﻳﻦ ﺎ
ﻫﺴﺖ .ﻨﺎ ا
ﻛﺎﻣﭙﻴﻮﺗﺮ ﻫ ﺖ
bﻛﺎ ﺗ
ﻋﻠﻢ
ﺑﺮﻧﺎﻣﻪ ﻧﻧﻮﺳﻲ و ﻠ
ﺟﺎﻟﺐ ﻧﺎ ﻪ
دﻧﻴﺎي ﺎﻟ
ﻧﺎ
e
u
وﻳﮋه اي ﺑﺮﺧﻮردار اﺳﺖ.
ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ در اﻳﻦ درس از ﺟﺎﻳﮕﺎه
n
p
*
اﻳﻦ درس ﭘﺎﻳﻪ و اﺳﺎس ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻛﻪ ﺟﺰء اﺻﻮل اﻳﻦ رﺷﺘﻪ ﻣﻲ ﺑﺎﺷﺪ را ﺑﻪ
w
w
ﻓﺮﮔﻴﺮان ﻳﺎد ﻣﻣﻲ دﻫﺪ .
ﻓ ﮔ ان
w
اﻳﻦ درس اوﻟﻴﻦ درس داﻧﺸﮕﺎﻫﻲ رﺷﺘﻪ ﻣﻲ ﺑﺎﺷﺪ و ﻧﻘﻄﻪ ﺷﺮوﻋﻲ ﺑﺮاي ورود ﺑﻪ
ﺑﻨﺎﺑﺮاﻳﻦ اﻳﻦ درس ﺟﺰء اﺻﻠﻲ ﺗﺮﻳﻦ دروس اﻳﻦ رﺷﺘﻪ در ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻧﺪ .
ﺡﺩ ﺱ
ﺩﺭﺱ
ﻃﺮﺡ
ﻃ
ﻞ اراﺋﻪ ﺷﻮد :
ﭘﺎﻧﺰده ﺟﻠﺴﻪ ﺑﺼﻮرت ذﻳﻞ
س در ﭘ ﺰ
ﻦ درس
ﻣﻲ ﺷﻮد اﻳﻦ
ﺗﻮﺻﻴﻪ ﻲ
m
o
ﺟﻠﺴﻪ اول c :
*
b
e
ﻓﺼﻞ اول ﻛﺘﺎب درﺳﻲ
اﻫﺪاف درس و
u
n
ﺟﻠﺴﻪ دوم :
*p
w
درﺳﻲw
ﻓﺼﻞ دوم ﻛﺘﺎب درﺳ
w
ﺟﻠﺴﻪ ﺳﻮم :
ﻓﺼﻞ ﺳﻮم ﻛﺘﺎب درﺳﻲ
ﺟﻠﺴﻪ ﭼﻬﺎرم :
ﻓﺼﻞ ﭼﻬﺎﺭﻡ ﻛﺘﺎب درﺳﻲ
ﺷﺸﻢ :
ﺟﻠﺴﻪ ﻨﭘﻨﺠﻢ وmﺷﺸ
ﻠ ﻪ
o
c
ب درﺳﻲ
ﻲ
ﻞ* ﭘﻨﺠﻢ ﻛﺘﺎب
ﻓﺼﻞ
ﺟﻠﺴﻪ ﻫﻔﺘﻢ :
b
e
u
n
درﺳﻲ
ﺷﺸﻢ ﻛﺘﺎ
ﻓﺼﻞ ﺷﺸ
ﻓ ﻞ
ﻛﺘﺎب *p
w
ﺟﻠﺴﻪ ﻫﺸﺘﻢ :
w
ﻓﺼﻞ ﻫﻔﺘﻢ ﻛﺘﺎب درﺳﻲ
ﺟﻠﺴﻪ ﻧﻬﻢ :
ﻓﺼﻞ ﻫﺸﺘﻢ ﻛﺘﺎب درﺳﻲ
w
ﻢ :
دﻫﻢ و ﻳﺎزدﻫﻢ
ﺟﻠﺴﻪ ﻢ
:m
دوازدﻫﻢ
ﺟﻠﺴﻪ ا
ﻠ
ﻓﺼﻞ ﻧﻬﻢ ﻛﺘﺎب درﺳﻲ
o
c
ﺟﻠﺴﻪ ﺳﻴﺰدﻫﻢ :
*
درﺳﻲ
ﻲ
ب ر
ﻢ ﻛﺘﺎب
دﻫﻢ
ﺼﻞ
ﻓﺼﻞ
b
e
u
n
درﺳﻲ
ﻓﺼﻞ ﻳﺎزدﻫﻢ ﻛﺘﺎب*p
w
ﺟﻠﺴﻪ ﭼﻬﺎردﻫﻢ :
w
ﻓﺼﻞ دوازدﻫﻢ ﻛﺘﺎب درﺳﻲ w
ﺟﻠﺴﻪ ﭘﺎﻧﺰدﻫﻢ :
ﻓﺼﻞ ﺳﻴﺰدﻫﻢ ﻛﺘﺎب درﺳﻲ
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ
ﻓﻨﺎﻭﺭﻧﻮﺭي ﻓﺼﻞ 1
ﺩﺍﻧﺸﻜﺪﻩ
ﺍﻃﻼﻋﺎﺕ)ﮔﺮﻭﻩ
ﻣﻬﻨﺪﺳﻲ
ﻬ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
m
o
آﺷﻨﺎﻳﻲ ﺑﺎ ﻛﺎﻣﭙﻴﻮﺗﺮ
c
*
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﻫﺪﻓ ﺎي
b
e
u
n
ﺎ
ﺷﻨﺎﺧﺖ ﻛﺎ
ﺷﺎ
ﻗﺪﻳﻢ و ااﻣﺮوزي
ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي ﻧﺴﻞﻞpﻗ*
ﺷﻨﺎﺧﺖ ﺳﺨﺖاﻓﺰارﻫﺎي ﻻزمw
wﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي ﺷﺨﺼﻲ
ﺑﺮاي
w
ﺑﺮرﺳﻲ ﻧﺮماﻓﺰارﻫﺎ و اﻧﻮاع آن
ﻫﺪﻓﻬﺎي رﻓﺘﺎري
ﺑﺘﻮاﻧﺪ:
ﻞ ﺎﺑﺎﻳﺪ اﻧ
ﻣﻄﺎﻟﻌﻪ ااﻳﻦ ﻓﻓﺼﻞ
ﭘﺲ از ﻄﺎﻟ
اﻧﺸ
داﻧﺸﺠﻮ m
o
c
*
b
e
u
ﻣﻘﺎﻳﺴﻪ ﻛﻨﺪ.
ﻳﻢ ﻳ
ﻞ ﻗﺪﻳﻢ
ي ﻧﺴﻞ
ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي
ﺟﺪﻳﺪ ررا ﺑﺑﺎ ﭙﻴﻮ ﺮ
ﻞﺟ ﻳ
ي ﻧﺴﻞ
ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي
ﭙﻴﻮ ﺮ
n
*p
ﺳﺨﺖاﻓﺰارﻫﺎي ﻻزم ﺑﺮاي ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي ﺷﺨﺼﻲ را ﺑﺸﻨﺎﺳﺪ.
w
w
اﻧﻮاع ﺣﺎﻓﻈﻪ ،ﻣﺰاﻳﺎ و ﻣﻌﺎﻳﺐ آﻧﻬﺎ را ﺷﻨﺎﺧﺘﻪ و ﺑﺎ ﻫﻢ ﻣﻘﺎﻳﺴﻪ ﻧﻤﺎﻳﺪ.
ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ و اﻧﻮاع آن را ﻣﻘﺎﻳﺴﻪ ﻧﻤﺎﻳﺪ.
ﻧﺮماﻓﺰار و زﺑﺎﻧﻬﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ را ﺗﻌﺮﻳﻒ ﻛﻨﺪ.
w
ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي ﻗﺪﻳﻤﻲ
m
o
) (Super Computerﻫﻤﻪ ﻣﻨﻈﻮره دﻳﺠﻴﺘﺎل
اوﻟﻴﻦ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺰرگ
c
*
داﻧﺸﮕﺎه
ﻣﻴﻼدي ددر داﻧﺸﮕﺎ
ﺳﺎل 1946ﻼدي
ENIACددر ﺎل
ﺗﺤﺖ ﻋﻨ ان
ﻋﻨﻮان
اﻟﻜﺘﺮوﻧﻴﻚ ،ﺗ ﺖ
اﻟﻜﺘ ﻧ ﻚ
b
e
uﺑﺎ ﺳﺮﻣﺎﻳﻪ ارﺗﺶ آﻣﺮﻳﻜﺎ ﻃﺮاﺣﻲ ﺷﺪ.
ﭘﻨﺴﻴﻠﻮاﻧﻴﺎ ﺳﺎﺧﺘﻪ ﺷﺪ .اﻳﻦ ﻛﺎﻣﭙﻴﻮﺗﺮ
ﻛﺎﻣﭙﻴﻮﺗﺮ
ﻛﺎﻣﭙﻴﻮﺗﺮ 30ﺗﻦ و اﺑﻌﺎد آن 30×p50nﻓﻮت ﺑﻮد .اﻳﻦ ﻛﺎﻣ ﻮﺗ
وزن اﻳﻦ ﻛﺎﻣ ﻮﺗ
*
وﺿﻊ آب و ﻫﻮا و ﻣﺤﺎﺳﺒﺎت
ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﺟﺪول ﭘﺮﺗﺎﺑﻪﻫﺎ ،ﭘﻴﺶﮔﻮﻳﻲ w
w
.
ﻓﺖ
رﻓﺖ
ﻣﻲ
ﺑﻜﺎر
ﻜﺎ
اﺗﻤﻲ
اﺗ
اﻧﺮژي
ژي
اﻧ
w
در ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي اوﻟﻴﻪ از ﻻﻣﭙﻬﺎي ﺧﻼء ﺑﻌﻨﻮان ﻋﻨﺼﺮ اﻟﻜﺘﺮوﻧﻴﻜﻲ ﭘﺎﻳﻪ
m
ﻛﺮدﻧﺪ .در اﻳﻦ ﻣﺎﺷﻴﻦﻫﺎ 19000ﻻﻣﭗ ﺧﻼء اﺳﺘﻔﺎده ﺷﺪه
اﺳﺘﻔﺎده ﻣﻲ
o
ﺑﻮد و ﺑﺮاي اﻧﺮژي c
ﻣﺼﺮﻓﻲ ﻻﻣﭗﻫﺎ و ﻫﻤﭽﻨﻴﻦ دﺳﺘﮕﺎﻫﻬﺎي ﺗﻬﻮﻳﻪ و
*
b
130 kwاﻧﺮژي اﻟﻜﺘﺮﻳﻜﻲ ﻣﺼﺮف ﻣﻲﺷﺪ.
ﺧﻨﻚﻛﻨﻨﺪه ﻣﺎﺷﻴﻦ ﺣﺪود
e
u
زﻳﺎدي
ﺑﻮدﻧﺪ و ﺳﻄﺤﻲ را ﻣﻌﺎدل 9015
اﻳﻦ ﻣﺎﺷﻴﻦﻫﺎ داراي ﺣﺠﻢ
ﻢ
n
ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎ ﺑﻪ ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي ﻧﺴﻞ اول
ﻣﺘﺮﻣﺮﺑﻊ اﺷﻐﺎل ﻣﻲﻛﺮدﻧﺪ .اﻳﻦ *p
w
ﻣﻌﺮوف ﺷﺪﻧﺪ.
w
w
ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي اﻣﺮوزي
m
اﻣﺮوزي ﺑﺎ ﺑﻜﺎرﮔﻴﺮي رﻳﺰﭘﺮدازﻧﺪه ﺑﻪ ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي
ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي
o
c
*
ﻧﺴﻞﻫﺎي ﺟﺪﻳﺪ دﻳﮕﺮ ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎ ﻧﻴﺰ
ﻧﺴﻞ ﭼﻬﺎرم ﻣﻌﺮوﻓﻨﺪb.اﻟﺒﺘﻪ ﻧﺴﻞﻫﺎي
e
.
ﺷﻮد
ﻣﻲ
اراﺋﻪ
ﺑﺎزار
ﺑﻪ
u
n
ﭘﺮدازش ﺑﺴﻴﺎر ﺑﺎﻻ ،ﺣﺠﻢ
ﺳﺮﻋﺖ
در ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي اﻣﺮوزي
p
اﺟﺰاء ﺳﺨﺖاﻓﺰاري ﺑﺴﻴﺎر ﻛﻮﭼﻚ*،
ﺣﺠﻢ ﺣﺎﻓﻈﻪ ﺑﺎﻻ و ﻏﻴﺮه
w
ﺳﺎزدw.
ﻣﻲﺳﺎزد
آﻧﻬﺎ را از ﻧﺴﻞ ﻫﺎي دﻳﮕﺮ ﻣﺘﻤﺎﻳﺰ ﻣﻲ
w
m
o
اﺟﺰاء ﺗﺸﻜﻴﻞ دﻫﻨﺪه ﻛﺎﻣﭙﻴﻮﺗﺮ ﻋﺒﺎرﺗﻨﺪ از :
c
*
b
e
u
ﺳﺨﺖ اﻓﺰار
n
*p
ﻧﺮم اﻓﺰار
w
w
w
اﻓﺰار
ﺳﺨﺖ ﻓ
m
o
c
*
process b
e
u
n
ﭘﺮﺩﺍﺯﺵ
*p
Input
ﻭﺭﻭﺩي
w
w
w
Out put
ﺧﺮﻭﺟﻲ
ﺗﺸﻜﻴﻞ ﻣﻲﺷﻮﻧﺪ:
ﻞ
ﻗﻄﻌﺎت زﻳﺮ
ﻣﻌﻤﻮﻻ از ﻗﻄ
ﻻً
ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي اﻣﺮوزي
m
دﺳﺘﮕﺎﻫﻬﺎي ورودي
•
o
• ﺣﺎﻓﻈﻪc
ﻫﺎي ﺟﺎﻧﺒﻲ
ﻲ
*
b
e
اﺻﻠﻲ
ﻫﺎي
ﺣﺎﻓﻈﻪ
•
u
n
ﻛﺰي
ﻣﺮﻛﺰي
ﭘﺮدازﺷﮕﺮ ﻣ
• واﺣﺪ ﭘ دازﺷﮕ
p
*
• دﺳﺘﮕﺎﻫﻬﺎي ﺧﺮوﺟﻲ w
w
w
ﻧﺮم اﻓﺰار
m
o
ﻧﺮماﻓﺰار ﻳﻜﻲ از ﺑﺨﺶ c
ﻫﺎي* اﺳﺎﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﻪ ﺷﻤﺎر ﻣﻲآﻳﺪ ،ﻛﻪ در
b
واﻗﻊ ﺳﺨﺖاﻓﺰار را ﺑﻜﺎر ﻣﻲ e
uﺑﻌﺒﺎرت دﻳﮕﺮ راﺑﻂ ﺑﻴﻦ ﻛﺎرﺑﺮ و
ﮔﻴﺮد.
n
ﺳﺨﺖاﻓﺰار را ﻧﺮماﻓﺰار ﻣﻲﻧﺎﻣﻨﺪ .ﻧﺮم p
اﻓﺰار*در ﺣﻘﻴﻘﺖ روح و ﺟﺎن ﻳﻚ
w
اﻓﺰار ﻫﻮﻳﺖ ﻣﻲ w
ﺑﺨﺸﺪ.
ﻣﻲﺑﺨﺸﺪ
ﺳﺨﺖاﻓﺰار
ﻛﺎﻣﭙﻴﻮﺗﺮ اﺳﺖ ،ﻛﻪ ﺑﻪ ﺳﺨﺖ
w
ﻧﺮم اﻓﺰار ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ
m
o
• ﺳﻴﺴﺘﻢﻢ ﻋﺎﻣﻞﻞ c
ﻣﺸﻬﻮرﺗﺮﻳﻦ ﻮع
ﻧﻮع
) (OS: Operating Systemﻮ ﺮ ﻦ
*
b
ﺑﺎﺷﺪ .ﻛﻪ ﻣﺪﻳﺮﻳﺖ ﻣﻨﺎﺑﻊ ﺳﻴﺴﺘﻤﻲ را ﺑﺮ
ﻣﻲ
ﻧﺮماﻓﺰارﻫﺎي ﺳﻴﺴﺘﻤﻲ
e
u
ﻫﻤﭽﻨﻴﻦ ارﺗﺒﺎط ﺑﻴﻦ ﻛﺎرﺑﺮ و اﺟﺰاء
ﻋﺎﻣﻞ،
ﺳﻴﺴﺘﻢ
.
دارد
ﻋﻬﺪه
n
ﺑﺮﻗﺮار ﻣﻲﻛﻨﺪ.
ﺳﺨﺖاﻓﺰاري و ﻧﺮماﻓﺰاري ﮕ
دﻳﮕﺮ را*p
w
w
w
m
o
c
*
b
e
u
w
w
w
n
*p
ﺑﺮﻧﺎﻣﻪﻧﻧﻮﻳﺴﻲ
ﺯﺑﺎﻧﻬﺎي ﻧﺎ
ﺎﻧ ﺎ
• ﻧﺮماﻓﺰارﻫﺎ m
ﺗﻮﺳﻂoزﺑﺎﻧﻬﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ .زﺑﺎﻧﻬﺎي
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ،ﻳﻚ c
ﺳﻴﺴﺘﻢﻢ ارﺗﺒﺎﻃﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺗﻮﺳﻂ آﻧﻬﺎ ﻣﻲﺗﻮان
*
دﺳﺘﻮرات ﻻزم را ﺑﻪ b
ﻣﺎﺷﻴﻦeاﻧﺘﻘﺎل داد.
u
n
ﻗﻮاﻋﺪ و
ﻋﻼﻳﻢ ،ﻮ
از ﻳﻢ
ي ز
أي
ﻣﺠﻤﻮﻋﻪ
ﻧﻮﻳﺴﻲ ﺑﺑﻪ ﺠ ﻮ
ﺑﺮﻧﺎﻣﻪ ﻮﻳ ﻲ
ﻫﺮزﺑﺎن ﺑﺮ
• ﺮزﺑ
p
*
دﺳﺘﻮراﻟﻌﻤﻞﻫﺎ ﮔﻔﺘﻪ ﻣﻲﺷﻮد ﻛﻪ اﻣﻜﺎن ارﺗﺒﺎط ﺑﺎ ﻛﺎﻣﭙﻴﻮﺗﺮ را ﺟﻬﺖ
w
اي ﺮ ﻢ
ﺣﻞ ﻣﺴﺌﻠﻪ ي
ﻛﺎري ﻳﻳﺎ ﻞ
ﺑﻴﺎن ري
ﺑﻴ ن
ﻓﺮاﻫﻢ ﻣﻲﻲﻛﻨﺪw .
w
ﺩﺭ ﺣﺎﻟﺖ ﻛﻠﻲ ﺯﺑﺎﻧﻬﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺭﺍ ﺑﻪ ﺳﻪ ﺩﺳﺘﻪ ﺯﻳﺮ ﺗﻘﺴﻴﻢﺑﻨﺪي
ﻲﻛﻨﻨﺪ:
ﻣﻲ
m
o
c
*
b
ﺳﻄﺢ ﺑﺎﻻ
• زﺑﺎﻧﻬﺎي
e
• زﺑﺎﻧﻬﺎي u
ﺳﻄﺢnﭘﺎﻳﻴﻦ
• زﺑﺎﻧﻬﺎي ﺳﻄﺢ p
ﻣﻴﺎﻧﻲ*
w
w
w
ﻛﺎﻣﭙﺎﻳﻠﺮ ﺑﺮﻧﺎﻣﻪ ﻧﻮﺷﺘﻪ ﺩﺭ ﻳﻚ ﺯﺑﺎﻥ ﺳﻄﺢ ﺑﺎﻻ ﺭﺍ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻣﻘﺼﺪ ﺗﺒﺪﻳﻞ
ﻣﻣﻲﻛﻨﺪ.
m
o
Object
j
program
c
*
b
e
u
n
C
il
*pCompile
r
w
Source
program
w
w
ﺯﺑﺎﻥ Pascal
m
o
در اﻳﻦ ﻛﺘﺎب زﺑﺎن c
ﭘﺎﺳﻜﺎل ) (Pascalرا ﺑﺮاي آﻣﻮزش و ﻧﻮﺷﺘﻦ
*
b
ﭘﺎﺳﻜﺎل داﻧﺸﻤﻨﺪ
زﺑﺎن ﻛﻪ ﺑﻪ اﻓﺘﺨﺎر ﻠﺑﻠﺰ ﻜ ل
ﺑﺮﻧﺎﻣﻪﻫﺎ اﻧﺘﺨﺎب ﻛﺮدﻳﻢ .اﻳﻦ
e
ﻓﺮاﻧﺴﻮي ﻗﺮن ﻫﻔﺪﻫﻢ ﻣﻴﻼديu ،
nﻧﺎﻣﮕﺬاري ﺷﺪه اﺳﺖ ،در اواﺧﺮ
ﭘﺎﺳﻜﺎل
اواﻳﻞ 1970ﺗﻮﺳﻂﻂ p
ﻧﻴﻜﻼس وﻳﮋت در اﻧﺴﺘﻴﺘﻮ
ﭘﺮوﻓﺴﻮر* ﻜﻼ
ﺳﺎل 1960و ﻞ
ل
w
ﻓﻨﻲ ﻓﺪرال ﺳﻮﺋﻴﺲ ﻣﻄﺮح ﮔﺮدﻳﺪ
w
w
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﺍﻃﻼﻋﺎﺕ)ﮔﺮﻭﻩ ﻓﺼﻞ 2
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﺳﺎﺧﺘﺎر ﺑﺮﻧﺎﻣﻪ در زﺑﺎن ﭘﺎﺳﻜﺎل
m
o
c
*
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﻓﺎ
b
e
u
n
*p
w
ﺷﻨﺎﺧﺖ اﺟﺰاي ﺗﺸﻜﻴﻞ دﻫﻨﺪه ﻳﻚ ﺑﺮﻧﺎﻣﻪ
ﻧﺎﻣﻪ در زﺑﺎن ﭘﺎﺳﻜﺎل
ﺷﻨﺎﺧﺖ ﺳﺎﺧﺘﺎر ﻳﻚ ﺑﺑﺮﻧﺎﻣﻪ
ﺑﺮرﺳﻲ دﺳﺘﮕﺎﻫﻬﺎي ﺧﺮوﺟﻲ و دﺳﺘﻮرات ﻻزم در زﺑﺎن
ﺗﻮﻟﻴﺪ ﺧﺮوﺟﻲ
ﺮوﺟﻲ
ﺑﺮاي ﻮ ﻴ
ل ﺑﺮ ي
ﭘﭘﺎﺳﻜﺎل
w
w
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي ﻓ ﺎ
ﻓﺎ
oﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
mاز
داﻧﺸﺠﻮ ﭘﺲ
c
*
b
ﺑﺪاﻧﺪ.
ﻜﺎل راا ا
ﭘﺎﺳﻜﺎل
زﺑﺎن ﺎ
ﺑﺮﻧﺎﻣﻪ در ﺎ
ﺑﺮاي ﻧﻮﺷﺘﻦ ﺎ
ﻻزم ا
اﺟﺰاء ﻻ
ا ا
e
u
n
ﺗﻌﺮﻳﻒ ﻛﻨﺪ.
ﻳﻚ ﺷﻨﺎﺳﻪ ﺻﺤﻴﺢ در زﺑﺎن ﭘﺎﺳﻜﺎل را
p
*
w
ﺑﺮﻧﺎﻣﻪ ررا
ﻣﺮﺑﻮط ﺑﻪ ﺑﺮ
ي ﺮﺑﻮ
اﻋﻼﻧﻬﺎي
ﻬ
زﺑﺎن ﭘﭘﺎﺳﻜﺎل و
ﺑﺮﻧﺎﻣﻪ درر زﺑ
ﺳﺎﺧﺘﺎرر ﻳﻳﻚ ﺑﺮ
w
w
ﺗﻌﺮﻳﻒ ﻧﻤﺎﻳﺪ.
ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺳﺎده ﺑﻪ زﺑﺎن ﭘﺎﺳﻜﺎل ﻛﻪ ﻓﻘﻂ ﺧﺎﺻﻴﺖ ﺧﺮوﺟﻲ دارد ،ﺑﻨﻮﻳﺴﺪ.
ﺍﺟﺰﺍي ﺗﺸﮑﻴﻞﺩﻫﻨﺪﻩ ﻳﮏ ﺑﺮﻧﺎﻣﻪ
m
o
c
*
( Reserved Words )b
ﺷﺪه
ذﺧﻴﺮهﺷﺪ
ﻛﻠﻤﺎت ذﺧ
• ﻛﻠ ﺎت
e
u
n
• ﺷﻨﺎﺳﻪﻫﺎ ) *p ( identifier
w
w
w
(R
Reserved
d W
Words
ﺷﺪﻩ ) d
ﺫﺧﻴﺮﻩﺷ
ﮐﻠﻤﺎﺕ ﺫﺧ
ﮐﻠ ﺎ
m
ﻛﻠﻤﺎﺗﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﻣﺘﺮﺟﻢ زﺑﺎن آﻧﻬﺎ را ﻣﻲﺷﻨﺎﺳﺪ و
ﻛﻠﻤﺎت ذﺧﻴﺮه ﺷﺪه،
o
c
*
دارﻧﺪ .ﻣﺘﺮﺟﻢ زﺑﺎن ﺑﻪ ﻣﺤﺾ ﻣﺸﺎﻫﺪه اﻳﻦ
ﺧﺎﺻﻲ ﺑﺮاي زﺑﺎن
ﻣﻌﻨﺎي ﺧﺎﺻ
b
uدﻫﺪ .ﻫﺮ زﺑﺎن داراي ﺗﻌﺪاد ﻣﺸﺨﺼﻲ
eﻣﻲ
ﻛﻠﻤﺎت اﻋﻤﺎل ﺧﺎﺻﻲ را اﻧﺠﺎم
n
ﺑﺮﻧﺎﻣﻪﻧﻧﻮﻳﺲ
ﺗﻮﺳﻂ ﻧﺎ
اﻓﺰاﻳﺶ ﺗ ﻂ
ﻗﺎﺑﻞ اﻓ ا ﺶ
ﺗﻌﺪادpﻗﺎ*ﻞ
ﺑﺎﺷﺪ و ااﻳﻦ ﺗ ﺪا
ﺷﺪه ﻣﻲ ﺎﺷﺪ
ذﺧﻴﺮه ﺷﺪ
ﻛﻠﻤﺎت ذﺧ
ﻛﻠ ﺎ
w
ﻧﻴﺴﺖ.
w
w
::ﺍﺯ
ﻟﻴﺴﺖ ﮐﻠﻤﺎﺕ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺩﺭ ﭘﺎﺳﮑﺎﻝ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ
and
exports
mod
asm
array
begin
case
concat
constructor
destructor
div
do
d
downto
t
else
end
file
nil
f
for
nott
function
object
goto
of
if
or
implementation packed
in
procedure
inherited
program
inline
record
i t f
interface
repeatt
label
set
library
shl
w
w
c string
*
th
then
b
e
to
u
n
*p
w
m
o
shr
type
unit
until
uses
var
with
while
hil
xor
ﺷﻨﺎﺳﻪﻫﺎ ) ( identifier
m
o
c
*
ﺗﻮاﺑﻊ،
ﭘﺮوﺳﻴﺠﺮوﻫﺎ ،ﻮ ﺑﻊ
ﺗﺎﻳﭙﻬﺎ ،ﭘﺮو ﻴﺠﺮو
ﺛﺎﺑﺘﻬﺎ ،ﻳﭙﻬ
ري ﺑ ﻬ
ﻧﺎﻣﮕﺬاري
ي
ﺑﺮاي
ﺑﺮ
ل
ﭘﺎﺳﻜﺎل
ﭘ
ر
در
ﺷﻨﺎﺳﻪ
•
b
e
ﻫﻤﭽﻨﻴﻦ ﻳﻮﻧﻴﺖ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار
و
ﺑﺮﻧﺎﻣﻪ
رﻛﻮرد،
ﻳﻚ
ﻣﻴﺪاﻧﻬﺎي
u
n
ﮔﻴﺮد..
ﻣﻲﮔﻴﺮد
ﻣﻲ
p
*
w
w
w
ﺩﺍﺭﺩ :
ﺷﻨﺎﺳﻪ ﻭﺟﻮﺩ ﺍ
ﺣﺎﻟﺖ ﮐﻠﻲ ﺩﻭ ﻧﻧﻮﻉ ﺷ ﺎ
ﺩﺭ ﺎﻟ
m
oاﻳﻦ ﻧﻮع idﻫﺎ از ﻗﺒﻞ در زﺑﺎن ﭘﺎﺳﻜﺎل ﺗﻌﺮﻳﻒ
id ﻫﺎي اﺳﺘﺎﻧﺪارد:
c
*
دارﻧﺪ .
ﻲ ر
ﻣﻌﻨﺎي ﺧﺎﺻﻲ
ﺑﺮﻧﺎﻣﻪﻫﺎ ،ي
در ﺑﺮ
ﺷﺪهاﻧﺪ و ر
b
e
u
pﺑﻮﺳﻴﻠﻪ ﻛﺎرﺑﺮ ﺑﻄﻮر ﻣﺠﺰا
nﻫﺎ
id ﻫﺎي ﻏﻴﺮاﺳﺘﺎﻧﺪارد :اﻳﻦ ﻧﻮع id
ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮﻧﺪ و اﺻﻄﻼﺣﺎً ﺑﻪ آﻧﻬﺎ *
userdefinedﮔﻔﺘﻪ ﻣﻲﺷﻮد.
w
w
w
ﺳﺎﺧﺘﺎﺭ ﺑﺮﻧﺎﻣﻪ ﺩﺭ ﺯﺑﺎﻥ ﭘﺎﺳﮑﺎﻝ
m
o
c
*
b
e
u
ﺍﺟﺰﺍﺀ ﺍﺻﻠﻲ ﻳﮏ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺯﺑﺎﻥ ﭘﺎﺳﮑﺎﻝ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲﺑﺎﺷﺪ:
ﺑﺮﻧﺎﻣﻪﻪ
ﻋﻨﻮان ﻧﺎ
ﻋﻨ ان
ﻗﺴﻤﺖ ﺗﻌﺎرﻳﻒ ﺑﺮﻧﺎﻣﻪ
ﻗﻗﺴﻤﺖ دﺳﺘﻮر اﻟ ﻠ ﺎ
اﻟﻌﻤﻠﻬﺎ
n
*p
w
w
w
ﻗﺴﻤﺖ ﺗﻌﺎﺭﻳﻒ ﺑﺮﻧﺎﻣﻪ
m
o
Constant Declaration c ﺍﻋﻼﻥ ﺛﺎﺑﺘﻬﺎ
*
b
T
Type
Declaration
D l ti
ﺍﻧﻮﺍﻉ
ﻼﻥ ﺍﻧ ﺍ
ﺍﺍﻋﻼﻥ
e
u
Variable Declaration
ﺍﻋﻼﻥ ﻣﺘﻐﻴﺮﻫﺎ
n
p
*
Label Declaration
ﺍﻋﻼﻥ ﺑﺮﭼﺴﺒﻬﺎ
w
w
w
•
•
•
•
ﺩﺭﺣﺎﻟﺖ ﮐﻠﻲ ﻣﻲﺗﻮﺍﻥ ﺷﮑﻞ ﻳﮏ ﺑﺮﻧﺎﻣﻪ ﺩﺭ ﺯﺑﺎﻥ ﭘﺎﺳﮑﺎﻝ ﺭﺍ
ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﺑﻴﺎﻥ ﮐﺮﺩ:
m
o
•
اﺳﺘﻔﺎده از ﻛﻠﻤﻪ ذﺧﻴﺮه ﺷﺪه Programو اﺳﻢ ﺑﺮﻧﺎﻣﻪ ) ﻛﻪ ﻣﻲﺗﻮاﻧﺪ ﺑﻜﺎر
ﺑﺮده ﻧﺸﻮد (
ﻗﺴﻤﺖ ﺗﻌﺎرﻳﻒ ﺷﻨﺎﺳﻪﻫﺎ
•
ﺑﻠﻮك اﺻﻠﻲ ﺑﺮﻧﺎﻣﻪ ﻛﻪ ﺑﺎ Beginﺷﺮوعع و ﺑﻪ Endﻫﻤﺮاه ﻧﻘﻄﻪ ) ( .
ﺧﺘﻢ ﻣﻲﺷﻮد.
•
•
c
*
b
e
u
n
*p
ﻫﺮ دﺳﺘﻮر در ﭘﺎﺳﻜﺎل ﺑﻪ ) ; ( ﺧﺘﻢ ﻣﻲﺷﻮدw.
w
w
ﺑﺎﺷﺪ:
ﺑﺘﺮﺗﻴﺐ ﺑﻪ ﺻﻮﺭ ﺕ ﺯﻳﺮ ﻣﻲ ﺎﺷ
ﺑﻠﻮﮎ ﺗ
ﺑﺮﻧﺎﻣﻪ ﻭ ﻠ ﮎ
ﮏ ﻧﺎ
ﻧﻤﻮﺩﺍﺭﻫﺎي ﻳﮏ
ﻧ ﺍ ﺎ
0
block
m
o
;
c
*
)
ﺷﻨﺎﺳﻪ
ﺷﻨﺎﺳﻪ
b
e
,
u
(
n
*p
End.
w
w
Program
Statement
;
w
Begin
g
ﺧﺮﻭﺟﻲ ) ( Output
m
دﺳﺘﮕﺎﻫﻬﺎي ﺧﺮوﺟﻲ ﻋﺒﺎرﺗﻨﺪاز:
ﻣﺸﻬﻮرﺗﺮﻳﻦ o
c
*
b
e
u
Monitorﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ
n
p
*
Printerﭼﺎﭘﮕﺮ
wwﺗﺮﻣﻴﻨﺎل
Terminale
w Plotter
رﺳﺎم
ﺷﺪﻩ
ﺣﻞ ﺷ
ﻫﺎي ﻞ
ﻣﺜﺎﻝ ﺎ
ﺜﺎﻝ
c
*
P
Program
P
Print
i t ( output
t t); b
e
Begin
u
Writeln ( ' PascalnLanguage ' )
p ( ' Hello ' ) ;
;
Writeln
*
End.
w
w
w
m
o
:ﺧﺮﻭﺟﻲ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲﺑﺎﺷﺪ
c
*
b
e
Pascal Language u
n
Hello
*p
w
w
w
m
o
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﮔﺮﻭﻩ ﻓﺼﻞ 3
ﺍﻃﻼﻋﺎﺕ)ﮔ ﻭﻩ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﺍﻧﻮﺍﻉ ﻋﻤﻠﮕﺮﻫﺎ ﻭ ﺩﺍﺩﻩﻫﺎ ﺩﺭ ﺯﺑﺎﻥ ﭘﺎﺳﮑﺎﻝ
m
o
c
*
b
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﺎ
e
u
n
*p
w
ﻣﻌﺮﻓﻲ ﺍﻧﻮﺍﻉ ﻋﻤﻠﮕﺮﻫﺎ ﺩﺭ ﺯﺑﺎﻥ ﭘﺎﺳﻜﺎﻝ
ﺷﻨﺎﺧﺖ ﺍﻧﻮﺍﻉ ﺩﺍﺩﻩﻫﺎ
ﺑﺮﺭﺳﻲ ﺍﻭﻟﻮﻳﺖ ﻋﻤﻠﮕﺮﻫﺎ
w
w
ﺟﺎﻳﮕﺰﻳﻨﻲ ﺩﺩﺭ ﭘﺎ ﻜﺎﻝ
ﭘﺎﺳﻜﺎﻝ
ﺩﺳﺘﻮﺭﺍﺕ ﺎﻳﮕﺰﻳﻨ
ﻣﻌﺮﻓﻲ ﺩ ﺘ ﺍﺕ
ﻓ
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي ﻓ ﺎ
ﻓﺎ
داﻧﺸﺠﻮ ﭘﺲ از ﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
m
o
در زﺑﺎن ﭘﺎﺳﻜﺎل را ﺑﻜﺎر ﺑﺒﺮد
اﻧﻮاع ﻋﻤﻠﮕﺮﻫﺎ
c
*
b
e
ﺑﺮﻧﺎﻣﻪ را ﺗﻌﺮﻳﻒ ﻛﻨﺪ.
اﻧﻮاع دادهﻫﺎ ﺑﺮاي ﻳﻚ
u
n
p
*
ﺗﺸﺨﻴﺺ دﻫﺪ.
اوﻟﻮﻳﺖ ﻋﻤﻠﮕﺮﻫﺎ در ﻳﻚ ﻋﺒﺎرت را w
w
w
ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺳﺎده ﺑﺎ ﻋﻤﻠﻴﺎت ﻣﻌﻤﻮﻟﻲ را ﺑﻨﻮﻳﺴﺪ.
ﻠﮕ ﺎ
ﻋﻤﻠﮕﺮﻫﺎ
m
ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺮاي اﻧﺠﺎم اﻋﻤﺎل ﺧﺎﺻﻲ ﻣﻮرد اﺳﺘﻔﺎده
ﻋﻤﻠﮕﺮﻫﺎ ﻧﻤﺎدﻫﺎﻳﻲ
o
c
*
ﺧﺎﺻﻲ روي ﻋﻤﻠﻮﻧﺪﻫﺎ
ﺑﺮايbاﻧﺠﺎم اﻋﻤﺎل ﺧﺎﺻ
ﻋﻤﻠﮕﺮﻫﺎ ﺑ اي
ﮔﻴﺮﻧﺪ.ﻋﻤﻠﮕ ﻫﺎ
ﻗﺮار ﻣﻣﻲﮔ ﻧﺪ
ﻗ ار
e
uﺗﻮﺟﻪ ﺑﻪ ﻧﻮع ﻋﻤﻠﮕﺮ ﻣﻤﻜﻦ
) ( Operandsﺑﻜﺎر ﻣﻲروﻧﺪ .ﺑﺎ
n
ﻋﻤﻠﮕﺮﻫﺎ ددر ز ﺎن
زﺑﺎن
ﺑﺎﺷﺪ .ﻠﮕ ﻫﺎ
ﺎﺷﺪ
ﻧﺪ وﺟﻮدد داﺷﺘﻪ
ﻋﻤﻠﻮﻧﺪ
ﻚ ﻳﺎﺎ ددو ﻠ
ﺖ ﻳﻚ
ااﺳﺖ
p
*
ﭘﺎﺳﻜﺎل از ﺗﻨﻮع زﻳﺎدي ﺑﺮﺧﻮردارﻧﺪw .
w
w
ﺩﺭ ﭘﺎﺳﮑﺎﻝ ﭼﻬﺎﺭ ﺩﺳﺘﻪ ﻋﻤﻠﮕﺮ ﻭﺟﻮﺩ ﺩﺍﺭﻧﺪ :
m
o
c
*
ﻣﺤﺎﺳﺒﺎﺗﻲ
bﺎﺗ
ﺎ
e
اي
راﺑﻄﻪ
u
n
ﻣﻨﻄﻘﻲ
ﻨﻄﻘ
p
*
ﺑﻴﺘﻲ
w
w
w
ﻋﻤﻠﮕﺮﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﻲ
m
ﻣﺜﺎﻝ
o
x+y
x – y , -x
x*y
ﻧﺎﻡ
c
*
ﺟﻤﻊ
ﻊ
ﺟ
b
ﺗﻔﺮﻳﻖ ﻭ e
ﻣﻨﻬﺎيuﻳﮑﺎﻧﻲ
n
ﺿﺿﺮﺏ *p
x/y
ﺗﻘﺴﻴﻢ
a div b
ﺗﻘﺴﻴﻢ
a mod b
ﺑﺎﻗﻴﻤﺎﻧﺪﻩ ﺗﻘﺴﻴﻢ
ﻴﻢ
ﺑ ﻴ
ﻋﻤﻠﮕﺮ
ﺭﺩﻳﻒ
+
1
-
3
*
3
w
4
w
/
wdiv
5
mod
6
ﻋﻤﻠﮕﺮﻫﺎي ﺭﺍﺑﻄﻪ ﺍي
m
ﻣﺜﺎل
o
x>y
x >=y
x<y
ﻧﺎم
c
*
ﺑﺰرﮔﺘﺮﺮ
ﺑﺰر
b
e
uﻣﺴﺎوي
ﺑﺰرﮔﺘﺮ
n
ﻛ ﻜ
ﻛﻮﭼﻜﺘﺮ*p
ﻋﻤﻠﮕﺮ
>
=>
x <= y
ﻛﻮﭼﻜﺘﺮ ﻣﺴﺎوي w
x=y
ﻣﺴﺎوي ﺑﻮدن
x <> y
ﻧﺎﻣﺴﺎوي
وي
<
w
w
=<
=
><
ﻣﻨﻄﻘﻲ
ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘ
And
Not
w
w
w
ﻳﺎ
x>y or y<x
ﻧﻘﻴﺾ
Not ( x )
c
*
b
e
وu
a>y
and
y<x
n
*p
ﻋﻤﻠﮕﺮ
OR
ﻧﺎم
m
o ﻣﺜﺎل
ﻋﻤﻠﮕﺮﻫﺎي ﺑﻴﺘﻲ
m
o
ﻋﻤﻠﮕﺮ
ﻧﻮع ﻋﻤﻞ
c
*
و
b
e
ﻳﺎ u
اﻧﺤﺼﺎري
ﻳﺎﺎ اﻧ ﺎ
ﻧﻘﻴﺾ
اﻧﺘﻘﺎل ﺑﻪ ﺳﻤﺖ ﭼﭗ
اﻧﺘﻘﺎلل ﺑﺑﻪ ﺳﻤﺖ رراﺳﺖ
AND
n
*p
OR
w
XOR
w
NOT
w
Shl
Shr
ﻋﻤﻠﮕﺮﻫﺎ
ﺮ
ﺗﻘﺪﻡ
ﻡ
(
m
o
)
c
*
b
e
u
Not
*
div / mod
+
Shl
shr
<
<= >= >
=
<>
And
XOR
OR
w
w
w
n
*p
ﺑﺎﻻﺗﺮﻳﻦ ﺗﻘﺪﻡ
ﺑﺎﻻﺗ ﻳﻦ
( data types ) ﺍﻧﻮﺍﻉ ﺩﺍﺩﻩﻫﺎ
m
(Simple data type
) دادهﻫﺎي ﺳﺎده
o
c
*
b
e
( Structural Data Types
)
ﻳﺎﻓﺘﻪ
ﺳﺎﺧﺖ
ﻫﺎي
داده
u
n
p
*
(Pointer
w Data Types) دادهﻫﺎي اﺷﺎرهﮔﺮ
w
w
(Simple
Si l data
d
type) ﺳﺎﺩﻩ
ﻫﺎي ﺎ
ﺩﺍﺩﻩ ﺎ
ﺍ
c
*
b
e
( integer )u
ﺻﺤﻴﺢ
n
(ﺣﻘﻴﻘﻲ
ا ﺎ
*p ) اﻋﺸﺎري
w
(Stringw
type) ﻧﻮع رﺷﺘﻪ اي
w
m
o
(Char type) ﻧﻮع ﻛﺎراﻛﺘﺮي
(Boolean type) ﻧﻮع ﻣﻨﻄﻘﻲ
( iinteger
t
) ﺻﺤﻴﺢ
ﻧﻮﻉ
ﻣﺤﺪﻭﺩﻩ
Byte
c
*
255 ﺗﺎ0 ﺍﺯeb
u
127 ﺗﺎn-128 ﺍﺯ
p
*
32767 ﺗﺎ-32768 ﺍﺯ
w
w 65535 ﺗﺎ0 ﺍﺯ
Shortint
Integer
Word
Longint
g
m
ﺍﻧﺪﺍﺯﻩ ﺑﺮ ﺣﺴﺐ
o
w
ﺗﺎ-2147483648 ﺍﺯ
2147483647
ﺑﺎﻳﺖ
1
1
2
2
4
ﻲ(
ﺣﻘﻴﻘﻲ
ﺍﻋﺸﺎﺭي ) ﻴ
ﺭي
m
o
ﺐ
ﺑﺮﺣﺴﺐ
ﺍﻧﺪﺍﺯﻩ ﺑﺮ
ﺯ
ﺑﺎﻳﺖ
6
ﺩﺍﺭ
ﺍﺭﻗﺎﻡ ﻣﻌﻨﻲ ﺍ
ﺗﻌﺪﺍﺩ ﺍ ﻗﺎ
ﺍ
c
*
11-13
b
e
u
ﻣﺤﺪﻭﺩﻩ
ﻧﻮﻉ
… 2.2 e – 39
1.7 e 38
Real
… 1.5 e -45
3 4 e 37
3.4
Single
… 5.0 e -324
1.7 e 308
Double
4
8
7-8
n
*p
15-16
10
19-30
… 3.4 e -4932
1.1 e 4932
Extended
8
19-30
… -9.2 e 18
9.2 e 18
Comp
w
w
w
ﺩﺍﺩﻩﻫﺎي ﺳﺎﺧﺖﻳﺎﻓﺘﻪ ) ( Structural Data Types
m
ﻫﺎي ﺳﺎﺧﺖﻳﺎﻓﺘﻪ ﻋﺒﺎرﺗﻨﺪ از:
اﻧﻮاع داده o
c
*
b
e
u
آراﻳﻪﻫﺎ
n
ﺎ
رﻛﻮردﻫﺎ
*pﻛ
w
ﻣﺠﻤﻮﻋﻪﻫﺎ
ﻓﺎﻳﻠﻬﺎw
ﻓﺎ ﻠ ﺎ w
ﺩﺍﺩﻩﻫﺎي ﺍﺷﺎﺭﻩﮔﺮ )(Pointer Data Types
m
o
ﺑﺮﻧﺎﻣﻪ ،ﻧﻮع دادهﻫﺎي ﺑﺤﺚ ﺷﺪه در ﺑﺎﻻ ﺑﻪ دﻻﻳﻞ
ﻣﻤﻜﻦ اﺳﺖ در ﻧﻮﺷﺘﻦ c
*
b
eﺗﻌﺪاد ورودﻳﻬﺎي ﻣﺴﺌﻠﻪ و ﻏﻴﺮه ﻣﺸﺨﺺ
ﻣﺨﺘﻠﻒ از ﺟﻤﻠﻪ ﻣﺸﺨﺺ ﻧﺒﻮدن
u
n
را در
دﻳﮕﺮ ا
ﻣﺘﻐﻴﺮﻫﺎي ﮕ
ﺎ
ﺑﺘﻮاﻧﻨﺪ آآدرس
ﺎ
ﻧﻴﺎز ﺑﻪ
ﻧﺒﺎﺷﺪ ﻟﺬا ﺎ
ﺎﺷ
ﻣﺘﻐﻴﺮﻫﺎﻳﻲ ﻫﺴﺖ ﻛﻛﻪ ا*p
w
دارﻧﺪ .
wﻧﺎمم ر
اﺷﺎرهﮔﺮﺮ
ي ر
ﻮع دادهﻫﺎ ،دادهﻫﺎي
ﻳﻦ ﻧﻮع
دارﻧﺪ ،اﻳﻦ
ﺧﻮد ﻧﮕﻪ ر
ﻮ
w
ﻣﺘﻐﻴﺮﻫﺎ ))((Variables
ﻴﺮ
m
o
ﻫﻤﺎن
داراي ﻧﻮع و ااﺳﻢ ﻣﻲ ﺎﺑﺎﺷﺪ .ﻧﻮع ﻣﺘﻐﻴﺮ ﺎ
ﺣﺎﻓﻈﻪ ااﺳﺖ ﻛﻛﻪ ا ا
ﻣﺤﻠﻲ ااز ﺎﻓﻈ
ﻣﺘﻐﻴﺮ ،ﻠ
ﻧﻮع داده ﺑﻮده و اﺳﻢ ﻣﺘﻐﻴﺮ از ﻗﻮاﻋﺪ اﺳﻢﮔﺬاري ﺷﻨﺎﺳﻪ ﺗﺒﻌﻴﺖ ﻣﻲﻛﻨﺪ.
c
*
b
در ﭘﺎﺳﻜﺎل ﺑﺮاي ﻣﻌﺮﻓﻲ ﻣﺘﻐﻴﺮﻫﺎ e
uزﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ:
ﺑﺼﻮرت
n
p
*
wﻛﻠﻤﻪ ذﺧﻴﺮه ﺷﺪه(Var
)
; ﻧﻮع ﻣﺘﻐﻴﺮ :اﺳﻢ ﻣﺘﻐﻴﺮw
w
ﺛﺎﺑﺘﻬﺎ )(Constants
m
o
ﻳﻚ ﺛﺎﺑﺖ ﻧﺎم ﺷﻨﺎﺳﻪاي اﺳﺖ ﻛﻪ در آﻏﺎز ﻳﻚ ﺑﺮﻧﺎﻣﻪ ،ﻳﻚ ﻣﻘﺪار در آن ﺟﺎﮔﺰﻳﻦ
ﻣﻲﺷﻮد .درﺳﺖ ﻣﺎﻧﻨﺪ ﻣﺘﻐﻴﺮﻫﺎ .ﺛﺎﺑﺖﻫﺎ را ﻣﻲﺗﻮان ﺑﻌﻨﻮان ﺧﺎﻧﻪﻫﺎﻳﻲ از ﺣﺎﻓﻈﻪ در ﻧﻈﺮ
ﺑﮕﻴﺮﻳﻢ ﻛﻪ ﻣﻘﺪار دادهﻫﺎ در آآﻧﻬﺎ ذﺧﻴﺮه ﻣﻲﺷﻮد وﻟﻲ ﻣﻘﺪار ﺛﺎﺑﺖ ﻣﺸﺨﺺ ﻣﻲﺑﺎﺷﺪ،
ﮕ
ﻃﻮري ﻛﻪ ﻧﻤﻲﺗﻮان ﻣﻘﺪار ﻳﻚ ﺛﺎﺑﺖ را در ﺑﺮﻧﺎﻣﻪ ﺧﻮد ﺑﻮﺳﻴﻠﻪ ﻳﻚ دﺳﺘﻮر ﺗﻐﻴﻴﺮ داد.
c
*
b
e
u
n
p
*
ﺑﺮاي ﺗﻌﺮﻳﻒ ﻳﻚ ﺛﺎﺑﺖ ﺑﺼﻮرت زﻳﺮﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ :
w
w
ﻣﺘﻐﻴﺮ
ﻣﻘﺪار ﺛﺎﺑﺖ = اﺳﻢ w
C
Const
ﺩﺳﺘﻮﺭ ﺟﺎﻳﮕﺰﻳﻨﻲ
m
o
c
*
b
e
u
ﺑﺮاي ﻗﺮار دادن ﻳﻚ ﻣﻘﺪار ﻳﺎ ﻣﻘﺪار ﻳﻚ ﻣﺘﻐﻴﺮ داﺧﻞ ﻳﻚ ﻣﺘﻐﻴﺮ دﻳﮕﺮ ،از دﺳﺘﻮر
ﺟﺎﻳﮕﺰﻳﻨﻲ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ.
n
*p
ﺷﻜﻞ ﻛﻠﻲ ﻳﻚ دﺳﺘﻮر ﺟﺎﻳﮕﺰﻳﻨﻲ در ﭘﺎﺳﻜﺎل ﺑﺼﻮرت زﻳﺮ اﺳﺖ:
ﻣﺤﺎﺳﺒﺎﺗﻲ = :اﺳﻢ ﺷﻨﺎﺳﻪ
ﻋﺒﺎرتw
ﻋﺒﺎرتw
ﻗﻴﺎﺳﻲ ﻳﺎ
w
ﻋﺒﺎرت ﻣﻨﻄﻘﻲ
ﺍﻓﺰﻭﺩﻥ ﺗﻮﺿﻴﺤﺎﺕ ﺑﻪ ﺑﺮﻧﺎﻣﻪ )(Comment
m
o
ﻣﻄﻠﻮب اﺳﺖ
ﭘﺴﻨﺪﻳﺪه و ﻣﻄﻠ ب
ﻋﻤﻠﻲ ﭘ ﻨﺪﻳﺪه
ﻧﺎﻣﻪ ﻋ ﻠ
ﺧﻮدد ﺑﺑﺮﻧﺎﻣﻪ
ون ﺧ
ﺗﻮﺿﻴﺤﻲ ددر ددرون
اﻓﺰودن ﻣﻄﻠﺐ ﺗ ﺿ ﺤ
ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ ﻛﻪ ﺑﻌﺪ از ﻣﺪﺗﻲ اﻣﻜﺎن ﻓﺮاﻣﻮﺷﻲ ﻛﺎر ﺑﺎ ﺑﺮﻧﺎﻣﻪ از ﺑﻴﻦ ﻣﻲرود و در
ﺑﺮد.
ﻲﺑﺮ
ﻻ ﻣﻲ
آن ررا ﺑﺑﺎﻻ
ﺧﻮاﻧﺎﻳﻲ ن
ﺑﺮﻧﺎﻣﻪ ﻮ ﻳﻲ
در ﺑﺮ
ﺗﻮﺿﻴﺤﺎت ر
ﻧﻮﺷﺘﻦ ﻮﺿﻴ ت
ﮔﻔﺖ ﻛﻪ ﻮ ﻦ
ﺗﻮان ﺖ
ﻞ ﻣﻲ ﻮ ن
ﻛﻞ
c
*
b
e
u
n
*p
در ﭘﺎﺳﻜﺎل ﺗﻮﺿﻴﺤﺎت ﺑﻴﻦ دو آﻛﻮﻻد ﻣﺤﺼﻮر ﻣﻲﺷﻮﻧﺪ.
w
w
} { This is comment
{ This program written by A.
} A Pascal
w
ﻣﺜﺎﻝ
ﻝ
m
o
ﻣﺘﻐﻴﺮ
ﻣﻘﺪار ددو ﺘﻐ
دن ﻘﺪا
ﺟﺎﺑﺠﺎﺎ ﻛﻛﺮدن
ﺎ
c
*
b
e
u
b
a
17
15
b
17
a
15
n
*17p
w
temp
15
b
w
temp
w
a
17
15
b
15
a
17
Program
P
E
Example4
l 4 ;
Var
a , b , temp
p : integer
g
Begin
a : = 15 ; b : = 17 ; temp : = 0 ;
temp : = a ;
a:=b;
b : = temp ;
Wi l ('a=',a,' b=',b);
Writeln
End . { End . of program }
m
o
c
*
b
e
u
w
w
w
a = 17 b = 15
n
*p
: ﺧﺮﻭﺟﻲ ﺑﺮﻧﺎﻣﻪ
ﻧﮑﺎﺗﻲ ﭼﻨﺪ ﺩﺭ ﻣﻮﺭﺩ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ
•
•
•
•
اﺳﺘﻔﺎدهmازoاﺳﺎﻣﻲ ﺑﺎ ﻣﻔﻬﻮم ﺑﺮاي ﻣﺘﻐﻴﺮﻫﺎ
ﺛﺎﺑﺖ
ﺻﻮرﺗﻲ ﻛﻪ ﻣﻘﺪار ﺑ
دﺳﺘﻮر Constدر ﻮ ﻲ
اﺳﺘﻔﺎده از cﻮ
*
b
داﺷﺘﻪ ﺑﺎﺷﺪ.
در ﺑﺮﻧﺎﻣﻪ وﺟﻮد
e
u
ﻲﻫﺎ ﺑﺑﺎﻳﺪ
ﺧﺮوﺟﻲ
يﻫﺎ و ﺮ
nورودي
ﺑﺮﻧﺎﻣﻪ )
ﺑﻮدن ﺑﺮ
ﺑﻲ ﺑﻮ
ﺟﻮاﺑﻲ
ﺳﻮال ﻮ
ﻮ
داراي ﭘﻴﻐﺎم ﻣﻨﺎﺳﺐ ﺑﺎﺷﻨﺪ( *p
ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﺑﺎ ﻓﺮﻣﺖ ﻣﻨﺎﺳﺐ ) w
wﻗﺮار ﮔﺮﻓﺘﻦ
رﻋﺎﻳﺖ
ﮔﺬاﺷﺘﻦ آآﻧﻬﺎ از
ﺧﻄﻮط ﻣﺨﺘﻠﻒ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﻫﻢ و ﻓﺎﺻﻠﻪ w
اول ﺳﻄﺮ و ﻏﻴﺮه(
ﻨﺎﺕ
ﺗﺗﻤﺮﻳ ﺎ
m
o
:ﺣﺎﺻﻞ ﻋﺒﺎﺭﺗﻬﺎي ﺯﻳﺮ ﺭﺍ ﺑﺪﺳﺖ ﺁﻭﺭﻳﺪ
c
*
b
e
u
A) 3 * 13 Mod 3 div 3 = ?
n
*p
B) 7.3 * 5 / 3 = ?
w
C) ( 3 + 4 < 6 ) and ( 4 + 7 < 13 ) = ?
w
w
D) 33 – 8 * 3 div 3 mod ( 5 div 3 ) = ?
E) NOT ((( 3 – 4 MOD 3 ) < 5 ) and (( 6 div 4 ) < > 3 ))
: ﺣﺎﺻﻞ ﻋﺒﺎرتﻫﺎي ﻣﻨﻄﻘﻲ را ﺑﻪ ازاء ﻣﻘﺎدﻳﺮ زﻳﺮ ﻣﺸﺨﺺ ﻛﻨﻴﺪ
m
o
c
*
b
e
u
A: = true ; B: = false ; C: = true ;
n
*p
A) ( A AND B ) OR ( A AND C ) = ?
w
B) ( A OR NOT B ) and ( Not A OR C ) = ?
w
w
C) A OR B AND C = ?
D) NOT ( A OR B ) AND C = ?
ﺑﺮﻧﺎﻣﻪﻧﻧﻮﻳﺴﻲ
ﺗﻤﺮﻳﻨﺎﺕ ﻧﺎ
ﺗ ﺎ
•
•
•
m
o
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﺑﻌﺎد ﻣﺜﻠﺚ ﻛﻪ ﻋﺒﺎرﺗﻨﺪ از 3 , 1.3را در
ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﺤﻴﻂ و ﻣﺴﺎﺣﺖ آن را ﻣﺤﺎﺳﺒﻪ و ﺑﺎ ﭘﻴﻐﺎم ﻣﻨﺎﺳﺐ در
ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ.
ﺧ وﺟ
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دو ﻣﺘﻐﻴﺮ ﺻﺤﻴﺢ ﺑﺎ ﻣﻘﺎدﻳﺮ 3 , 15را در
ﻣﺘﻐﻴﺮ ﻛﻤﻜﻲ
ﻲ
از ﻴﺮ
ﺑﺪون اﺳﺘﻔﺎده ز
دو ﻋﺪد ررا ﺑ و
ﻣﺤﺘﻮﻳﺎت و
ﮔﺮﻓﺘﻪ ﻮﻳ
ﻧﻈﺮ ﺮ
ﺮ
ﺟﺎﺑﺠﺎ ﻧﻤﺎﻳﺪ.
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺳﻪ ﻋﺪد ﺑﻨﺎمم ﻫﺎي Third , Second ,
Firstﺑﺘﺮﺗﻴﺐ ﺑﺎ ﻣﻘﺎدﻳﺮ 17 , 15 , 13را در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺑﻄﻮر
i
ﭼﺮﺧﺸﻲ ﻣﻘﺎدﻳﺮ آﻧﻬﺎ را ﺟﺎﺑﺠﺎ ﻧﻤﻮده در ﺧﺮوﺟﻲ ﺑﺎ ﭘﻴﻐﺎم ﻣﻨﺎﺳﺐ
ﻛﻨﺪ..
ﭼﺎپ ﻛﻨﺪ
c
*
b
e
u
n
*p
w
w
w
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﺍﻃﻼﻋﺎﺕ)ﮔﮔﺮﻭﻩ
ﺍﻃﻼ ﺎ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﻓﺼﻞ 4
m
o
ﻭﺭﻭﺩي ﻭ ﺧﺮﻭﺟﻲ
c
*
b
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﺎ
e
u
n
*p
w
ﻣﻌﺮﻓﻲ دﺳﺘﻮرات ﺧﺮوﺟﻲ Writeln
ﻓﺮﻣﺖﺑﻨﺪي ﺷﺪه
ﺧﺮوﺟﻲ ﻓ ﻣﺖ
ﻣﻌﺮﻓﻲ ﺧ وﺟ
ﻣﻌ ﻓ
ﺑﺮرﺳﻲ دﺳﺘﻮرات ورودي Readو ReadLn
w
w
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي ﻓ ﺎ
ﻓﺎ
oﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
mاز
داﻧﺸﺠﻮ ﭘﺲ
c
*
ﻧﻤﺎﻳﺶ دﻫﺪ.
ﺧﺮوﺟﻲ ﻧ ﺎ ﺶ
ﻧﻈﺮ راا ددر ﺧbوﺟ
ﻣﻮرد ﻧﻈ
ﻋﺒﺎرات ﻣ د
ﻋ ﺎ ات
e
u
n
ﭼﺎپ ﻛﻨﺪ.
ﻣﻨﺎﺳﺐ
ﻣﺖ ﻣﻨﺎ ﺐ
ﺧﺮوﺟﻲ راا ﺑﺎ ﻓﻓﺮﻣﺖ
ات ﺧ وﺟ
ﻋﺒﺎرات
ﻋ ﺎ
p
*
w
ﻧﻤﺎﻳﺪ.
wﺎﻳﺪ
ﻳﺎﻓﺖ ﻧ
ودي ددرﻳﺎﻓﺖ
ﻧﺎﻣﻪ راا از وورودي
ﺎز ﺑﺑﺮﻧﺎﻣﻪ
ﻫﺎي ﻣﻣﻮردد ﻧﻧﻴﺎز
ﻣﺘﻐﻴﺮﻫﺎي
ﻣﺘﻐ
w
ﺑﻨﻮﻳﺴﺪ.
ﺑﺮﻧﺎﻣﻪﻫﺎي ﺳﺎده ﺑﻪ زﺑﺎن ﭘﺎﺳﻜﺎل ﺑﻨ ﻳ ﺪ
ﺑ ﻧﺎﻣﻪ
ﺧﺮﻭﺟﻲ ﺑﺎ ﺩﺳﺘﻮﺭ Write
m
o
ﺧﺮوﺟﻲ
ﺧﺮوﺟﻲ ﺑﻜﺎر ﻣﻣﻲرود .اﻃﻼﻋﺎت ﺧﺮوﺟ
اﻳﻦ دﺳﺘﻮر ﺑﺮاي ﻧﻮﺷﺘﻦ اﻃﻼﻋﺎت در ﺧﺮوﺟ
ﻣﻲﺗﻮاﻧﻨﺪ ﺛﺎﺑﺘﻬﺎي ﻋﺪدي ،ﻣﻘﺎدﻳﺮ ﻣﺘﻐﻴﺮﻫﺎ ،ﻋﺒﺎرات و ﻏﻴﺮه ﺑﺎﺷﻨﺪ .ﺷﻜﻞ دﺳﺘﻮر در
ﺑﺼﻮرت زﻳﺮﺮ اﺳﺖ:
ﻲﺑ ﻮ
ﺣﺎﻟﺖ ﻛﻠﻲ
c
*
b
e
ﻣﺘﻐﻴﺮ 2و ﻣﺘﻐﻴﺮwrite ( 1
) .......و
u
n
ﻋﺒﺎرت '2و'ﻋﺒﺎرت(' 1
ﻳﺎ
) .......و ' *p
w
وﺛﺎﺑﺖ ( 1
2wو ﺑ
ﺛﺎﺑﺖ
)) .......و ﺑ
ﻳﻳﺎ
w
ﻣﺜﺎﻝ
Var
A , B: integer ;
Ch: char ;
R: Real ;
m
o
c
*
b
e
u
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.
d. { eendd oof pprogram
og
}
:ﺑﻌﺪ از اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻓﻮق در ﺧﺮوﺟﻲ ﺧﻮاﻫﻴﻢ داﺷﺖ
w
w
w
n
*p
A = 10 B = 15 chh = TR = 1.2250000000
1 2250000000 e + 01 sum off A and
d B = 25
ﺧﺮﻭﺟﻲ ﺑﺎ ﺩﺳﺘﻮﺭ Writeln
m
o
c
*
b
Writeﻋﻤﻞ ﻣﻲﻛﻨﺪ ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ ﺑﻌﺪ از
اﻳﻦ دﺳﺘﻮر ﻫﻤﺎﻧﻨﺪ دﺳﺘﻮر
e
u
ﻣﻨﺘﻘﻞ ﻣﻲﻛﻨﺪ در ﻧﺘﻴﺠﻪ ﻣﻮﺟﺐ ﭼﺎپ
اﺟﺮا ،ﻛﻨﺘﺮل را ﺑﻪ اﺑﺘﺪاي ﺳﻄﺮ ﺑﻌﺪ
n
دادهﻫﺎي ﺑﻌﺪي در اﺑﺘﺪاي ﺳﻄﺮ ﺑﻌﺪ ﻣﻲp
*.
ﺷﻮد
w
w
w
ﻣﺜﺎﻝ
Var
A , B: integer
g ;
Ch: char ;
R: Real ;
Begin
A: = 10 ; B: = 15 ;
Ch: = ' T ' ;
R = 12.25
R:
12 25 ;
Writeln ; { new line }
Writeln ( ' A = ' , A , ' B = ' , B ) ;
Writeln ( ' Ch = ' , ch , ' R = ' , R ) ;
Writeln ( ' Sum of A and B = ' , A + B ) ;
End { End of program }
End.
m
o
c
*
b
e
u
w
w
w
n
*p
A = 10 B = 15
Ch = T R = 1.225000000 e + 01
Sum of A and B = 25
:ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ
ﺧﺮﻭﺟﻲ ﻓﺮﻣﺖﺑﻨﺪي ﺷﺪﻩ
m
o
c
*
b
e
ﻓﺎﺻﻠﻪ ﻫﺎي ﻣﺸﺨﺺ ﻳﺎ در ﻣﻜﺎن
اﮔﺮ ﺑﺨﻮاﻫﻴﻢ اﻃﻼﻋﺎت ﺑﺎ
u
ﻓﺮﻣﺖ ﭼﺎپ
ﮔﻴﺮﻧﺪ ،ﺑﺎﻳﺪ ﻓ ﻣﺖ
ﻗﺮارnﮔpﻧﺪ
ﺎﻳﺶ ﻗ ا
ﻣﺸﺨﺼﻲ ددر ﺻﻔﺤﻪ ﻧﻧﻤﺎﻳﺶ
ﻣﺸﺨﺼ
*
را در دﺳﺘﻮرات ﺑﻴﺎن ﺷﺪه ﻣﺸﺨﺺ ﻛﻨﻴﻢw.
w
w
ﺍﻋﺪﺍﺩ ﺻﺤﻴﺢ
ﺑﺮﺍي ﺍ ﺍ
ﭼﺎﭖ ﺍ
ﻃﺮﻳﻘﻪ ﺗﺗﻌﻴﻴﻦ ﻓﻓﺮﻣﺖ ﺎ
ﻃ ﻘ
m
oﺑﺼﻮرت زﻳﺮ ﻣﺸﺨﺺ ﻣﻲﺷﻮد:
ﻓﺮﻣﺖ اﻋﺪاد ﺻﺤﻴﺢ
c
*
b
e
u
n
*p
) ﻃﻮل ﻣﻴﺪان :داده ﺻﺤﻴﺢ ( Writelnwﻳﺎ Write
w
w
ﺩﺭ ﺗﻌﺮﻳﻒ ﻃﻮﻝ ﻣﻴﺪﺍﻥ ﺑﺮﺍي ﻣﺘﻐﻴﺮﻫﺎ ﻳﺎ ﺩﺍﺩﻩﻫﺎﻳﻲ ﺍﺯ ﻧﻮﻉ ﺻﺤﻴﺢ ﺑﻪ ﻧﮑﺎﺕ ﺯﻳﺮ ﺗﻮﺟﻪ ﮐﻨﻴﺪ:
•
•
m
o
c
*
b
e
u
اﮔﺮ ﻃﻮل ﻣﻴﺪان از ﻃﻮل ارﻗﺎم ﻋﺪد ﺻﺤﻴﺢ ﺑﻴﺸﺘﺮ ﺗﻌﺮﻳﻒ ﺷﻮد ،ﻋﺪد در
ﻣﻨﺘﻬﻲاﻟﻴﻪ ﺳﻤﺖ راﺳﺖ ﻣﻴﺪان ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد.
اﮔﺮ ﻃﻮل ﻣﻴﺪان از ﻃﻮل ارﻗﺎم ﻋﺪد ﺻﺤﻴﺢ ﻛﻤﺘﺮ ﺗﻌﺮﻳﻒ ﺷﻮد ،ﻃﻮل ﻣﻴﺪان ﺑﻪ
ﻃﻮل ﻣﻴﺪان ﺗﻌﺮﻳﻒ ﺷﺪه ﺑﻲاﺛﺮ
ﻧﻈﺮ ﮔﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد و ﻃ ل
اﻧﺪازه ﺗﻌﺪاد ارﻗﺎم در ﻈ
ﺧﻮاﻫﺪ ﺑﻮد.
n
*p
w
w
w
m
o
ﻣﺜﺎﻝ
c
*
b
e
u
X:= 3200 ;
A: = 12 ;
B: = 217 ;
W it ( X
Write
X:33 , A:5
A 5 , B:5
B 5) ;
w
w
w
n
*p
3200
: ﺧﺮوﺟﻲ
ﺧ
12
217
ﻃﻮﻝ ﻣﻴﺪﺍﻥ ﺍﻋﺪﺍﺩ ﺍﻋﺸﺎﺭي
m
o
c
*
b
uﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻌﺮﻳﻒ ﻛﺮد :
در ﺣﺎﻟﺖ ﻛﻠﻲ ﻃﻮل ﻣﻴﺪان را ﻣﻲeﺗﻮان
n
*p
w
ري ( Write
ﻴﺮ اﻋﺸﺎري
ﻣﺘﻐﻴﺮ
ﻴﺰ :ﻮ
ارﻗﺎمم ﺑﺑﻌﺪ ازز ﻣﻤﻴﺰ
) ﺗﻌﺪاد ر
ﻃﻮل ﻴﻣﻴﺪانw :
Writeln wﻳﺎ
ﺑﺮاي ﻧﻤﺎﻳﺶ اﻋﺪاد اﻋﺸﺎري ﺑﺼﻮرت دﻟﺨﻮاه ،ﻣﻲ ﺗﻮان ﺑﺎ ﺗﻌﺮﻳﻒ ﻃﻮل
.ﻣﻴﺪان و ﺗﻌﺪاد ارﻗﺎمم اﻋﺸﺎري ،ﻋﺪد ﻣﺰﺑﻮر را ﻧﻤﺎﻳﺶ داد
ﺩﺭ ﺗﻌﺮﻳﻒ ﻓﺮﻣﺖ ﺑﺮﺍي ﺍﻋﺪﺍﺩ ﺍﻋﺸﺎﺭي ﺑﻪ ﻧﮑﺎﺕ ﺯﻳﺮ ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﮐﺮﺩ:
m
o
اﻟﻴﻪ ﺖ
ﺳﻤﺖ
ﻣﻨﺘﻬﻲ اﻟ ﻪ
ﺷﻮد ،ﻋﺪد ددر ﻣﻨﺘﻬ
ذﻛﺮ ﺷ د
ارﻗﺎم ﻋﺪد ذﻛ
ﺑﺰرﮔﺘﺮ از ﺗﻌﺪاد ا ﻗﺎم
ﻣﻴﺪان ﺑﺰ ﮔﺘ
ﻃﻮل ﻣ ﺪان
اﮔﺮ ﻃ ل
اﮔ
ﻣﻴﺪان ﭼﺎپ ﻣﻲﺷﻮد .راﺳﺖ
c
*
bﺻﻮرت ﻧﻤﺎد ﻋﻠﻤﻲ در ﻃﻮل ﻣﻴﺪان ﻣﺸﺨﺺ ﺷﺪه
اﮔﺮ ﻓﻘﻂ ﻃﻮل ﻣﻴﺪان ذﻛﺮ ﺷﻮد ،ﻋﺪد ﺑﻪ
ﮔ
e
ﭼﺎپ ﻣﻲ ﺷﻮد .
u
n
از آﻧﺠﺎﺋﻲ ﻛﻪ ﺑﺮاي ﻧﻤﺎﻳﺶ اﻋﺪاد در ﻧﻤﺎد ﻋﻠﻤﻲ p
ﺣﺪاﻗﻞ* 8ﻣﺤﻞ ﻣﻮرد ﻧﻴﺎز اﺳﺖ ،ﻟﺬا
ﻛﻤﺘﺮ ﺑﺎﺷﺪ ،ﺣﺪاﻗﻞ 8رﻗﻢ
ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﺗﻨﻬﺎ ﻃﻮل ﻣﻴﺪان ذﻛﺮ ﺷﺪه ﺑﺎﺷﺪ ،اﮔﺮ از 8رﻗﻢw
w
ﺷﻮد.
ﻓﺘﻪ ﻣﻣﻲﺷﻮد
ﻧﻈﺮ ﮔﮔﺮﻓﺘﻪ
در ﻧﻈ
w
ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﻃﻮل ﻣﻴﺪان ﻫﻤﺮاه ﺑﺎ ﺗﻌﺪاد ارﻗﺎم ﺑﻌﺪ از ﻣﻤﻴﺰ ذﻛﺮ ﺷﻮد ،اﮔﺮ ﻃﻮل
اﻧﺪازهااي
ان راا ﺑﻪ اﻧ از
ل ﻣﻴﺪان
ﻜﺎل ﺗﺗﻨﻬﺎﺎ ﻃﻃﻮل
ﭘﺎﺳﻜﺎل
ﺑﺎﺷﺪ ،ﺎ
ﻣﻘﺪار ﻋﺪد ﺎﺷ
ﻛﻮﭼﻜﺘﺮ از ﻘ ا
ان ﻛ ﻜ
ﻣﻴﺪان
ﻛﻪ ﻣﻮرد ﻧﻴﺎز اﺳﺖ ﺗﺼﺤﻴﺢ ﻛﺮده و آﻧﺮا ﺑﺮاﺑﺮ اﻧﺪازه واﻗﻌﻲ ﻛﻪ ﻋﺪد در آن
ﻗﺮار ﻣﻣﻲﮔﻴﺮد ،اﺻﻼح ﻣﻣﻲﻛﻨﺪ.
m
o
c
*
b
e
u
n
*p
اﮔﺮ ﺗﻌﺪاد ارﻗﺎم ﺑﻌﺪ از ﻣﻤﻴﺰ زﻳﺎد ﺑﺎﺷﺪ و ﺗﻌﺪاد ارﻗﺎم ﺑﻌﺪ از ﻣﻤﻴﺰ ذﻛﺮ ﺷﺪه د
ر ﻃﻮل ﻣﻴﺪان ﻛﻤﺘﺮ از ﺗﻌﺪاد ارﻗﺎم اﻋﺸﺎري ﻋﺪد ﺑﺎﺷﺪ ،ﺗﻌﺪاد ارﻗﺎم اﻋﺸﺎر
رﻗﻢ آﺧﺮﺮ اﻋﺸﺎرر آن
ﺧﻮاﻫﺪ ﺷﺪ و ر ﻢ
ﻧﻮﻳﺲ ﻧﺸﺎن داده ﻮ
ﺑﺮﻧﺎﻣﻪ ﻮﻳﺲ
درﺧﻮاﺳﺖ ﺑﺮ
ﺑﻖ ر ﻮ
ﻣﻄﺎﺑﻖ
ﻧﺴﺒﺖ ﺑﻪ ﻋﺪد ﺑﻌﺪي ﮔﺮد ﻣﻲﺷﻮد.
w
w
w
ﮐﺎﺭﺍﮐﺘﺮﻫﺎ ﻭ ﺭﺭﺷﺘﻪﻫﺎ
ﻥ ﺭ ﺮ
ﻣﻴﺪﺍﻥ
ﻮﻝ ﻴ
ﻃﻮﻝ
m
o
زﻳـﺮ ﻋﻤـﻞ
ﻞ
ﺑﺼـﻮرت زﻳ ﺮ
ﻣﻴـﺪان ﺑ ﻮر
ﻃﻮل ﻴ
ﻛﺎراﻛﺘﺮﻫﺎي ﺑﺑﺎ ﻮ
ﻧﻤﺎﻳﺶ ررﺷﺘﻪﻫﺎ و ر ﺮ ي
ﺑﺮاي ﻳﺶ
ﺑﺮ ي
ﻣﻲﻛﻨﻴﻢ.
ﺮي ( Write
ي ﻳﺎ ﻛﺎراﻛﺘﺮي
ﻋﺒﺎرت رﺷﺘﻪاي
ﻃﻮل ﻣﻴﺪان :ﻣﺘﻐﻴﺮﺮ ﻳﺎ ﺒ
) ﻮ
c
*
b
e
u
n
*p
در ﺗﻮرﺑﻮ ﭘﺎﺳﻜﺎل ،ﻛﻠﻴﻪ ﻣﻮارد ﮔﻔﺘﻪ ﺷﺪه در ﻣﻮرد اﻋﺪاد ﺻﺤﻴﺢ ﺑﺮاي
رﺷﺘﻪﻫﺎ ﻧﻴﺰ ﺻﺎدق اﺳﺖ.
w
w
w
ﻭﺭﻭﺩي ﺑﺎ Readln , Read
m
o
c
*
b
e
ورودي ﻛﻪ از آن دادهﻫﺎ ﺧﻮاﻧﺪه
-1ﻣﻨﺒﻊ دادهﻫﺎ ﻳﻌﻨﻲ دﺳﺘﮕﺎه
u
n
ﻣﻲﺷﻮد.
ﻣﻲﺷﻮد
p
*
wﻗﺮار ﻣﻲﮔﻴﺮد .
-2ﻣﺘﻐﻴﺮي ﻛﻪ دادهﻫﺎي ﺧﻮاﻧﺪه ﺷﺪه در آن
w
w
از اﻳﻦ دﺳﺘﻮر ﺑﺮاي ﺧﻮاﻧﺪن داده ﻫﺎ و اﺧﺘﺼﺎص آﻧﻬﺎ ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎ
ﺷﻮد:
ﺑﺎﻳﺪ دﻗﺖ ﻮ
ﻮع ﺑ ﻳ
ﻣﻮﺿﻮع
ﺧﻮاﻧﺪن داده ﻫﺎ ﺑﺑﻪ دوو ﻮ
ﺷﻮد .درر ﻮ
ﻲ ﻮ
اﺳﺘﻔﺎده ﻣﻲ
ﺷﮑﻞ ﮐﻠﻲ ﺩﺳﺘﻮﺭ ﻭﺭﻭﺩي Readﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲﺑﺎﺷﺪ:
m
o
c
*
b
e
u
;) .....و ﻣﺘﻐﻴﺮ 2و ﻣﺘﻐﻴﺮ Read ( 1
n
*p
اﻧﺠﺎمم
ﻣﺘﻐﻴﺮﻫﺎ ررا ﺠ
آﻧﻬﺎ درر ﻴﺮ
ذﺧﻴﺮه ﻬ
ﺧﻮاﻧﺪن دادهﻫﺎ و ﻴﺮ
ﻞ ﻮ
ﻮر ﻋﻤﻞ
ﻳﻦ دﺳﺘﻮر
اﻳﻦ
ﻣﻲدﻫﺪ
و ﭘﺲ از اﺗﻤﺎم ﻋﻤﻞ ﺧﻮاﻧﺪن ﻛﻨﺘﺮل را ﺑﺮاي ﺧﻮاﻧﺪن و ﻧﻮﺷﺘﻦﻫﺎي ﺑﻌﺪي
ﻧﮕﻪ ﻣﻲدارد .
در ﻫﻤﺎن ﺧﻂ ﮕ
w
w
w
ﻣﺤﺘﻮﻳﺎﺕ ﺩﺩﻭ ﻋﺪﺩ
ﮐﺮﺩﻥ ﺤﺘ
ﺜﺎﻝ ﺟﺎﺑﺠﺎ ﮐ ﺩ
ﻣﺜﺎﻝ
program
Var
Example_1
Example 1 ( input , output ) ;
c
*
b
e
u
m
o
first , second , temp: integer ;
Begin
n
*p
Writeln ;
Writeln ( 'Please
Please Enter two numbers ' ) ;
Readln ( first , second ) ;
Temp: = first ;
First: = second ;
Second: = temp ;
Write ( ' first = ' , first , ' second = ': 10 , second ) ;
End. { end of program }
w
w
w
:ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ
c
*
b
Please Enter two numbers
e
u
15 17
n
First = 17 secondp
= 15
*
w
w
w
m
o
ﺗﻤﺮﺮﻳﻨﺎﺕ
: ﺧﺮﻭﺟﻲ ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﺭﺍ ﺗﻌﻴﻴﻦ ﮐﻨﻴﺪ
m
o
c
*
b
e
u
Value1: = 27.3 ;
Value2: = -8.5 ;
Writeln ( ' Value1 is ' , Value1 ) ;
W it l ( ' V
Writeln
Value2
l 2 is
i ' , Value2
V l 2) ;
Sum: = Value1 + Value2 ;
Writeln ( ' Sum of Two Values = ' , Sum: 6: 2 ) ;
w
w
w
n
*p
ﺍﺯ ﻧﻮﻉ ﺻﺤﻴﺢ3 ﻭ ﻣﺘﻐﻴﺮ12.235 ﻭ ﻣﻘﺪﺍﺭ ﺁﻥreal ﺍﺯ ﻧﻮﻉX ﺍﮔﺮ ﻣﺘﻐﻴﺮ
ﺑﺎﺷﺪ ﺧﺮﻭﺟﻲ ﺩﺳﺘﻮﺭﺍﺕ ﺯﻳﺮ ﺭﺍ ﺗﻌﻴﻴﻦ ﮐﻨﻴﺪ؟100 ﻭ ﻣﻘﺪﺍﺭ ﺁﻥ
m
o
c
*
b
Writeln ( ' X is ': 10 , X: 6:u
2e
, ' I is ': 4 , I: 5 ) ;
Writeln ( ' I is ': 10 , I: 1n) ;
p
*
Writeln ( ' X is ': 10 , X: 2: 1 ) ;
w
Writeln ( ' X is
':
15
,
X:
7:
1
)
;
w
Writeln ( 'w
I is ': 10 , ' X is ': 10 , X: 7: 3 ) ;
ﺑﺮﻧﺎﻣﻪ ﻧﻧﻮﻳﺴﻲ
ﻨﺎﺕ ﻧﺎ
ﺗﺗﻤﺮﻳ ﺎ
m
o
c
*
b
e
u
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دو ﻋﺪد را از ورودي درﻳﺎﻓﺖ ﻛﺮده و
ﻣﺤﺘﻮﻳﺎت آﻧﻬﺎ را ﺑﺪون اﺳﺘﻔﺎده از ﻣﺘﻐﻴﺮ ﻛﻤﻜﻲ ﺟﺎﺑﺠﺎ ﻧﻤﺎﻳﺪ.
n
*p
ﻴﺢ Third , Second ,
ﺻـﺤﻴﺢ
ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺳﻪ ﻋـﺪد ﺻ
اي ﺑ ﻮﻳ ﻴ
ﺑﺮﻧﺎﻣﻪ ي
ﺑﺮ
firstرا از ورودي ﺑــﺎ ﭘﻴﻐــﺎم ﻣﻨﺎﺳــﺐ درﻳﺎﻓــﺖ ﻛــﺮده ﺳــﭙﺲ
ﻣﺤﺘﻮﻳﺎت اﻳﻦ ﺳﻪ ﻣﺘﻐﻴﺮ را ﺑﺼﻮرت ﭼﺮﺧﺸﻲ ﺟﺎﺑﺠﺎ ﻧﻤﻮده ﺑﺎ ﭘﻴﻐﺎم
ﻣﻨﺎﺳﺐ در ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ.
w
w
w
ﻊ آوري ﻣﺎﻟﻴﺎت ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺻﻮرت
ﺑﺮﻧﺎﻣﻪاي ﺑﺮاي ﻳﻚ ﺣﺴﺎﺑﺪار اداره ﺟﻤﻊ
ﺣﺴﺎﺑﻬﺎي ﻣﺎﻟﻴﺎت را ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﺪ.
ورودي:
ﻣﺎﻟﻴﺎت دﻫﻨﺪه
ﺷﻨﺎﺳﺎﻳﻲ ﺎﻟ ﺎ
ﺷﻤﺎره ﺎ ﺎ
ﺎ
ﺑﻬﺎي ارزﻳﺎﺑﻲ ﺷﺪه
ﻧﺮخ ﻣﺎﻟﻴﺎت
ﺧﺮوﺟﻲ:
ﻣﻴﺰان ﺑﺪﻫﻲ
ﻲ
ﺗﻤﺎم دادهﻫﺎي ورودي و ﺰ
ﺷﺎﻣﻞ م
ﻣﻨﺎﺳﺐ ﻞ
ﺑﺎﻓﺮﻣﺖ ﺐ
ﺣﺴﺎب ﺮ
ب
ﺻﻮرت
ﻮ
m
o
c
*
b
e
u
n
*p
w
w
w
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﺍﻃﻼﻋﺎﺕ)ﮔﺮﻭﻩ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﻞ5
ﻓﺼﻞ
ﺳﺎﺧﺘﺎﺭﻫﺎي ﺷﺮﻃﻲ ﻭ ﻛﻨﺘﺮﻟﻲ
m
o
c
*
b
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﻓﺎ
e
u
n
*p
ﺷﺮﻃﻲ If and Else
دﺳﺘﻮر ﺷ ﻃ
ﻣﻌﺮﻓﻲ ﺘ
ﻓ
ﻣﻌﺮﻓﻲ دﺳﺘﻮر case
ﺗﻜﺮار repeat until ، while ، for
ﺑﺮرﺳﻲ دﺳﺘﻮرات ﺗﻜ ار
ﺑ رﺳ
ﻣﻌﺮﻓﻲ دﺳﺘﻮرات ﺷﺮﻃﻲ ﻣﺘﺪاﺧﻞ
ﺑﺮرﺳﻲ ﭼﻨﺪ ﺗﺎﺑﻊ و روال اﺳﺘﺎﻧﺪارد زﺑﺎن ﭘﺎﺳﻜﺎل
w
w
w
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي÷ﻓ ﺎ
ﻓﺎ
oﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
mاز
داﻧﺸﺠﻮ ﭘﺲ
c
*
b
ﻧﻴﺎز ﺑﻪ اﺳﺘﻔﺎده از ﺷﺮط وﺟﻮد دارد.
ﺑﺮﻧﺎﻣﻪﻫﺎﻳﻲ را ﺑﻨﻮﻳﺴﺪ ﻛﻪ در آﻧﻬﺎ
e
u
n
ﺗﺸﺨﻴﺺ دﻫﺪ.
if *-elseراا ﺸﺨ
ﻣﺨﺘﻠﻒ
دﺳﺘﻮرات ﺨ
ا
ﺗﻔﺎوﺗﻬﺎي ﺑﻴﻦ
ﻔﺎ ﺎ
ﻠﻒ ﺎﺑﺎ ifو pl
w
ﻫﺎﻳﻲ ﻛﻪ ﻧﻴﺎز ﺑﻪ ﺗﻜﺮار ﺗﻌﺪادي ﻋﻤﻠﻴﺎت داﺷﺘﻪw
ﺑﺎﺷﻨﺪ را ﺑﻨﻮﻳﺴﺪ.
ﺑﺮﻧﺎﻣﻪﻫﺎﻳ
w
ﻧﻤﺎﻳﺪ
زﺑﺎن اﺳﺘﻔﺎده ﻳ
ﺗﻮاﺑﻊ اﺳﺘﺎﻧﺪارد ﺑ
رواﻟﻬﺎ و ﻮ ﺑﻊ
ﺑﺮﻧﺎﻣﻪﻫﺎ ،از ﻬ
ﺑﺘﻮاﻧﺪ در ﺑﺮ
ﺻﻮرت ﻴﻧﻴﺎز ﺑ ﻮ
در ﻮ
ﺷﺮﻃﻲ
ﺩﺳﺘﻮﺭﺍﺕ ﺷ ﻃ
ﺍ
m
اﻳﻨﮕﻮﻧﻪ دﺳﺘﻮرات ﻣﻲﺗﻮان ﺑﺮ ﺣﺴﺐ ﺷﺮاﻳﻂ ﻣﺨﺘﻠﻒ،
ﺑﻄﻮر ﻛﻠﻲ ﺗﻮﺳﻂ
o
ﻣﺘﻔﺎوﺗﻲ راc
ﻧﺒﻮدن
ﺑﻮدن ﻳﺎ ﺒﻮ
ﺑﺮﻗﺮار ﺑﻮ
ﺑﺮﺣﺴﺐ ﺑﺮ ﺮ
ﻧﻤﻮد و ﺑﺮ ﺐ
اﺗﺨﺎذ ﻮ
ﻲ
ﺗﺼﻤﻴﻤﺎت
*
b
اﺟﺮا ﻧﻤﻮد.
ﺷﺮاﻳﻂ دﺳﺘﻮرات ﻣﺘﻔﺎوﺗﻲ را
e
u
pﻧﻮﻉ ﺗﻘﺴﻴﻢ ﻣﻲﺷﻮﻧﺪ:
nﺩﻭ
ﺩﺳﺘﻮﺭﺍﺕ ﺷﺮﻃﻲ ﺩﺭ ﺣﺎﻟﺖ ﮐﻠﻲ ﺑﻪ
*
w
ﺩﺳﺘﻮﺭ w if
w
ﺩﺳﺘﻮﺭCase
ﺩﺳﺘﻮﺭ if
ﻮﺭ
•
m
o
ﻫﺮﮔﺎه در ﻃﻮل ﺑﺮﻧﺎﻣﻪ ﻧﻴﺎز ﺑﻪ اﺳﺘﻔﺎده از ﺷﺮط ﻳﺎ ﺷﺮوط داﺷﺘﻪ ﺑﺎﺷﻴﻢ ،از دﺳﺘﻮر
ﮔ
Ifﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ.
c
*
b
e
u
n
*p
دﺳﺘﻮر ifﺑﻄﻮر ﻛﻠﻲ ﺑﻪ ﺳﻪ ﺷﻜﻞ ﺑﺮ ﺣﺴﺐ ﻧﻴﺎز ﻣﻤﻜﻦ اﺳﺖ ﻇﺎﻫﺮ ﺷﻮد :
w
ﺳﺎده
ifﺎ
ifﻫﻤﺮاه Else
ifﻫﺎي ﻣﺘﺪاﺧﻞ
w
w
• If – then
m
o
c
*
b
اﻳﻨﺼﻮرت ﺑﺮﻧﺎﻣﻪ روال ﻋﺎدي ﺧﻮد را ﻃﻲ ﻣﻲﻛﻨﺪ،
ﺧﺎﺻﻲ اﻧﺠﺎم ﻣﻲﺷﻮد .در ﻏﻴﺮ
e
u
n
ﺧﻮد ﻣﻲﮔﮔﻴﺮد و
Tureﺑﻪ ﺧ
ﻣﻨﻄﻘﻲ* T
ﺑﺎﺷﺪ اارزش
ﺑﺮﻗﺮار ﺎﺷ
ﺷﺮط ﻗ ا
در ﺻﻮرﺗﻲ ﻛﻛﻪ ﺷ ط
ش ﻄﻘp
w
ﻣﻨﻄﻘﻲ Falseﺑﻪ ﺧﻮدw
ﺧﻮاﻫﺪ ﮔﺮﻓﺖ.
اﮔﺮ ﺷﺮط ﺑﺮﻗﺮار ﻧﺒﺎﺷﺪ ،ارزش ﻣﻨﻄﻘ
w
در اﻳﻦ ﻧﻮع دﺳﺘﻮر ﺷﺮﻃﻲ اﮔﺮ ﺷﺮط ﺧﺎﺻﻲ ﺗﺤﻘﻖ ﻳﺎﻓﺘﻪ ﺑﺎﺷﺪ ،ﻋﻤﻞ ﻳﺎ اﻋﻤﺎل
ﺍﺩﺍﻣﻪ (
) If – thenﺍ ﺍ
• th
m
o
ﻛﻠﻲ دﺳﺘﻮر ifﺑﺼﻮرت زﻳﺮ ﻣﻣﻲﺑﺎﺷﺪ:
ﺷﻜﻞ ﻛﻠ
c
*
b
e
u
thenﺷﺮط ﻳﺎ ﺷﺮوط if
; دﺳﺘﻮر
n
*p
ﺑﺎﺷﺪ:
ت ززﻳﺮ ﻣﻲ ﺎﺷﺪ
ﺎﻻ ﺑﺼﻮرت
دﺳﺘﻮر ﺑﺎﻻ
دﻳﺎﮔﺮام ﺘ
ﺎﮔ ا
ﺷﻨﺎﺳﻪ ;
دﺳﺘﻮر
Then
w
w
w
ﺷﺮط ﻳﺎﺷﺮوط
if
Program E
P
Example
l ;
Var
Number: integer
g ;
Begin
Write ( 'Please enter Number: ' ) ;
Readln ( Number ) ;
if Number > 0 then
Write ( ' Number is positive ' ) ;
E d.
End
• ﻣﻣﺜﺎﻝ
ﻝ
m
o
c
*
b
e
u
w
w
w
Please enter Number: 12
Number is positive
n
*p
:ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ ﺑﺼﻮرت زﻳﺮ اﺳﺖ
• ﺩﺳﺘﻮﺭ ifﻫﻤﺮﺍﻩ else
m
o
ﺍﺑﺘﺪﺍ ﺷﺮﻁ ﺑﺮﺭﺳﻲ ﻣﻲﺷﻮﺩ ،ﺩﺭ ﺻﻮﺭﺗﻲ ﮐﻪ ﺷﺮﻁ
• ﺩﺭ ﺍﻳﻦ ﺩﺳﺘﻮﺭ
c
*
b
ﺑﺮﻗﺮﺍﺭ
ﻗ ﺍ
e
ﺑﺎﺷﺪ ،ﻋﻤﻞ ﻳﺎ ﺍﻋﻤﺎﻝ ﺧﺎﺻﻲuﺭﺍnﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﺪ ﻭ ﺩﺭ ﺻﻮﺭﺗﻲ ﮐﻪ
ﺩﻳﮕﺮي ﺭﺍ ﺍﻧﺠﺎﻡ
*pﺑﺨﺼﻮﺹ ﮕ
ﺷﺮﻁ ﺑﺮﻗﺮﺍﺭ ﻧﺒﺎﺷﺪ ،ﻋﻤﻞ ﻳﺎ ﺍﻋﻤﺎﻝ
wﺣﺎﻟﺖ ﺗﻮﺳﻌﻪ ﻳﺎﻓﺘﻪ
ﺧﻮﺍﻫﺪ ﺩﺍﺩ .ﺍﻳﻨﮕﻮﻧﻪ ﺩﺳﺘﻮﺭﺍﺕ ﺩﺭ ﻭﺍﻗﻊ
w
ﺩﺳﺘﻮﺭﺍﺕ ifﻣﻲﺑﺎﺷﻨﺪ.
w
ﺷﮑﻞ ﮐﻠﻲ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ:
m
o
دﺳﺘﻮر ﺑﺼﻮرتc:
*
دﻳﺎﮔﺮامم ﻮر
ﻳ ﺮ
b
e
u
thenﻋﺒﺎرت ﻳﺎ ﻋﺒﺎرات ﻣﻨﻄﻘﻲ if
; دﺳﺘﻮر1
else
; دﺳﺘﻮر2
then
n
*p
ﻋﺒﺎرت ﻳﺎ ﻋﺒﺎرات ﻣﻨﻄﻘﻲ
w
;دﺳﺘﻮر
else
if
w
w
دﺳﺘﻮر
Program
Example ;
Var
Number: integer ;
Begin
Writeln ( 'Please enter Number: ' ) ;
Readln ( Number ) ;
if ( Number mod 2 ) = 0 Then
Write ( ' even ' )
else
Write ( ' odd ' ) ;
End. { end of program }
• ﻣﺜﺎﻝ
m
o
c
*
b
e
u
w
w
w
Please enter Number:
17
odd
n
*p
:ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ ﺑﺼﻮرت زﻳﺮ اﺳﺖ
ﺻﻮﺭﺕ ﺩﻳﮕﺮﺮ ﺩﺳﺘﻮﺭ
ﻮﺭ
ﻮﺭ
m
o
c
*
b
e
u
n
*p
w
Thenﻋﺒﺎﺭﺕ ﻣﻨﻄﻘﻲ If
Begin
; 1ﺩﺳﺘﻮﺭ
; 2ﺩﺳﺘﻮﺭ
.
.
.
End
Else
Begin
; 1ﺩﺳﺘﻮﺭ
; 2ﺩﺳﺘﻮﺭ
.
.
.
; End
w
w
• Ifﻫﺎي ﻣﺘﺪﺍﺧﻞ
ﻞ
m
o
ﭼﻨﺪ ﺷﺮط داﺷﺘﻪ
ﻫﺮﮔﺎه در ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻧﻴﺎز ﺑﻪ اﻧﺘﺨﺎب ﻳﻚ ﺷﺮط از ﺑﻴﻦ ﭼ
c
*
b
e
زﻳﺮا ﺑﺠﺎي ﻛﻨﺘﺮل ﺗﻤﺎم ﺷﺮوط ﻓﻘﻂ ﺗﺎ
ﻣﺘﺪاﺧﻞ ﻛﺎراﺋﻲ ﺑﺮﻧﺎﻣﻪ را ﺑﺎﻻ ﻣﻲﺑﺮد
u
n
p
*
wﺑﻌﺪ از ﺑﺮﻗﺮار ﺷﺪن ﻳﻜﻲ
زﻣﺎﻧﻴﻜﻪ ﺷﺮط ﺑﺮﻗﺮار ﻧﺸﺪه If ،ﻫﺎ ﺑﺮرﺳﻲ ﻣﻲﺷﻮﻧﺪ.
w
wدر ﺑﻬﺒﻮد ﻛﺎراﺋﻲ
از ﺷﺮوط ،ﻛﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺑﻌﺪ از Ifﻣﻨﺘﻘﻞ ﻣﻲﺷﻮد و اﻳﻦ
ﺑﺎﺷﻴﻢ ،ﻣﻌﻤﻮﻻً از Ifﻣﺘﺪاﺧﻞ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ .در ﭼﻨﻴﻦ ﻣﻮاﻗﻌﻲ اﺳﺘﻔﺎده از If
ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﻣﻲﺗﻮاﻧﺪ ﺑﺴﻴﺎر ﻣﻮﺛﺮ ﺑﺎﺷﺪ.
ﺩﺭ ﺣﺎﻟﺖ ﮐﻠﻲ Ifﻣﺘﺪﺍﺧﻞ ﺑﻪ ﺻﻮﺭﺕ ﻫﺎي ﺯﻳﺮ ﻣﻤﮑﻦ ﺍﺳﺖ ،ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻇﺎﻫﺮ ﺷﻮﺩ.
then
ﻋﺒﺎرت ﺷﺮﻃﻲ1
m
o
2 ) if
دﺳﺘﻮر 1
c
*
b
e
thenﻋﺒﺎرت ﺷﺮﻃﻲ u else if 2
then
then
دﺳﺘﻮر 1
n
دﺳﺘﻮر2
p
*
thenﻋﺒﺎرت ﺷﺮﻃﻲelse If 3
w
ﻮر 3
دﺳﺘﻮر
else
.
.
.
ﻋﺒﺎرت ﺷﺮﻃﻲ 1
ﻋﺒﺎرت ﺷﺮﻃﻲ2
w
else
; دﺳﺘﻮر2
w
if
if
ﺩﺍﻧﺸﺠﻮﺋﻲ ﺭﺍ ﺍﺯ ﻭﺭﻭﺩي ﺩﺭﻳﺎﻓﺖ ﮐﺮﺩﻩ ،ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ
ﻣﺜﺎﻝ :ﺑﺮﻧﺎﻣﻪﺍي ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﻧﻤﺮﻩ ﺩﺍﻧﺸﺠﻮﺋ
ﻣﻘﺪﺍﺭ ﻧﻤﺮﻩ ﻳﮑﻲ ﺍﺯ ﺧﺮﻭﺟﻲ ﻫﺎي ﺯﻳﺮ ﺭﺍ ﻧﻤﺎﻳﺶ ﺩﻫﺪ:
m
o
c
*
b
e
u
ﺧﺮوﺟﻲ
ﺮو
A
B
C
D
F
n
*p
w
w
Grade
17 – 20
14 - 17
12 – 14
10 – 12
0 – 10
w
Var
Grade : Real ;
Begin
Write ( ' please enter a Real Number : ' ) ;
Readln ( Grade )
;
if Grade >
= 17.0 Then
Writeln ( ' Grade is A ' )
Else If Grade > = 14.0 Then
Writeln ( ' Grade is B ' )
Else If Grade > = 12.0 Then
Writeln ( ' Grade is C ' )
Else If Grade > = 10
Writeln ( ' Grade is D ' )
Else
Writeln ( ' Grade is F ‘);
Writeln ( ' Press any Key … ' : 30 ) ;
Readln ;
End . { end of program }
m
o
c
*
b
e
u
w
w
w
n
*p
دﺳﺘﻮر Case
m
o
ﻧﻈﺮ ﻣﻲﮔﮔﻴﺮد:
Caseراا ﺑﺼﻮرت زﻳﺮ در ﻧﻈ
ﭘﺎﺳﻜﺎل دﺳﺘﻮر C
زﺑﺎن ﺎ ﻜﺎل
ﺎ
c
*
b
; دﺳﺘﻮر 1
e
u
nدﺳﺘﻮر 2
;
p
*
; دﺳﺘﻮر 3
w
Of
ﻋﺒﺎرت
Case
:
ﻣﻘﺪار 1
:
ﻣﻘﺪار 2
:
ﻣﻘﺪار 3
w
w
.
.
.
Otherwise
; دﺳﺘﻮر
} End ; { End of case
ﺑﺮﻧﺎﻣﻪﺍي ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﺩﻭ ﻋﺪﺩ ﺑﻪ ﻫﻤﺮﺍﻩ ﻳﮏ ﻋﻤﻠﮕﺮ ﺭﺍ ﺍﺯ ﻭﺭﻭﺩي: ﻣﺜﺎﻝ
.ﻧﻤﺎﻳﺪ
ﺯي ﻳ
ﺷﺒﻴﻪﺳﺎﺯي
ﺏ ﺳﺎﺩﻩ ﺭﺭﺍ ﺒﻴ
ﻣﺎﺷﻴﻦ ﺣﺴﺎﺏ
ﮐﺎﺭﺭ ﻳﻳﮏ ﻴﻦ،ﮐﺮﺩﻩ
ﺖ ﺮ
ﺩﺭﻳﺎﻓﺖ
ﺭﻳ
Var
a , b: Real ;
op: char ;
Begin
Write ( ' please enter two Numbers: ' ) ;
Readln
dl ( a , b ) ;
Write ( ' please Enter A operator: ' )
Readeln ( opp ) ;
Case op of
' + ': Writeln ( ' Sum = ' , ( a + b ): 6: 2 ) ;
' - ':: Writeln ( ' Subtract = ' , ( a - b ): 6: 2 ) ;
' * ': Writeln ( ' Multiple = ' , ( a * b ): 6: 2 )
' / ': Writeln ( ' divide = ' , ( a / b ): 6: 2 ) ;
E d { End
End;
E d off Case
C
}
End. { end of program }
m
o
c
*
b
e
u
w
w
w
n
*p
ﺩﻳﺎﮔﺮﺍﻡ ﺩﺳﺘﻮﺭ Caseﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲﺑﺎﺷﺪ:
m
o
End
دﺳﺘﻮرات
c
*
b
e
u
ﺛﺎﺑﺖ
n
*p
:
,
;
ﻋﺒﺎرت
of
w
w
w
Case
ﮐﻨﺘﺮﻟﻲ
ﺳﺎﺧﺘﺎﺭﻫﺎي ﮐ ﻟ
ﺎﺧ ﺎ ﺎ
m
o
ﺑﺴﻴﺎري از ﻣﻮاﻗﻊ ﻻزم اﺳﺖ ﻋﻤﻞ ﻳﺎ اﻋﻤﺎل ﺑﻪ ﺗﻌﺪاد دﻓﻌﺎت ﻣﻌﻴﻦ ﻳﺎ ﻧﺎﻣﻌﻴﻦ اﻧﺠﺎم ﺷﻮﻧﺪ.
c
*
دﺳﺘﻮراﺗﻲ دارﻧﺪ ﻛﻪ ﻣﻣﻲﺗﻮان اﻳﻦ اﻋﻤﺎل ﺗﻜﺮاري
ﻧﻮﻳﺴﻲ دﺳﺘﻮراﺗ
ﻣﻮاﻗﻌﻲ زﺑﺎﻧﻬﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴ
در ﭼﻨﻴﻦ ﻣﻮاﻗﻌ
b
e
u
ﻛﻨﺘﺮﻟﻲ ﺷﺎﻣﻞ ﻳﻚ ﻳﺎ ﭼﻨﺪ ﺷﺮط و ﻫﻤﭽﻨﻴﻦ
را اﻧﺠﺎمم داد .در ﺣﺎﻟﺖ ﻛﻠﻲ ﺳﺎﺧﺘﺎرﻫﺎي
n
*p
wﻣﻲﺑﺎﺷﻨﺪ
ﻣﺘﻐﻴﺮ ﻳﺎ اﺻﻄﻼﺣﺎً ﺷﻤﺎرﻧﺪهاي ﺑﺮاي ﭘﺎﻳﺎن دادن ﺑﻪ ﺷﺮط
w
w
ﺷﮑﻞ ﮐﻠﻲ ﺣﻠﻘﻪ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲﺑﺎﺷﺪ:
m
o
c
*
ﻳﺲ For
اوﻟﻴﻪ = :اﻧﺪﻳﺲ
ﻣﻘﺪار و ﻴ
ر
ﻳﻲ To
ﻧﻬﺎﻳﻲ
ﻣﻘﺪار ﻬ
ر
Do
b
e
; دﺳﺘﻮر
u
n
*p
wﻣﺸﺨﺺ اﺳﺖ و ﺣﻠﻘﻪ دﻗﻴﻘﺎً ﺑﻪ
ﺑﺎﻳﺪ ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ در ﺣﻠﻘﻪ ﺗﻌﺪاد ﺗﻜﺮار ﻛﺎﻣﻼً
w
ﺷﻮد.
ﻣﺸﺨﺺ ااﺟﺮاا ﻣﻲﺷ د
ﺗﻜﺮار ﺸﺨ
ﺪاد ﺗﻜ ا
ﺗﺗﻌﺪاد
w
ﺣﻠﻘﻪ for
m
o
ﺑﻜﺎر ﺑﺮده ﻣﻲﺷﻮد.
ﺗﻜﺮار ﻣﻌﻴﻦ ﻜﺎ
ﺗﻌﺪاد ﻜ ا
اﻋﻤﺎﻟﻲ ﻣﺸﺨﺺ ﺑﻪ ا
ﻞ ﻳﺎﺎ ا ﺎﻟ
اﻧﺠﺎم ﻋﻤﻞ
ﺑﺮاي ا ﺎ
ااﻳﻦ دﺳﺘﻮر ا
c
*
ﻧﻬﺎﻳﻲ
ﻳﻲ
اوﻟﻴﻪ ) ( initial valueﻣﻘﺪارر ﻬ
ﻳﺲ ) ( indexﻣﻘﺪارر و ﻴ
ﻞ ﻳﻳﻚ اﻧﺪﻳﺲ
ﺣﻠﻘﻪ forﺷﺎﻣﻞ
b
e
u
ﺑﺎﺷﺪ .اﻳﻦ ﺣﻠﻘﻪ ﺑﺎ ﻗﺮار دادن ﻣﻘﺪار اوﻟﻴﻪ در
) ( final valueو ﻣﻘﺪار اﻓﺰاﻳﻨﺪه ﻣﻲ
n
p
*
wاﻧﺪﻳﺲ ﺣﻠﻘﻪ اﺿﺎﻓﻪ ﻣﻲﻛﻨﺪ ﺗﺎ
اﻧﺪﻳﺲ ﺣﻠﻘﻪ ﺷﺮوع ﺷﺪه و ﺑﻌﺪ از ﻫﺮ ﺗﻜﺮار ﻳﻚ واﺣﺪ ﺑﻪ
w
در ﻧﻬﺎﻳﺖ ﺑﻪ ﻣﻘﺪار ﻧﻬﺎﻳﻲ ﺑﺮﺳﺪ .ﺷﻜﻞ ﻛﻠﻲ ﺣﻠﻘﻪ ﺑﺼﻮرت زﻳﺮ ﻣﻲw
ﺑﺎﺷﺪ:
ﺍﺯ ﻭﺭﻭ ي
ﻭﺭﻭﺩي
ﻋﺪﺩ ﺯ100 ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ
ي ﺑ ﻮﻳ ﻴ
ﺑﺮﻧﺎﻣﻪﺍي
ﺑﺮ: ﻝ
ﻣﺜﺎﻝ
. ﻋﺪﺩ ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻭ ﭼﺎﭖ ﻧﻤﺎﻳﺪ100 ﻣﺠﻤﻮﻉ،ﺩﺭﻳﺎﻓﺖ ﮐﺮﺩﻩ
m
o
Var
i , number , Sum: integer ;
Begin
Writeln ( ' please enter 100 Numbers: ' ) ;
For I: = 1 to 100 do
Begin
Readln ( number ) ;
Sum:= Sum + number ;
End ;
Writeln ( ' Sum = ' , Sum ) ;
c
*
b
e
u
w
w
w
End { end of program }
End.
n
*p
ﺩﺳﺘﻮﺭ forﺭﺍ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻫﻢ ﻣﻲﺗﻮﺍﻥ ﺑﮑﺎﺭ ﺑﺮﺩ.
m
o
c
*
b
e
u
doﻣﻘﺪار ﻧﻬﺎﻳﻲ downtoﻣﻘﺪار اوﻟﻴﻪ = :اﻧﺪﻳﺲ for
; دﺳﺘﻮر
n
p
*
ر اﻳﻦ ﺷﻜﻞ از دﺳﺘﻮر Forاﺑﺘﺪا ﻣﻘﺪار اوﻟﻴﻪ در اﻧﺪﻳﺲ ﺣﻠﻘﻪ ﻗﺮار داده ﻣﻲ ﺷﻮد
w
ﻢ ﻣﻲ ﺷﻮد ﺗﺎ ﺑﻪ
wﻛﻢ
و ﺑﻌﺪ از آن در ﻫﺮ ﺗﻜﺮار ﺣﻠﻘﻪ ﻳﻚ واﺣﺪ از اﻧﺪﻳﺲ ﺣﻠﻘﻪ
w
ﻣﻘﺪار ﻧﻬﺎﻳﻲ ﺑﺮﺳﺪ .
ﺑﺮﻧﺎﻣﻪﺍي ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﻋﺪﺩ ﺻﺤﻴﺤﻲ ﺭﺍ ﺍﺯ ﻭﺭﻭﺩي: ﻣﺜﺎﻝ
.ﺩﺭﻳﺎﻓﺖ ﮐﺮﺩﻩ ﻭ ﻓﺎﮐﺘﻮﺭﻳﻞ ﺁﻥ ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﺪ
m
o
c
*
b
e
u
Var
i , n , Fact : integer ;
B i
Begin
Fact : = 1 ;
Write ( ' pplease enter A Number ' ) ;
Readln ( n ) ;
For I : = n
downto 1 do
Fact : = Fact * i ;
Writeln ( ' Fact = ' , Fact ) ;
End .
w
w
w
n
*p
Forﻫﺎي ﻣﺘﺪﺍﺧﻞ
m
o
cﻧﻬﺎﻳﻲ toﻣﻘﺪار اوﻟﻴﻪ = :اﻧﺪﻳﺲfor 1
doﻣﻘﺪار
*
b
ﻣﻘﺪار اوﻟﻴﻪ = :اﻧﺪﻳﺲfor 2
doﻣﻘﺪار ﻧﻬﺎﻳﻲ to
e
u
n
*;pدﺳﺘﻮر
w
w
w
: ﻣﺜﺎﻝ
For i: = 1
to 3 do
Begin
For j: = 1
to 3 do
Write ( ' pascal ': 8 ) ;
Writeln ;
End ;
c
*
b
e
u
m
o
Pascal
Pascal
P
Pascal
l
w
w
w
Pascal
Pascal
P
Pascall
n
*p
ﺧﺮوﺟﻲ
ﺧ وﺟ
Pascal ( ﻣﺮﺣﻠﻪ ﺍﻭﻝi = 1 )
Pascal ( ﻣﺮﺣﻠﻪ ﺩﻭﻡi = 2 )
P
Pascall ﻣﺮﺣﻠﻪ ﺳﻮﻡ
ﻠﻪ
(i=3)
ﺩﻳﺎﮔﺮﺍﻡ ﺩﺳﺘﻮﺭ for
ﻣﻘﺪﺍﺭ ﻧﻬﺎﻳﻲ
m
o
c
*
b
e
Downto
u
To
ﻣﻘﺪﺍﺭ ﺍﻭﻟﻴﻪ
=:
n
*p
w
ﺍﻧﺪﻳﺲ
w
w
ﺩﺳﺘﻮﺭ
For
do
ﺣﻠﻘﻪ While
m
o
c
*
b
e
u
در ﺣﺎﻟﺖ ﻛﻠﻲ ﻫﺪف از ﺑﻜﺎر ﺑﺮدن اﻳﻦ دﺳﺘﻮر اﻧﺠﺎم ﻋﻤﻠﻴﺎﺗﻲ ﻣﺸﺨﺺ
ﺑﺑﻪ ﺗﻌﺪاد دﻓﻌﺎت ﻧﺎﻣﻌﻴﻦ
ﻴﻦ اﺳﺖ
n
*p
اﻳﻦ ﺣﻠﻘﻪ ﺑﻪ ﺻﻮرت زﻳﺮ ﺑﻜﺎر ﺑﺮده ﻣﻲ ﺷﻮد:
w Do
w
ﻋﺒﺎرت ﻣﻨﻄﻘﻲ While
w
; دﺳﺘﻮر
ﻋﻠﻴﻪ ﺩﻭ ﻋﺪﺩ
ﻣﻘﺴﻮﻡ ﻠ
ﺑﺰﺭﮔﺘﺮﻳﻦ ﻘ
ﮔ: ﻣﺜﺎﻝ
ﺜﺎﻝ
Var
m
o
m , n , r: integer
i
;
Begin
Writeln ( ' Please Enter Two Numbers ' ) ;
Readln ( m, n ) ;
While ( m Mod n ) < > 0 Do
Begin
r: = m MOD n ;
m: = n ;
n: = r ;
End ; { end of while }
Writeln ( ' B. M. M = ' , n ) ;
End. { end of program }
c
*
b
e
u
w
w
w
n
*p
ﺩﻳﺎﮔﺮﺍﻡ ﺩﺳﺘﻮﺭ Whileﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻣﻲ ﺑﺎﺷﺪ:
m
o
دﺳﺘﻮر
do
ﺷﺮﻃﻲ
ﻋﺒﺎرت ﻃ
c
*
و در ﺻﻮرﺗﻲ ﻛﻪ دﺳﺘﻮر ﻣﺮﻛﺐb
eدﻳﺎﮔﺮام ﺑﺼﻮرت زﻳﺮ اﺳﺖ :
ﺑﺎﺷﺪ
u
n
p
*
دﺳﺘﻮر
Begin
End
w
; w
w
While
ﺩﺳﺘﻮﺭ Repeat
m
o
c
*
b
e
اﻳﻦ دﺳﺘﻮر ﻣﺸﺎﺑﻪ دﺳﺘﻮرwhile
u
اﻳﻦ دﺳﺘﻮر ﻧﻴﺰ از ﻧﻮع دﺳﺘﻮرات ﺗﻜﺮاري ﻣﻲﺑﺎﺷﺪ و ﺑﻪ ﻛﻤﻚ آن ﻣﻲﺗﻮان ﻳﻚ ﻳﺎ ﭼﻨﺪ
دﺳﺘﻮر را ﺑﻪ ﺗﻌﺪاد ﻧﺎﻣﻌﻴﻦ ﺑﺎر اﺟﺮا ﻛﺮد.
n
ﺗﻔﺎوﺗﻬﺎﻳﻲ ﻛﻪ در زﻳﺮ ﻋﻨﻮان ﻣﻣﻲﻛﻨﻴﻢ:
اﺳﺖ ،ﺑﺎ ﺗﻔﺎوﺗﻬﺎﻳ
p
*
w
(1در دﺳﺘﻮر Repeatﺑﺮﻋﻜﺲ دﺳﺘﻮر While
w
w
ﺷﺮط ﺣﻠﻘﻪ در اﻧﺘﻬﺎي ﺣﻠﻘﻪ ﺑﺮرﺳﻲ ﻣﻲﺷﻮد ﻟﺬا ﺣﻠﻘﻪ ﺣﺪاﻗﻞ ﻳﻜﺒﺎر اﺟﺮا ﻣﻲﺷﻮد.
m
o
c
*
b
e
u
(2دﺳﺘﻮر Repeateﺗﺎ زﻣﺎﻧﻲ اﺟﺮا ﻣﻲﺷﻮد ﻛﻪ ﺷﺮط ﺧﺎﺻﻲ ﺗﺤﻘﻖ
ط ﺑ ﻗ ار
ﺑﺮﻗﺮار
زﻣﺎﻧﻲ ﻛﻪ ﺷﺷﺮط
ﻜﻪ دﺳﺘﻮر Whileﺗﺎ زﻣﺎﻧ
ﺣﺎﻟﻴﻜﻪ
ﻧﻜﺮده اﺳﺖ در ﺣﺎﻟ
ﭘﻴﺪا ﻧﻜ ده
ﭘ ﺪا
ﺑﺎﺷﺪ ،اﺟﺮا ﻣﻲﺷﻮد.
n
*p
w
w
(3دﺳﺘﻮر Repeatﻧﻴﺎز ﺑﻪ ﺑﻠﻮك ﻧﺪارد و ﻫﻤﺮاه Untilﻇﺎﻫﺮ ﻣﻲﺷﻮد.
w
ﺷﮑﻞ ﮐﻠﻲ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲﺑﺎﺷﺪ:
m
o
R
Repeat
t
c
*
b
; eدﺳﺘﻮر2
u
n
.
p
*
.
; دﺳﺘﻮر1
; ﺷﺮط ﻳﺎ ﺷﺮوط
w
wuntil
w
ﻮﻉ ﻭ ﻣﻴﺎﻧﮕﻴﻦ ﺗﻌﺪﺍﺩي ﻋﺪﺩ ﺻﺤﻴﺢ ﻣﺜﺒﺖ
ﺑﺮﻧﺎﻣﻪ ﻣﺠﻤﻮﻉ
ﺮ
Var
i , Sum , Number : integer ;
ave: Real ;
Begin
Writeln ( ' please enter Numbers While is Not Negative ' ) ;
Sum: = 0 ;
A =0 ;
Ave:
Repeat
Readln ( Number ) ;
Sum: = sum + Number ;
i: = i + 1 ;
Until number = 0 ; { End of Repeat }
i: = i - 1
ave: = Sum / i ;
Wi l ('S
Writeln
Sum = ' , S
Sum , ' average = '': 12 , ave: 7:
7 2) ;
end.{ end of program }
m
o
c
*
b
e
u
w
w
w
n
*p
ﺩﻳﺎﮔﺮﺍﻡ ﺩﺳﺘﻮﺭ Repeatﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲﺑﺎﺷﺪ:
m
o
ﺷﺮط ﻳﺎ ﺷﺮوط
c
*
b
e
u
Until
n
*p
دﺳﺘﻮر
w
Repeat
p
;
w
w
ﻣﻌﺮﻓﻲ ﭼﻨﺪ ﭘﺮﻭﺳﻴﺠﺮ ) ( Procedure
m
o
c
*
b
e
داده و وﻇﺎﻳﻒ ﻣﺴﺘﻘﻞ و ﺑﺨﺼﻮﺻﻲ ﺑﺮ ﻋﻬﺪه
ﺗﻨﻬﺎﻳﻲ اﻋﻤﺎل ﺧﺎﺻﻲ را اﻧﺠﺎم
u
n
ﻳﻜﺒﺎر در ﻧﺎ ﻪ
ﺑﺮﻧﺎﻣﻪ
ﺖ ﻛﻪ ﻜ ﺎ
اﻳﻨﺴﺖ
ﻫﺎ ا ﻨ
ﭘﺮوﺳﻴﺠﺮﻫﺎ
گ
ﺑﺰرگ
ﺖ ﺰ
ﻣﺰﻳﺖ
ﻚ ﺰ
ﺷﻮد .ﻳﻚ
آﻧﻬﺎ ﮔﺬاﺷﺘﻪ ﻣﻲﺷ
آﻧ ﺎ
p
*
ﮔﻨﺠﺎﻧﺪه ﺷﺪه وﻟﻲ در ﻣﺤﻠﻬﺎي ﻣﺨﺘﻠﻒ ازآن w
اﺳﺘﻔﺎده ﺑﻪ ﻋﻤﻞ ﻣﻲآﻳﺪ و از
w
w
اﺻﻮل ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺳﺎﺧﺖ ﻳﺎﻓﺘﻪاﺳﺖ.
ﭘﺮوﺳﻴﺠﺮﻫﺎ ﻳﺎ زﻳﺮ روالﻫﺎ ﻗﺴﻤﺖﻫﺎي ﻣﺴﺘﻘﻠﻲ از ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﻣﻲﺑﺎﺷﻨﺪ ﻛﻪ ﺑﻪ
ﭘﺮﻭﺳﻴﺠﺮ Exit
m
ﻫﺪف :اﻧﺘﻘﺎل ﻛﻨﺘﺮلoﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺧﺎرج از ﺑﻠﻮك ﻓﻌﻠﻲ
c
*
b
e
u
; Procedure Exit
n
*p
wﺷﻮد ﻛﻪ ﻛﻨﺘﺮل
wﻣﻲ
اﺳﺘﻔﺎده از اﻳﻦ ﭘﺮوﺳﻴﺠﺮ در ﻫﺮ ﺑﻠﻮك از ﺑﺮﻧﺎﻣﻪ ﺑﺎﻋﺚ
ﺑﺮﻧﺎﻣﻪ ﺑﻼﻓﺎﺻﻠﻪ ﺑﻪ ﺧﺎرج از آآن ﺑﻠﻮك اﻧﺘﻘﺎل ﻳﺎﺑﺪw .
ﭘﺮﻭﺳﻴﺠﺮ Break
m
ﻫﺪف :ﺧﺎﺗﻤﻪ دادنoﺑﻪ اﺟﺮاي ﻳﻚ ﺣﻠﻘﻪ
c
*
b
e
u
; Procedure Break
n
*p
اﺳﺘﻔﺎده از ﭘﺮوﺳﻴﺠﺮ ﻓﻮق ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ اﺟﺮايw
wﺣﻠﻘﻪ ﺧﺎﺗﻤﻪ ﻳﺎﻓﺘﻪ و
ﻳﻚ
ﻛﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ ﺑﻪ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﻌﺪي اﻧﺘﻘﺎل ﻳﺎﺑﺪ.
w
ﻴﺠﺮ continue
ﭘﺮﻭﺳﻴﺠﺮ
ﭘﺮﻭ
m
oاﺑﺘﺪاي ﺣﻠﻘﻪ
ﻫﺪف :ﺑﺎزﮔﺸﺖ ﺑﻪ
c
*
b
e
Procedure continue ;nu
*p
وﻗﺘﻲ اﻳﻦ ﭘﺮوﺳﻴﺠﺮ در ﺣﻠﻘﻪ ﻇﺎﻫﺮ ﻣﻲﺷﻮد ﻛﻨﺘﺮلw
ﺑﺮﻧﺎﻣﻪ ﺑﻪ اول ﺣﻠﻘﻪ اﻧﺘﻘﺎل
ﻣﻲﻳﺎﺑﺪ و دﺳﺘﻮرات ﺑﻌﺪ از ﭘﺮوﺳﻴﺠﺮ اﺟﺮا ﻧﻤﻲﺷﻮﻧﺪw .
w
ﺍﺭﺍﺋﻪ ﭼﻨﺪ ﻣﺜﺎﻝ ﺍﺯ ﮐﺎﺭﺑﺮﺩ ﺣﻠﻘﻪ ﻫﺎ ﻭ ﺷﺮﻁﻫﺎ
m
o
c
*
b
eﻛﻪ ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ در ﻣﺒﻨﺎي ده را
ﻣﺜﺎل :ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ
از ورودي درﻳﺎﻓﺖ ﻛﺮدهu،ﺑﻪnﻳﻚ ﻋﺪد در ﻣﺒﻨﺎي 2ﺑﺒﺮد.
*p
w
w
w
Var
Number , N , Power , R: integer ;
Begin
Power: = 1 ;
N: = 0 ;
W it ( ' enter
Write
t A N
Number:
b ');
Readln ( Number ) ;
Repeat
R: = Number MOD 2 ;
Number: = Number DIV 2 ;
N: = N + Power * R ;
Power: = Power * 10 ;
Until Number < 2 ;
N: = N + Number * Power ;
Writeln ( ' Number In Base 2 = ' , N ) ;
End. { end of program }
c
*
b
e
u
m
o
w
w
w
n
*p
ﻋﺪد را از وروديn ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ: ﻣﺜﺎل
Var
ﺟﻤﻠﻪ ﺳﺮي زﻳﺮ ﻛﻪ ﺑﻪ ﺳﺮيn ،درﻳﺎﻓﺖ ﻛﺮده
F1 , F2 , F3 , N: integer ;
.ﻓﻴﺒﻮﻧﺎﭼﻲ ﻣﻌﺮوف اﺳﺖ را ﭼﺎپ ﻧﻤﺎﻳﺪ
Begin
Write ( ' please enter A Number: ' ) ;
Readln ( N ) ;
F1: = 0 ; F2: = 1 ;
Write ( F1: 5 , F2: 5 ) ;
For i: = 3 to N do
Begin
F3: = F1 + F2;
If ( i mod 10 ) = 0 Then
Writeln ;
Write ( F3: 5 ) ;
F1: = F2 ;
F2: = F3 ;
End ; { end of for }
End. { end of program }
c
*
b
e
u
m
o
w
w
w
n
*p
ﺗﻤﺮﻳﻨﺎﺕ
a)
Sum : = 0 ;
While i < = 120 do
Begin
Sum : = Sum + i ;
i:=i+1 ;
end ;
b)
i:=0 ;
Sum : = 0 ;
While i < = 20 do
Begin
i:=i+1 ;
S
Sum
:=S
Sum + i ;
end ;
m
o
c
*
b
e
u
n
*p
w
w
w
: ﺧﺮوﺟﻲ ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪﻫﺎي زﻳﺮ را ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ-1
c)
b:=5 ;
Repeat
Writeln ( b , ( b div 5 ) : 3 ) ;
b:=b–1 ;
Until ( b div 3 ) = 5 ;
d))
Count : = 0 ;
Stop : = 4
;
n
*p
w
w
c
*
b
e
u
While Count < Stop Do
Begin
i
For K : = 1 to Count Do
Write ( K : 3 ) ;
Writeln ;
Count : = Count + 1 ;
End ;
w
m
o
ﺗﻤﺮﻳﻨﺎﺕ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ
m
o
-1ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ﻫﺎ ﺧﺮوﺟﻲ زﻳﺮ را ﺗﻮﻟﻴﺪ ﻛﻨﺪ.
c
*
b
e
1 u
1 2n 1
p
*
1 2 3 2 1
1 w
2 3 4 3 2 1
1 2 w3 4 5 4 3 2 1
w
-2ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﻌﺪادي ﻋﺪد از ورودي درﻳﺎﻓﺖ ﻛﺮده ﻣﺠﻤﻮع ارﻗﺎم
ﺷﻮد (
ﺧﺘﻢ ﻣﻲ ﺷ
ﺑﻪ -1ﺧﺘ
داده ﻫﺎﺎ ﻪ
ﺎن ا
ﭘﺎﻳﺎن
ﻧﻤﺎﻳﺪ ) .ﺎ
ﭼﺎپ ﻧ ﺎ ﺪ
ﺧﺮوﺟﻲ ﺎ
ﻋﺪد راا در ﺧ
ﻫﺮ ﺪ
m
o
c
*
ﻋﺪد ﺻﺤﻴﺢ را از ورودي درﻳﺎﻓﺖ ﻛﺮده ﺳﭙﺲ:
-3ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دو
b
اﻋﺪاد ﻓﻴﺒﻮﻧﺎﭼﻲ ﺑﻴﻦ اﻳﻦ دو ﻋﺪدeرا ﭼﺎپ ﻛﻨﺪ.
u
n
-4ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ اﺳﻜﻨﺎس p
*1000ﺗﻮﻣﺎﻧﻲ را ﺑﻪ ﺣﺎﻟﺘﻬﺎي ﻣﺨﺘﻠﻒ
wﺗﻮﻣﺎﻧﻲ 20 ،ﺗﻮﻣﺎﻧﻲ10 ،
ﻳﻌﻨﻲ ﺑﻪ اﺳﻜﻨﺎس 200ﺗﻮﻣﺎﻧﻲ 100 ،ﺗﻮﻣﺎﻧﻲ50 ،
w
ﺧﺮد ﻧﻤﺎﻳﺪ.
ﺳﻜﻪ ﻫﺎي 5ﺗﻮﻣﺎﻧﻲ و 2ﺗﻮﻣﺎﻧﻲ و ﻚ
ﺗﻮﻣﺎﻧﻲ و ﻜ
ﻳﻚ ﺗﻮﻣﺎﻧﻲw
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﺍﻃﻼﻋﺎﺕ)ﮔﺮﻭﻩ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﻓﺼﻞ 6
m
o
ﺁﺭﺍﻳﻪ ﻫﺎ Array
c
*
b
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﻓﺎ
e
u
n
*p
آراﻳﻪ
اي ﺑﺑﻪ ﻧﺎمم ر ﻳ
ﺳﺎﺧﺘﺎر داده ي
ر
از
ﻟﺰوم اﺳﺘﻔﺎده ز
ﺷﻨﺎﺧﺖ ﺰوم
w
w
ﺷﻨﺎﺧﺖ اﻧﻮاع آراﻳﻪﻫﺎ و ﻣﻮارد اﺳﺘﻔﺎده از آﻧﻬﺎ
ﻣﺮﺗﺐﺳﺎزي و ﺟ ﺘﺠﻮ
ﺟﺴﺘﺠﻮ
ﻣﻔﺎﻫﻴﻢ ﻣ ﺗﺐﺳﺎزي
ﺷﻨﺎﺧﺖ ﻣﻔﺎﻫ ﻢ
w
ﺷﻨﺎﺧﺖ اﻟﮕﻮرﻳﺘﻤﻬﺎي ﻣﺮﺗﺐﺳﺎزي و ﺟﺴﺘﺠﻮ
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي÷ﻓ ﺎ
ﻓﺎ
oﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
mاز
داﻧﺸﺠﻮ ﭘﺲ
c
*
b
ﻫﺎي ﺧﻮد ﺑﻜﺎر ﺑﺒﺮد.
آراﻳﻪﻫﺎ ﻳﻚ ﺑﻌﺪي را در ﺑﺮﻧﺎﻣﻪ
e
u
n
ﻧﻤﺎﻳﺪ.
ﺳﺎزي ﻧ ﺎ
ﭘﻴﺎده ﺎ
ﻣﺎﺗﺮﻳﺴﻬﺎﺎ راا ﺎ
ﺎ
*p
w
w
ﻋﻤﻞ ﺟﺴﺘﺠﻮ در آراﻳﻪ اﻧﺠﺎم دﻫﺪ.
w
ﺐ ﻛﻨﺪ.
ﻣﺮﺗﺐ
ﻏﻴﺮه ﺮ
اﻧﺘﺨﺎﺑﻲ و ﻴﺮ
ﺑﻲ
ﺣﺒﺎﺑﻲ،
ﺳﺎزي ﺒ ﺑﻲ
ﻣﺮﺗﺐ ي
روﺷﻬﺎي ﺮ ﺐ
ﻬي
ﺗﻮﺳﻂ
ﻳﻳﻚ ﻴﻟﻴﺴﺖ را ﻮ
ﺁﺭﺍﻳﻪ ﻭ ﺍﻧﻮﺍﻉ ﺁﻥ
m
o
c
*
b
e
u
ﻢ ﻣﻌﺮﻓﻲ
ﻲ
ﻢ از ﺣﺎﻓﻈﻪ ﻛﻪ ﻫﻤﻨﻮعع ﺑﻮده و ﺗﻮﺳﻂ ﻳﻚ اﺳﻢ
ﺧﺎﻧﻪﻫﺎي ﭘﭘﺸﺖ ﺳﺮﻫﻢ
ﻣﻲﺷﻮﻧﺪ ،آراﻳﻪ ﻧﺎم دارد .ﻧﺤﻮه دﺳﺘﺮﺳﻲ ﺑﻪ ﻫﺮ ﻳﻚ از اﻋﻀﺎء آراﻳﻪ از
ﻃﺮﻳﻖ اﻧﺪﻳﺲ آراﻳﻪ اﻣﻜﺎنﭘﺬﻳﺮ اﺳﺖ.
n
*p
w
ﺑﺮاي ﺗﻌﺮﻳﻒ آراﻳﻪ اﺑﺘﺪا ﻃﻮل آراﻳﻪ ﻛﻪ درﺣﻘﻴﻘﺖ ﺗﻌﺪاد ﺧﺎﻧﻪﻫﺎي آﻧﺮا ﻣﺸﺨﺺ
ﺧﻮاﻫﻨﺪ
ﻗﺮارر ﻮ
در آنن ﺮ
ﻳﻲ ﻛﻪ دادهﻫﺎ ر
ﻮع ﺧﺎﻧﻪﻫﺎﻳﻲ
ﺳﭙﺲ ﻧﻮع
ﮔﺮدد .ﭙﺲ
ﻲ ﺮ
ﻣﻌﻴﻦ ﻣﻲ
ﻲﻛﻨﺪ ،ﻴﻦ
ﻣﻲ
ﮔﺮﻓﺖ را ﺗﻌﻴﻴﻦ ﻣﻲ ﻛﻨﻨﺪ
w
w
ﺁﺁﺭﺍﻳﻪﻫﺎي ﻳﮏ ﺑﻌﺪي
m
o
c
*
b
e
u
آراﻳﻪﻫﺎي ﻳﻚ ﺑﻌﺪي ﺑﺼﻮرت زﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮﻧﺪ:
type
; yp
of
n
*p
[ 1 . . Length
] g
ﻧﻮﻉ ﺁﺭﺍﻳﻪ ﮐﻠﻤﻪ ﺫﺧﻴﺮﻩ ﺷﺪﻩ
w
w
arrayy
ﻃﻮﻝ ﺁﺭﺍﻳﻪ
w
:
Name
ﮐﻠﻤﻪ ﺫﺧﻴﺮﻩ ﺷﺪﻩ
ﺍﺳﻢ ﺁﺭﺍﻳﻪ
ﺍﺳ
: ﺑﺮﺍي ﻣﺜﺎﻝ
Var
m
o
c
*
N A
No:
Array [ 1..
1 50 ] off integer
ib
t
;
e
u
id: Array [ 1..
1 20p]nof Byte ;
*
w
Name , Fam:
w Arrayy [ 1.. 30 ] of char ;
w
ﻣﻘﺪﺍﺭﺩﻫﻲ ﺁﺭﺍﻳﻪﻫﺎ ﻣﺜﻞ ﻣﺘﻐﻴﺮﻫﺎ ﺑﻪ ﺩﻭ ﺻﻮﺭﺕ ﺍﻣﮑﺎﻥﭘﺬﻳﺮ ﺍﺳﺖ :
m
o
-1ﺑﺎ اﺳﺘﻔﺎدهcاز دﺳﺘﻮرات ورودي
*
ﻃﻮل ﻧﺎ ﻪ
ﺑﺮﻧﺎﻣﻪ
ﻣﻘﺪاردﻫﻲ ددرbﻃ ل
-2ﻘﺪا دﻫ
e
u
n
*p
ﻃﺮﻳﻘﻪ دﺳﺘﺮﺳﻲ ﺑﻪ ﻋﻨﺎﺻﺮ آراﻳﻪ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ:
w
w
] [ index
w
ﺍﻧﺪﻳﺲ ﺁﺭﺍﻳﻪ
Name
ﺍﺳﻢ ﺁﺭﺍﻳﻪ
ﺑﻴﺸﺘﺮﻳﻦ، ﻋﺪد ﺻﺤﻴﺢ از ورودي درﻳﺎﻓﺖ ﻛﺮده100 ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ: ﻣﺜﺎل
.ﻣﻘﺪار و ﻣﺤﻞ وﻗﻮع آن را در ﺧﺮوﺟﻲ ﭼﺎپ ﻧﻤﺎﻳﺪ
Var
No: array [ 1.. 100 ] of integer ;Max , i , index: integer ;
Begin
Writeln ( ' please enter TEN Numbers ' ) ;
For i: = 1 to 100 do
R dl ( N
Readln
No [ i ] ) ;
Max: = No [ 1 ] ; Index: = 1 ;
For i: = 2 to 100 do
If No [ i ] > Max Then
Begin
Max: = No [ i ] ;
Index: = i ;
End ;
Writeln ( ' The Maximum
Ma im m is = ' , Max
Ma ) ;
Writeln ( ' And Index = ' , Index ) ;
End. { End of program }
m
o
c
*
b
e
u
w
w
w
n
*p
ﻋﻨﺼﺮي ﺭﺍ ﺍﺯ ﻭﺭﻭﺩي ﺩﺭﻳﺎﻓـﺖ ﮐـﺮﺩﻩ100 ﺑﺮﻧﺎﻣﻪﺍي ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﻳﮏ ﺁﺭﺍﻳﻪ:ﻣﺜﺎﻝ
.ﻋﻨﺎﺻﺮ ﺁﺭﺍﻳﻪ ﺭﺍ ﻣﻌﮑﻮﺱ ﻧﻤﺎﻳﺪ
Var
i , temp : integer ; a : array [1 .. 100 ] of integer ;
Begin
Writeln ( ' please enter 100 Numbers : ' ) ;
For i : = 1 to 100 do Begin
R d(a[i]) ;
Read
If ( i Mod 10 ) = 0 Then
Writeln ;
End ;
For i : = 1 to 50 do
Begin
Temp : = a [ 101 – i ] ;
a [ 101 – i ] : = a [ i ] ;
a [ i ] : = temp ;
End ;
End .
m
o
c
*
b
e
u
w
w
w
n
*p
ﻫﺎي ﺩﻭ ﺑﻌﺪي
ﺁﺭﺍﻳﻪﻫﺎي
ﺁﺭﺍﻳﻪ
m
o
ﺑﺮاي ﻧﻤﺎﻳﺶ ﻣﺎﺗﺮﻳﺲ درﺣﺎﻓﻈﻪ ﻣﻌﻤﻮﻻً از آراﻳﻪﻫﺎﻳﻲ ﺑﻨﺎم آراﻳﻪﻫﺎي دوﺑﻌﺪي اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ
ﺑﺮاي درك ﺑﻴﺸﺘﺮ اﻳﻦ آراﻳﻪﻫﺎ آﻧﻬﺎ را ﺑﺼﻮرت ﻣﺎﺗﺮﻳﺲ در ﻧﻈﺮ ﻣﻲﮔﻴﺮﻧﺪ.
c
*
b
آراﻳﻪﻫﺎي دو ﺑﻌﺪي ﺑﺼﻮرت زﻳﺮeﻣﻌﺮﻓﻲ ﻣﻲﺷﻮﻧﺪ:
u
n
Name :
array [ 1 .. row
] , 1 .. column
of
; type
p
*
w
w
w
ﮐﻠﻤﻪ ﺫﺧﻴﺮﻩ
ﺗﻌﺪﺍﺩ ﺳﻄﺮﻫﺎ
ﻧﻮﻉ ﻋﻨﺎﺻﺮ ﺁﺭﺍﻳﻪ ﮐﻠﻤﻪ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺗﻌﺪﺍﺩ ﺳﺘﻮﻧﻬﺎ
ﺷﺪﻩ
ﻢ ﺭﻳ
ﺍﺳﻢ
ﺁﺭﺍﻳﻪ
ﺳﭙﺲ، ﺭﺍ ﺍﺯ ﻭﺭﻭﺩي ﺩﺭﻳﺎﻓﺖ ﮐﺮﺩﻩ5*5 ﺑﺮﻧﺎﻣﻪﺍي ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﻳﮏ ﻣﺎﺗﺮﻳﺲ: ﻣﺜﺎﻝ
Var
.ﭖ ﻧﻤﺎﻳﺪ
ﭼﺎﭖ
ﺧﺮﻭﺟﻲ ﭼ
ﺩﺭ ﺮﻭ ﻲ
ﺁﻧﺮﺍ ﺭ
ﺮ
a : array [ 1 .. 5 , 1 .. 5 ] of integer ;
i , j : integer ;
Begin
For i : = 1 to 5 do
Begin
F
For
j : = 1 to
t 5 do
d
Read ( a [ i , j ] ) ;
Writeln ;
End ;
Writeln ;
For i : = 1 to 5 do Begin
For j : = 1 to 5 do
Write ( a [ i , j ] : 5 ) ;
Writeln ;
End ;
End.
m
o
c
*
b
e
u
w
w
w
n
*p
ﻫﺎي ﭼﻨﺪ ﺑﻌﺪي
ﺁﺭﺍﻳﻪﻫﺎي
ﺁﺭﺍﻳﻪ
m
o
ﺑﺮاي
ﻛﻠﻲ ا
ﺑﻄﻮر ﻛﻠ
ﻛﺮد .ﻄ
ﻒﻛ د
ﺑﻴﺸﺘﺮ از ددو ﻧﻧﻴﺰﺰ ﺗﺗﻌﺮﻳﻒ
ﺎد ﺸﺘ
ﻫﺎﻳﻲ ﺑﺎﺎ ااﺑﻌﺎد
آراﻳﻪﻫﺎ
ﺗﻮان آ ا ﻪ
ﻣﻲﺗ ان
ﻣﻌﺮﻓﻲ ﻳﻚ آراﻳﻪ ﭼﻨﺪ ﺑﻌﺪي ﻣﻲ ﺗﻮان ﺑﺼﻮرت زﻳﺮﻋﻤﻞ ﻛﺮد :
c
*
b
Name : array [ 1.. length1 ] of arraye
[ 1.. length2 ] ….
u
Of array [ 1.. lengthN ] of Type
n
ﻭ ﻳﺎ
*p
w
w , 1.... length2
Name:
Na
e: array
a ay [ 1.... length1
e gt
e gt , …. 1.... lengthN
e gt N ] oof Type
ype
w
ﻧﮑﺎﺗﻲ ﭼﻨﺪ ﺩﺭ ﻣﻮﺭﺩ ﺁﺭﺍﻳﻪﻫﺎ
m
o
ﻣﻨﻔﻲ
آراﻳﻪ ﺎﺑﺎ ﻣﺤﺪوده ﻔ
ﻒآ ا
ﺗﻌﺮﻳﻒ
ﺑﺮاي ﻣﺜﺎل:
c
*
b
e
( Boolean
ﺗﻌﺮﻳﻒ آراﻳﻪ از ﻧﻮع ﻣﻨﻄﻘﻲ )
u
n
ﻣﺜﺎل::
ﺑﺮاي ﻣﺜﺎل
p
*
A: array [1.. 20 ] w
; of Boolean
w
w
; A: array [ -10.. 10 ] of Real
آراﻳﻪﻫﺎي ﺑﺎ ﻣﺤﺪوده ﻣﻨﻄﻘﻲ:
ﺑﺮاي ﻣﺜﺎل
m
o
;A: array [ Boolean ] of integer
c
*
ﺮي:
ﻛﺎراﻛﺘﺮي
ﻣﺤﺪوده ر
و
ي ﺑﺑﺎ
آراﻳﻪاي
رﻳ
b
ﺑﺮاي ﻣﺜﺎل
e
; u
A: array [ 'A'.. 'Z' ] of n
Real
*p
آراﻳﻪاي ﻛﻪ ﺑﺮاي اﻋﻀﺎي آن ﻣﺤﺪودﻳﺖw
ﻗﺎﺋﻞ ﺷﻮﻳﻢ
w
ﻣﺜﺎل:
ﺑﺮاي ﺜﺎل
ا
w
A: array [ 1.. 20 ] of 1.. 30
ﺟﺴﺘﺠﻮ ﻭ ﻣﺮﺗﺐﺳﺎﺯي ) ( Search and Sort
m
ﺑﺤﺚ ﻃﺮاﺣﻲ اﻟﮕﻮرﻳﺘﻢ ﺑﺴﻴﺎر ﻣﻬﻢ اﺳﺖ ،ﺑﺤﺚ ﻣﺮﺗﺐﺳﺎزي
ﻳﻜﻲ از ﻣﺴﺎﺋﻠﻲ ﻛﻪ در
o
c
*
ﻚ ﻟﻟﻴﺴﺖ
ﻣﻘﺪاري راا از ﻳﻚ
ﻚ ﻘ ا
ﺟﺴﺘﺠﻮ ااﻳﻨﺴﺖ ﻛﻛﻪ ﻳﻚ
ﻣﻨﻈﻮر از
ﺑﺎﺷﺪ .ﻈ
و ﺟﺴﺘﺠﻮ ﻣﻲ ﺎﺷ
b
e
u
اﻳﻨﺴﺖ ﻛﻪ ﻳﻚ ﻟﻴﺴﺖ ﻣﺮﺗﺐ از داده ﻫﺎ را
ﺟﺴﺘﺠﻮ ﻛﻨﻴﻢ و ﻣﻨﻈﻮر از ﻣﺮﺗﺐ ﺳﺎزي
n
p
*
اﻳﺠﺎد ﻛﻨﻴﻢ .ﺣﺎل ﺗﻌﺪادي اﻟﮕﻮرﻳﺘﻢ ﻛﻪ ﺑﺮاي ﻣﺮﺗﺐﺳﺎزي و ﺟﺴﺘﺠﻮ ﺑﻜﺎر ﻣﻲروﻧﺪ
w
ﺳﺎﺧﺘﺎر اداده ﺎﻣﺎw
ﺑﺎﺷﺪ .
آراﻳﻪ ﺎﺷﺪ
ﻚآ اﻪ
ﻳﻚ
ﻜﻪ ﺎﺧﺘﺎ
زﻣﺎﻧﻴﻜﻪ
ﺑﺨﺼﻮص ز ﺎﻧ
ﻛﻨﻴﻢ ﺨ
را ﺑﺮرﺳﻲ ﻣﻲﻛﻨ
ا
w
ﺟﺴﺘﺠﻮ ﺩﺩﺭ ﺁ ﺍ ﻪ
ﺁﺭﺍﻳﻪ
ﺘ
m
o
c
*
b
e
u
در ﻛﻞ دو ﻧﻮع ﻋﻤﻞ ﺟﺴﺘﺠﻮ را در اﻳﻦ ﻛﺘﺎب ﺑﺮرﺳﻲ ﻣﻲﻛﻨﻴﻢ :
n
دودوﻳﻲ Binary search
ﺟﺴﺘﺠﻮ *p
w
w
w
ﺟﺴﺘﺠﻮي ﺧﻄﻲ
Linear search
ﺟﺴﺘﺠﻮي ﺧﻄﻲ Linear search
m
o
c
*
bﺟﺴﺘﺠﻮ را ﻧﺨﺴﺖ ﺑﺎ اوﻟﻴﻦ ﻋﻀﻮ آراﻳﻪ ﻣﻘﺎﻳﺴﻪ
ﺧﻄﻲ ﻋﺒﺎرت ﻣﻮرد
در ﺟﺴﺘﺠﻮي ﺧﻄ
e
uﻣﻮﻓﻘﻴﺖ ﻫﻤﺮاه ﺑﻮده و ﻋﻤﻞ ﺟﺴﺘﺠﻮ
ﻣﻲﻛﻨﻴﻢ ،اﮔﺮ ﺑﺮاﺑﺮ ﺑﻮد ﻋﻤﻞ ﺟﺴﺘﺠﻮ ﺑﺎ
n
p
*
ﺧﺎﺗﻤﻪ ﻣﻲﻳﺎﺑﺪ در ﻏﻴﺮ اﻳﻨﺼﻮرت روﻧﺪ را اداﻣﻪ داده و ﻋﺒﺎرت ﻣﻮرد ﺟﺴﺘﺠﻮ را
w
ﺑﺘﺮﺗﻴﺐ ﺑﺎ ﻋﻀﻮ دوم ،ﺳﻮم ...ﻣﻘﺎﻳﺴﻪ ﻣﻲﻛﻨﻴﻢ ﺗﺎ اﻳﻨﻜﻪw
ﺣﺎﻟﺖ ﺗﺴﺎوي ﺣﺎﺻﻞ ﺷﻮد
w
و اﮔﺮ اﻳﻦ ﺣﺎﻟﺖ ﺣﺎﺻﻞ ﻧﺸﺪ ،ﻋﺒﺎرﻳﺖ ﻣﻮرد ﺟﺴﺘﺠﻮ در ﻟﻴﺴﺖ ﻗﺮار ﻧﺪارد.
:ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ را ﻣﻲ ﺗﻮان در ﺣﺎﻟﺖ ﻛﻠﻲ ﺑﺮاي ﺟﺴﺘﺠﻮي ﺧﻄﻲ ﺑﻜﺎر ﺑﺮد
Flag: = True ;
i: = 0 ;
While ( i < = N ) and ( flag ) Do
Begin
i: = i + 1 ;
if A [ i ] = x Then
Begin
Index: = i ;
Flag: = false ;
End ;
End ;
If flag Then
Writeln ( ' The Element is found ' )
Else
Writeln ( ' The Element is not found ' ) ;
m
o
c
*
b
e
u
w
w
w
n
*p
ﺟﺴﺘﺠﻮ ﺩﻭﺩﻭﻳﻲ Binary search
m
o
c
*
b
ﻣﻲﻛﻨﻴﻢ و ﻋﻨﺼﺮ واﻗﻊ در اﻳﻦ اﻧﺪﻳﺲ را ﺑﺎ
ﻧﺨﺴﺖ اﻧﺪﻳﺲ وﺳﻂ آراﻳﻪ را ﭘﻴﺪا
e
u
n
ﺣﺎﻻت زﻳﺮ ﻣﻤﻜﻦ اﺳﺖ ﺣﺎﺻﻞ ﺷﻮد:
ﻋﺒﺎرت ﻣﻮرد ﺟﺴﺘﺠﻮ ﻣﻘﺎﻳﺴﻪ ﻣﻣﻲﻛﻨﻴﻢ و
p
*
w
) Lowاﻧﺪﻳﺲ اﺑﺘﺪاي آراﻳﻪ و upperاﻧﺪﻳﺲ آﺧﺮﻳﻦ w
ﻋﻨﺎﺻﺮآراﻳﻪ و middle
w
اﻧﺪﻳﺲ ﻋﻨﺼﺮ وﺳﻂ ﻣﻲﺑﺎﺷﺪ(.
درﺟﺴﺘﺠﻮي دودوﺋﻲ ﻟﻴﺴﺖ اوﻟﻴﻪ ﺑﺎﻳﺪﻣﺮﺗﺐ ﺑﺎﺷﺪ .ﺑﺮاي ﺟﺴﺘﺠﻮ در ﭼﻨﻴﻦ آراﻳﻪاي
: ﺍﻭﻝ
ﺣﺎﻟﺖ ﺍ ﻝ
ﺎﻟ
m
o
if A [ middle ] < X Then
L : = middle
Low
iddl
c
*
b
e
u
n
*p
در ااﻳﻨﺼﻮرت
: را ﻛﻪ ﻋﺒﺎرﺗﺴﺖ ازmiddle و ﻣﻘﺪار ﺟﺪﻳﺪ
w
w
w
Middle : = ( low + middle ) / 2
: ﺣﺎﻟﺖ ﺩﻭﻡ
ﺎﻟ
if A [ middle ] > X Then
upper : = middle
iddl
در ااﻳﻨﺼﻮرت
n
p را ﻛﻪmiddle و ﻣﻘﺪار ﺟﺪﻳﺪ
:ﻋﺒﺎرﺗﺴﺖ*از
w
w
w
c
*
b
e
u
m
o
Middle : = ( low + middle ) / 2
ﺣﺎﻟﺖ ﺳﻮﻡ :
ﺎﻟ
m
o
if A [ middle ] = X Then
c
*
Write ( ' The Eiement is found
)'
در ا ﻨ ت
اﻳﻨﺼﻮرت
b
e
u
n
در ﺻﻮرﺗﻲ ﻛﻪ ﺣﺎﻟﺖﻫﺎي اﻟﻒ ﻳﺎ ب اﺗﻔﺎق ﺑﻴﻔﺘﺪp ،
ﻋﻤﻞ*ﺟﺴﺘﺠﻮ را ﺗﺎ زﻣﺎﻧﻴﻜﻪ Low < upper
w
ﻳﺎﺑﺪ.
ﻲﻳ ﺑ
ﺠﻮ ﺧﺎﺗﻤﻪ ﻣﻲ
ﺟﺴﺘﺠﻮ
ﻞﺟ
wﻋﻤﻞ
ﻮم رخ دﻫﺪ
ﻣﺮﺣﻠﻪ ﻛﻪ ﺣﺎﻟﺖ ﺳﻮم
دﻫﻴﻢ و درر ﻫﺮﺮ ﺮ
ﻲ ﻴﻢ
ﻲ ﺑﺑﺎﺷﺪ اداﻣﻪ ﻣﻲ
ﻣﻲ
w
ﺐﺳﺎﺯي
ﺯي
ﻣﺮﺗﺐ
ﺮ
m
o
ﺑﺮاي ﻣﺮﺗﺐﺳﺎزي دادهﻫﺎ روﺷﻬﺎي ﻣﺘﻔﺎوﺗﻲ وﺟﻮد دارد .ﺗﻔﺎوت روﺷﻬﺎي
ﻣﺮﺗﺐﺳﺎزي در زﻣﺎن اﺟﺮاي آﻧﻬﺎ ﻣﻲ ﺑﺎﺷﺪ .در ﺣﺎﻟﺖ ﻛﻠﻲ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﻌﺪاد
ورودﻳﻬﺎ )داده ﻫﺎ( و ﻧﻮع ﻣﺴﺌﻠﻪ ﻣﺮﺗﺐﺳﺎزي ﻣﻲ ﺗﻮان از اﻧﻮاع روشﻫﺎي
ﻣﺮﺗﺐﺳﺎزي اﺳﺘﻔﺎده ﻧﻤﻮد.
c
*
b
e
u
n
p
*
ﺣﺎل ﺑﻌﻀﻲ از روش ﻫﺎي ﻣﺮﺗﺐ ﺳﺎزي ﻋﻤﻮﻣﻲ را ﺑﺮرﺳﻲ ﻣﻲﻛﻨﻴﻢ.
w
w
ﺣﺒﺎﺑﻲ ) ( Bubble sort
ﻣﺮﺗﺐﺳﺎزي ﺣﺒﺎﺑ
w
ﻣﺮﺗﺐﺳﺎزي اﻧﺘﺨﺎﺑﻲ ) ( Selection sort
(B
Bubble
ﺣﺒﺎﺑﻲ ) bbl sortt
ﺳﺎﺯي ﺎ
ﻣﺮﺗﺐ ﺎﺯ
ﺗ
m
o
ﺳﺎدهﺗﺮﻳﻦ روش ﻣﺮﺗﺐﺳﺎزي روش ﻣﺮﺗﺐﺳﺎزي ﺣﺒﺎﺑﻲ ﻣﻲﺑﺎﺷﺪ .ﻳﻜﻲ از ﺧﺼﻮﺻﻴﺎت ﺑﺎرز اﻳﻦ
ﻧﻮع ﻣﺮﺗﺐﺳﺎزي اﻳﻦ اﺳﺖ ﻛﻪ ﻓﻬﻢ آن ﺳﺎده ﺑﻮده و ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ آن ﺑﻪ ﺳﻬﻮﻟﺖ اﻧﺠﺎم ﻣﻲ ﮔﻴﺮد.
ﻧﻴﺎز ،آﻧﻬﺎ
ﻣﻘﺎﻳﺴﻪﻪ ﻣﻣﻲﻛﻨﺪ و در ﺻﻮرت ﻧ ﺎز،
ﻋﻨﺼﺮ اول و دوم را ﺑﺎ ﻫﻢ ﻣﻘﺎﻳ
ﺖ ﻋﻨﺼ
ﻧﺨﺴﺖ
ﺣﺒﺎﺑﻲ ﻧﺨ
ﻣﺮﺗﺐﺳﺎزي ﺣ ﺎﺑ
ﻣ ﺗﺐ
را ﺟﺎﺑﺠﺎ ﻣﻲﻛﻨﺪ ،ﺳﭙﺲ ﻋﻨﺼﺮ دوم و ﺳﻮم را ﻣﻘﺎﻳﺴﻪ ﻣﻲﻛﻨﺪ .اﻳﻦ ﻋﻤﻞ را ﺗﺎ زﻣﺎﻧﻴﻜﻪ ﺑﻪ اﻧﺘﻬﺎي
آراﻳﻪ ﻧﺮﺳﻴﺪه ﺗﻜﺮار ﻣﻲﻛﻨﺪ ،در ﭘﺎﻳﺎن ﻣﺮﺣﻠﻪ اول ﺑﺰرﮔﺘﺮﻳﻦ ﻋﻨﺼﺮ در آﺧﺮﻳﻦ ﺧﺎﻧﻪ آراﻳﻪ ﻗﺮار
اول ﺗﺎ ﺧﺎﻧﻪ
ﻣﺮﺣﻠﻪ دوم از ﺧﺎﻧﻪ ل
ﻠ
ﺑﺎﻻ را اﻧﺠﺎم ﻣﻲدﻫﺪ .اﻳﻦ روﻧﺪ را N – 1ﻣﻲﮔﮔﻴﺮد .در
ﻋﻤﻞ ﻻ
ﻞ
ﺗﺎ زﻣﺎﻧﻴﻜﻪ ﺗﻤﺎم ﻋﻨﺎﺻﺮ آراﻳﻪ ﻣﺮﺗﺐ ﻧﺸﺪهاﻧﺪ اداﻣﻪ ﻣﻲدﻫﺪ و در ﻧﻬﺎﻳﺖ ﻳﻚ ﻟﻴﺴﺖ ﻣﺮﺗﺐ ﺷﺪه
ﺷﻮد.
ﻲ ﻮ
ﺗﻮﻟﻴﺪ ﻣﻲ
ﺧﺮوﺟﻲ ﻮ
ﺻﻌﻮدي در ﺮ ﺟﻲ
ﺑﺼﻮرت ﻮ ي
ﺑ ﻮ
c
*
b
e
u
n
*p
w
w
w
For i: = 1 to n do
For j: = 1 to n - 1 do
If x [ j ] > x [ j + 1 ] Then
Begin
Temp: = x [ j ] ;
X [ j ]]: = x [ j + 1 ] ;
X [ j + 1 ]: = temp ;
End ;
m
o
c
*
b
e
u
n
*p
w
w
:ﺗﻌﺪاد ﻣﻘﺎﻳﺴﻪﻫﺎ در اﻳﻦ روش ﺑﺼﻮرت زﻳﺮ ﻣﺤﺎﺳﺒﻪ ﻣﻲﺷﻮد
w
n–1 + n–2 + … + 1 =
N(N-1)/2
ﻣﺮﺗﺐﺳﺎﺯي ﺍﻧﺘﺨﺎﺑﻲ ) ( Selection sort
m
o
c
*
b
در ﺧﺎﻧﻪ اول آراﻳﻪ ﻗﺮار ﻣﻲدﻫﻴﻢeﺳﭙﺲ ﻋﻨﺼﺮ ﻛﻮﭼﻜﺘﺮ ﺑﻌﺪي را ﻳﺎﻓﺘﻪ در ﺧﺎﻧﻪ
u
دوم ﻗﺮار ﻣﻣﻲدﻫﻴﻢ اﻳﻦ روﻧﺪ را ﺗﺎ n
زﻣﺎﻧﻴﻜﻪpﻛﻞ آراﻳﻪ ﻣﺮﺗﺐ ﻧﺸﺪه اداﻣﻪ ﻣﻣﻲدﻫﻴﻢ
*
w
w
w
در اﻳﻦ روش ﻣﺮﺗﺐﺳﺎزي ﻧﺨﺴﺖ ﻛﻮﭼﻜﺘﺮﻳﻦ ﻋﻨﺼﺮ را در ﻛﻞ آراﻳﻪ ﭘﻴﺪا ﻛﺮده
:ﻲﺑﺑﺎﺷﺪ
ﻧﻮﺷﺖ ﺑﺼﻮرت زﻳﺮ ﻣﻲ
ﺗﻮان ﻮ ﺖ
ﻲﻮن
ﺑﻲ ﻣﻲ
ﺳﺎزي اﻧﺘﺨﺎﺑﻲ
ﺐ زي
ﻣﺮﺗﺐ
ﺑﺮاي ﺮ
اي ﻛﻪ ﺑﺮ ي
ﺑﺮﻧﺎﻣﻪ ي
ﻗﻄﻌﻪ ﺑﺮ
For i: = 1 to n do
Begin
Min: = x [ i ] ;
Index: = i ;
For j: = i +1 to n do
If x [ j ] < Min Then
Begin
Min: = x [ j ] ;
Index: = j ;
End ; { find The smallest Element }
X [ index ]: = x [ i ] ;
X [ i ]]: = Min ; { swapp Minimum With other Element }
End ; { end of selection sort }
m
o
c
*
b
e
u
w
w
w
n
*p
ﺁﺭﺍﻳﻪﻫﺎ
ﻣﻮﺭﺩ ﺭ ﻳ
ﺩﺭ ﻮﺭ
ﻣﺜﺎﻝ ﺭ
ﭼﻨﺪ ﻝ
ﭼ
ﻣﺜﺎل :ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ از ورودي درﻳﺎﻓﺖ ﻛﺮده ﺳﭙﺲ
ﻗﺮار دﻫﺪ.
آراﻳﻪ ﻗ ا
ﺗﻮﻟﻴﺪ و در آ ا
ﻞ از آن راا ﺗ ﻟ
ل ﻗﻗﺒﻞ
اﻋﺪاد ااول
ا ا
m
o
c
*
;a : array [ 1 .. 50 ] of integerb
e
; i , j , N : integer
u
; k : Byte
n
flag : Boolean ; *p
w
we A Nu
Writee ( ' Enter
W
Number
; ) ' be :
; w( N ) ; a [1] : = 2 ; a [2] : = 3
Readln
; flag : = True
; k:=2
Var
Begin
For i : = 4 to N
do
Begin
For j : = 2 to ( i div 2 ) do
If ( i mod j ) = 0 Then
Fl : = ffalse
Flag
l ;
If flag Then
Begin
K:=k+1 ;
A[k]:=i ;
End ;
Flag : = Ture ;
End ; { end of for }
Writeln ( ' The prime Numbers before N ' ) ;
For j : = 1 to K do
Writeln ( a [ i ] : 5 ) ;
End . { End of program }
m
o
c
*
b
e
u
w
w
w
n
*p
را از ورودي درﻳﺎﻓﺖ ﻛﺮده و ﻣﺠﻤﻮع ﻫﺮ ﺳﻄﺮ3*3 ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ: ﻣﺜﺎل
.ﻧﻤﺎﻳﺪ
پ ﻳ
ﭼﺎپ
ﺮوﺟﻲ ﭼ
ﺮﻳﺲ درر ﺧﺮوﺟﻲ
ﺧﻮد ﻣﺎﺗﺮﻳﺲ
ﻫﻤﺮاه ﻮ
ي ﻫﻤﺎنن ﺳﻄﺮﺮ ﺑﺑﻪ ﺮ
اﻧﺘﻬﺎي
ررا ﻬ
Var
a: array [ 1.. 3 , 1.. 3 ] of Real ; sum: Real ; i , j: byte ;
Begin
Writeln ( ' Enter Array ' )
;
do
m
o
c
*
for j: = 1 to 3
do eb
Read ( a [ i , j ] ) ; u
n
Writeln ; Writeln ( ' The
result matrix ' ) ;
p
For i: = 1 to 3 *do
Begin
w
For j: = 1 to 3 do
Begin
w
Write
i ( a [ i , j ]:
] 8:
8 2) ;
w
Sum: = sum + a [ i , j ];{ calculate sum of any row }
End ;
Writeln ( sum: 8: 2 ) ; Sum : = 0 ;
End ;
End { End of program }
for i: = 1
آراﻳﻪ، ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ از ادﻏﺎمم دو آراﻳﻪ ﻣﺮﺗﺐ: ﻣﺜﺎل
. اﻳﺠﺎد ﻛﻨﺪ ﺑﻄﻮرﻳﻜﻪ آراﻳﻪ ﺳﻮم ﻣﺮﺗﺐ ﺑﺎﺷﺪL3 ﺳﻮﻣﻲ ﺑﻨﺎم
m
o
Var
L1 , L2: array [ 1.. 30 ] of integer ;
L3: array [ 1.. 60 ] of integer ;
M , N , i , j , k: Byte ;
c
*
b
e
u
Begin
n
*p
Write ( ' Enter Dimention of arrays: ' ) ;
Readln ( N , M ) ;
Writeln (' Enter first Array ' ) ;
for i: = 1 to N
do
Read ( L1 [ i ] ) ;
Writeln ( 'Enter second Array ' ) ;
for j: = 1 to M
do
Read ( L2 [ i ] ) ;
w
w
w
i: = 1 ; j: = 1 ; k: = 1 ;
while ( i < = N ) and ( j < = M ) Do
Begin
If L1 [ i ] > L2 [ j ] Then Begin
L3 [ k ]: = L2 [ j ] ;
J: = j + 1 ;
End
Else if L1 [ i ] < L2 [j ] Then Begin
L3 [ k ]: = L1 [ i ] ;
i: = i + 1 ;
End
Else Begin
g
L3 [ k ]: = L1 [ i ] ;
k: = k + 1 ;
L3 [ k ]: = L2 [ j ] ;
i: = i + 1 ;
j: = j + 1 ;
end ;
k: = k + 1 ;
End ; { end of while }
m
o
c
*
b
e
u
w
w
w
n
*p
if i < = N Then
for p: = i to n
do Begin
L3 [ k ]: = L1 [ p ] ;
k: = k + 1 ;
end
Else if j < = M Then
for p: = j to M
do Begin
L3 [ k ]:
] = L2 [ p ] ;
k: = k + 1 ;
end ;
Writeln ;
Writeln ( ' The result of merge is ' ) ;
for i: = 1 to k - 1
do Begin
Write ( L3 [ i ] : 5 ) ;
If ( i mod 10 ) = 0 Then
Writeln ;
End ; { end of merge }
End. { End of program }
m
o
c
*
b
e
u
w
w
w
n
*p
ﮐﺎﺭﺍﮐﺘﺮي ﺭﺍ ﺍﺯ ﻭﺭﻭﺩي ﺩﺭﻳﺎﻓﺖ80 ﺑﺮﻧﺎﻣﻪ ﺍي ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﻳﮏ ﺟﻤﻠﻪ ﺣﺪﺍﮐﺜﺮ: ﻣﺜﺎﻝ
.ﮐﺮﺩﻩ ﻭﺳﭙﺲ ﮐﺎﺭﺍﮐﺘﺮﻫﺎي ﻓﻀﺎي ﺧﺎﻟﻲ ﺭﺍ ﺑﺎ ﮐﺎﺭﺍﮐﺘﺮﺳﺘﺎﺭﻩ ﺟﺎﻳﮕﺰﻳﻦ ﮐﻨﺪ
Var
state: array [ 1.. 80 ] of char ;
i , N : integer ;
m
o
Begin
c
*
b
e
u
Writeln ( ' Enter Number of sentence: ' ) ;
Readln ( N ) ;
W it l (' Enter
Writeln
E t sentence
t
') ;
for i: = 1 to N
do
Read ( state [ i ] ) ;
for i: = 1 to N
do
if state [ i ] = ‘ ' Then
state [ i ]: = ' * ' ;
Writeln ;
Writeln ( ' The output sentence ' ) ;
for i: = 1 to N
do
Write ( state [ i ] ) ;
End. { End of program }
w
w
w
n
*p
ﺗﻤﺮﻳﻨﺎﺕ
ﺗ ﺎ
m
o
اﺳﺖ:
ﻼن ززﻳﺮ ﺻﺤﻴﺢ ا ﺖ
ات ززﻳﺮ در ﻣﻮرد ااﻋﻼن
دﺳﺘﻮرات
ﻚ از ﺘ
ﻛﺪاﻣﻴﻚ
-ﻛﺪا
c
*
b
e
ﺍﻟﻒua [ ' A' ]: = ' Z' -
a: arrayy [ ' A '.. ' Z ' ] of char
n
ﺏ*p a [ ' a ' ]: = 'A ' -
ﺝ-
a [ ' A' ]: = 1
ﺩ-
a [ ' I ' ]: = 12
ﺡ-
a [ ' i ' ]: = 12
w
w
w
ﻧﻤﺎﺋﻴﺪ.
ﻣﺤﺎﺳﺒﻪﻪ ﻧﻤﺎﺋ ﺪ
ﺭﺍ ﻣﺤﺎﺳ
ﺯﻳﺮ ﺍﺷﻐﺎﻝ ﻣﻣﻲ ﮐﻨﻨﺪ ﺍ
ﺑﺎﻳﺘﻬﺎﻳﻲ ﮐﻪ ﻫﻫﺮ ﮐﺪﺍﻡ ﺍﺯ ﺍﻋﻼﻧﻬﺎي ﺯﻳ
ﺗﻌﺪﺍﺩ ﺑﺎﻳﺘﻬﺎﻳﺗﻌﺪﺍﺩ
•
•
•
•
m
o
a: array [ -20.. 10 ] of char
c
*
a: array [ -20..
20 -20
20 , 0..
0 -20
' 20 ]bof ' A ''.. ' Z
e
a: array [ Booleam ] n
ofuchar
a: array [ 1.. 10 , ' *Ap'.. ' Z ' ] of integer
w
w
w
ﺑﺮﻧﺎﻣﻪﻧﻧﻮﻳﺴﻲ
ﺗﻤﺮﻳﻨﺎﺕ ﻧﺎ
ﺗ ﺎ
• ﺑﺮﻧﺎﻣﻪاي m
oﻛﻪ ﻛﻪ ﻳﻚ آراﻳﻪ ﺣﺪاﻛﺜﺮ 50ﻋﻨﺼﺮي را از
ﺑﻨﻮﻳﺴﻴﺪ
* و ﺳﭙﺲ ﻋﻨﺎﺻﺮي از آراﻳﻪ ﻛﻪ اول ﻫﺴﺘﻨﺪ
ﻛﺮده
ورودي درﻳﺎﻓﺖ c
ﺟﺎﻳﮕﺰﻳﻦ ﻛb
ﭼﺎپ
را در ﺧﺮوﺟﻲ ﺎ
ﺣﺎﺻﻞ ا
آراﻳﻪ ﺎ ﻞ
eا
ﻛﺮده آ
ﺻﻔﺮ ﺎ ﮕ
را ﺎﺑﺎ ﻔ
ا
u
ﻛﻨﺪ.
n
*pدرﻳﺎﻓﺖ ﻛﺮده ﺳﭙﺲ آن را ﺑﻪ
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻋﺪدي از ورودي
ﻋﺎﻣﻞ ﻫﺎي اول ﺗﺠﺰﻳﻪ ﻧﻤﺎﻳﺪ و ﺣﺎﺻﻞ را w
ﺑﺼﻮرت زﻳﺮ در ﺧﺮوﺟﻲ
w
w
ﭼﺎپ ﻧﻤﺎﻳﺪ:
ﺑﺮاي ﻣﺜﺎل:
) 21 = ( 3 ^ 1 ) * ( 7 ^ 1
m
o
c
*
ﺳﭙﺲ در ﺻﻮرت وﺟﻮد ﺻﻔ ﻫﺎي
ﺻﻔﺮﻫﺎي
ﻛﺮده ﺳ
ورودي درﻳﺎﻓﺖ ﻛ ده
ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد از
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳ ﺪ
• ﺑ ﻧﺎﻣﻪ
b
ﺧﺮوﺟﻲ ﭼﺎپ ﻧﻤﺎﻳﺪ.
آن را ﺣﺬف ﻧﻤﻮده ،ﻧﺘﻴﺠﻪ را در
e
u
n
• ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﺪ ﻛﻪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ 5 * 5را ازp
ورودي درﻳﺎﻓﺖ ﻛﺮده ﺳﭙﺲ ﻣﺠﻤﻮع ﻫﺮ
*
اﻧﺘﻬﺎي ﻫﻤﺎن ﺳﺘﻮن ﭼﺎپ ﻧﻤﺎﻳﺪ.
ﺳﻄﺮ را اﻧﺘﻬﺎي ﻫﻤﺎن ﺳﻄﺮ و ﻣﺠﻤﻮع ﻫﺮ ﺳﺘﻮن را در w
w
w
• ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺣﺪاﻛﺜﺮ 10 * 10را از ورودي درﻳﺎﻓﺖ ﻛﺮده
m
o
اوﻟﻴ
ﻣﺎﺗﺮﻳﺲ اوﻟ
ﻫﻤﺮاهاه ﻣﺎﺗ ﻳ
ﻣﺮﺗﺐ ﻧﻤﻮده ﺑﻪ ﻫﻤ
ﺳﻄﺮ ﻣ ﺗﺐ
ﺣﺴﺐ ﺳﻄ
ﺣﺴﺐ ﺳﺘﻮن و ﻫﻫﻢ ﺑﺑﺮ ﺣ ﺐ
ﻣﺎﺗﺮﻳﺲ ﻫﻫﻢ ﺑﺑﺮ ﺣ ﺐ
ﻣﺎﺗ ﻳ
در ﻳﻚ ﺳﻄﺮ ﭼﺎپ ﻧﻤﺎﻳﺪc.
*
b
e
u
n
*p
ﺢ ﻛﻪ 150ﻋﻨﺼﺮﻣﺮﺗﺐ
ازﻧﻮع ﺻﺤﻴﺢ
•ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ آراﻳﻪ 200ﻋﻨﺼﺮي ع
w
w
درآن ﻗﺮار ﻣﻲﮔﻴﺮد را از ورودي درﻳﺎﻓﺖ ﻛﺮده ﺳﭙﺲ آراﻳﻪ دوﻣﻲ ﺑﺎ 50ﻋﻨﺼﺮ را از
ورودي ﺑﺨﻮاﻧﺪ.
w
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﺍﻃﻼﻋﺎﺕ)ﮔﺮﻭﻩ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﻓﺼﻞ 7
m
o
ﺗﻮﺍﺑﻊ ﻭ ﺭﻭﺍﻝﻫﺎي ﻛﺘﺎﺑﺨﺎﻧﻪ ﺍي
c
*
b
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﻓﺎ
e
u
ﺑﻊ و روال
ﺷﻨﺎﺧﺖ ﺳﺎﺧﺘﺎر ﺗﺎﺑﻊ
n
p
*
ﺷﻨﺎﺧﺖ ﺗﻮاﺑﻊ و رواﻟﻬﺎي اﺳﺘﺎﻧﺪارد ﺑﺮاي ﻧﻮﻋﻬﺎي ﺻﺤﻴﺢ
w
ﺷﻨﺎﺧﺖ ﺗﻮاﺑﻊ و رواﻟﻬﺎي اﺳﺘﺎﻧﺪارد ﺑﺮايw
ﻧﻮﻋﻬﺎي اﻋﺸﺎري و ﻛﺎرﻛﺘﺮي
ﺷﻨﺎﺧﺖ ﺗﻮاﺑﻊ و رواﻟﻬﺎي اﺳﺘﺎﻧﺪارد رﻳﺎﺿﻲ w
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي÷ﻓ ﺎ
ﻓﺎ
oﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
mاز
داﻧﺸﺠﻮ ﭘﺲ
c
*
اﺳﺘﻔﺎده ﻛﻛﻨﺪ.
ﺑﺮﻧﺎﻣﻪ ا ﺎ
ﻧﻴﺎز در ﺎ
اﺳﺘﺎﻧﺪارد رااbدر ﺻﻮرت ﺎ
رواﻟﻬﺎي ا ﺎ ا
ﺗﻮاﺑﻊ و اﻟ ﺎ
ا
e
u
n
ﻧﺎﻣﻪ ﺧﻮد از آﻧﻬﺎ
ﺺ داده و ددر ﺑﺑﺮﻧﺎﻣﻪ
ﺗﺸﺨﻴﺺ
را ﺗﺸﺨ
ﺧﺮوﺟﻴﻬﺎي آﻧﻬﺎ ا
ﺳﺎﺧﺘﺎر ﺗﻮاﺑﻊ و ﺧ وﺟ ﻬﺎي
ﺳﺎﺧﺘﺎ
p
*
اﺳﺘﻔﺎده ﻛﻨﺪ.
w
w
ﺳﺎﺧﺘﺎر رواﻟﻬﺎ و ﺧﺮوﺟﻴﻬﺎي آﻧﻬﺎ را ﺗﺸﺨﻴﺺ داده و w
ﻧﺘﺎﻳﺞ ﺣﺎﺻﻞ از آﻧﻬﺎ را
ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار دﻫﺪ.
ﺗﻮاﺑﻊ رﻳﺎﺿﻲ را ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﻋﺒﺎرت رﻳﺎﺿﻲ در ﺑﺮﻧﺎﻣﻪ ﺑﻜﺎر ﺑﺒﺮد.
ﺳﺎﺧﺘﺎﺭ ﺗﺎﺑﻊ
m
o
ﺑﺮﻧﺎﻣﻪ
از ﺑﺮ
ﭘﺎراﻣﺘﺮ ز
ﺑﻌﻨﻮان ﭘ ر ﺮ
ﻳﻲ ررا ﺑ ﻮ
ﻣﺘﻐﻴﺮﻫﺎﻳﻲ
ﻴﺮ ﻳﻳﺎ ﻴﺮ
ﺗﺎﺑﻊ ﻳاﻳﻨﺴﺖ ﻛﻪ ﻣﺘﻐﻴﺮ
ﻛﻞ ﻫﺪف ﺑﻊ
در ﻞ
ر
اﺻﻠﻲ درﻳﺎﻓﺖ ﻛﺮد .ﻋﻤﻞ ﺧﺎﺻﻲ را روي ﭘﺎراﻣﺘﺮﻫﺎ اﻧﺠﺎم داده و ﻧﺘﻴﺠﻪ را ﺑﻪ
ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﺑﺮﮔﺮداﻧﺪ.
c
*
b
e
ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ:
ﺷﻜﻞ ﻛﻠﻲ ﻓﺮاﺧﻮاﻧﻲ ﺗﻮاﺑﻊ در
u
n
ﺗﺎﺑﻊ:
ﺳﺎﺧﺘﺎر ﺗﺎ
ﺎﺧ ﺎ
*p
Function
Name w( parameters ) : Type
w
w
ﮐﻠﻤﻪ ﺫﺧﻴﺮﻩ
ﺍﺳﻢ ﺗﺎﺑﻊ
ﭘﺎﺭﺍﻣﺘﺮﻫﺎ
ﻧﻮﻉ ﺗﺎﺑﻊ
ﺷﺪﻩ
ﺍﻋﺸﺎﺭي
ﺍﻋﺪﺍﺩ ﺻﺤﻴﺢ ﻭ ﺍ ﺸﺎ
ﺑﺮﺍي ﺍ ﺍ
ﺗﻮﺍﺑﻌﻲ ﺍ
ﺗ ﺍ
m
ﺗﺎﺑﻊ o Abs
c
*
b
( absoluteﭘﺎﺭﺍﻣﺘﺮي ﮐﻪ ﺑﻪ ﺁﻥ ﺍﺭﺳﺎﻝ ﻣﻲﺷﻮﺩ:
ﻫﺪﻑ :ﺑﺎﺯ ﮔﺮﺩﺍﻧﺪﻥ ﻗﺪﺭ ﻣﻄﻠﻖ )
e
u
n
p
*
; Function Abs ( x: Integer ): Integer
w
Function Abs ( x:w
; Real ): Real
w
اﻳﻦ ﺗﺎﺑﻊ ﻳﻚ ﻋﺒﺎرت از ﻧﻮع ﺣﻘﻴﻘﻲ ﻳﺎ ﺻﺤﻴﺢ را ﺑﻌﻨﻮان آراﮔﻮن درﻳﺎﻓﺖ ﻛﺮده ﺳﭙﺲ
ﺑﺮﮔﺮداﻧﺪ.
ﻞ ررا ﺑﺮ ﺮ
ﻣﺤﺎﺳﺒﻪ و ﺣﺎﺻﻞ
ﺒ
ﻣﻄﻠﻖ آن ررا
ﻗﺪرر ﻖ
:ﻝ
ﻣﺜﺎﻝ
Var
f : Real ;
I : Integer ;
Begin
F : = Abs ( - 191.15
191 15 ) ;
I : = Abs ( - 171 ) ;
Writeln ( ' f = ' , f : 8 : 2 , ' I = ' , I ) ;
E d.
End
m
o
c
*
b
e
u
n
*p
w
w
F = 191.15
w
I = 171
: ﺣﺎﺻﻞ
ﺧﺮوﺟﻲ ﺎ ﻞ
ﺧ
ﺗﺎﺑﻊ Si
Sin
ﺎ
m
o
اﻋﺸﺎري
ﻳﻚ ﻋﺪد از ﻧﻧﻮع ا ﺸﺎ
ﮔﺮداﻧﺪن ﺳﻴﻨﻮس ﻚ
ﺑﺎز ﮔ اﻧ ن
ﻫﺪف :ﺎز
ف
c
*
b
e
Function Sin ( X: Real ): Real
;
ﺷﻜﻞ ﺗﺎﺑﻊ:
u
n
*p
w
ﻲﺑﺑﺎﺷﺪ.
ﻮس Xﻣﻲ
ﺳﻴﻨﻮس
ﻣﻘﺪارر ﻴ
ﻮع اﻋﺸﺎري
ﻋﺒﺎرت ﻳﻳﺎ ﻋﺪد ازز ﻧﻮع
Xﻳﻳﻚ ﺒ ر
ري ﺑﻮﺑﻮده و ﺣﺎﺻﻞﻞw
w
:ﻝ
ﻣﺜﺎﻝ
m
o
Var
c
*
b
e
u
X : Real ;
B i
Begin
X : = sin ( 10 ) ;
Write ( ' sin ( 10 ) = ' , x :8 : 2 ) ;
End.
w
w
w
n
*p
ﺗﺎﺑﻊ Cos
ﺑﻊ
m
o
اﻋﺸﺎري.
ﻳﻚ ﻋﺪد از ﻧﻧﻮع ا ﺸﺎ
ﮔﺮداﻧﺪن ﻛﻛﺴﻴﻨﻮس ﻚ
ﺑﺎز ﮔ اﻧ ن
ﻫﺪف :ﺎز
ف
c
*
b
;e
Function cos ( X: Real ): u
Real
ﺷﻜﻞ ﺗﺎﺑﻊ:
n
*p
w
ﻲﺑﺑﺎﺷﺪ.
ﻮس Xﻣﻲ
ﻛﺴﻴﻨﻮس
ﻣﻘﺪار ﻴ
ﻞ wر
ﺑﻮده و ﺣﺎﺻﻞ
ري ﺑﻮ
ﻮع اﻋﺸﺎري
ﻋﺒﺎرت ﺑﺑﺎ ﻋﺪد ازز ﻧﻮع
Xﻳﻳﻚ ﺒ ر
w
: ﻣﺜﺎﻝ
m
o
Var
c
*
b
e
u
X : Real ;
Begin
g
X : = cos ( 10 ) ;
Write ( ' cos ( 10 ) = ' , x : 8 : 2 ) ;
End .
w
w
w
n
*p
ﺗﺎﺑﻊ ArcTan
m
o
اﻋﺸﺎري
ﻳﻚ ﻋﺪد از ﻧﻧﻮع ا ﺸﺎ
ﺗﺎﻧﮋاﻧﺖ ﻚ
آرك ﺗﺎﻧ اﻧ
ﺑﺎزﮔﺮداﻧﺪن آ ك
ﻫﺪف :ﺎزﮔ اﻧ ن
ف
c
*
b
e
Function ArcTan ( X: u
; Real ): Real
ﺷﻜﻞ ﺗﺎﺑﻊ:
n
*p
Xﻳﻚ ﻋﺒﺎرت ﻳﺎ ﻋﺪد از ﻧﻮع اﻋﺸﺎري ﺑﻮده ﺣﺎﺻﻞw
ﻣﻘﺪار آرك ﺗﺎﻧﮋاﻧﺖ Xﻣﻲﺑﺎﺷﺪ.
w
w
m
o
Var
c
*
X : =A
ArcTan
; ) T ( 10
b
Write ( ' ArcTan ( 10 ) = u
', e
; )x:8:2
End .
n
pاز* ﻧﻮع درﺟﻪ اراﺋﻪ ﺷﻮد
ﺗﻮﺟﻪ :در ﺻﻮرﺗﻲ ﻛﻪ در ﺗﻮاﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ زاوﻳﻪ
w
ﻣﻲﺗﻮان ﺑﺎ ﻓﺮﻣﻮل زﻳﺮ ﻣﻌﺎدل رادﻳﺎن آن را ﻣﺤﺎﺳﺒﻪ ﻛﺮدw:
w
; X : Real
Begin
Real = Dey * 3.14159 / 180
Exp
ﺗﺎﺑﻊ p
ﺑﻊ
m
o
ﺭﺳﺎﻧﺪ.
ﻳﮏ ﻋﺪﺩ ﻣﻲ ﺎ
ﺗﻮﺍﻥ ﮏ
ﺭﺍ ﺑﻪ ﺍ
( e = 2.71828ﺍ
ﻫﺪﻑ :ﻋﺪﺩ ﻧﭙﺮ ) … 2 71828
ﻑ
c
*
b
Function Exp ( X: Real ): Real
;
ﺷﮑﻞ ﺗﺎﺑﻊ:
e
u
n
p
*
wﻧﻴﺰ ﻳﻚ ﻋﺪد اﻋﺸﺎري ﻣﻲﺑﺎﺷﺪ
Xﻋﺒﺎرت ﻳﺎ ﻣﺘﻐﻴﺮي از ﻧﻮع اﻋﺸﺎري ﺑﻮده و ﺣﺎﺻﻞ ﺗﺎﺑﻊ
ﻲﻛﻨﺪ.
ﻣﺤﺎﺳﺒﻪ ﻣﻲ
ﺒ
ﺗﻮان Xررا
ﺑﻊ ﻣﻘﺪارر eﺑﺑﻪ ﻮ
ﻳﻦ ﺗﺎﺑﻊ
اﻳﻦ
w
w
: ﻣﺜﺎﻝ
Var
X : Real ;
i : integer ;
c
*
For i : = 1 to 10 do
b
Begin
e
X : = exp ( i ) ; u
n
Writeln ( xp
:8:2 ) ;
*
End ;
w
End .
w
w
m
o
Begin
ﺗﺎﺑﻊ frac
ﺑﻊ
m
o
ﮔﺮداﻧﺪ.
را ﺑﺮﻣﻲﮔ اﻧ
اﻋﺸﺎري ا
ﻚ ﻋﺪد ا ﺸﺎ
اﻋﺸﺎري ﻳﻚ
ﻫﺪف :ﻗﻗﺴﻤﺖ ا ﺸﺎ
ف
c
*
b
e
Function frac ( X: Real ): Real
;
ﺷﮑﻞ ﺗﺎﺑﻊ:
u
n
*p
wاﻋﺸﺎري ﻛﻪ ﻗﺴﻤﺖ اﻋﺸﺎري
Xﻋﺪدي از ﻧﻮع اﻋﺸﺎري و ﺣﺎﺻﻞ ﺗﺎﺑﻊ ﻳﻚ ﻋﺪد
ﻋﺪد ورودي ا
را
اﻋﺸﺎري ﻋﺪ
wاﻋﺸﺎ
ﻗﺴﻤﺖ
ﺗﺎﺑﻊ ﻗ ﺖ
دﻳﮕﺮ ااﻳﻦ ﺗﺎ
ﺑﻌﺒﺎرت ﮕ
ﺑﺎﺷﺪ و ﺎ ت
اﺳﺖ ﻣﻲ ﺎﺷﺪ
ﻋﺪد Xا ﺖ
ﻋﺪ
w
ﺑﻪ ﻋﻨﻮان ﺧﺮوﺟﻲ ﺑﺎز ﻣﻲﮔﺮداﻧﺪ.
: ﻣﺜﺎﻝ
Var
Y,X:R
Reall ;
Begin
X : = frac ( 24.769 ) ;
Y : = frac ( - 12.75 ) ;
Write ( ' x = ' , 8 : 3 , ' y = ' , 8 : 2 ) ;
End .
m
o
c
*
b
e
u
n
*p
w
X=
w
0.769 Y
w= - 0.75
: ﺧﺮﻭﺟﻲ
ﺑﻊ Int
ﺗﺎﺑﻊ
ﮔﺮداﻧﺪ.
را ﺑﺮﻣﻲﮔ اﻧﺪ
اﻋﺸﺎري ا
ﻋﺪد ا ﺸﺎ
ﻳﻚ ﺪ
ﺻﺤﻴﺢ ﻚ
ﻫﺪف :ﻗ ﺖ
ﺪف
ﻗﺴﻤﺖ m
o
c
*
b
e
Function Int ( X: Real ): Real
;
ﺷﻜﻞ ﺗﺎﺑﻊ:
u
n
*p
Xﻳﻚ ﻋﺒﺎرت ﻳﺎ ﻣﺘﻐﻴﺮ از ﻧﻮع اﻋﺸﺎري و w
ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﻓﻴﺰﻳﻚ ﻋﺪد
w
ﺧﺮوﺟﻲ
wدر ﺧ
اﻋﺸﺎري
ﻳﻚ ﻋﺪد ا ﺸﺎ
ﻣﻘﺪار ﺻﺤﻴﺢ ﻚ
ﺗﺎﺑﻊ ﻘ ا
اﻋﺸﺎري ااﺳﺖ ااﻳﻦ ﺎ
ا ﺸﺎ
ﻧﺸﺎن ﻣﻲدﻫﺪ.
: ﻣﺜﺎﻝ
Var
y , x : Real ;
Begin
X : = Int ( 2.87 ) ;
Y : = Int ( - 8.76 ) ;
w
{ 2.0 }
{ - 8.0 }
n
*p
End .
w
w
c
*
b
e
u
m
o
ﺗﺎﺑﻊ Ln
ﺑﻊ
m
o
ﻣﺒﻨﺎي .e
ﺍﻋﺸﺎﺭي ﺩﺭ ﺎ
ﮏ ﻋﺪﺩ ﺍ ﺎ
ﻟﮕﺎﺭﻳﺘﻢ ﻳﮏ
ﻣﺤﺎﺳﺒﻪ ﻟﮕﺎ
ﻫﺪﻑ :ﺎ
ﻑ
ﺷﮑﻞ ﺗﺎﺑﻊ:
c
*
b
e
u
n
*p
; Function Ln ( X: Real ): Real
w
w
w
ﺑﺎﺷﺪ.
ﻋﺪداﻋﺸﺎري ﻣﻲ ﺎﺷﺪ
ﻓﻴﺰﻳﻚ ﻋﺪ اﻋﺸﺎ
ﺗﺎﺑﻊ ﻓ ﺰ ﻚ
ﻞ ﺗﺎ
وﺣﺎﺻﻞ
اﻋﺸﺎري ﺑﻮده ﺎ
ازﻧﻮعع اﻋﺸﺎ
ﻣﺘﻐﻴﺮ ازﻧ
ت ﻳﺎﺎ ﺘﻐ
ﻋﺒﺎرت
ﻚﻋﺎ
Xﻳﻚ
: ﻣﺜﺎﻝ
m
o
Var
c
*
b
e
u
X : Real ;
Begin
g
X : = Ln ( 2.87 ) ;
{ x = 3.73767 }
Write ( ' x = ' , x : 10 : 5 ) ;
End .
w
w
w
n
*p
ﺗﺎﺑﻊ Odd
ﺗﺎ
m
o
ﻫﺪﻑ :ﻓﻓﺮﺩ ﺑﻮﺩﻥﻥ ﻋﺪﺩ ﺻﺤﻴﺢ ﺭﺍﺍ ﺑﺮﺭﺳﻲ ﻣﻲ ﮐﮐﻨﺪ.
ﻑ
ﺷﻜﻞ ﺗﺎﺑﻊ:
c
*
b
e
u
n
*p
; odd ( X: logint ): Booleam
w
w
Function
Xﻳﻚ ﻋﺒﺎرت از ﻧﻮع longintاﺳﺖ و ﺗﺎﺑﻊ ،ﻓﺮد ﺑﻮدن ﻋﺒﺎرت را ﺑﺮرﺳﻲ ﻣﻲ ﻛﻨﺪ
ﺗﺎﺑﻊ False
ﺧﺮوﺟﻲ ﺗﺎ
ﻣﻘﺪار ﺧ
اﮔﺮ ﻘ ا
ﺑﺎﺷﺪ Xﻓﻓﺮد ااﺳﺖ و اﮔ
Trueﺎﺷ
ﺗﺎﺑﻊ Tr e
ﺧﺮوﺟﻲ ﺗﺎ
ﻣﻘﺪار ﺧ
اﮔﺮ ﻘ ا
اﮔ
ﺑﺎﺷﺪ Xﻓﺮد ﻧﻴﺴﺖ.
w
: ﻣﺜﺎﻝ
m
o
Var
c
*
b
e
u
i : integer ;
Begin
F
For
i : = 1 to
t
100 do
d
If odd ( i ) Then
Writeln ( ' i = ' , j : 3 ) ;
End .
w
w
w
n
*p
ﺑﻊ Ord
ﺗﺎﺑﻊ
m
o
ﺑﻜﺎر ﻣﻲرود.
ﻛﺎراﻛﺘﺮي ﻜﺎ
ﻣﺘﻐﻴﺮ ﻛﺎ اﻛ
ﻚ ﻐ
اﺳﻜﻲ ﻳﻚ
ﭘﻴﺪا ﻛﻛﺮدنن ﻛﻛﺪ ا ﻜ
ﺑﺮاي ا
ﻏﺎﻟﺒﺎ ا
ﻫﺪف :ﻏﺎﻟ ﺎً
ف
c
*
b
e
Function Ord ( x: char ): Longint
;
ﺷﮑﻞ ﺗﺎﺑﻊ:
u
n
ﺩﺭﻳﺎﻓﺖ ﻭ ﮐﺪ ﺍﺳﮑﻲ ﺁﻥ ﺭﺍ ﺑﺮﻣﻲ
ﻋﺒﺎﺭﺕ xﺍﺯ ﻧﻮﻉ ﮐﺎﺭﮐﺘﺮي ﺭﺍ ﺑﻌﻨﻮﺍﻥ ﭘﺎﺭﺍﻣﺘﺮ*p
w
ﮔﺮﺩﺍﻧﺪ.
ﮔﺮﻓﺘﻦ xﺭﺍﺍ ﺩﺭ
wﮔ ﻓ
ﻗﺮﺍﺭ
wﻗ ﺍ
ﺗﺮﺗﻴﺐ
ﺧﺮﻭﺟﻲ ﺗ ﺗ
ﺍﻥ ﺧ
ﺗﺎﺑﻊ ﺑﻌﻨﻮﺍﻥ
ﺎﺷﺪ ﺗﺎ
ﺍﺳﮑﺎﻟﺮ ﺑﺎﺷﺪ
ﺍﮔﺮ xﺍﺯ ﻧﻧﻮﻉ ﺍ ﮑﺎﻟ
ﺍﮔ
ﻣﺠﻤﻮﻋﻪ
ﺍي ﮐﻪ ﺍﺑﺘﺪﺍ ﺑﻪ ﻋﻨﻮﺍﻥ ﺍﺳﮑﺎﻟﺮ ﺍﻋﻼﻥ ﺷﺪﻩ ،ﺑﺎﺯ ﻣﻲﮔﺮﺩﺍﻧﺪ.
: ﻣﺜﺎﻝ
Var
ch
h : char
h ;
Begin
For ch : = ' A ' to ' Z ' do
Write ( ord ( ch ) : 5 ) ;
End .
m
o
c
*
b
e
u
w
w
w
n
*p
' را درﺧﺮوﺟﻲ ﭼﺎپ ﻣﻲﻛﻨﺪZ ' ' ﺗﺎA ' ﻛﺪ اﺳﻜﻲ
.ﻲﺑﺎﺷﺪ
ﻣﻲ65 ' ﻋﺪدA ' ﻲ
ﻛﺪ اﺳﻜﻲ
: ﺧﺮوﺟﻲ
ﺗﺎﺑﻊ pii
ﺗﺎ
m
o
ﮔﺮداﻧﺪ.
ﻫﺪف :ﻋﺪد ﭘﻲ راا ﺑﺮ ﻣﻲﮔ اﻧ
ف
ﺷﻜﻞ ﺗﺎﺑﻊ:
c
*
b
e
u
n
*p
; Function pi: Real
w
wاﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮد.
ﻊ ﺑﺮاي ﺑﺎزﮔﺮداﻧﺪن ﻋﺪدي ﭘﻲ ) … ( 3.141592ﻣﻮرد
اﻳﻦ ﺗﺎﺑﻊ
w
ﺗﺎﺑﻊ Pred
m
o
ﮔﺮﺩﺍﻧﺪ.
ﺭﺍ ﺑﺮ ﻣﻲ ﮔ ﺍﻧ
ﭘﺎﺭﺍﻣﺘﺮ ﺍ
ﻣﻘﺪﺍﺭ ﺎ ﺍ
ﻗﺒﻞ ﻘ ﺍ
ﻣﻘﺪﺍﺭ ﻗ ﻞ
ﻫﺪﻑ :ﻘ ﺍ
ﻑ
c
*
b
Function pred ( x ): < same type of parameter
; >
ﺗﺎﺑﻊ:
ﺷﮑﻞﻞ ﺎ
ﺷ
e
u
n
*p
ﭘﺎراﻣﺘﺮ ﺗﺎﺑﻊ ﻣﻲ ﺗﻮاﻧﺪ از ﻫﺮ ﻧﻮع ﺑﺎﺷﺪ و ﺑﺎ ﺗﻮﺟﻪw
ﻧﻮع ﭘﺎراﻣﺘﺮ ﺗﺎﺑﻊ ﻧﻴﺎز از
ﺑﻪ
w
.w
ﻫﻢ ﻧﻮع ﻣﻲﺑﺎﺷﺪ و ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﻣﻘﺪار ﻗﺒﻞ از xﻣﻲﺑﺎﺷﺪ
: ﻣﺜﺎﻝ
Ch: = pred ( ' d ' ) ;
i: = pred ( 15 ) ;
{ ch = ' c ' }
m
o
c
*
b
e
u{ flag = false }
{ i = 14 }
n
p
*
i: = pred ( - 30 ) ;w
{ i = - 31 }
w
w
flag: = pred ( True ) ;
ﺗﺎﺑﻊ Random
ﺑﻊ
ﻫﺪف :ﺑﺮاي ﺗﻮﻟﻴﺪ ﻋﺪد ﺗﺼﺎدﻓﻲ
ﺷﻜﻞ ﺗﺎﺑﻊ:
m
o
*c
b
;e
1) Function Random: u
Real
n
2) Function Random
; ( x: word ): word
p
*
آرﮔﻮﻣﺎن ﻣﻮرد
اﮔﺮ ﺗﺎﺑﻊ Randomﺑﻪ ﺷﻜﻞ ﻳﻚ ﻳﻌﻨﻲ ﺑﺪون w
wﺻﻔﺮ و ﻳﻚ
اﺳﺘﻔﺎده ﻗﺮار ﮔﻴﺮد ﻳﻚ ﻋﺪد ﺗﺴﺎوي از ﻧﻮع اﻋﺸﺎري ﺑﻴﻦ
wﻋﺪد ﺗﺼﺎدﻓﻲ
ﺗﻮﻟﻴﺪ ﻣﻲ ﻛﻨﺪ و اﮔﺮ ﺑﻪ ﺷﻜﻞ دو ﺑﻜﺎر رود ﺑﺎﻋﺚ ﺗﻮﻟﻴﺪ ﻳﻚ
ﺧﻮاﻫﺪ ﺷﺪ.
ﻛﻮﭼﻜﺘﺮﺮ از xاﺳﺖ ﻮ
ﺻﻔﺮ و ﻮﭼ
ﻣﺴﺎوي ﺮ
ي
ﺑﺰرﮔﺘﺮ ﻳﺎ
ﻮع wordﻛﻪ ﺑﺰ ﺮ
از ﻧﻮع
: ﻣﺜﺎﻝ
Var
i : integer ;
Begin
For i : = 1 to 10 do
B i
Begin
Writeln ( Random : 8 : 7 ) ;
Writeln ( Random ( 20 ) : 8 ) ;
End ;
End .
m
o
c
*
b
e
u
w
w
w
n
*p
، ﻋﺪد ﺗﺼﺎدﻓﻲ ﺑﻴﻦ ﺻﻔﺮ و ﻳﻚ10
. ﺗﻮﻟﻴﺪ ﻧﻤﺎﻳﺪ40 و0 ﺗﺼﺎدﻓﻲ ﺑﻴﻦ
ﻋﺪد ﺗﺼﺎدﻓ10 و
: ﺧﺮﻭﺟﻲ
ﺗﺎﺑﻊ Round
ﺑﻊ
ﺑﻜﺎر ﻣﻲ رود.
اﻋﺸﺎري ﻜﺎ
اﻋﺪاد ا ﺸﺎ
ﻛﺮدن ا ﺪا
mﻛ ن
ﺑﺮاي ﮔﮔﺮد
ﻫﺪف :ا
ﺪف
o
c
*
b
Function Round ( x: Real ): Longint
;
ﺷﮑﻞ ﺗﺎﺑﻊ:
ﺷ ﻞ
e
u
n
*p
wﻳﻚ ﻋﺪد ازﻧﻮع Longint
Xﻳﻚ ﻋﺒﺎرت ﻳﺎﻣﺘﻐﻴﺮ اﻋﺸﺎري ﺑﻮده وﺧﺮوﺟﻲ ﺗﺎﺑﻊ
ﻣﻘﺪار
ﻧﺰدﻳﻜﺘﺮﻳﻦ ﻘﺪا
ﺗﺎﺑﻊ wXراا ﺑﻪﻪ ﻧﺰ ﻜﺘ
ﺑﺎﺷﺪ .ااﻳﻦ ﺗﺎ
ﻛﺮدن Xﻣﻲ ﺎﺷﺪ
ﺑﺎﺷﺪ ﻛﻪ ﻧﺘﻧﺘﻴﺠﻪﻪ ﮔﮔﺮد ﻛ ن
ﻣﻲ ﺎﺷﺪ
w
ﺻﺤﻴﺢ ﮔﺮد ﻣﻲﻛﻨﺪ.
:ﻝ
ﻣﺜﺎﻝ
i : = Round ( 57.4 )
{ i = 57 }
i : = Round
ou d ( 17.45
7. 5 )
{ i = 188 }
i : = Round ( -2.5 )
{ i = -3 }
m
i : = Round ( 59.5 )
{ i = 60 } o
c
*
b
i : = Round ( 12.7 )
{e
i = 13 }
u
n
i : = Round ( 12.25*)p
{ i = 12 }
w
i : = Round (w
17 75 )
17.75
{ i = 18 }
w
ﺗﺎﺑﻊ sqr
ﺗﺎ
m
o
ﺑﻜﺎر ﻣﻲرود.
اﻋﺸﺎري ﻜﺎ
ﻚ ﻋﺪد ﺻﺤﻴﺢ ﻳﺎﺎ ا ﺎ
ﻣﺠﺬور ﻳﻚ
ﻣﺤﺎﺳﺒﻪ ﺬ
ﺑﺮاي ﺎ
ﻫﺪف :ا
ف
ﺷﮑﻞ ﺗﺎﺑﻊ:
; F nction sqr ( x:: Integer ): Integer
Function
; Function sqr ( x: Real ): Real
c
*
b
e
u
n
*p
w
w
Xﻋﺒﺎرﺗﻲ ﻳﺎ ﻣﺘﻐﻴﻴﺮي از ﻧﻮع ﺻﺤﻴﺢ ﻳﺎ اﻋﺸﺎري ﺑﻮده و ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﻓﻴﺰﻳﻚ
ﺧﺮوﺟﻲ ﺑﺮ
ﺑﻌﻨﻮان ﺧ
را ﻨ ان
ﻣﺠﺬور Xا
ﺗﺎﺑﻊ ﺬ
ﺎﺷﺪ ااﻳﻦ ﺗﺎ
اﻋﺸﺎري ﻣﻲ ﺑﺎﺷﺪ
ﻋﺪد ﺻﺤﻴﺢ ﻳﺎﺎ اﻋﺸﺎ
ﻚ ﻋﺪ
ﻳﻚ
ﻣﻲﮔﺮداﻧﺪ.
w
: ﻣﺜﺎﻝ
Var
m
o
i : integer ;
Begin
F
For
i : = 1 to
t
10 do
d
Writeln ( ' I ^ 2 = ' , sqr ( I ) ) ;
End .
c
*
b
e
u
w
w
w
n
*p
ﺗﺎﺑﻊ sqrt
ﻣﻴﺮود.
ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﺟﺬر ﻳﻚ ﻋﺪد ﺑﻜﺎر ﺮ
ﻫﺪف :ﺮ
m
o
c
*
Function sqrt ( x: Real ): Real ;eb
ﺷﻜﻞ ﺗﺎﺑﻊ:
u
n
*p
w
ﻓﻴﺰﻳﻚ ﻋﺪد اﻋﺸﺎري
ري
ﻴﺰﻳ
ﺑﻮده و ﺧﺮوﺟﻲ
ري ﺑﻮ
ﻮع اﻋﺸﺎري
ﻋﺒﺎرت ازز ﻧﻮع
Xﻳﻳﻚ ﺒ ر
ﺮوﺟﻲ ﺗﺎﺑﻊﺑﻊ w
ﻣﻲﺑﺎﺷﺪ اﻳﻦ ﺗﺎﺑﻊ ﺟﺬر Xرا ﺑﻌﻨﻮان ﺧﺮوﺟﻲ ﺑﺮ ﻣﻲﮔﺮداﻧﺪw.
: ﻣﺜﺎﻝ
Var
m
o
Y , X : Real ;
Begin
Y : = sqrt ( 64 ) ;
{y=8}
Z : = sqrt ( 0.16 ) ;
{ z = 0.4 }
Write ( ' x = ' , x : 8 : 2 , ' y = ' , y : 8 : 2 ) ;
End .
c
*
b
e
u
w
w
w
n
*p
ﺗﺎﺑﻊ succ
ﺑﻊ
m
o
ﮔﺮداﻧﺪ.
ﻓﻌﻠﻲ راا ﺑﺮﻣﻲ ﮔ اﻧ
ﻣﻘﺪار ﻓ ﻠ
ﻣﻘﺪار ﺑﻌﺪ از ﻘ ا
ﻫﺪف :ﻘ ا
ف
c
*
b
e
Function succ ( x ): same type
ﺷﻜﻞ ﺗﺎﺑﻊof parameters ; :
u
n
*p
w
ﻧﻴﺰ ازز ﻫﻤﺎن
ﺑﻊ ﻴﺰ
ﺮوﺟﻲ ﺗﺎﺑﻊ
ﺧﺮوﺟﻲ
اوﻟﻴﻦ و ﻴﺮ
ﺻﺤﻴﺢ ،و ﻴﻦ
ﻴﺢ
ﻧﻮع
از ﻮع
ﻋﺒﺎرت ز
Xﻳﻳﻚ ﺒ ر
ﻏﻴﺮه ﺑﻮﺑﻮده وw
ﻧﻮع Xﻣﻲ ﺑﺎﺷﺪ اﻳﻦ ﺗﺎﺑﻊ ﻣﻘﺪار ﺑﻌﺪ از Xرا ﺑﻌﻨﻮان w
ﺧﺮوﺟﻲ ﺑﺮ ﻣﻲﮔﺮداﻧﺪ.
: ﻣﺜﺎﻝ
ch : = suce ( ' a ' )
{ ch = ' b ' }
ch : = suce ( ' A ' )
{ ch = ' B ' }
i : = suce ( 15 )
n
*p
c
*
b
e
u
m
o
{ i = 16 }
flag : = suce ( false )
w { flag = True }
flag : = suce ( True )
{ } ﺗﻌﺮﻳﻒ ﻧﺸﺪه
w
w
ﺑﻊ Trunc
ﺗﺎﺑﻊ
m
o
ﮔﺮداﻧﺪ.
را ﺑﺮ ﻣﻲﮔ ا
اﻋﺸﺎر ا
ﻚ ﻋﺪد ا ﺎ
ﻫﺪف :ﻗﻗﺴﻤﺖ ﺻﺤﻴﺢ ﻳﻚ
ف
c
*
b
e
Function Trunc ( x: Real ): Longint
;
ﺷﻜﻞ ﺗﺎﺑﻊ:
u
n
*p
Xﻳﻚ ﻋﺒﺎرت ﻳﺎ ﻣﺘﻐﻴﺮ از ﻧﻮع اﻋﺸﺎري ﺑﻮده و w
ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﻳﻚ ﻋﺪد از ﻧﻮع
w
اﻋﺸﺎري Xراا ﻨ ان
ﺑﻌﻨﻮان
ﻋﺪد اﻋﺸﺎ
ﻗﺴﻤﺖ ﺻﺤﻴﺢ ﻋﺪ
ﺗﺎﺑﻊ ﻗ ﺖ
ﺑﺎﺷﺪ .ااﻳﻦ ﺗﺎ
Longintﻣﻲ ﺎﺷﺪ
w
ﺧﺮوﺟﻲ ﺑﺮ ﻣﻲﮔﺮداﻧﺪ.
: ﻣﺜﺎﻝ
m
o
Var
x , i , j : Longint ;
Begin
i : = trunc ( 12.5 ) ;
{ i = 12 }
j : = trunc ( 12.4 ) ;
{ i = 12 }
k : = trunc ( 13.5
13 5 ) ;
{ k = 13 }
Writeln ( ' I = ' , i : 5 , ' j = ' , j : 5 , ' k = ' , k : 5 ) ;
End .
c
*
b
e
u
w
w
w
n
*p
ﺗﻮﺍﺑﻊ ﺍﺯ ﻧﻮﻉ ﮐﺎﺭﺍﮐﺘﺮي
ﺩﺭ ﺍﻳﻦ ﺑﺨﺶ ﺗﻮﺍﺑﻌﻲ ﺭﺍ ﺑﺮﺭﺳﻲ ﻣﻲ ﮐﻨﻴﻢ ﮐﻪ ﺧﺮﻭﺟﻲ ﺁﻧﻬﺎ ﺍﺯ ﻧﻮﻉ ﮐﺎﺭﺍﮐﺘﺮي
ﺑﺎﺷﺪ.
m
chr
ﺗﺎﺑﻊ
o
c
*
ﮔﺮداﻧﺪ.
را ﺑﺮ ﻣﻲﮔ ا
اﺳﻜﻲ ا
bا ﻜ
ﻚ ﻛﻛﺪ
ﻛﺎراﻛﺘﺮي ﻳﻚ
ل ﻛﺎ اﻛ
ﻣﻌﺎدل
ﻫﺪف :ﺎ
ف
e
u
n
Function chr ( X: Byte ): char
;
ﺷﮑﻞ ﺗﺎﺑﻊ:
p
*
w
w
ﻛﺎرﻛﺘﺮ ﻣﻲ ﺎﺑﺎﺷﺪ.
ﻳﻚ ﻛﺎ ﻛ
ﻚ
ﻳﻚ ﺎ
Xﻚ
ﻋﺒﺎرت ﻳﺎﺎ ﻣﺘﻐﻴﺮ ااز ﻧﻮع ﺎﺑﺎﻳﺖ ﺑﻮده و ﺧﺮوﺟﻲ ﺎﺗﺎﺑﻊ w
اﻳﻦ ﺗﺎﺑﻊ ﻛﺪ اﺳﻜﻲ را درﻳﺎﻓﺖ ﻛﺮده و ﻣﻌﺎدل ﻛﺎرﻛﺘﺮي آن را ﺑﺮ ﻣﻲﮔﺮداﻧﺪ.
: ﻣﺜﺎﻝ
m
o
Var
i : Byte ;
Begin
For
End .
c
*
b
i : = 65 to 91 do
e
Writeln ( chr ( I ) u
) ;
n
*p
w
w
w
: ﺧﺮوﺟﻲ
. را در ﺧﺮوﺟﻲ ﭼﺎپ ﻣﻲﻛﻨﺪZ ﺗﺎA ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ ﺣﺮوف
ﺗﺎﺑﻊ Upcase
m
o
ﺑﮑﺎﺭ ﻣﻲﺭﻭﺩ.
ﺑﺰﺭﮔﺘﺮ ﮑﺎ
ﻑ ﮔ
ﮐﺎﺭﺍﮐﺘﺮ ﺑﻪ ﺣﺮﻑ
ﮏ ﮐﺎ ﺍﮐ
ﻞ ﻳﮏ
ﺑﺮﺍي ﺗﺒﺪﻳﻞ
ﻫﺪﻑ :ﺍ
ﻑ
c
*
b
e
; Function Upcase ( ch: charu): char
ﺷﮑﻞ ﺗﺎﺑﻊ:
n
*p
chﻳﻚ ﻋﺒﺎرت ﻳﺎ ﻣﺘﻐﻴﺮ از ﻧﻮع ﻛﺎراﻛﺘﺮ ﺑﻮده و w
ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﻓﻴﺰﻳﻚ ﻛﺎراﻛﺘﺮي
ﺧﺮوﺟﻲ
ﺑﻌﻨﻮان ﺧ وﺟ
ﻛﺮده و ﺑﻌﻨ ان
wﻛ ده
ﺑﺰرگ ﺗ ﺪﻳﻞ
ﺗﺒﺪﻳﻞ
ﺣﺮف ﺑﺰ گ
را ﺑﻪ ﺣ ف
ﻛﻮﭼﻚ ا
ﺣﺮف ﻛ ﭼﻚ
ﺑﺎﺷﺪ اﻳﻦ ﺗﺎﺑﻊ ﺣ ف
w
ﺣﺮوف ﺑﺰرگ را ﺑﺮ ﻣﻲﮔﺮداﻧﺪ.
Var
: ﻣﺜﺎﻝ
Sent:
S
t array [ 1..
1 80 ] off char
h ;
i , N: Byte ;
m
o
Begin
Write ( ' enter Numbers: ' ) ;
Readln ( N ) ;
For i: = 1 to N do
Read ( Sen [ i ] ) ;
Writeln ;
F
For
i:
i = 1 to
t
N d
do
If ( sen [ i ] > = ' a ' ) and ( sen [ i ] < = ' z ' ) Then ;
sen [ i ]: = Upcase ( sen [ i ] ) ;
Writeln ( ' Out pot of program ' ) ;
For i: = 1 to N do
Writeln ( sen [ i ] ) ;
End. { End of program }
c
*
b
e
u
w
w
w
n
*p
ﺭﻭﺍﻝﻫﺎي ﺍﺳﺘﺎﻧﺪﺍﺭﺩ
m
o
در ﺑﺨﺶ ﻫﺎي ﻗﺒﻞ دﻳﺪﻳﺪ ﻛﻪ در ﺗﻮاﺑﻊ ﭘﺎراﻣﺘﺮﻫﺎ ﺑﻪ ﺗﺎﺑﻊ ارﺳﺎل ﻣﻲ ﺷﻮد و ﺗﺎﺑﻊ ﻧﻴﺰ
ﻣﻘﺪاري را ﺑﻌﻨﻮان ﺧﺮوﺟﻲ ﺑﺮﻣﻲﮔﺮداﻧﺪ رواﻟﻬﺎ ﻧﻴﺰ ﻣﺸﺎﺑﻪ ﺗﻮاﺑﻊ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ ﺑﺎ
ﻲﺷﻮد ﻳﺎ اﻋﻼن ﺑﻪ
ﻲﮔﺮداﻧﺪه ﻣﻲ
ﻲ رواﻟﻬﺎ از ﻃﺮﻳﻖ ﭘﭘﺎراﻣﺘﺮ ﺑﺮﻣﻲ
ﻦ ﺗﻔﺎوت ﻛﻪ ﺧﺮوﺟﻲ
اﻳﻦ
ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﻣﻲﺑﺎﺷﺪ .ﺑﻨﺎﺑﺮاﻳﻦ رواﻟﻬﺎ ﺑﺪون ﻧﻮع ﻫﺴﺘﻨﺪ.
c
*
b
e
u
n
*p
ﺑﺎﺷﺪ:
ت ززﻳﺮ ﻣﻲ ﺎﺷﺪ
روالﻫﺎﺎ ﺑﺼﻮرت
ﻛﻠﻲ ال
ﺷﻜﻞ ﻛﻠ
Name
N
( Parametu
P
P
Procedure
d
ﭘﺎﺭﺍﻣﺘﺮﻫﺎي ﺍﻝ
ﺭﻭﺍﻝ
ﺎ ﺍ ﺘ ﻫﺎي
w
w
w
ﺍﺍﺳﻢ ﺍﻝ
ﺭﻭﺍﻝ
ﺷﺪﻩ
ﺫﺧﻴﺮﻩ ﺷﺪ
ﮐﻠﻤﻪ ﺫﺧ
ﮐﻠ ﻪ
ﺭﻭﺍﻝ Dec
ﺭﻭ ﻝ
ارﺳﺎﻟﻲ ﻛﻛﻢ ﻣﻲ ﻛﻨﺪ.
ﭘﺎراﻣﺘﺮ ا ﺎﻟ
ﺪ از ﺎ ا
واﺣﺪ
ﻨﺪ ا
ﭼﻨﺪ
ﻫﺪف :ﻳﻚ
ﺪف
ﻚ ﻳﺎﺎ m
o
c
*
b
ﺷﮑﻞ ﺭﻭﺍﻝ:
e
Procedure Dec ( Var X: longint ) ;u
Procedure Dec ( Var X: longintn
; ) , N: longint
p
*
w
ﻦ روال
ﻲﺑﺎﺷﺪ اﻳﻦ
ﻣﺘﻐﻴﺮي ﻣﻲ
Xﻳﻚ ﻣﺘﻐﻴﺮ از ﻧﻮعع longintو ﺑﺼﻮرت w
w
ﻳﻚ واﺣﺪ از ﭘﺎراﻣﺘﺮ ارﺳﺎﻟﻲ ﻛﻢ ﻣﻲﻛﻨﺪ.
: ﻣﺜﺎﻝ
Var
m
o
N : integer
g
c
*
b
e
u
Begin
N : = 1201 ;
Dec ( N ) ;
{ N = 1200 }
Writeln ( N ) ;
Dec ( N , 200 ) ;
{ W = 1000 }
Writeln ( N ) ;
End .
w
w
w
n
*p
ﻝ Exit
ﺭﻭﺍﻝ
ﺭﻭ
m
o
ﻘﻞ ﻣﻲ ﻛﻛﻨﺪ.
ﺟﺎري ﻣﻨﺘﻘﻞ
ك ﺎ
ﺧﺎرج از ﻠﺑﻠﻮك
ﺑﺮﻧﺎﻣﻪ راا ﺑﻪ ﺧﺎ
ل ﻧﺎ
ﻫﺪف :ﻛﻛﻨﺘﺮل
ف
c
*
b
e
u
n
p
*
اﻳﻦ روال ﺑﺎﻋﺚ ﻣﻲ ﺷﻮد ﻛﻪ ﻛﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ از ﺑﻠﻮك ﺟﺎري ﺧﺎرج ﺷﻮد .اﮔﺮ اﻳﻦ
w
ﻣﻲﺷﻮد .و اﮔﺮ در ﻳﻚ
روال در ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﺑﻜﺎر رود ﺑﺎﻋﺚ ﺧﺮوجج از ﺑﺮﻧﺎﻣﻪw
wﻛﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ ﺑﻪ
روال ﻳﺎ ﺗﺎﺑﻊ ﺑﻜﺎر رود ﺑﺎﻋﺚ ﺧﺮوج از روال ﻳﺎ ﺗﺎﺑﻊ ﺷﺪه و
ﺷﻜﻞ روال:
ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﻣﻨﺘﻘﻞ ﻣﻲﺷﻮد.
; Procedure Exit
: ﻣﺜﺎﻝ
Var
g ;
i , j : integer
Begin
i : = 100 ;
j : = 20 ;
Dec ( i , j ) ;
Write ( i ) ;
Exit ;
End .
m
o
c
*
b
e
u
w
w
w
n
*p
: ﺧﺮﻭﺟﯽ
. ﺑﺎﻋﺚ ﺧﺮوج از ﺑﺮﻧﺎﻣﻪ ﻣﻲ ﺷﻮدExit ﺑﻌﺪ از اﺗﻤﺎم ﻋﻤﻠﻴﺎت ﺗﺎﺑﻊ
ﻝ Halt
ﺭﻭﺍﻝ
ﺭﻭ
m
o
ﺑﺮﻧﺎﻣﻪ
اﺟﺮاي ﻧﺎ
دادنن ﺑﻪ ا ا
ﺧﺎﺗﻤﻪ ا
ﻫﺪف :ﺧﺎﺗ
ف
ﺷﻜﻞ روال:
c
*
b
e
u
n
*p
; Procedure Halt
w
ﻢ ﻋﺎﻣﻞ ﺑﺮ
wﺑﻪ ﺳﻴﺴﺘﻢ
اﻳﻦ روال ﺑﺎﻋﺚ ﺧﺎﺗﻤﻪ اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﺷﺪه و ﻛﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ
w
ﻣﻲﮔﺮدد.
ﺭﻭﺍﻝ Inc
m
o
ﻫﺪف :اﺿﺎﻓﻪ ﻛﺮدن ﻳﻚ ﻳﺎ ﭼﻨﺪ واﺣﺪ ﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮ
c
ﻊ:
ﺷﻜﻞ ﺗﺎﺑﻊ
ﻞ
*
P
Procedure
d
IInc ( V
Var X
X: llongint
i t) b
e
u
Procedure Inc ( Var X: longint
; ) , N: longint
n
*p
w
ﻦ روال ﺑﻪ ﻣﻘﺪار ﻣﺘﻐﻴﺮﺮ
اﻳﻦ
ﻮع Longintﻲ
ﻣﺘﻐﻴﺮ از ﻧﻮع
Xﻳﻚ ﻋﺒﺎرت ﻳﺎ ﺮ
ﻣﻲ ﺑﺎﺷﺪw
w
xﻳﻚ ﻳﺎ ﭼﻨﺪ واﺣﺪ اﺿﺎﻓﻪ ﻣﻲﻛﻨﺪ.
: ﻣﺜﺎﻝ
Var
N , i , j : integer ;
B i
Begin
i : = 100 ;
j : = 200 ;
N : = 10 ;
inc ( i ) ;
{ i = 101 }
inc ( j , N ) ;
{ j = 210 }
Writeln (' i = ' , i , ' j = ' , j ) ;
End .
c
*
b
e
u
m
o
w
w
w
n
*p
ﺭﻭﺍﻝ Randomize
ﺭﻭ ﻝ
m
o
ﺷﻮد.
ﺗﺼﺎدﻓﻲ ﻣﻲ ﺷ
اﻋﺪاد ﺗ ﺎ ﻓ
ﺗﻮﻟﻴﺪ ا ا
ﺗﻐﻴﺮ ﻧﻧﺤﻮه ﺗ ﻟ
ﺚ ﺗﻐ
ﻫﺪف :ﺎﺑﺎﻋﺚ
ف
c
*
b
e
Procedure Randomize ; u
ﺷﻜﻞ روال:
n
p
*
وﻗﺘﻲ در ﺑﺮﻧﺎﻣﻪ از ﺗﺎﺑﻊ Randomاﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ اﻋﺪاد ﺗﺼﺎدﻓﻲ ﺗﻮﻟﻴﺪ ﺷﺪه
w
wاﻳﻦ وﺿﻌﻴﺖ ﻗﺒﻞ از
در اﺟﺮاﻫﺎي ﻣﺨﺘﻠﻒ ﻳﻜﺴﺎن ﻣﻲ ﺑﺎﺷﺪ ﺑﺮاي ﺟﻠﻮﮔﻴﺮي از
اﺳﺘﻔﺎده از ﺗﺎﺑﻊ Randomروال Rondomizeرا ﺑﻜﺎرw
ﻣﻲﺑﺮﻳﻢ .ﺗﺎ ﺑﺎﻋﺚ
ﺗﻮﻟﻴﺪ اﻋﺪاد ﺗﺼﺎدﻓﻲ ﻣﺘﻔﺎوت در اﺟﺮاﻫﺎي ﻣﺨﺘﻠﻒ ﮔﺮدد.
: ﻣﺜﺎﻝ
m
o
Var
i : word ;
c
*
b
Randomize;
e
For i : = 1 to 10 u
do
n
Writeln ( Random
( 50 ) ) ;
p
*
End .
w
w
w
Begin
ﻧﻮﻳﺴﻲ
ﺑﺮﻧﺎﻣﻪ ﻮﻳ ﻲ
ﻝ ﺑﺮ
ﭼﻨﺪ ﻣﺜﺎﻝ
ﺣﻞ ﭼ
ﻞ
ﻣﺜﺎل :ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻣﺮﺑﻊ ( n < = 10 ) n * n
ﺑﻊ ﻛﺎﻣﻞ
ي ﻛﻪ ﻣﻣﺮﺑﻊ
ﻋﻨﺎﺻﺮي
ده آﻧﮕﺎه ﻋﻨﺎﺻ
ﻳﺎﻓﺖ ﻛﻛﺮده
ودي ددرﻳﺎﻓﺖ
را از وورودي
ﺻﺤﻴﺢ ا
ﻣﻘﺎدﻳﺮ ﺻﺤ ﺢ
از ﻣﻘﺎدﻳ
ﻧﻴﺴﺘﻨﺪ را ﺻﻔﺮ ﻛﺮده و در ﻧﻬﺎﻳﺖ ﻣﺎﺗﺮﻳﺲ ﺣﺎﺻﻞ را در ﺧﺮوﺟﻲ ﭼﺎپ ﻣﻲ ﻛﻨﺪ.
m
o
c
*
b
e
u
Var
n
*p
n , i , j : integer
; a : array [ 1 .. 10 , 1 .. 10 ] of integer
Begin
; ) ' Write ( ' enter Number :
For i : = 1 to N do
For j : = 1 to N do
; ) ] Readd ( a [ i , j
w
w
w
For i : = 1 to N do
For j : = 1 to N do
If a [ i , j ] sqr ( Trunc (sqrt (Abs ( a[ i , j ] ))) ) < > 0 Then
a[i,j]:=0 ;
Writeln ( ' The oupput Mafrix ' ) ;
For i : = 1 to N do
Begin
For j : = 1 to N do
Write ( a [ i , j ] : 5 ) ;
Writeln ;
End ;
E d . { End
End
E d off program }
m
o
c
*
b
e
u
w
w
w
n
*p
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﺟﻤﻠﻪ از ورودي درﻳﺎﻓﺖ ﻛـﺮده ﺳـﭙﺲ ﺣـﺮوف: ﻣﺜﺎل
.ﺑﺰرگ ﺟﻤﻠﻪ را ﺑﻪ ﺣﺮوف ﻛﻮﭼﻚ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ
Var
sen : array [ 1 .. 80 ] of char ; Ch : char ; i : word ;
Begin
m
o
Write ( ' enter sentence ' ) ;
Repeat
Read ( sen [ i ] ) ;
I (i) ;
Inc
Until sen [ i ] = ' . ' ;
Writeln ;
n : = Dec ( i ) ;
For i : = 1 to n do
If ( sen [ i ] > = ' A ' ) and ( sen [ i ] < = ' B ' ) Then
sen [ i ] = chr ( ord ( sen [ i ] ) + ( ord ( ' a ' ) – ord ( ' A ' )) )
Writeln ( ' The result sentence ' ) ;
For i : = 1 to n do
Write ( sen [ i ] ) ;
End . { End of program }
c
*
b
e
u
w
w
w
n
*p
ﺗﻤﺮﻳﻨﺎﺕ
ﺮﻳ
a)
Var
i , j : integer
:ﺧﺮوﺟﻲ ﺗﻤﺮﻳﻨﺎت زﻳﺮ را ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ.1
Begin
i : = 100 ; j : = 20 ;
inc ( i ) ;
D ( j , 10 ) ;
Dec
inc ( i , j ) ;
Writeln ( i : 5 , j : 5 ) ;
End .
b)
Var
y : integer ;
Begin
y : =Round
Ro nd ( 18.31
18 31 ) MoD 5 ;
Writeln ( y ) ;
End .
m
o
c
*
b
e
u
w
w
w
n
*p
:ﺧﺮﻭﺟﻲ ﺩﺳﺘﻮﺭﺍﺕ ﺯﻳﺮ ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﺋﻴﺪ.2
a)
c
*
b
e
u
m
o
Ch: = ' A ' ;
Ch = chr
Ch:
h ( ordd ( chh ) + 3 ) ;
Write ( ch ) ;
b)
w
X: = 12 ;
Succ ( x ) ;
Ch: = ' B ' ;
Pred ( ch ) ;
Write ( x , ch ) ;
w
w
n
*p
ﻧﻮﻳﺴﻲ
ﺑﺮﻧﺎﻣﻪﻧﻮﻳ
ﺗﻤﺮﻳﻨﺎﺕ ﺑ ﻧﺎﻣﻪ
ﺗﻤ ﻳﻨﺎﺕ
m
o
-1ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﻌﺪاد 1000ﺷﻤﺎره ﺣﺴﺎب ﺑـﺎﻧﻜﻲ 7رﻗﻤـﻲ ﺑﻄـﻮر
ﺗﺼﺎدﻓﻲ ﺑﻴﻦ 5119432و 9981711را ﺗﻮﻟﻴﺪ ﻛﺮده و ﭼﺎپ ﻛﻨﺪ.
c
*
b
eﻋﺪد ﺗﺼﺎدﻓﻲ ﺻﺤﻴﺢ ﺑﻴﻦ 10ﺗﺎ 99راﺗﻮﻟﻴﺪ
-2ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﺗﺎ ﺗﻌﺪاد 38
u
پ ﻛﻨﺪ.
ﭼﺎپ
ﻧﻤﺎﻳﺶ ﭼ
ﻣﺮﺑﻊ ووﺳﻂ ﺻﻔﺤﻪ ﻳﺶ
ﺮﺑﻊ
ﺷﻜﻞ
ﺧﺮوﺟﻲ ﺑﺑﻪ ﻞ
در ﺮوﺟﻲ
ﺳﭙﺲ آن ررا ر
ﻛﺮده ،ﭙﺲ
ﺮ
n
*p
w
-3ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد 220رﻗﻤﻲ از w
ورودي درﻳﺎﻓﺖ ﻛﺮده آن
را در ﻳﻚ ﻋﺪد ﺗﻚ رﻗﻤﻲ ﺿﺮب ﻧﻤﻮده و ﺣﺎﺻﻞ را در w
ﺧﺮوﺟﻲ ﭼﺎپ ﻧﻤﺎﺋﻴﺪ.
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﺍﻃﻼﻋﺎﺕ)ﮔﺮﻭﻩ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﻓﺼﻞ 8
ﻣﺘﻐﻴﺮﻫﺎي ﻛﺎﺭﺍﻛﺘﺮي ﻭ ﺭﺷﺘﻪﻫﺎ)(String
m
o
c
*
b
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﻓﺎ
e
u
n
p
*
ﺑﺮرﺳﻲ ﺳﺎﺧﺘﺎر آراﻳﻪ ﻫﺎﻳﻲ از ﻧﻮع ﻛﺎراﻛﺘﺮ
ﻣﻌﺮﻓﻲ ﻧﻮع دادة ﺟﺪﻳﺪ ﺑﻪ ﻧﺎم رﺷﺘﻪw
ﻣﻘﺎﻳﺴﻪ آآراﻳﻪ اي از ﻛﺎراﻛﺘﺮ و رﺷﺘﻪ w
w
ﺷﻨﺎﺧﺖ ﺗﻮاﺑﻊ و رواﻟﻬﺎي اﺳﺘﺎﻧﺪارد ﺑﺮاي رﺷﺘﻪ ﻫﺎ
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي÷ﻓ ﺎ
ﻓﺎ
oﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
mاز
داﻧﺸﺠﻮ ﭘﺲ
c
*
ﺑﻜﺎر ﺑﺒﺮد.
ﺑﺮﻧﺎﻣﻪ ﻜﺎ
bﺎ
را در
ﻛﺎراﻛﺘﺮﻫﺎ ا
آراﻳﻪااي ااز ﻛﺎ اﻛ ﺎ
آ ا
e
u
ﻛﺎراﻛﺘﺮﻫﺎ ارا ﺎﺑﺎ رﺷﺘﻪ n
pﻛﻨﺪ.
ﺷﺘﻪ ﻘﺎ ﻪ
ﻣﻘﺎﻳﺴﻪ
آراﻳﻪااي از ﻛﺎ اﻛﺘ ﺎ
آ اﻪ
*
w
ﻏﻴﺮه را ﺑﺎ اﺳﺘﻔﺎده از آراﻳﻪاي از w
ﻣﺮﺗﺐ ﻧﻤﺎﻳﺪ.
رﺷﺘﻪ ﻣ ﺗﺐ
اﻓﺮاد و ﻏ ه
اﺳﻤﻲ اﻓ اد
اﺳﻤ
w
ﺗﻮاﺑﻊ و رواﻟﻬﺎي اﺳﺘﺎﻧﺪارد ﻣﺮﺑﻮط ﺑﻪ رﺷﺘﻪﻫﺎ را در ﺑﺮﻧﺎﻣﻪ ﺧﻮد ﺑﻜﺎر ﺑﺒﺮد.
ﻣﺘﻐﻴﺮﻫﺎﻳﻲ ﺍﺯ ﻧﻮﻉ ﮐﺎﺭﺍﮐﺘﺮ
m
o
ﻣﺘﻐﻴﺮﻫﺎي ﻛﺎراﻛﺘﺮي ﻇﺮﻓﻴﺖ ﭘﺬﻳﺮش ﻳﻚ ﻛﺎراﻛﺘﺮ ) ﺷﺎﻣﻞ ﻳﻚ رﻗﻢ ،ﻳﻚ ﺣﺮف از
ﺣﺮوف و ﻳﺎ ﻳﻚ ﻛﺎراﻛﺘﺮ دﻳﮕﺮ ( را دارا ﻣﻲﺑﺎﺷﻨﺪ.
ﻣﻘﺪار دﻫﻲ اﻳﻦ ﻣﺘﻐﻴﺮ ﻫﺎ ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ :
c
*
b
e
u
n
*p
; ' ch: = ' A
w
w
اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﻣﺘﻐﻴﺮ ﻫﺎي ﻛﺎراﻛﺘﺮي را از ورودي ﺑﺨﻮاﻧﻴﻢ ﺑﺎﻳﺪ دﻗﺖ ﺑﻴﺸﺘﺮي ﺑﻪ
ﻛﺎراﻛﺘﺮ ﻣﺤﺴﻮب ﻣﻲ ﺷﻮﻧﺪ.
ﺧﺎﻟﻲ ﻛﺎ اﻛ
ﻓﻀﺎﻫﺎي ﺎﻟ
اﻳﻨﻜﻪ ﻓ ﺎ ﺎ
ﺑﺮاي ا ﻜ
ﺧﺮج دﻫﻴﻢ ا
w
ﺧﺮﻭﺟﻲ ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﺭﺍ ﺗﻌﻴﻴﻦ ﮐﻨﻴﺪ.
ﻣﺜﺎﻝ :ﺧﺮﻭﺟ
m
o
; ' Ch: = ' A
; ' C: = ' a
If ch = c Then
) ' Writeln ( ' equal
Else
; ) ' Writeln ( ' Not equal
c
*
b
e
u
n
*p
w
w
w
اﺳﺖ::
ﺑﺼﻮرت ززﻳﺮ ا ﺖ
ت
ﺑﺎﻻ
ﺑﺮﻧﺎﻣﻪ ﺎﻻ
ﻗﻄﻌﻪ ﻧﺎ ﻪ
ﺣﺎﺻﻞ از ﻗﻄ ﻪ
ﺧﺮوﺟﻲ ﺎ ﻞ
ﺧ
Not equal
ﺩﺭﮐﻞ ﻣﻲﺗﻮﺍﻥ ﮐﺎﺭﺍﮐﺘﺮﻫﺎ ﺭﺍ ﺍﺯ ﻟﺤﺎﻅ ﺍﺭﺩﻳﻨﺎﻝ )ﻣﺮﺗﺒﻪ( ﺑﺼﻮﺭﺕ ﺯﻳﺮ
ﺩﺳﺘﻪﺑﻨﺪي ﮐﺮﺩ:
m
o
-1رﻗﻢ ﻫﺎ ﺑﺼﻮرت زﻳﺮ ﻣﻘﺎﻳﺴﻪ ﻣﻲﺷﻮﻧﺪ:
''0' < '1' < '2' < '3' < … < '9
ﮔﺮﻓﺘﻪاﻧﺪ.
ﻗﺮار ﮔ ﻓﺘ
ﭘﺸﺖ ﺳﺮ ﻫﻢ ﻗ ا
اﺳﻜﻲ ﺸﺖ
ﻟﺤﺎظ ﻛﺪ ا ﻜ
ﻫﺎ از ﻟ ﺎظ
رﻗﻢ ﺎ
ﻗ
c
*
b
e
u
n
-2ﺣﺮوف ﺑﺼﻮرت زﻳﺮ ﻣﻘﺎﻳﺴﻪ ﻣﻲ ﺷﻮﻧﺪ*p :
w
w
' B ' < … < ' Zw
''< … <'a' < 'b' < … < 'z
ﻣﺘﻐﻴﺮﻫﺎي ﺭﺷﺘﻪﺍي ) ( String
m
o
ﻧﻮع آن ا
را
ﻣﺘﻐﻴﺮ از ﻧ ع
ﻧﺎﻣﻴﺪه و ﺘﻐ
رﺷﺘﻪ ﻧﺎ ﺪ
ﻳﻚ ﺷﺘﻪ
را ﻚ
ﻛﺎراﻛﺘﺮ ا
ﻣﺠﻤﻮﻋﻪااي از ﻛﺎ اﻛﺘ
ﻋﻪ
ﺗﻌﺮﻳﻒ:
ﺗ ﻒ
ﻳﻚ ﻣﺘﻐﻴﺮ رﺷﺘﻪاي ﻣﻲﻧﺎﻣﻨﺪ.
c
*
b
e
ﻗﺴﻤﺖ ﺗﻌﺎرﻳﻒ ﻣﺘﻐﻴﺮﻫﺎ ) ( Varﻣﻌﺮﻓﻲ
اﻳﻦ ﻣﺘﻐﻴﺮ ﻧﻴﺰ ﻣﺎﻧﻨﺪ ﺳﺎﻳﺮ ﻣﺘﻐﻴﺮﻫﺎ در
u
ﻣﺸﺨﺺ ﻣﻲﻛﻨﻨﺪ.
ﻃﻮل آن راا ﺸﺨﺺ
ﻣﻌﻤﻮﻻ ﻃ ل
رﺷﺘﻪاي pnﻻً
ﻣﺘﻐﻴﺮ ﺷﺘﻪ
ﻳﻚ ﺘﻐ
ﺗﻌﺮﻳﻒ ﻚ
ﺷﻮد .ددر ﺗ ﻒ
ﻣﻲﺷ د
*
ﺣﺪاﻛﺜﺮ ﻃﻮل را ﺑﺮاي آن در ﻧﻈﺮ
اﮔﺮ ﻃﻮل ﺗﻌﻴﻴﻦ ﻧﺸﻮد ﺑﻄﻮر ﻗﺮاردادي ﻛﺎﻣﭙﺎﻳﻠﺮ w
ﻮل ررﺷﺘﻪ 255ر ﺮ
ﮔﻴﺮد .ﺣﺪاﻛﺜﺮﺮ ﻃﻮل
ﻲ ﻴﺮ
ﻣﻲ
ﻛﺎراﻛﺘﺮ ﻣﻲﻲﺑﺑﺎﺷﺪw .
w
ﻧﺤﻮﻩ ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺭﺷﺘﻪ ﺍي ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲﺑﺎﺷﺪ:
m
o
c
*
b
e
u
] [ length
: string
n
*p
ﻃﻮل رﺷﺘﻪ ﻛﻠﻤﻪ ذﺧﻴﺮه ﺷﺪهw
Name
w
اﺳﻢ رﺷﺘﻪ
w
:ﻣﺘﻐﻴﺮﻫﺎي ﺭﺷﺘﻪﺍي ﺭﺍ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲﺗﻮﺍﻥ ﻣﻘﺪﺍﺭﺩﻫﻲ ﮐﺮﺩ
Var
m
o
S : string [ 10 ] ;
.
.
.
Begin
n
*p
.
.
S : = ' pascal ' ;
Write ( s ) ;
.
.
w
w
w
End .
c
*
b
e
u
ﺑﺮﺍي ﺧﻮﺍﻧﺪﻥ ﻣﺘﻐﻴﺮﻫﺎيﺭﺷﺘﻪﺍي ﺍﺯﺩﺳﺘﻮﺭ Readﻳﺎ Readlnﺑﺼـﻮﺭﺕ
ﺯﻳﺮﻣﻲﺗﻮﺍﻥﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩ:
m
o
c
*
b
eاﮔﺮ ﻃﻮل رﺷﺘﻪ ورودي از ﻃﻮل ﺗﻌﺮﻳﻒ
ﻫﻨﮕﺎم ﺧﻮاﻧﺪن ﻣﺘﻐﻴﺮﻫﺎي رﺷﺘﻪاي
u
ﺗﻌﺮﻳﻒ ﺷﺪه ﺧﻮاﻧﺪه ﻣﻲ ﺷﻮد و اﮔﺮ ﻃﻮل
ﺷﺪه ﺑﻴﺸﺘﺮ ﺑﺎﺷﺪ ﻓﻘﻂ ﺑﻪ اﻧﺪازه ﻃﻮل
n
ﺑﺎﺷﺪ ،رﺷﺘﻪ ورودي در ﻣﻨﺘﻬﻲاﻟﻴﻪ
رﺷﺘﻪ ورودي ﻛﻤﺘﺮ از ﻃﻮل ﺗﻌﺮﻳﻒ ﺷﺪه *p
wرﺷﺘﻪ اي ﺑﺪون ﻣﺤﺘﻮا
ﺳﻤﺖ ﭼﭗ ﻣﺘﻐﻴﺮ رﺷﺘﻪاي ﻗﺮار ﮔﺮﻓﺘﻪ و ﺑﻘﻴﻪ ﻣﺘﻐﻴﺮ
w
ﻣﺎﻧﺪ،
ﺑﺎﻗﻲ ﻣﻲ ﺎ
ﺎﻗ
w
; ) Read ( s
Writeﺎ
ﻳﺎ
ﺍﺯﺩﺳﺘﻮﺭ W it
ﺭﺷﺘﻪﺍﺍي ﻧﻧﻴﺰﺰ ﺍﺯﺩ ﺘ
ﻣﺘﻐﻴﺮ ﺷﺘﻪ
ﮏ ﺘﻐ
ﭼﺎﭖ ﻳﮏ
ﺑﺮﺍي ﺎ
ﺍ
Writelnﻣﻲﺗﻮﺍﻥ ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩ:
m
o
c
*
b
e
u
n
*p
; ) Write ( s
w
w
ﻣﺜﺎل :ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺷﻤﺎره داﻧﺸﺠﻮﺋﻲ ،اﺳﻢ و ﻓﺎﻣﻴﻞ داﻧﺸﺠﻮﺋﻲ را
دﻫﺪ.
ﻧﻤﺎﻳﺶ ﻫﺪ
ﺧﺮوﺟﻲ ﻧ ﺎ ﺶ
درﻳﺎﻓﺖ ﻛﻛﺮده ﺳﭙﺲ در ﺧ
از ورودي ﺎﻓﺖ
w
Var
Name , family: string [ 40 ] ;
Id: longint
Begin
g
m
o
c
*
b
writeln ( ' Enter studente number ' ) ;
u
Readln ( Id ) ;
n
writeln ( ' Enter*p
Name ' ) ;
w) ;
Readln ( Name
writeln ( w
' Enter family ' ) ;
w
Readln ( family ) ;
w te ( ' Id
writeln
d
Na
Namee
Family
a y') ;
writeln ( Id: 7 , Name , Family ) ;
End.
ﺁﺭﺍﻳﻪﺍي ﺍﺯ ﺭﺷﺘﻪ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮﺩ:
m
o
c
*
bf string
Name : Array
A
[ 1 .. length ] eof
i
u
n
p
*
ﺍﺳﻢ ﺁﺭﺍﻳﻪ
ﻧﻮﻉ ﺭﺷﺘﻪ ﺍي
ﻃﻮﻝ ﺁﺭﺍﻳﻪ w
w
w
ﺑﺮاي ﺧﻮاﻧﺪن ﭼﻨﻴﻦ آراﻳﻪاي ﺑﺼﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ:
m
o
c
*
b
e
u
i : = 1 to 50 do
; ) ] Readln ( Name [ i
n
*p
ﺑﺼﻮرت::
ﺧﺮوﺟﻲ ﺼ ت
آراﻳﻪﻪ ددر ﺧ
ﺶآ ا
ﻧﻤﺎﻳﺶ
اي ﻧ ﺎ
ﺑﺮاي
w
w
w
i: = 1 to 50 do
) ] Writeln ( Name [ i
For
For
ﻧﻔﺮ ﺍﺯ ﻭﺭﻭﺩي ﺩﺭﻳﺎﻓﺖ ﮐﺮﺩﻩ ﻭ ﺁﻧﻬﺎ ﺭﺍ ﺑﺮﺣﺴﺐ10 ﺑﺮﻧﺎﻣﻪﺍي ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﺍﺳﻢ: ﻣﺜﺎﻝ
Var
.ﺣﺮﻭﻑ ﺍﻟﻔﺒﺎ ﻣﺮﺗﺐ ﻧﻤﺎﻳﺪ
Name : Arrayy [ 1 .. 10 ] of stringg [ 10 ] ;
string [ 10 ] ; temp : i , j : Byte;
Begin
writeln ( ' Enter Ten Names ' ) ;
for i : = 1 to 10 do
Readln ( Name [ i ] ) ;
for j : = 1 to 9 do
for j : = i +1 to 10 do
g
if Name [ i ] > Name [ j ] Then Begin
Temp : = name [ i ] ;
Name [ i ] : = Name [ j ] ;
Name [ j ] : = temp ;
End ; { sort Algrithm }
writeln ( ' The sorted list ' ) ;
for i : = 1 to 10 do
writeln ( Name [ i ] ) ;
end . { End of program }
m
o
c
*
b
e
u
w
w
w
n
*p
داﻧﺸﺠﻮﺋﻲ ﺣﺪاﻛﺜﺮﺮ 50
ﺷﻤﺎره د ﺠﻮ ﻲ
ﻓﺎﻣﻴﻠﻲ و ﻤ ره
اﺳﻢ ،ﻴ ﻲ
ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻢ،
اي ﺑ ﻮﻳ ﻴ
ﺑﺮﻧﺎﻣﻪ ي
ل :ﺑﺮ
ﻣﺜﺎل
داﻧﺸﺠﻮ را از ورودي درﻳﺎﻓﺖ ﻧﻤﺎﻳﺪ.
m
o
ﺧﻮاﻧﺪه ﺷﺪه ررا درر
اﺳﻢ ﻮ
ﺳﺎﻳﺮ اﻃﻼﻋﺎت ﻢ
ورودي ،ﻳﺮ
از ورو ي
اﺳﻤﻲ ز
ﺧﻮاﻧﺪن ﻲ
ﺳﭙﺲ ﺑﺑﺎ ﻮ
ﭙﺲ
ﺻﻮرت وﺟﻮد در ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ دﻫﺪ.
c
*
b
e
u
n
*p
Var
; ] Name , Family : array [ 1 .. 50 ] of string [ 30
; id : array [ 1 .. 50 ] of longint
; ] Nam : string [ 30
w
w
w
Begin
write ( ' Enter Number : ' ) ;
Readln ( N ) ;
for i : = 1 to N Do Begin
write ( ' Enter Name : ' ) ;
Readln ( Name ) ;
write ( ' Enter family : ' ) ;
Readln ( family ) ;
write ( ' Enter student Number : ' ) ;
Readln ( Id ) ;
end ;
writeln
it l ;
write ( ' Enter Name : ' ) ;
Readln ( Nam ) ;
i := 0 ;
flag : = Ture ;
m
o
c
*
b
e
u
w
w
w
n
*p
while ( i < = n ) and flag Do
Begin
incc ( i ) ;
if Name [ i ] = Nam then
flag : = false ;
end ;
If flag then
writeln
it l ( ' Not
N t found
f
d') ;
Else
Begin
writeln ( ' Id
Name
write ( Id , Name : 30 , family : 30 ) ;
end ;
End . { End of program }
m
o
c
*
b
e
u
w
w
w
n
*p
family ' )
ﺗﻮﺍﺑﻊ ﻭ ﺭﻭﺍﻟﻬﺎي ﮐﺘﺎﺑﺨﺎﻧﻪﺍي ﺑﺮﺍي ﻣﺘﻐﻴﺮﻫﺎي ﺭﺷﺘﻪﺍي
ﺗﺎﺑﻊ C m t
Concat
ﺎ
o
c
*
b
e
u
ﻫﺪف :اﻟﺤﺎق دو ﻳﺎ ﭼﻨﺪ رﺷﺘﻪ ﺑﻪ ﻳﻜﺪﻳﮕﺮ
ﺷﻜﻞ ﺗﺎﺑﻊ:
n
*p
; Function concat ( S1 , S2 , … , Sn ): string
w
w
w
ﻧﻴﺰ ﻳﻚ
ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﻧ ﺰ
ﺘﻨﺪ و ﺧ وﺟ
ﻣﺘﻐﻴﺮﻫﺎﻳﻲ از ﻧﻮع رﺷﺘﻪ ﻫﻫﺴﺘﻨﺪ
Sn , … , S2 , S1ﻣﺘﻐ ﻫﺎﻳ
ﻣﺘﻐﻴﺮ رﺷﺘﻪاي اﺳﺖ اﻳﻦ ﺗﺎﺑﻊ دوﻳﺎ ﭼﻨﺪﺗﺎﺑﻊ را ﺑﻪ ﻫﻢ ﭘﻴﻮﻧﺪ داده ،و رﺷﺘﻪ ﺣﺎﺻﻞ
ﮔﺮداﻧﺪ.
ﻲ ﺮ
ﺑﺮﻣﻲ
ررا ﺑﺮ
: ﻣﺜﺎﻝ
ﺜﺎﻝ
Var
Str3 , str1 , str2 : string
Begin
Str1 : = ' Pascal ' ;
Str2 : = ' Book ' ;
Str3 : = Concat ( Str1 , Str2 ) ;
write
it ( St
Str33 ) ;
End.
m
o
c
*
b
e
u
w
w
w
n
*p
. ﻧﺸﺎن داده ﺧﻮاﻫﺪ ﺷﺪPascal Book ﻋﺒﺎرت،ﺑﺎ اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻓﻮق
C
Copy
ﺗﺎﺑﻊ
ﺗﺎ
m
oرﺷﺘﻪ ) ( substringاز ﻳﻚ رﺷﺘﻪ
ﻫﺪف :اﺳﺘﺨﺮاج ﻳﻚ زﻳﺮ
c
*
b
e
;nction copy (S:string ; Index:Integer
ﺷﻜﻞﺗﺎﺑﻊcount: Integer): string; :
u
n
*p
wرﺷﺘﻪ اي ﻛﻪ ﻧﻘﻄﻪ S
wزﻳﺮ
ﻢ از آن
ﻳﻚ ﻋﺒﺎرت ﻳﺎ ﻣﺘﻐﻴﺮ رﺷﺘﻪ اي ﻛﻪ ﻣﻲ ﺧﻮاﻫﻴﻢ
Indexﺷﺮوع آآن
ﻣﻲ ﺑﺎﺷﺪ ﺟﺪا ﻛﻨﻴﻢ .ﻟﺬا زﻳﺮ رﺷﺘﻪ Countو ﻃﻮل آآن w
اﺳﺖ ،ﻣﻲﺑﺎﺷﺪCount .ﺣﺎﺻﻞ ،ﻳﻚ رﺷﺘﻪ ﻛﻪ ﻃﻮل آن ﺑﻪ اﻧﺪازه
: ﻣﺜﺎﻝ
ﺜﺎﻝ
Var
c
*
b
e
Str: = ' Pascal Book
' ;
u
n, 7 , 4 ) ; { Str1 = Book }
Str1: = Copy (pStr
write ( Str1 )* ;
w
w
w
Str , str1: string ;
B i
Begin
End.
m
o
ﺭﻭﺍﻝ Delete
m
o
ﻫﺪف :ﺣﺬف ﻳﻚ زﻳﺮ رﺷﺘﻪ از ﻳﻚ رﺷﺘﻪ
c
*
Procedure delete (Var str: string; b
ﺷﻜﻞروال:
e
Index:integer;length:
; ) integer
u
n
p
*
ﻣﺘﻐﻴﺮ ﺻﺤﻴﺢ و Lengthﻧﻴﺰ
Strﻳﻚ ﻣﺘﻐﺮ رﺷﺘﻪ اي Index ،ﻳﻚ ﻋﺒﺎرت ﻳﺎ w
wﻳﻚ زﻳﺮ ررﺷﺘﻪ ررا ازز ﻳﻳﻚ
ل Deleteﻳ
روال
ﻲﺑﺑﺎﺷﺪ .رو
ﺻﺤﻴﺢ ﻣﻲ
ﻣﺘﻐﻴﺮ ﺻ ﻴﺢ
ﻋﺒﺎرت ﻳﻳﺎ ﻴﺮ
ﻳﻳﻚ ﺒ ر
رﺷﺘﻪ ﺣﺬف ﻣﻲﻛﻨﺪ اﻳﻦ روال از ﻣﺤﻞ Indexﺑﻄﻮل w
Lengthاز رﺷﺘﻪ Str
ﺣﺬف ﻣﻲﻛﻨﺪ و رﺷﺘﻪ ﺣﺎﺻﻞ ﺑﻌﻨﻮان ﺧﺮوﺟﻲ روال ﺑﺮﮔﺮداﻧﺪه ﻣﻲﺷﻮد.
: ﻣﺜﺎﻝ
ﺜﺎﻝ
Var
m
o
c
*
B i
Begin
b
e
St: = 'Pascal.Book' u
;
Delete ( St , 7 p
, 5n
) ;
writeln ( St ) *;
w
End.
w
w
St : string ;
.ﻲﺑﺑﺎﺷﺪ
ﻣﻲPascal ﻓﻮق
ﺑﺮﻧﺎﻣﻪ ﻮ
از ﺑﺮ
ﺣﺎﺻﻞ ز
ﻞ
ﺧﺮوﺟﻲ
ﺮوﺟﻲ
ﺭﻭﺍﻝ Insert
m
o
ﻫﺪف :درج ) وارد ﻛﺮدن ( ﻳﻚ رﺷﺘﻪ در ﻳﻚ رﺷﺘﻪ دﻳﮕﺮ
c
*
Procedure Insert ( Str1: stringeb
ﺷـﻜﻞ روال;Var Str2: :
u
; ) string ; Index: Byte
n
p
*
wاي و Indexﻋﺒﺎرﺗﻲ
Str1ﻋﺒﺎرت ﻳﺎ ﻣﺘﻐﻴﺮ رﺷﺘﻪ اي Str2 ،ﻣﺘﻐﻴﺮ رﺷﺘﻪ
ﻋﺪد از ﻧﻮع ﺻﺤﻴﺢ ﻣﻣﻲﺑﺎﺷﺪ .روال ،Insertرﺷﺘﻪ w
Str1رادر رﺷﺘﻪ Str2
از ﺧﺎﻧﻪ Indexدرج ﻣﻲﻛﻨﺪ و رﺷﺘﻪ ﺣﺎﺻﻞ ﺧﺮوﺟﻲw
روال ﺧﻮاﻫﺪ ﺑﻮد.
: ﻣﺜﺎﻝ
ﺜﺎﻝ
Var
m
o
c
*
b
B i
Begin
e
Str1: = ' Pascal 7'u
;
n
Str2: = ' Turbo
Turbo'
;
p
*
Insert ( Str1
, Str2 , 6 ) ;
w
End.
w
w
Str1 , str2: string ;
. ﺧﻮاﻫﺪ ﺑﻮدTurbo pascal 7 ﺧﺮوﺟﻲ ﺣﺎﺻﻞ از ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ
Length
ﺗﺎﺑﻊ g
ﺑﻊ
m
o
ﻫﺪف :ﻣﺤﺎﺳﺒﻪ ﻃﻮل رﺷﺘﻪ
c
*
b
; Function length ( Str: stringe): Integer
ﺷﻜﻞ ﺗﺎﺑﻊ:
u
n
*p
wﻋﺪد ﺻﺤﻴﺢ ﻣﻲﺑﺎﺷﺪ.
Strﻳﻚ ﻋﺒﺎرت رﺷﺘﻪ اي ﺑﻮده و ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﻳﻚ
w
ﮔﺮداﻧﺪ.
wﻣﻲﮔ ا
ﺑﻌﻨﻮان ﺧﺮوﺟﻲ ﺑﺮ
ﻣﺤﺎﺳﺒﻪ و ا
ﻃﻮل رﺷﺘﻪ ورودي راا ﺎ
ﺗﺎﺑﻊ ﻃ ل
ااﻳﻦ ﺎ
: ﻣﺜﺎﻝ
ﺜﺎﻝ
m
o
Var
c
*
b
e
u
St: string ;
n: integer
g ;
Begin
n
*p
St: = 'Turbo Pascal 7' ;
n: = length ( S4 ) ; { n = 14 }
Write ( ' The length of string is: ' , n ) ;
End.
End
w
w
w
ﺗﺎﺑﻊ Pos
m
o
ﻫﺪف :ﺑﺮاي ﺟﺴﺘﺠﻮي ﻳﻚ رﺷﺘﻪ داﺧﻞ رﺷﺘﻪ دﻳﮕﺮ
c
*
b
e
Function pos ( Str1: string ; Str2:
ﺷﻜﻞ ﺗﺎﺑﻊstring ): Byte ; :
u
n
p
*
ﻳﻚ ﻋﺒﺎرت ﻳﺎ ﻣﺘﻐﻴﺮ
Str1ﻳﻚ ﻋﺒﺎرت ﻳﺎ ﻣﺘﻐﻴﺮ رﺷﺘﻪ اي و Str2ﻧﻴﺰw
ﺗﺎﺑﻊ ﻣﺤﻞ
ﻞ
اﻳﻦ ﺑﻊ
wﺑﺎﺷﺪ .ﻳﻦ
ﻲﺑ
ﻴﺢ ﻣﻲ
ﺻﺤﻴﺢ
ﺑﻊ ﻳﻳﻚ ﻋﺪد ﺻ
ﺮوﺟﻲ ﺗﺎﺑﻊ
ﻲﺑﺑﺎﺷﺪ و ﺧﺮوﺟﻲ
ي ﻣﻲ
ررﺷﺘﻪ اي
اوﻟﻴﻦ وﻗﻮع رﺷﺘﻪ Str1در رﺷﺘﻪ Str2را ﺑﻌﻨﻮان w
ﺧﺮوﺟﻲ ﺑﺮ ﻣﻲﮔﺮداﻧﺪ.
ﻣﺜﺎﻝ :
ﺜﺎﻝ
m
o
Var
; Str1 , Str2: string
; i: integer
c
*
B i
Begin
b
e
Str1: = ' Book ' ; u
n
Str2: = ' Pascal
; ' Book
p
} * , Str2 ) ; { i = 8
i: = Pos ( Str1
w
Write w
; )('i=',i
w
End.
ﻧﻜﺘﻪ :ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ اﮔﺮ ﻋﻤﻞ ﺟﺴﺘﺠﻮ ﺑﺎ ﻣﻮﻓﻘﻴﺖ اﻧﺠﺎمم ﻧﺸﻮد ) ﻳﻌﻨﻲ رﺷﺘﻪ اول
در رﺷﺘﻪ دوم وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ ( ﺗﺎﺑﻊ ﻣﻘﺪار ﺻﻔﺮ ﺑﺮ ﻣﻲﮔﺮداﻧﺪ.
ﺭﻭﺍﻝ Str
ﻫﺪف :ﺑﺮاي ﺗﺒﺪﻳﻞ ﻋﺪد ﺑﻪ ﻳﻚ رﺷﺘﻪ ﻋﺪدي ﺑﻜﺎر ﻣﻲ رود.
m
o
c
*
b
e
2: Procedure Str ( F: Real: format
; ) , Str: string
u
n
ﻳﻚ ﻣﺘﻐﻴﺮ رﺷﺘﻪاي
Strﻚ
pو* S
ﻳﻚ ﻋﺒﺎرت ﻳﺎ ﻣﺘﻐﻴﺮﻋﺪدي ﺑﻮده
درﺷﻜﻞ I ،1ﻚ
ﻜ
wرا ﺑـﻪ ﻳـﻚ رﺷـﺘﻪ ﻋـﺪدي
ﻣﻲﺑﺎﺷﺪ اﻳﻦ روال ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ ﺑﺎ ﻓﺮﻣﺖ ﻣﺸﺨﺺ
w
ﺗﺒﺪﻳﻞ ﻣﻣﻲ ﻛﻨﺪ.
ﺗ ﺪﻳﻞ
w
ﺷﮑﻞ ﺭﻭﺍﻝ1: Procedure Str( I: integer: format , Str: string ) ; :
درﺷﻜﻞ F ،2ﻳﻚ ﻋﺒﺎرت ﻳﺎ ﻣﺘﻐﻴﺮ رﺷﺘﻪاي و Strﻳﻚ ﻣﺘﻐﻴﺮ رﺷﺘﻪاي ﻣﻲﺑﺎﺷﺪ.
: ﻣﺜﺎﻝ
ﺜﺎﻝ
Var
c
*
b
Str ( 543: 5 , Str ) ; e { Str = ' 543' }
u) ; { Str = ' 12.25' }
Str ( 12.25: 7: 2 n
,Str
p ) ; { Str = '127' }
Str ( 127: 3: *Str
w 7: 3 , Str ) ; { Str = ' 3.124' }
Str ( 3.1239:
w
w
Number , Str: String ;
Begin
g
End.
End
m
o
روال Val
ﻫﺪف :ﺗﺒﺪﻳﻞ ﻳﻚ رﺷﺘﻪ ﻋﺪدي ﺑﻪ ﻳﻚ ﻋﺪد
m
o
c
*
b
2: Procedure Val ( S: String ; Var N:
; ) Real ; Var Error: integer
e
u
n
Sﻳﻚ ﻋﺒﺎرت ﻳﺎ ﻣﺘﻐﻴﺮ رﺷﺘﻪ اي N ،ﻳﻚ p
ﻣﺘﻐﻴﺮ*از ﻧـﻮع ﺻـﺤﻴﺢ ﻳـﺎ اﻋﺸـﺎري و
Errorﻧﻴﺰ ﻳﻚ ﻣﺘﻐﻴﺮ از ﻧﻮع ﺻﺤﻴﺢ ﻣﻲ ﺑﺎﺷﺪw.
اﻳﻦ روال ﻳﻚ رﺷﺘﻪ ﻋـﺪدي را
ﻣﺘﻐﻴـﺮ N
ﺗﻮﺳـﻂ ﻐ
wراا ﺗ ﻂ
wآن
ﻛﻨـﺪ و
ﺗﺒـﺪﻳﻞ ﻣـﻲ ﻛ ﺪ
اﻋﺸـﺎري ﺗ ﺪ ﻞ
ﻳـﺎ ا ﺸ ﺎ
ﻋﺪد ﺻـﺤﻴﺢ ﺎ
ﻳﻚ ﺪ
ﺑﻪ ﻚ
ﺑﺮﻣﻲﮔﺮداﻧﺪ .اﮔﺮ ﻋﻤﻞ ﺗﺒﺪﻳﻞ ﺑﻄﻮر ﺻﺤﻴﺢ اﻧﺠـﺎم ﺷـﻮد ،ﻣﻘـﺪار ﻣﺘﻐﻴـﺮ Error
; 1: Procedure Val ( S: String ; Var N: integer
ﺷﻜﻞ روال:
; ) Var Error: integer
ﻛﻨﺪ.
ﻣﻲﻛﻨﺪ
ﺑﺮاﺑﺮ ﺻﻔﺮ در ﻏﻴﺮ اﻳﻨﺼﻮرت ﻣﺤﻞ وﺟﻮد اﺷﻜﺎل را ﻣﺸﺨﺺ ﻣﻲ
: ﻣﺜﺎﻝ
ﺜﺎﻝ
V
Var
St: string ;
E , N: integer ;
F: Real ;
Begin
g
St = ' 475 ' ;
Val ( St , N , E ) ;
St = ' 475' ;
Val ( St , F , E ) ;
St = '3.1716'
'3 1716' ;
Val ( St , F , E ) ;
w
End.
c
*
b
e
u
{ N = 475 , E = 0 }
n
*p
w
w
m
o
{F= ,E=3}
{ F = 3.1716 , E = 0 }
ﻫﺎ ﻭ ﮐﺎ ﺍﮐ ﺎ
ﮐﺎﺭﺍﮐﺘﺮﻫﺎ
ﺭﺷﺘﻪ ﺎ
ﻣﺜﺎﻝ ﺩﺭ ﻣﻮﺭﺩ ﺷ
ﺍﺭﺍﺋﻪ ﭼﻨﺪ ﺜﺎﻝ
ﺍ ﺍﺋ
m
o
c
*
b
e
u
ﻣﺜﺎل :ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﺟﻤﻠـﻪ از ورودي درﻳﺎﻓـﺖ ﻛـﺮده ﺳـﭙﺲ در
ﺻﻮرﺗﻲ ﻛﻪ ﻛﻠﻤﻪ ISوﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ آﻧﻬﺎ را ﺑﻪ areﺗﺒﺪﻳﻞ ﻧﻤﺎﻳـﺪ و در
ﻧﻬﺎﻳﺖ رﺷﺘﻪ ﺣﺎﺻﻞ را در ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ دﻫﺪ.
n
p
*
ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﻣﻤﻜﻦ اﺳﺖ ﺑﻴﺶ از ﻳﻚ ﺑﺎر ﻛﻠﻤﻪ ISﺗﻜﺮار ﺷﺪه ﺑﺎﺷﺪ
.w
wﻛﻨﺪ
در اﻳﻨﺼﻮرت ﻫﻤﻪ ﻛﻠﻤﺎت ISرا ﺑﺎ areﺗﺒﺪﻳﻞ
w
Var
St : string ;
Begin
Writeln ( ' Enter sentence ' ) ;
Readln ( St ) ;
Repeat
i : = Pos ( 'is' , St ) ;
if i > 0
Then
Begin
Delete ( St , i , 2 ) ;
Insert ( 'are' , St , i ) ;
end ;
Until i = 0 ;
Writeln ( ' The result sentence ' ) ;
Write ( St ) ;
End . { End of program }
m
o
c
*
b
e
u
w
w
w
n
*p
، ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳـﻚ رﺷـﺘﻪ از ورودي درﻳﺎﻓـﺖ ﻛـﺮده: ﻣﺜﺎل
ﺳﻄﺮ
ﺷﺘﻪ ددر ددو ﻄ
ﺧﻮدد رﺷﺘﻪ
ﺑﻬﻤﺮاه ﺧ
آورده ﻬ ا
ﺖآ د
ﺑﺪﺳﺖ
ﺷﺘﻪ راا ﺪ
ﻣﻌﻜﻮس رﺷﺘﻪ
ﺳﭙﺲ ﻜ
.ﺟﺪاﮔﺎﻧﻪ ﭼﺎپ ﻧﻤﺎﻳﺪ
Var
St1 , St2 : string ;
i , j : integer ;
Begin
g
m
o
c
*
b
Writeln ( ' Enter sentence e
') ;
Readln ( St1 ) ; j : =n
1u
;
For i : = length*(p
St1 ) downto
St2 [ j ] w
: = St1 [ i ] ;
Inc (w
j) ;
w
End ;
W te ( ' Thee result
Writeln
esu t ' ) ;
Writeln ( St1 ) ; Writeln ( St2 ) ;
End . { End of program }
1
do Begin
ﺗﻤﺮﻳﻨﺎﺕ
ﺗ ﺎ
S3 , S2 ,oﻣﺘﻐﻴﺮ ﻫﺎي رﺷﺘﻪ اي ﻫﺴﺘﻨﺪ
• ﺑﺎ ﻓﺮض اﻳﻨﻜﻪS1m
ﺧﺮوﺟﻲ ﻋﺒﺎرﺗﻬﺎي c
ﻦ ﻛﻨﻴﺪ.
زﻳﺮﺮ*را ﺗﻌﻴﻴﻦ
ﺮ ﻲ
b
e
u
n
*p
; ) a)S3 = copy ( S1 , 1 , 6
; ) b)S3 = concat ( S3 , S2 , S1
; ) c)S3 = copy ( S2 , 1 , pos( S1 , S2 ) – 1
; ) ) d)Delete ( S2 , pos( S1 , S2 ) , length ( S1
w
w
w
:ﮐﻨﻴﺪ
ﺑﺮﻧﺎﻣﻪ ﺯﺯﻳﺮ ﺭﺍﺍ ﺗﺗﻌﻴﻴﻦ ﮐﻨ
ﻗﻄﻌﻪ ﻧﺎ
ﺧﺮﻭﺟﻲ ﻗﻄ
•ﺧ
Var
S1: string ;
i: integer ;
Begin
.End
c
*
b
e
u
m
o
n
S1: = 'ABCDEF'
p ;
*
For w
i: = 1 to length ( S1 ) ;
w
Delete ( S1 , i , 1 ) ;
w
Writeln ( S1 ) ;
:ﮐﻨﻴﺪ
ﺑﺮﻧﺎﻣﻪ ﺯﺯﻳﺮ ﺭﺍﺍ ﺗﺗﻌﻴﻴﻦ ﮐﻨ
ﻗﻄﻌﻪ ﻧﺎ
ﺧﺮﻭﺟﻲ ﻗﻄ
•ﺧ
m
o
Var
c
*
b
e
u
St: string ;
i: integer ;
Begin
n
*p
Readln ( St ) ;
F
For
ii: = 1 to
t
length
l th ( St ) Do
D
If ( St [ i ] > = ' 0 ' ) and ( St [ i ] < = ' 9 ' ) then
Delete ( St , i , 1 ) ;
Writeln ( St ) ;
w
w
w
.End
S2 = ' Book ' , S1 = ' pascal Book ' • ﺑﺎ ﻓﺮﺽ ﺍﻳﻨﮑﻪ
.ﻫﺴﺘﻨﺪ ﺧﺮﻭﺟﻲ ﻋﺒﺎﺭﺕ ﺯﻳﺮ ﺭﺍ ﺗﻌﻴﻴﻦ ﮐﻨﻴﺪ
m
o
c
*
b
e
b) S3 : = copy ( S2 , pos ( S1 , S2
) , length ( S1 ) ;
u
n
c) S3 : = copy ( S2 , pos
*p( St , S2 ) , length ( S2 ) ;
w
w
d) Delete
D l t ( S1w
, pos ( S2 , S1 ) , llength
th ( S2 );
)
a) Insert ( S1 , S2 , pos ( S1 , S2 ) ) ;
e)
S1 [ 0 ] := # 6 ;
ﺑﺮﻧﺎﻣﻪﻧﻧﻮﻳﺴﻲ
ﺗﻤﺮﻳﻨﺎﺕ ﻧﺎ
ﺗ ﺎ
ﭘﺎراﮔﺮاف را از ورودي درﻳﺎﻓﺖ ﻛﺮده
ﻳﻚ ﮔ
mﻛﻪ ﻚ
•ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ
o
ﺳﭙﺲ:
) ﺣﺪاﻛﺜﺮ 10ﺧﻂ ( c
*
b
e
u
n
*p
اﻟﻒ( ﺗﻌﺪاد ﻛﻠﻤﺎت ﻫﺮ ﺳﻄﺮ را ﺷﻤﺮده و اﻧﺘﻬﺎي ﺳﻄﺮ ﻧﻤﺎﻳﺶ دﻫﺪ.
ﻧﻤﺎﻳﺪ.
ﭼﺎپ ﺎ
ﺷﻤﺮده ﺎ
دار راا ﺷ
ف ﺻﺪاا ا
ﺗﻌﺪاد ﺣﺮوف
ب( ا
ج( ﺗﻌﺪاد ﺧﻄﻮط ﺑﺮﻧﺎﻣﻪ را ﺷﻤﺮده در ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ.
د( ﺗﻌﺪاد ﺟﻤﻼت ﻫﺮ ﺧﻂ را ﻣﺤﺎﺳﺒﻪ و در ﺳﻄﺮ ﻫﺎي ﺟﺪاﮔﺎﻧﻪ ﻧﻤﺎﻳﺶ دﻫﺪ.
w
w
w
درﻳﺎﻓﺖ
ي رﻳ
ورودي
از ورو
ﺺ ررا ز
ﻣﺒﻨﺎي ﻣﺸﺨﺺ
ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻳﻚ ﻋﺪد درر ﺒ ي
ي ﺑ ﻮﻳ ﻴ
ﺑﺮﻧﺎﻣﻪاي
•ﺑﺮ
ﻛﺮده ﺳﭙﺲ آن راmﺑﻪoﻣﺒﻨﺎي mﻛﻪ از ورودي ﺧﻮاﻧﺪه ﻣﻲ ﺷﻮد ﺑﺒﺮد.
c
*
b
e
ﭘﺎراﮔﺮاف را از ورودي درﻳﺎﻓﺖ ﻛﺮده
•ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ
u
n
ﻧﻤﻮده و ﭘﺎراﮔﺮاف ﺣﺎﺻﻞ را ﺑﻬﻤﺮاه
ﻛﻠﻤﺎت ﺗﻜﺮاري ﻫﺮ ﺳﻄﺮ را ﺣﺬف
p
ﭘﺎراﮔﺮاف اوﻟﻴﻪ در ﺧﺮوﺟﻲ ﺑﺎ ﭘﻴﻐﺎم *
wﻧﻤﺎﻳﺶ دﻫﺪ.
ﻣﻨﺎﺳﺐ
w
w
•ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دو ﻋﺪد 20رﻗﻤﻲ ) ﺑﺼﻮرت رﺷﺘﻪ ﺑﺎﻳﺪ ﺧﻮاﻧﺪه ﺷﻮد (
را از ورودي درﻳﺎﻓﺖ ﻛﺮده ﺳﭙﺲ ﻣﺠﻤﻮع و ﺣﺎﺻﻞ ﺿﺮب اﻳﻦ دو ﻋﺪد را
ﻣﺤﺎﺳﺒﻪ و در ﺧﺮوﺟﻲ ﺑﺎ ﭘﻴﻐﺎم ﻣﻨﺎﺳﺐ ﭼﺎپ ﻧﻤﺎﻳﺪ.
m
o
c
*
b
e
ورودي درﻳﺎﻓﺖ ﻛﺮده
از
رﺷﺘﻪ
ﻳﻚ
ﻛﻪ
ﺑﻨﻮﻳﺴﻴﺪ
اي
ﺑﺮﻧﺎﻣﻪ
•
u
ﻳﺶ دﻫﺪ:
ﻛﺎراﻛﺘﺮ ﻧﻤﺎﻳﺶ
ﻛﺎراﻛﺘﺮ ﺑﺑﻪ ر ﺮ
ﻋﻤﻮدي ر ﺮ
nي
ﺑﺼﻮرت ﻮ
داﺧﻞ آن ررا ﺑ ﻮر
ﺳﭙﺲ ﻛﻠﻤﺎت ﻞ
ﭙﺲ
*p
w
درﻳﺎﻓﺖ
wورودي ﺎﻓ
wراا از
ﺣﺪاﻛﺜﺮ 5ﺧﻂ
ﭘﺎراﮔﺮاف ﺎﺑﺎ ﺪاﻛﺜ
ﻳﻚ ﺎ اﮔ اف
ﺪ ﻛﻛﻪ ﻚ
ﺑﺮﻧﺎﻣﻪااي ﺑﻨﻮﻳﺴﻴﺪ
• ﻧﺎ
ﻧﻤﺎﻳﺪ .ﺳﭙﺲ ﻣﺠﻤﻮع ارﻗﺎم ﻳﺎ اﻋﺪاد ) در ﺻﻮرت وﺟﻮد ( ﻫﺮ ﺧﻂ را ﻣﺤﺎﺳﺒﻪ
دﻫﺪ..
ﻧﻤﻮده در اﻧﺘﻬﺎي ﻫﻤﺎن ﺳﻄﺮ ﻧﻤﺎﻳﺶ دﻫﺪ
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﺍﻃﻼﻋﺎﺕ)ﮔﺮﻭﻩ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﻓﺼﻞ 9
m
o
ﺑﺮﻧﺎﻣﻪﻫﺎي ﻓﺮﻋﻲ
c
*
b
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﻓﺎ
e
u
n
p
*
ﺷﻨﺎﺧﺖ اﺟﺰاء ﺗﺸﻜﻴﻞدﻫﻨﺪه ﺗﻮاﺑﻊ و رواﻟﻬﺎ
w
ﻓﺮﻋﻲ
ﻲ
ي ﺮ
ﺑﺮﻧﺎﻣﻪﻫﺎي
wدرر ﺑﺮ
ﻣﺘﻐﻴﺮﻫﺎ
ﭘﺎراﻣﺘﺮﻫﺎ و ﻴﺮ
اﻧﻮاعع ﭘ ر ﺮ
ﻲ ﻮ
ﺑﺮرﺳﻲ
ﺑﺮر
ﺷﻨﺎﺧﺖ ﺗﻔﺎوﺗﻬﺎي رواﻟﻬﺎ و ﺗﻮاﺑﻊ w
ﺑﺮﻧﺎﻣﻪﻫﺎ
ﻳﺮ ﺑﺮ
ﻣﺰاﻳﺎي اﺳﺘﻔﺎده از زﻳﺮ
ﻣﻌﺮﻓﻲ ﺰ ﻳ ي
ﺮﻲ
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي÷ﻓ ﺎ
ﻓﺎ
oﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
mاز
داﻧﺸﺠﻮ ﭘﺲ
c
*
b
e
زﻳﺮﺑﺮﻧﺎﻣﻪ ﺗﻘﺴﻴﻢﺑﻨﺪي ﻧﻤﺎﻳﺪ.
ﺑﺮﻧﺎﻣﻪ ﺧﻮد را ﺑﻪ ﭼﻨﺪﻳﻦ
u
n
p
*
زﻳﺮﺑﺮﻧﺎﻣﻪﻫﺎ را ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻗﻮاﻧﻴﻦ ﻣﻮﺟﻮدw،در ﺳﺎﺧﺘﺎر ﺑﺮﻧﺎﻣﻪ ﺟﺎ دﻫﺪ.
w
w
ﺑﺎﺗﻮﺟﻪ ﺑﻪ ﻣﺰاﻳﺎي اﺳﺘﻔﺎده از آﻧﻬﺎ را در ﺑﺮﻧﺎﻣﻪ ﺧﻮد ﺑﻜﺎر ﺑﺒﺮد.
ﻝﻫﺎ
ﺭﻭﺍﻝ
ﺭﻭ
روالﻫﺎ ﻧﻮﻋﻲ از ﺑﺮﻧﺎﻣﻪﻫﺎي ﻓﺮﻋﻲ ﻫﺴﺘﻨﺪ ،ﻛﻪ ﺑﻪ ﻃﻮر ﻣﺴﺘﻘﻞ و ﺟﺪاﮔﺎﻧﻪ وﻇﻴﻔﻪ
m
o
c
*
اﻃﻼﻋﺎت ﺧﻮد را از ﻃﺮﻳﻖ b
eدرﻳﺎﻓﺖ و ﻫﻤﭽﻨﻴﻦ در ﺻﻮرت ﻧﻴﺎز ﻧﺘﺎﻳﺞ را
ﭘﺎراﻣﺘﺮﻫﺎ
u
n
ﺣﻘﻴﻘﺖ ﺧﻄ ط
ﺧﻄﻮط
ﭘﺎراﻣﺘﺮﻫﺎﺎ در ﻘ ﻘ
* .ﺎ ا
ﮔﺮداﻧﻨﺪ
ﺑﺮﻧﺎﻣﻪ ا ﻠ
ﭘﺎراﻣﺘﺮﻫﺎ ﺑﻪ ﻧﺎ
ااز ﻃﻃﺮﻳﻖ ﺎ ا ﺎ
اﺻﻠﻲ ﺎﺑﺎز ﻣﻲﮔ اﻧp
w
ﻓﺮﻋﻲ ﻫﺴﺘﻨﺪw.
ﻫﺎ ﺑﺎﻋﺚ ﻣﻣﻲ ﺷﻮﻧﺪ،
ﭘﺎراﻣﺘﺮﻫﺎ
ﭘﺎراﻣﺘ
ﺑﺮﻧﺎﻣﻪﻫﺎي ﻓ ﻋ
اﺻﻠﻲ و ﺑ ﻧﺎﻣﻪ
ﻧﺎﻣﻪ اﺻﻠ
ارﺗﺒﺎﻃﻲ ﺑﻴﻦ ﺑﺑﺮﻧﺎﻣﻪ
ارﺗﺒﺎﻃ
w
ﻳﺎ وﻇﺎﻳﻒ ﺧﺎﺻﻲ از ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ را اﻧﺠﺎم ﻣﻲدﻫﻨﺪ .روال ﻫﺎ در ﺻﻮرت ﻧﻴﺎز
ﻗﺎﺑﻠﻴﺖ ررا
اﻳﻦ ﺑ ﻴ
ﻓﺮﻋﻲ ﻳﻦ
ﻫﺎي ﺮ ﻲ
ﺑﺮﻧﺎﻣﻪ ي
آﻧﻬﺎ ﺑﺑﻪ ﺑﺮ
زﻳﺮا ﻬ
ﻋﻤﻞ ﻛﻨﻨﺪ ،زﻳﺮ
رواﻧﺘﺮ ﻞ
روال ﻫﺎ رو ﺮ
ﺗﻮاﺑﻊ و رو
ﻛﻪ ﻮ ﺑﻊ
ﻣﻲ دﻫﻨﺪ ﻛﻪ ﺑﺎ ﻫﺮ ﻓﺮاﺧﻮاﻧﻲ ،دادهﻫﺎي ﻣﺨﺘﻠﻔﻲ را ﻣﻮرد ﭘﺮدازش ﻗﺮار دﻫﻨﺪ.
: ﺯﻳﺮ ﻣﻣﻲ ﺑﺎﺷﺪ
ﺑﺼﻮﺭﺕ ﺯﻳ
ﺭﻭﺍﻝﻫﺎ ﺑﺼ ﺕ
ﮐﻠﻲ ﺍﻝ
ﺷﮑﻞ ﮐﻠ
m
o
P
Procedure
d
Name
N
( parameters
t
list
li t ) ;
c
*
ﺫﺧﻴﺮﻩ ﺷﺪﻩ
ﺍﺳﻢ ﺭﻭﺍﻝ ﮐﻠﻤﻪ ﺫﺧ ﻩ
ﭘﺎﺭﺍﻣﺘﺮﻫﺎ
ﻫﺎ
ﻟﻴﺴﺖ ﭘﺎﺭﺍﻣﺘ
ﻟ ﺖ
b
e
Var
u
{ List of locadnvariable }
Begin
*p
w
.
w
.
w{ Procedure Body }
.
.
End ; { End of procedure }
ﺷﻮﻧﺪ:
ﻲ ﻮ
ﻇﺎﻫﺮ ﻣﻲ
ﺮ
ﺑﺼﻮﺭﺕ ﺯﻳﺮ
ﺍﺻﻠﻲ ﺑ ﻮﺭ
ﺑﺮﻧﺎﻣﻪ ﻲ
ﻝ ﻫﺎ ﺩﺭﺭ ﺑﺮ
ﺭﻭﺍﻝ
ﻲ ﺭﻭ
ﺩﺭﺭ ﺣﺎﻟﺖ ﮐﻠﻲ
m
o
ﻢ ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ Program
; اﺳﻢ
c
*
b
e
u
; ﺗﻌﺎرﻳﻒ ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ
Procedure .....
;
n
*p
} Begin { main program
.
.
.
ﻓﺮاﺧﻮاﻧﻲ روال ﻫﺎ
.
.
} End. { End of program
w
w
w
ﭘﺎﺭﺍﻣﺘﺮﻫﺎ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﺤﻞ ﻭﻗﻮﻉ ﺁﻧﻬﺎ ﺑﻪ ﺩﻭ ﺩﺳﺘﻪ ﺗﻘﺴﻴﻢ ﻣﻲ ﺷﻮﻧﺪ:
m
o
c
*
b
.1ﭘﺎراﻣﺘﺮﻫﺎي ﺻﻮري( Formal parametersu)e
n
( Actual parameters
.2ﭘﺎراﻣﺘﺮﻫﺎي واﻗﻌﻲ ) *p
w
w
wواﻗﻌﻲ ﻫﻨﮕﺎم
از ﭘﺎراﻣﺘﺮﻫﺎي ﺻﻮري ﻫﻨﮕﺎم اﻋﻼن روال و از ﭘﺎراﻣﺘﺮﻫﺎي
ﻓﺮاﺧﻮاﻧﻲ روال ﻫﺎ اﺳﺘﻔﺎده ﻣﻲﺷﻮد .
ﭘﺎﺭﺍﻣﺘﺮﻫﺎي ﺻﻮﺭي ﺩﺭ ﺣﺎﻟﺖ ﮐﻠﻲ 2ﻧﻮﻋﻨﺪ ،ﮐﻪ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﻮﻉ ﺭﻭﺍﻝ ﻭ
ﮔﻴﺮﻧﺪ :
ﻗﺮﺍﺭ ﻣﻲ ﮔ ﻧﺪ
ﺍﺳﺘﻔﺎﺩﻩ ﻗ ﺍ
ﺑﺮﻧﺎﻣﻪﻪ ﻧﻧﻮﻳﺲ ﻣﻮﺭﺩﺩ ﺍ ﺘﻔﺎﺩ
ﺗﺗﺼﻤﻴﻢ ﻧﺎ
m
o
c
*
b
ﻣﻘﺪاري ) ( Value parameters
ﭘﺎراﻣﺘﺮﻫﺎي
e
u
n
( Variable parameters
ﭘﺎراﻣﺘﺮﻫﺎي ﻣﺘﻐﻴﺮي ) *p
w
w
w
(V
Value
l parameters
t
ﻣﻘﺪﺍﺭي )
ﭘﺎﺭﺍﻣﺘﺮﻫﺎي ﻘ ﺍ
ﺎ
ﺎ ﺍ
m
o
ﭘﺎراﻣﺘﺮﻫﺎي ﻣﻘﺪاري ،ﭘﺎراﻣﺘﺮﻫﺎﻳﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﻣﻘﺪار ﻣﺘﻐﻴﺮﻫﺎي ﻓﺮﺳﺘﺎده ﺷﺪه از
ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ را درﻳﺎﻓﺖ ﻣﻲ ﻛﻨﻨﺪ و وﻇﻴﻔﻪ آﻧﻬﺎ ﻓﻘﻂ ﻋﺒﻮر دادن ﻣﻘﺪار ﺑﻪ روال
اﺻﻠﻲ اﻧﺘﻘﺎل ﻧﻧﻤﻲ ﺎ ﺪ
ﻳﺎﺑﺪ
ﺑﺮﻧﺎﻣﻪ ا ﻠ
روال ﺑﻪ ﻧﺎ
ﻣﻘﺪاري در ال
ﭘﺎراﻣﺘﺮﻫﺎي ﻘﺪا
ﺗﻐﻴﻴﺮات ﺎ ا ﺘ ﺎ
ﺑﺎﺷﺪ .ﻟﺬا ﺗﻐ ات
ﻣﻲ ﺎﺷﺪ
c
*
b
e
u
n
*p
ﻲ ﻮ
ﺗﻌﺮﻳﻒ ﻣﻲ
ري ﺑﺼﻮرت زﻳﺮ ﺮﻳ
ي ﻣﻘﺪاري
ﭘﺎراﻣﺘﺮﻫﺎي
ﭘر ﺮ
ﺷﻮﻧﺪ :
w
w
; ) Name ( var1 : type ; var2 : type , . . . .
ﻧﻮع ﻣﻘﺪاري
ﻟﻴﺴﺖ ﭘﺎراﻣﺘﺮﻫﺎي از ع
w
ﻢ روال
اﺳﻢ
Procedure
ﻛﻠﻤﻪ ذﺧﻴﺮه ﺷﺪه
: ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﺗﻮﺟﻪ ﮐﻨﻴﺪ: ﻣﺜﺎﻝ
Program
g
Var
m
o
main ;
c
*
b
e
u
x1 , x2 , y1 , y2 : integer ;
Procedure test (A1,A2,B1,B2:integer);{formal parameters
n
*p
......
Begin { main }
....
test ( x1 , x2 , y1 , y2 ) ; { Actual parameters }
......
End. { End of program }
w
w
w
ﭻ ارﺗﺒﺎﻃﻲ ﺑﻪ ﭘﺎراﻣﺘﺮﻫﺎي
ﻧﻜﺘﻪ :ﭘﺎراﻣﺘﺮﻫﺎﻳﻲ ﻛﻪ در روال ﺑﻜﺎر ﺑﺮده ﻣﻲ ﺷﻮد ،ﻫﻴﭻ
ارﺳﺎﻟﻲ از ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﻧﺪارﻧﺪ و ﻓﻘﻂ ﻣﻘﺎدﻳﺮ اﻳﻦ ﻣﺘﻐﻴﺮﻫﺎ از ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ
ارﺳﺎل ﻣﻲ ﺷﻮد .ﻟﺬا اﺳﺎﻣﻲ ﭘﺎراﻣﺘﺮﻫﺎي ﺻﻮري ﻣﻤﻜﻦ اﺳﺖ ﻫﻢ اﺳﻢ ﺑﺎ
ﺖ ﻛﻛﻪ
ﻣﻌﻨﺎي ااﻳﻦ ﻧﻧﻴﺴﺖ
ﺷﻮﻧﺪ ،ااﻳﻦ ﺑﻪ ﻨﺎ
اﻧﺘﺨﺎب ﺷ ﻧﺪ
اﺻﻠﻲ اﻧ ﺨﺎ
ﺑﺮﻧﺎﻣﻪ ا ﻠ
واﻗﻌﻲ ﻧﺎ
ﭘﺎراﻣﺘﺮﻫﺎي اﻗ
ﺎا ﺎ
اﻳﻦ ﭘﺎراﻣﺘﺮﻫﺎ ) ﭘﺎراﻣﺘﺮﻫﺎي ﺻﻮري ( ﻫﻤﺎن ﭘﺎراﻣﺘﺮﻫﺎي واﻗﻌﻲ ﻫﺴﺘﻨﺪ.
m
o
c
*
b
e
در ﻣﺜﺎل ﺑﺎﻻ اﻳﻦ ﺗﻨﺎﻇﺮ ﺑﺮﻗﺮار اﺳﺖu:
ﭘﺎراﻣﺘﺮﻫﺎي واﻗﻌﻲ
A1
A2
B1
B2
n
ﻣﺘﻨﺎﻇﺮ اﺳﺖ pﺑﺎ*
w
w
w
ﭘﺎراﻣﺘﺮﻫﺎي ﺻﻮري
X1
X2
Y1
Y2
m
o
c
*
اﻳﻦ ﭘﺎراﻣﺘﺮﻫﺎ ﺻﻮري ﻫﺴﺘﻨﺪ وb
ﻧﻮعeو ﺗﺮﺗﻴﺐ آﻧﻬﺎ ﺑﺎﻳﺪ ﺑﺎ ﻧﻮع و ﺗﺮﺗﻴﺐ
u
n
ﻳﻚ ﺎﺑﺎﺷﻨﺪ.
ﻳﻚ ﺑﻪ ﻚ
ﺗﻨﺎﻇﺮ ﻚ
واﻗﻌﻲ در ﺎﻇ
ﭘﺎراﻣﺘﺮﻫﺎي اﻗ
ﺎا ﺎ
*p
w
w
w
ﻣﺘﻐﻴﺮﻫﺎي … , Var2 , Var1ﭘﺎراﻣﺘﺮﻫﺎي ﻣﻘﺪاري ﻫﺴﺘﻨﺪ .ﺗﻮﺟﻪ ﻛﻨﻴﺪ ،ﻛﻪ
: ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﺗﻮﺟﻪ ﮐﻨﻴﺪ: ﻣﺜﺎﻝ
Program
Var
main ;
m
o
c
*
b
e
u
x1 , x2 , y1 , y2 : integer ;
Procedure test ( A1 , A2 , B1 , B2: integer ); {formal paramete
n
*p
......
B i { main
Begin
i }
....
test ( x1 , x2 , y1 , y2 ) ; { Actual parameters }
......
End. { End of pprogram
g
}
w
w
w
m
o
ﻣﻘﺪاري
ﭘﺎراﻣﺘﺮ ﻘﺪا
ﺑﻨﺎم testﺎﺑﺎ 4ﺎ ا ﺘ
رواﻟﻲ ﻨﺎ
ﻛﻨﻴﺪ ،اﻟ
ﻈﻪ ﻣﻲ ﻛﻨ ﺪ
ﻣﻼﺣﻈﻪ
ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻼ
ﻫ ﺎﻧﻄ
c
*
ﺑﺮﻧﺎﻣﻪ
از ﺑﺮ
yy2 , y1ز
ي y , x2 , x1
ﻣﺘﻐﻴﺮﻫﺎي
ﺖ .ﻴﺮ
ﺷﺪه اﺳﺖ
ده ه
ﺑﺮﻧﺎﻣﻪ اﺳﺘﻔﺎده
در ﺑﺮ
b
e
u
ﺑﺘﺮﺗﻴﺐ ﻣﻘﺎدﻳﺮ اﻳﻦ ﻣﺘﻐﻴﺮﻫﺎ در
اﺻﻠﻲ ﺑﻪ روال testارﺳﺎل ﺷﺪه و
n
*p
ﻣﺘﻐﻴﺮﻫﺎي ﺑﺎ ﻫﻤﺎن ﻧﻮع در wB2 , B1 , A2 , A1
ﻗﺮار ﻣﻲ ﮔﻴﺮﻧﺪ.
w
w
( Variable p
ﻴﺮي ) parameters
ي ﻣﺘﻐﻴﺮي
ﭘﺎﺭﺍﻣﺘﺮﻫﺎي
ﭘﺭ ﺮ
ﻳﻚ ﭘﺎراﻣﺘﺮ ﻣﺘﻐﻴﺮي ،ﺗﻐﻴﻴﺮات ﻳﻚ ﭘﺎراﻣﺘﺮ واﻗﻌﻲ را ﺑﻌﻨﻮان ﺧﺮوﺟﻲ ﺑﻪ ﺑﺮﻧﺎﻣﻪ
ﻣﻘﺪاري ددر ا ﺳﺎل
ارﺳﺎل
ﻫﺎي ﻣﻘﺪا ي
ﭘﺎراﻣﺘﺮﻫﺎي
ﻫﺎ ﺑﺎ ﭘﺎ اﻣﺘ
ﭘﺎراﻣﺘﺮﻫﺎ
ﻧﻪ ﭘﺎ اﻣﺘ
ﮔﺮداﻧﺪ .ﺗﻔﺎوت اﻳﻦ ﮔﮔﻮﻧﻪ
ﺑﺮﻣﻲﮔ داﻧﺪ
اﺻﻠﻲ ﺑ ﻣ
اﺻﻠ
ﺗﻐﻴﻴﺮات اﻳﺠﺎد ﺷﺪه در ﭘﺎراﻣﺘﺮﻫﺎ ﻣﻲﺑﺎﺷﺪ .وﻗﺘﻲ ﻧﻴﺎز اﺳﺖ ،ﻛﻪ ﻧﺘﺎﻳﺞ روال ﺑﻪ
ﻲﻛﻨﻨﺪ.
ﻴﺮي اﺳﺘﻔﺎده ﻣﻲ
ﭘﺎراﻣﺘﺮﻫﺎي ﻣﺘﻐﻴﺮي
ﺑﺮﮔﺮدد ،ازز ﭘ ر ﺮ ي
ﻲ ﺑﺮ ﺮ
ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ
ﺑﺮ
m
o
c
*
b
e
زﻳﺮ ﻣﻲﺑﺎﺷﺪ:
اﻋﻼن ﭘﺎراﻣﺘﺮﻫﺎي ﻣﺘﻐﻴﺮي ﺑﻪ ﺻﻮرت
u
n
p
*
procedure
;) … Name ( var id1 : type ; var id2 : type ,
w
w
ﻛﻠﻤﻪ ﺫﺧ
ﺍﺳﻢ ﺭﻭﺍﺍﻝ
ﻟﻴﺴﺖ ﭘﺎﺭﺍﻣﺘﺮﻫﺎي ﻣﺘﻐﻴﺮي
w
ﻣﺘﻐﻴﺮﻫﺎي id1 , id2و … ﭘﺎراﻣﺘﺮﻫﺎي ﻣﺘﻐﻴﺮي ﻣﻲﺑﺎﺷﻨﺪ ﻛﻪ ﻧﺘﺎﻳﺞ روال ،ﺗﻮﺳﻂ
آﻧﻬﺎ ﺑﻪ ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﺑﺎزﮔﺮداﻧﺪه ﻣﻲﺷﻮد.
ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﺠﻤﻮﻉ ﻭ ﻣﻴﺎﻧﮕﻴﻦ ﺩﻭ ﻋﺪﺩComputeSumAve ﺭﻭﺍﻟﻲ ﺑﻨﺎﻡ: ﻣﺜﺎﻝ
.ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻭ ﻧﺘﻴﺠﻪ ﺭﺍ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﺍﺻﻠﻲ ﭼﺎﭖ ﻧﻤﺎﻳﺪ
Program Example;
Var
Num1, Num2: integer; Total,average: Real;
Procedure
ocedu e ComputeSumAve(Num1
Co pu eSu ve(Nu
, Nu
Num2:: integer
ege ;
Var sum , ave : Real);
Begin
Sum:=Num1+Num2; Ave:=sum/2;
End; {End of procedure}
Begin {Main}
WriteLn(' Enter Two Numbers');ReadLn(Num1,Num2);
ComputeSumAve (Num1, Num2, total, average);
(
Sum is= ',, sum:8:2 ,
WriteLn('The
' The average is= ' , average:8:2);
End. {End of program }
m
o
c
*
b
e
u
w
w
w
n
*p
ﭘﺎﺭﺍﻣﺘﺮﻫﺎي ﻭﺍﻗﻌﻲ ﻭ ﺻﻮﺭي ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ:
واﻗﻌﻲ
ﭘﺎراﻣﺘﺮ اﻗ
ﺎ اﺘ
Num1
Num2
Nu
sum
ave
m
o
ﭘﺎراﻣﺘﺮﻫﺎي ﺻﻮري
ﺎ ا ﺘ ﻫﺎ
Num1
Num2
Nu
Total
Average
ﺖ ﺑﺎﺎ
ﻣﺘﻨﺎﻇﺮ ااﺳﺖ
ﺘﻨﺎﻇ
c
*
b
e
u
n
*p
w
w
Num1 , Num2ﭘﺎراﻣﺘﺮﻫﺎي ﻣﻘﺪاري و sum , aveﭘﺎراﻣﺘﺮﻫﺎي ﻣﺘﻐﻴﺮي
ﺷﻮد.
ﺑﺮﮔﺮداﻧﺪه ﻣﻲﺷ
اﺻﻠﻲ ﮔ اﻧ
ﺑﺮﻧﺎﻣﻪ ا ﻠ
ﻧﺘﺎﻳﺞ ﺑﻪ ﻧﺎ
آﻧﻬﺎ ﻧ ﺎ
ﺗﻮﺳﻂ آﻧ ﺎ
ﺑﺎﺷﻨﺪ ،ﻛﻛﻪ ﻂ
ﻣﻲ ﺎﺷ
w
ﻣﺘﻐﻴﺮﻫﺎي ﻣﺤﻠﻲ ﻭ ﺳﺮﺍﺳﺮي )( Local and Global Variable
m
oﻧﻮع ﻣﺘﻐﻴﺮ ﻋﻼوه از ﭘﺎراﻣﺘﺮﻫﺎ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار
در ﺑﺮﻧﺎﻣﻪﻫﺎي ﻓﺮﻋﻲ دو
c
*
b
ﻣﺤﻠﻲ ﻳﺎ ﻣﺘﻐﻴﺮﻫﺎي ﺳﺮاﺳﺮ ﻫﺴﺘﻨﺪ.ﻣﺘﻐﻴﺮﻫﺎي
ﻣﺘﻐﻴﺮﻫﺎي
ﻣﻲﮔﮔﻴﺮﻧﺪ .اﻳﻦ ﻣﺘﻐﻴﺮﻫﺎ
e
u
ﻞ اﺳﺘﻔﺎده ﻫﺴﺘﻨﺪ .وﻟﻲ
ﻲ
ﻣﺮﺑﻮط ﺑﻪ ﺧﻮد ﻗﺎﺑﻞ
ﻲ ﻫﺴﺘﻨﺪ ﻛﻪ در ﺑﻼك
ﻣﺤﻠﻲ ،ﻣﺘﻐﻴﺮﻫﺎﻳﻲ
ﻲ
n
p
*
wدﺳﺘﺮس ﻣﻲﺑﺎﺷﻨﺪ.
ﻣﺘﻐﻴﺮﻫﺎي ﺳﺮاﺳﺮي در ﺗﻤﺎم ﺑﺮﻧﺎﻣﻪﻫﺎي ﻓﺮﻋﻲ ﻗﺎﺑﻞ
w
w
ﻣﺘﻐﻴﺮﻫﺎي ﻣﺤﻠﻲ در داﺧﻞ ﺑﺮﻧﺎﻣﻪﻫﺎي ﻓﺮﻋﻲ در ﻗﺴﻤﺖ ﺗﻌﺎرﻳﻒ ﻣﻌﺮﻓﻲ ﻣﻲﺷﻮﻧﺪ
ﻲ ﻴﻧﻴﺴﺘﻨﺪ.
دﺳﺘﺮﺳﻲ
ﺑﻞ ﺮ
ل ﻗﺎﺑﻞ
روال
رج ازز رو
و درر ﺧﺎرج
. ﺭﻭﺍﻟﻲ ﺑﺮﺍي ﻣﺤﺎﺳﺒﻪ ﻣﺠﻤﻮﻉ ﻭ ﻣﻴﺎﻧﮕﻴﻦ ﺩﻭ ﻋﺪﺩ ﺑﻨﻮﻳﺴﻴﺪ: ﻣﺜﺎﻝ
Procedure
Var
CalcSumAve ( Num1 , Num2: Read );
m
o
c
*
Begin
b
e
Sum:= Num1 + Num2
;
u
Ave:= Sum / 2 ; n
p
*
WriteLn(' The Sum is =' , sum:8:2 ) ;
w
WriteLn('
The average is =',ave:8:2);
w
End;{End of procedure}
w
Sum , Ave: Real ;
در ﻣﺜﺎل ﺑﺎﻻ sum , Aveﻣﺘﻐﻴﺮﻫﺎي ﻣﺤﻠـﻲ ﻣـﻲﺑﺎﺷـﻨﺪ .ﺑـﺮاي ﻓﺮاﺧـﻮاﻧﻲ روال
;) CalcSumAve(x.yﻛﻪ درآن x.yدو ﻣﺘﻐﻴﺮ ازﻧـﻮع Realﻣـﻲﺑﺎﺷـﻨﺪ .ﺑـﻪ
ﺷﻜﻞ زﻳﺮﺗﻮﺟﻪﻛﻨﻴﺪ:
m
o
c
*
b
e
Num1
u
ﭘﺎراﻣﺘﺮﻫﺎي ﺻﻮري
Num2
ﻣﺘﻐﻴﺮﻫﺎي ﻣﺤﻠﻲ
Sum
Ave
n
*p
واﻗﻌﻲ
ﻫﺎي واﻗﻌ
ﭘﺎراﻣﺘﺮﻫﺎي
ﭘﺎراﻣﺘ
X
w
w
Y
w
. ﺧﺮﻭﺟﻲ ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﺭﺍ ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ: ﻣﺜﺎﻝ
Program
g
Example6;
p ;
Var
A , b , c: integer ;
{Global Variables}
Procedure
test(var b: integer ; a: integer );
Var
D: integer
i
; {local
{l l variable}
i bl }
Begin
D:= 12 ; a:= b + d ; b:= a + c ; c:= c+ 2 ;
End;
Begin
eg {Main}
{
}
A:=1; b:=2; c:=3;
Test(a,b);
WriteLn( ' a = ' , a ,' b = ' , b , ' c = ' , c ) ;
End.{End of program}
::اﺳﺖ
زﻳﺮ ا ﺖ
ت زﻳ
ﺑﺼﻮرت
ﻧﺎﻣﻪ ﺑﺎﻻ ﺑﺼ
ﺧﺮوﺟﻲ ﺑﺑﺮﻧﺎﻣﻪ
ﺧ وﺟ
a =16 b=2 c=5
m
o
c
*
b
e
u
w
w
w
n
*p
ﻻ ﺑﻪ ﺳﻪ ﺷﻜﻞ ﻇﺎﻫﺮ ﻣﻲﺷﻮﻧﺪ :
ﺭﻭﺍﻝﻫﺎ ﻣﻌﻤﻮ ﹰ
m
o
c
*
b
e
uﺑﺎ ﺧﺎﺻﻴﺖ ورودي
ﺑﻜﺎرﮔﻴﺮي روال ﻫﻤﺮاه ﭘﺎراﻣﺘﺮﻫﺎي
n
p
*
wورودي و ﺧﺮوﺟﻲ
ﺑﻜﺎرﮔﻴﺮي روال ﻫﻤﺮاه ﭘﺎراﻣﺘﺮﻫﺎي ﺑﺎ ﺧﺎﺻﻴﺖ
w
w
ﺑﻜﺎرﮔﻴﺮي روالﻫﺎي ﺑﺪون ﭘﺎراﻣﺘﺮ
ﺑﻜﺎﺭﮔﻴﺮي ﺭﻭﺍﻝﻫﺎي ﺑﺪﻭﻥ ﭘﺎﺭﺍﻣﺘﺮ
m
oﻓﺮﻋﻲ ﻛﺎﻣﻼً ﻣﺴﺘﻘﻞ )ﺑﻲﻧﻴﺎز از ﻣﻘﺎدﻳﺮ ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ( در
ﮔﺎﻫﻲ ﻻزم اﺳﺖ ﺗﺎ ﺑﺮﻧﺎﻣﻪ
ﺶﻫﺎيي ﻣﺨﺘﻠﻒ ﻳﻳﻚ ﺑﺮ c
ﭘﺎراﻣﺘﺮﺮ
ﻧﻴﺎز ﺑﺑﻪ اﺳﺘﻔﺎده ازز ﭘ ر
ﺻﻮرت ﻴ ز
ﻳﻦ ﻮر
در اﻳﻦ
ﺷﻮد .ر
اﺟﺮا ﻮ
ﺑﺮﻧﺎﻣﻪ*ﺟﺮ
ﺑﺑﺨﺶ
b
ﺑﺪون ﭘﺎراﻣﺘﺮ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ.
ﺑﻲﻣﻔﻬﻮم ﻣﻲﺑﺎﺷﺪ و از رواﻟﻬﺎي
e
u
n
p
*
ﻏﺎﻟﺒﺎً زﻣﺎﻧﻴﻜﻪ ﺑﺨﻮاﻫﻴﻢ ﭘﻴﻐﺎمﻫﺎي ﺧﺎﺻﻲ را در ﻗﺴﻤﺘﻬﺎي ﻣﺨﺘﻠﻒ ﺑﺮﻧﺎﻣﻪ ﻧﻤﺎﻳﺶ
دﻫﻴﻢ ،اﻳﻦ ﭘﻴﻐﺎممﻫﺎ را در ﻳﻚ روال ﻗﺮار داده و درw
ﺻﻮرت ﻧﻴﺎز ،روال
ﻢ
w
ﻣﺮﺑﻮﻃﻪ را ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﻛﻨﻴﻢ.
w
. ﺑﺪﻭﻥ ﺩﺭﻳﺎﻓﺖ ﭘﺎﺭﺍﻣﺘﺮي ﻓﺮﺍﺧﻮﺍﻧﻲ ﻣﻲﺷﻮﺩHead ﺭﻭﺍﻝ: ﻣﺜﺎﻝ
Program
P
Procedure
Begin
E
Example
l ;
Head ;
m
o
c
*
b
WriteL('Name Familye Age No');
u
WriteLe('……………………………...');
(
)
n
p
*
End;
w
Begin{Main}
w
W i Lw( ' open university
WriteLn(
i
i ' );
Head;
End.
End
ﺑﻜﺎﺭﮔﻴﺮي ﺭﻭﺍﻝ ﻫﻤﺮﺍﻩ ﭘﺎﺭﺍﻣﺘﺮﻫﺎي ﺑﺎ ﺧﺎﺻﻴﺖ ﻭﺭﻭﺩي
m
o
c
*
b
ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﺑﻪ روالﻫﺎ ﻣﻲﺑﺎﺷﺪe.اﮔﺮ اﻳﻦ اﻧﺘﻘﺎل ﻳﻚ ﻃﺮﻓﻪ ﺑﺎﺷﺪ ﻳﻌﻨﻲ ﻓﻘﻂ از
u
n
ﺧﺎﺻﻴﺖ ورودي ﺧ اﻫﻨﺪ
ﺧﻮاﻫﻨﺪ
ﭘﺎراﻣﺘﺮﻫﺎ ﻓﻘﻂ ﺧﺎ ﺖ
pﻫﺎ
ﺑﺎﺷﺪ ،ااﻳﻦ ﻧﻧﻮعع ﺎ ا ﺘ
روال ﺎﺷﺪ
ﺑﻪ ال
اﺻﻠﻲ ﻪ
ﺑﺮﻧﺎﻣﻪ ا ﻠ
ﻧﺎ ﻪ
*
داﺷﺖ) .ﻗﺒﻼ در اﻳﻦ ﻣﻮرد ﺗﻮﺿﻴﺢ داده ﺷﺪه w
اﺳﺖ( در اﻳﻦ ﻧﻮع روالﻫﺎ از
w
w
ﭘﺎراﻣﺘﺮﻫﺎي ﻣﻘﺪاري اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ.
ﻛﺮدﻳﻢ ،ﻫﺪف از ﺑﻜﺎرﮔﻴﺮي ﭘﺎراﻣﺘﺮﻫﺎ اﻧﺘﻘﺎل ﻣﻘﺎدﻳﺮ از
ﻢ
ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻗﺒﻼً اﺷﺎره
.ﻧﻤﺎﻳﺪ
پ ﻳ
ﭼﺎپ
ﺮوﺟﻲ ﭼ
درﺧﺮوﺟﻲ
ررا رN ﺗﺎ1ﻣﺮﺑﻌﺎت اﻋﺪاد
ﺗﻮﺳﻂ آن ﺮﺑ
ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻮ
رواﻟﻲ ﺑ ﻮﻳ ﻴ
رو ﻲ: ﻣﺜﺎل
Program
Var
Example ;
m
o
c
*
b
e
u
N , I: integer ;
Procedure sqq ( M: integer
g ) ;
Begin
WriteLn (' sqart is = ' , M * M ) ;
End;
Begin {Main}
Write(' Enter Number = ')) ;
Write(
RealLn ( N ) ;
For
o
I:=
: 1 to N do
Sq (i) ;
End. {End of program}
w
w
w
n
*p
ﺑﻜﺎﺭﮔﻴﺮي ﺭﻭﺍﻝ ﻫﻤﺮﺍﻩ ﭘﺎﺭﺍﻣﺘﺮﻫﺎي ﺑﺎ ﺧﺎﺻﻴﺖ ﻭﺭﻭﺩي ﻭ ﺧﺮﻭﺟﻲ
m
o
c
*
ل دادهﻫﺎ ازز
ﻲ اﻧﺘﻘﺎل
دارﻧﺪ ﻳﻳﻜﻲ
ﻬﻢ ر
ﺧﺎﺻﻴﺖ ﻣﻬﻢ
ﭘﺎراﻣﺘﺮﻫﺎ دوو ﺻﻴ
لﻫﺎ ﭘ ر ﺮ
روال
ﻧﻮع رو
ﻳﻦ ﻮع
در اﻳﻦ
ر
b
e
ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﺑﻪ روال و دﻳﮕﺮي اﻧﺘﻘﺎلuﻳﺎ ارﺟﺎع ﻧﺘﺎﻳﺞ از روال ﺑﻪ ﺑﺮﻧﺎﻣﻪاﺻﻠﻲ
n
ﻣﺘﻐﻴﺮي اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ.
ﻣﻲﺑﺎﺷﺪ .در اﻳﻦ ﻧﻮع روالﻫﺎ از ﭘﺎراﻣﺘﺮﻫﺎي*p
w
w
w
ﺑﻌﻨﻮان ﭘ ر ﺮ
ﭘﺎراﻣﺘﺮ
دوﻋﺪد ﺑ ﻮ
ﺗﻮﺳﻂ آن و
ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻮ
changeﺑ ﻮﻳ ﻴ
ﻲ ﺑﺑﻨﺎمم g
رواﻟﻲ
ﻣﺜﺎل :رو
درﻳﺎﻓﺖ ﻛﺮده ،ﻣﻘﺎدﻳﺮ اﻳﻦ دو ﻣﺘﻐﻴﺮ را ﺟﺎﺑﺠﺎ ﻧﻤﻮده و ﻧﺘﻴﺠﻪ را در ﺑﺮﻧﺎﻣﻪ
اﺻﻠﻲ ﭼﺎپ ﻧﻤﺎﻳﺪ.
m
o
; Program Example
Var
; A , bb: iinteger
; )Procedure change (var x , y: integer
var
;temp:integer
Begin
g
;Temp:=x
;X:=y
;Y:=temp
;End
c
*
b
e
u
n
*p
w
w
w
B i { Main
Begin
M i }
ReadLn( a , b ) ;
Change( a , b );
WriteLn (' a= ' , a , ' b= ' , b ) ;
End.{End
{
of program}
p g
}
c
*
b
e
u
m
o
w
w
w
n
*p
ﻳﻜﺪﻳﮕﺮ
ﺑﺎ ﻜ ﮕ
ﻫﺎ ﺎ
ﺭﻭﺍﻝ ﺎ
ﺎﻁ ﺍﻝ
ﺍﺭﺗﺒﺎﻁ
ﺍ ﺗ
m
o
c
*
b
e
uﻗﻮاﻧﻴﻦ ﻛﻠﻲ زﻳﺮ اﺳﺖ:
ﻓﺮاﺧﻮاﻧﻲ روالﻫﺎ از داﺧﻞ ﻳﻜﺪﻳﮕﺮ ﺗﺎﺑﻊ
n
*p
ﻗﺎﻧﻮن اول
w
w
ﻗﺎﻧﻮن ددوم
ﻗﺎﻧ ن
w
در ﭘﺎﺳﻜﺎل زﻳﺮ ﺑﺮﻧﺎﻣﻪﻫﺎ ﻧﻪ ﺗﻨﻬﺎ از ﻃﺮﻳﻖ ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﺑﻠﻜﻪ از داﺧﻞ ﻳﻜﺪﻳﮕﺮ ﻧﻴﺰ
ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﺷﻮﻧﺪ.
ﻗﺎﻧﻮن ﺳﻮم
ﻗﺎﻧﻮﻥ ﺍ ﻝ
ﺍﻭﻝ
ﻗﺎﻧ
m
oﻓﺮﻋﻲ( ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻓﺮﻋﻲ در ﺻﻮرﺗﻲ ﻣﻲﺗﻮان ،دﺳﺘﺮﺳﻲ
از ﻫﺮ ﺑﺮﻧﺎﻣﻪ )اﺻﻠﻲ ﻳﺎ
c
*
ﻗﺮارر داﺷﺘﻪ ﺑﺑﺎﺷﺪ.
ﻲ( ﺮ
ﻓﺮﻋﻲ
اﺻﻠﻲ ﻳﻳﺎ ﺮ
ﺑﺮﻧﺎﻣﻪ ) ﺻ ﻲ
آن ﺑﺮ
ﺗﻌﺎرﻳﻒ ن
ﺑﺨﺶ رﻳ
در ﺑ ﺶ
داﺷﺖ ،ﻛﻪ ر
b
e
nﻣﻲﺗﻮاﻧﺪ ،ﺑﻪ ﻛﻠﻴﻪ ﺑﺮﻧﺎﻣﻪﻫﺎي ﻓﺮﻋﻲ
Mu
ﺑﻄﻮر ﻣﺜﺎل در ﺷﻜﻞ زﻳﺮ ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ
اﺻﻠﻲ ﻗﺮار دارﻧﺪ ،ﻣﺮاﺟﻌﻪ ﻛﻨﺪ
p1,p2و… ﻛﻪ در ﺑﺨﺶ ﺗﻌﺎرﻳﻒ ﺑﺮﻧﺎﻣﻪ*p
w
w
w
Main
c
*
b
e
Proc2
u
.n
*p .
Proc1
w
w
w
m
o
.
.
ProcN
ﺑﺮﻧﺎﻣﻪ
ﺍﺻﻠﻲ
ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ
ﻓﺮﻋﻲ
program Main;
var
……..
procedure proc1;
var
……..
Begin
………
End;
Procedure proc2;
Var
………
Begin
……
end;
d
Begin {Main}
Proc1;
Proc2;
End.
: ﺑﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ: ﻣﺜﺎل
m
o
c
*
b
e
u
w
w
w
n
*p
m
o
ﺷﺪهاﻧﺪ .ﻟﺬا
ﻒ ﺷﺪ
اﺻﻠﻲ Mainﺗﺗﻌﺮﻳﻒ
ﺑﺮﻧﺎﻣﻪ ا ﻠ
ﻫﺎي proc1 , proc2داﺧﻞ ﻧﺎ ﻪ
روالﻫﺎ
ال
ﺑﺮاﺣﺘﻲ ﻣﻲﺗﻮان در ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﺑﻪ آﻧﻬﺎ دﺳﺘﺮﺳﻲ ﭘﻴﺪا ﻛﺮد.
c
*
b
eﻗﺮار ﺑﮕﻴﺮﻧﺪ .دﻗﻴﻘﺎً ﻣﺜﻞ روالﻫﺎي ﻣﻌﻤﻮﻟﻲ
روالﻫﺎ ﺧﻮد ﻧﻴﺰ داﺧﻞ ﻫﻢ ﻣﻲﺗﻮاﻧﻨﺪ
u
ﺗﻌﺮﻳﻒ ﺷﻮﻧﺪ .ﺑﻪ اﻳﻨﮕﻮﻧﻪ رواﻟﻬﺎ ،اﺻﻄﻼﺣﺎً
ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ در داﺧﻞ روال ﺑﺎﻳﺪ
n
روالﻫﺎي ﻣﺘﺪاﺧﻞ ﻳﺎ ﺗﻮدرﺗﻮ ﻣﻲﮔﻮﻳﻨﺪ*p .
w
w
w
ﻗﺎﻧﻮﻥ ﺩﻭﻡ
ﻗﺎﻧ
m
o
ﺗﻌﺎرﻳﻒ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻣﻮازات ﻳﻜﺪﻳﮕﺮ ﺗﻌﺮﻳﻒ ﺷﻮﻧﺪ و
اﮔﺮ روالﻫﺎ در ﺑﺨﺶ
c
*
b
eاﻣﻜﺎن رﺟﻮع ﺑﻪ روالﻫﺎي ﻗﺒﻠﻲ وﺟﻮد
ﻧﻪ در داﺧﻞ ﻫﻢ ،در روالﻫﺎي ﺑﻌﺪي
u
n
دﺳﺘﺮﺳﻲ ﭘﻴﺪا ﻛﺮد ﻛﻪ ﻗﺒﻼً ﺗﻌﺮﻳﻒ
ﺧﻮاﻫﺪ داﺷﺖ .ﺑﻌﺒﺎرت دﻳﮕﺮ ﺑﻪ رواﻟﻲ ﻣﻲﺗﻮان*p
w
w
ﺑﺎﺷﺪ.
ﺷﺪه ﺎﺷ
ﺷ
w
ﺑﻄﻮﺭ ﻣﺜﺎﻝ ﺍﮔﺮ p1,p2,p3ﺳﻪ ﺭﻭﺍﻝ ﺑﺎﺷﻨﺪ ﺩﺭﺍﻳﻨﺼﻮﺭﺕ ﻣﻲﺗﻮﺍﻥ
ﺯﻳﺮﻋﻤﻞ ﻛﻛﺮﺩ:
ﻞ
ﺑﺼﻮﺭﺕ
ﺍﺻﻠﻲ
ﺑﺮﻧﺎﻣﻪﻪ ﺍ ﻠ
ﻧﺎ
m
o
Main
i
c
*
b
e
u
ﺭﻭﺍﻝ ﻫﺎ
در ﺷﻜﻞ ﺑﺎﻻ ﭼﻮن p2ﻗﺒﻼً ﻣﻌﺮﻓﻲ
ﻞ p3
p
آﻧﺮا داﺧﻞ
ﺗﻮان ﺮ
ﻲﻮن
ﺷﺪه اﺳﺖ ﻣﻲ
ﻓﺮاﺧﻮاﻧﻲ ﻛﺮد.
n
*p
P1
w
P2
w
wP3
P2
ﻗﺎﻧﻮﻥ ﺳﻮﻡ
ﻗﺎﻧ
m
ﺗﻌﺎرﻳﻒ ﺑﺮﻧﺎﻣﻪأي ﺑﺼﻮرت ﻣﺘﺪاﺧﻞ ﺑﺎﺷﻨﺪ ،در اﻳﻨﺼﻮرت
اﮔﺮ روالﻫﺎ در ﺑﺨﺶ
o
*
ﺗﻌﺮﻳﻒ ﺷﺪه،
ﻲ ﻛﻪ ﻗﺒﺒﻼً ﺮﻳ
ﺑﻴﺮوﻧﻲ
ﻫﺎي ﺑﻴﺮو
روال ي
ﺗﻮان ﺑﺑﻪcرو
ﻲﻮ
دروﻧﻲ ﻣﻲ
روال رو ﻲ
از رو
ز
b
دروﻧﻲ ﺑﻪ روالﻫﺎي ﺑﻴﺮوﻧﻲ ﻛﻪ ﺑﻪ ﻣﻮازات
ﻣﺮاﺟﻌﻪ ﻛﺮد و ﻫﻤﭽﻨﻴﻦ از روال
e
u
دﺳﺘﺮﺳﻲ ﭘﻴﺪا ﻛﺮد.
ﻳﻜﺪﻳﮕﺮ ﻗﺮار ﮔﺮﻓﺘﻪاﻧﺪ ،ﻧﻴﺰ ﻣﻲﺗﻮان
n
*p
ﺑﻄﻮر ﻣﺜﺎل در ﺷﻜﻞ زﻳﺮ روال p1ﻣﻲﺗﻮاﻧﺪ ﺑﻪ روالw
ﻫﺎي p2,p3دﺳﺘﺮﺳﻲ
روالw
ﻣﺮاﺟﻌﻪﻪ ﻛﻨﺪ.
ﻫﺎي p2 , p3ا
ﺑﻪ ال
ﺗﻮاﻧﺪ ﻪ
دروﻧﻲ p4ﻣﻲﺗ اﻧﺪ
ال د ﻧ
ﻦ روال
وﻫﻤﭽﻨﻴﻦ
ﺪا ﻛﻨﺪ .ﻫ ﻨ
ﭘﻴﺪا
w
ﺑﺮﻧﺎﻣﻪ ﺍﺻﻠﻲ
Main
m
o
c
*
b
e
u
P3
P2
w
P1
w
w
n
*p
ﺭﻭﺍﻝ ﻫﺎ
ﺭﻭﺵ forward
ﺭﻭﺍﻝﻫﺎ ﺑﻪ ﻭﺵ
ﺍﻋﻼﻥ ﻭﺍﻝ
m
o
ﺗﻮان در روال دﻳﮕﺮ اﺳﺘﻔﺎده ﻛﺮد،
رواﻟﻲ ﻣﻣﻲﺗﻮان
ﻗﺒﻼ اﺷﺎره ﻛﺮدﻳﻢ از رواﻟ
ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻗﺒﻼً
c
*
b
e
u
ﻓﻮق ﺑﺑﻪ ﻛﻤﻚ اﻋﻼن
ﺗﻮرﺑﻮﭘﺎﺳﻜﺎل ﻧﻘﻴﺼﻪ ﻮ
ﺗﻌﺮﻳﻒ ﺷﺪه ﺑﺑﺎﺷﺪ .در ﻮ ﺑﻮﭘ
ﻛﻪ ﻗﺒﺒﻼً ﺮ
n
*p
forwardﻗﺎﺑﻞ ﺣﻞ اﺳﺖ .ﺑﺪﻳﻦ ﺻﻮرت ﻛﻪ اﮔﺮ رواﻟﻲ ﺑﻪ ﻫﻨﮕﺎم ﺗﻌﺮﻳﻒ ﺑﺎ
w
w
اﻋﻼن forwardﻫﻤﺮاه ﺑﺎﺷﺪ ،ﺑﺪون رﻋﺎﻳﺖ از ﭘﻴﺶ ﺗﻌﺮﻳﻒ ﺷﺪن ﻣﻲﺗﻮاﻧﺪ،
در رواﻟﻬﺎي دﻳﮕﺮ ﻇﺎﻫﺮ ﺷﻮد.
w
ﺷﻜﻞ ﺍﻋﻼﻥ ﺑﻪ ﺭﻭﺵ forwardﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲﺑﺎﺷﺪ:
m
o
; forward
c
*
; ) Name ( parameters
b
e
u
n
*p
ﻛﻠﻤﻪ ﺫﺧﻴﺮﻩ
ﻟﻴﺴﺖ ﭘﺎﺭﺍﻣﺘﺮﻫﺎ
w
w
ﺍﺳﻢ ﺭﻭﺍﻝ
w
Procedure
ﻛﻠﻤﻪ ﺫﺧﻴﺮﻩ ﺷﺪﻩ
ﺷﺪﻩ
ﺷ
Program forward_Main ;
Var
………
Procedure proc3 ; forward ;
Procedure proc1;
var
……..
Begin
………
end;
Procedure proc2;
var
………
Begin
………
proc3;
……
end;
: ﻣﺜﺎﻝ
c
*
b
e
u
m
o
w
w
w
n
*p
Procedure
P
d
proc3;
3
var
……..
Begin
…….
End;
Begin {Main program}
………
proc1;
proc3 ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻼﺣﻈﻪ ﻣﻲﻛﻨﻴﺪ ﺑﺎ اﻋﻼن روال
proc2;
رواﻟﻬﺎ ﻣﻲﺗﻮاﻧﻨﺪ ﺑﻪ آآن
ﺑﻘﻴﻪ ﻟ،forward
f
d ﺑﺼﻮرت
proc3;
.دﺳﺘﺮﺳﻲ ﭘﻴﺪا ﻛﻨﻨﺪ
………
End. {End of program}
m
o
c
*
b
e
u
w
w
w
n
*p
ﺗﻮﺍﺑﻊ )(Functions
m
o
ﻫﺎ،
روالﻫﺎ
ﺎﻧﻨﺪ ال
ﺗﻮاﺑﻊ ﻣﺎﻧﻨﺪ
ﺑﺎﺷﻨﺪ .ﺗ ا
ﺗﻮاﺑﻊ ﻣﻲ ﺎﺷﻨﺪ
ﻓﺮﻋﻲ ،ﺗ ا
ﻫﺎي ﻓ ﻋ
ﺑﺮﻧﺎﻣﻪﻫﺎ
دﻳﮕﺮي از ﻧﺎ ﻪ
ﻧﻧﻮعع د ﮕ
c
*
ﺗﻮاﻧﻨﺪ ،ﺗﻌﺪادي
دي
ﻲﻮ ،
لﻫﺎ ﻣﻲ
روال
ﺗﻔﺎوت ﻛﻪ رو
ﻳﻦ وت
ﻲ ﻫﺴﺘﻨﺪ .ﺑﺑﺎ اﻳﻦ
ي ﻣﺴﺘﻘﻠﻲ
ﭘﻴﻤﺎﻧﻪﻫﺎي
ﭘﻴﻤ
b
e
u
ﻊnﻓﻘﻂ ﻳﻚ ﺧﺮوﺟﻲ دارﻧﺪ .در روالﻫﺎ
ﺧﺮوﺟﻲ داﺷﺘﻪ ﺑﺎﺷﻨﺪ ،در ﺣﺎﻟﻲ ﻛﻪ ﺗﻮاﺑﻊ
*p
ﻣﻌﻤﻮﻻً ﺧﺮوﺟﻲﻫﺎ ﺗﻮﺳﻂ ﭘﺎراﻣﺘﺮ ﺑﻪ ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ w
ارﺟﺎع داده ﻣﻲﺷﻮد .وﻟﻲ
w
w
در ﺗﻮاﺑﻊ اﻳﻨﻜﺎر ﺑﻪ ﻧﺤﻮ دﻳﮕﺮ اﻧﺠﺎم ﻣﻲﮔﻴﺮد.
ﺑﺎﺷﺪ:
ﺗﺎﺑﻊ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲ ﺎﺷ
ﻳﻚ ﺗﺎ
ﺍﻋﻼﻥ ﻚ
ﻛﻠﻲ ﺍ ﻼ
ﺷﻜﻞ ﻛﻠ
m
o
c
*
b
e
u
; Function Name ( List Of Parameters ) : Function Type
ﻧﻮﻉ ﺗﺎﺑﻊ
ﺫﺧﻴﺮﻩ ﺷﺪﻩ
ﻴﺮ
n
p
*
ﻟﻴﺴﺖ ﭘﺎﺭﺍﻣﺘﺮﻫﺎ
w
w
ﺍﺳﻢ ﺗﺎﺑﻊ
w
ﮐﻠﻤﻪ
ﻧﮑﺘﻪ :
ﻧﮑ
m
o
ﺗﺎﺑﻊ
ﻧﻮع ﺗﺎ
ﻫﻤﺎن ﻧ ع
ﺗﺎﺑﻊ ،ﻫ ﺎن
ﺧﺮوﺟﻲ ﺗﺎ
ﺑﺎﺷﺪ .ﻧﻧﻮعع ﺧ
ﺧﺮوﺟﻲ داﺷﺘﻪ ﺎﺷﺪ
ﻚﺧ
ﺗﻮاﻧﺪ ،ﻳﻚ
ﺗﺎﺑﻊ ﻓﻘﻂ ﻣﻲﺗ اﻧﺪ
ﺗﺎ
ﻣﺤﺴﻮب ﻣﻲﺷﻮد .ﻟﺬا ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﻮع ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ،ﻧﻮع ﺗﺎﺑﻊ ﺗﺸﺨﻴﺺ داده
ﺗﻮاﺑﻊ
ﺑﻊ
ي ﺻﻮري ﻮ
ﭘﺎراﻣﺘﺮﻫﺎي
ﻧﻮع ﭘ ر ﺮ
ﺖ ﻛﻪ ،،ﻮع
از ﻟﻄﻒ ﻴﻧﻴﺴﺖ
ﺧﺎﻟﻲ ز
اﻳﻦ ﻧﻜﺘﻪ ﻲ
ذﻛﺮ ﻳﻦ
ﺷﻮد .ﺮ
ﻲ ﻮ
ﻣﻲ
ﻣﻌﻤﻮﻻً ﻣﻘﺪاري ﻫﺴﺘﻨﺪ ﭼﺮا ﻛﻪ ﺗﻮاﺑﻊ ﻧﻮﻋﻲ ﺑﺮﻧﺎﻣﻪﻫﺎي ﻓﺮﻋﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﻓﻘﻂ ﻳﻚ
ﺧﺮوﺟﻲ ﺑﺮﻣﻲﮔﺮداﻧﻨﺪ .ﻟﺬا اﺳﺘﻔﺎده از ﭘﺎراﻣﺘﺮﻫﺎي از ﻧﻮعع ﻣﺘﻐﻴﺮي ﭘﺴﻨﺪﻳﺪه
ﻧﻤﻲﺑﺎﺷﺪ) .اﺷﻜﺎل ﻛﺎﻣﭙﺎﻳﻠﺮي در ﺗﻮرﺑﻮﭘﺎﺳﻜﺎل ﻧﺪارد وﻟﻲ در ﭘﺎﺳﻜﺎل اﺳﺘﺎﻧﺪارد
اﻳﻦ ﻛﺎر اﺷﻜﺎل ﻛﺎﻣﭙﺎﻳﻠﺮي دارد(.
c
*
b
e
u
n
*p
w
w
w
ﻣﻘﺪار ﺧﺮوﺟﻲ ﺗﻮاﺑﻊ ﺗﻮﺳﻂ اﺳﻢ ﺗﺎﺑﻊ ﺑﺮﮔﺮداﻧﺪه ﻣﻲﺷﻮد .ﺗﻮاﺑﻊ ﻣﺜﻞ رواﻟﻬﺎ ﺑﻌﺪ
ﺷﻮد.
ﻲ ﻮ
ﻇﺎﻫﺮ ﻣﻲ
اﺻﻠﻲ ﺮ
ﺑﺮﻧﺎﻣﻪ ﺻ ﻲ
ﺗﻌﺎرﻳﻒ ﺑﺮ
از ﻗﺴﻤﺖ رﻳ
ز
:ﻲﺑﺑﺎﺷﺪ
ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲ
ﺑﻊ ﺑ ﻮﺭ
ﺗﻮﺍﺑﻊ
ﻲ ﻮ
ﻞ ﻛﻠﻲ
ﺷﻜﻞ
Function Name ( Parameters ) : Type ;
Var
………..
B i
Begin
……………..
……………..
……………..
Name := Resualt Of Function ;
End ;
m
o
c
*
b
e
u
w
w
w
n
*p
ﺗﻮﺟﻪ ﺑﻪ ﻧﻜﺎﺕ ﺯﻳﺮ ﺩﺭ ﺑﻜﺎﺭﮔﻴﺮي ﺗﻮﺍﺑﻊ ﺿﺮﻭﺭي ﺑﻨﻈﺮ ﻣﻲﺭﺳﺪ:
m
o
ﻧﻮعع ﻣﻘﺪاري ﺑﺎﺷﻨﺪ.
م
ﺗﻤﺎم ﭘﭘﺎراﻣﺘﺮﻫﺎي ﺗﺎﺑﻊﻊ ﺑﺎﻳﺪ از*c
b
e
u
nﺑﻌﺪ از ﻟﻴﺴﺖ ﭘﺎراﻣﺘﺮﻫﺎي ﺻﻮري
ﻧﻮع داده ﻧﺘﻴﺠﻪ ﺗﺎﺑﻊ در اﻧﺘﻬﺎي ﻋﻨﻮان ﺗﺎﺑﻊ و
ﻗﺮار ﻣﻲﮔﮔﻴﺮد.
ﻗا
*p
w
ﺖ دادن ﻣﻘﺪار ﺑﻪ ﻧﺎمw
ﺷﻮد.
ﺗﺎﺑﻊ ﻣﺸﺨﺺ ﻣﻣﻲﺷﻮد
ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﺑﺎ ﻧﻧﺴﺒﺖ
در ﺑﺪﻧﻪ ﺗﺎﺑﻊ ،ﺧ وﺟ
w
ﺑﺮﻧﺎﻣﻪﺃي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪﺩ ﺍﺯ ﻭﺭﻭﺩي ﺩﺭﻳﺎﻓﺖ ﻛﺮﺩﻩ ﺳﭙﺲ: ﻣﺜﺎﻝ
ﻓﺎﻛﺘﻮﺭﻳﻞ ﻋﺪﺩ ﺭﺍ ﻣﺤﺎﺳﺒﻪ،fact ﺗﻮﺳﻂ ﺗﺎﺑﻌﻲ ﺑﻨﺎﻡ
.ﻧﻤﺎﻳﺪ
ﭼﺎﭖ ﻧ ﺎ
ﺍﺻﻠﻲ ﺎ
ﺑﺮﻧﺎﻣﻪ ﺍ ﻠ
ﺩﺭ ﻧﺎ
Example ;
Program
Var
N: Integer ;
Function
Fact ( M : Integer ) : longint ;
Var
P , I : Integer ;
Begin
P:= 1 ;
For i:= 2 To M do
P:= P * I ;
Fact:= P ;
E d;
End
Begin { Main }
Write ( ' Enter Number = ' ) ; Readln ( N ) ;
Writeln (' Factorial is = ' , Fact ( N ) ) ; {Call Function}
End.
m
o
c
*
b
e
u
w
w
w
n
*p
ﻧﺎﺣﻴﻪ ﺩﺍﺩﻩﻫﺎ ﺑﻌﺪ ﺍﺯ ﻓﺮﺍﺧﻮﺍﻧﻲ ﺑﺸﻜﻞ ﺯﻳﺮ ﻣﻲﺑﺎﺷﺪ:
m
ﺻﻮري
ﭘﺎراﻣﺘﺮﻫﺎي
o
*c M
ﻲ Fact
ﻫﺎي ﺍﺻﻠﻲ
ﻧﺎﺣﻴﻪ ﺩﺍﺩﻩ ي
ﻴ
ﻧﺎﺣﻴﻪ ﺩﺍﺩﻩ ﻫﺎي
ي
ﻴ
b
e
u
ﭘﺎراﻣﺘﺮﻫﺎي واﻗﻌﻲ
N
ﻣﺘﻐﻴﺮﻫﺎي ﻣﺤﻠﻲ
P
I
ﻧﺘﻴﺠﻪ ﺗﺎﺑﻊ
ﻊ
?
n
*p
w
w
ﻧﺘﻴﺠﻪ ﺗﺎﺑﻊ
w
?
ﺗﻮﺍﺑﻊ ﺑﺎﺯﮔﺸﺘﻲ )(Recursion Functions
m
o
در ﭘﺎﺳﻜﺎل ﻳﻚ ﺗﺎﺑﻊ ﻳﺎ روال ﻣﻲﺗﻮاﻧﺪ ،ﺧﻮدش را ﻓﺮاﺧﻮاﻧﻲ ﻧﻤﺎﻳﺪ .ﭘﻴﻤﺎﻧﻪاي ﻛﻪ
c
*
bﭘﻴﻤﺎﻧﻪ ﺑﺎزﮔﺸﺘﻲ ﻧﺎم دارد .اﻳﻦ ﻧﻮع ﺗﻮاﺑﻊ در
ﺧﻮدش را ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﻛﻨﺪ ﻳﻚ
e
ﻛﻨﻨﺪ .اﻳﻦ ﻓﺮاﺧﻮاﻧﻲ ﺗﺎ ﺑﺮﻗﺮاري ﻳﻚ
ﺑﺪﻧﻪ ﺧﻮد ،ﺧﻮدﺷﺎن را ﻓﺮاﺧﻮاﻧﻲ ﻣﻲ
u
n
*ﺷﻮد ،اداﻣﻪ ﭘﻴﺪا ﻣﻲﻛﻨﺪ .ﺳﭙﺲ
ﺷﺮط ﺧﺎص ﻛﻪ ﻏﺎﻟﺒﺎً ﺑﻪ ﻳﻚ ﻋﺪد ﺛﺎﺑﺖ ﺧﺘﻢpﻣﻲ
w
ﺗﺎﺑﻊ ﺣﺎﺻﻞ
ﻞ
ﻧﺘﻴﺠﻪ ﺑﻊ
wﻴﺠ
ﻧﻬﺎﻳﺖ
در ﻬ ﻳ
ﻲﺷﻮد و ر
ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﻮ
ﺒ
ﻳﻴﻦ ﺑﺑﻪ ﺑﺑﺎﻻ
ﺑﻊ ازز ﭘﭘﺎﻳﻴﻦ
ﻣﻘﺪارر ﺗﺎﺑﻊ
w
ﻣﻲﺷﻮد.
ﻣﺘﻐﻴﺮﻫﺎي ﺧﻮد
ﺎ
ﻓﻌﻠﻲ
ﻣﻘﺎدﻳﺮ ﻓ ﻠ
ﻣﺮاﺟﻌﻪ ﻣﻲﻛﻛﻨﺪ ،ﻘﺎ
ﺑﺎزﮔﺸﺘﻲ ﺑﻪ ﺧﻮد ا
ﺗﺎﺑﻊ ﺎ ﮔﺸ
ﻫﻨﮕﺎﻣﻲ ﻛﻛﻪ ﺎ
ﮕﺎ
m
o
اﮔﺮ ﺑﺎزﮔﺸﺖ ﺑﻪ ﺗﺎﺑﻊ
ار ﻣﻣﻲدﻫﺪ ،اﮔ
ﻣﺤﻠﻲ از ﺣﺎﻓﻈﻪ ﺑﻨﺎم ﭘﺸﺘﻪ ) (stackﻗﻗﺮار
را در ﻣﺤﻠ
c
*
b
e
u
ﻣﻘﺎدﻳﺮ ﺒﻗﺒﻠﻲ
ﻲ
ﻳﺮ
ﺑﺪﻧﺒﺎل
ﻣﺠﺪداً ﺑ ﺒ
ﻣﺘﻐﻴﺮﻫﺎ ﺠ
ﻲ ﻴﺮ
ﻳﺮ ﻓﻌﻠﻲ
ﮔﻴﺮد ،ﻣﻘﺎدﻳﺮ
ﺻﻮرت ﻴﺮ
ﻣﺠﺪداً ﻮر
ﺑﺎزﮔﺸﺘﻲ ﺠ
ﺑز ﻲ
n
*p
و اﺻﻄﻼﺣﺎً در ﭘﺸﺖ ﻣﻘﺎدﻳﺮ اوﻟﻴﻪ ﻗﺮار ﻣﻲﮔﻴﺮﻧﺪ .ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﺷﺮط ﭘﺎﻳﺎﻧﻲ در
w
w
ﺗﺎﺑﻊ ﺑﺎزﮔﺸﺘﻲ رخ ﻣﻲ دﻫﺪ ،در اوﻟﻴﻦ ﺑﺎزﮔﺸﺖ ﻣﻘﺎدﻳﺮي را ﻛﻪ ﻫﻨﮕﺎم ﻣﺮاﺟﻌﻪ
w
ﺑﻪ ﺧﻮد ،در ﭘﺸﺘﻪ ﻧﮕﻬﺪاري ﻛﺮده ،ﻣﺠﺪداً در دﺳﺘﺮس ﻗﺮار ﻣﻲدﻫﺪ و ﺑﻬﻤﻴﻦ
ﺗﺮﺗﻴﺐ در ﺑﺎزﮔﺸﺖﻫﺎي ﺑﻌﺪي اﻳﻦ ﻋﻤﻞ ﺗﻜﺮار ﻣﻲﺷﻮد ﺗﺎ ﻣﻘﺪار ﺗﺎﺑﻊ ﻣﺤﺎﺳﺒﻪ ﺷﻮد.
ﻜﻞ زﻳﺮ ﻧﺤﻮه ﻗﺮار ﮔﻔﺘﻦ ﻣﺮاﺟﻌﻪﻫﺎي ﻳﻚ ﺗﺎﺑﻊ ﺑﺎزﮔﺸﺘﻲ ﺑﻪ ﭘﺸﺘﻪ را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ.
ﺷﺮط ﭘﺎﻳﺎﻧﻲ
m
o
ﻣﻘﺎدﻳﺮ ﻣﺘﻐﻴﺮﻫﺎ درآﺧﺮﻳﻦ ﺑﺎزﮔﺸﺖ ﺑﻪ ﺗﺎﺑﻊ
.
.
.
.
.
c
*
b
e
u
n
*p
w
w
w
ﺗﺎﺑﻊ
ﺑﺎزﮔﺸﺖ ﺑﻪ ﺗﺎ
ﻣﺘﻐﻴﺮﻫﺎﺎ در ﺳﻮﻣﻴﻦ ﺎزﮔﺸ
ﻣﻘﺎدﻳﺮ ﻐ
ﻘﺎ
ﻣﻘﺎدﻳﺮ ﻣﺘﻐﻴﺮﻫﺎ در دوﻣﻴﻦ ﺑﺎزﮔﺸﺖ ﺑﻪ ﻊ
ﺗﺎﺑﻊ
ﻣﻘﺎدﻳﺮ ﻣﺘﻐﻴﺮﻫﺎ در اوﻟﻴﻦ ﺑﺎزﮔﺸﺖ ﺑﻪ ﺗﺎﺑﻊ
ﺗﺮﺗﻴﺐ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﻣﻘﺎﺩﻳﺮ ﻫﻨﮕﺎﻡ ﺑﺎﺯﮔﺸﺖ ﺍﺯ ﺗﺎﺑﻊ ﺑﺎﺯﮔﺸﺘﻲ ﺍﺯ ﺑﺎﻻ ﺑﻪ ﭘﺎﻳﻴﻦ ﻣـﻲﺑﺎﺷـﺪ ﻭ
ﺩﺍﺩ:
ﻧﻤﺎﻳﺶ ﺍ
ﺁﻧﺮﺍ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻧ ﺎ ﺶ
ﺗﻮﺍﻥ ﺁﻧ ﺍ
ﻣﻲﺗ ﺍ
m
o
ﻳﻦ ﺑﺎزﮔﺸﺖ ﺑﻪ ﺗﺎﺑﻊ
درآﺧﺮﻳﻦ
ﻫﺎ د آﺧ
ﻣﺘﻐﻴﺮﻫﺎ
ﻣﻘﺎدﻳﺮ ﻣﺘﻐ
ﻣﻘﺎدﻳ
c
*
b
e
u
.
.
.
.
.
n
*p
w
w
w
ﻣﻘﺎدﻳﺮ ﻣﺘﻐﻴﺮﻫﺎ در ﺳﻮﻣﻴﻦ ﺑﺎزﮔﺸﺖ ﺑﻪ ﺗﺎﺑﻊ
ﻣﻘﺎدﻳﺮ ﻣﺘﻐﻴﺮﻫﺎ در دوﻣﻴﻦ ﺑﺎزﮔﺸﺖ ﺑﻪ ﺗﺎﺑﻊ
ﻣﻘﺎدﻳﺮ ﻣﺘﻐﻴﺮﻫﺎ در اوﻟﻴﻦ ﺑﺎزﮔﺸﺖ ﺑﻪ ﺗﺎﺑﻊ
ﺑﺮﻧﺎﻣﻪأي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ ﺑﺎزﮔﺸﺘﻲ ﻓﺎﻛﺘﻮرﻳﻞ ﻋﺪد ﺻﺤﻴﺢ: ﻣﺜﺎل
.ﻧﻤﺎﻳﺪ
ﻣﺤﺎﺳﺒﻪ ﻧ ﺎ ﺪ
را ﺎ
اN
Program
Example ;
Var
N : integer ;
Function
Fact ( N : integer ) : Longint ;
Begin
g
If N = 1 Then
Fact:= 1
Else
Fact:= N * Fact ( N – 1 ) ;
End ;
Begin
Writeln
W
te ( ' Enter
te Number
Nu be ' ) ;
Writeln ( ' Factorial is = ' , Fact ( N ) ); {Call Function}
. End
m
o
c
*
b
e
u
w
w
w
n
*p
ﺑﺎﺷﺪ:
ﭘﺸﺘﻪ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲ ﺎﺷ
ﻣﻘﺎﺩﻳﺮ ﺩﺭ ﺸ
ﮔﺮﻓﺘﻦ ﻘﺎ
ﻗﺮﺍﺭ ﮔ ﻓ
ﺗﺮﺗﻴﺐ ﻗ ﺍ
ﺑﺎﻻ ﺗ ﺗ
ﺑﺮﻧﺎﻣﻪ ﺎﻻ
ﺩﺭ ﻧﺎ
m
o
c
*
b
e
u
N=1
Fact := 1
2 * Fact
F
) ( 1
n
*p
) 3 * Fact ( 2
w
w
) 4 * Fact ( 3
N=5
w
) 5 * Fact ( 4
ﻣﺸﺘﺮﻙ ﺩﻭﻭ ﻋﺪﺩ ﺻﺤﻴﺢ
ﻴﺢ
ﻋﻠﻴﻪ ﺮ
ﻮﻡ ﻴ
ﺮﻳﻦ ﻣﻘﺴﻮﻡ
ﺑﺰﺭﮔﺘﺮﻳﻦ
ﻣﺤﺎﺳﺒﻪ ﺑﺰﺭ
ﺒ
ي
ﺑﺮﺍي
ﺗﺎﺑﻌﻲ ﺑﺮ
ﺑ ﻲ:ﻝ
ﻣﺜﺎﻝ
. ﺑﻨﻮﻳﺴﻴﺪN , M
m
o
Function
GCD ( N , M: integer ) : Integer ;
Begin
If ( N <=
< M ) andd ( M Mod
M d N = 0 ) Then
Th
GCD:= N
Else
GCD:= GCD ( M ,N mod M ) ;
End ;
c
*
b
e
u
w
w
w
n
*p
ﻣﻘﺎﻳﺴﻪ ﺗﻮﺍﺑﻊ ﻭ ﺭﻭﺍﻝﻫﺎ
ﺗﻮاﺑﻊ و روالﻫﺎ ﻫﺮ دو ﺑﺮﻧﺎﻣﻪﻫﺎي ﻓﺮﻋﻲ ﻫﺴﺘﻨﺪ ،ﻛﻪ ﺑﻄﻮر ﻣﺴﺘﻘﻞ وﻇﺎﻳﻔﻲ را ﺑﺮ
ﻋﻬﺪه دارﻧﺪ .وﻟﻲ در اﻳﻦ ﻣﻴﺎن از ﺑﻌﻀﻲ ﺟﻨﺒﻪﻫﺎ ﻣﺘﻔﺎوت ﻣﻲﺑﺎﺷﻨﺪ ﻛﻪ ﻋﺒﺎرﺗﻨﺪ از:
m
o
c
*
b
e
u
ﻢ ﻣﺘﻔﺎوت اﺳﺖ .روالﻫﺎ از ﻃﺮﻳﻖ ﻋﺒﺎرات روال ﻓﺮاﺧﻮاﻧﺪ
.1ﻧﺤﻮه ﻓﺮاﺧﻮاﻧﻲ آﻧﻬﺎ ﺑﺎ ﻫﻢ
ﻣﻲﺷﻮﻧﺪ ،درﺻﻮرﺗﻲ ﻛﻪ ﻓﺮاﺧﻮاﻧﻲ ﺗﺎﺑﻊ ﺗﻮﺳﻂ ﻋﺒﺎرات ﻣﻘﺎﻳﺴﻪأي و ﻳﺎ ﺗﺨﺼﻴﺺ
ﻧﺘﻴﺠﻪ ﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮ ﺻﻮرت ﻣﻲﮔﻴﺮد.
n
*p
w
w
.2ﻫﻨﮕﺎم اﻋﻼن ﻳﻚ ﺗﺎﺑﻊ ،ﻧﻮع ﺗﺎﺑﻊ ﻳﺎ ﻧﻮع ﻧﺘﻴﺠﻪ ﺣﺎﺻﻞ از ﺗﺎﺑﻊ ﺑﺎﻳﺪ ذﻛﺮ ﺷﻮد ،در
ﺻﻮرﺗﻲ ﻛﻪ روالﻫﺎ ﻧﻴﺎزي ﺑﻪ اﻳﻦ ﻛﺎر ﻧﺪارﻧﺪ.
ﺻﻮرﺗ
w
ﭼﻨﺪﻳﻦ ﺮوﺟﻲ
ﺧﺮوﺟﻲ
ﺗﻮاﻧﻨﺪ ،ﭼ ﻳﻦ
ﻲﻮ
روالﻫﺎ ﻣﻲ
وﻟﻲ رو
ﮔﺮداﻧﻨﺪ ،و ﻲ
ﻲ ﺮ
ﺑﺮﻣﻲ
ﺮوﺟﻲ ﺑﺮ
ﺑﻊ ﻓﻘﻂ ﻳﻳﻚ ﺧﺮوﺟﻲ
ﺗﻮاﺑﻊ
.3ﻮ
ﺑﺮﮔﺮداﻧﻨﺪ .درﺿﻤﻦ ﻧﺘﻴﺠﻪ ﺗﻮاﺑﻊ ﺗﻮﺳﻂ اﺳﻢ ﺗﺎﺑﻊ ﻓﺮﺳﺘﺎده ﻣﻲﺷﻮد وﻟﻲ روالﻫﺎ
از ﻃﺮﻳﻖ ﭘﺎراﻣﺘﺮﻫﺎ ،ﻧﺘﺎﻳﺞ را ﺑﺮﻣﻲﮔﺮداﻧﻨﺪ.
ﻝﻫﺎ
ﺭﻭﺍﻝ
ﺑﻊ ﻭ ﺭﻭ
ﺗﻮﺍﺑﻊ
ﺁﺭﺍﻳﻪﻫﺎ ﺑﺑﻪ ﻮ
ﻝ ﺭﻳ
ﺍﺭﺳﺎﻝ
ﻃﺮﻳﻘﻪ ﺭ
ﺮﻳ
آراﻳﻪﻫﺎ ﺧﻮد ﻣﺠﻤﻮﻋﻪأي از دادهﻫﺎ ﻣﻲﺑﺎﺷﻨﺪ ،ﻟﺬا ﺑﺮاي ارﺳﺎل آﻧﻬﺎ ﻧﻤﻲﺗﻮاﻧﻴﻢ
m
o
c
*
.eﺑﺮاي ارﺳﺎل آراﻳﻪﻫﺎ ﺑﻪ ﻋﻨﻮان ﭘﺎراﻣﺘﺮ ﺑﻪ
bداد
را ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎي ﻓﺮﻋﻲ اﻧﺘﻘﺎل
u
n
ﻗﺒﻞ ااز
Typeﻗ ﻞ
T
*pﻣﻲﻛﻛﻨﻨﺪ .دﺳﺘﻮر
اﺳﺘﻔﺎده
Typeا ﻔﺎ
T
ﻫﺎي ﻓﻓﺮﻋﻲ ااز دﺳﺘﻮر
ﺑﺮﻧﺎﻣﻪ ﺎ
ﺎ
w
ﻣﻲرود و ﺗﻮﺳﻂ اﻳﻦ w
دﺳﺘﻮر در واﻗﻊ ﻳﻚ ﻧﻮع
اﺻﻠﻲ ﺑﻜﺎر ﻣ رود
ﻧﺎﻣﻪ اﺻﻠ
ﺗﻌﺎرﻳﻒ ﺑﺑﺮﻧﺎﻣﻪ
w
از روش ﻣﻌﻤﻮﻟﻲ ارﺳﺎل ﭘﺎراﻣﺘﺮﻫﺎ اﺳﺘﻔﺎده ﻛﻨﻴﻢ .و ﺑﻄﻮر ﻣﺴﺘﻘﻴﻢ ﻧﻤﻲﺗﻮان آﻧﻬﺎ
ﺗﻮان دادهﻫﺎي
ي
ﻲﻮ
زي ﻣﻲ
ﻳﻦ ﺳﺎدهﺳﺎزي
ﺷﻮد .و ﺑﺑﺎ اﻳﻦ
ﻲ ﻮ
ﻓﺮاﻫﻢ ﻣﻲ
ﺗﻌﺎرﻳﻒ ﺮ ﻢ
در رﻳ
ﺳﺎزي ر
ﺳﺎده زي
ﺳﺎﺧﺖ ﻳﺎﻓﺘﻪ را ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎي ﻓﺮﻋﻲ ﻣﻨﺘﻘﻞ ﻛﺮد.
ﻛﻠﻲ ﺩﺳﺘﻮﺭ Typeﺩﺭ ﺑﺨﺶ ﺗﻌﺎﺭﻳﻒ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ:
ﻓﺮﻡ ﻛﻠ
m
o
ﺗﻌﺮﻳﻒ داده ﺳﺎﺧﺖ ﻳﺎﻓﺘﻪ
= ﺷﻨﺎﺳﻪ
c
*
b
e
u
Type
ﺑﺮاي ﻣﺜﺎل ﻳﻚ اراﻳﻪ از ﻧﻮع ﺻﺤﻴﺢ را ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ:
n
p
*
در اﻳﻨﺼﻮرت ﺗﻌﺮﻳﻒ آراﻳﻪ ﺑﻪ No ،ﻧﺴﺒﺖ داده ﻣﻲﺷﻮد .اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﻣﺘﻐﻴﺮي
w
ﻢ:
wﻣﻲﻛﻨﻴﻢ
ﻛﻨﻴﻢ ،آﻧﺮا از ﻧﻮعع Noﺗﻌﺮﻳﻒ
ﻧﻮع آراﻳﻪ ﺑﺎﻻ ﺗﻌﺮﻳﻒ ﻢ
از ع
w
; No = array [1…100] of integer
Type
Var
; Number: No
ﻋﻨﺼﺮي را از ورودي100 ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ آراﻳﻪ ﺣﺪاﻛﺜﺮ: ﻣﺜﺎل
Search ﺗﻮﺳﻂ ﺗﺎﺑﻌﻲ ﺑﻨﺎم، ﺳﭙﺲ ﻋﺪد را از ورودي ﺧﻮاﻧﺪه،درﻳﺎﻓﺖ ﻛﺮده
.ﻣﺤﻞ وﻗﻮع ﻋﺪد در آراﻳﻪ را ﻧﻤﺎﻳﺶ دﻫﺪ
Program
Type
Var
Example ;
a = array [1.. 100] of
m
o
c
*
B: a ; N : Word ; eb
u ; x: integer ) : Word ;
Function
Search (b:a; N:n
Word
Var
*p
I , Index: Wordw
; Flag: Boolean ; { local variable }
w
Begin
w
Index:= 0 ;
Flag:=
g TRUE ;
integer ;
While ( I <= N ) And ( flag ) do
Begin
If b[ I ] = x Then
B i
Begin
Index:= I ;
Flag:= FALSE ;
Flag:
End ;
Inc ( I ) ;
End ;
Search:= Index ;
E d;
End
{*********************************************}
m
o
c
*
b
e
u
w
w
w
n
*p
Begin { Main }
Writeln ( ' Enter Number ' ) ;
Readln ( N ) ;
For I:= 1 To N Do
Readln ( b[ I ] ) ;
Writeln ( ' Enter Number ' ) ;
Readln ( x ) ;
If Search ( b , N , x ) = 0 Then
Writeln ( ' Not Found ' ) ;
Else
Writeln ( Search( b , N , x ) ) ;
E d { End
End.
E d Of P
Program }
m
o
c
*
b
e
u
w
w
w
n
*p
ﺗﻤﺮﻳﻨﺎﺕ
ﺮﻳ
• روال Downرا در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ:
m
o
Procedure
; ) Down ( N: Integer
Begin
While N > 0 do
Begin
; ) Write ( N: 3
; ) Dec ( N
; End
; End
اﻟﻒ( وﻗﺘﻲ روال ﺑﺼﻮرت ) down (5ﻓﺮاﺧﻮاﻧﻲ ﺷﻮد ،ﭼﻪ ﭼﻴﺰي ﭼﺎپ ﻣﻲﺷﻮد.
ب( ﻣﻘﺪار ﭘﺎراﻣﺘﺮ واﻗﻌﻲ Nﺑﻌﺪ از اﺟﺮاي روال ﭼﻴﺴﺖ؟
c
*
b
e
u
n
*p
w
w
w
ﺑﮕﻴﺮﻳﺪ:
ﻧﻈﺮ ﮕ
ﺭﺍ ﺩﺭ ﻧﻈ
ﺑﺎﺯﮔﺸﺘﻲ ﺯﻳﺮ ﺍ
ﺗﺎﺑﻊ ﺎ ﮔﺸ
• ﺗﺎ
m
o
Function
; MyStery ( M , N: Integer ) : integer
Begin
If N = 1 Then
MyStery:= 1
Else
M St
=MyStery:
M * MyStery
M St
; )(M,N–1
} End ; { End Of Function
c
*
b
e
u
n
*p
w
w
w
اﻟﻒ( ﺗﺎﺑﻊ ﺑﺎزﮔﺸﺘﻲ ﺑﺎﻻ را ﺑﻪ ازاء ﻣﻘﺎدﻳﺮ N=4 , M=5ﻓﺮاﺧﻮاﻧﻲ ﻛﻨﻴﺪ.
ب( ﺗﺎﺑﻊ ﺑﺎزﮔﺸﺘﻲ ﺑﺎﻻ را ﺑﻪ ازاء ﻣﻘﺎدﻳﺮ N=5 , M=3ﻓﺮاﺧﻮاﻧﻲ ﻛﻨﻴﺪ.
ﻧﻮﻳﺴﻲ
ﺑﺮﻧﺎﻣﻪﻧ ﻳ
ﻳﻨﺎﺕ ﺑ ﻧﺎ ﻪ
ﺗﺗﻤﺮﻳﻨﺎﺕ
m
o
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﻃﻼﻋﺎت ﺣﺪاﻛﺜﺮ 100داﻧﺸﺠﻮ ﻛﻪ ﻋﺒﺎرﺗﻨﺪ از:
c
*
F il b
Family
e
Name
u
n
St No
St_No
p
*
را از ورودي درﻳﺎﻓﺖ ﻛﺮده ﺳﭙﺲ:
w
ﻓﺎﻣﻴﻠﻲ
ﺎ ﻠ
اﺳﻢ
داﻧﺸﺠﻮﺋﻲ
ﺷﻤﺎره داﻧﺸﺠﻮﺋ
w
w
ﻛﻨﺪ.
ﻣﺮﺗﺐ ﻛ ﺪ
داﻧﺸﺠﻮﺋﻲ ﺗ
ﺷﻤﺎره اﻧﺸ ﺋ
را ﺑﺮﺣﺴﺐ ﺷ ﺎ
اﻃﻼﻋﺎت ا
ﺑﻨﺎم sortاﻃﻼ ﺎ
رواﻟﻲ ﺎ
ﺗﻮﺳﻂ اﻟ
اﻟﻒ( ﺗ ﻂ
درﻳﺎﻓﺖ
ي رﻳ
ورودي
ﻓﺮدي ررا ازز ورو
داﻧﺸﺠﻮﺋﻲ ﺮ ي
ﺠﻮ ﻲ
ﺷﻤﺎره
ﻲ ﺑﺑﻨﺎمم searchر
ﺗﺎﺑﻌﻲ
ﺗﻮﺳﻂ ﺑ
ب( ﻮ
ﻧﻤﺎﻳﺪ ،در ﺻﻮرﺗﻲ ﻛﻪ ﺷﺨﺺ ﻣﻮردﻧﻈﺮ در ﻟﻴﺴﺖ ﺑﺎﺷﺪ ،ﺳﺎﻳﺮ اﻃﻼﻋﺎت آﻧﺮا
ﻧﻤﺎﻳﺶ دﻫﺪ.
آراﻳﻪأي از ﻧﻮع ﺻﺤﻴﺢ ﺑﺎ ﺣﺪاﻛﺜﺮ 100ﻋﻨﺼﺮ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
m
o
ﺑﺮﻧﺎﻣﻪأي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﺑﺘﺪا آراﻳﻪ را از ورودي درﻳﺎﻓﺖ ﻛﺮده ﺳﭙﺲ ﺑﺎ اﺳﺘﻔﺎده از
ﻳﻚ ﺗﺎﺑﻊ ﺑﺎزﮔﺸﺘﻲ ﺑﻴﺸﺘﺮﻳﻦ ﻣﻘﺪار آراﻳﻪ را ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﺪ.
c
*
b
e
u
n
*p
درﻧﻈﺮ
اﻓﺮاد ﻣﻣﻲﺑﺎﺷﺪ راا د ﻧﻈ
اﺳﺎﻣﻲ اﻓ اد
ﻋﻨﺼﺮي ﻛﻪ ﺷﺎﻣﻞ اﺳﺎﻣ
ﺣﺪاﻛﺜﺮ 100ﻋﻨﺼ ي
ﺗﺐ ﺣﺪاﻛﺜ
آراﻳﻪ ﻣﻣﺮﺗﺐ
دو آ اﻳﻪ
ﺑﮕﻴﺮﻳﺪ.
w
w
w
ﺳﭙﺲ ﺗﻮﺳﻂ
ﻧﺨﺴﺖ دو آراﻳﻪ را از ورودي درﻳﺎﻓﺖ ﻧﻤﻮده ﺳ
ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻧﺨ ﺖ
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳ ﺪ
ﺑ ﻧﺎﻣﻪ
رواﻟﻲ ﺑﻨﺎم mergeاﻳﻦ دو آراﻳﻪ در ﻫﻢ ادﻏﺎم ﻧﻤﻮده و در آراﻳﻪ ﺳﻮﻣﻲ ﻗﺮار دﻫﺪ.
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﺍﻃﻼﻋﺎﺕ)ﮔﺮﻭﻩ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﻓﺼﻞ 10
ﻣﺠﻤﻮﻋﻪﻫﺎ ﻭ ﺩﺍﺩﻩﻫﺎي ﺷﻤﺎﺭﺷﻲ
m
o
c
*
b
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﻓﺎ
e
u
n
p
*
ﻣﻔﻬﻮم ﻣﺠﻤﻮﻋﻪ و دادهﻫﺎي ﺷﻤﺎرﺷﻲ در زﺑﺎن ﭘﺎﺳﻜﺎل
w
w
ﻣﺠﻤﻮﻋﻪ و دادهﻫﺎي ﺷﻤﺎرﺷﻲ ﺑﻪ w
ﻋﻨﻮان ﻣﺘﻐﻴﺮ
اﺳﺘﻔﺎده از ﻣﺠﻤﻮﻋﻪﻫﺎ و دادهﻫﺎي ﺷﻤﺎرﺷﻲ در ﺑﺮﻧﺎﻣﻪ
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي÷ﻓ ﺎ
ﻓﺎ
oﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
mاز
داﻧﺸﺠﻮ ﭘﺲ
c
*
b
e
ﺷﻤﺎرﺷﻲ را درك ﻛﻨﺪ.
ﻣﻔﻬﻮم ﻣﺠﻤﻮﻋﻪ و دادهﻫﺎي
u
n
p
*
wﻫﺎي ﺷﻤﺎرﺷﻲ اﺳﺘﻔﺎده ﻛﻨﺪ.
ﺑﺘﻮاﻧﺪ در ﺻﻮرت ﻟﺰوم از ﻣﺠﻤﻮﻋﻪ و داده
w
w
ﻣﻘﺪﻣﻪ
ﺗﻌﺪاد ﻣﺤﺪودي از دادهﻫﺎ ﻛﻪ از ﻧﻈﺮ ﻧﻮعع ﻳﻜﺴﺎن ﻫﺴﺘﻨﺪ ،در ﻏﺎﻟﺐ ﻣﺠﻤﻮﻋﻪ و ﻳﺎ
m
ﻧﮕﻬﺪاري ﻣﻲﺷﻮﻧﺪ ﻛﻪ ﻣﻔﻬﻮﻣﻲ ﺷﺒﻴﻪ در رﻳﺎﺿﻴﺎت دارﻧﺪ.
ﮔﻮﻧﻪﻫﺎي ﺷﻤﺎرﺷﻲ
o
c
*
ﻣﺎﺷﻴﻨﻬﺎ و ...ﻛﻛﻪ
ﻫﻔﺘﻪ و ﻳﺎﺎ ﻧﻮع ﺎ ﺎ
روزﻫﺎي ﻔ
ﺎ
ﻧﻈﻴﺮ
bﻈ
ﺧﺎص
ﻣﻮاردي ﺎ
اﺳﺘﻔﺎده در ا
ﺑﺮاي ا ﻔﺎ
ا
e
u
ﻢ ﻣﻲﺑﺎﺷﻨﺪ ،اﺳﺘﻔﺎده از
ﻫﺎي ﭘﺸﺖ ﺳﺮ ﻫﻢ
ﺗﺮﺗﻴﺒﻲ ﻫﺴﺘﻨﺪ و ﻳﺎ ﻳﻚ ﻣﺠﻤﻮﻋﻪ از داده
n
p
*
wوﺟﻮد آﻧﻬﺎ ﺑﻪ ﻋﻨﻮان
اﻳﻦ ﺳﺎﺧﺘﺎرﻫﺎ ﻛﺎر را ﺑﺴﻴﺎر راﺣﺖ ﻣﻲﻛﻨﺪ .ﻫﺮ ﭼﻨﺪ
w
زﺑﺎن ﺎ ﻜﺎل
ﭘﺎﺳﻜﺎل
اﺑﺰارﻫﺎﻳﻲ از ز ﺎن
ﺎ
ﺑﻬﺮﺣﺎل ﺑﻪ ان
ﺎل
اﻟﺰاﻣﻲﻧﻧﻴﺴﺖ.
دادهااي ،اﻟ ا
ﻫﺎي ا
ﺳﺎﺧﺘﺎر ﺎ
ﺎﺧ ﺎ
ﻋﻨﻮان ا ا w
ﻫﺴﺘﻨﺪ ﻛﻪ در ﻣﻮاﻗﻌﻲ ،ﺿﺮوري ﺑﻨﻈﺮ ﻣﻲرﺳﻨﺪ و ﻣﺴﺌﻠﻪ را ﺑﻪ ﺻﻮرﺗﻲ ﻗﺎﺑﻞﻓﻬﻢ و
راﺣﺖ ﺣﻞ ﻣﻲﻛﻨﺪ.
ﻣﺠﻤﻮﻋﻪﻫﺎ )(Sets
m
o
رﻳﺎﺿﻴﺎت ﺟﺪﻳﺪ
ﻣﻔﻬﻮم ﻣﺠﻤﻮﻋﻪ در ﺎ ﺎ
ﻣﻔﻬﻮﻣﻲ ﺷﺒﻴﻪ ﺑﻪ ﻔ
ﭘﺎﺳﻜﺎل ﻣﺠﻤﻮﻋﻪ ،ﻔ
زﺑﺎن ﺎ ﻜﺎل
در ﺎ
c
*
b
e
ﻋﻨﺎﺻﺮ ﻣﺤﺪود ﺑﻪ ﺣﺪاﻛﺜﺮ 256ﺗﺎ ﻣﻲﺑﺎﺷﺪ .از
ﺗﻌﺪاد
داراي
ﻛﻪ
ﺑﺎﺷﺪ
ﻣﻲ
ﺷﻤﺎرﺷﻲ
u
n
ﻫﺎﻳﻲ از
داده ﺎ
ﺷﺎﻣﻞ ا
ﭘﺎﺳﻜﺎل ااﺳﺖ ﻛﻛﻪ ﺷﺎ ﻞ
pﻜﺎل
آراﻳﻪ در ز ﺎن
ﻳﻚ آ ا
ﺷﺒﻴﻪ ﺑﻪ ﻚ
ﺑﺴﻴﺎر ﺷ
ااﻳﻦ ﺟﻬﺖ ﺎ
زﺑﺎن ﺎ *
ﻳﻚ ﻧﻮع ﻣﻲﺑﺎﺷﺪ ،وﻟﻲ آراﻳﻪ داراي ﻋﻨﺎﺻﺮ w
ﻧﻴﺴﺖ و در ﺿﻤﻦ ﻣﺎﻧﻨﺪ
ﻣﺤﺪودي
w
w
آراﻳﻪ ﺗﻌﺮﻳﻒ ﻧﻤﻲﺷﻮد.
ﺻﺤﻴﺢ ،ﻛﺎراﻛﺘﺮ ،ﺑﻮﻟﻴﻦ و ﻳﺎ از ﻧﻮعع
ﺢ
دارد .ﻣﺘﻐﻴﺮي اﺳﺖ ﻛﻪ ﺷﺎﻣﻞ ﻟﻴﺴﺘﻲ از اﻋﺪاد
ﺗﻌﺮﻳﻒ ﻣﺠﻤﻮﻋﻪ
m
o
:زﻳﺮ اﺳﺘﻔﺎده ﻣﻣﻲﻛﻨﻴﻢ
ﺑﺼﻮرت زﻳset of ﻳﻒ ﻳﻚ ﻣﺠﻤﻮﻋﻪ از ﻛﻠﻤﺎت ﻛﻠﻴﺪي
ﺗﻌﺮﻳﻒ
اي ﺗﻌ
ﺑﺑﺮاي
c
*
Type
b
e
Name= Set of Type
Of Set;
u
n
*p
w
w
Type
w
Digit_type = 0..9;
Digit = Set of Digit_type
Digit type
: ﻣﺜﻼ
: ﻣﺜﺎﻝ
m
o
c
*
#0 #255
#0..#255
b
e
u
false..true
Var
ch:
h sett off char;
h
n
*p
bool: set of boolean;
num: set of byte;
x: set of 100..200;
y: set of 'a'..'z';
z: set of '0'..'9';
'0' '9';
w
w
w
0..255
ﻋﻤﻠﻴﺎﺕ ﺭﻭي ﻣﺠﻤﻮﻋﻪﻫﺎ
در رﻳﺎﺿﻴﺎت ﻋﻤﻞ ﻋﻀﻮﻳﺖ وﺟﻮد دارد ﻛﻪ ﺑﻪ اﻳﻦ ﻣﻌﻨﻲ اﺳﺖ ﻛﻪ ﻣﺘﻐﻴﺮي
m
ﺑﺎﺷﺪ ﻳﺎ ﺧﻴﺮ .اﻳﻦ ﻋﻤﻞ در زﺑﺎن ﭘﺎﺳﻜﺎل ﺑﺎ ﻛﻠﻤﻪ ﻛﻠﻴﺪي in
ﻋﻀﻮ ﻣﺠﻤﻮﻋﻪ ﻣﻲ
o
c
*
b
eﺻﺤﻴﺢ ﺑﺎﺷﺪ ﺟﻮاب Trueوﮔﺮﻧﻪ False
ﺻﻮرت ﻣﻲﮔﻴﺮد .اﮔﺮ ﻋﻀﻮﻳﺖ
u
n
pﺑﺎ* ﻋﻼﻣﺎت ﺷﺮﻃﻲ =،<> ،
ﻣﻲﺑﺎﺷﺪ .ﻫﻤﭽﻨﻴﻦ دو ﻣﺠﻤﻮﻋﻪ را ﻣﻲﺗﻮان
w
داراي ﺧﺧﺮوﺟﻲw
ﺑﺎﺷﻨﺪ.
ﻳﺎ ﻏﻠﻂ ﻣﻲ ﺎﺷﻨﺪ
درﺳﺖ ﺎ
ﺖ
ﻫﻤﮕﻲ ا ا
ﻣﻘﺎﻳﺴﻪ ﻛﻛﺮد ﻛﻛﻪ ﮕ
=< و => ﻘﺎ
w
وﻟﻲﻋﻼﻣﺎت ﺷﺮﻃﻲ < و > در ﻣﻮرد ﻣﺠﻤﻮﻋﻪﻫﺎ ﻛﺎرﺑﺮدي ﻧﺪارد.
: ﻣﺜﺎﻝ
V
Var
a: set of byte;
m
o
Begin
c
*
b
e
u
a:= [1..3,4];
if 3 in a then write('3
( is in set a'))
else write('3 is not in set a');
write(3 in a);
write(8 in a);
write([1,2,3,4,] = a);
write([1 2 3 4] = [2
write([1,2,3,4]
[2,2,1,1,1,3,4,4]);
2 1 1 1 3 4 4]);
write([1,2] = [1,2,3]);
write([1,2]
w
te([ , ] <= [1,2,3]);
[ , ,3]);
write([] >= [1]);
w
w
w
End.
n
*p
ﻲﺷﻮﺩ
ﭼﺎپ ﻣﻲ
ﭼپ
True
False
True
True
False
True
ue
False
ﻋﻤﻠﮕﺮﻫﺎ ﺭﻭي ﻣﺠﻤﻮﻋﻪﻫﺎ
m
در رﻳﺎﺿﻴﺎت ﻣﻲﺗﻮاﻧﻴﻢoﻣﺠﻤﻮﻋﻪﻫﺎ را ﺑﺎ ﻫﻢ اﺟﺘﻤﺎع ،اﺷﺘﺮاك و ﺗﻔﺎﺿﻞ ﻛﻨﻴﻢ ﻛﻪ
c
*
b
ﻋﻤﻠﮕﺮﻫﺎي * ،+و -ﺑﻪ ﺗﺮﺗﻴﺐ ﻣﻲﺑﺎﺷﺪ .اﺟﺘﻤﺎع
اﻳﻦ ﻋﻤﻠﻴﺎت در ﭘﺎﺳﻜﺎل ﺑﺎ
e
u
n
اﺳﺖ و اﺷﺘﺮاك ﻳﻌﻨﻲ ﻋﻀﻮﻫﺎﻳﻲ
دو ﻣﺠﻤﻮﻋﻪ ﺗﺮﻛﻴﺒﻲ از ﻫﻤﻪ ﻋﻀﻮﻫﺎي آآﻧﻬﺎ *p
w
ﺖ و ﺗﻔﺎﺿﻞ ﻨﻳﻌﻨﻲw
ﻋﻪ
ﻣﺠﻤﻮﻋﻪ
اﻋﻀﺎﻳﻲ ﻛﻪ در
اﻋﻀﺎ
ك ااﺳﺖ
ﻣﺸﺘﺮك
ﻋﻪ ﺸﺘ
ﻛﻪ در ﻫﻫﺮ دو ﻣﺠﻤﻮﻋﻪ
w
اول ﻣﻲﺑﺎﺷﺪ و در ﻣﺠﻤﻮﻋﻪ دوم وﺟﻮد ﻧﺪارد.
: ﻣﺜﺎﻝ
Var
a: set of byte;
y
b: set of 0..10;
c, d, e: set of byte;
B i
Begin
a:=[0,1,2,3];
b:=[2 3 4 5];
b:=[2,3,4,5];
c:= a+b;
d:= a*b;;
e:= a-b;
End.
c
*
b
e
u
n
*p
w
w
w
m
o
c=[0,1,2,3,4,5]=[0..5]
d=[2,3]
[ , ]
e=[0,1]
ﺩﺭ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﻫﺎ ﺑﻪ ﻧﮑﺎﺕ ﺯﻳﺮ ﺗﻮﺟﻪ ﮐﻨﻴﺪ :
m
o
ﺗﻌﺮﻳﻒ ﺷﺪه
ﺗﺎﻳﭗ ﻒ
ﻗﺒﻼ در ﺎ
ﺗﻮاﻧﺪ ﻣﺠﻤﻮﻋﻪ ﺎﺑﺎﺷﺪ ﻛﻛﻪ ﻗ ﻼً
رواﻟﻬﺎ ﻣﻲ ا
آرﮔﻮﻣﺎن ورودي اﻟ ﺎ
.1آ ﮔ ﺎ
ﺑﺎﺷﺪ ،ﻧﻪ اﻳﻨﻜﻪ ﻣﺴﺘﻘﻴﻢ در روال ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن ﺑﻴﺎﻳﺪ .وﻟﻲ ﺧﺮوﺟﻲ ﻳﻚ ﺗﺎﺑﻊ
ﻧﻤﻲﺗﻮاﻧﺪ از ﻧﻮع ﻣﺠﻤﻮﻋﻪ ﺑﺎﺷﺪ.
ﻧﻤ
c
*
b
e
u
n
*p
ﺻﻮرت
ﻋﻤﻠﻴﺎت ﻮر
ﺑﺎﻳﺪ ﻋﻀﻮﻮ ﺑﺑﻪ ﻋﻀﻮﻮ ﻴ
ﻣﺠﻤﻮﻋﻪﻫﺎ ﺑ ﻳ
ﺧﻮاﻧﺪن ﺠ ﻮ
ﻧﻮﺷﺘﻦ ﻳﻳﺎ ﻮ
ي ﻮ ﻦ
ﺑﺮاي
.2ﺑﺮ
ﺑﮕﻴﺮد و ﻣﺴﺘﻘﻴﻤﺎً ﺗﻮاﺑﻊ Read ،Writeروي آﻧﻬﺎ ﻛﺎر ﻧﻤﻲﻛﻨﻨﺪ.
w
w
w
ﻣﺜﺎﻝ :ﺑﺮﻧﺎﻣﻪﺍي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﻌﺪﺍﺩ ﻣﺤﺪﻭﺩي ﻋﺪﺩ ﻣﺨﺘﻮﻡ ﺑﻪ -1ﺭﺍ ﺍﺯ ﻭﺭﻭﺩي
ﺑﺨﻮﺍﻧﺪ ﻭ ﺩﺭ ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺍﺯ ﺍﻋﺪﺍﺩ ﺻﺤﻴﺢ ﻗﺮﺍﺭ ﺑﺪﻫﺪ .ﺳﭙﺲ ﺍﻋﻀﺎي ﺍﻳﻦ
ﻣﺠﻤﻮﻋﻪ ﺭﺍ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﺠﻤﻮﻋﻪ ﺳﺎﺧﺘﻪ ﺷﺪﻩ ﺩﺭ ﺧﺮﻭﺟﻲ ﭼﺎﭖ ﻛﻨﺪ:
m
o
c
*
b
e
u
; Program test
Var
;num , temp : set of byte
I , c : integer
; g
Begin
;)' Writln ('Enter numbers:
; ) Readln( I
; ] [ =Num :
; c := 0
n
*p
w
w
w
while ( i > -1) do
begin
c := c + 1 ;
t
temp
:= [ I ] ;
num := num + temp ;
Readln( I ) ;
end;
for I := 0 to 255 do
if ( i in num ) then
write( i:5 ) ;
End.{
d { Endd Off Program }
w
w
w
n
*p
c
*
b
e
u
m
o
(Enumeration
E
ﺷﻤﺎﺭﺷﻲ ) ti
ﻫﺎي ﺷ ﺎ ﺷ
ﺩﺍﺩﻩﻫﺎ
ﺩﺍﺩ
m
o
دادهﻫﺎي ﺷﻤﺎرﺷﻲ ،ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﻣﺮﺗﺐ از اﻋﺪاد اﺳﺖ ﻛﻪ در ﺑﺮﻧﺎﻣﻪ ،ﻫﺮ ﻋﺪد
c
*
داراي ﻧﺎم ﺑﺨﺼﻮﺻﻲ اﺳﺖ .اﻳﻦ ﻧﺎﻣﻬﺎ در داﺧﻞ دو ﭘﺮاﻧﺘﺰ ﺑﺎز و ﺑﺴﺘﻪ ﻗﺮار
b
e
ﻣﻲﮔﻴﺮﻧﺪ ﻣﮕﺮ اﻳﻨﻜﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ ﺑﻪ آﻧﻬﺎ
ﻣﻲﮔﻴﺮﻧﺪ و ﺑﺘﺮﺗﻴﺐ از ﺻﻔﺮ ﻣﻘﺪار
u
n
ﻣﻘﺪار ﻣﺨﺼﻮﺻﻲ ﺑﺪﻫﺪ.
*p
w
w
w
: ﻛﻨﻴﺪ
ﺗﻮﺟﻪ ﻛﻨ ﺪ
ﺯﻳﺮ ﺗ ﺟﻪ
ﺑﻪ ﻣﺜﺎﻝ ﺯﻳ
Type
m
o
c
*
Var
b
Cars: cars_type; ue
n
p
*
: ﻣﻲﺗﻮاﻧﺪ ﻣﻘﺎدﻳﺮ داﺧﻞ دادهﻫﺎي ﺷﻤﺎرﺷﻲ را ﺑﮕﻴﺮدcars ﺣﺎل در ﺑﺮﻧﺎﻣﻪ
w
w
w
cars:= Pride;
Cars_type = (Peykan, Pride, Pegout, PK);
cars:= PK;;
: ﻛﻨﻴﺪ
ﺗﻮﺟﻪ ﻛﻨ ﺪ
ﺯﻳﺮ ﺗ ﺟﻪ
ﺑﻪ ﻣﺜﺎﻝ ﺯﻳ
Type
Days type = ( sat,
Days_type
sat sun,
sun mon,
mon tue,
tue wed,
wed thu,
thu fri );
Var
Day:
y Days_type;
y _ yp
Begin
Day:= Mon;
i ordd ((sat)) + ordd (day)
i:=
(d ) + (succ(sat));
(
( ))
j:= ord ( pred (sun) + ord (pred (fri));
writeln(i:5 j:5);
writeln(i:5,
End.
: ﺧﺮوﺟﻲ
m
o
c
*
b
e
u
w
w
w
i=3
j=5
n
*p
ﻧﮑﺘﻪ :
m
o
ﺗﻮاﻧﺪ ﺎﺑﺎﺷﺪ ﻛﻛﻪ
256ﻋﻀﻮ ﻣﻲ ا
داراي 2 6
ﺣﺪاﻛﺜﺮ ا ا
ﻫﺎ اﻛ
ﺷﻤﺎرﺷﻲ ﺷﺒﻴﻪ ﻣﺠﻤﻮﻋﻪ ﺎ
داده ﺎ
ﻣﺘﻐﻴﺮ ا
c
*
bﺷﻮد و ﻟﺬا ﻳﻚ ﺑﺎﻳﺖ ﺣﺎﻓﻈﻪ را اﺷﻐﺎل ﻣﻣﻲﻛﻨﺪ.
ﺻﻔﺮ ﺗﺎ 255ﺷﻤﺎرهﮔﺬاري ﻣﻣﻲ
از ﺻﻔ
e
u
n
*p
w
w
w
ﻋﻤﻠﻴﺎﺕ ﺭﻭي ﺩﺍﺩﻩﻫﺎي ﺷﻤﺎﺭﺷﻲ
دادهﻫﺎي ﺷﻤﺎرﺷﻲ ﻫﻤﺎﻧﻨﺪ ﻫﺮ ﻧﻮع ﺗﺎﻳﭙﻲ ﻣﻲﺗﻮاﻧﻨﺪ در typeﺑﺮﻧﺎﻣﻪ ﺗﻌﺮﻳﻒ ﺷﻮد
m
o
و ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎﻧﻬﺎي رواﻟﻬﺎ و ﻳﺎ ﺧﺮوﺟﻲ ﺗﻮاﺑﻊ ﻣﻲﺗﻮاﻧﺪ درﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﻮد
c
*
ﺑﻜﺎر ﺑﺮد.
ان ﻜﺎ
ﻣﺴﺘﻘﻴﻤﺎ ﻧﻧﻤﻲﺗﺗﻮان
ﺑﺎﺷﺪ و ﻘ ﺎً
ﺷﺪه ﺎﺷ
ﺗﻌﺮﻳﻒ ﺷ
ﻒ
typeﺗ
ﺣﺘﻤﺎ ﺎﺑﺎﻳﺪ در t pe
وﻟﻲ ﺎً
ﻟ
b
e
u
pﺑﺎﺷﻨﺪ ،ﻟﺬا اﺑﺘﺪا در typeﺗﻌﺮﻳﻒ
اﻳﻦ ﻋﻤﻞ ﻣﺸﺎﺑﻪ ﻣﺠﻤﻮﻋﻪﻫﺎ و آراﻳﻪﻫﺎ ﻧﻴﺰnﻣﻲ
*
w
وﮔﺮﻧﻪ
ﺷﻮد ﺮ
ﻲ ﻮ
wاﺳﺘﻔﺎده ﻣﻲ
ﻲ رواﻟﻬﺎ
ﺧﺮوﺟﻲ
ﻋﻨﻮان ورودي و ﻳﺎ ﺮ
ﭙﺲ ﺑﻪ ﻮ
ﺷﻮد ،ﺳﭙﺲ
ﻲ ﻮ
ﻣﻲ
w
ﺧﻄﺎي ﻛﺎﻣﭙﺎﻳﻠﺮي ﭘﻴﺶ ﺧﻮاﻫﺪ آﻣﺪ .ﻫﻤﭽﻨﻴﻦ ﻣﻲﺗﻮان در آراﻳﻪﻫﺎ از دادهﻫﺎ
ﺷﻤﺎرﺷﻲ اﺳﺘﻔﺎده ﻛﺮد.
ﻣﺜﺎﻝ :ﻣﺸﺎﺑﻪ ﻣﺠﻤﻮﻋﻪﻫﺎ ﻧﻤﻲﺗﻮﺍﻥ ﺩﺍﺩﻩﻫﺎي ﺷﻤﺎﺭﺷﻲ ﺭﺍ ﻣﺴﺘﻘﻴﻤ ﹰﺎ Read
ﻳﺎ Writeﻛﺮﺩ .ﺑﺮﻧﺎﻣﻪﺍي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺍﻋﺪﺍﺩ ﺻﻔﺮ ﺗﺎ ﺷﺶ ﺭﺍ ﺑﻪ ﻣﺮﺍﺗﺐ ﺩﺭﻳﺎﻓﺖ
ﻛﺮﺩﻩ ﻭ ﺑﻪ ﻛﻤﻚ ﺩﺍﺩﻩﻫﺎي ﺷﻤﺎﺭﺷﻲ ﺭﻭﺯﻫﺎي ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﺁﻧﻬﺎ ﺭﺍ ﺍﺯ ﺷﻨﺒﻪ ﺗﺎ ﺟﻤﻌﻪ
ﺭﺍ ﺣﺴﺎﺏ ﻛﻨﺪ.
m
o
Program test:
Type
days
y _type
yp = ( sat,sun,mon,tue,wed,thu,fri
, ,
, ,
;) , ,
Var
;day: days_type
;i: byte
Begin
Write('Enter your
o r days
da s number:
;) ' n mber:
;)Readln(i
>While (i
)(i>=0
<0) and (i
)(i<=6
6) do begin
Case I Of
c
*
b
e
u
n
*p
w
w
w
0: day:= sat;
1: day:= sun;
2: day:= mon;
3: day:= tue;
4: day:= wed;
5: day:= thu;
6:day:= fri;
6:day:
end;
Case day Of
sat: writeln ('your day is sat');
sun: writeln ('your day is sun');
:
end;
Readln(i);
End; {while} End.
c
*
b
e
u
m
o
w
w
w
n
*p
ﺗﻤﺮﻳﻨﺎﺕ
ﺗ ﺎ
m
o
اﮔﺮ ] A=[1,3,5,7و ] B=[2,4,6و ] C=[1,2,3ﺑﺎﺷﺪ ﻋﺒﺎرات زﻳﺮ را
ارزﻳﺎﺑﻲ ﻛﻨﻴﺪ.
ﺍﻟﻒ-
ﺏ-
c
*
b
e
)uA + (B –C
n
)A + (B*C
p
*
ﺝ-
A+B+C
ﺩ–
2 in A
w
w
w
ﻛﻮﭼﻚ را ﮔﺮﻓﺘﻪ و ﺑﻪ ﻳﻚ
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﺗﺎ ﻣﺠﻤﻮﻋﻪ اي از ﻛﺎراﻛﺘﺮﻫﺎي ﭼ
ﻣﺠﻤﻮﻋﻪ از ﻛﺎراﻛﺘﺮﻫﺎي ﺣﺮوف ﺑﺰرگ ﻣﺘﻨﺎﻇﺮ ﺑﺎ آن ﺗﺒﺪﻳﻞ ﻛﻨﺪ.
m
o
c
*
b
e
uﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻧﺎم داﻧﺸﺠﻮﻳﺎن ﻳﻚ ﻛﻼس را
ﺑﻪ ﻛﻤﻚ دادهﻫﺎي ﺷﻤﺎرﺷﻲ ،ﺑﺮﻧﺎﻣﻪ اي
ﺷﻤﺎره n
ﺎﻓﺖ ﻧﺎﻧﺎم ااو
ﺑﺎﺷﺪ .ﺳﭙﺲ ﺑﺎﺎ ددرﻳﺎﻓﺖ
pﺎﺷﺪ
داﺷﺘﻪ
ﻳﻚ ﺷ ﺎ
ﻧﻴﺰ ﻚ
داﻧﺸﺠﻮ ﻧ ﺰ
ﺑﺮﮔﻴﺮد و ﻫﻫﺮ داﻧﺸ
ددر ﮔ د
*
ﺷﻤﺎره او در ﻧﻤﺎﻳﺸﮕﺮ ﭼﺎپ ﺷﻮد.
w
w
w
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﮔﺮﻭﻩ
ﺍﻃﻼﻋﺎﺕ) ﺮﻭ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﻓﺼﻞ 11
m
o
ﺭﻛﻮﺭﺩﻫﺎ)(Records
c
*
b
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﻓﺎ
e
u
n
ﻣﻔﻬﻮم رﻛﻮرد و اﺟﺰايpآن*
w
w
اﻧﻮاع رﻛﻮردﻫﺎ و اﺳﺘﻔﺎده از آن درw
ﺑﺮﻧﺎﻣﻪ
ﻣﻌﺮﻓﻲ ﻣﺰاﻳﺎي رﻛﻮردﻫﺎ در ﺑﺮﻧﺎﻣﻪ
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي÷ﻓ ﺎ
ﻓﺎ
oﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
mاز
داﻧﺸﺠﻮ ﭘﺲ
c
*
b
ﻣﻮاﻗﻊ ﻟﺰوم رﻛﻮرد را e
ﺗﺸﺨﻴﺺuدﻫﺪ.
n
*p
از رﻛﻮردﻫﺎ در ﺑﺮﻧﺎﻣﻪاش اﺳﺘﻔﺎده ﻛﻨﺪw .
w
ﺑﺮﻧﺎﻣﻪﻫﺎي ﺑﺰرگ و ﺑﺎ دادهﻫﺎي زﻳﺎد ﺑﻨﻮﻳﺴﺪw .
ﻣﻘﺪﻣﻪ
ﻧﻮع داده ﺳﺎﺧﺖﻳﺎﻓﺘﻪاي ﻛﻪ در اﻳﻨﺠﺎ ﻣﻄﺮح ﻣﻲﺷﻮد ،رﻛﻮرد ﻧﺎم دارد ﻛﻪ ﺟﻬﺖ
m
o
c
*
b
e
ﺑﺮﺧﻼف آراﻳﻪﻫﺎ ﻛﻪ داراي ﻋﻨﺎﺻﺮ از ﻳﻚ
داﻧﺸﺠﻮ ﺑﻜﺎر ﻣﻲرود .رﻛﻮردﻫﺎ
u
n
p
*
ﺟﻨﺲ و ﻧﻮع ﻫﺴﺘﻨﺪ ،داراي ﻋﻨﺎﺻﺮ از اﻧﻮاع ﻣﺨﺘﻠﻒ ﻣﻲﺑﺎﺷﻨﺪ .اﻃﻼﻋﺎت از
w
w
داراي ﺟﻨﺲ ﻣﺸﺎﺑﻪ
ﻧﻮع ﻣﺨﺘﻠﻒ را ﻧﻤﻲﺗﻮان در آراﻳﻪ ﻧﮕﻬﺪاري ﻛﺮد ﭼﺮا ﻛﻪ w
ﻧﮕﻬﺪاري دادهﻫﺎي ﻣﺨﺘﻠﻒ ﻧﻈﻴﺮ ﻧﺎم ،ﻧﺎم ﺧﺎﻧﻮادﮔﻲ ،ﺳﻦ و آدرس ﺑﺮاي ﻳﻚ
ﺷﻮد.
اﺳﺘﻔﺎده ﻣﻲﺷ
رﻛﻮرد ا ﻔﺎ
ﺳﺎﺧﺘﺎري ﺑﻪ ﻧﺎﻧﺎم ﻛ
ﻧﻧﻴﺴﺘﻨﺪ و ﻟﺬا ااز ﺎﺧ ﺎ
ﺗﻌﺮﻳﻒ ﺭﻛﻮﺭﺩﻫﺎ
m
o
ﻣﺮﺗﺒﻂ ﺑﺑﻪ ﻫﻢ
ﻢ
ﺮي داده ﻫﺎ ﻳﻳﺎ اﻃﻼﻋﺎت ﺮ ﺒ
ي ﻛﻪ ازز ﻳﻳﻚ ﺳﺮي
ﻮع داده ﺳﺎﺧﺖﻳﻳﺎﻓﺘﻪ اي
ﻧﻮع
ﺗﺸﻜﻴﻞ ﻣﻲ ﺷﻮد.
ﻫﺮ ﻛﺪام از اﻃﻼﻋﺎت را ﻳﻚ ﻓﻴﻠﺪ ﻣﻲ ﻧﺎﻣﻨﺪ .
ﺑﻄﻮر ﻛﻠﻲ ﺗﻌﺮﻳﻒ ﻧﻮع رﻛﻮرد در زﻳﺮ آﻣﺪه اﺳﺖ:
Type
Name = Record
;Field1-list : type1
;Field2 list : type2
Field2-list
..
..
;Fieldn-list : typen
;End
c
*
b
e
u
n
*p
w
w
w
: اﺳﺘﻔﺎده ﻣﻲﺷﻮد ﻛﻪ ﻣﻄﺎﺑﻖ زﻳﺮﻣﻲﺑﺎﺷﺪRecord از ﻛﻠﻤﻪ ﻛﻠﻴﺪي،ﺑﺮاي ﺳﺎﺧﺘﻦ رﻛﻮرد
Type
Student = Record
Name: String [10];
Family: String [15];
Age: integer;
Address: String;
End;
m
o
c
*
b
e
u
n
*p
w
w
var ﺗﻮان درw
ﺣﺎل ﻣﻲ. اﺳﺖRecord
R
d از ﻧﻮعStudent
S d
در اﻳﻦ ﺗﻌﺮﻳﻒ
:ﺑﺮﻧﺎﻣﻪ ﺗﻌﺮﻳﻒ ﻛﺮد
Var
S: Student;
ﺭﻛﻮﺭﺩ
ي ﺭ ﻮﺭ
ﻓﻴﻠﺪﻫﺎي
ﻲ ﺑﺑﻪ ﻴ
ﺩﺳﺘﺮﺳﻲ
ﺮ
m
oﺭﻛﻮﺭﺩ ﺍﺯﻋﻼﻣﺖ ' '.ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ .ﻳﻌﻨﻲ ﺑﺼﻮﺭﺕﺯﻳﺮ:
ﺑﺮﺍﻱ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﻓﻴﻠﺪﻫﺎﻱ
c
*
b
e
ﻧﺎم ﻓﻴﻠﺪ .ﻧﺎم ﻣﺘﻐﻴﺮ رﻛﻮرد
u
n
*p
ﻣﺜﺎل :ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ رﻛﻮردي از ﻧﻮع اﻋﺪادw
اﻳﺠﺎد ﻛﺮده و ﻣﻘﺎدﻳﺮ
w
ﻣﻘﺪارﻫﻲ ﻛﻨﺪ.
آﻧآﻧﺮاا ﻘﺪا
w
Type
Numbers = record
a, b, c = integer;
x, y, z = Real;
end;
Var
Num = Numbers;
begin
Num. a: = 2;
Num. b: = 3;
Num. x: = 2.5;
N
Num.
y: = 3.5;
35
Num. z: = 10;
Write (Num
(Num.a
a + Num
Num.b
b + Num
Num.x
x + Num
Num.y
y + Num
Num.z);
z);
End.
m
o
c
*
b
e
u
w
w
w
n
*p
ﻣﺜﺎﻝ :ﺑﺮﻧﺎﻣﻪﺍي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺭﻛﻮﺭﺩ ﻳﻚ ﺩﺍﻧﺸﺠﻮ ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﻭ ﺑﺎ ﺗﻮﺟﻪ
ﭼﺎﭖ ﻛﻨﺪ.
ﺭﺍ ﺎ
ﺧﺎﻧﻮﺍﺩﮔﻲﺍﺵ ﺍ
ﻧﺎﻡ ﺧﺎﻧ ﺍﺩﮔ ﺍﺵ
ﻧﺎﻡ ﻭ ﻧﺎ
ﻫﻤﺮﺍﻩ ﻧﺎ
ﺑﻪ ﻫ ﺍ
ﺧﺎﻧﻢ ﺭﺍﺍ ﻪ
ﻛﻠﻤﻪﻪ ﺁﻗﺎ ﻭ ﻳﺎﺎ ﺧﺎﻧ
ﺟﻨﺲ ﺍﺍﻭ ﻛﻠ
ﺑﻪﻪ ﻨ
m
o
c
*
b
e
u
Type
Student = record
;Id: integer
; g
;]Name: string[10
;]Family: string[15
;Sex: char
;Age: integer
;End
Var
;Stu: student
n
*p
w
w
w
Begin
Stu.id:= 80132;
Stu.name:='Ali';
Stu.family:='Ahmadi';
Stu sex:='M';
Stu.sex:=
M;
Stu.sge:=18;
Case sex of
'M': write('Mr.');
'F': write('Mrs.');
end;
write(stu.name, ' ' , stu.family);
E d
End.
c
*
b
e
u
m
o
w
w
w
n
*p
ﻳﻚ ﻛ ﺩ
ﺭﻛﻮﺭﺩ
ﺁﻭﺭﺩﻥ ﺣﺠﻢ ﻚ
ﺑﺪﺳﺖ ﺁ ﺩ
ﺪ ﺖ
m
o
c
*
b
e
u
ﺑﺮاي ﺑﺪﺳﺖ آوردن ﻓﻀﺎي اﺷﻐﺎل ﺷﺪه ﺗﻮﺳﻂ رﻛﻮرد اﺑﺘﺪا ﺑﺎﻳﺪ ﻓﻀﺎي اﺷﻐﺎل
ﺷﺪه ﺗﻮﺳﻂ ﺗﻤﺎﻣﻲﻓﻴﻠﺪﻫﺎ را ﺑﺪﺳﺖ آورده و ﺳﭙﺲ ﺑﺎﻫﻢ ﺟﻤﻊ ﻛﻨﻴﻢ.
ﺑﮕﻴﺮﻳﺪ::
درﻧﻈﺮ ﮕ ﺪ
را ﻧﻈ
ﻣﺜﺎل ززﻳﺮ ا
ﺜﺎل
n
*p
w
w
w
Type
List1 = Array [1… 5] of integer;
List2 = Array [1… 5] of char;
Rectype = Record
A B: Real;
A,
C, D: String [10];
F: Array [1… 10] of Boolean;
G: list1;
c
*
b
e
u
2*6
m
o1+10
End;
Var
x: Rectype;
w
w
w
n
*p
10*1
5*2
. ﺑﺎﻳﺖ ﻓﻀﺎ اﺷﻐﺎل ﻣﻲﺷﻮد12+11+10+10=43
ﺭﻛﻮﺭﺩﻫﺎي ﺗﻮﺩﺭﺗﻮ
ﻓﻴﻠﺪﻫﺎي ﻳﻚ رﻛﻮرد ﻣﻲﺗﻮاﻧﻨﺪ از ﻫﺮ ﻧﻮﻋﻲ ﺑﺎﺷﺪ ،از ﺟﻤﻠﻪ ﻣﻲﺗﻮاﻧﻨﺪ از ﻧﻮعع
رﻛﻮرد دﻳﮕﺮي ﺑﺎﺷﻨﺪ .در اﻳﻨﺠﺎ ﻧﻴﺰ ﻣﺸﺎﺑﻪ ﻗﺒﻞ دﺳﺘﺮﺳﻲ ﺑﻪ ﻫﻤﺎن ﺻﻮرت
ﻣﻲﺑﺎﺷﺪ ﻓﻘﻂ ﺑﻪ ﺗﻌﺪاد رﻛﻮردﻫﺎي ﺗﻮدرﺗﻮ '.' ،ﭘﻴﺶ ﻣﻲآﻳﺪ.
ﻣﺜﺎل زﻳﺮﺗﻮﺟﻪ ﻛﻛﻨﻴﺪ:
ﺑﻪ ﺎل
Type
Rec = record
;a, b: integer
;c: char
x: Record
;p: integer
;q: integer
; tege
;End
;End
m
o
c
*
b
e
u
n
*p
w
w
w
Var
;r: Rec
m
ﺗﻮدرﺗﻮ ﺑﻪ ﻧﺎم Recﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ ﻛﻪ ﻣﺘﻐﻴﺮ rاز آن
دراﻳﻨﺠﺎ ﻳﻚ رﻛﻮرد
o
ﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖc .
ﺗﻮان
ﻲﻮ
a , b ,cﻣﻲ
ي ,
دﺳﺘﺮﺳﻲ ﺑﺑﻪ ﻴﻓﻴﻠﺪﻫﺎي
ﺑﺮاي ﺮ ﻲ
ﺳﭙﺲ* ﺑﺮ ي
ﭙﺲ
ﻮع ﺮﻳ
ﻧﻮع
b
ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻛﺮد:
e
u
r.a
n
p
r.b
*
wرﻛﻮرد xﻧﻴﺰ ﻫﺴﺘﻨﺪ دارﻳﻢ:
وﻟﻲ ﺑﺮاي دﺳﺘﺮﺳﻲ ﺑﻪ ﻓﻴﻠﺪﻫﺎي p ,qﭼﻮن ﻣﺘﻌﻠﻖ ﺑﻪ
w
r.x.p w
r.x.q
ﺁﺭﺍﻳﻪﺍي ﺍﺯ ﺭﻛﻮﺭﺩﻫﺎ
ﻢ وﻟﻲ در ﻫﺮﻳﻚ ،دادهﻫﺎي ﻣﺨﺘﻠﻔﻲ وﺟﻮد
ﻫﻨﮕﺎﻣﻲﻛﻪ ﻣﺎ ﺗﻌﺪادي داده ﻣﺸﺎﺑﻪ دارﻳﻢ
دارد ﻣﻲﺗﻮاﻧﻴﻢ ﻳﻚ رﻛﻮرد ﺗﻌﺮﻳﻒ ﻛﺮده ،ﺳﭙﺲ آراﻳﻪاي از آن ﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ.
m
o
c
*
b
e
u
Type
Student = record
;]Name: string[10
;Id: integer
;Age: integer
E d
;End
;Arr_stu: array[1..10] of student
Var
;S: Arr_stu
n
*p
w
w
w
در ﺑﺎﻻ اﺑﺘﺪا ﻳﻚ رﻛﻮرد داﻧﺸﺠﻮ ﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ ،ﺳﭙﺲ ﺑﻪ ﺗﻌﺪاد 110ﻧﻔﺮ
داﻧﺸﺠﻮ ﺗﺤﺖ آراﻳﻪ Arr_stuﺷﻜﻞ ﮔﺮﻓﺘﻪ اﺳﺖ و ﺳﺮاﻧﺠﺎم ﻣﺘﻐﻴﺮي ﺑﻪ ﻧﺎم S
ﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ.
ﻧﻮع آن ﺮ
از ع
ﻣﺸﺎﺑﻪ ﺳﺎﺧﺘﺎر آراﻳﻪ ،ﭼﻴﺰي ﻋﻮض ﻧﺸﺪه اﺳﺖ و ﻓﻘﻂ ﻫﺮ ﻋﻨﺼﺮ آراﻳﻪ ،ﻳﻚ
رﻛﻮرد ﻣﻲﺑﺎﺷﺪ ﻛﻪ داراي ﺳﻪ ﻓﻴﻠﺪ ﻣﻄﺎﺑﻖ ﺟﺪول ﻓﻮق ﻣﻲﺑﺎﺷﺪ.
m
o
c
*
b
e
ﺑﺮاي دﺳﺘﺮﺳﻲ ﺑﻪ آراﻳﻪ ﻓﻮق دارﻳﻢu :
n
*p
w
w
w
S[1].name
S[1].id
] [
S[1].age
S[2].name
S[2].id
..
..
..
ﺍﺭﺳﺎﻝ ﺭﻛﻮﺭﺩ ﺑﻪ ﺯﻳﺮﺑﺮﻧﺎﻣﻪﻫﺎ
m
o
رﻛﻮردﻫﺎ را ﻣﻲﺗﻮان ﻣﺸﺎﺑﻪ اﻧﻮاع ﺗﻌﺎرﻳﻒ ﺳﺎده دﻳﮕﺮ ﺑﻪ ﺻﻮرت ﭘﺎراﻣﺘﺮﻫﺎي
ﻣﺘﻐﻴﺮ و ﻣﻘﺪار ﺑﻪ زﻳﺮﺑﺮﻧﺎﻣﻪ ارﺳﺎل ﻛﺮد .وﻟﻲ ﻧﻮع ﺑﺮﮔﺸﺘﻲ ﺗﻮاﺑﻊ ﻧﻤﻲﺗﻮاﻧﺪ
ﻧﻈﻴﺮ char ،integerو...
ﺳﺎده ﻧﻈ
ﺪ از ﻧﻧﻮع ﺎ
ﺣﺘﻤﺎ ﺎﺑﺎﻳﺪ
ﻳﻌﻨﻲ ﺘ ﺎً
ﺑﺎﺷﺪ ،ﻨ
رﻛﻮرد ﺎﺷﺪ
از ﻧﻧﻮع ﻛ
ﺑﺎﺷﺪ و از اﻧﻮاع ﺗﺮﻛﻴﺒﻲ ﻧﻈﻴﺮ رﻛﻮرد ،آراﻳﻪ ،ﻣﺠﻤﻮﻋﻪ و ﻓﺎﻳﻞ ﻧﻤﻲﺗﻮاﻧﺪ ﺑﺎﺷﺪ.
c
*
b
e
u
n
*p
w
w
اﮔﺮ ﺑﺨﻮاﻫﻴﻢ رﻛﻮردي را ﺑﺼﻮرت ﭘﺎراﻣﺘﺮ ﺑﻪ زﻳﺮﺑﺮﻧﺎﻣﻪ ارﺳﺎل ﻛﻨﻴﻢ ،اﺑﺘﺪا ﺑﺎﻳﺪ
ﺻﺎدر
ﻛﺎﻣﭙﺎﻳﻠﺮ ﺧﻄﺎ ﺎ
وﮔﺮﻧﻪ ﻛﺎ ﺎ ﻠ
ﺷﻮد ﮔ ﻧ
ارﺳﺎل ﺷ
ﻒ ﻛﻛﺮده و ﺳﭙﺲ ا ﺎل
آﻧﺮا در typeﺗﺗﻌﺮﻳﻒ
آﻧ ا
ﻣﻲﻛﻨﺪ.
w
داﻧﺸﺠﻮ اﻳﺠﺎد30 را ﺑﺮايstu ﻣﻲﺧﻮاﻫﻴﻢ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﻢ ﻛﻪ رﻛﻮرد: ﻣﺜﺎل
.ﺷﻮﻧﺪ
ﭼﺎپ ﺷ ﻧﺪ
ﺷﺪه و ﺎ
ﻣﻘﺪاردﻫﻲ ﺷﺪ
زﻳﺮﺑﺮﻧﺎﻣﻪ ﻘﺪا ﻫ
ﻛﻤﻚ ز ﻧﺎ ﻪ
ﺑﻪ ﻛ ﻚ
ﻪ،ﻛﻛﺮده
Program test;
Const no = 30;
Type
Stu-rec = Record
Name: string [10];
ID: integer;
Age: record
Day: integer;
Month: integer;
Year: integer;
End;
End;
Stu_arr=array[1..no] of stu_rec;
m
o
c
*
b
e
u
w
w
w
n
*p
Var
Stu: stu_rec;
_
Procedure ReadStu(Var S: Stu_rec);
Var i: integer;
B i
Begin
for i:= 1 to no do
Readln(S[i] name S[i].id,
Readln(S[i].name,
S[i] id S[i].age.day,
S[i] age day S[i].age.month,
S[i] age month
S[i].age.year);
End;;
m
o
c
*
b
e
u
w
w
w
n
*p
Procedure WriteStu(S: Stu_rec);
Var i: integer;
Begin
for i:= 1 to no do
Writeln(S[i].name,' ' , S[i].id, ' ' , S[i].age.day,' ' ,
S[i].age.month,' ' , S[i].age.year);
E d
End;
Begin
ReadStu(Stu);
WriteStu(Stu);
End.
m
o
c
*
b
e
u
w
w
w
n
*p
ﺗ ﻳﻨﺎﺕ
ﺗﻤﺮﻳﻨﺎﺕ
m
o
ﭘﺮﻧﺪﮔﺎن وﺣﺸﻲ رﻛﻮردي ﺷﺎﻣﻞ
ﮔ
ﺑﺮاي ﮔﮔﻮﻧﻪﻫﺎي ﺣﻴﻮاﻧﺎت ﻳﻚ ﭘﺎرك ﻧﻈﻴﺮ
ﻧﺎم ،دﺳﺘﻪ ،ﻣﺤﻴﻂ زﻧﺪﮔﻲ ،ﺳﻦ ﺑﺴﺎزﻳﺪ .در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ ﻛﻪ در ﭘﺎرك 100
وﺟﻮد دا د
دارد
وﺣﺸﻲ ﺟ د
ﭘﺮﻧﺪه ﺣﺸ
ﻳﻚ ﻧﺪ
ﮔﻮﻧﻪ از ﻚ
ﮔ ﻧﻪ
)راﻫﻨﻤﺎﻳﻲ :آراﻳﻪاي از رﻛﻮرد ﺑﺎ ﻓﻴﻠﺪﻫﺎي ﮔﻔﺘﻪ ﺷﺪه ﺑﺴﺎزﻳﺪ(.
c
*
b
e
u
n
ﻣﺎه و ﺎل
ﺳﺎل
ﺗﺎرﻳﺦ*ﺑﻪ ﺻﻮرت روز ،ﺎ
ﻧﮕﻬﺪاري ﺎpﺦ
ﺑﺮاي ﻧﮕ ا
ﺑﺮﻧﺎﻣﻪااي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻛﻪ ا
ﻧﺎ
ﺗﻘﻮﻳﻢ ﺑﺎﺷﺪ و ﺟﻤﻠﻪاي در ﻣﻮرد
ﺑﺮاي 100ﺳﺎل ﺑﻜﺎر رود .در واﻗﻊ ﺑﻪ ﺻﻮرت w
ﺗﺎﻳﻲ از روز ﺑﻬﻤﺮاه
wﺗﺎﻳ
راﻫﻨﻤﺎﻳﻲ :آراﻳﻪاي 366
آن ﺗﺎرﻳﺦ را ﻧﮕﻬﺪاري ﻛﻨﻴﺪ؟ )راﻫﻨﻤﺎﻳ
آراﻳﻪاي از 12ﻣﺎه و ﻳﻚ ﺳﺎل و ﻳﻚ رﺷﺘﻪ را ﺑﻪ ﺻﻮرتw
ﻳﻚ رﻛﻮرد در ﻧﻈﺮ
ﺳﭙﺲ ﺑﺮاي 100ﺳﺎل ﺑﺼﻮرت ﻳﻚ آراﻳﻪ ﺻﺪﺗﺎﻳﻲ در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ(.
ﮔﺮﻓﺘﻪ ﭙ
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﮔﺮﻭﻩ
ﺍﻃﻼﻋﺎﺕ) ﺮﻭ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﻓﺼﻞ 12
m
o
ﻓــﺎﻳـﻠﻬﺎ )(Files
c
*
b
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﻓﺎ
e
u
n
ﻣﻔﻬﻮم ﻓﺎﻳﻞ و اﻧﻮاعpآن*
w
ﻣﻮارد اﺳﺘﻔﺎده از ﻓﺎﻳﻠﻬﺎ
w
w
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي÷ﻓ ﺎ
ﻓﺎ
oﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
mاز
داﻧﺸﺠﻮ ﭘﺲ
c
*
b
e
ﻛﻨﺪ..
اﺳﺘﻔﺎده
در ﺑﺮﻧﺎﻣﻪاش از ﻓﺎﻳﻠﻬﺎ
u
n
*p
اﺳﺘﻔﺎده ﻛﻨﺪ..
ﺑﺮاي ﺑﺮﻧﺎﻣﻪﻫﺎي ﺑﺎ دادهﻫﺎي زﻳﺎد از ﻓﺎﻳﻞw
w
ﺑﺎ ﻓﺎﻳﻠﻬﺎي دادهاي و ﺑﺎﻳﺰي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻛﻨﺪw .
ﻣﻘﺪﻣﻪ
ﺑﺮاي ذﺧﻴﺮه داﺋﻤﻲ دادهﻫﺎ از ﺳﺎﺧﺘﺎري ﺑﻪ ﻧﺎم ﻓﺎﻳﻞ )(Fileاﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ.
m
o
c
*
b
e
ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺴﺘﮕﻲ داﺷﺖ .وﻟﻲ در ﻓﺎﻳﻠﻬﺎ
ﺑﻮدن
ﺑﻪ زﻣﺎن اﺟﺮاي ﺑﺮﻧﺎﻣﻪ و روﺷﻦ
u
n
p
*
ﭼﻨﻴﻦ ﻧﻴﺴﺖ ،ﺑﻠﻜﻪ دادهﻫﺎ در ﻓﺎﻳﻠﻬﺎﻳﻲ ﻗﺮار دارﻧﺪ ﻛﻪ ﺣﺘﻲ ﺑﻌﺪ از ﺧﺎﻣﻮش
w
w
ﻛﺮدن ﻛﺎﻣﭙﻴﻮﺗﺮ ،ﺑﻌﺪﻫﺎ ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ اﺳﺖ.
w
ﺗﺎﻛﻨﻮن ﻫﻤﻪ ﻋﻤﻠﻴﺎت ﻻزم در ﺣﺎﻓﻈﻪ اﺻﻠﻲ اﻧﺠﺎم ﻣﻲﮔﺮﻓﺖ ﻛﻪ ﮔﺬرا و ﻓﻘﻂ
ﻓﺎﻳﻠﻬﺎي ﻣﺘﻨﻲ )(Text
m
o
ﻳﻚ ااﺳﻢ در روي دﻳﺴﻚ
ﻚ
ﺗﺸﻜﻴﻞ ﺷﺪه ااﺳﺖ ﻛﻛﻪ ﺎﺑﺎ ﻚ
ﻛﺎراﻛﺘﺮ ﻜ ﻞ
ﺗﻌﺪاد ﻛﺎ اﻛ
ﻓﺎﻳﻞ ﻣﺘﻨﻲ ااز ا
ﻳﻚ ﻓﺎ ﻞ
ﻚ
ذﺧﻴﺮه ﺷﺪه اﺳﺖ .ﭼﻮن ﻓﺎﻳﻞ از ﻧﻮع ﻣﺘﻨﻲ اﺳﺖ ﻣﻲﺗﻮاﻧﻴﺪ دادهﻫﺎي داﺧﻞ آﻧﺮا
ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ.
c
*
b
e
u
n
*p
ﺳﺎﺧﺘﺎر دادهﻫﺎ در ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻨﻲ ﺑﺪﻳﻦ ﺻﻮرت اﺳﺖ ﻛﻪ ﺗﻌﺪادي ﺧﻂ وﺟﻮد دارد
ﻛﻪ ﺑﻪ ﻋﻼﻣﺖ EOLNﺧﺘﻢ ﻣﻲﺷﻮﻧﺪ و در اﻧﺘﻬﺎي ﻓﺎﻳﻞ ﻧﻴﺰ ﻋﻼﻣﺖ EOFﻗﺮار
دارد .ﻃﻮل ﺧﻄﻮط ﻧﺎﻣﺸﺨﺺ اﺳﺖ و اﻧﺪازه ﻓﺎﻳﻞ ﻣﻤﻜﻦ اﺳﺖ ﺑﺴﻴﺎر ﺑﺰرگ ﻳﺎ
ﺑﺎﺷﺪ.
ﻛﻮﭼﻚ و ﻳﺎﺎ ﺗﺗﻬﻲ ﺎﺷﺪ
ﻛ ﻚ
w
w
w
ﻓﺎﻳﻞ ﻣﺘﻨﻲ
ﻚ ﻓﺎ ﻞ
ﺍﻳﺠﺎﺩ ﻳﻚ
ﻃﺮﻳﻘﻪ ﺍ ﺎ
ﻃ ﻘ
m
o
c
*
ﻓﺎﻳﻠﻲ 1
1.
bﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺘﻐﻴﺮ ﻓﺎﻳﻠ
e
u
ﻓﺎﻳﻞ ﺑﻪ ﻣﺘﻐﻴﺮ ﻓﺎﻳﻠﻲ 2.
ﻧﺴﺒﺖ دادن اﺳﻢ
ﻢ
n
p
*
Rewriteاﻳﺠﺎد ﻓﺎﻳﻞwﺑﺎ دﺳﺘﻮر 3.
w
w
ﺗﻌﺮﻳﻒ ﻳﮏ ﻣﺘﻐﻴﺮ ﻓﺎﻳﻠﻲ
m
o
c
*
ﻧﺴﺒﺖ ﺩﺍﺩﻥ ﺍﺳﻢ ﻓﻓﺎﻳﻞﻞ ﺑﻪ b
ﻓﺎﻳﻠﯽ
eﻓ ﻠ
ﻣﺘﻐﻴﺮ
u
n
p
*
) ’Assign(FileVar , ‘NameFile
w
w
Rewriteﺍﻳﺠﺎﺩ ﻓﺎﻳﻞ ﺑﺎ ﺩﺳﺘﻮﺭ
w
;Name : Text
) Rewrite( FileVar
ﻣﺜﺎل :ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ از ورودي 10ﻋﺪد درﻳﺎﻓﺖ ﻛﻨﺪ و آﻧﻬﺎ را
ﺗﻌﺪاد و
ﺧﺮوﺟﻲ ﺑﺮﻳﺰد و در اﻧاﻧﺘﻬﺎﺎ ﺗ ﺪا
ﻞﺧ
ﻓﺎﻳﻞ
ﻚ ﻓﺎ
ازﻳﻚ
ﻚ ﺧﻂ از
ﻛﺪام درﻳﻚ
ﺗﺮﺗﻴﺐ ﻫﺮ ﻛﺪا
ﺑﻪ ﺗ ﺗ
ﻣﺠﻤﻮع آﻧﻬﺎ را ﺑﻨﻮﻳﺴﺪ.
Var
;f: Text
;A: Arrayy [ 1.. 10]] of integer
; g
;Sum, i: integer
Begin
;)' Sum: = 0;Writeln (' Enter 10 numbers:
For i: = 1 to 10 do begin
;)]Read (A [i
;]Sum: = sum + A[i
;e d
;end
;)'Assign (f, 'out.dat
;)Rewrite (f
m
o
c
*
b
e
u
n
*p
w
w
w
do
m
o
c
*
b
e
u
For i: = 1 to 10
;)]Writeln (f, A[i
;)Writeln (f, Sum
;)Close (f
End.
End
n
*p
ﺑﻌﺪ از ﻧﻮﺷﺘﻪ ﺷﺪن اﻃﻼﻋﺎت در ﻓﺎﻳﻞ ،ﻓﺎﻳﻞ ﺑﺎﻳﺪ ﺑﺴﺘﻪ ﺷﻮد ﺑﺮاي اﻳﻨﻜﺎر از
روال زﻳﺮ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد :
w
w
w
)Close(FileName
ﻳﻞ ﻣﺘﻨﻲ
ﻲ
ﻥ ﺍﻃﻼﻋﺎﺕ ﺍﺯﺯ ﻳﻳﻚ ﻓﺎﻳﻞ
ﺧﻮﺍﻧﺪﻥ
ﻃﺮﻳﻘﻪ ﻮ
ﺮﻳ
m
o
c
*
ﻓﺎﻳﻠﻲ 1
1.
bﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺘﻐﻴﺮ ﻓﺎﻳﻠ
e
u
ﻓﺎﻳﻞ ﺑﻪ ﻣﺘﻐﻴﺮ ﻓﺎﻳﻠﻲ 2.
ﻧﺴﺒﺖ دادن اﺳﻢ
ﻢ
n
p
*
wﺑﺎ دﺳﺘﻮر 3.
Resetﺑﺎز ﻛﺮدن ﻓﺎﻳﻞ ﺑﺮاي ﺧﻮاﻧﺪن
Resetﺑﺎز
w
w
ﺑﺎﺯ ﮐﺮﺩﻥ ﻓﺎﻳﻞ ﺑﺮﺍي ﺧﻮﺍﻧﺪﻥ ﺑﺎ ﺩﺳﺘﻮﺭ
Resett ( Fil
R
FileName
N
)
دﺳﺘﻮر Readو Readlnﺑﺮاي ﺧﻮاﻧﺪن اﻃﻼﻋﺎت از ﻓﺎﻳﻞ ﺑﻜﺎر ﻣﻲ روﻧﺪ .
m
o
c
*
ﺑﺮاي Writelnﻧﻴﺰ ﭼﻨﻴﻦ ﻣﻲ b
ﺑﺎﺷﺪe.وﻟﻲ ﻗﺒﻞ از اﺳﺘﻔﺎده از اﻳﻦ دﺳﺘﻮرات ﺑﺎﻳﺪ
u
n
ﺑﺮاي
ﻓﺎﻳﻞ ﻣﺘﻨﻲ راا ا
Resetﻓﺎ ﻞ
دﺳﺘﻮر R t
ﺑﺮاي ا
ﻞ ﻣﺘﻨﻲ ا
ﻓﺎﻳﻞ
ﻓﺎ
ﺧﻮاﻧﺪن ﻳﺎﺎ ﻧﻮﺷﺘﻦ ﺎﺑﺎز ﺷﻮد*p .
w
ﺑﺮدw.
ﺧﻮاﻧﺪن ﺑﺎز ﻣﻣﻲﻛﻨﺪ و ﻣﻜﺎن ﻧﻤﺎ را اﺑﺘﺪاي ﻓﺎﻳﻞ ﻣﻣﻲﺑ د
w
Readlnﺑﻌﺪ از ﺧﻮاﻧﺪن دادهﻫﺎي ﻣﻮرد ﻧﻈﺮ ﺑﻪ ﺳﻄﺮ ﺑﻌﺪ ﻣﻲرود .اﻳﻦ ﻋﻤﻞ
ﻛﺮده ،و ﻣﻜﺎن ﻧﻤﺎ ررا ﺑﺑﻪ
ﻦ درر آن ﺑﺑﺎزز ﺮ
ﻧﻮﺷﺘﻦ
ﺑﺮاي ﻮ
ﻣﺘﻨﻲ ررا ﺑﺮ ي
ﻓﺎﻳﻞ ﻲ
ﻮر Rewriteﻳﻞ
دﺳﺘﻮر
اﺑﺘﺪاي آن ﻣﻲﺑﺮد.
' ﻣﻲﺧﻮﺍﻫﻴﻢ ﺍﻋﺪﺍﺩ ﺩﺍﺧﻞ ﻓﺎﻳﻞtest.dat' ﺣﺎﻝ ﺑﺎﻓﺮﺽ ﻣﻮﺟﻮﺩ ﺑﻮﺩﻥ ﻓﺎﻳﻞ ﻣﺘﻨﻲ
: ﻴﻢ
ﻊ ﻛﻨﻴﻢ
ﺟﻤﻊ
ﻢﺟ
ﺧﻮﺍﻧﺪﻩ ﺑﺑﺎﻫﻢ
ﻳﻞ ﻮ
ﺞ ﺗﺎ ﻫﺴﺘﻨﺪ ﺭﺭﺍ ﺍﺯﺯ ﻓﺎﻳﻞ
ﺭﺭﺍ ﻛﻪ ﭘﭘﻨﺞ
Program usefile ;
Var
f: Text;
str1,, str2: string;
g; a,, b,, c,, d,, e: integer;
g ;
begin
Assign (f, ' Test. dat ');
Reset (f);
Readln (f, str1);
Readln (f,
(f a,
a b,
b c);
Readln (f, d, e, str2);
Write
W
te (str2,
(st , ':: ' , a + b + c + d + e );
Close (f);
End.
m
o
c
*
b
e
u
w
w
w
n
*p
ورودي د ﺎﻓﺖ
درﻳﺎﻓﺖ
را از دي
ﺟﻤﻠﻪ ا
ﭼﻨﺪ ﻠﻪ
ﺷﺎﻣﻞ ﻨﺪ
ﻣﺘﻨﻲ ﺷﺎ ﻞ
ﻓﺎﻳﻞ ﺘﻨ
ﻳﻚ ﻓﺎ ﻞ
ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻚ
ﺑﺮﻧﺎﻣﻪاي ﻨ ﺪ
ﻧﺎ ﻪ: ﻣﺜﺎل
ﺜﺎل
.ﻛﺮده و ﻳﻚ ﻛﭙﻲ از ﻓﺎﻳﻞ درﺧﺮوﺟﻲ ﺑﺴﺎزد
var
f1,f2: Text;
str1,str2 : string ; ch : char ;
begin
write('Enter Input file: ');
readln(str1);
write('Enter output (copy) file: ');
readln(str2);
assign(f1,strl);
reset(f1);
assign(f2,str2);
i (f2 t 2)
rewrite(f2);
m
o
c
*
b
e
u
w
w
w
n
*p
در اﻳﻦ ﺑﺮﻧﺎﻣﻪ اﺑﺘﺪا دو ﻓﺎﻳﻞ ﺑﻪ ﻧﺎﻣﻬﺎﻳﺸﺎن ﻧﺴﺒﺖ داده ﻣﻲﺷﻮﻧﺪ و ﺗﺮﺗﻴﺐ ﺑﺮاي
m
o
c
*
b
ﺣﻠﻘﻪ ﺗﻮ در ﺗﻮ whileﺷﺮط ﺧﺎﺗﻤﻪ ﺧﻄﻮط
ﻳﻚ
ﻳﻌﻨﻲ f1ﺑﺮرﺳﻲ ﻣﻲﺷﻮﻧﺪ و در
e
u
n
ﺷﺪه و در
ﺧﻮاﻧﺪه ﺷ
pﻞ ورودي ﺧ اﻧ
ﺷﺪه و ﻛﺎ اﻛ
ﺗﻮﺳﻂ eolnﺑﺮرﺳﻲ ﺷ
ﻧﻧﻴﺰ ﺗ ﻂ
ﻛﺎراﻛﺘﺮ ﺎﻫﺎ از ﻓﺎﻳ *
w
w
ﻓﺎﻳﻞ ﺧﺮوﺟﻲ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ.
w
ﺧﻮاﻧﺪن و ﻧﻮﺷﺘﻦ ﺑﺎز ﻣﻲﺷﻮﻧﺪ .ﺳﭙﺲ ﺗﻮﺳﻂ eofﺷﺮط ﺧﺎﺗﻤﻪ ﻓﺎﻳﻞ ورودي
while not eof ( f1 ) do
begin
while
hil nott eoln(
l ( f1 )
begin
read(f1 ch);
read(f1,ch);
write(f2,ch);
end;;
readln(f1);
writeln(f2);
end;
Close(f1);
Close(f2);
End.
w
w
m
o
c
*
b
e
u
n
*p
w
d
do
ﻓﺎﻳﻠﻬﺎي ﺩﻭﺩﻭﻳﻲ ﻭ ﻧﻮﻉﺩﺍﺭ) (Binary & Typed
اﻳﻦ ﻧﻮع ﻓﺎﻳﻞﻫﺎ در زﺑﺎن ﭘﺎﺳﻜﺎل از ﺗﺎﻳﭙﻬﺎي ﻣﺨﺘﻠﻒ record ,array
m
o
c
*
b
uدارﻧﺪ .اﻳﻦ ﻓﺎﻳﻠﻬﺎ ﭘﺲ از اﻳﺠﺎد ﺗﻮﺳﻂ
…e
ﺷﺒﻴﻪ ﻣﺮﺗﺐﺳﺎزي ،ﺟﺴﺘﺠﻮ ،ﺣﺬف و
n
p
*
ﺑﺮﻧﺎﻣﻪ ،ﻗﺎﺑﻞ رؤﻳﺖ ﺗﻮﺳﻂ وﻳﺮاﺷﮕﺮﻫﺎ ﻧﻴﺴﺘﻨﺪ ،ﺑﻠﻜﻪ ﺑﻪ ﺻﻮرت ﻛﺪﻫﺎي اﺳﻜﻲ
w
w
ت آﻧﻬﺎ ﻧﻴﺰ ﺑﻪ
ﻣﻲﺑﺎﺷﻨﺪ ﻳﻌﻨﻲ دودوﻳﻲ ﻣﻲﺑﺎﺷﻨﺪ .ﻧﺤﻮه دﺳﺘﺮﺳﻲ ﺑﻪ اﻃﻼﻋﺎw
,read ,integer ,charو … ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ ﻛﻪ ﻧﻴﺎز ﺑﻪ ﭘﺮدازش ﻣﺘﻨﻮع
ﺗﺼﺎدﻓﻲ ) (R d
)(Random
ﺻﻮرت ﺗ ﺎ ﻓ
ااﺳﺖ.
ﺩﺍﺭ
ﻓﺎﻳﻞ ﻧﻧﻮﻉ ﺍ
ﻚ ﻓﺎ ﻞ
ﺍﻳﺠﺎﺩ ﻳﻚ
ﻃﺮﻳﻘﻪ ﺍ ﺎ
ﻃ ﻘ
m
o
c
*
ﻓﺎﻳﻠﻲ 1
1.
bﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺘﻐﻴﺮ ﻓﺎﻳﻠ
e
u
ﻓﺎﻳﻞ ﺑﻪ ﻣﺘﻐﻴﺮ ﻓﺎﻳﻠﻲ 2.
ﻧﺴﺒﺖ دادن اﺳﻢ
ﻢ
n
p
*
Rewriteاﻳﺠﺎد ﻓﺎﻳﻞwﺑﺎ دﺳﺘﻮر 3.
w
w
ﺗﻌﺮﻳﻒ ﻳﮏ ﻣﺘﻐﻴﺮ ﻓﺎﻳﻠﻲ
m
o
c
*
b ﻧﺴﺒﺖ ﺩﺍﺩﻥ ﺍﺳﻢ ﻓﻓﺎﻳﻞﻞ ﺑﻪ
ﻓﺎﻳﻠﯽ
ﻓ ﻠe
ﻣﺘﻐﻴﺮ
u
n
p
*
Assign(FileVar , ‘NameFile’ )
w
w
ﺍﻳﺠﺎﺩ ﻓﺎﻳﻞ ﺑﺎ ﺩﺳﺘﻮﺭRewrite
w
Name : File Of FileType ;
Rewrite( FileVar )
:ﺷﺪﻩ ﺍﺍﺳﺖ
ﺁﻭﺭﺩﻩ ﺷ
ﺨﺘﻠﻒ ﺩﺩﺭ ﺯﺯﻳﺮ ﺁ ﺩ
ﺍﻉ ﻣﺨﺘﻠﻒ
ﺩﺍﺭ ﺍﺯ ﺍﻧﺍﻧﻮﺍﻉ
ﻧﻮﻉﺩﺍ
ﺩﻭﺩﻭﻳﻲ ﻧ ﻉ
ﻓﺎﻳﻞ ﺩ ﺩ
ﻳﻚ ﻓﺎ ﻞ
ﺗﻌﺮﻳﻒ ﻚ
ﻧﻧﺤﻮﻩ ﺗ ﻒ
Const n=100;
Type
Student = Record
Name: string[10];
Family: String[15];
Age: integer;
ID: integer;
end;
Sarray = Array [1..n] of student;
c
*
b
e
u
m
o
w
w
w
n
*p
ﻣﺜﺎﻝ :
Var
m
o
c
*
ﻓﺎﻳﻞ دودوﻳﻲ از ﻧﻧﻮع ﺻﺤﻴﺢ
ﻓﺎ ﻞ
b
e
u
;Bf2: file of integer
ﻓﺎﻳﻞ دودوﻳﻲ از ﻧﻮع رﻛﻮرد داﻧﺸﺠﻮ
n
*p
ﻓﺎﻳﻞ دودوﻳﻲ از ﻣﺠﻤﻮﻋﻪ Aﺗﺎ Z
ﻓﺎ ﻞ
'Bf6: file of set of 'A
;''A'..'Z
;''Z
ﻓﺎﻳﻞ دودوﻳﻲ از ﻧﻮع ﻛﺎراﻛﺘﺮ
;Bf3: file of student
w
;Bf1: file of char
w
w
ﺗﺎﻳﻲ( ﺍﺯ ﻭﺭﻭﺩي ﺧﻮﺍﻧﺪﻩ10 ﺑﺮﻧﺎﻣﻪﺍي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﻌﺪﺍﺩ ﺭﺷﺘﻪ )ﺣﺪﺍﻛﺜﺮ: ﻣﺜﺎﻝ
.ﻞ ﺩﻭﺩﻭﻳﻲ ﺑﻨﻮﻳﺴﻴﺪ
ﻓﺎﻳﻞ
ﻭ ﺩﺭ ﻳﻚ ﻓﺎ
Const n= 10;
Var
Bf: file of strin[10]; Str: string [10];
i: integer;
g ;
Begin
Assign (Bf,'out.dat');
Rewrite (Bf);
For i:=1 to n do Begin
Readln (str);
Write (Bf,str);
End;
d;
Close (Bf);
End.
c
*
b
e
u
m
o
w
w
w
n
*p
m
o
ﻛﺘﺎﺑﺨﺎﻧﻪاي ﭘﺎﺳﻜﺎل ﺟﻬﺖ ﻛﺎر ﺑﺎ ﻓﺎﻳﻠﻬﺎ
در ﺟﺪول ﺻﻔﺤﻪ ﺑﻌﺪ ﺗﻤﺎم رواﻟﻬﺎي ﻛﺘﺎﺑﺨﺎﻧﻪاي
c
*
b
e
u
آورده ﺷﺪه اﺳﺖ ﻛﻪ ﺑﻪ ﻫﻤﺮاه ﺗﻮﺿﻴﺤﺎت ﻻزﻣﻪ ﺟﻬﺖ ﻛﺎر ﺑﺎ آﻧﻬﺎ ﻣﻲﺑﺎﺷﺪ.
n
*p
ﻫﻤﭽﻨﻴﻦ ﺑﺮاي ﻫﺮ ﺗﺎﺑﻊ و روﻳﻪ ﻣﺤﻞ ﻣﻮرد اﺳﺘﻔﺎده آن در ﺳﺘﻮﻧﻲ ﻣﺸﺨﺺ
ﺷﺪه اﺳﺖ .
w
w
w
+
+
+
+
+
+
+
+
+
×
+
+
+
×
×
ﺭﺩﻳﻒ
ﻓﺎﻳﻠﻬﺎي
ﻣﺘﻨﻲ
ﻓﺎﻳﻠﻬﺎي
ﻧﻮﻉ
ﺩﺍﺭ
ﻧﺎﻡ ﺩﺳﺘﻮﺭ
1
Assign
2
Reset
3
Rewrite
4
Read
5
Readln
6
Write
7
Writeln
ﻧﻮﺷﺘﻦ ﺩﺭ ﻓﺎﻳﻞ ﻣﺘﻨﻲ
8
Eoln
ﻣﺸﺨﺺ ﻧﻤﻮﺩﻥ ﺍﻧﺘﻬﺎي ﺧﻂ
+
9
Eof
ﻣﺸﺨﺺ ﻧﻤﻮﺩﻥ ﺍﻧﺘﻬﺎي ﻓﺎﻳﻞ
+
+
10
Append
ﺑﺎﺯﻧﻤﻮﺩﻥ ﻓﺎﻳﻞ ﻣﺘﻨﻲ ﺟﻬﺖ ﺍﺿﺎﻓﻪ ﻧﻤﻮﺩﻥ
+
×
m
o
ﻋﻤﻠﻴﺎﺕ ﻣﺮﺑﻮﻃﻪ
c
*
b
ﻓﺎﻳﻞ ﺭﺍ ﺑﻪ ﻣﺘﻐﻴﺮ ﻓﺎﻳﻞ ﻧﺴﺒﺖ ﻣﻲﺩﻫﺪ.
ﻧﺎﻡ
e
uﺑﺮﺍي ﺧﻮﺍﻧﺪﻥ ﺑﺎﺯ ﻣﻲﻛﻨﺪ.
ﻓﺎﻳﻞ ﻣﺮﺑﻮﻃﻪ ﺭﺍ
nﻧﻮﺷﺘﻦ ﺑﺎﺯ ﻣﻲﻛﻨﺪ.
ﻓﺎﻳﻞ ﻣﺮﺑﻮﻃﻪ ﺭﺍ ﺑﺮﺍي
p
ﺧﻮﺍﻧﺪﻥ ﺍﺯ ﻓﺎﻳﻞ*
ﺧﻮﺍﻧﺪﻥ ﺍﺯ ﻓﺎﻳﻞ ﻣﺘﻨﻲw
ﻧﻮﺷﺘﻦ ﺩﺭ ﻓﺎﻳﻞ w
w
11
Close
ﺑﺴﺘﻦ ﻓﺎﻳﻞ
+
+
+
12
Seek
ﺍﻧﺘﻘﺎﻝ ﻭﺣﺮﻛﺖ ﻣﻜﺎﻥﻧﻤﺎﺩﺭ ﻓﺎﻳﻞ ﺩﻭﺩﻭﻳﻲ
×
+
+
ﻣﺸﺨﺺ ﻧﻤﻮﺩﻥ ﺭﺳﻴﺪﻥ ﺑﻪ ﺍﻧﺘﻬﺎي ﺧﻂ ﻓﺎﻳﻞ ﻣﺘﻨﻲ
+
×
×
+
×
×
×
+
+
×
+
+
×
+
+
+
+
+
+
+
+
+
×
×
×
13
14
m
o Seekeof
Seekoln
c
*
ﺍﻧﺘﻬﺎي ﻓﺎﻳﻞ
ﻳﻞ
ﺍﺯ ﻬ ي
ﺭﻛﻮﺭﺩ ﺯ
ﺷﻤﺎﺭﻩ ﺭ ﻮﺭ
ﺭ
b
e
ﻓﺎﻳﻞ ﺟﺎﺭي ﺭﺍ ﺑﺮﻣﻲﮔﺮﺩﺍﻧﺪ
ﺗﻌﺪﺍﺩ ﺭﻛﻮﺭﺩﻫﺎي
u
ﺍﻧﺘﻬﺎي ﻓﺎﻳﻞ
ﻞ
ﺣﺬﻑ ﻳﻚ ﺭﻛﻮﺭﺩ ﺍﺯ
n
ﺑﺮﺍي ﺣﺬﻑ ﻓﺎﻳﻠﻬﺎ ﺑﻜﺎﺭ ﻣﻲpﺭﻭﺩ*.
ﺑﺮﺍي ﺗﻐﻴﻴﺮ ﻧﺎﻡﻡ ﻓﺎﻳﻠﻬﺎ ﺑﻜﺎﺭﻣﻲﺭﻭﺩw.
w
ﻣﺸﺨﺺ ﻧﻤﻮﺩﻥ ﺭﺳﻴﺪﻥ ﺑﻪ ﺍﻧﺘﻬﺎي ﻓﺎﻳﻞ ﻣﺘﻨﻲ
15
Filefos
16
Filesize
17
Truncate
18
Erase
19
Rename
20
Flush
ﻣﺤﺘﻮﻳﺎﺕ ﺑﺎﺯﻓﺎﻳﻞ ﻣﺘﻨﻲ ﺭﺍ ﺑﻪ ﺩﻳﺴﻜﺖ ﺍﻧﺘﻘﺎﻝ ﻣﻲﺩﻫﺪw .
21
SetTextbuf
ﺍﻧﺪﺍﺯﻩ ﺑﺎﻓﺮ ﺑﺮﺍي ﻓﺎﻳﻠﻬﺎي ﻣﺘﻨﻲ ﺭﺍ ﺑﺮﻣﻲﮔﺮﺩﺍﻧﺪ.
+
×
22
Blockread
ﺧﻮﺍﻧﺪﻥ ﻳﻚ ﺑﻼﻙ ﺍﺯ ﻓﺎﻳﻞ ﺑﺪﻭﻥ ﻧﻮﻉ
×
×
+
23
Blockwrite
ﻧﻮﺷﺘﻦ ﻳﻚ ﺑﻼﻙ ﺍﺯ ﻓﺎﻳﻞ ﺑﺪﻭﻥ ﻧﻮﻉ
×
×
+
ﻣﺜﺎﻝ ﻫﺎي ﺣﻞ ﺷﺪﻩ
m
o
.آورد
ﻲ ررا ﺑﺑﺪﺳﺖ ور
ﻳﻞ ﻣﺘﻨﻲ
ﺧﻄﻮط ﻳﻳﻚ ﻓﺎﻳﻞ
ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﻌﺪاد ﻮ
اي ﺑ ﻮﻳ ﻴ
ﺑﺮﻧﺎﻣﻪ ي
ﺑﺮ: ل
ﻣﺜﺎل
c
*
b
e
u
Var
F: text ;
ch : char ;
str: string[20];
count: integer;
Begin
W it ('Enter
Write
('E t the
th file
fil name: ');
')
Readln(str);
Assign(f str);
Assign(f,str);
Reset(f);
w
w
w
n
*p
count:=0;
While not eof(f) do
begin
While not eoln(f)
( ) do
Read(f,ch);
Readln(f);
count:=count+1;
end;
Write('the number of lines in file is: ',count);
' count);
End.
m
o
c
*
b
e
u
w
w
w
n
*p
ﻛﺘﺎﺏ ﺭﺍ ﺩﺭ ﻳﻚ10 ﺗﻌﺪﺍﺩ، ﺭﻛﻮﺭﺩي ﺍﺯ ﻛﺘﺎﺏﻫﺎ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ: ﻣﺜﺎﻝ
.ﻓﺎﻳﻞ ﻧﻮﻉ ﺩﺍﺭ ﺫﺧﻴﺮﻩ ﻛﻨﻴﺪ
Const
n = 10;
Type
Booktype = Record
name: string[20];
ID: integer;
end;
Var
Bf file
Bf:
fil off B
Booktype;
kt
I , ID : integer;
name: string[20];
Book: Book type;
m
o
c
*
b
e
u
w
w
w
n
*p
Begin
B
i
Assign (Bf,'book.dat');
Rewrite (Bf);
For I := 1 to n do
begin
g
Write ('Enter the name & ID of book: ');
Readln (name, ID);
Book.name:=
k
name;
Book.ID:= ID;
Write (Bf,
(Bf Book);
End;
Close
C
ose ((Bf);
);
End.
m
o
c
*
b
e
u
w
w
w
n
*p
ﺗﻤﺮﻳﻨﺎﺕ
ﺗ ﺎ
m
o
ﺣﻘﻴﻘﻲ ﻛﻪ در ﺳﻄﺮﻫﺎ و
ﻣﺘﻨﻲ از اﻋﺪاد ﺣﻘﻴﻘ
اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ از ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻨ
ﺑﺮﻧﺎﻣﻪاي
ﺑﺮﻧﺎﻣﻪ
ﺳﺘﻮﻧﻬﺎ ﻣﺨﺘﻠﻒ ﻗﺮار دارﻧﺪ ،ﻣﻴﺎﻧﮕﻴﻦ دادهﻫﺎ را ﺑﺪﺳﺖ آورده و در ﻣﺎﻧﻴﺘﻮر
پ ﻛﻨﺪ.
ﭼﺎپ
c
*
b
e
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ در اﻧﺘﻬﺎي ﻳﻚuﻓﺎﻳﻞ ﻣﺘﻨﻲ ،ﻫﻤﺎن ﻓﺎﻳﻞ ﻣﺘﻨﻲ را اﺿﺎﻓﻪ ﻛﻨﺪ.
n
*p
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ در ﻳﻚ ﻓﺎﻳﻞ ﻧﻮع دار از w
ﻛﺎراﻛﺘﺮﻫﺎ ،اﻃﻼﻋﺎت آﻣﺎري
ﺖ آآورد.
ﺑﺪﺳﺖ
wﺪ
ﻛﺎراﻛﺘﺮ راا
ﺗﻌﺪاد ﻫﻫﺮ ﻛﺎ اﻛﺘ
ﻳﻌﻨﻲ ﺗ ﺪا
ﺑﺪﺳﺖ آورده ،ﻨ
را ﺪ ﺖ
ﻛﺎراﻛﺘﺮ ا
ﻫﻫﺮ ﻛﺎ اﻛﺘ
w
ﻣﺜﻼً ﻛﺎراﻛﺘﺮ ' 'Aﺑﻪ ﺗﻌﺪاد 45ﺗﺎ و ﻛﺎراﻛﺘﺮ ' 'Bﺑﻪ ﺗﻌﺪاد 36ﺗﺎ و…
ﺩﺍﻧﺸﮕﺎﻩ ﭘﻴﺎﻡ ﻧﻮﺭ
ﺩﺍﻧﺸﻜﺪﻩ ﻓﻨﺎﻭﺭي
ﺍﻃﻼﻋﺎﺕ)ﮔﺮﻭﻩ
ﻣﻬﻨﺪﺳﻲ
ﮐﺎﻣﭙﻴﻮﺗﺮ(
ﻓﺼﻞ 13
m
o
ﺗﺤﻠﻴﻞ ﺍﻟﮕﻮﺭﻳﺘﻤﻬﺎ
c
*
b
ﻛﻠﻲ
ﻫﺪﻓﻬﺎي ﻛﻠ
ﻓﺎ
e
u
n
p
*
ﻣﻔﻬﻮم و ﺗﻌﺮﻳﻒ اﻟﮕﻮرﻳﺘﻢ
w
ﻳﻲ ﻳﻳﻚ ﻮرﻳ
ﻛﺎراﻳﻲ
ﻣﻔﻬﻮم ر
ﻬﻮم
اﻟﮕﻮرﻳﺘﻢﻢw
ﻣﺮﺗﺒﻪ ﻳﻚ اﻟﮕﻮرﻳﺘﻢ
w
رﻓﺘﺎري
ﻫﺪﻓﻬﺎي÷ﻓ ﺎ
ﻓﺎ
oﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﺪ:
mاز
داﻧﺸﺠﻮ ﭘﺲ
c
*
b
ﺑﺮﻧﺎﻣﻪ ﺧﻮد را ﺗﺤﻠﻴﻞ e
uﻧﻤﺎﻳﺪ.
زﻣﺎﻧﻲ
n
*p
ﻣﺮﺗﺒﻪ اﻟﮕﻮرﻳﺘﻢ را ﺑﺪﺳﺖ آورد.
w
w
اﻟﮕﻮرﻳﺘﻤﻬﺎي ﺑﺎزﮔﺸﺘﻲ را ﺗﺤﻠﻴﻞ ﻧﻤﺎﻳﺪ.
w
ﻣﻘﺪﻣﻪ
m
o
ﺑﺮرﺳﻲ و
ﻞ آنن ﻣﺴﺌﻠﻪ ،ﺑﺮر ﻲ
ي ﻣﺨﺘﻠﻒ ﺣﻞ
روﺷﻬﺎي
ﺑﻲ رو ﻬ
ارزﻳﺎﺑﻲ
ﻲ رزﻳ
ﻢ ﻳﻳﻌﻨﻲ
اﻟﮕﻮرﻳﺘﻢ
ﻴﻞ ﻳﻳﻚ ﻮرﻳ
ﺗﺤﻠﻴﻞ
c
*
b
e
u
ﻣﺤﺎﺳﺒﻪ ﺑﻬﺘﺮﻳﻦ و ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺘﻬﺎ ،ﺑﺼﻮرﺗﻲ ﻛﻪ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺷﺮاﻳﻂ ﺑﻬﺘﺮﻳﻦ
n
*p
ﺣﺎﻟﺖ را ﺑﺘﻮان اﻧﺘﺨﺎب ﻛﺮد .اﻟﮕﻮرﻳﺘﻢ در واﻗﻊ ﺗﻌﺪاد ﻣﺤﺪودي از دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ
w
w
ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ ﺑﺘﺮﺗﻴﺐ اﺟﺮا ﻣﻲﺷﻮﻧﺪ و ﻫﺪف ﺧﺎﺻﻲ را دﻧﺒﺎل ﻣﻲﻛﻨﻨﺪ
w
ﺗﻌﺮﻳﻒ ﻣﺮﺗﺒﻪ ﻳﺎ ﭘﻴﭽﻴﺪﮔﻲ ﺍﻟﮕﻮﺭﻳﺘﻢ ) Oﺑﺰﺭﮒ(
ﺑﺮﺍي ﺑﺪﺳﺖ ﺁﻭﺭﺩﻥ ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ ﺍﺟـﺮﺍي ﻳـﻚ ﺍﻟﮕـﻮﺭﻳﺘﻢ ﻳـﺎ ﻣﺮﺗﺒـﻪ ﭘﻴﭽﻴـﺪﮔﻲ
ﺍﻟﮕﻮﺭﻳﺘﻢ ﺍﺯ
ﻟﮕ
m
o
c
*
ﻋﺒﺎﺭﺗﺴﺖ ﺍﺯ )) f(n)=O(g(nﻭ
ﻳﻒ ﻋ ﺎ ﺗ ﺖ
ﺗﻌﺮﻳﻒ
ﻛﻨﻴﻢ ﻭ ﺑﻨﺎbﺑﻪ ﺗﻌ
ﺑﺰﺭﮒ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻣﻲﻛﻨ
Oﺑﺰ ﮒ
e
u
ﺗﻨﻬﺎ
ﺍﮔﺮ ﻭ ﻬ
ﻲﺑﺑﺎﺷﺪn،ﺮ
( gﻣﻲ
ﻣﺮﺗﺒﻪ ))g(x
) f(xﺍﺯﺯ ﺮ ﺒ
ﺧﻮﺍﻧﻴﻢ ) (
ﻣﻲ ﻮ ﻴﻢ
ﻲ
*p
w
c 0, n nw
) 0 f ( x ) c.g( x
w
ﻣﺜﺎل f(n) =2n+1 :ﻣﻲﺗﻮان ﺑﺎ در ر
ﻧﻈﺮﮔﺮﻓﺘﻦ g(n)=nو c=3راﺑﻄﻪ زﻳﺮ
ﺣﺎﺻﻞ ﻣﻲ ﺷﻮد :
m
o
c
*
b
f( ) 2n+
=)f(n
=)+1 <= cg(n
( ) 3n
=>n
1
e
u
n
p
*
) O(nﻣﻲﺑﺎﺷﺪ.
ﻟﺬا ﻣﻲﺗﻮان ﮔﻔﺖ ،ﭘﻴﭽﻴﺪﮔﻲ زﻣﺎﻧﻲ ) f(nاز ﻣﺮﺗﺒﻪw
w
w
ﺑﺪﺳﺖ ﺁﻭﺭﺩﻥ ﻣﺮﺗﺒﻪ ﺍﻟﮕﻮﺭﻳﺘﻤﻬﺎ
ﺑﺮاي ﺑﺪﺳﺖ آوردن ﻣﺮﺗﺒﻪ اﺟﺮاي اﻟﮕﻮرﻳﺘﻤﻬﺎ ﺑﺎﻳﺪ ﺑﻪ دﻗﺖ ﺑﺮرﺳﻲ ﺷﻮد و ﺗﻌﺪاد
m
o
c
*
b
e
uﻣﻄﺎﺑﻖ ﻣﺜﺎﻟﻬﺎي ﻗﺒﻠﻲ ﺑﻪ ﭘﻴﭽﻴﺪﮔﻲ زﻣﺎن
آورده ﺷﻮد و ﺳﭙﺲ ﺑﺎ ﻫﻢ ﺟﻤﻊ ﺷﺪه و
n
p
*
wﺷﺮوع ﻛﺮده و ﺑﻪ ﭘﻴﭽﻴﺪه
واﻗﻌﻲ رﺳﻴﺪ .ﺑﺮاي اﻳﻦ ﻣﻨﻈﻮر از اﻟﮕﻮرﻳﺘﻤﻬﺎي ﺳﺎده
w
w
ﻣﻲرﺳﻴﻢ.
ﺗﻜﺮار آن اﻟﮕﻮرﻳﺘﻢ ﺑﺪﺳﺖ آورده ﺷﻮد .ﻳﻌﻨﻲ در واﻗﻊ ﺗﻌﺪاد ﺗﻜﺮارﻫﺎ ﺑﺪﺳﺖ
ﻓﺮﺽ ﻛﻨﻴﺪ ﺍﻟﮕﻮﺭﻳﺘﻤﻲ ﺩﺍﺭﺍي ﺣﻠﻘﻪﻫﺎي ﺳﺎﺩﻩ ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﺑﺎﺷﺪ:
m
o
c
*
b
e
u
;x:= 0
For I ::=11 to n do
;x:=x+1
n
*p
دارد.
ﭘﺎراﻣﺘﺮ nا
ﺑﺴﺘﮕﻲ ﺑﻪ ﺎ ا ﺘ
ﺣﻠﻘﻪ forﺘﮕ
ﻳﻌﻨﻲ ﻠﻘ
ﺑﺎﺷﺪ .ﻨ
ﺗﻌﺪاد ورودي ﻣﻲ ﺎﺷﺪ
ﻛﻛﻪ در آن nﺗ ﺪا
ﻫﻤﺎن ﻃﻮر ﻛﻪ از ﺗﻌﺮﻳﻒ ﺣﻠﻘﻪ forﺑﺮﻣﻲآﻳﺪ ﺗﻌﺪاد n -1+1ﺗﻜﺮار ﻳﻌﻨﻲ
nﺗﻜﺮار وﺟﻮد دارد و ﻟﺬا ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻓﻮق از ﻣﺮﺗﺒﻪ ) O(nﻣﻲﺑﺎﺷﺪ.
w
w
w
:ﺗﺎﺑﻊ ﺯﻳﺮ ﺭﺍﺍ ﺑﺪﺳﺖ ﺁﺁﻭﺭﻳﺪ
ﻣﺮﺗﺒﻪ ﺗﺎ
ﺗ: ﻣﺜﺎﻝ
ﺜﺎﻝ
m
o
g ) : integer
g ;
Function fact ( n : integer
var
f,i: integer;
begin
f:=1;
for I := 1 to n do
f:=f*i;
fact: f;
fact:=f;
end;
c
*
b
e
u
w
w
w
n
*p
ﺗﺎﺑﻊ ﻓﻮق ﻓﺎﻛﺘﻮرﻳﻞ ﻋﺪد nرا ﺑﺮ ﻣﻲﮔﺮداﻧﺪ .ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻲﺑﻴﻨﻴﺪ ﺗﺎﺑﻊ ﺷﺎﻣﻞ
m
o
ﻳﻚ ﺣﻠﻘﻪ forﺳﺎده ﺑﻮده ﻛﻪ از ﻳﻚ ﺗﺎ nﻣﺘﻐﻴﺮ ﺑﻮده و ﻟﺬا nﺑﺎر ﺗﻜﺮار ﻣﻲﺷﻮد.
c
*
دارﻧﺪ.
ﺛﺎﺑﺘﻲ ا ﻧﺪ
ﻫﺎي ﺛﺎ ﺘ
زﻣﺎن ﺎ
bﺎن
دارد ﻛﻛﻪ ز
ﻧﻴﺰ وﺟﻮد ا
ﺳﺎده ﻧ ﺰ
ﺟﻤﻠﻪ ﺎ
2ﻠ
e
u
n
ﺑﺮاﺑﺮ اﺳﺖ ﺑﺑﺎ :
ﺗﺎﺑﻊ ﺑﺑﺎﻻ ﺑﺮ ﺑﺮ
ﻣﺮﺗﺒﻪ ﺑﻊ
ﺑﻨﺎﺑﺮاﻳﻦ ﺮ ﺒ
ﺑ ﺑﺮ ﻳﻦ
*p
w
w
w
)O(n
ﺗﻤﺮﻳﻨﺎﺕ
ﺗ ﺎ
: زﻣﺎﻧﻲ ﺗﻮاﺑﻊ زﻳﺮ را ﺑﺪﺳﺖ آآورﻳﺪm
ﭘﻴﭽﻴﺪﮔﻲ
ﮔ
o
c
*
b
e
u
1 . f 1 ( n ) n 2 n 2 100
n
3 . f 3 ( n ) 2 5 log n !*
p
n
4 . f 4 ( n ) log n n w
1
w
5 . f 5 ( n ) n logw
n n
(log n )!
2 . f 2 ( n ) n 3 n log n n 2
n
2
n
n
log n
:آورﻳﺪ
ﻳﺮ را ﺑﺑﺪﺳﺖ ﻳ
ﺑﻊ زﻳﺮ
ﻲ ﺗﺎﺑﻊ
ﭘﻴﭽﻴﺪﮔﻲ زﻣﺎﻧﻲ
ﭘﻴﭽﻴ ﻲ
Function test( n : integer ) : integer ;
var
i,x:
, integer;
g ;
Begin
x:=0;
for i:=1 to n do
x:=x+1;
for i:=1 to n do
for j:=1 to n do
x:=x+1;
:
;
test:=x;
End.
c
*
b
e
u
m
o
w
w
w
n
*p
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )