3. ประเภทของภาษาคอมพิวเตอร์
1.ภาษาเครื่อง (Machine Language)
เป็นภาษาคอมพิวเตอร์ภาษาเดียวที่สามารถสื่อสารกับคอมพิวเตอร์ได้โดยตรง ภาษาเครื่องจะเป็นชุดคำสั่งที่ใช้ในการสั่งงานหรือติดต่อกับเครื่องโดยตรงลักษณะสำคัญของภาษาเครื่องจะประกอบด้วยรหัสของเลขฐานสองที่ใช้เลข 1 และ 0 เป็นสัญลักษณ์ไฟฟ้าปิดและเปิดตามลำดับ ซึ่งเทียบได้กับลักษณะของสัญญาณ ทางไฟฟ้าเข้ากับหลักการทำงานของเครื่องซึ่งเครื่องสามารถเข้าใจและพร้อมที่ จะทำงานตามคำสั่งได้ทันทีภาษาเครื่องจะมีกฎเกณฑ์ทางไวยากรณ์ค่อนข้างจำกัด โปรแกรมมีลักษณะค่อนข้างยุ่งยากซับซ้อน รหัสโครงสร้างของแต่ละคำสั่งของภาษาเครื่องจะประกอบด้วยส่วนสำคัญ 2 ส่วน คือ
ก. รหัสบอกประเภทของคำสั่ง (Operation Code หรือ Op-Code) เป็นส่วนที่บอกคำสั่งให้เครื่องทำการประมวลผล เช่นให้ทำการบวก ลบ คูณ หาร หรือเปรียบเทียบ
ข. รหัสบอกตำแหน่งข้อมูล (Operand) เป็นส่วนที่บอกว่าข้อมูลที่จะนำมาประมวลผลนั้นเก็บอยู่ในตำแหน่ง(Address)ใดของหน่วยความจำลักษณะของโปรแกรมจะประกอบด้วยกลุ่มของรหัสคำสั่ง ซึ่งประกอบด้วยเลขฐานสองเรียงต่อกัน ซึ่งผู้เขียนโปรแกรมจะต้องทราบถึงเทคนิคการใช้รหัสคำสั่งและจะต้องจำตำแหน่งของคำสั่งของข้อมูลที่ถูกเก็บไว้ เพราะเนื่องจากเครื่องคอมพิวเตอร์แต่ละบริษัทจะใช้ภาษาเครื่องของตนเอง และผู้เขียนโปรแกรมจะต้องเข้าใจระบบการทำงานของเครื่องเป็นอย่างดี ดังนั้นการเขียนโปรแกรมเป็นภาษาเครื่องจึงมีผู้เขียนอยู่ในวงจำกัด เพราะต้องมีความรู้ทางด้านเครื่องและรหัสของเครื่องด้วยจึงจะเขียนโปรแกรมได้ ภาษาเครื่องของคอมพิวเตอร์แต่ละระบบจะแตกต่างกัน ทำให้เกิดความไม่สะดวกเมื่อมีการเปลี่ยนเครื่องคอมพิวเตอร์ระบบใหม่ก็จะต้องเขียนโปรแกรมใหม่
ข้อดีของภาษาเครื่อง
1.เมื่อคำสั่งเข้าสู่เครื่องจะสามารถทำงานได้ทันที
2.สามารถสร้างคำสั่งใหม่ๆได้โดยที่ภาษาอื่นทำไม่ได้
3.ต้องการหน่วยความจำเพียงเล็กน้อย
ข้อเสียของภาษาเครื่อง
1.ต้องเขียนโปรแกรมคำสั่งยาวทำให้ผิดพลาดได้ง่าย
2.ผู้เขียนโปรแกรมจะต้องรู้ระบบการทำงานของเครื่องเป็นอย่างดีจึงสามารถเขียนโปรแกรมได้ และถ้าเครื่องที่มีฮาร์ดแวร์ต่างกัน จะใช้โปรแกรมร่วมกันได้
2.ภาษาแอสแซมบลี (Assembly Language)
จัดเป็นภาษาสัญลักษณ์(Symbolic Language)เป็นภาษาที่พัฒนามาจากภาษาเครื่องซึ่งเขียนโปรแกรมยาก ภาษาแอสแซมบลีจึงได้ถูกพัฒนาขึ้นโดยใช้สัญลักษณ์ข้อความแทนกลุ่มของเลขฐานสอง 1 และ 0 ซึ่งใช้ตัวย่อที่มีความหมาย เรียกว่า นีมอนิก ในคำสั่งทำให้การเขียนโปรแกรมสะดวกขึ้นแต่ผู้เขียนโปรแกรมยังคงต้องจำความหมายสัญลักษณ์ที่ใช้แทนคำสั่งต่าง ๆ การเขียนโปรแกรมภาษาแอสแซมบลี มีลักษณะที่ต้องขึ้นอยู่กับเครื่องเราไม่สามารถนำโปรแกรมภาษาแอสแซมบลีไปใช้กับเครื่องต่างชนิดกันได้ ดังนั้น ผู้เขียนโปรแกรมจะต้องเข้าใจระบบการทำงานของเครื่องเป็นอย่างดี การเขียนโปรแกรมด้วยภาษานี้ วิธีการก็คล้ายกับการเขียนโปรแกรมภาษาเครื่องแต่อย่างไรก็ตามคอมพิวเตอร์จะรู้จักแต่เฉพาะภาษาเครื่องเท่านั้น ดังนั้นจึงต้องมีการแปลภาษาแอสแซมบลีให้เป็นภาษาเครื่องเสียก่อนเครื่องจึงจะสามารถทำงานตามโปรแกรมคำสั่งได้โปรแกรมที่ทำหน้าที่แปลภาษานี้เรียกว่าแอสแซมเบลอร์(Assembler)
ข้อดี ของภาษาแอสแซมบลี
-การเขียนโปรแกรมเขียนง่ายกว่าภาษาเครื่อง
ข้อเสีย ของภาษาแอสแซมบลี
- ขั้นตอนการเขียนโปรแกรมมีลักษณะคล้ายภาษาเครื่องทำให้โปรแกรมคำสั่งต้องเขียนยาวเช่นเดิม
3.ภาษาระดับสูง (High Level Language)
เป็นภาษาคอมพิวเตอร์ที่ได้รับการพัฒนา ภาษายุคที่สาม ซึ่งเป็นการพัฒนามาจากภาษาเครื่องและภาษาแอสแซมบลีเพื่อง่ายต่อการเรียนรู้ และใช้งานเรียกว่าภาษา โพรซีเยอร์ เพื่อให้สามารถใช้ได้ง่ายและสะดวกยิ่งขึ้น การเขียนภาษาไม่ขึ้นกับฮาร์ดแวร์หรือลักษณะการทำงานภายในของเครื่อง ผู้เขียนโปรแกรมไม่จำเป็นต้องเข้าใจระบบการทำงานภายในเครื่องมากนัก เพียงแต่เข้าใจกฎเกณฑ์ในการเขียนแต่ละภาษาให้ดี ซึ่งลักษณะคำสั่งจะคล้ายกับภาษาอังกฤษ เช่น * แทนการคูณ, + แทนการบวก เป็นต้น ดังนั้นภาษาระดับสูงจึงเป็นที่นิยมใช้กันแพร่หลายในปัจจุบันแต่อย่างไรก็ตามภาษาระดับสูงเครื่องจะยังไม่เข้าใจ จึงต้องมีการแปลให้เป็นภาษาเครื่องเสียก่อน โปรแกรมที่ใช้แปลภาษาระดับสูง แบ่งออกเป็น 2 ประเภท คือ อินเทอพรีทเตอร์ (Interpreter) และคอมไพเลอร์ (Compiler)
1.อินเทอพรีทเตอร์(Interpreter)
เป็นโปรแกรมที่ใช้ในการแปลภาษาระดับสูงให้เป็นภาษาเครื่อง การแปลจะแปลที
และคำสั่งและทำงานตามคำสั่งทันที แล้วจึงไปอ่านคำสั่งต่อไป ในกรณีที่โปรแกรมมีลักษณะการทำงานแบบวนซ้ำ (Loop) อินเทอพรีทเตอร์จะต้องแปลคำสั่งนั้นซ้ำแล้วซ้ำอีก จึงทำให้การแปลแบบอินเทอพรีทเตอร์ทำงานซ้ำ อินเทคพรีทเตอร์จะไม่สร้างออฟเจ๊ทโปรแกรม (Object Program) ซึ่งเป็นโปรแกรมที่แปลเป็นภาษาเครื่องเก็บไว้ ฉะนั้นทุกครั้งที่สั่งให้โปรแกรมทำงานอินเทอพรีทเตอร์ก็จะเริ่มแปลใหม่ทุกครั้ง เครื่องจะเริ่มทำงานทันทีเมื่ออินเทอพรีทเตอร์แปลคำสั่งเสร็จและจะหยุดทำงานเมื่อดินเทอพรีทเตอร์พบข้อผิดพลาดในคำสั่งที่แปล และจะรายงานความผิดพลาดทันที ผู้เขียนโปรแกรมจะต้องแก้ไขโปรแกรมคำสั่งให้ถูกแล้วสั่งให้โปรแกรมเริ่มทำงานใหม่ อินเทอพรีทเตอร์ก็จะเริ่มแปลคำสั่งนั้นใหม่ภาษาที่ใช้อินเทคพรีทเตอร์แปลเช่นภาษาBASICAและGWBASIC เป็นต้น
2.คอมไพเลอร์(Compiler)
เป็นโปรแกรมที่ใช้แปลภาษาระดับสูงให้เป็นภาษาเครื่องคอมไฟเลอร์จะทำการ
แปลทั้งโปรแกรม แล้วเก็บโปรแกรมที่แปลได้ในรูปของภาษาเครื่องเก็บไว้ในลักษณะของออฟเจ็ท โปรแกรม (Object Program) ถ้าโปรแกรมที่แปลไม่มีข้อผิดพลาดก็จะปฏิบัติงานตามคำสั่งนั้น ๆ ทันทีแต่ถ้าโปรแกรมมีข้อผิดพลาด คอมไพเลอร์ก็จะบอกข้อผิดพลาดทั้งหมดที่มีในโปรแกรมออกมาให้ทราบ และจะยอมให้ออฟเจ็ทโปรแกรมทำงานต่อเมื่อโปรแกรมได้รับการแก้ไขจนไม่มีข้อผิดพลาดแล้ว โปรแกรมที่ถูกแปลจะเก็บไว้เป็นออฟเจ็ทโปรแกรมในหน่วยความจำ จึงทำให้ต้องใช้เนื้อที่ในหน่วยความจำมากกว่าอินเทอพรีทเตอร์ เพราะต้องเก็บตัวโปรแกรมภาษา (Source Program) ออฟเจ็ท โปรแกรม (Object Program) และคอมไฟเลอร์ (Program)
เมื่อแก้ไขข้อผิดพลาดแล้ว คอมไพเลอร์จะทำการแปลทั้งโปรแกรมใหม่เพื่อเก็บเป็นออฟเจ็ทโปรแกรมอีกครั้งหนึ่งในกรณีที่มีการทำงานแบบวนซ้ำ (Loop) เครื่องจะนำเอาออฟเจ็ทโปรแกรมที่แปลเก็บไว้ไปใช้ทำงาน โดยไม่ต้องมีการแปลซ้ำอีก ทำให้การทำงานเร็วกว่าการแปลแบบอินเทอพรีทเตอร์ ภาษาที่ใช้คอมไพเลอร์แปล ได้แก่ ภาษา C, COBOL, FORTRAN,PL/1, TURBO BASIC,PASCAL เป็นต้น
4.ยกตัวอย่างภาษา
ภาษาC กับ PIC
การเขียนโปรแกรมของไมโครคอนโทรลเลอร์ PIC นอกจากจะใช้ภาษาแอสเซมปลี(Assembly) แล้ว เรายังสามารถใช้ภาษาอื่นๆได้อีก เช่นภาษาเบสิก และ ภาษาซี เป็นต้น แต่ในบทความต่อจากนี้จะขอกล่าวถึงภาษาซีเท่านั้น
การเขียนโปรแกรมด้วยภาษาC มีข้อดีอยู่ เช่น
C เป็นภาษาไม่ขึ้นกับฮาร์แวร์
C สามารถเขียนแบบโครงสร้าง
C ง่ายต่อการ ศึกษา
C มีความสามารถใกล้เคียงแอสเซมบลี
C สามารถเขียนการทำงานที่ซับซ้อนได้
ในการเขียนโปรแกรมของไมโครคอนโทรลเลอร์ตระกูลอื่นสามารถเขียนด้วยหลักการใกล้เคียงกัน
โปรแกรมภาษา C
ภาษา C นั้นประกอบด้วย 3 ส่วนหลักๆคือ 1. ฟัง์ชัน 2.ตัวแปร 3.คำสั่งการทำงาน
ตัวอย่างโปรแกรมภาษาC
#include
voidmain
{
printf("HelloPIC");
}
โปรแกรมนี้จะแสดงคำว่า "Hello PIC"
คีย์เวิร์ด (keywords) หรือ คำสงวนในภาษาC
คีย์เวิร์ด (keywords) หรือ คำสงวนในภาษาC เป็นคำที่สงวนไว้หามนำมาใช้สร้างเป็นชื่อฟังก์ชันชั้น หรือ ตัวแปร ถ้าใช้แล้วจะทำให้การผิดพลาดในการคอมไพล์เลอร์ คำสงวนมีดังนี้
การเขียนคอมเมนต์(comments)
บรรทัดใดมีการเขียนคอมเมนต์ บรรทัดนั้นจะไม่ถูกนำไปคอมไพล์เลอร์ คือจะผ่านบรรทัดนั้นไปเลย การเขียนคอมเมนต์ก็เพื่อที่จะอธิบายการทำงาน หรือ ต้องการบอกอะไรบางอย่างของโปรแกรมนั้นๆ ซึ่งการเขียนคอมเมนต์ทำได้คือ
1. ใช้เครื่องหมาย // นำหน้า เช่น // โปรแกรมแสดงการทำงานของนาฬิกา
2. ใช้เครื่องหมาย /* */ ค่อมระหว่างอักษรที่ต้องการ เช่น /* โปรแกรมแสดงการทำงานของนาฬิกา */ ซึ่งการใช้เครื่องหมายแบบนี้สามารถใช้แบบหลายบรรทัดได้
ชนิดตัวแปร (Variable type)
ตัวแปรคือ ชื่อที่ผู้เขียนโปรแกรมกำหนดขึ้นเพื่อใช้งาน (หรือใช้ในการจองหน่วยความจำ) โดยก่อนที่จะกำหนดชื่อตัวแปรนั้น เราจะต้องกำหนดชนิดของข้อมูลตัวแรก่อน โดยชนิดของข้อมูลตัวแปรในภาษC เช่น
int ตัวเลขจำนวนเต็ม 8 บิต 0 ถึง 255
long ตัวเลข 16 บิต 0 ถึง 65,535
float ตัวเลขทศนิยม 32 บิต 3.4x10e-38 ถึง 3.4 x10e38
char ตัวอักขระ 8 บิต
int16 ตัวเลข 16 บิต 0 ถึง 65,535
int32 ตัวเลข 32 บิต 0 ถึง 4,294,967,298
ค่าคงที่ (Constants)
ค่าคงที่เป็นการประกาศครั้งเดียวแล้วสามารถเรียกค่านั้นมาใช้งานได้เลย ซึ่งเราจะใช้ ไดเร็กตีฟ #define ในการกำหนดค่าคงที่ เช่น
#define PI 3.142 คือ การประกาศว่าค่า PI มีค่าเท่ากับ 3.142
#drfine TRUE 1 คือ การประกาศว่าค่า TRUE มีค่าเป็น1
#drfine FALSE 0 คือ การประกาศว่าค่า FALSE มีค่าเป็น 0
การคำนวณทางคณิตศาสตร์
สัญลักษณ์การคำนวณทางคณิศาสตร์ในการเขียนโปรแกรมมีดังนี้
เงื่อนไขการทำงานและลอจิก
เงื่อนไขการทำงานกับตัวแปร มีสัญลักษณ์ต่างๆดังนี้
การกระทำทางบิต
การกระทำทางบิตจะใช้ในระบบดิจิตอลซึ่งจะมีสัญลักษณ์ดังต่อไปนี้
การทำงานแบบมีเงื่อนไข
การทำงานแบบมีเงื่อนไขจะมีอยู่ 2 คำสั่งคือ if..else และ switch
if...else จะเป็นการตรวจสอบเงื่อนไข ถ้าเป็นจริงจะทำตามเงื่อนไข ถ้าเป็นเท็จจะทำตามเงื่อนไขหลัง else และเขียนโครงสร้างได้ดังนี้
if(condition) {
statements 1;
}
else {
statements2;
} if(เงื่อนไขการทำงาน) { // เงื่อนไขเป็นจริง
คำสั่งการทำงาน 1;
}
else { // เงื่อนไขเป็นเท็จ
คำสั่งการทำงาน 2;
} // จบการทำงาน
switch จะใช้ตรวจสอบค่ากับเงื่อนไข โดยค่าที่ตรวจสอบจะเป็นค่าเดี่ยวๆจะเป็นค่าอยู่ระหว่างไม่ได้ซึ่งสามารถเขียนโครงสร้างได้ดังนี้
switch(expression){
case condition 1:
statements1;
Beak;
case condition 2:
statements2;
Beak;
.
.
default
statements;
Break
}
switch (ตัวแปรในการตรวจสอบ){
case เงื่อนไขที่ 1:
คำสั่งที่ 1;
หยุด; // จะมีหรือไม่มีก็ได้
case เงื่อนไขที่ 2:
คำสั่งที่ 2;
หยุด; // จะมีหรือไม่มีก็ได้
.
.
.default //
คำสั่งสุดท้าย;
หยุด; // จะมีหรือไม่มีก็ได้
} // จบการทำงาน
การทำงานแบบวนลูป
คำสั่งวนลูปเป็นคำสั่งที่ทำให้โปรแกรมทำงานไปเรื่อยๆ ซึ่งจะมีคำสั่งอยู่ 3 คำสั่งคือ while , for และ do for ในคำสั่ง for เราสามารถกำหนดค่าเริ่มต้น เงื่อนไข และ การเพิ่มค่าได้ตั้งแต่แรก เขียนลำดับการทำงานได้ดังนี้
for(assignment,condition ,increment ){
statement;
}
for(ค่าเริ่มต้น,เงื่อนไขการทำงาน,เพิ่ม/ลด ค่า){
คำสั่งในการทำงาน;
}
while จะทำงานจนกว่าเงื่อนไขเป็นเท็จ สามารถเขียนลำดับการทำงานได้
while ( condition) {
statements;
}
while (เงื่อนไข) {
คำสั่งในการทำงาน ;
}
do จะทำงานคล้ายกับ while การใช้ do จะทำงาน 1 ครั้งก่อนแล้วจึงทำการตรวจสอบเงื่อนไข สามารถเขียนลำดับการทำงาน
ได้ดังนี้
do {
statements ;
} while ( condition)
do{
คำสั่งในการทำงาน ;
} while ( เงื่อนไข )
บรรณานุกรม