วันอาทิตย์ที่ 16 กุมภาพันธ์ พ.ศ. 2557

ภาษาธรรมชาติ (Natural Language)

 เป้าหมายหนึ่งของปัญญาประดิษฐ์ คือ การสร้างโปรแกรมที่สามารถเข้าใจภาษามนุษย์ ไม่เพียงแต่เข้าใจที่จะสามารถเข้าใจภาษาธรรมชาติซึ่งดูเหมือนจะเป็นสิ่งหนึ่งที่แสดงความฉลาดของมนุษย์แต่ยังสร้างความสำเร็จในการเพิ่มความสามารถ  และเพิ่มประสิทธิภาพของเครื่องคอมพิวเตอร์อีกด้วย (Luger and Stubblefield,1993,p.17)

    ภาษาธรรมชาติจึงเป็นการประยุกต์ใช้ปัญญาประดิษฐ์ เพื่อที่ให้สามารถทำความเข้าใจภาษามนุษย์โดยคอมพิวเตอร์ ซึ่งเกี่ยวกับการติดต่อสื่อสารด้วยภาษาคอมพิวเตอร์ของมนุษย์ เป็นการประยุกต์ใช้ภาษาศาสตร์และเครื่องคอมพิวเตอร์เข้าด้วยกัน  โดยจะหาวิธีให้คอมพิวเตอร์สามารถเข้าใจความหมายของประโยค เข้าใจเรื่องของคำ  และความหมายของคำ หลักไวยากรณ์ของ  ประโยค ภาษาธรรมชาติจริง ๆ   ล้วนเป็นภาษาที่ยอมให้คอมพิวเตอร์รับคำสั่งโดยไม่คำนึงถึงรูปแบบหรือหลักไวยากรณ์ของภาษา เหมือนกับโปรแกรมภาษาอื่นๆ ที่ต้องการมีขั้นตอนในการใช้คำสั่ง  เช่น  การใช้คำสั่งให้เครื่องจักรทำงาน การแปลภาษาด้วย
    

    คอมพิวเตอร์เป็นต้นภาษาธรรมชาติเป็นภาษาที่มนุษย์ใช้ในชีวิติประจำวัน เป็นภาษาที่มีการพัฒนามาตั้งแต่อดีต และมีการ เปลี่ยนแปลงไปตามสภาพแวดล้อมและสภาพสังคมในความเป็นจริงในภาษาธรมชาติยังมีข้อจำกัด การใช้ภาษาธรรมชาติยังคงค่อนข้างที่จะเป็นภาษาง่ายไม่ทันสมัย   ภาษาธรรมชาติที่ใช้ทางด้านธุรกิจส่วนใหญ่ได้ถูกออกแบบ เพื่อให้ผู้ใช้ติดต่อกับฐาน ความรู้หรือระบบผู้เชี่ยวชาญได้ภาษาธรรมชาติจึงเป็นภาษาคอมพิวเตอร์เป็นโปรแกรมภาษณาที่มีจุดประสงค์ให้ผู้ใช้สามารถใช้เครื่องคอมพิวเตอร์ได้ด้วยคำสั่งที่เป็นภาษาที่ใช้กันทั่ว ๆ ไป ไม่ต้องมีรูปแบบกฎเกณฑ์เหมือนกับโปรแกรมภาษาระดับสูง ที่ใช้กันอยู่ แต่ในทุกวันนี้ก็ยังไม่มีภาษาธรรมชาติที่แท้จริง (pure natural language)อย่างไรก็ตามภาษาธรรมชาติก็นับว่าเป็น ประโยชน์ต่อผู้ใช้และผู้ใช้ก็ยังคงมีความพยายามพัฒนาภาษาธรรมชาติให้เป็นภาษาธรรมชาติที่แท้จริง เพื่อผู้ใช้สามารถติดต่อกับ ระบบคอมพิวเตอร์ได้ง่ายขึ้นให้ผุ้ใช้ด้านสารสนเทศที่ต้องการโดยผู้ใช้สามารถฝึกทักษะของการใช้ภาษาที่ง่ายขึ้น ทำให้เขียนง่ายขึ้น  ใช้คำสั่งง่ายไม่ต้องมีรูปแบบคำสั่ง ไม่ต้องมีการฝึกใช้คำสั่งภาษาธรรมชาติเหมาะกับงานเฉพาะกิจ (ad hoc) หรืองานเฉพาะอย่าง ที่สารสนเทศค่อนข้างจำกัด

ภาษาโคบอล (Cobal Language)

            ภาษาโคบอล จัดเป็นภาษาระดับสูง(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. การใช้เครื่องหมายวรรคตอน
1.ส่วนประกอบของโปรแกรม COBAL
IDENTIFICATION DIVISION
  • ชื่อโปรแกรม
  • ชื่อผู้เขียนโปรแกรม
  • วันที่เขียนโปรแกรม
ENVIRONMENT DIVISION
  • รายละเอียดของตัวเครื่อง(CONFIGURATION SECTION)
  • รายละเอียดสิ่งที่ใช้ในการบันทึกข้อมูล(INPUT/OUTPUT SECTION)
DATA DIVISION
  • รายละเอียดของแฟ้มข้อมูล(FILE SECTION)
  • รายละเอียดของข้อมูลอื่น ๆ(WORKING-STORAGE SECTION)
  • รายละเอียดของข้อมูลที่รับมาจากโปรแกรมอื่น ๆ(LINKAGE SECTION)
  • รายละเอียดของข้อมูลที่ให้แสดงบนจอภาพ
PROCEDURE DIVISION
  • PARAGRAPH 1
  • PARAGRAPH 2
  • PARAGRAPH 3-------[STATEMENT I;I' = 1(N)1
           ไดอะแกรมแสดง โครงสร้างโปรแกรมภาษาโคบอล จากไดอะแกรม ที่แสดงโครงสร้างของโปรแกรมภาษาโคบอลจะเห็นว่า ได้แบ่งตัวโปรแกรมออกเป็น 4 ส่วน ในแต่ละส่วนเราเรียกว่า Division
ในแต่ละ Division มีชื่อดังต่อไปนี้

  • IDENTIFICATION DIVISION.
  • ENVIRONMENT DIVISION.
  • DATA DIVISION.
  • PROCEDURE DIVISION.
IDENTIFICATION DIVISION เป็น Division หรือส่วนที่ใช้ในการแสดงรายละเอียดของตัวโปรแกรม ชื่อของผู้เขียนโปรแกรม วันที่เริ่มเขียนโปรแกรม วันที่แปลโปรแกรม(Compiler) และที่สำคัญบอกว่าโปรแกรมนี้ชื่ออะไร
ENVIRONMENT DIVISION เป็น Division หรือส่วนที่ใช้ในการแสดงรายละเอียดของตัวโปรแกรมเกี่ยวกับตัวเครื่องคอมพิวเตอร์ที่ใช้ในการเขียนโปรแกรม หรือสั่งให้โปรแกรมทำงาน และบอกให้ทราบชนิดของ Input/Output Devision ที่จะนำมาใช้กับโปรแกรมนี้
DATA DIVISION เป็น Division หรือส่วนที่ใช้ในการแสดงรายละเอียดลักษณะของข้อมูลทุก ๆ ตัวที่นำมาเกี่ยวข้องกันกับโปรแกรมนี้ทั้งหมด ไม่ว่าจะเป็นข้อมูลที่เป็ฯ Input หรือ Output หรือผลลัพธ์ที่เกิดจากการประมวลผล หรือผลลัพธ์จากการทำงานของโปรแกรมนี้ โดยจะแสดงโครงสร้างของข้อมูลอย่างละเอียด
PROCEDURE DIVISION เป็น Division หรือส่วนที่ใช้ลำดับขั้นตอนของการทำงาน หรือของการประมวลผลข้อมูลโดยโปรแกรมชุดนี้ และใน Division นี้เราจะเขียนขึ้นตามผังโปรแกรมที่เราได้เขียนขึ้นในขั้นตอนแรกก่อนลงมือเขียนโปรแกรมนี้ ภายใน Division นี้จะแตกต่างไปจาก 3 Division แรกที่ได้กล่าวมา โดยจะมีการคำนาณ หรือมีคำสั่งต่าง ๆ ที่สั่งให้เครื่องคอมพิวเตอร์ทำงาน เพื่อให้ได้ผลลัทธ์ออกมาตามที่เราต้องการ
นอกจากภาษาโคบอลได้ถูกจัดแบ่งออกเป็นส่วนใหญ่ ๆ (Division) แล้ว ภายในแต่ละ Division ยังถูกแบ่งออกเป็น Section ย่อย ๆ ได้อีก เช่น ภายใน Environment Division จะต้องมีอย่างน้อย 2 Section คือ Configuration Section และ Input-Output Section และภายใน Data Division จะมี File Section และ Working-Storage Section ส่วนภายใน Procedure Division จะมี Section เท่าไหร่ก็ได้ หรือภายในส่วนของ Identification Division ไม่มี Section อยู่เลย
นอกจากนี้ภายในแต่ละ Section จะมี Paragraph แตกย่อยลงไปอีก ซึ่ง Paragraph เป็นส่วนประกอบภายใน Section ในทุก Section และภายใน Section จะต้องมี Paragraph อย่างน้อย 1 Paragraph แต่ถ้าหากว่าภายใน Division ใดไม่ได้แบ่งส่วนประกอบออกเป็น Section ให้ถือว่า Paragraph นั้นเป็นส่วนประกอบโดยตรงของภายใน Division นั้น
Sentence เป็นรูปของประโยคภายในของถาษาโคบอล ซึ่งมีลักษณะคล้ายกับประโยคภายในภาษาอังกฤษ ซึ่งภายในประโยค หรือ Sentence นี้ต้องมีคำกริยา (verb) อย่างน้อย 1 คำ Sentence ภายในภาษาโคบอลนั้นจะต้องจบลงด้วย"."(Period)
Statement คือกลุ่มของตัวเลข กลุ่มของตัวอักษร และรวมถึงสัญลักษณ์พิเศษต่าง ๆ ซึ่งนำมาประกอบกันให้ได้ความหมายเป็นคำสั่งตามรูปแบบเงื่อนไขที่ภาษากำหนดขึ้นให้ใช้(Reserved Words) โดยอาจจะมีการผสมอักระกันเป็น 1 Statement แล้วนำมาผูกกันเป็นกลุ่มของคำสั่ง เพื่อสั่งให้เครื่องคอมพิวเตอร์ทำงานให้ได้ผลลัพธ์ตามที่ต้องการ
Clause คือกลุ่มของ Characters (อักขระ) และ Words เพื่อใช้สำหรับอธิบายถึง Entry ภายในโปรแกรมนั้น ๆ
Word คือกลุ่มของ Characters ซึ่งจะต้องมีอย่างน้อย 1 ตัวอักขระขึ้นไป ซึ่งโครงสร้างของ Word ได้อธิบายไว้แล้วข้างต้น
Character ตัวอักขระ เป็นหน่วยที่เล็กที่สุดในโปรแกรมภาษาทางคอมพิวเตอร์ ดูรายละเอียดภายในหัวข้อเรื่อง สัญลักษณ์ในภาษา COBOL

2. สัญลักษณ์ในภาษา COBAL มี 51 ตัว
Character (อักขระ) หมายถึง ตัวเลขและเครื่องหมายต่าง ๆ ที่เครื่องคอมพิวเตอร์รับได้ในรูปของ ASCII CODE หรือ เลขฐาน 16 (แล้วแต่ระบบการเก็บข้อมูล ภายในหน่วยความจำของแต่ละเครื่องฯ) ซึ่งใช้ประกอบขึ้นเป็นคำ (Word) ในการเขียนเป็นภาษาโปรแกรม ซึ่งประกอบด้วย
  • ชุดอักษร(Alphabetic) "A...Z"
  • ชุดตัวเลข(Numeric) "0..9"
  • ชุดสัญลักษณ์พิเศษ(Special Character){+ - * / . ** $ * > < = ( ) " ' ; _ }
2.1 ชุดอักษร(Alphabetic) "A...Z" ใช้ในการสร้าง (Word) เพื่อตั้งชื่อให้กับตัวแปร(Variable Name Identifier) และตั้งชื่อให้กับแฟ้มข้อมูล (Identification ,Program Name, Program ID) ในโปรแกรมภาษาโคบอล โดยจะตั้งชื่อให้ซ้ำกับ Reserved Words ไม่ได้ และจะตั้งชื่อตัวแปรเกิน 30 ตัวอักษรไม่ได้ และ ตั้งชื่อของแฟ้มข้อมูลทุกประเภทที่ใช้ในการเขียนโปรแกรมภาษาโคบอล เกิน 8 ตัวอักษรไม่ได้ และในการติดตั้งชื่อแฟ้มข้อมูล หรือตั้งชื่อให้กับตัวแปร อาจจะมีตัวอักขระปะปนตัวเลขก็ได้ แต่จะใช้ตัวอักขระพิเศษมาผสมด้วยไม่ได้ จะอนุโลมให้ใช้ "_"(Hyphen) ได้เฉพาะในภาษาโคบอลเพียงเท่านั้น และในการตั้งชื่อให้กับตัวแปร หรือ ชื่อแฟ้มข้อมูลจะขึ้นต้น หรือนำหน้าด้วยตัวเลข หรือ Hyphen ไม่ได้
2.2 ชุดตัวเลข (Numeric)"0..9" ใช้ในการกำหนดค่าให้กับตัวแปร เพื่อนำไปทำการคำนวณหาค่าต่าง ๆ ที่เป็นผลลัพธ์ตามที่เราต้องการ หรือ อาจจะใช้ผสมกับกลุ่มตัวอักษรให้กับตัวแปร หรือใช้ตั้งชื่อแฟ้มข้อมูล
2.3 ชุดสัญลักษณ์พิเศษ (Special Character) ชุดสัญลักษณ์พิเศษ เราสามารถแบ่งออกได้ตามหน้าที่ดังนี้
ใช้ในการคำนวณ เราเรียกว่า Arithmetic Operator


+(บวก)/ (หาร)
-(ลบ)** (ยกกำลัง)
* (คูณ)( ) (เครื่องหมายวงเล็บ)
ใช้ในการเปรียบเทียบ ในเชิงคณิตศาสตร์ Relation operator
> มากกว่าor IS GREATER THAN
< น้อยกว่าor IS LESS THAN
= เท่ากับor IS EQUAL
ใช้ในการกำกับ การเว้นวรรคตอน Punctuation Operator
{ - , . " : ; () }
ใช้ในการกำหนดรูปแบบของการพิมพ์ (Print Format)
B (Blank Or Space) VV (Period for format Decimal)
Z,
$B
+CR
-DB
0.
*Space
3. ประเภทของคำ
  คำ เกิอขึ้นจากการผสมระหว่างตัวอักษร กับตัวเลข หรือจะเป็นตัวอักษรล้วน ๆ ก็ได้ ซึ่งจะต้องเป็นไปตามเงื่อนไขหรือกฎเกณฑ์ของภาษานั้น ๆ ดังได้กล่าวมาแล้วข้างต้น ซึ่งแบ่งออกเป็นประเภท ใหญ่ ๆ ดังนี้
  • 3.1 คำสงวน (Reserved Word) คำสงวนไว้ใช้ในกรณี ๆ ไปโดยเฉพาะ ไม่สามารถนำคำสงวนไปใช้ในหน้าที่อื่น ๆ ที่ไม่ใช่หรือ ไม่ได้กำหนดไว้ โดยคำสงวนจะมีความหมายในตัวของมันเอง ซึ่งแบ่งออกเป็น 3 ประเภท
    • Key word คือคำที่เราต้องเขียนเสมอ หรือ เป็นคำที่ตัว Compiler Cobol รู้จัก ได้แก่ Read , Into, End
    • Option Word จะใช้ หรือ ไม่ใช้ก็ได้ เขียนแทนด้วยตัวอักษรตัวพิมพ์ใหญ่ แต่ไม่มีขีดเส้นใต้กำกับไว้ มีไว้เพื่อขยายประโยคให้สมบูรณ์ เช่น Record, At
    • Connective Word เพื่อขยายใจความประโยคหรือเชื่อมโยงคำ เช่น Of ,In
  • 3.2 คำที่ไม่ใช่คำสงวน หมายถึงคำอื่น ๆ ซึ่งผู้เขียนโปรแกรม ตั้งชื่อขึ้นเองตามกฏเกณฑ์การตั้งชื่อ ในภาษาโคบอลห้ามตั้งชื่อตรงกับคำสงวนหรือซ้ำคำสงวน
    • Data Name ใช้อ้างอิงถึงข้อมูล หรือตัวแปร
    • Condition Name ชื่อข้อมูลที่ใช้ในการสร้างเงื่อนไขขึ้นเพื่อเลือกตัดสินใจในการทำงาน และเพื่อทดสอบโปรแกรม
    • Paragraph Name หมายถึง ชื่อหัวข้อของชุดคำสั่งที่ปรากฏอยู่ในส่วนต่าง ๆของโปรแกรม
  • 3.3 Special Name ชื่อพิเศษต้องอยู่ในพารากราฟทึ่ชื่อ Special Names ซึ่งอยู่ภายใน Environment Division ซึ่งผู้เขียนโปรแกรมจะเป็นผู้ตั้งขึ้นเองเพื่อนำไปใช้ประโยชน์ในการเขียนโปรแกรมให้สั้น และรัดกุม แต่มีประสิทธิภาพมากขึ้น
4. ตัวแปร (Varriable) และค่าคงที่ (Literal)
  • 4.1 ตัวแปร หมายถึง ข้อมูลที่มีการเปลี่ยนแปลงค่อยู่ตลอดเวลาในโปรแกรม
    • ตัวแปรชนิดตัวเลข (Numeric variable) ประกอบไปด้วยตัวเลข 0 - 9 สามารถนำไปคำนวณได้
    • ตัวแปรชนิดอักขระ (Alphabetic variable) ประกอบไปด้วยตัวอักษร A..Z และ Blank Or Space และ Hyphen (-)
    • ตัวแปรชนิดที่เป็นทั้งตัวเลขและตัวอักขระ (Alphabumeric variable)ได้แก่ตัวเลข ตัวอักษร สัญลักษณ์พิเศษ
  • 4.2 ค่าคงที่ (Literal)ค่าคงที่เป็นตัวเลข(Numeric Literal) ประกอบด้วยตัวเลข 0-9
แบบฟอร์มของกระดาษเขียนโปรแกรม
ในการเขียนโปรแกรมด้วยภาษาใด ๆ ก็ตาม จำเป็นต้องเขียนลงในกระดาษ ตามแบบฟอร์มซึ่งแต่ละภาษากำหนดเอาไว้ ภาษาโคบอล ก็เช่นกัน เราต้องเขียนโปรแกรมลงในกระดาษสำหรับเขียนโปรแกรมโดยเฉพาะ กระดาษพิเศษที่ใช้เขียนโปรแกรมภาษาโคบอลนี้เรียกว่า Cobol Coding Form รูปแบบนี้ เหมือนรูปแบบมาตราฐานของบัตร 80 คอลัมน์ คือ ในกระดาษหนึ่งบรรทัดแบ่งออกเป็น 80 คอลัมน์ เช่นเดียวกันและกระดาษเขียนโปรแกรมหนึ่งแผ่น จะมีประมาณ 20 บรรทัด อย่างไรก็ตามทุกวันนี้เรามักจะส่งโปรแกรมเข้าเื่องครื่องคอมพิวเตอร์ทางจอภาพมากกว่า รายละเอียดของหัวกระดาษตอนบน
  1. System ให้ใส่รายละเอียดของระบบที่ใช้ในการเขียนโปรแกรม หรือ รายละเอียดของเครื่องคอมพิวเตอร์ที่ใช้ หรืออาจจะเป็นชื่อระบบก็ได้
  2. Program ให้ใส่ชื่อโปรแกรม หรืออาจจะเป็นชื่อของโปรแกรมย่อยก็ได้
  3. Programmer ใส่ชื่อโปรแกรมเมอร์หรือชื่อของผู้เขียนโปรแกรม
  4. Date ใส่วัน เดือน ปี ที่เขียนโปรแกรม
  5. Page of ให้ใส่ตัวเลขบอกจำนวนหน้า จำนวนตัวเลขหลัง OF หมายถึงจำนวน Coding Sheet ทั้งหมดที่ใช้เขียนโปรแกรมนี้ และตัวเลขหลัง Page หมายถึง เลขบอกหน้าของ Coding She
การใช้เครื่องหมายวรรคตอน
จุดประสงค์ ของการใช้เครื่องหมายวรรคตอนเพื่อบอกให้ Compiler ทราบว่าจบประโยคเมื่อไหร่ จบคำเมื่อไหร่ และช่วยในการอ่านโปรแกรมได้ง่ายขึ้น



Creadit : http://cptd.chandra.ac.th/selfstud/cobol/pass2.htm

ภาษาฟอร์แทรน (Fortran Language)

ภาษาฟอร์แทรน หรือ FORTRAN เป็นชื่อที่ย่อมาจาก FORmular TRANslation ถูกพัฒนาขึ้นเมื่อกลางทศวรรษที่ 1950 ด้วยฝีมือของพนักงานบริษัทไอบีเอ็ม นับเป็นภาษาชั้นสูงภาษาแรกที่ได้มีการใช้แพร่หลาย จึงได้มีบัญญัติภาษาฟอร์แทรนฉบับมาตรฐานขึ้นในเวลาต่อมาโดย ANSI (American National Standard Institute)
ฟอร์แทรนถูกออกแบบมาเพื่อใช้งานทางด้านวิทยาศาสตร์ วิศวกรรมศาสตร์และคณิตศาสตร์ อันเป็นงานที่มักใช้งานประมวลที่ซับซ้อน
เนื่องจากฟอร์แทรนถูกออกแบบมาสำหรับการใช้งานทางวิทยาศาสตร์ จึงมีจุดอ่อนในเรื่องเกี่ยวกับการจักการไฟล์ นอกจากนี้จากการที่ฟอร์แทรนถูกออกแบบมาตั้งแต่สมัยที่เรายังใช้บัตรเจาะรูซึ่งมีขนาด 80 คอลัมน์ ทำให้ฟอร์แทรนมีกฎเกณฑ์ที่จะต้องเริ่มต้นและจบประโยคภายในคอลัมน์ที่กำหนด ซึ่งเป็นเรื่องน่ารำคาญพอสมควร ในการเขียนโปรแกรมในปัจจุบัน เมื่อพูดถึงโครงสร้างของภาษาฟอร์แทรนแล้วก็ไม่สามารถสู้ภาษารุ่นใหม่ๆได้
ชุดคำสั่งภาษาฟอร์แทรน
เป็นภาษาคอมพิวเตอร์ที่เหมาะกับการใช้งานทางด้านการคำนวณ ตัวแปลชุดคำสั่งจะทำหน้าที่อ่านชุดคำสั่งที่เป็นภาษาฟอร์แทรนที่เราเขียนขึ้น และแปลเป็นภาษาเครื่องที่ชุดคำสั่งควบคุมสามารถรับได้ คำสั่งในภาษาฟอร์แทรนแต่ละคำสั่งเรียกเป็นภาษาอังกฤษว่า statement ซึ่งแบ่งเป็นดังนี้
คำสั่งรับส่งข้อมูล (input-output statement)ได้แก่ READ, WRITE หรือ PRINT, FORMAT
คำสั่งคำนวณ (arithmetic statement) ได้แก่
- คำสั่งที่เป็นการคำนวณ โดยทางซ้ายมือเป็นตัวแปร ทางขวามือเป็นการคำนวณ เช่น X = A + B + 5
- คำสั่งตรรกะ (logical statement) เป็นคำสั่งประเภทควบคุม ได้แก่ คำสั่งที่ใช้ในการทดสอบ ค่าเช่น IF (A.EQ.B) GO TO 15 หรือ GO TO (1, 2, 3,4, 5) และ I เป็นต้น
นอกจากนี้ ยังมีคำสั่งประกอบอื่นๆ อีก เช่น DIMENSION, DATA, CALL SUB, และ RETURN เป็นต้น

ฟอร์แทรนเป็นภาษาระดับสูงที่ใช้เขียนคำสั่งงานเพื่อควบคุมการทำงานของเครื่องคอมพิวเตอร์ขนาดใหญ่ เช่น เครื่องเมนเฟรม (Mainframe Computer) เป็นภาษาที่ใช้แก้ปัญหาด้านวิทยาศาสตร์และคณิตศาสตร์ ภาษา FORTRAN จึงเหมาะสำหรับเขียนโปรแกรมเกี่ยวกับสูตร สมการ หรือฟังก์ชันทางวิทยาศาสตร์และคณิตศาสตร์
ตัวอย่างของภาษา FORTRAN บางส่วน มีดังนี้
READ X
IF((X.GT.0) .AND. (X.LT.100)) THEN
PRINT *, ‘VALUE OF X IS :’,X
ELSE
PRINT * , ‘X IS NOT BETWEEN 0 AND 100’
ความหมายของคำสั่งงาน
READ X หมายถึง การอ่านค่าลงในตัวแปรชื่อ X
IF((X.GT.0) .AND. (X.LT.100)) THEN หมายถึง การตรวจสอบค่า X ที่อ่านค่า เข้ามาว่าอยู่ระหว่า 0-100 หรือไม่ ถ้าใช่ให้ทำคำสั่งหลัง THEN ถ้า
ไม่ใช่ให้ทำคำสั่งหลัง ELSE
PRINT *, ‘VALUE OF X IS :’,X หมายถึง ให้พิมพ์ทั้งประโยคด้วยข้อความที่ กำหนดแล้วตามด้วยค่าของตัวแปร X ที่อ่านเข้ามา
PRINT * , ‘X IS NOT BETWEEN 0 AND 100’ หมายถึง พิมพ์ทั้งประโยค โดยแสดงค่าของ X ก่อนประโยคข้อความ
ข้อดีของภาษาฟอร์แทรน
เป็นภาษาที่มีคำสั่งงานเน้นประสิทธิภาพด้านการคำนวณ วิทยาศาสตร์และคณิตศาสตร์ รวมทั้งคำสั่งควบคุมการทำงานของอุปกรณ์เครื่องเมนเฟรม
ข้อจำกัดของภาษาฟอร์แทรน
เนื่องจากคำสั่งงานเหมาะสำหรับการควบคุมการทำงานของเครื่องคอมพิวเตอร์ขนาดใหญ่ เมื่อนำมาประยุกต์ใช้กับเครื่องคอมพิวเตอร์ขนาดเล็ก จะต้องปรับใช้คำสั่งมากมาย รวมทั้งเมื่อมีการเปลี่ยนเครื่องประมวลผลก็ต้องเปลี่ยนรูปแบบคำสั่งทุกครั้ง
รูปตัวอย่างการเขียนโปรแกรมภาษาฟอร์แทรน




ภาษาปาสคาล (Pascal Language)

ประวัติของภาษาปาสคาล (Pascal)
ภาษาปาสคาล (Pascal) เป็นชื่อที่ได้มาจากเบลส ปาสคาล (Blaise Pascal) นักวิทยาศาสตร์และนักคณิตศาสตร์ชาวฝรั่งเศส ผู้มีชื่อเสียงในการประดิษฐ์เครื่องจักรที่ใช้ในการคำนวณซึ่งเป็นต้นแบบของคอมพิวเตอร์ในปัจจุบัน ภาษาปาสคาลได้รับการพัฒนาขึ้นครั้งแรกเมื่อต้นปี พ.. 2513 โดยนิคลอส เวิรธ์ (Niklaus Wirth) ที่สถาบันเทคโนโลยีซูริค ประเทศสวิสเซอร์แลนด์ วัตถุประสงค์ครั้งแรก เพื่อพัฒนาภาษาขั้นสูงที่มีกฎเกณฑ์ เพื่อการสอนการเขียนโปรแกรมแบบโครงสร้าง ภาษาที่เวิร์ธพัฒนาขึ้นเรียกว่า ปาสคาลมาตรฐาน (Standard Pascal) หรือปาสคาลมาตรฐานตามแบบของเจนเซน (Jensen) และ เวิร์ธ (Wirth) อย่างไรก็ตาม คำว่าปาสคาลมาตรฐานยังกำกวมอยู่ เนื่องจากปัจจุบันมีหลายมาตรฐานในประเทศสหรัฐอเมริกามีการประกาศปาสคาลมาตรฐานชื่อแอนซี่ (ANSI : American National Standards Instute) และไออีอีอี(IEEE : Institute of Electrical and Electronics Engineers)
ในปี พ.. 2526 บอร์แลนด์ อินเตอร์เนชั่นแนล ซึ่งเป็นบริษัทซอฟต์แวร์สำหรับคอมพิวเตอร์ขนาดเล็ก ได้เริ่มทำตลาดคอมไพเลอร์ปาสคาลราคาถูกที่เรียกว่า เทอร์โบปาสคาล (Turbo Pascal) สำหรับใช้กับคอมพิวเตอร์ส่วนบุคคล เทอร์โบปาสคาลประสบความสำเร็จเรื่อยมา เนื่องจากราคาถูกและใช้งานง่าย ต่อมาจึงมีการพัฒนาเครื่องมือสำหรับพัฒนาโปรแกรม ไดแก่ Editor และตัว Debugger แบบโต้ตอบ ปัจจุบันมีการนำมาประยุกต์ใช้งานทั้งในด้านเป็นภาษาในการเรียนการสอน และภาษาในการสร้างงานประยุกต์ต่างๆ
คุณลักษณะของภาษาปาสคาล
ภาษาปาสคาล จัดเป็นภาษาระดับสูงอีกภาษาหนึ่งที่ได้รับความนิยมในการนำมาใช้ในวงการศึกษา เพราะเป็นภาษาที่มีลักษณะเด่นอยู่หลายด้าน เช่น
1. รูปแบบของคำสั่งเป็นภาษาอังกฤษ
2. คำสั่งมีความง่ายต่อการทำความเข้าใจ
3. ลักษณะการทำงานของโปรแกรมจะเป็นการทำงานที่มีโครงสร้าง
4. มีการแปลคำสั่งแบบ Compile ทำให้สามารถทำงานได้อย่างรวดเร็ว
5. เหมาะกับงานทุกประเภท ไม่ว่าจะเป็นงานทางด้านวิทยาศาสตร์ที่มีการคำนวณหรืองานทางด้านธุรกิจ แม้แต่งานทางด้านกราฟิกก็สามารถใช้ได้
โครงสร้างของภาษาปาสคาล
ประกอบด้วย 3 ส่วน
-   ส่วนหัวโปรแกรม (Program Hending)
-   ส่วนของการประกาศการใช้งาน(Declarations)
-   ส่วนของคำสั่ง(Executable Statement)
ส่วนหัวโปรแกรม
เริ่มต้นคำว่า Program และตามด้วยชื่อโปรแกรม เช่น Program Test_Work1;
หมายเหตุ
- ชื่อของโปรแกรมต้องตั้งชื่อเป็นภาษอังกฤษเท่านั้น
- ห้ามขึ้นต้นด้วยตัวเลข แต่สามารถตามหลังภาษาอังกฤษด้วยตัวเลขได้
- ห้ามเว้นวรรค และห้ามใช้สัญลักษณ์พิเศษอื่นใด ยกเว้น Underscore(_)
- ห้ามซ้ำกับคำสงวน
ส่วนประกาศการใช้งาน
ได้แก่ การประกาศต่างๆดังนี้
เลเบล(Labels) ค่าคงที่ (Constants) การนิยามประกาศ (Type Definitions) ตัวแปร(Variable) โพรซิเยอร์และฟังก์ชัน(Procedure and Function)
ส่วนของคำสั่ง
ส่วนนี้นับว่าเป็นส่วนสำคัญที่สุดในการให้คอมพิวเตอร์ทำงานตามที่ผู้เขียนโปรแกรมออกแบบไว้ ตัวอย่างคำสั่งเช่น Write, Writeln, Readln เป็นต้น
องค์ประกอบพื้นฐานของภาษาปาสคาล
แบ่งออกได้เป็น 10 ประเภท ดังนี้
1. ตัวอักษร (Character Set) หมายถึง สัญลักษณ์ต่างๆที่ไม่สามารถนำไปคำนวณได้
1.1) ตัวเลข ได้แก่ เลขฐาน 10 คือ 0-9
1.2) ตัวอักษร ได้แก่ ภาษาอังกฤษA-Z(ทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) และตัวอักษรภาษาอื่นๆ
1.3) สัญลักษณ์พิเศษ ได้แก่ สัญลักษณ์พิเศษต่างๆ
2. ชื่อ (Identifiers)
ใช้สำหรับกำหนดชื่อเรียกรายการดังต่อไปนี้
- ค่าคงที่
- ฟิลด์ใน
- ตัวแปร
- ฟังก์ชัน
- ชื่อโปรแกรม
- ประเภทข้อมูล
- ยูนิต
การกำหนดชื่อ มีกฎเกณฑ์ดังนี้
  1. ประกอบไปด้วยตัวอักษรA-Zทั้งตัวพิมพ์เล็กและพิมพ์ใหญ่ และตัวเลข 0-9
  2. เริ่มต้นด้วยภาษาอังกฤษ(ห้ามเป็นตัวเลข) ส่วนตัวถัดไปจะเป็นตัวเลขหรือตัวอักษรก็ได้
  3.ห้ามเว้นวรรค
  4. ห้ามมีสัญลักษณ์พิเศษอื่นๆ ยกเว้น(_)
  5. ตัวอักษรพิมพ์ใหญ่พิมพ์เล็กถือว่าเป็นอักษรเดียวกัน
  6. ห้ามซ้ำกับคำสงวน
3. คำสงวน
รายชื่อของคำสงวนมีดังนี้
AND END NIL SET
ARRAY FILE NOT THEN
BEGIN FOR OF TO
CASE FUNCTION OR TYPE
CONST GOTO PACKED UNTIL
DIV IF PROCEDURE VAR
DO IN PROGRAM WHILE
DOWNTO LABEL RECORD WITH
ELSE MOD REPEAT
4. ชื่อมาตรฐาน เป็นคำเฉพาะที่ภาษา Pascal ใช้สร้างขึ้นมาเพื่อใช้เป็นภาษาเฉพาะ หรืออาจเป็นฟังก์ชันย่อยที่ภาษาปาสคาลสร้างขึ้น ตัวอย่างเช่น read write integer เป็นต้น
5. ข้อมูลแบบพื้นฐาน ซึ่งประกอบไปด้วยข้อมูลพื้นฐานดังต่อไปนี้
- ข้อมูลเลขจำนานเต็ม
- ข้อมูลเลขจำนวนจริง
- ข้อมูลตัวอักขระ
- ข้อมูลแบบสตริง
- ข้อมูลแบบตรรกศาสตร์
6. ค่าคงที่ หมายถึง ค่าที่ไม่มีการเปลี่ยนแปลงอีก
ประโยชน์ของค่าคงที่
- การประกาศที่ใช้ค่าคงที่ จะสั้นกะทัดรัด
- ทำให้ง่ายต่อการแก้ไข
การเรียกใช้ค่าคงที่
รูปแบบ CONST identifier = Constant
Identifier หมายถึง ชื่อค่าคงที่
Constant หมายถึง ค่าคงที่ที่กำหนด
7. ตัวแปร เป็น identifier สำหรับใช้เก็บค่าที่ไม่คงที่ ที่สามารถเปลี่ยนแปลงได้ตลอดเวลาในระหว่างการทำงานของโปรแกรม
รูปแบบ
VAR identifier = type;
- Identifier หมายถึง ชื่อตัวแปร ที่มีการเรียกใช้งานในโปรแกรม
- Type หมายถึง ชนิดของข้อมูลตัวแปรนั้น
8. นิพจน์ คือ กลุ่มของข้อมูล ซึ่งประกอบไปด้วยค่าคงที่ 1 ตัวหรือมากกว่า และตัวแปร1ตัวหรือมากกว่า เรียกสัญลักษณ์ทางการคำนวณหรือการเปลี่ยนเทียบว่า โอเปอเรเตอร์ สามารถแบ่งออกได้ดังนี้
- นิพจน์ทางคณิตศาสตร์ เป็นนิพจน์ที่ประกอบด้วย Operand ที่เป็นตัวแปร หรือค่าคงที่ที่เป็นตัวเลข
- นิพจน์ทางตรรกศาสตร์ เป็นนิพจน์ที่ประกอบด้วย Operand ที่เป็นตัวแปร หรือค่าคงที่ที่เป็นตัวเลขหรือนิพจน์ทางคณิตศาสตร์หรือตรรกศาสตร์ ซึ่งเชื่อมกันด้วย Operator
9. ประโยคคำสั่ง เป็นคำสั่งในโปรแกรมคอมพิวเตอร์ ที่สั่งให้คอมพิวเตอร์ปฏิบัติการอย่างใดอย่างหนึ่ง
สามารถแบ่งออกได้ดังนี้
- คำสั่งกำหนดค่าให้กับตัวแปร
- คำสั่งการเปลี่ยนเทียบเงื่อนไข
- คำสั่งการทำซ้ำหรือวนลูป
- คำสั่งลำดับการทำงานของโปรแกรม
10. โพรซีเยอร์และฟังก์ชัน เรียกอีกอย่างหนึ่งว่า โมดูล เป็นโปรแกรมที่มีการเขียนแยกไว้ต่างหากจากโปรแกรมหลัก ซึ่งโปรแกรมอื่นสามารถใช้งานได้อิสระ แบ่งออกได้เป็น 2 ประเภท คือ
- โพรซีเยอร์และฟังก์ชันมาตรฐาน (Standard Procedure and Function) เป็น Procedure หรือ Function ที่ภาษาปาสคาลสร้างขึ้นมาให้แล้ว ผู้เขียนโปรแกรมสามารถนำไปใช้ได้ทันที แต่ไม่สามารถเปลี่ยนแปลงหรือแก้ไขได้
- โพรซีเยอร์และฟังก์ชันที่สร้างขึ้นเอง (Users-Defined Procedure and Function) เป็นโพรซีเยอร์หรือฟังก์ชันมาตรฐานที่ผู้เขียนโปรแกรมสร้างขึ้นเอง อำนวยความสะดวกในการทำงานเป็นบางอย่าง ซึ่งจะสามารถทำการแก้ไขหรือเปลี่ยนแปลงได้เองตามต้องการ
ชนิดของข้อมูลพื้นฐานแบ่งออกได้ 5 ประเภท ได้แก่
-ข้อมูลชนิดจำนวนเต็ม (Integer-Type Data) เป็นข้อมูลตัวเลขที่ไม่มีจุดทศนิยม
-ข้อมูลเลขจำนวนจริง (Real-Type Data) เป็นข้อมูลที่มีจุดทศนิยม จะต้องมีตัวเลขอยู่หน้าจุดทศนิยม
-ข้อมูลชนิดข้อความ (String-Type Data) กลุ่มของตัวอักขระที่มาเขียนอยู่ภายใต้เครื่องหมาย ไม่สามารถนำไปคำนวณบ้าน
-ข้อมูลชนิดอักขระ(Character-Type Data ) ตัวอักษรเพียง1ตัวที่อยู่ภายใต้เครื่องหมาย(Single Quote) หรือ Apostrophe

 
-ชนิดข้อมูลตรรกศาสตร์ (Boolean-Type Data) เป็นข้อมูลที่แสดงค่าความจริงอย่างใดอย่างหนึ่ง จะมีค่าความจริงของข้อมูล 2 แบบ คือ ข้อมูลจริงและข้อมูลเท็จ สามารถแบ่ง นิพจน์ทางตรรกศาสตร์ออกเป็น2 แบบ ดังนี้
-นิพจน์ทางตรรกศาสตร์ที่ใช้สัญลักษณ์แสดงความสัมพันธ์เป็นตัวเชื่อม
- นิพจน์ทางตรรกศาสตร์ที่ใช้สัญลักษณ์ทางตรรกศาสตร์เป็นตัวเชื่อม

 
4. การนำข้อมูลออก (Write, WriteLn Statement)
ในการประมวลผลข้อมูลคอมพิวเตอร์ จะมีการนำข้อมูลเข้าไปในหน่วยความจำก่อนต่อจากนั้นจะมีการเคลื่อนย้ายข้อมูลเข้าและออกระหว่างหน่วยความจำกับหน่วยประมวลผลกลาง(CPU) เพื่อประมวลผลตามคำสั่งจากโปรแกรม ข้อมูลและผลลัพธ์ที่ได้จะคงถูกเก็บอยู่ในหน่วยความจำเช่นเดิม ข้อมูลเหล่านี้จะหายไปเมื่อคอมพิวเตอร์หยุดทำงาน
ในภาษาปาสคาล มีการนำข้อมูลออกจากหน่วยความจำโดยใช้คำสั่ง WriteหรือWriteLn (Write-Line)
รูปแบบของ WriteและWriteLn
คำสั่ง WriteและWriteLnมีรุปแบบดังนี้
Write(OUTPUT,item1,item2,…itemN)
WritLn(OUTPUT,item1,item2,…itemN)
จากข้อมูลข้างต้นมีความหมายต่อไปนี้
  1. OUTPUT หมายถึง ตัวแปรที่เป็นชื่ออุปกรณ์เอาต์พุตของคอมพิวเตอร์
  2. Item1,...,itemN คือข้อมูลต่างๆที่นำออกตั้งแต่รายการที่1ถึงรายการที่N
  3. ข้อมูลแต่ละรายการอาจจะมีคุณสมบัติดังนี้ เป็นข้อความ เป็นตัวแปร เป็นการคำนวณ
  4.WriteLnเมื่อแสดงข้อมูลที่มีใน( )หมดแล้ว เคอร์เซอร์จะเลื่อนลงมาอยู่ที่คอลัมน์ที่1ของแถวล่างที่อยู่ถันลงมา ส่วนWrieเคอร์เซอร์จะอยู่ตอนท้ายของแถว
  5.สำหรับWrite ที่ไม่มี( )ต่อท้าย หมายถึง การเลื่อนเคอร์เซอร์ลงมาอยู่ที่คอลัพธ์ที่1 ของแถวล่างที่อยู่ถัดลงมา โดยไม่มีการแสดงข้อใดๆ

 
5. โปรแกรมย่อย(Procedure) และฟังก์ชัน (Function)
ภาษาปาสคาล เรียกโปรแกรมย่อยว่า Procedure ซึ่งเป็นโปรแกรมเล็กๆภายในโปรแกรมใหญ่ทั้งหมด
โปรแกรมย่อย(Procedure)
วัตถุประสงค์ของการสร้างโปรแกรมย่อย
1. เป็นส่วนโปรแกรมที่ใช้ซ้ำกันในหลายๆแห่ง และจะแยกออกมาทำเป็นโปรแกรมย่อย
2. เป็นคำสั่งที่สร้างขึ้นใหม่ เพื่อเก็บไว้ใช้ต่อไป
3. โปรแกรมย่อยหนึ่งๆคือโมดูลๆหนึ่ง
4. เพื่อสนองความต้องการของการเขียนโปรแกรมจากบนลงล่าง
ฟังก์ชัน (Function)
ภาษาปาสคาจัดให้ฟังก์ชันเป็นรูปแบบหนึ่งของโปรแกรมย่อย เทียบเท่า Procedure ดังนั้น Function และ Procedure จึงมีลักษณะคล้ายกัน คือ เป็นส่วนหนึ่งของโปรแกรมหลักที่เขียนแยกออกไปจากโปรแกรมหลัก มีความสมบูรณ์ในตัวเอง และสามารถส่งผ่านค่าของตัวแปรระหว่างโปรแกรมหลักกับFunction หรือระหว่าง Procedure กับ Function



Credit : http://pooeiw.blogspot.com/