ﻣﺪرس :ﻧﻮري
آﺑﺎن 88
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﻴﻤﺎﻧﻪاي )(Modular
yﻣﻲﺧﻮاﻫﻴﻢ ﺑﺮﻧﺎﻣﻪاي ﺑﺮاي رﺳﻢ ﺷﻜﻞ زﻳﺮ ﺑﻨﻮﻳﺴﻴﻢ.
2
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﺗﺠﺰﻳﻪ ﺷﻜﻞ
yﺑﻬﺘﺮ اﺳﺖ ﺷﻜﻞ را ﺑﻪ ﺑﺨﺶﻫﺎي ﻛﻮﭼﻚﺗﺮ ﺗﻘﺴﻴﻢ ﻛﻨﻴﻢ و ﺷﻜﻞ ﻛﻠﻲ را از
اﺗﺼﺎل ﺑﺨﺶﻫﺎي ﻛﻮﭼﻚﺗﺮ رﺳﻢ ﻛﻨﻴﻢ.
3
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ
yﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﺑﻪ ﺻﻮرت زﻳﺮ ﺧﻮاﻫﺪ ﺑﻮد.
begin
;DrawTriangle
;DrawParallelLines
;DrawBaseLine
end.
4
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
رﺳﻢ ﻣﺜﻠﺚ
yﻣﻲﺗﻮان رﺳﻢ ﻣﺜﻠﺚ را ﻧﻴﺰ ﺑﻪ اﺟﺰاي ﻛﻮﭼﻜﺘﺮ ﺗﻘﺴﻴﻢ ﻛﺮد.
begin
;DrawIntersectingLines
;DrawBaseLine
end.
5
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﻧﻮﺷﺘﻦ اﺟﺰاي ﺑﺮﻧﺎﻣﻪ
yﺑﺨﺶ رﺳﻢ ﺧﻂ اﻓﻘﻲ
;)’WriteLn(‘--------
yﺑﺨﺶ رﺳﻢ دو ﺧﻂ ﻋﻤﻮدي
;)’|
;)’|
;)’|
;)’|
6
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
|‘(WriteLn
|‘(WriteLn
|‘(WriteLn
|‘(WriteLn
ﻣﺪرس: ﻧﻮري
ﻧﻮﺷﺘﻦ اﺟﺰاي ﺑﺮﻧﺎﻣﻪ
yﺑﺨﺶ رﺳﻢ دو ﺧﻂ ﻣﺘﻘﺎﻃﻊ
‘(WriteLn
\/
;)’
;)’ \ WriteLn(‘ /
WriteLn(‘ /
;)’ \
WriteLn(‘/
;)’\
7
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﺑﺮﻧﺎﻣﻪ ﻛﻠﻲ
Program Drawing;
procedure DrawBaseLine;
{Draws a horizontal line}
begin
WriteLn(‘--------’);
end;
{DrawBaseline}
procedure DrawParallelLines;
{Draws two vertical lines}
begin
WriteLn(‘|
|’);
WriteLn(‘|
|’);
WriteLn(‘|
|’);
WriteLn(‘|
|’);
end;
{DrawParallelLines}
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
8
(ﺑﺮﻧﺎﻣﻪ ﻛﻠﻲ )اداﻣﻪ
procedure DrawIntersectingLines;
begin
WriteLn(‘
/\
’);
WriteLn(‘ / \ ’);
WriteLn(‘ /
\ ’);
WriteLn(‘/
\’)
end;
{DrawIntersectingLines}
procedure DrawTriangle;
begin
DrawIntersectingLines;
DrawBaseLine
end;
{DrawParallelLines}
begin
DrawTriangle;
DrawParallelLines;
DrawBaseLine;
end.
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
9
ﺗﻮﺳﻌﻪ ﺑﺮﻧﺎﻣﻪ
yﻣﻲﺧﻮاﻫﻴﻢ اﻧﺪازه ﺷﻜﻞ را ﺗﻐﻴﻴﺮ دﻫﻴﻢ.
10
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
رﺳﻢ ﺧﻂ اﻓﻘﻲ
procedure DrawBaseLine(Size : Integer);
{Draws a horizontal line}
var
i : Integer;
begin
for i := 1 to size do
Write(‘-’);
WriteLn
end;
{DrawBaseline}
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
11
رﺳﻢ ﺧﻄﻮط ﻋﻤﻮدي
procedure DrawParallelLines(Size : Integer);
{Draws two vertical lines}
var
i, j : Integer;
begin
for i := 1 to size do
begin
Write(‘|’);
for j := 2 to size-1 do
Write(‘ ‘);
WriteLn(‘|’)
end
end;
{DrawBaseline}
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
12
رﺳﻢ ﺧﻄﻮط ﻣﺘﻘﺎﻃﻊ
procedure DrawIntersectingLines(Size : Integer);
var
i, j : Integer;
begin
for i := 1 to size div 2 do
begin
for j := 1 to size div 2 – i do
Write(‘ ‘);
Write(‘/’);
for j := size div 2 – i + 2 to size div 2 + i - 1 do
Write(‘ ‘);
WriteLn(‘\’)
end
end;
{DrawIntersectingLines(Size }
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
13
رﺳﻢ ﻣﺜﻠﺚ و ﺷﻜﻞ ﻛﻠﻲ
Procedure DrawTriangle(Size : Integer);
begin
DrawIntersectingLines(Size);
DrawBaseLine(Size)
end;
Procedure DrawHouse(Size : Integer);
begin
DrawTriangle(Size);
DrawParallelLines(Size);
DrawBaseLine(Size)
end;
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
14
ﺑﺪﻧﻪ اﺻﻠﻲ ﺑﺮﻧﺎﻣﻪ
var
i : Integer;
begin
DrawHouse(10);
DrawHouse(20);
DrawHouse(50);
for i := 10 to 20 do
DrawHouse(i);
end.
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
15
ﺗﻌﺮﻳﻒ زﻳﺮﺑﺮﻧﺎﻣﻪSyntax
procedure ProcedureName(Parameter1 : Type1;
Parameter2 : Type2;
Parameter3, Parameter4 : Type3);
const
constant definitions;
type
type definitions;
var
variable definitions;
begin
body of procedure
end;
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
16
ﺑﺮﻧﺎﻣﻪاي ﺑﺎ دو زﻳﺮﺑﺮﻧﺎﻣﻪ
procedure ProcA;
begin
WriteLn(‘A’)
end;
procedure ProcB;
begin
WriteLn(‘B’)
end;
begin
ProcB;
ProcA;
ProcB
end.
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
17
ﻓﺮاﺧﻮاﻧﻲ زﻳﺮﺑﺮﻧﺎﻣﻪ
yدر ﻣﺜﺎل ﻗﺒﻠﻲ ،ﻓﺮاﺧﻮاﻧﻲ زﻳﺮﺑﺮﻧﺎﻣﻪ ﺑﺎ ذﻛﺮ ﻛﺮدن ﻧﺎم آن اﻧﺠﺎم ﻣﻲﺷﺪ.
…
begin
;ProcB
;ProcA
ProcB
end.
18
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﻓﺮاﺧﻮاﻧﻲ زﻳﺮﺑﺮﻧﺎﻣﻪ
procedure SayHello;
var
Name: String;
begin {SayHello}
Write('Enter your name:');
ReadLn(Name);
WriteLn('Hello ', Name);
end; {SayHello}
....
begin
...
SayHello;
...
ﻧﻮري: ﻣﺪرس
Main Program
...
SayHello
...
Procedure SayHello
Name
ask for Name
Ali
SayHello to Name
return to Main Program
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
19
اﺿﺎﻓﻪ ﻛﺮدن ﭘﺎراﻣﺘﺮ
procedure
SayHelloTo(Name:String);
begin
WriteLn('Hello', Name);
end;
....
begin
...
Write('Enter student name:');
ReadLn(StdName);
SayHelloTo(StdName);
...
ﻧﻮري: ﻣﺪرس
Main Program
StudentName
...
ask for Name
SayHello
...
Ali
Ali
Procedure SayHelloTo
Name
SayHello to Name
return to Main Program
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
Ali
20
ﭘﺎراﻣﺘﺮﻫﺎ
yﭘﺎراﻣﺘﺮﻫﺎي اﺻﻠﻲ ) :(Actualﭘﺎراﻣﺘﺮﻫﺎﻳﻲ ﻛﻪ واﻗﻌﺎً ﻫﻨﮕﺎم ﻓﺮاﺧﻮاﻧﻲ
زﻳﺮﺑﺮﻧﺎﻣﻪ ،ﺑﻪ آن ارﺳﺎل ﻣﻲﺷﻮد.
yدر ﻣﺜﺎل ﻗﺒﻞ StdNameﻳﻚ ﭘﺎراﻣﺘﺮ اﺻﻠﻲ اﺳﺖ.
yﭘﺎراﻣﺘﺮﻫﺎي ﻗﺮاردادي ) :(Formalﭘﺎراﻣﺘﺮﻫﺎﻳﻲ ﻛﻪ ﺑﻪ ﻫﻨﮕﺎم ﺗﻌﺮﻳﻒ
زﻳﺮﺑﺮﻧﺎﻣﻪ اﺳﺘﻔﺎده ﻣﻲﺷﻮﻧﺪ و ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﭘﺎراﻣﺘﺮﻫﺎي اﺻﻠﻲ ﻫﺴﺘﻨﺪ .ﻧﻮع
ﭘﺎراﻣﺘﺮﻫﺎي ﻗﺮاردادي ﺑﺎﻳﺪ ﺗﻌﻴﻴﻦ ﺷﻮد.
yدر ﻣﺜﺎل ﻗﺒﻞ Nameﭘﺎراﻣﺘﺮ ﻗﺮاردادي اﺳﺖ.
21
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﺗﻨﺎﻇﺮ ﺑﻴﻦ ﭘﺎراﻣﺘﺮﻫﺎ
procedure SayHelloTo(Name, SurName: String; Age: Integer);
begin
WriteLn('Hello ', Name, ' ', SurName);
WriteLn('You are ', Age:2, ‘ years old')
end;
....
begin
...
Write('Enter student name: ');
ReadLn(StdName);
Write('Enter student surname: ');
ReadLn(StdSurName);
Write('Enter student age: ');
ReadLn(StdAge);
SayHelloTo(StdName, StdSurName, StdAge);
...
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
22
ﺗﻨﺎﻇﺮ ﺑﻴﻦ ﭘﺎراﻣﺘﺮﻫﺎ
procedure ComputeSalary(Rate, Hours:Real);
var
Salary: Real;
begin
Salary := Rate * Hours;
WriteLn('Your salary is $',Salary:4:2)
end;
....
begin
...
Write('Enter employee hourly rate: ');
ReadLn(EmpRate);
Write('Enter hours worked: ');
ReadLn(EmpHours);
ComputeSalary(EmpRate, EmpHours);
...
Main Program
EmpRate
25
EmpHours
40
ComputeSalary
Rate
25
Hours
40
Salary
1000
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
23
( و ﺳﺮاﺳﺮيlocal) ﻣﺘﻐﻴﺮﻫﺎي ﻣﺤﻠﻲ
(global)
var
k : Integer;
procedure ProcA;
begin
WriteLn(‘A’);
WriteLn(‘K is ‘, k);
k := 20;
WriteLn(‘K is ‘, k)
end;
procedure ProcB;
var
k : Integer;
begin
WriteLn(‘B’);
WriteLn(‘K is ‘, k);
k := 40;
WriteLn(‘now K is ‘, k)
end;
begin
k := 5;
ProcA;
ProcB
end.
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
24
ﺗﻐﻴﻴﺮ ﻣﺘﻐﻴﺮ ﺳﺮاﺳﺮي
var
k : Integer;
procedure ProcA;
begin
WriteLn(‘A’);
WriteLn(‘K is ‘, k);
k := 4
end;
begin
k := 5;
ProcA;
WriteLn(‘k is ‘, k)
end.
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
25
ﺗﻐﻴﻴﺮ ﭘﺎراﻣﺘﺮﻫﺎ
var
k : Integer;
procedure ProcA(k : integer);
begin
WriteLn(‘A’);
WriteLn(‘K is ‘, k);
k := 4
end;
begin
k := 5;
ProcA(k);
WriteLn(‘k is ‘, k)
end.
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
26
ﺗﻐﻴﻴﺮ ﭘﺎراﻣﺘﺮﻫﺎ
yاﮔﺮ در ﺑﺮﻧﺎﻣﻪ ﻗﺒﻠﻲ ﭘﺎراﻣﺘﺮ kاز ﻧﻮع Realﺑﺎﺷﺪ ،ﭼﻪ اﺗﻔﺎﻗﻲ ﻣﻲاﻓﺘﺪ.
yدر ﺧﺮوﺟﻲ ﭼﻪ اﺗﻔﺎﻗﻲ ﻣﻲاﻓﺘﺪ.
27
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﭘﺎراﻣﺘﺮﻫﺎي ﻏﻴﺮﻫﻢﻧﺎم
var
k, j : Integer;
procedure ProcA(may, kay : integer);
begin
WriteLn(‘A’);
WriteLn(‘kay is ‘, kay, ‘ may is ‘, may);
kay := 4
end;
begin
k := 5;
j := 3;
ProcA(k, j);
WriteLn(‘k is ‘, k)
end.
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
28
var
Salary : Real;
i, Number : Integer;
ﺑﺮﻧﺎﻣﻪ ﭼﺎپ ﺣﻘﻮق
procedure Plot(celery : Real);
var
k, m : Integer;
begin
k := Round(celery / 1000);
Write(‘$’, celery:1:0, ‘:’);
for m := 1 to k do
Write(‘$’);
WriteLn
begin
end;
WriteLn(‘What is the number of people to be processed?’);
.
ReadLn(number);
.
WriteLn(‘Please type your ‘, number , ‘ salaries’);
.
for i := 1 to number do
begin
ReadLn(Salary);
Plot(Salary)
end
end.
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
29
var
Salary : Real;
i, Number : Integer;
Symbol : Char;
ﺗﻜﻤﻴﻞ ﺑﺮﻧﺎﻣﻪ
$ رﺳﻢ ﻛﺎراﻛﺘﺮ دﻟﺨﻮاه ﺑﻪﺟﺎيy
procedure Plot(celery : Real, Symbol : Char);
var
k, m : Integer;
begin
k := Round(celery / 1000);
Write(Symbol, celery:1:0, ‘:’);
for m := 1 to k do
Write(Symbol);
begin
WriteLn
WriteLn(‘What symbol will be used for plotting?’);
end;
ReadLn(Symbol);
.
WriteLn(‘What is the number of people to be processed?’);
.
ReadLn(number);
.
WriteLn(‘Please type your ‘, number , ‘ salaries’);
for i := 1 to number do
begin
ReadLn(Salary);
Plot(Salary, Symbol)
end
end.
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
30
ﺑﺮﮔﺮداﻧﺪن ﻣﻘﺪار ﺧﺮوﺟﻲ
yزﻳﺮﺑﺮﻧﺎﻣﻪ ﺑﺮﺧﻼف ﺗﺎﺑﻊ ﻧﻤﻲﺗﻮاﻧﺪ
ﻣﻘﺪار ﺧﺮوﺟﻲ داﺷﺘﻪ ﺑﺎﺷﺪ.
yوﻟﻲ ﻣﻲﺗﻮان از ﭘﺎراﻣﺘﺮﻫﺎ ﺑﺮاي
ﺑﺮﮔﺮداﻧﺪن ﻣﻘﺪار ﻳﺎ ﻣﻘﺎدﻳﺮي اﺳﺘﻔﺎده
ﻛﺮد.
yدر ﻣﺜﺎل ﻗﺒﻞ اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﻣﻘﺪار
Salaryﺑﻪ ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﺑﺮﮔﺮداﻧﺪه
ﺷﻮد ،ﺑﺎﻳﺪ ﭼﻪ ﻛﺎري اﻧﺠﺎم دﻫﻴﻢ؟
31
40
40
Main Program
...
25
ask for Hours, Rate
ComputeSalary
add Salary to TotalSalary
...
25
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
Procedure ComputeSalary
40
25
1000
calculate the salary
display the salary
ﻣﺪرس: ﻧﻮري
اﻧﻮاع ﭘﺎراﻣﺘﺮﻫﺎي ﻳﻚ زﻳﺮﺑﺮﻧﺎﻣﻪ
yﭘﺎراﻣﺘﺮﻫﺎي ﻣﻘﺪاري ) :(Valueاﻳﻦ ﭘﺎراﻣﺘﺮﻫﺎ ﻓﻘﻂ ﻣﻘﺪار ارﺳﺎل ﺷﺪه ﺑﻪ
زﻳﺮﺑﺮﻧﺎﻣﻪ را ﺑﻪ آن ﺗﺤﻮﻳﻞ ﻣﻲدﻫﻨﺪ.
yﭘﺎراﻣﺘﺮﻫﺎي ﻣﺘﻐﻴﺮي ) :(Variableاﻳﻦ ﭘﺎراﻣﺘﺮﻫﺎ ﻋﻼوه ﺑﺮ ﺗﺤﻮﻳﻞ ﻣﻘﺪار
ارﺳﺎل ﺷﺪه ،ﻣﻘﺪار ﻧﻬﺎﻳﻲ را ﺑﻪ ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﺑﺮﻣﻲﮔﺮداﻧﻨﺪ.
32
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
ﺑﺮﮔﺮداﻧﺪن ﻣﻘﺪار ﺧﺮوﺟﻲ
procedure ComputeSalary(Rate, Hours:Real; var Salary:Real);
begin
Salary := Rate * Hours;
WriteLn('Your salary is $', Salary:4:2,')
end;
....
begin
...
Write('Enter employee hourly rate: ');
ReadLn(EmpRate);
Write('Enter hours worked: ');
ReadLn(EmpHours);
ComputeSalary(EmpRate, EmpHours, EmpSalary);
TotSal := TotSal + EmpSalary;
...
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
33
ﺑﺮﮔﺮداﻧﺪن ﻣﻘﺪار ﺧﺮوﺟﻲ
ﻣﻘﺎدﻳﺮ ﻣﻨﺘﻘﻞ ﻣﻲﺷﻮﻧﺪ،
و ﻓﻀﺎي ﺟﺪﻳﺪي در ﺣﺎﻓﻈﻪ
ﺑﺮاي ﭘﺎراﻣﺘﺮﻫﺎ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد.
ComputeSalary
Hours
40
Rate
25
Salary
EmpRate EmpHours
40
EmpSalary
1000
ﻣﻘﺎدﻳﺮ ﻣﻨﺘﻘﻞ ﻧﻤﻲﺷﻮد.
ﺣﺎﻓﻈﻪ ﺟﺪﻳﺪي اﻳﺠﺎد ﻧﻤﻲﺷﻮد.
Salaryﺑﻪ ﻣﺤﻞ EmpSalary
در ﺣﺎﻓﻈﻪ اﺷﺎره ﻣﻲﻛﻨﺪ.
34
Main Program
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
25
TotSal
3000
ﻣﺪرس: ﻧﻮري
program Sort3Numbers;
var
Num1, Num2, Num3 : Real;
ﻣﺮﺗﺐ ﻛﺮدن ﺳﻪ ﻋﺪد
{three variables being sorted}
procedure Order (var X, Y {input/output} : Real);
var
Temp : Real;
{copy of number originally in X}
begin {Order}
if X > Y then
begin {Switch the values of X and Y}
Temp := X;
{Store old X in Temp.}
X := Y;
{Store old Y in X.}
Y := Temp
{Store old X in Y.}
end {if}
end; {Order}
begin {Sort3Numbers}
WriteLn ('Enter 3 numbers to be sorted separated by spaces> ');
ReadLn (Num1, Num2, Num3);
{Sort
Order
Order
Order
the numbers}
(Num1, Num2);
(Num1, Num3);
(Num2, Num3);
{Order the data in Num1 and Num2.}
{Order the data in Num1 and Num3.}
{Order the data in Num2 and Num3.}
{Print the results.}
WriteLn ('The three numbers in order are:');
WriteLn (Num1 :8:2, Num2 :8:2, Num3 :8:2)
end. {Sort3Numbers}
ﻧﻮري: ﻣﺪرس
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
35
ﺗﻤﺮﻳﻦ
yزﻳﺮﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺟﻮابﻫﺎي ﻣﻌﺎدﻟﻪ درﺟﻪ دوي را ﻛﻪ ﺿﺮاﻳﺐ آن
را ﺗﻮﺳﻂ ﭘﺎراﻣﺘﺮﻫﺎﻳﺶ درﻳﺎﻓﺖ ﻣﻲﻛﻨﺪ ،ﭼﺎپ ﻧﻤﺎﻳﺪ.
yزﻳﺮﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﻘﺴﻮمﻋﻠﻴﻪﻫﺎي ﺗﻨﻬﺎ ﭘﺎراﻣﺘﺮش را ﭼﺎپ ﻛﻨﺪ.
36
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ
ﻣﺪرس: ﻧﻮري
© Copyright 2026 Paperzz