การเขียนโปรแกรม ภาษาปาสคาล (Pascal) Pranee Sabprasarn
รู้จักกับภาษาปาสคาล กำเนิดตั้งแต่ปี ค.ศ.1970 โดยศาสตราจารย์นิคลอส เวิร์ธ ถูกสร้างขึ้นเพื่อใช้สอนการพัฒนาโปรแกรม และการเขียนโปรแกรมแบบโครงสร้าง เป็นภาษาที่ใช้สำหรับเริ่มต้นหัดเขียนโปรแกรม ภาษาปาสคาลเป็นภาษาระดับสูง(High level language) เป็นภาษาใกล้เคียงกับภาษาที่ใช้สื่อสารกันตามปกติเป็นคำสั่งเป็นคำที่มีความหมายในภาษาอังกฤษ ข้อดี จดจำรูปแบบคำสั่งและทำความเข้าใจง่าย ข้อเสีย ไม่มีคำสั่งสำหรับติดต่อกับอุปกรณ์ฮาร์ดแวร์ได้โดยตรงและทำงานช้ากว่าภาษาระดับต่ำ ตัวแปลภาษาที่ใช้คือ คอมไพเลอร์ (Compiler) จะตรวจสอบคำสั่งทั้งหมดในโปรแกรมว่าถูกต้องตามหลักการของภาษานั้นหรือไม่ ถ้าไม่พบข้อผิดพลาดคอมไพเลอร์จะทำการแปลความหมายคำสั่งทั้งหมดในโปรแกรมให้เป็นภาษาเครื่อง แล้วจึงทำงานทีเดียว
การทำงานของโปรแกรมภาษาปาสคาล ขั้นที่ 1 เริ่มจากการเขียนโปรแกรมด้วยคำสั่งและหลักการที่ถูกต้องของภาษาปาสคาล โปรแกรมที่เขียนขึ้นมานั้นจะเรียกว่า ซอร์สโค้ด (Source code) บันทึกไฟล์นามสกุล .pas ขั้นที่ 2 เป็นขั้นตอนการคอมไพล์ โดยตรวจสอบซอร์สโค้ดว่าถูกต้องหรือไม่ ถ้าไม่ผิดพลาดจะทำการแปลซอร์สโค้ดให้เป็นออบเจ็กต์โค้ด (Object code) ขั้นที่ 3 เป็นขั้นตอนการลิงค์ เกิดขึ้นในกรณีที่ภายในโปรแกรมมีการเรียกใช้โพรซีเยอร์หรือฟังก์ชันที่อยู่ในไลบรารีหรือยูนิตมาตรฐานของภาษาปาสคาล ไฟล์สุดท้ายที่ได้ออกมาจะเป็นไฟล์นามสกุล .exe
การทำงานของโปรแกรมภาษาปาสคาล โพรซีเยอร์และฟังก์ชันจากไลบรารีหรือยูนิตมาตรฐาน program lesson1; var Num1,Num2 : Integer begin write(‘Input number 1 : ’); readln(Num1); write(‘Input number 2 : ’); readln(Num2); readln; end ไฟล์ชื่อ test.pas ลิงค์ Object code test.exe คอมไพล์
ส่วนประกอบของโปรแกรม ประกาศชื่อโปรแกรม ประกาศชื่อยูนิต จุดเริ่มต้นการทำงานของโปรแกรม จุดสิ้นสุดการทำงาน แสดงข้อความออกทางหน้าจอ
รูปแบบการเขียนคำสั่งภาษาปาสคาล ต้องเริ่มด้วยคำสั่ง begin และจบด้วยคำสั่ง end. ทุกคำสั่งต้องลงท้ายด้วย เครื่องหมาย ; (semicolon) ตัวอักษรไม่มีผลในภาษาปาสคาล จะเขียนคำสั่งด้วยตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ก็มีความหมายเหมือนกัน สามารถเขียนคำสั่งได้อย่างอิสระ ไม่จำกัดรูปแบบ อาจจะเขียนคำสั่งติดกันไปเรื่อยๆ โดยไม่เว้นบรรทัดก็ได้
การเขียนคอมเมนต์ { } (* *)
หลักการตั้งชื่อตัวแปร ชนิดของข้อมูล การกำหนดค่าให้กับตัวแปร ตัวแปรในภาษาปาสคาล รูปแบบคำสั่ง หลักการตั้งชื่อตัวแปร ชนิดของข้อมูล การกำหนดค่าให้กับตัวแปร ตัวแปรสำหรับเก็บข้อความ
var name : type; รูปแบบคำสั่ง var เป็นคำสั่งที่ใช้ในการประกาศตัวแปร
หลักการตั้งชื่อตัวแปร ต้องขึ้นด้วยตัวอักษรA-Z,a-z หรือ _ (underscore) ภายในชื่อจะเป็นตัวอักษร , ตัวเลข หรือ _ (underscore)เท่านั้น ห้ามเว้นช่องว่างภายในชื่อ ตัวอักษรพิมพ์ใหญ่หรือพิมพ์เล็กไม่มีผล คือไม่ต่างกัน เช่น Name , name มีความหมายเหมือนกัน ห้ามตั้งชื่อตัวแปรซ้ำกับคำสงวน เช่น And,Array,Begin,Case,For,File,Else, Do,Var,Uses,While,End เป็นต้น
Boolean ค่าความจริงทางตรรกศาสตร์ เช่น var Num1 : integer; ชนิดของข้อมูล Integer เลขจำนวนเต็ม Char อักขระ Real เลขทศนิยม Boolean ค่าความจริงทางตรรกศาสตร์ เช่น var Num1 : integer;
การกำหนดค่าให้กับตัวแปร Variable := value; Num1:=15; Ch:=‘A’; Num2:=3.14;
ตัวแปรสำหรับเก็บข้อความ Var name : string[n]; var Address:string; (ให้ค่าอัตโนมัติ 255 อักขระ) var name:string[50]; (ข้อความมีความยาวสูงสุด 50 อักขระ)
เครื่องหมายการคำนวณ + - * / Div หารจำนวนเต็ม Mod หารเอาเศษ
เครื่องหมายการเปรียบเทียบ = <> > < >= <=
การดำเนินการทางตรรกศาสตร์ And Or Not
ลำดับของเครื่องหมายในการคำนวณ () Not *,/,div,mod,and +,-,or =,<,<=,>,>=,<>
เขียนโปรแกรมเพื่อแสดงผลและรับข้อมูล การนำข้อมูลไปแสดงผล แสดงผลออกทางหน้าจอด้วยคำสั่ง write แสดงผลออกทางหน้าจอด้วยคำสั่ง writeln กำหนดรูปแบบการแสดงผล
เขียนโปรแกรมเพื่อแสดงผลและรับข้อมูล การนำข้อมูลไปแสดงผล แสดงผลออกทางหน้าจอด้วยคำสั่ง write write(output, value); write(‘The number is : ’,Num1);
การนำข้อมูลไปแสดงผล เขียนโปรแกรมเพื่อแสดงผลและรับข้อมูล แสดงผลออกทางหน้าจอด้วยคำสั่ง writeln writeln(output, value); writeln(‘The number is : ’,Num1);
กำหนดรูปแบบการแสดงผล การนำข้อมูลไปแสดงผล กำหนดรูปแบบการแสดงผล write(value:n); หรือ write(value1:n, value2:n, value3:n); writeln(value:n); หรือ writeln(value1:n, value2:n, value3:n);
กำหนดรูปแบบการแสดงผล writeln(‘Thailand’:15); T h a i l n d
เขียนโปรแกรมเพื่อแสดงผลและรับข้อมูล การรับข้อมูลเข้ามาในโปรแกรม รับข้อมูลด้วยคำสั่ง read รับข้อมูลด้วยคำสั่ง readln
เขียนโปรแกรมเพื่อแสดงผลและรับข้อมูล การรับข้อมูลเข้ามาในโปรแกรม รับข้อมูลด้วยคำสั่ง read / readln read(input,variable) readln(input,variable) ** ถ้าไม่กำหนดInput ก็จะหมายถึงรับข้อมูลทางคีย์บอร์ด **
โพรซีเยอร์สำหรับการแสดงผล ClrScr;เคลียร์หน้าจอให้ว่าง Gotoxy(int,int) กำหนดเคอร์เซอร์ไปอยู่ตำแหน่งที่คอลัมน์ที่ , แถวที่ TextBackground(word/int) กำหนดสีพื้น TextColor(word/int) กำหนดสีข้อความ
ควบคุมทิศทางแบบวนรอบ ควบคุมทิศทางแบบเลือกทำ ควบคุมทิศทางการทำงานของโปรแกรม ควบคุมทิศทางแบบวนรอบ ควบคุมทิศทางแบบเลือกทำ
ควบคุมทิศทางแบบวนรอบ for while
ควบคุมทิศทางแบบวนรอบ for - คำสั่งที่ใช้ในการควบคุมให้โปรแกรมทำงานแบบวนรอบที่ง่ายและซับซ้อนน้อยที่สุด for เงื่อนไขเริ่มต้น to เงื่อนไขสิ้นสุด do คำสั่งที่จะให้ทำเมื่อเงื่อนไขเป็นจริง
for Count:=1 to 5 do writeln(‘Hello’); end. ตัวอย่าง program for1; var Count:integer; begin for Count:=1 to 5 do writeln(‘Hello’); end. Hello
ควบคุมทิศทางแบบวนรอบ while คำสั่งที่ใช้ในการควบคุมให้โปรแกรมทำงานแบบวนรอบ while เงื่อนไข do begin คำสั่งที่ 1จะให้ทำเมื่อเงื่อนไขเป็นจริง; คำสั่งที่ 2จะให้ทำเมื่อเงื่อนไขเป็นจริง; … คำสั่งเปลี่ยนค่าตัวแปร; end;
1 2 3 4 5 program while1; var Count:integer; begin Count:=1; ตัวอย่าง program while1; var Count:integer; begin Count:=1; while Count<=5 do begin writeln(Count); Count:=Count+1; end; end. 1 2 3 4 5
ควบคุมทิศทางแบบเลือกทำ if-then if-then-else case
ควบคุมทิศทางแบบเลือกทำ if-then เงื่อนไขทางเลือกเดียว if เงื่อนไข then คำสั่งที่1;
ควบคุมทิศทางแบบเลือกทำ if-then เงื่อนไขทางเลือกเดียว if เงื่อนไข then begin คำสั่งที่1; คำสั่งที่2; ... end;
ตัวอย่าง program if1; uses Crt; var Age:integer; begin ClrScr; write(‘Enter your age :’); readln(Age); if Age<20 then writeln(‘You are not adult’); readln; end.
ควบคุมทิศทางแบบเลือกทำ if-then-elseเงื่อนไขหลายทางเลือก if เงื่อนไข then คำสั่งที่เป็นจริง else คำสั่งที่เป็นเท็จ;
ควบคุมทิศทางแบบเลือกทำ if เงื่อนไข then begin คำสั่งที่เป็นจริง1 คำสั่งที่เป็นจริง2 ..... end else begin คำสั่งที่เป็นเท็จ1 คำสั่งที่เป็นเท็จ2 ... end;
ตัวอย่าง program if2; uses Crt; var salary,sale,com:real; begin ClrScr; writeln('Enter your Salary :');readln(salary); writeln('Enter your Sale :');readln(sale); if sale>=20000 then begin com:=sale*0.15; salary:=salary+com+500; end else begin com:=sale*0.05; salary:=salary+com; end; writeln('Commission ',com:10:2); writeln('Salary ',salary:10:2); readln; end.
program if3; uses Crt; var salary,sale,com:real; begin ClrScr; writeln('Enter your Salary :');readln(salary); writeln('Enter your Sale :');readln(sale); if sale>=50000 then begin com:=sale*0.3; salary:=salary+com+1500; end else if sale>30000 then begin com:=sale*0.2; salary:=salary+com+1000; else begin com:=sale*0.1; salary:=salary+com; end; writeln('Commission ',com:10:2); writeln('Salary ',salary:10:2); readln; end.
case ตัวแปรที่ใช้ตรวจสอบ of เงื่อนไข1 : คำสั่ง; เงื่อนไข2 : คำสั่ง; เงื่อนไข3 : คำสั่ง; ... else เงื่อนไข; end;
ตัวอย่างโปรแกรม IF
ตัวอย่างโปรแกรม IF ต่อ จากโปรแกรมต่อไปนี้ คำนวณหาราคารวมสุทธิของสินค้าโดยมีการรับจำนวนสินค้า (amount)และราคาสินค้า (price) คำนวณหาราคารวมสินค้า(total) และหาส่วนลด(discount)โดยมีเงื่อนไขว่า ถ้าราคารวมตั้งแต่ 1000 บาทขึ้นไปให้ส่วนลด 200 บาท ถ้าราคารวมไม่ถึง 1000 บาท ไม่ให้ส่วนลด หรือส่วนลดเป็น 0 บาท
ตัวอย่างโปรแกรม IF ต่อ
Thank You ! fon_phim@hotmail.com