โปรแกรมภาษาปาสคาล

Download Report

Transcript โปรแกรมภาษาปาสคาล

โปรแกรมภาษาปาสคาล
การเขียนโปรแกรม คือ การรวบรวมเรี ยบเรี ยงคาสัง่ เพื่อให้ เครื่ องปฏิบตั ิงาน
ตามเงื่อนไขและขันตอนก่
้
อนหลังอย่างเป็ นระบบและมีระเบียบ
ภาษาปาสคาล
เป็ นโปรแกรมภาษาชันสู
้ ง(High Level Language) จึงใช้ โปรแกรม
ตัวแปลภาษา คือ คอมไพเลอร์ (Compiler)
โดย อาจารย์ กฤติเมธ โอพั่ง
คาในภาษาปาสคาล
 เกี่ยวกับข้ อมูล
แบบของข้ อมูล ตัวปร และค่าคงที่
 เกี่ยวกับคาสัง่
◦ คาสงวน (Reserved Words)
◦ คามาตรฐาน (Standard Words)
◦ คาใหม่ (User Defined Words)
คาอธิบาย (Comment) ได้ ในเครื่ องหมาย { }
 ค่าคงตัว (Constants) ค่าที่กาหนดใช้ ในโปรแกรมโดยไม่มี
การเปลี่ยนแปลง เช่น ‘a’ ‘Hello Wold’ 2575
 ตัวแปรกับแบบของข้ อมูล (Variables and Data Type)
กาหนดดังนี ้

Var num
ch
name

:
:
Integer;
:
Char;
String[30];
การให้ คา่ แก่ตวั แปร (Assisment Expression)
◦ อ่านจากอุปกรณ์ภายนอก
◦ การให้ คา่ คงตัวแก่ตวั แปร
อินพตและเอาต์พตุ (Input and Output) คาที่ติดต่อกับอุปกรณ์
ภายนอก เช่น คีย์บอร์ ดและจอภาพ คือ READ และ WRITE
 พารามิเตอร์ (Parameter) ค่าที่ผ่านไปให้ โปรแกรมย่อยคือค่าที่อยูใ่ น
วงเล็บ
 คณิตศาสตร์ บลู ีน (Boolean Algebra) การดาเนินกรรมวิธีทางตกรร
ว่าด้ วยความเป็ นจริ ง และเท็จ ตัวดาเนินการได้ แก่ AND, OR และ
XOR

◦ ให้ ความเป็ นจริ งเมื่อเงื่อนไขเป็ นจริ งทังหมด
้
(AND)
◦ ให้ ความเป็ นจริ งเมื่อเงื่อนไขอันใดอันหนึง่ เป็ นจริ งหรื อเป็ นจริ งทังสองอย่
้
าง(OR)
◦ ให้ ความเป็ นจริ งเมื่อเงื่อนไขอันใดอันหนึง่ เป็ นจริ งเพียงหนึง่ เดียวเท่านัน(XOR)
้
ตัวดาเนินการ (Opertators)
+ - * / DIV และ MOD
 ตัวดาเนินการเปรี ยบเทียบ = <> < > <= >=
 ตัวดาเนินการบูลีน NOT AND OR XOR
 ตัวดาเนินการตรรก AND OR XOR NOT SHL
SHR
 ตัวดาเนินการทางคณิตศาสตร์
โครงสร้ างโปรแกรมภาษาปาสคาล
Program
Uses
Label
Const
Type
Var
ส่วนหัว (Heading Part) จะใส่หรื อไม่ก็ได้
<ชื่อโปรแกรม>;
< ชื่อไลบรารี่ >;
< ชื่อ >;
< ชื่อ = ค่าที่กาหนด >;
ส่วนประกาศ
< ชื่อ = ชนิดของข้ อมูล>;
<ชื่อ : ชนิดของข้ อมูล>;
(Declaration and Definition Part)
Procedure
Function
Begin
………….
…………….
End.
ส่วนถ้ อยแถลง,คาสัง่
(Statement Part)
สัปดาห์ที่ 2
แบบของข้ อมูล
Data Type
 แบบมีลาดับที่ (Scalar Types)
◦ อักขระ (Character)
◦ เลขจานวนเต็ม (Integer)
◦ เลขจานวนจริง (Real)
◦ บูลีน (Boolean)
◦ สตริงก์ (String)
Data Type
 แบบโครงสร้ าง (Structure Types)
◦ เซต (Set)
◦ อะเรย์ (Array)
◦ เรคอร์ ด (Record)
◦ ไฟล์ (File)
 แบบพอยน์เตอร์ (Pointer
types)
ตัวอย่ าง ข้ อมูลสร้ างเอง คือ วันอาทิตย์ - เสาร์
Program
Uses
Type
Var
Begin
Demo_Enunerated;
Crt;
Day_of_Week = (Sun,Mon,Tue,Wed,Thu,Fri,Sat);
Days
:
Day_of_Week;
Clrscr;
For Days := Sun to Sat do
Begin
Case days of
Sun : Writeln(‘Sunday : Holiday’);
Mon : Writeln(‘Monday : Start Job’);
Tue : Writeln(‘Tuesday : Meeting’);
Wed : Writeln(‘Wednesday : Planning’);
Thu : Writeln(‘Thursday : Meeting’);
Fri : Writeln(‘Friday : Report’);
Sat : Writeln(‘Saturday : Holiday’);
End;
End;
Readln;
End.
ตัวอย่ าง ใส่ข้อมูลประเภทตัวอักขระ ถ้ าเป็ นตัวอักษรให้ แสดง ‘Alphabet’
ถ้ าเป็ นตัวเลขให้ แสดง ‘Numeric’ นอกนันให้
้ แสดง ‘Other’
Program set_type;
var
c
:
begin
readln©;
while c <>’/’ do
begin
char;
if c in [‘A’..’Z’,’a’..’z’] then
writeln(‘Alphabet’)
else if c in [‘0’..’9’] then
writeln(‘Numeric’)
else
writeln(‘Other’);
readln©;
end.
end;
ข้ อมูลแบบบูลลีน
ตัวอย่าง การแสดงผลตารางของ x and y, x or y และ x xor y
Program bool;
var x,y : boolean;
begin
writeln(‘x ‘:8,’y ‘:8,’and ‘:8,’or ‘:8,’xor ‘:8);
writeln(‘--------------------------------------------------------’);
for x := false to true do
for y:=false to true do
writeln(x:8 , x and y:8,x or y:8 , x xor y:8)
end.
สัปดาห์ที่ 3
ARRAY
ข้ อมูลแบบอะเรย์ (Array)

ARRAY 1 มิติ
◦ รูปแบบ Var x : Array [a..b] of data type หรื อ Tupe x
= Array [a..b] of data type;Var y ; x;
เมื่อ x คือ ชื่อตัวแปรที่เก็บข้ อมูลแบบ Array
a
คือ
ค่า index แรก
b
คือ
ค่า index สุดท้ าย
data type คือ
ชนิดของข้ อมูล
ตัวแปร Array x มีจานวนสมาชิก = b-a+1
ตัวอย่ าง พิมพ์คา่ ข้ อมูลที่ตวั แปร Array ชื่อ Income เก็บค่าไว้ (หาผลรวมรายได้ ใน 1 ปี )
Program Demo_Array_1;
Uses Crt;
Var
Income
Sum
I
Ave
Begin
Clrscr;
Sum
For I
:
:
:
:
Array [1..2] of Longint;
Longint;
Integer;
Real;
:=
0;
:= 1 to 12 do
Begin
Write(‘Month’,I,’=‘);
Readln(Income[I]);
Sum := Sum+Income[I];
End;
Writeln;
Writeln(‘Income[2] = ‘,Income[2]);
Writeln(‘Income[5] = ‘,Income[5]);
Writeln;
Ave := Sum/12;
Writeln(‘Total Income =‘,Sun);
Writeln(‘Average Income =‘,Ave:10:3);
Readln;
End.

ARRAY 2 มิติ รูปแบบ Var x : Array [a..b,c..d] of
data type
ตัวแปร Array x มีจานวนสมาชิก = (b-a+1)(d-c+1)
ตัวอย่ าง นับจานวนนักเรี ยนใน 3 ระดับชันๆ
้ ละ 4 ห้ อง
Program Demo_Array_2:
Uses Crt;
Var Sum_Student : Integer;
Student
: Array[1..3,1..4] of integer;
I,j
: integer;
Begin
sum_Student := 0;
Clrscr;
For I := 1 to 3 do
Begin
For j := 1 to 4 do
Begin
Write(‘student{Grade’,I,’,Room’,j,’]=‘);
Readln(Student[I,j]);
Sum_Student := Sum_Student +
Student[I,j];
End;
End;
writeln;
Writeln(‘Total Student=‘,Sum_student);
Readln;
End.
ARRAY 3 มิติ รูปแบบ Var x : Array[a..b,c..d,e..f]
of data type
ตัวแปร Array x มีจานวนสมาชิก = (a-b+1)(d-c+1)(f-e+1)
ตัวอย่ าง อ่านข้ อมูลตัวเลข แล้ วแสดงค่าเป็ นตัวเลขนัน้ + 1
Program Demo_Array_3;
Uses
Crt;
Var Cube
: Array[1..2,1..2,1..2] of Integer;
I,j,k : Integer;
Begin
Clrscr;
For I := 1 to 2 do
Begin
For j := 1 to 2 do
Begin
For k := 1 to 2 do
Begin
Write(‘Cube[‘,I,’,’j,’,k,’] = ‘);
Readln(Cube[I,j,k]);
Cube[I,j,k] := Cube[I,j,k] + 1;
End;
End;
End;
Writeln;
For I := 1 to 2 do
Begin
For j := 1 to 2 do
Begin
For k := 1 to 2 do
Begin
Writeln(‘Cube[‘,I,’,’j,’,’,k,’]=‘,Cube[I,j,k].;
End;
End;
Readln;
End.
สัปดาห์ที่ 4
Pointer Type
ข้ อมูลแบบพอยน์เตอร์ ไม่ใช่ข้อมูลแท้ ๆ
แต่เป็ นดัชนีสาหรับชี ้ข้ อมูลแบบต่างๆ
ทาให้ สามารถสร้ างข้ อมูลแบบสลบซับซ้ อนได้
การกาหนดตัวแปรแบบพอยน์ เตอร์
เป็ นการกาหนดพื ้นที่ในหน่วยความจา 4 ไบต์เพื่อเก็บค่า
แอดเดรสของตัวแปรตัวอื่นหรื อหน่วยความจา
หากจะใช้ ตวั แปรพอยน์เตอร์ ชี ้ข้ อมูลแบบใดจะต้ องกาหนด
แบบของข้ อมูลนันก
้ ากับตัวแปรพอยน์เตอร์ ด้วยคือ
Type แบบข้ อมูล = ^แบบข้ อมูล
เช่น Type
Str 30 = String[30];
Var
iptr,xptr : ^integer;
aptr : ^Real;
sptr : ^Str30;
การใช้ งานพอยน์เตอร์ สว่ นมากจะใช้ กบั ข้ อมูลแบบเป็ นโครงสร้ าง
จึงมักจะต้ องกาหนดช่อแบบข้ อมูลนันๆ
้ ขึ ้นก่อน และต้ องกาหนดชื่อ
แบบข้ อมูลพอยนเตอร์ ขึ ้นก่อน
จึงมีวิธีกาหนดได้ 2 ลักษณะ คือ
 ลักษณะแรกกาหนดแบบข้ อมูล ชนิดข้ อมูลกาหนดเองก่อนนาไป
กาหนดให้ เป็ นแบบข้ อมูลพอยน์เตอร์ จากนันก
้ าหนดให้ เป็ นตัวแปรตาม
วิธีการกาหนดแบบข้ อมูลและตัวแปร <กาหนด ใน Type ก่อน และ
กาหนดใน Var ต่อไป>
 ลักษณะที่สองกำหนดตัวแปรพอยน์เตอร์ Var tem : Pointer;
ซึง่ จะเก็บค่าในตัวแปรพอยน์เตอร์ ด้วยกันเอง
การอ้ างถึงข้ อมูลด้ วยพอยน์ เตอร์
การอ้ างถึงตัวแปรพอยน์เตอร์ (ชื่อตัวแปร)
 การอ้ างถึงข้ อมูลที่พอยน์เตอร์ นนชี
ั ้ ้อยู่ (ชื่อตัวแปร ^)
เช่น Var
aptr,bptr:
^Integer;

num
:
Begin
aptr := Addr(num);
aptr^ := 456
Write(num);
New(aptr; aptr^ := 789
aptr := nil;
End.
Integer;
สัปดาห์ที่ 5
คาสั่งพืน้ ฐาน
การกาหนดค่าตัวแปร ตัวแปร := ค่าคงที่;
 การควบคุมการทางาน

◦ Single Statement
◦ Compound Statement
If,For,Case,While,Repeat
การแสดงข้ อมูล Write , Writeln
 การอ่านข้ อมูล Read , Readln
 การพิมพ์แบบกะระยะ

◦ Write (ข้ อมูล : ความกว้ าง); และ
◦ Write(ข้ อมูล : ความกว้ าง : จานวนตาแหน่งทศนิยม);
ตัวอย่ าง การพิมพ์แบบกะระยะ
Program Distant;
Uses Crt;
Begin
Clrscr;
Writeln(‘Siam Computer’:30);
Writeln(‘………’);
Writeln(‘Language’:10);
Writeln(12.5:10:2);
Readln; End.
นิพจน์
Operation
Example
บวก
ลบ
คูณ
หาร
หารเลขจานวนเต็ม
หารเอาเศษที่เหลือ
Operator
+
*
/
DIV
MOD
3+5
money-tax
5+price
5/2
5 DIV 2
5 MOD 2
ลาดับการ Operate คือ จากซ้ ายไปขวา และเรี ยง ( ) , */ DIV MOD
และ+- ตามลาดับ
สัปดาห์ที่ 6
Data Type

Standard Type ตัวเลข อักขระ ข้ อความ จริง-เท็จ
◦ ตัวเลขจานวนเต็ม Byte Shorting Word Integer
Longint
◦ ตัวเล่ขจำนวนจริ ง Single Real Comp Double
Extended
◦ ตัวอักขระ Char
◦ ข้ อความ String
◦ บูลีน Boolean
User-Defined Type
 Structure Set Array Record File
 Pointer

ตัวอย่ าง
Program IntegerTest;
Uses Crt;
Var A,B,C : Integer;
Begin
Clrscr;
a := 10;B := 20;c :=
30;
Writeln(A+B+C);
Writeln(A-B-C);
Writeln(A*B*C);
Writeln(A/B/C);
Readln;
End.
Program Area_of_Triangle;
Uses Crt;
Var
B,H,A :
Real;
Begin
Clrscr;
Writeln(‘Area Of Triangle’);
Writeln(‘===============‘);
Write(‘Base =‘);Readln(B);
Write(‘Height =‘);Readln(H);
A := 0.5*B*H;
Writeln(‘Area =‘,A:6:2);
Writeln(‘===============‘);
End.
ตัวอย่ าง
Program ManyType;
Uses Crt;
Var Weight : Integer;
Age
: Byte;
Salary : Real;
Married: Boolean;
Sex
: Char;
Name :
String[20];
Begin
Clrscr;
Name := ‘Monchai’;
Age := 42;
Sex := ‘M’;
Married := true;
Weight := 67;
Salary := 12931.75;
Writeln(‘Name :’,Name);
Writeln(‘Age :’,Age);
Writeln(‘Sex :’,Sex);
Writeln(‘Married : ‘,Married);
Writeln(‘Weight : ‘,Weight);
Writeln(‘Salary : ‘,Salary:6:2);
Readln;
End.
สัปดาห์ที่ 7
การทางานแบบมีเงื่อนไข

คาสั่ง If / Then / Else
◦ รูปแบบ
If <Codition> Then
Statement 1 <Ture>
Else
statement 2; <Fale>
- รูปแบบซ้ อนIf <Codition> Then
Statement 1 <Ture>
Else If <Codition> Then
Statement 2 <Ture>
Else
statement 3; <Fale>
ตัวอย่ าง ให้ เขียนโปรแกรมรั บข้ อมูลง
Program PrintFradeMessage;Uses Crt;Var
Grade :Char;BeginClrscr;Write(‘Enter Your
Grade
:’);Readln(Grade);Grade:=Upcase(Grade);If
Grade=‘A’ Then Writeln(‘Exellent’) Else If
Grade=“B’ Then Writeln(‘Getting There’)
Else If Grade = ‘C’ Then Writeln(‘Not Too
Bad’) Else If Grade=‘D’ Then Writeln(‘Just
Made It’0 Else If Grade=‘F’ Then
Writeln(‘Summer School’) Else
Writeln(‘That Is Not Grade’)’ Writeln;
Write(‘Press Enter TO Return to
Pascal..’);Readln;End.
คาสั่ง Case
รูปแบบ Case <var> Of
<constant> : statement;
หรื อ<constant1>[<constant2>] :
statement;
หรื อ<constant1>..<constant2> :
statement;
Else
Statement
End;

ตัวอย่ าง
Program Grade3;
Uses Crt;
Var Score : Integer;
Begin
Clrscr;
Write(‘Enter Your Score
:’);Readln(Score);
Case Score of
0..50 :
Writeln(‘Grade=F’);
51..60 :
Writeln(‘Grade=D’);
61..70 :
Writeln(‘Grade=C’);
71..80 : Writeln(‘Grade=B’);
81..90 : Writeln(‘Grade=A’);
Else
Writeln(‘Error’);
End;
Readln;
End.
สัปดาห์ ท่ ี 8
การทางานซา้ แบบวนรอบ
Repeat … Until
Repeat
Statment1;
Statment2;
Statement N;
Else <condition>;
หมายเหตุ จะทางานตามคาสัง่ ไปจนกระทัง่ เงื่อนไขเป็ นจริ งเลิก
ทางาน
While … Do
While <condition> Do
Begin
Statement1;
Statemetn2;
Statement N;
End;
หมายเหตุ จะเริ่มตรวจสอบ Condition ก่อน ถ้ าเงื่อนไขเป็ นจริง
ทางานตามคาสัง่ ถ้ าเป็ นเท็จจบการทางาน
For … Do
For <counter> := a To/Downto b Do
Begin
statement 1;
statement 2;
statement N;
End;
หมายเหตุ จะควบคุมการทางานของคาสัง่ ให้ ครบตาม counter
ที่กาหนด a To/Downto b
ตัวอย่ าง ต้ องการเขียนโปรแกรมเพื่อหาค่า Factorial (1!-20!) ให้ แสดงผล
ดังนี ้
Program Fac_1;
Uses Crt;
Var
K : Integer;
Fact : Real;
Begin
Clrscr;
Fact := 1;
K := 1;
Repeat
Fact := Fact*K;
Writeln(K:3,’!’,’=‘,Fact:20:0);
K := K+1;
Until K=21;
Readln;
End.
ตัวอย่ าง ต้ องการเขียนโปรแกรมเพื่อหาค่า Factorial (1!-20!) ให้ แสดงผล
ดังนี ้
Program Fac_2;
Uses Crt;
Var
K : Integer;
Fact : Real;
Begin
Clrscr;
Fact := 1;
K := 1;
While K<> 21 do Begin
Fact := Fact*K;
Writeln(K:3,’!’,’=‘,Fact:20:0);
K := K+1;
End;
Readln;
End.
ตัวอย่ าง พิมพ์อกั ษร A-Z , Z-A
Program ForUppcaseLetter;
Uses Crt;
Var Ch : Char;
Begin
Clrscr;
For Ch := ‘A’ to ‘Z’ do
Write(CH,’ ‘);Writeln;
For Ch := ‘Z’ Downto ‘A’ do
Write(CH,’ ‘);Readln;
End.
สัปดาห์ ท่ ี 9
Function Procedure
And Unit
ฟั งก์ ชัน

Standard Function
◦ Pred(String) : ใช้ แสดงอักขระที่อยูก่ ่อนตัวที่กาหนด
◦ Succ(String) : ใช้ แสดงอักขระที่อยูห่ ลังตัวที่กาหนด
◦ SizeOf(data type) : แสดงเนื ้อที่ที่ใช้ ในหน่วยความจาของข้ อมูล
◦ Abs(x) : หาค่าสัมบูรณ์ของ x
◦ Int(x) : ใช้ หาค่าเลขจานวนเต็มของ x
◦ Sqr(x) : ใช้ หาค่าเลขยอกกาลังสองของ x
◦ Sqrt(x) : ใช้ หาค่ารากที่ 2 ของ x
◦ Round(x) : ใช้ หาค่าเลขที่มีการปั ดทศนิยม
◦ Chr(x) : ใช้แสดงค่ำตัวอักขระที่สอดคล้องกับรหัสตัวเลข
◦ Sin(x),Cos(x) : ใช้หำค่ำฟังก์ชนั ตรี โกณมิติ
◦ Upcase(chr) : ใช้เปลี่ยนตัวอักษรพิมพ์เล็ก เป็ นพิมพ์ใหญ่
◦ Readkey : ใช้รับอักษร 1 ตัวจำกแป้ นพิมพ์
◦ Inc(x) : ใช้พิมพ์คำ่ ของ x ครัง้ ละ 1 นิยมใช้ กบั การวนรอบ
โพรซีเยอร์

Standard Procedure
◦ โปรแกรมย่อยหรื อชุดคาสัง่ ย่อยที่เกี่ยวข้ องกับการรับ-ส่งข้ อมูลหรื อไม่ก็ได้ จะอยู่ใน
Library ที่เรี ยกว่า Unit คือ Crt, Dos, Graph, Graph3,
Overlay, Printer, System และ Turbo3

โพรซีเยอร์ มาตรฐานที่น่าสนใจ
◦
◦
◦
◦
◦
Write, Writeln อยู่ใน ยูนิต ชื่อ System
Read, Readln อยู่ใน ยูนิต ชื่อ System
Clrscr อยู่ใน ยูนิต ชื่อ Crt
Gotoxy(col,row) อยู่ใน ยูนิต ชื่อ Crt ใช้ กาหนดตกแหน่งของ เคอเซอร์
Delay(ms) อยู่ใน Unit ชื่อ Crt ใช้ สาหรับหยุดโปรแกรมประมาณ 1/
1000 วินาที
◦ HighVideo อยู่ใน Unit ชื่อ Crt ใช้ ทาให้ อกั ษรมีความเข็มกว่าปกติ
◦ LowVideo อยู่ใน Unit ชื่อ Crt ใช้ ทาให้ อกั ษรมีความเข็มน้ อยกว่าปกติ
◦ NormVideo อยู่ใน Unit ชื่อ Crt ใช้ ทาให้ อกั ษรมีความเข็มปกติ