TURBO PASCAL OUTLINE 1. บทนำเกี่ยวกับการเขียนโปรแกรมภาษาปาสคาล 2. ประเภทข้อมูล (Data type) 3. ตัวดำเนินการ และ นิพจน์ (Operator and Expression) 4. การรับและแสดงผลข้อมูล (Input/Output command) 5. คำสั่งควบคุม (Control Statement)
บทที่ 1 TURBO PASCAL TURBO PASCAL ออกแบบโดย Dr. Niklaus Writh พ.ศ. 2514 ภาษาสำหรับฝึกเขียนโปรแกรมอย่างมีระบบ/ระเบียบ โปรแกรมแบบโครงสร้าง เขียนในรูปบล็อค มี BEGIN ..END
คำในภาษาปาสคาล 1. คำสงวน (reserved word หรือ key word) เป็นคำที่กำหนดขึ้นโดยภาษา มีหน้าที่ใดหน้าที่เฉพาะ เช่น PROGRAM, BEGIN,END IF 2. คำมาตรฐาน (standard identifiers) เป็นคำที่ถูกกำหนดหน้าที่มาแล้ว ผู้เขียนสามารถตั้งชื่อซ้ำได้ แต่ไม่นิยม คำมาตรฐานมี 5 ประเภท คือ
คำในภาษาปาสคาล Predefine type identifier เป็นชื่อแบบข้อมูลที่กำหนดไว้ เช่น integer ,word, boolean, byte, real, char Predefine constant identifier เป็นชื่อที่ใช้แทนค่า เช่น pi, true, false, maxint, nil Predefine procedure identifier เป็นชื่อโพรซีเดอร์ที่กำหนดไว้แล้ว เช่น clscr, readln, move ,reset, delete
คำในภาษาปาสคาล Predefine variable identifier เป็นชื่อที่ใช้แทนตัวแปร เช่น mem, port, input, output, randseed Predefine function identifier เป็นชื่อของฟังก์ชันที่ได้กำหนดไว้ เช่น upcase, random, sqrt, chr, ord, succ, readkey
คำในภาษาปาสคาล 3. คำที่ผู้ใช้ตั้งขึ้น (user-defined identifier) เป็นชื่อที่ผู้ใชตั้งเอง เช่น ชื่อโปรแกรม ชื่อตัวแปร ชื่อแบบข้อมูล ชื่อโพรซีเดอร์ ชื่อฟังก์ชัน
IDENTIFIER ไอเดนติไฟเออร์ เป็นคำหรือกลุ่มตัวอักษรที่ใช้ตั้งชื่อให้กับสิ่งต่างๆ คำสงวน คำมาตรฐาน เป็นไอเดนติไฟเออร์ที่ภาษาได้ระบุความหมายและหน้าที่ให้แล้ว user-defined เป็นไอเดนติไฟเออร์ที่ผู้ใช้กำหนดขึ้น โดยมีเกณฑ์ตั้งชื่อดังนี้
เกณฑ์ตั้งชื่อไอเดนติไฟเออร์ 1. ตัวแรกของชื่อต้องเป็นตัวอักษร 2. ตัวต่อไปสามารถเป็นตัวเลข ตัวอักษร หรือ ขีดล่าง 3. ห้ามมีอักษรพิเศษ ช่องว่าง 4. ชื่อจะใช้ตัวใหญ่หรือเล็กมีความหมายเหมือนกัน เช่น INDEX, Index, inDEX 5. ชื่อมีความยาวไม่จำกัด แต่ใช้ 63 ตัวแรก (Version 4.0) 6. ห้ามใช้คำสงวนตั้งชื่อ
เกณฑ์ตั้งชื่อไอเดนติไฟเออร์ Identifier ที่ถูกต้อง RESULT A500 NUM_OF_STUDENT MAXRATE CIRCLE Identifier ที่ผิด ROOM.07 1ABC BRGIN STOCK# PAC MAN
เครื่องหมายที่สำคัญในปาสคาล 1. (* *) หรือ { } ใช้เขียนคำอธิบาย ไม่มีผลต่อการปฏิบัติการ 2. ; ใช้คั่นประโยค แสดงว่ามีคำสั่งอื่นตามมา ถ้าเป็นประโยค สุดท้ายไม่ต้องใส่ ; 3. := เป็นคำสั่งนำค่าด้างขวามือมาเก็บไว้ด้านซ้ายมือ 4. . เป็นเครื่องหมายใช้เพียงแห่งเดียวคือสิ้นสุดโปรแกรม 5. ( ) [ ] , : และ เครื่องหมายคำนวณ + - * /
รูปแบบของภาษาปาสคาล โปรแกรมปาสคาลประกอบด้วย 3 ส่วนใหญ่คือ ส่วนหัว (Heading) ขึ้นต้นด้วย PROGRAM ส่วนประกาศข้อมูล (Declaration part)ใช้ประกาศตัวแปร ประเภทข้อมูล และค่าต่างๆ และส่วนโปรแกรมย่อย (Subprogram) ส่วนคำสั่ง (Statement part)เป็นส่วนของคำสั่งอยู่ระหว่าง BEGIN- END
Statement Part ส่วนคำสั่ง รูปแบบของภาษาปาสคาล HEADING ส่วนหัว PROGRAM program name (INPUT,OUTPUT) TYPE var = type; CONST var1 = value; VAR var2,var3 : variable type; PROCEDURE หรือ FUNCTION BEGIN STATEMENT (S) END. DECLARATION PART ส่วนประกาศข้อมูล Statement Part ส่วนคำสั่ง
HEADING รูปแบบ: PROGRAM program name (INPUT,OUTPUT,FILE) ตามด้วยชื่อที่ผู้ใช้ตั้งให้สื่อกับงานที่ทำอยู่ ตามด้วยวงเล็บเปิดและปิด ภายในวงเล็บบอกถึงอุปกรณ์ที่ติดต่อ เช่น INPUT เป็นคำมาตราฐาน หมายถึง คีย์บอร์ด OUTPUT หมายถึงหน้าจอ FILE หมายถึงไฟล์ที่อยู่ในหน่วยความจำสำรอง
HEADING ตัวอย่าง: PROGRAM payroll; PROGRAM tax (input, output); program score (input,output, scorefile);
DECLARATION PART รูปแบบ: TYPE var = type; CONST var1 = value; VAR var2,var3 : variable type; เป็นส่วนที่อยู่หลังส่วนหัวโปรแกรม ก่อนส่วนถ้อยแถลง BEGIN-END ใช้กำหนดความหมายของคำที่ผู้ใช้ตั้งขึ้นก่อนใช้คำนั้นในโปรแกรม
DECLARATION PART การประกาศคำเหล่านี้แบ่งเป็น 4 ส่วน ส่วน ใดไม่ใช้ไม่ต้องประกาศ และ ในการประกาศไม่จำเป็นต้องเรียงลำดับ ส่วนประกาศชื่อค่าคงที่ ใช้คำ CONST นำหน้าในการประกาศ ส่วนกำหนดแบบข้อมูลชนิดใหม่มี TYPE นำหน้าในการประกาศ ส่วนประกาศตัวแปรใช้คำ VAR นำหน้าในการประกาศ ส่วนโปรแกรมย่อย ใช้คำว่า PROCEDURE หรือ FUNCTION ในการประกาศ
ส่วนประกาศชื่อค่าคงที่ ใช้กำหนดค่าคงที่ที่ต้องใช้ภายในโปรแกรม ตลอดเวลาที่มีการทำงาน เช่น ค่าภาษี อัตราดอกเบี้ย จำนวนเดือน หรือ ค่าpi
ตัวอย่างประกาศชื่อค่าคงที่ program tax; uses wincrt; const rate = 0.07; var itemcost,saletax : real; begin write('Please enter cost of item:'); readln(itemcost); saletax := rate * itemcost; writeln('Itemcost is ',itemcost:6:2); writeln('Sales tax is ',saletax:6:2); end.
ส่วนประกาศชื่อค่าคงที่ Typed Constant CONST MAX : RATE = 0.07; STOP: CHAR = ‘’; PASSWORD :STRING[4] = ‘DANG’; ส่วนประกาศชื่อค่าคงที่ มี 2 แบบคือUntype Constant และ Typed Constant Untype Constant CONST MAX = 100; RATE = 0.07;
ส่วนประกาศชื่อค่าคงที่ ค่าคงที่ที่ปาสคาลกำหนดค่ามาตราฐานแล้ว ไม่ต้องประกาศสามารถนำมาใช้ได้ทันที่ เช่น pi มีค่า 3.1415926536E+00 (real) false มีค่าเป็นเท็จ (Boolean) true มีค่าเป็นจริง (Boolean) maxint มีค่า 32767 (Integer)
ส่วนประกาศข้อมูลชนิดใหม่ (TYPE) รูปแบบ TYPE identifier = type ; ผู้ใช้สามารถประกาศข้อมูลแบบใหม่ ที่แตกต่างไปจากที่ปาสคาลกำหนดไว้ เช่น integer, real,char,string identifier เป็นชื่อแบบข้อมูลใหม่
ตัวอย่างประกาศข้อมูลชนิดใหม่ TYPE day =mon,tue,wed,thu,fri,sat,sun); customer = RECORD name : string[30]; age : integer; end; Maxstring = string[80]; namelist =ARRAY [1..100] of string [30];
ส่วนประกาศตัวแปร ( VAR) รูปแบบ VAR identifier, identifier : type; เป็นชื่อที่ผู้ใช้ตั้งให้ตัวแปร (Variable) สามารถเก็บค่าที่เปลี่ยนแปลงขณะรันโปรแกรม ต้องประกาศตัวแปรทุกตัวที่ใช้ในโปรแกรมพร้อมชนิดของตัวแปร การให้ค่าต้อง Assign ค่า หรือ อ่านค่า (Readln) ซึ่งใช้ในส่วนคำสั่ง
ตัวอย่างส่วนประกาศตัวแปร ( VAR) result,subtotal : real; I,j,k : integer; name : string [30]; grade : char; flag : Boolean; buffer : array [1..128] of byte;
ส่วนโปรแกรมย่อย ส่วนโปรแกรมย่อย อยู่ระหว่างส่วนประกาศกับส่วนคำสั่ง ส่วนโปรแกรมย่อยมีรูปแบบเหมือนโปรแกรมหนึ่งโปรแกรม ต่างกันที่ ขึ้นต้นหัวโปรแกรมย่อย ด้วย PROCEDURE หรือ FUNCTION จบด้วย END; ส่วนโปรแกรมย่อยถูกเรียกใช้ในว่สนคำสั่ง
ส่วนคำสั่ง ขึ้นต้นด้วย BEGIN จบ ด้วย END. ประกอบด้วยคำสั่งที่คั่นด้วย ; ส่วนคำสั่งเป็นขั้นตอนการทำงานจริง คำสั่งเหล่านี้เขียนในรูปโครงสร้างโปรแกรม