โครงสร้างโปรแกรมภาษาปาสคาล
ภาษาปาสคาล เป็นภาษาระดับสูง (High-Level
Language) เป็นอีกภาษาหนึ่งที่ได้รับความนิยม เนื่องมาจากตัวภาษามีลักษณะเด่นหลายด้าน เช่น รูปแบบคำสั่งที่มีลักษณะเป็นภาษาอังกฤษ ง่ายต่อการเขียน และการจดจำ นอกจากนี้โปรแกรมยังมีลักษณะที่เป็นโครงสร้าง (Structure
Programing) ง่ายต่อการศึกษา มีตัวแปรภาษา(Compilers) อยู่ในหลายระบบคอมพิวเตอร์ และเป็นภาษาที่เหมาะสมกับงานในทุกประเภท ไม่ว่าจะเป็นด้านวิทยาศาสตร์ที่มีการคำนวณที่ซับซ้อน ด้านการศึกษา เหมาะกับผู้ที่จะเริ่มศึกษาการเขียนโปรแกรมเป็นครั้งแรก
ปาสคาล(Pascal) เป็นชื่อที่ได้รับสมญานามมาจาก
"Blaise Pascal" นักวิทยาศาสตร์และนักคณิตศาสตร์ชาวฝรั่งเศส ผู้ซึ่งมีชื่อเสียงในการประดิษฐ์เครื่องจักรที่ใช้ในการคำนวณ ซึ่งเป็นต้นแบบของคอมพิวเตอร์ในปัจจุบัน
โครงสร้างของโปรแกรมภาษาปาสคาล
โปรแกรมภาษาปาสคาลประกอบด้วยส่วนสำคัญต่าง
ๆ 3 ส่วนคือ
1. ส่วนหัวโปรแกรม (program heading)
2. ส่วนประกาศ (program declarations)
3. ส่วนคำสั่งการทำงาน (program statements)
ส่วนหัว (Heading)
ประกอบด้วยประโยคเพียงประโยคเดียว ดังรูปแบบ
Program
ชื่อโปรแกรม;
ชื่อโปรแกรม เป็นไปตามกฎเกณฑ์การตั้งชื่อของปาสคาล และจะต้องไม่ซ้ำกับชื่ออื่น ๆ ภายในโปรแกรม
การกำหนดชื่อต้องเป็นไปตามกฎเกณฑ์ดังต่อไปนี้
1. ขึ้นต้นด้วยตัวอักษร แล้วตามด้วยตัวอักษร หรือตัวเลข หรือเครื่องหมายขีดล่าง เท่านั้น ตัวอักษรนี้จะเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กก็จะมีความหมายเช่นเดียวกัน
2. มีความยาวไม่เกิน 127 ตัวอักขระ แต่ตัวแปรภาษาสามารบอกความแตกต่างของชื่อแต่ละตัวได้เฉพาะอักขระ 8 ตัวแรกเท่านั้น สำหรับภาษาปาสคาลจะบอกความแตกต่างได้ถึง 60 ตัวอักขระ
3. ชื่อไม่ตรงกับคำสงวน (reserve words) ในภาษาปาสคาล คำสงวน หมายถึงคำที่มีกฎเกณฑ์การใช้และมีความหมายเฉพาะที่แน่นอน เช่น Begin…End,If.. Then….เป็นต้น
ตัวอย่าง Program Tax;{โปรแกรมคิดภาษี}
{} ข้อความที่อยู่ในสัญลักษณ์นี้ หมายถึง
หมายเหตุหรือข้อความอธิบายไม่มีผลต่อโปรแกรม
ส่วนประกาศ (Declaration part)
โปรแกรมภาษาปาสคาลแตกต่างจากบางภาษาที่ต้องมีการกำหนดชื่อและชนิดของตัวแปรที่จะใช้ในโปรแกรมเสียก่อน ส่วนประกาศโปรแกรมได้แก่บริเวณตั้งแต่หลังส่วนหัวไปจนถึงข้อความก่อนคำว่า Begin ของโปรแกรมหลัก ส่วนประกาศโปรแกรมจะประกอบด้วย
1. ส่วนประกาศเลเบล Labal
2. ส่วนประกาศชื่อค่าคงที่ Const
3. ส่วนกำหนดแบบข้อมูล Type
4. ส่วนประกาศตัวแปร Var
5. ส่วนโปรแกรมย่อย Procedure/Function
ส่วนใดไม่ได้ใช้ก็ไม่ต้องประกาศ
ส่วนคำสั่งการทำงาน (Statements)
ส่วนคำสั่งของโปรแกรม จะอยู่ต่อจากส่วนประกาศ ขึ้นต้นด้วย Begin และจบด้วย End. ช่วงระหว่าง 2 คำนี้จะเป็นคำสั่ง จะต้องแยกแต่ละคำสั่งออกจากกันด้วย; โดยคำสั่งแต่ละคำสั่งจะมีผลให้มีการทำงานอย่างใดอย่างหนึ่ง
โครงสร้างภาษาC
ภาษา C เป็นภาษาคอมพิวเตอร์ที่ถูกค้นคิดขึ้นโดย
Denis Ritchie ในปี ค.ศ. 1970
โดยใช้ระบบปฏิบัติการของยูนิกซ์ (UNIX) นับจากนั้นมาก็ได้รับความนิยมเพิ่มขั้นจนถึงปัจจุบัน
ภาษา C สามารถติดต่อในระดับฮาร์ดแวร์ได้ดีกว่าภาษาระดับสูงอื่น
ๆ ไม่ว่าจะเป็นภาษาเบสิกฟอร์แทน ขณะเดียวกันก็มีคุณสมบัติของภาษาระดับสูงอยู่ด้วย
ด้วยเหตุผลดังกล่าวจึงจัดได้ว่าภาษา C เป็นภาษาระดับกลาง (Middle
–lever language)
ภาษา C เป็นภาษาคอมพิวเตอร์ชนิดคอมไพล์ (compiled
Language) ซึ่งมีคอมไพลเลอร์ (Compiler) ทำหน้าที่ในการคอมไพล์
(Compile) หรือแปลงคำสั่งทั้งหมดในโปรแกรมให้เป็นภาษาเครื่อง
(Machine Language) เพื่อให้เครื่องคอมพิวเตอร์นำคำสั่งเหล่านั้นไปทำงานต่อไป
โครงสร้างของภาษา C
ทุกโปรแกรมของภาษา C มีโครงสร้างเป็นลักษณะดังรูป
Int main (void)
เฮดเดอร์ไฟล์ (Header Files)
เป็นส่วนที่เก็บไลบรารี่มาตรฐานของภาษา C ซึ่งจะถูกดึงเข้ามารวมกับโปรแกรมในขณะที่กำลังทำการคอมไพล์
โดยใช้คำสั่ง
#include<ชื่อเฮดเดอร์ไฟล์> หรือ
#include “ชื่อเฮดเดอร์ไฟล์”
ตัวอย่าง
#include<stdio.h>
เฮดเดอร์ไฟล์นี้จะมีส่วนขยายเป็น .h เสมอ
และเฮดเดอร์ไฟล์เป็นส่วนที่จำเป็นต้องมีอย่างน้อย 1 เฮดเดอร์ไฟล์
ก็คือ เฮดเดอร์ไฟล์ stdio.h ซึ่งจะเป็นที่เก็บไลบรารี่มาตรฐานที่จัดการเกี่ยวกับอินพุตและเอาท์พุต
ส่วนตัวแปรแบบ Global (Global Variables)
เป็นส่วนที่ใช้ประกาศตัวแปรหรือค่าต่าง ๆ ที่ให้ใช้ได้ทั้งโปรแกรม
ซึ่งใช้ได้ทั้งโปรแกรม ซึ่งในส่วนไม่จำเป็นต้องมีก็ได้
ฟังก์ชัน (Functions)
เป็นส่วนที่เก็บคำสั่งต่าง ๆ ไว้ ซึ่งในภาษา C จะบังคับให้มีฟังก์ชันอย่างน้อย 1 ฟังก์ชั่นนั่นคือ
ฟังก์ชั่น Main() และในโปรแกรม 1 โปรแกรมสามารถมีฟังก์ชันได้มากกว่า
1 ฟังก์ชั่น
ส่วนตัวแปรแบบ Local (Local Variables)
เป็นส่วนที่ใช้สำหรับประกาศตัวแปรที่จะใช้ในเฉพาะฟังก์ชันของตนเอง ฟังก์ชั่นอื่นไม่สามารถเข้าถึงหรือใช้ได้
ซึ่งจะต้องทำการประกาศตัวแปรก่อนการใช้งานเสมอ และจะต้องประกาศไว้ในส่วนนี้เท่านั้น
ตัวแปรโปรแกรม (Statements)
เป็นส่วนที่อยู่ถัดลงมาจากส่วนตัวแปรภายใน
ซึ่งประกอบไปด้วยคำสั่งต่าง ๆ ของภาษา C และคำสั่งต่าง ๆ
จะใช้เครื่องหมาย ; เพื่อเป็นการบอกให้รู้ว่าจบคำสั่งหนึ่ง ๆ
แล้ว ส่วนใหญ่ คำสั่งต่าง ๆ ของภาษา C เขียนด้วยตัวพิมพ์เล็ก
เนื่องจากภาษา C จะแยกความแตกต่างชองตัวพิมพ์เล็กและพิมพ์ใหญ่หรือ
Case Sensitive นั่นเอง ยกตัวอย่างใช้ Test, test หรือจะถือว่าเป็นตัวแปรคนละตัวกัน นอกจากนี้ภาษา C ยังไม่สนใจกับการขึ้นบรรทัดใหม่
เพราะฉะนั้นผู้ใช้สามารถพิมพ์คำสั่งหลายคำสั่งในบรรทัดเดียวกันได้
โดยไม่เครื่องหมาย ; เป็นตัวจบคำสั่ง
ค่าส่งกลับ (Return Value)
เป็นส่วนที่บอกให้รู้ว่า
ฟังก์ชันนี้จะส่งค่าอะไรกลับไปให้กับฟังก์ชั่นที่เรียกฟังก์ชั่น
ซึ่งเรื่องนี้ผู้เขียนจะยกไปกล่าวในเรื่องฟังก์ชั่นอย่างละเอียดอีกทีหนึ่ง
หมายเหตุ (Comment)
เป็นส่วนที่ใช้สำหรับแสดงข้อความเพื่ออธิบายสิ่งที่ต้องการในโปรแกรม
ซึ่งจะใช้เครื่องหมาย /*และ */ ปิดหัวและปิดท้ายของข้อความที่ต้องการ
รูปที่ 2-2 แสดงการเขียนหมายเหตุหรือ Comment
ในลักษณะต่าง ๆ
โปรแกรมที่ 2 – 1 โปรแกรมแรกสำหรับคุณ
การตั้งชื่อ
การตั้งชื่อ (Identifier) ให้กับตัวแปร
ฟังก์ชันหรืออื่น ๆ มีกฎเกณฑ์ในการตั้งชื่อ ดังนี้
1. ตัวแรกของชื่อจะต้องขึ้นต้องด้วยตัวอักษรหรือเครื่องหมาย _
เท่านั้น
2. ตัวอักษรตั้งแต่ตัวที่ 2 สามารถเป็นตัวเลข
หรือเครื่องหมาย_ก็ได้
3. จะต้องไม่มีการเว้นวรรคภายในชื่อ แต่สามารถใช้เครื่อง_คั่นได้
4. สามารถตั้งชื่อได้ยาไม่จำกัด แต่จะใช้ตัวอักษรแค่ 31
ตัวแรกในการอ้างอิง
5. ชื่อที่ตั้งด้วยตัวอักษรพิมพ์ใหญ่และพิมพ์เล็ก
จะถือว่าเป็นคนละตัวกัน
6. ห้ามตั้งชื่อซ้ำกับคำสงวนของภาษา C
ตัวอย่างการตั้งที่ถูกและผิด
แบบที่ถูก
|
แบบที่ผิด
|
A
|
$sum
|
Student_name
|
Student Name
|
_SystemName
|
2names
|
A1
|
int
|
ชนิดข้อมูล
ในการเขียนโปรแกรมภาษา C นั้น
ผู้ใช้จะต้องกำหนดชนิดให้กับตัวแปรนั้นก่อนที่จะนำไปใช้งาน
โดยผู้ใช้จะต้องรู้ว่าในภาษา C นั้นมีชนิดข้อมูลอะไรบ้าง
เพื่อจะเลือกใช้ได้อย่างถูก
ต้องและเหมาะสม ในภาษา C จะมี 4 ชนิดข้อมูลมาตรฐาน ดังนี้
ชนิดข้อมูลแบบไม่มีค่า หรือ Void
Type (Void)
ข้อมูลชนิดนี้ จะไม่มีค่าและจะไม่ใช้ในการกำหนดชนิดตัวแปร
แต่ส่วนใหญ่จะใช้เกี่ยวกับฟังก์ชั่น ซึ่งจะขอยกไปอธิบายในเรื่องฟังก์ชั่น
ชนิดข้อมูลมูลแบบจำนวนเต็ม หรือ Integer
Type (int)
เป็นชนิดข้อมูลที่เป็นตัวเลขจำนวนเต็ม ไม่มีทศนิยม ซึ่งภาษา C
จะแบ่งข้อมูลชนิดนี้ออกได้เป็น 3 ระดับ คือ short
int,int และ long int ซึ่งแต่ละระดับนั้นจะมีขอบเขตการใช้งานที่แตกต่างกัน
ดังแสดงในตารางที่ 2-1
ชนิดข้อมูล
|
คิดเครื่อง
หมาย
|
ขนาด(ไบต์)
|
จำนวนบิต
|
ค่าน้อยที่สุด
|
ค่ามากที่สุด
|
Short int
|
คิด
ไม่คิด
|
2
|
16
|
-32,768
0
|
32,768
65,535
|
Int
(16 บิต)
|
คิด
ไม่คิด
|
2
|
16
|
-32,768
0
|
32,768
65,535
|
Int
(32 บิต)
|
คิด
ไม่คิด
|
4
|
32
|
-2,147,486,643
0
|
2,147,486,643
4,294,967,295
|
Long int
|
คิด
ไม่คิด
|
4
|
32
|
-2,147,486,643
0
|
2,147,486,643
4,294,967,295
|
ชนิดข้อมูลแบบอักษร หรือ Character
Type (char)
ข้อมูลชนิดนี้ก็คือ ตัวอักษรตั้งแต่ A-Z เลข 0-9
และสัญลักษณ์ต่าง ๆ ตามมาตรฐาน ACSII (American Standard
Code Information Interchange) ซึ่งเมื่อกำหนดให้กับตัวแปรแล้วตัวแปรนั้นจะรับค่าได้เพียง
1 ตัวอักษรเท่านั้น และสามารถรับข้อมูลจำนวนเต็มตั้งแต่ถึง 127
จะใช้ขนาดหน่วยความจำ 1ไบต์หรือ 8 บิต
ชนิดข้อมูลแบบทศนิยม หรือ Floating
Point Type (flat)
เป็นข้อมูลชนิดตัวเลขที่มีจุดทศนิยม ซึ่งสามารถแบ่งออกเป็น 3
ระดับ คือ float, double และ long
double แต่ละระดับนั้นจะมีขอบเขตที่แตกต่างกันในการใช้งาน
ดังแสดงในตารางที่ 2-2
ตารางที่ 2-2 แสดงรายละเอียดของชนิดข้อมูลแบบทศนิยม
ชนิดข้อมูล
|
ขนาด(ไบต์)
|
จำนวนบิต
|
ค่าที่น้อยที่สุด
|
float
|
4
|
32
|
-38
38
3.4-10 ถึง 3.4-10
|
double
|
8
|
64
|
-308
308
1.7*10 ถึง 1.7*10
|
long double
|
10
|
80
|
-4932
4932
3.4*10 ถึง 1.1*10
|
ตัวแปร
ตัวแปร คือ
ชื่อที่ใช้อ้างถึงตำแหน่งต่าง ๆ ในหน่วยความจำ ซึ่งใช้เก็บข้อมูลต่าง ๆ
ด้วยขนาดตามชนิดข้อมูล
การประกาศตัวแปร
การประกาศตัวแปรในภาษา C นั้นสามรถทำได้ 2
ลักษณะ คือ การประกาศตัวแปรแบบเอกภาพ หรือการประกาศตัวแปรแบบ Global
คือ ตัวแปรที่จะสามารถเรียกใช้ได้ทั้งโปรแกรม
และแบบที่สองการประกาศตัวแปรแบบภายใน หรือการประกาศตัวแปรแบบ Local ซึ่งตัวแปรแระเภทนี้จะใช้ได้ในเฉพาะฟังก์ชั่นของตัวเองเท่านั้น
#include<stdio.h>
int total; /*การประกาศตัวแปรแบบ Global */
main()
int price,money; /*การประกาศตัวแปรแบบ Local*/
…
รูปที่ 2-3 แสดงการประกาศตัวแปรแบบต่าง
ๆ
การกำหนดค่าให้กับตัวแปร
การกำหนดค่าให้กับตัวแปรนั้น
จะสามารถกำหนดได้ตั้งแต่ตอนที่ประกาศตัวแปรเลยหรือจะกำหนดให้ภายในโปรแกรมก็ได้
ซึ่งการกำหนดค่าจะใช้เครื่องหมาย = กั้นตรงกลาง
int total = 0;
ถ้ามีตัวแปรข้อมูลชนิดเดียวกัน ก็สามารถทำแบบนี้ได้
int total =0,sum
หรือ
int total =0,sum=0;
ถ้าเป็นการกำหนดภายในโปรแกรม
ซึ่งตัวแปรนั้นได้ประกาศไว้แล้วสามารถทำแบบนี้
total = 50;
หรือ
total = total+sum
หรือกำหนดค่าจาการพิมพ์ข้อมูลเข้าทางคีย์บอร์ด
scanf(“%d”,&total);
โปรแกรมที่ 2-2 การประกาศและใช้ตัวแปร
#include<stdio.h>
/*การประกาศตัวแปร Global*/
int sum = 0;
int main(void)
{
/*การประกาศตัวแปรแบบ Local */
int a;
int b;
int c;
/*คำสั่ง */
printf(“\nWelcome. This Program adds\n”);
printf(“threenumbers.Enter three numbers\n”);
printf(“in the form: nnn nnn nnn <retur>\n”);
scanf(“%d %d %d”,&a,&b,&c);
/* ทำการบวกค่าระหว่าง a,b และ c เข้าด้วยกันแล้วกำหนดค่าให้ sum*/
sum=a+b+c;
printf(“The total is: %d\n”,sum);
printf(“Thant you. Have a good day.\n”);
return 0;
ผลการทำงาน:
Welcome. This Program adds
Three numbers. Enter three number
In the form: nnn nnn nnn <return>
11 22 23
The total is: 56
Thank you. Have a good day.
การกำหนดชนิดข้อมูลแบบชั่วคราว
เมื่อผู้ใช้ได้กำหนดชนิดข้อมูลให้กับตัวแปรใด ๆ ไปแล้ว
ตัวแปรตัวนั้นจะมีชนิดข้อมูลเป็นแบบที่กำหนดให้ตลอดไป
บางครั้งการเขียนโปรแกรมอาจจะต้องมีความจำเป็นต้องเปลี่ยนชนิดข้อมูลของตัวแปรตัวนั้น
ซึ่งภาษาซี ก็มีความสามารถที่จะทำเช่นนั้นได้
รูปแบบ
([ชนิดข้อมูล])[ตัวแปร]
ตัวอย่าง
(float)a
(int)a
โปรแกรมที่ 2-3 แสดงการใช้ตัวแปรแบบชั่วคราว
#include<stdio.h>
int main(void)
float a= 25.3658;
printf(“Value of a : %\n”,a);
printf(“Value of a when set is integer : %d\n”,(int)a);
return 0;
ผลการทำงาน :
Value of a : 25.365801
Value of a when change is integer : 25
ชนิดข้อมูลแบบค่าคงที่ (Constants)
ชนิดข้อมูลประเภทนี้ ชื่อก็บอกอยู่ว่าเป็นชนิดข้อมูลแบบค่าคงที่
ซึ่งก็คือข้อมูลตัวแปรประเภทที่เป็น Constants ผู้ใช้จะไม่สามารถเปลี่ยนแปลงค่าของตัวแปรตัวนั้น
ในขณะที่โปรแกรมทำงานอยู่
รูปแบบ
Const[ชนิดข้อมูล][ตัวแปร]=[ค่าหรือ นิพจน์]
ตัวอย่าง
const folat a = 5.23;
const int b = a%2;
โปรแกรมที่ 2-4 การใช้ตัวแปรชนิดข้อแบบค่าคงที่
#include<stdio.h>
imt main(void)
const float pi = 3.14159;
float radius;
radius = 3;
printf(“Value of pi : %f\n”,pi);
printf(“Value of area : %f\n”,pi*(radius*radius));
return 0;
ผลการทำงาน:
Value of pi : 3.141590
Value of area : 28.274311
constant นั้นสามารถแบ่งออกได้ ดังนี้
Integer Constants เป็นค่าคงที่ชนิดข้อมูลแบบตัวเลขจำนวนเต็มไม่มีจุดทศนิยม
const int a = 5;
Floating-Point Constants เป็นค่าคงที่ชนิดข้อมูลแบบตัวเลขที่มีจุดทศนิยม
const float b = 5.6394;
Character Constants เป็นค่าคงที่ชนิดตัวอักษร
ซึ่งจะต้องอยู่ภายในเครื่องหมาย ‘’เท่านั้น
const char b = ‘t’;
String Constants เป็นค่าคงที่เป็นข้อความ
ซึ่งจะต้องอยู่ภายใต้เครื่องหมาย “”เท่านั้น
“”
“h”
“Hello world\n”
“HOW ARE YOU”
“Good Morning!”
โปรแกรมที่ 2-5 การใช้ตัวแปรชนิดข้อมูลแบบค่าคงที่แบบต่าง
ๆ
#includ<stdio.h>
int main(void)
{
const int a = 3; /*Integer Constats*/
const flat b = 3.14159; /*Floating – Point Constants*/
const cahr c = ‘P’; /*Character Constants*/
printf(“Value of a: %d\n”,a);
printf(“Value of b: %d\n”,b);
printf(“Value of c: %d\n”,c);
printf(“Good Bye”); /*String Constants*/
return 0;
}
ผลการทำงาน
Value of a : 3
Value of b : 3.141590
Value of c : P
Good Bye
Statements
statements
ในภาษา c คือ คำสั่งต่าง ไ
ที่ประกอบขึ้นจนเป็นตัวโปรแกรม ซึ่งในภาษา c นั้นได้แบ่งออกเป็น
6 แบบ คือ Expression Statement และ Compound
Statement ณ.ที่นี้จะมีด้วยกัน 2 แบบ
1.
Expression Statement หรือเรียกอีกอย่างหนึ่งว่า
Single Statement ซึ่ง Statement แบบนั้นจะต้องมีเครื่องหมาย; หลังจาก statement
เมื่อภาษา C พบเครื่องหมาย ; จะทำให้มันรู้ว่าจบชุดคำสั่งแล้ว แล้วจึงข้ามไปทำ Statement ชุดต่อไป
a = 2;
หรือ
printf(“x contains %d, y contains %d\n”,x,y);
Compound Statement คือ
ชุดคำสั่งที่มีคำสั่งต่าง ๆ รวมอยู่ด้านใน Block ซึ่งจะใช้เครื่องหมาย
{เป็นการเปิดชุดคำสั่ง และใช้} เป็นตัวปิดชุดคำสั่ง
ตัวอย่างที่เห็นได้ชัดเจนสำหรับ Statement แบบนี้ คือ
ตัวฟังก์ชั่น Main โดยทั่ว ๆ ไปในภาษา C Compound
Statement จะเป็นตัวฟังชั่น
ผังงาน
ผังงาน
(Flowchart) มีไว้เพื่อให้ผู้ใช้ออกแบบขั้นตอนการทำงนของโปรแกรมก่อนที่จะลงมือเขียนโปรแกรม
ซึ่งจะช่วยให้ผู้ใช้เขียนโปรแกรมได้ง่ายขึ้นและไม่สับสนซึ่งผังงานที่นิยมใช้มีมาตรฐานมากมายหลายแบบ
โดยมีสัญลักษณ์ของผังงานดังนี้
1.
Terminator
สัญลักษณ์แทนจุดเริ่มต้นและจุดสิ้นสุด
2.
Process
สัญลักษณ์กระบวนการต่าง ๆ เช่น การประกาศตัวแปร การบวก เป็นต้น
3.
Decision
สัญลักษณ์เงื่อนไข
4.
Data
สัญลักษณ์ติดต่อกับผู้ใช้โดยการรับข้อมูลหรือแสดงข้อมูล
5.
Manual Input
สัญลักษณ์การรับข้อมูลจากผู้ใช้
6.
Display
สัญลักษณ์การแสดงผลออกทางจอภาพ
7.
Predefined Process
สัญลักษณ์ระบุการทำงานย่อยหรือฟังก์ชั่นย่อย
8.
Connect
สัญลักษณ์จุดเชื่อม
9.
Arrow
สัญลักษณ์เส้นทางการดำเนินงาน
โดยการออกแบบผังงาน
จะมี 3 แบบ ดังนี้
1. แบบเรียงลำดับ จะเป็นลักษณะการทำงานที่เรียงกันไปเรื่อย
ๆ โดยไม่มีการวนซ้ำ ดังรูป
2. แบบทางเลือก จะเป็นลักษณะการทำงานที่มีทางเลือก
ซึ่งจะพบในเรื่องคำสั่งเงื่อนไข เช่น คำสั่ง if…else ดังรูป
3. แบบการทำงานซ้ำ จะเป็นลักษณะการทำงานที่วนการทำงานแบบเดิม
จนครบตามจำนวนที่ต้องการ ซึ้งจะพบในเรื่องคำสั่ง วนลูป เช่น คำสั่ง do….while
ดังรูป
ภาษาBasic
มี คนถามผมบ่อยๆ ว่า VB6 กับ VB.NET มันต่างกันยังไง? ผมคิดว่ามันจำเป็นจะต้องรู้ประวัติศาสตร์ก่อน
เพราะมันจะทำให้เรารู้ว่า ภาษามีพัฒนาการมาอย่างไร เริ่มต้นอย่างไร
ปัจจุบันเป็นอย่างไร แล้วจะทำให้เราลุ่มลึกกับภาษาที่เราชอบมากขึ้น
เริ่มกันที่จุดกำเนิดครับ
(ภาพ John George Kemeny ด้านขวา และ Thomas
Eugene Kurtz ด้านซ้าย ผู้คิดค้นภาษา BASIC)
คำว่า BASIC ย่อมาจากคำว่า Beginner's
All-purpose Symbolic Instruction Code ซึ่งถูกคิดค้นโดย John
George Kemeny และ Thomas Eugene Kurtz ตอนนั้นทั้งคู่ทำงานที่
Dartmouth College ในอเมริกา เมื่อปี ค.ศ. 1963 (พ.ศ. 2506) โดยมีวัตถุประสงค์เพื่อให้นักศึกษาที่ไม่มีพื้นฐานคอมฯ
หรือคณิตศาสตร์ ได้ใช้เพื่อสั่งงานคอมพิวเตอร์เมนเฟรม
(G.E.225) ได้ง่ายขึ้น โดยพัฒนามาจากภาษา FORTRAN II และภาษา ALGOL 60 รุ่นแรกของภาษาถูกเรียกว่า Dartmouth
BASIC
กฎ 8 ข้อ ในการออกแบบตัวแปลภาษา BASIC
ในยุคเริ่มต้น
1. ง่ายสำหรับผู้เริ่มต้นเขียนโปรแกรม
2. มีลักษณะภาษาแบบ general-purpose programming language หรือ domain-specific language ( DSL) เหมือนภาษา C
3. สามารถเพิ่มความสามารถขั้นสูง สำหรับผู้เชี่ยวชาญได้
4. ทำงานร่วมกันได้ (interactive)
5. มี error messages ที่เข้าใจง่าย
ไม่เชิงเทคนิค
6. ต้องทำงานอย่างรวดเร็วกับโปรแกรมขนาดเล็ก
7. ผู้ใช้ไม่ต้องเข้าใจเรื่องอุปกรณ์คอมพิวเตอร์ (computer
hardware)
8. ไม่ให้ผู้ใช้ติดต่อโดยตรงกับระบบปฏิบัติการ (operating
system)
ในช่วงแรกตัวแปลภาษา BASIC ออกแบบเป็น Compiler
ซึ่งเป็นที่นิยมอย่างแพร่หลาย ตั้งแต่ในโรงเรียนมัธยม
ไปจนถึงโรงงานอุตสาหกรรม แต่ในปี 1968 Edsger W. Dijkstra ก็เผยแพร่วิธีการเขียนโปรแกรมอย่างเป็นระเบียบ
ที่ถูกเรียกว่าการเขียนโปรแกรมแบบมีโครงสร้าง (Structured Programming) และพูดถึงการใช้คำสั่ง GOTO ในภาษา BASIC ว่าทำให้โครงสร้างโปรแกรมซับซ้อน ทำให้เกิดการปรับปรุงภาษาในช่วงหลังๆ
โครงสร้างภาษาAssembly
ตัวอย่างเครื่อง IBM System 360-370 Series
-Memory
-Data Format
-Instruction
-Machine Language
-Assembly Language
IBM
System 360 และ 370 Series
1.
Memory
8 bits = 1 Byte
4 bytes = 1 Word
(Fullword) (32 bits)
2 bytes = 1 Half
word (16 bits)
8 bytes = 1
Doubleword (64 bits)
การกำหนด Address ปกติจะเป็นแบบ Byte Addressable ขนาดของหน่วยความจำ
224Bytes = 16,777,216 B (166) การระบุตำแหน่งของหน่วยความจำ สำหรับข้อมูลที่จัดเก็บในแต่ละขนาด จะต้องระบุตำแหน่งแรก (ซ้ายสุดของกลุ่ม) ส่วนความยาวนั้นจะทราบภายหลังจากคำสั่งที่เรียกใช้ข้อมูลนั้นๆ โดยค่าตำแหน่งแรกจะต้องเป็นตัวเลขที่หารด้วย 2
หรือ 4 หรือ 8 ลงตัวตามแต่กรณีขนาดข้อมูลที่อ้างอิงถึงด้วย
Register ที่กำหนดให้นี้มีขนาด 32 บิต
แต่ใช้ระบุค่าตำแหน่งจริง (Absolute Address) เพียงแค่ 24
บิต
ส่วนที่เกี่ยวข้องกับการกำหนดค่าตำแหน่ง
1.
Base Register (ระบุตำแหน่งเริ่มต้น Start Address)
2.
Index Register (ระบุลำดับที่ของชุดข้อมูล Location Address)
3.
Offset or
Displacement (ระยะห่างจากจุดเริ่มต้น)
ประโยชน์ของการใช้
Base Register กับ Index
Register
Op-code
|
Argument
Register
|
Index
Register
|
Absolute Address
|
8 4 4 24 = 40 bits
Op-code
|
Argument
Register
|
Index
Register
|
Base
Register
|
Offset
|
8
4 4 4 12
= 32 bits
Memory
212
= 4,095 10
CPU
หน้าที่
* ควบคุม การทำงานของคอมพิวเตอร์
ทั้งหมด เช่น
-
ควบคุมลำดับการ
Execute ,Load Program , Memory
allocate
-
จัดสรรเวลาในการใช้อุปกรณ์
ทรัพยากรต่างๆ ของระบบ I/O ให้ทำงานอย่างมีประสิทธิภาพ
-
ทำให้ระบบสามารถทำงานได้อย่างต่อเนื่อง
-
ทำระบบ
Multi-Programming
-
การ
Interrupt เพื่อให้ติดต่อกับพนักงานควบคุมเครื่องได้
คำสั่งที่ทำงานใน
CPU แบ่งเป็น 5
กลุ่ม
-
คำสั่งทั่วๆไป
-
คำสั่งควบคุมระบบ
-
คำสั่ง
Input / Output
-
คำสั่งเกี่ยวกับเลขฐานสิบ
-
คำสั่งเลขทศนิยม
ใน CPU ก็จะมี Register
ไว้ช่วยงานต่างๆมากมาย เช่น
PSW
( Program Status Word ) 64 bits
Control
Register
General Purpose Register
Floating
– point Register
และ Register ที่ทำงานเกี่ยวกับเวลาของระบบทั้งหมด
เวลาเริ่มต้น เวลาสิ้นสุด วันเดือนปี
เวลาปัจจุบัน เป็นต้น
2.
Registers
2.1
General
– purpose Register 16 ตัว (# 0-15) @ 32 bits
ใช้สำหรับการเชื่อมโยงระหว่างการทำงานของหน่วยควบคุม หน่วยคำนวณและหน่วยความจำหลัก
และคำสั่งที่เกี่ยวข้องกับการคำนวณ การเปรียบเทียบ และตรรกะ มักจะใช้ Register เหล่านี้เก็บผลลัพธ์ไว้ชั่วคราวด้วย (Accumulator)
หน้าที่อีกประการคือ ถูกใช้เป็น Base Register เพื่อระบุตำแหน่งเริ่มต้นของ
block ในหน่วยความจำหลัก (ใช้ 24
bits) ได้แก่
หมายเลข 0 , 1 มักจะใช้ในการติดต่อของ I/O
Units
หมายเลข 2
–12 ใช้ทั่วไป
หมายเลข 13 , 14
, 15 ใช้ในการเรียก Subroutines
ต่างๆ
นอกจากนี้ยังมักจะถูกเรียกใช้เป็น Index Register ในการทำงานแบบ
Loop เพื่อระบุชี้ตำแหน่งข้อมูลตัวถัดไปด้วย
2.2 Floting – point Register 4 ตัว @ 64
bits (#0,2 ,4 ,6)
ใช้งานในการเก็บตัวเลขที่มีทศนิยม
2.3
Control Register 16 ตัว @ 32 bit (#0-15)
ถูกใช้งานเฉพาะอย่าง โดยแต่ละ bit ในแต่ละ Register
ก็จะมีความหมายในการทำงานเฉพาะอย่าง
การจัดการก็จะใช้คำสั่งในสภาวะเฉพาะด้วยการสั่ง LOAD CONTROL และ STORE CONTROL
Registers
Instruction
Registers
Working
Registers or General Registers
Special-purpose
Register
Memory
Address Register
Memory
Buffer Registers
Base
Registers
Index
Registers
Accumulators
Program
Register or Location Counter or Control Counter
Control
Registers or Program Status Registers
Condition
Code (CC)
ตัวอย่าง
Condition Code (Binary)(Decimal)
|
00
0
|
01
1
|
10
2
|
11
3
|
หลังจากทำงานกับคำสั่ง บวก,ลบ
ได้ผลลัพธ์ของคำสั่งเป็น
หลังจากทำงานกับคำสั่ง CLR
CLR R1,R2
|
=0
R1=R2
|
<0
R1<R2
|
>0
R1>R2
|
Overflow
-
|
หลังจากคำสั่งคูณ ,หาร
หลังจากคำสั่ง L,ST
|
ไม่มีการ set ค่าใน Condition
Code
|
คำสั่ง
Branch on Condition
รูปแบบที่ 1 BCR M1,M2
(Mi = Mask Value)
รูปแบบที่ 2 BC M1,D2(X2,B2)
การพิจารณาค่าของ
Mask กับ Condition
Code
ตำแหน่งของ
Mask
Bits ที่
ค่าตัวเลข (ฐานสิบ)
|
8
8
|
9
4
|
10
2
|
11
1
|
1. Mask
มีค่าเป็น 210
2.
Mask มีค่าเป็น 1210
|
0
1
|
0
1
|
1
0
|
0
0
|
ค่า
Condition Code กรณีที่จะเกิดการ
Branch
|
0
00
|
1
01
|
2
10
|
3
11
|
ตัวย่างเช่น
1. BC
2,LOOP
จะเกิดการ Branch ไปที่ LOOP ในกรณีที่ค่าใน
CC เป็น 210(10) เท่านั้น (หมายถึงผลลัพธ์การบวกมีค่ามากกว่าศูนย์ เป็นต้น)
2. BC
12,LOOP
จะเกิดการ Branch ไปที่ LOOP
ในกรณีที่ค่าใน CC เป็น 010(00)
หรือ 110(01)
เท่านั้น (หมายถึง
ผลลัพธ์คำนวณเป็นศูนย์หรือน้อยกว่าศูนย์ หรือ R1=R2 หรือ R1<R2
เป็นต้น)
Extended Mnemonic Machine Instruction Meaning
B
D2(X2,B2) BC 15,D2(X2,B2) กระโดดไม่มีเงื่อนไข
BR
R2 BCR 15,R2 “----------------------”
NOP
D2(X2,B2) BC 0,D2(X2,B2) ปรับค่าตำแหน่ง Alight
NOPR R2 BCR 0,R2 “--------------------------”
ตามหลังคำสั่งเปรียบเทียบค่า(Compare) (A:B)
BH D2(X2,B2) BC 2,D2(X2,B2) กระโดดถ้า A มากกว่า
BL D2(X2,B2) BC 4,D2(X2,B2) กระโดดถ้า A น้อยกว่า
BE D2(X2,B2) BC 8,D2(X2,B2) กระโดดถ้า A=B
BNH D2(X2,B2) BC 13,D2(X2,B2) กระโดดถ้า A ไม่มากกว่า
BNL D2(X2,B2) BC 11,D2(X2,B2) กระโดดถ้า A ไม่น้อยกว่า
BNE D2(X2,B2) BC 7,D2(X2,B2) กระโดดถ้า A ไม่เท่ากับ B
รวมทั้งรูปแบบ BCR ด้วยทุกคำสั่ง
ตามหลังคำสั่งคำนวณ(Arithmetic Instruction)
BO D2(X2,B2) BC 1,D2(X2,B2) กระโดดถ้าเกิด Overflow
BP D2(X2,B2) BC 2,D2(X2,B2) กระโดดถ้าผลลัพธ์เป็นบวก
BM D2(X2,B2) BC 4,D2(X2,B2) กระโดดถ้าผลลัพธ์เป็นลบ
BZ D2(X2,B2) BC 8,D2(X2,B2) กระโดดถ้าผลลัพธ์เป็นศูนย์
BNP
D2(X2,B2) BC 13,D2(X2,B2) “--------------------”ไม่เป็นบวก
BNM
D2(X2,B2) BC 11,D2(X2,B2) “--------------------”ไม่เป็นลบ
BNZ
D2(X2,B2) BC 7,D2(X2,B2) “--------------------”ไม่เป็นศูนย์
รวมทั้งรูปแบบ BCR ด้วยทุกคำสั่ง
ตามหลังคำสั่งตรวจสอบ
Mask(Test Under Mask Instruction)
BO D2(X2,B2) BC 1,D2(X2,B2) กระโดดถ้าทุก bit เป็น
1 หมด
BM D2(X2,B2) BC 4,D2(X2,B2) กระโดดถ้าปนคละกัน
BZ D2(X2,B2) BC 8,D2(X2,B2) กระโดดถ้าทุก bit เป็นศูนย์หมด
BNO
D2(X2,B2) BC 14,D2(X2,B2) กระโดดถ้าทุก bit ไม่เป็น1หมด
รวมทั้งรูปแบบ BCR ด้วยทุกคำสั่ง
* ถ้า Mask bits มีค่าเป็น
….(1111) หมายถึง
กระโดดโดยไม่มีเงื่อนไข ถ้ามีค่าเป็นศูนย์(0000) จะไม่มีการ Branch
แต่เป็นการปรับค่าของ Alignment bytes เท่านั้นเอง
3.
Data
Fixed-point
(Short Form)
0 1 15
Fixed-point (Long Form)
0 1 31 1 to
16 bytes Packed Decimal
0 4 8
0 4
8 12
Floating-point
(Short Form)
0 1 8 31
(Long
Form)
0 8 16
S หมายถึง Sign Bit => 1 bit หรือ 4 bit
D หมายถึง Binary Coded Decimal => 4 bits
Z หมายถึง Zone Code => 4 bits
C หมายถึง Characteristic of Exponent => 7 bits
F หมายถึง Fraction of Mantissa => 24 bits or 56
bits
Ch หมายถึง 1 character symbol => 8 bits
4. คำสั่ง Instructions
RR-format
0
8 12
15
0
8 12 16
20 31
0
8 12 16
20 31
0
8 16 20 31
0
8 16 20 32 36 47
0
8 12 16
20 32 36 47
SS-format
1
2
Machine
Instruction (IBM System/370)
กลุ่มที่
1 Load Instruction และ
store Instructions
Hexa code Mnemonic Format
of Instruction
op-code
58 L RX
48 LH RX
98 LM RS
18 LR RR
12 LTR RR
50 ST RX
40 STH RX
90 STM RS
กลุ่มที่ 2 คำนวณ
5A A RX
4A AH RX
1A AR RR
59 C RX
49 CH RX
19 CR RR
5D D RX
1D DR RR
5C M RX
1C MR RR
5B S RX
1B SR RR
กลุ่มที่ 3 Logical
55 CL RX
15 CLR RR
D2 MVC SS
92 MVI SI
8D SLDL RX
กลุ่มที่ 4 Branch and Link
47 BC RX
07 BCR RR
45 BAL RX
6.
Machine Language
binary Mnemonic
0101 1000 0010 0000 0001 0011 1101
1100 L 2,924(0,1)
op R1,D2(X2,B2)
58 2 0 1 39C
hexadecimal
B’0101 1000’
X’39C’
Absolute Relative
Location location Main Memory
48……. 0 …………………..
948…….. 900…………………
952……. 904…………………
956…… 908………………….
………. ……………………….
988……. 940………………….
*Program1*
Absolute Relative
Address Address Hexadecimal Mnemonic Instruction
48 0 58201388 L 2,904(0,1)
52 4 5A201384 A 2,900(0,1)
56 8 50201388 ST 2,904(0,1)
60 12 5820138C L 2,908(0,1)
64 16 5A201384 A 2,900(0,1)
68 20 5020138C ST 2,908(0,1)
. . . .
. . . .
. . . .
948 900 00000031 49
952 904 …… ……..
*Program2* (ให้ Register
1 มีค่าเป็น 48)
Absolute Relative
Address Address Mnemonic Instruction
48 0 L 2,904(0,1)
52 4 A 2,900(0,1)
56 8 ST 2,904(0,1)
60 12 L 2,0(0,1)
64 16 A 2,896(0,1)
68 20 ST 2,0(0,1)
72 24 L 2,8(0,1)
76 28 A 2,896(0,1)
80 32 ST 2,8(0,1)
84 36 BC 15,0(0,1)
. . .
. . .
. . .
944 896 4
948 900 49
952 904 ข้อมูล DATA
1
956 908 ข้อมูล DATA
2
. . .
. . .
. . .
0101 1000 0010
0000 0001 0011
1000 1000
bit .0 .8 12 16 20 31
. . . .
byte .48 .49 50 51
L 2,904 (0,1)
*Program
3*
Absolute Relative
Address Address Mnemonic Instruction
48 0 SR 4,4
50 2 L 2,904(4,1)
54 6 A 2,900(0,1)
58 10 ST 2,904(4,1)
62 14 A 4,896(0,1)
. . BC 15,2(0,1)
. . .
. . .
การวนรอบ (Looping)
Absolute Relative
Address Address Mnemonic Instruction
48 0 SR 4,4
50 2 L 2,904(4,1)
54 6 A 2,900(0,1)
58 10 ST 2,904(4,1)
62 14 A 4,896(0,1)
66 18 L 3,892(0,1)
70 22 S 3,888(0,1)
74 26 ST 3,892(0,1)
78 30 BC 2,2(0,1)
. . .
. . .
. . .
936 888 1
940 892 10
944 896 4
948 900 49
952 904 ข้อมูล
DATA 1
956 908 ข้อมูล
DATA 2
. . .
. . .
. . .
*Program
4*
Absolute Relative
Address Address Mnemonic Instruction
48 0 L 3,892(0,1)
52 4 SR 4,4
54 6 L 2,904(4,1)
58 10 A 2,900(0,1)
62 14 ST 2,904(4,1)
66 18 A 4,896(0,1)
70 22 BCT 3,6(0,1)
. . .
. . .
. . .
940 892 10
944 896 4
948 900 49
952 904 ข้อมูล
DATA 1
956 908 ข้อมูล
DATA 2
. . .
. . .
สรุป
*
Program 1 *-ง่าย
-ใช้ memory
มาก,ไม่ใช้ register ให้เป็นประโยชน์,ไม่ยืดหยุ่น
*Program
2* -ใช้ memory น้อยลง , Relocate มากขึ้น,ยืดหยุ่นมากขึ้น
-
ไม่ใช้
Registerให้เป็นประโยชน์,
impure procedure
*Program
3* - ใช้
memory น้อยลง,ใช้ Register มากขึ้น, pure มากขึ้น
- ถ้านับจำนวนรอบ
ต้องเปลี่ยนใหม่ กำหนดใหม่ทุกครั้ง
*Program
4* - ยืดหยุ่นมากขึ้น, pure procedure(Re-entrance Code)
7.Assembly
Language
1.
Machine Instruction (Machine Op-code)
2.
Assembly Instruction (Pseudo Op-code)
3.
Macro Instruction
ถ้าแบ่งตามหน้าที่
จัดแบ่งได้ดังนี้
-
Information Move เช่น MVC (Move Character)
-Arithmetic Instruction and Logical เช่น
A(Addition)
S(Subtraction)
M(Multiply)
D(Division)
AND
OR
NOR(Negative
OR)
-Comparison
Instruction เช่น CR(Compare
Register)
C(Compare)
CLC(Compare
Logical Character)
CLI(Compare Logical Immediate)
-Transfer
of Control Instruction เช่น
* มีเงื่อนไข
ตรวจสอบจาก Condition Code ก่อน
เช่น BC(Branch on condition)
BCT(Branch
on Count)
BNZ(Branch
not zero)
*ไม่มีเงือนไข
B(Branch)
-Input/Output Instruction ส่วนใหญ่เป็น Macro
Instruction
เช่น
FILE PRINT
OPEN
CLOSE
CNTRL ควบคุมแป้นพิมพ์ให้เว้นบรรทัด ขึ้นหน้าใหม่
คำสั่ง
Assembler Instructions หรือ Pseudo-op Instruction ที่มักจะเขียนในโปรแกรมแอสเซมบลี
1.
คำสั่งกำหนดลักษณะข้อมูล
คำสั่ง
DC
(Define Constant)
DS
(Define Storage)
2.
คำสั่งเกี่ยวกับชุดคำสั่งหรือโปรแกรม
START
CSECT (Code Section)
DSECT (Data Section)
ENTRY
EXTRN (External)
3.
คำสั่งเกี่ยวกับ
Base Register
คำสั่ง USING
DROP
4.
คำสั่งควบคุม
ORG (Set location counter)
EQU (Equivalence)
LTORG (Literal Origin)
CNOP (Condition No Operation)
END
5.
คำสั่งที่เกี่ยวข้องกับแมคโคร
MACRO
MEXIT
MEND
6.
คำสั่งเงื่อนไข
ACTR (Conditional Assembly Loop
Counter)
AGO (Unconditional Branch)
AIF (Conditional Branch)
SETA (Set Arithmetic Variable
Symbol)
SETB (Set Binary Variable Symbol)
SETC (Set Character Variable
Symbol)
7.
คำสั่งควบคุมการพิมพ์
TITLE (Identity Assembly Output)
EJECT (Start new page)
SPACE (Space Listing)
PRINT (Print optional Data)
โครงสร้างโปรแกรม Assembly
รูปแบบบรรทัดคำสั่ง
·
ที่
Col.1 จะถือว่าเป็น Comment
Line Col.72(ใส่อะไรที่ไม่ใช่ blank) จะต่อบรรทัดโดยเริ่มต้นต่อที่
Col.16 เป็นต้นไป
สามารถใช้รูปแบบที่ต่างไปจากนี้ก็ได้
โดยใช้ blank เป็นตัวคั่น แต่ Name ต้องเริ่มต้นที่
Col.1 เสมอ และโดยใช้คำสั่ง ICTL
NAME มีหลักเกณฑ์การตั้งชื่อ ดังนี้
1.
ตัวแรกของชื่อต้องเป็น A-Z หรือ @ # $
2.
ตัวถัดไปเป็น
A-Z หรือ 0-9 ก็ได้
แต่ชื่อหนึ่งๆยาวได้ไม่เกิน
8 ตัวอักขระ
3.
ตัวแรกของชื่อต้องเริ่มต้นที่
Col.1 เสมอ
4.
ไม่มีช่องว่างหรือสัญลักษณ์พิเศษอื่นๆภายในชื่อ
PRINT
NOGEN pseudo-op สั่งไม่ให้พิมพ์ชุดของคำสั่งที่ดึงมาจาก Macro Library เพื่อให้สะดวกต่อการตรวจสอบโปรแกรม
EOJ
Macro Instruction สั่งหยุดการ
execute เพื่อส่ง Control กลับ O.S.
BALR
Machine-op สั่งเก็บค่า
address ของคำสั่งถัดไปไว้ใน Register
หาก operand ตัวที่ 2
เป็น ศูนย์ จะไม่มีการ Branch ไปที่ใด
USING
pseudo-op แจ้งการใช้
Base Register
* หมายถึง Current Location Counter
ตัวอย่าง
โปรแกรมภาษาแอสแซมบลีของ IBM
TEST START
BEGIN BARL 15,0
USING BEGIN+2,15
SR 4,4
L 3,TEN
LOOP L 2,DATA(4)
A 2,FORTY9
ST 2,DATA(4)
A 4,FOUR
BCT 3,LOOP
BR 14
TEN DC F’10’
FOUR DC F’4’
FORTY9 DC F’49’
DATA DC F’1,3,3,3,3,4,5,8,9,0’
END
ตัวอย่าง
การระบุค่าคงที่
(Literals) ลงในส่วนของคำสั่งในโปรแกรม
TEST START 0
BEGIN BALR BASE,0
USING BEGIN+2,BASE
SR 4,4
L 3,=F’10’
LOOP L 2,DATA(4)
A 2,=F’49’
ST 2,DATA(4)
A 4,=F’4’
BCT 3,*-16
BR 14
LTORG
DATA DC F’1,3,3,3,3,4,5,8,9,0’
BASE EQU 15
END
การเตรียมเนื้อที่เก็บข้อมูล
(Define Storage)
รูปแบบคำสั่ง
name
DS dtLn,dtLn,…
เมื่อ
name เป็นชื่อบริเวณที่จะจองเนื้อที่สำหรับจัดเก็บข้อมูล
d จำนวนครั้งที่จะกำหนด เป็นเลขจำนวนเต็ม
t ชนิดของข้อมูลที่จะนำมาจัดเก็บ มีดังนี้
รหัส ชนิดข้อมูล Alignment ความยาว : หน่วย(bytes)
C เก็บเป็น Character byte -
X เก็บเป็นเลขฐานสิบหก byte -
B เก็บเป็นเลขฐานสอง byte -
F เก็บเป็นเลขจำนวนเต็ม(ยาว) word(4) 4
H เก็บเป็นเลขจำนวนเต็ม(สั้น) halfword(2) 2
E เก็บเป็นเลขทศนิยม(สั้น) word(4) 4
D เก็บเป็นเลขทศนิยม(ยาว) doubleword(8) 8
L เก็บเป็นเลขทศนิยมยาวเป็นพิเศษ doubleword(8) 16
P เก็บเป็น packed decimal byte -
Z เก็บเป็น zoned decimal byte -
A เก็บเป็นค่าของ address แทน(ยาว) word 4
Y เก็บเป็นค่าของ address (สั้น) halfword 2
S เก็บเป็นค่าของ Base Reg.+offset halfword 2
V เก็บเป็นค่าของ address ภายนอก word 4
Q เก็บเป็นค่า external dummy section offset word 4
L เพื่อแสดงถึง Length ความยาวของเนื้อที่ที่ต้องการจอง
N จำนวน byte ที่ต้องการเตรียมจองไว้
หมายเหตุ การจอง(Define Storage) ข้อมูลแบบ C,X สามารถจองได้มากที่สุดไม่เกิน 65,535 bytes
ตัวอย่าง
INAREA DS 50L80
HEXNUM DS XL15
TOTAL DS F
AMNT DS 5H
QUOTIENT DS BL4
REMAINDR DS BL4
การกำหนดค่าคงที่
(Define Constants)
รูปแบบคำสั่ง
name DC dtLn’constant
value’
เมื่อ
name เป็นชื่อบริเวณหรือตำแหน่งที่จัดเก็บค่าคงที่(Symbolic Address)
d จำนวนครั้งที่จะกำหนดค่าคงที่นั้นๆ(จำนวนเต็ม)
t ชนิดข้อมูลค่าคงที่ที่จะกำหนด
ใช้เช่นเดียวกันกับคำสั่ง DS
L เพื่อแสดงถึงความยาวของเนื้อที่ที่ต้องการจัดเก็บค่าคงที่
n จำนวน bytes ที่จะถูกใช้จัดเก็บค่าคงที่
หมายเหตุ *
d และ Ln ไม่ต้องระบุก็ได้
* การจองแบบ C
และ X จองเนื้อที่ได้สูงสุดไม่เกิน 256
ไบท์
*ค่าคงที่ที่เป็นเครื่องหมาย
‘ หรือ &
ต้องเขียนสองตัวติดกัน จะแทนเครื่องหมาย
ดังกล่าวให้หนึ่งตัว
ตัวอย่าง
MESSAGE DC CL10’TAPE
ERROR’
PTOT DC PL3’12345’
TOTAL DC F’1046’
CODE DC CL4’ABCD’
AMNT DC XL4’42’
คำสั่ง Load
จะไปอ่านข้อมูลมาจากหน่วยความจำหลักที่ตำแหน่ง
=C(X2)+C(B2)+D2 ความยาว
4 bytes เพื่อนำมาจัดเก็บไว้ที่ register หมายเลข R1
ให้ไปศึกษาเพิ่มเติมคำสั่งต่อไปนี้
คำสั่ง Load
LR R1,R2 RR-format
คำสั่ง Load
Address
LA R1,D2(X2,B2) RX-format
คำสั่ง Load
Halfword
LH R1,D2(X2,B2) RX-format
คำสั่ง Load
Multiple
LM R1,R3,D2(B2) RS-format
คำสั่ง Load
and Test (c)
LTR R1,R2 RR-format
คำสั่ง Load
Complement (c)
LCR R1,R2 RR-format
คำสั่ง STORE
รูปแบบ
RX-format
นำค่าข้อมูลความยาว fullword 32 bits จาก
register R1 ไปจัดเก็บบันทึกลงในหน่วยความจำหลักที่ตำแหน่งเป็น =
C(X2)+C(B2)+D2
ให้ไปศึกษาเพิ่มเติมคำสั่งต่อไปนี้
คำสั่ง Store Character
STC R1,D2(X2,B2)
คำสั่ง Store Halfword
STH R1,D2(X2,B2)
คำสั่ง Store Multiple
STM R1,R3,D2(B2)
โครงสร้างโปรแกรมภาษาจาวา
โครงสร้าง ภาษา
Java
(Java Structure)
โครงสร้าง ภาษา Java (Java Structure)
1. เครื่องหมาย ในการควบคุม Structure
1.1 Comment คือข้อความที่แทรกเข้าไปในโปรแกรม
แต่ไม่มีผลต่อการทำงานของโปรแกรม เช่นในกรณีที่เราต้องการอธิบาย Source code ไว้ใน โปรแกรม
วิธีการคือ
- comment ทีละ บรรทัด ใช้เครื่องหมาย // ตามด้วยข้อความที่ต้องการ comment
เช่น
//comment comment
- comment แบบครอบทั้งข้อความ ใช้เครื่องหมาย /* ข้อความที่ต้องการ comment
*/ เช่น
/*
Comment
Comment
*/
1.2 Keyword คือคำที่ถูกกำหนดไว้ใช้เองแล้วในภาษา Java ไม่สามารถนำมาใช้ในการตั้งชื่อภายใน
โปรแกรมได้ ตัวอย่างเช่น class,boolean,char เป็นต้น
1.3 Identifiers คือชื่อที่ผู้เขียนตั้งขึ้นมา
เพื่อใช้แทนอะไรก็ได้ไม่ว่าจะเป็น method
,ตัวแปร หรือ class ชื่อที่ถูกต้องควรประกอบด้วย
ตัวอักษร ,ตัวเลข ,_,$ และจะต้องขึ้นต้นด้วย
ตัวอักษรเท่านั้น
1.4 Separators คือ อักษร หรือ เครื่องหมายที่ใช้แบ่งแยกคำในภาษา
มีดังต่อไปนี้
- เครื่องหมาย () ใช้สำหรับ
1. ต่อท้ายชื่อ method ไว้ให้ใส่ parameter
เช่น private void hello( );
2. ระบุเงื่อนไขของ if ,while,for ,do
เช่น if ( i=0 )
3. ระบุชื่อชนิดข้อมูลในการ ทำ casting
เช่น String a=( String )x;
- เครื่องหมาย{ }ใช้สำหรับ
กำหนดขอบเขตของ method แล class
เช่น class A{
}
Private void hello(){
}
2. กำหนดค่าเริ่มต้นให้ กับตัวแปร Array
เช่น String
a[]={"A","B","C"};
- เครื่องหมาย [ ] ใช้สำหรับ
1. กำหนดตัวแปรแบบ Array
เช่น String a[ ];
2. กำหนดค่า index ของตัวแปร array
เช่น a[ 0 ]=10;
- เครื่องหมาย ; ใช้เพื่อปิดประโยค
เช่น String a ;
- เครื่องหมาย , ใช้สำหรับ
1. แยกชื่อตัวแปรในประโยค
เช่น String a , b , c;
- เครื่อง หมาย . ใช้สำหรับ
1. แยกชื่อ package,subpackage และชื่อ class
เช่น package com.test.Test1;
2. ใช้เพื่อเรียกใช้ ตัวแปร หรือ method ของ Object
เช่น object.hello();
AA
โครงสร้างโปรแกรมภาษาCobol
ภาษาโคบอล
จัดเป็นภาษาระดับสูง(High - Level Language) ซึ่งคำว่า COBOL ย่อมาจากคำว่า "Common
Business Oriented Language" ซึ่งภาษาโคบอล
เป็นภาษาที่ถูกพัฒนาขึ้นเพื่อใช้งานด้านการประมวลผลในทางธุรกิจโดยเฉพาะ
เป็นภาษาที่มีความใกล้เคียงกับภาษาอังกฤษมากที่สุด ซึ่ง Source Program สามารถในไปใช้เป็นเอกสารประกอบโปรแกรมได้
เพราะมีความละเอียดพอที่จะอ่านโปรแกรมได้อย่างเข้าใจ ภาษาโคบอลเป็นภาษาที่ไมเหมาะสำหรับผู้ที่เริ่มศึกษาคอมพิวเตอร์ศาสตร์
เนื่องจากเป็นภาษาที่ค่อนข้างจะยาก และมีกฏเกณฑ์ต่าง ๆที่ยุงยากอยู่มิใช้น้อย
ผู้ที่ต้องการจะศึกษาการเขียนโปรแกรมภาษาโคบอล
ควรจะมีความรู้ในเรื่องของการประมวลผลข้อมูลเป็นอย่างดี
และจะต้องศึกษาหรือมีความรู้พื้นฐานทางด้านคอมพิวเตอร์ศาสตร์อยู่มากพอสมควร
ภาษาโคบอลได้ถือกำเนิดขึ้นเมื่อปี
ค.ศ.1959 โดยได้มีการร่วมมือกันจัดตั้งคณะกรรมการขึ้นชุดหนึ่งให้ชื่อว่า
CODASYL : Conference On DAta SYstems Languages ซึ่งมีทั้งภาครัฐบาล
และภาคเอกชนกลุ่มผู้ผลิตเครื่องคอมพิวเตอร์ในยุคนั้น
ซึ่งได้ร่วมมือกันพัฒนาขึ้นเพื่อให้สามารถนำมาใช้กัน
และให้เหมาะสมกับการประมวลผลข้อมูลทางด้านธุรกิจ ซึ่งได้ทำงานสรุปเป็นผลสำเร็จในปี
ค.ศ. 1960 และให้ชื่อภาษาที่ได้สร้างขึ้นใหม่นี้ว่า "COBOL-60"
และต่อมาภายหลังก็ได้มีการปรับปรุงแก้ไขพัฒนาภาษาโคบอลให้ทันต่อยุคต่อเหตุการณ์
ซึ่งมีการแก้ไขปรับปรุงขึ้นในปี ค.ศ. 1961 ซึ่งเรียกว่า
"COBOL-61" ต่อมาได้มีการปรับปรุงแก้ไขเพิ่มเติมขึ้นอีกเล็กน้อย
ในปี ค.ศ. 1963 และต่อมาในปี ค.ศ. 1965 และต่อมาในปี ค.ศ. 1968 ภาษาโคบอลได้ถูกยกระดับไห้เป็นภาษามาตราฐาน
โดยสถาบัน The American National Standards Institute : ANSI โดยกำหนดภาษาโคบอลที่มีใช้กันอยู่ในขณะนั้นให้เป็นมาตราฐานเป็นอย่างเดียวกัน
โดยแยกออกเป็นหลายระดับ และให้ยึดถือ COBOL-65 เป็นหลัก
การใช้ภาษาโคบอลได้รับความนิยมแพร่หลายขึ้นในปี ค.ศ. 1970 เนื่องจากภาษาโคบอลได้มีการกำหนดความเป็นมาตราฐานขึ้น
และได้มีการพัฒนาภาษาไปพร้อม ๆ กับการพัฒนาตัว Compiler ให้มีประสิทธิภาพมากยิ่งขึ้น
ในการเขียนโปรแกรมภาษาโคบอลเราจะแบ่งออกเป็นส่วน
ๆ ดังนี้
1.
ส่วนประกอบของโปรแกรม
ภาษาโคบอล
2.
สัญลักษณ์
ที่ใช้ในภาษาโคบอล
3.
ประเภทของคำ
4.
ตัวแปร
และ ค่าคงที่
5.
แบบฟอร์ม
สำหรับการเขียนโปรแกรม COBOL (COBOL CODING FORM)
6.
การใช้เครื่องหมายวรรคตอน