lecture 11.pdf

‫ﻣﺪرس ‪ :‬ﻧﻮري‬
‫آﺑﺎن ‪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‬‬
‫ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل – داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ‬
‫ﻣﺪرس‪: ‬ﻧﻮري‬