วันพฤหัสบดีที่ 29 สิงหาคม พ.ศ. 2556

โครงสร้างโปรแกรมภาษา

โครงสร้างโปรแกรมภาษา
  (1.) โครงสร้างโปรแกรมภาษา  Pascal  
        Pascal  
เป็นภาษาคอมพิวเตอร์ชั้นสูงที่พัฒนาขึ้นโดย Niklaus Wirth และได้ตั้งชื่อว่าปาสคาล (Pascal) เพื่อให้เกียรติแก่นักวิทยาศาสตร์ชาวฝรั่งเศส ชื่อ Blaise Pascal ภาษาปาสคาล พัฒนามาจากภาษา Algol โดยพัฒนาให้เป็นภาษาสำหรับฝึกหัดเขียนโปรแกรมคอมพิวเตอร์ ภาษาปาสคาลจะมีลักษณะเป็นภาษาคอมพิวเตอร์แบบประมวลความหรือคอมไพเลอร์ (Compiler) เมื่อเทียบกับภาษาคอมพิวเตอร์ชั้นสูงอื่น ๆ จะพบว่าภาษาปาสคาลเป็นภาษาที่มีการวางระบบและจัดรูปแบบที่มีโครงสร้างแน่นอนตายตัว จึงทำให้ภาษาปาสคาลเป็นภาษาที่เหมาะสำหรับการเขียนโปรแกรมโครงสร้าง (Structured Program)มากกว่าภาษาอื่น ๆ ที่ใช้กันอยู่จึงทำให้ได้รับความนิยมและนำมาประยุกต์ใช้งานต่าง ๆ อย่างแพร่หลาย                                

(2)โครงสร้างของโปรแกรมภาษาซีแบ่งออกเป็น 3 ส่วน
1. ส่วนหัวของโปรแกรม
ส่วน หัวของโปรแกรมนี้เรียกว่า Preprocessing Directive ใช้ระบุเพื่อบอกให้คอมไพเลอร์กระทำการ ใด ๆ ก่อนการแปลผลโปรแกรม ในที่นี่คำสั่ง #include <stdio.h> ใช้บอกกับคอมไพเลอร์ให้นำเฮดเดอร์ไฟล์ที่ระบุ คือ stdio.h เข้าร่วมในการแปลโปรแกรมด้วย โดยการกำหนด preprocessing directives นี้จะต้องขึ้นต้นด้วยเครื่องหมาย # เสมอ

คำสั่งที่ใช้ระบุให้คอมไพเลอร์นำเฮดเดอร์ไฟล์เข้าร่วมในการแปลโปรแกรม สามารถเขียนได้ 2 รูปแบบ คือ

- #include <
ชื่อเฮดเดอร์ไฟล์คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟล์ที่ระบุจากไดเรกทอรีที่ใช้สำหรับเก็บเฮ ดเดอร์ไฟล์โดยเฉพาะ (ปกติคือไดเรกทอรีชื่อ include)

- #include “
ชื่อเฮดเดอร์ไฟล์” คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟที่ระบุ จากไดเร็คทอรีเดียวกันกับไฟล์ source code นั้น แต้ถ้าไม่พบก็จะไปค้นหาไดเร็คทอรีที่ใช้เก็บเฮดเดอร์ไฟล์



2. 
ส่วนของฟังก์ชั่นหลัก
ฟังก์ชั่นหลักของภาษาซี คือ ฟังก์ชั่น main() ซึ่งโปรแกรมภาษาซีทุกโปรแกรมจะต้องมีฟังก์ชั่นนี้อยู่ในโปรแกรมเสมอ จะเห็นได้จากชื่อฟังก์ชั่นคือ main แปลว่า “หลัก” ดังนั้น การเขียนโปรแกรมภาษซีจึงขาดฟังก์ชั่นนี้ไปไม่ได้ โดยขอบเขตของฟังก์ชั่นจะถูกกำหนดด้วยเครื่องหมาย { และ } กล่าวคือ การทำงานของฟังก์ชั่นจะเริ่มต้นที่เครื่องหมาย { และจะสิ้นสุดที่เครื่องหมาย } ฟังก์ชั่น main() สามารถเขียนในรูปแบบของ void main(void) ก็ได้ มีความหมายเหมือนกัน คือ หมายความว่า ฟังก์ชั่น main() จะไม่มีอาร์กิวเมนต์ (argument) คือไม่มีการรับค่าใด ๆ เข้ามาประมวลผลภายในฟังก์ชั่น และจะไม่มีการคืนค่าใด ๆ กลับออกไปจากฟังก์ชั่นด้วย

3. ส่วนรายละเอียดของโปรแกรม
เป็นส่วนของการเขียนคำสั่ง เพื่อให้โปรแกรมทำงานตามที่ได้ออกแบบไว้
คอมเมนต์ในภาษาซี
คอมเมนต์ (comment) คือส่วนที่เป็นหมายเหตุของโปรแกรม มีไว้เพื่อให้ผู้เขียนโปรแกรมใส่ข้อความอธิบายกำกับลงไปใน source code ซึ่งคอมไพเลอร์จะข้ามาการแปลผลในส่วนที่เป็นคอมเมนต์นี้ คอมเมนต์ในภาษาซีมี 2 แบบคือ
 คอมเมนต์แบบบรรทัดเดียว ใช้เครื่องหมาย //
 คอมเมนต์แบบหลายบรรทัด ใช้เครื่องหมาย /* และ */
  (3.) โครงสร้างโปรแกรมภาษา   Basic 
     Basic  เป็นภาษาคอมพิวเตอร์ (Programming Language) ที่พัฒนาโดยบริษัทไมโครซอฟท์ ซึ่งเป็นบริษัทยักษ์ใหญ่ที่สร้างระบบปฏิบัติการ Windows 95/98 และ Windows NT ที่เราใช้กันอยู่ในปัจจุบัน โดยตัวภาษาเองมีรากฐานมาจากภาษา Basic ซึ่งย่อมาจาก Beginner’s All Purpose Symbolic Instruction ถ้าแปลให้ได้ตามความหมายก็คือ “ชุดคำสั่งหรือภาษาคอมพิวเตอร์สำหรับผู้เริ่มต้น”  ภาษา Basic  มีจุดเด่นคือผู้ที่ไม่มีพื้นฐานเรื่องการเขียนโปรแกรมเลขก็สามารถเรียนรู้ และนำไปใช้งานได้อย่างง่ายดายและรวดเร็ว เมื่อเทียบกับการเรียนภาษาคอมพิวเตอร์อื่นๆ เช่น ภาษาซี (C). ปาสคาส (Pascal). ฟอร์แทรน (Fortian) หรือ แอสเชมบลี (Assembler)

              
ไมโครซอฟท์ที่ได้พัฒนาโปรแกรมภาษา Basic มานานนับสิบปี ตั้งแต่ภาษา MBASIC (Microsoft Basic). BASICA (Basic Advanced): GWBASIC และ QuickBasic ซึ่งได้ติดตั้งมาพร้อมกับระบบปฏิบัติการMs DOS ในที่สุดโดยใช้ชื่อว่า QBASIC โดยแต่ละเวอร์ชันที่ออกมานั้นได้มีการพัฒนาและเพิ่มเติมคำสั่งต่างๆเข้าไป โดยตลอด ในอดีตโปรแกรมภาษาเหล่านี้ล้วนทำงานใน Text Mode คือเป็นตัวอักษรล้วนๆ ไม่มีภาพกราฟิกสวยงามแบบระบบ Windows อย่างในปัจจุบัน จนกระทั่งเมื่อระบบปฏิบัติการ Windows ได้รับความนิยมอย่างสูงและเข้ามาแทนที่ DOS ไมโครซอฟท์ก็เล็งเห็นว่าโปรแกรมภาษาใน Text Mode นั้นคงถึงกาลที่หมดสมัย จึงได้พัฒนาปรับปรุงโปรแกรมภาษา Basic ของตนออกมาใหม่เพื่อสนับสนุนการทำงานในระบบWindows ทำให้ Visual Basic ถือกำเนิดขึ้นมาตั้งแต่บัดนั้น


                  Visual Basic 
เวอร์ชันแรกคือเวอร์ชัน 1.0 ออกสู่สายตาประชาชนตั้งแต่ปี 1991 โดย        ในช่วงแรกนั้นยังไม่มีความสามารถต่างจากภาษา GBASIC มากนัก แต่จะเน้นเรื่องเครื่องมือที่ช่วยในการเขียนโปรแกรมวินโดว์ซึ่งปรากฏว่า Visual Basic ได้รับความนิยมและประความสำเร็จเป็นอย่างดีไมโครซอฟท์จึงพัฒนา Visual Basic ให้ดีขึ้นเรื่อยๆ ทั้งในด้านประสิทธิภาพ ความสามารถ และเครื่องมือต่างๆเช่น เครื่องมือตรวจสอบแก้ไขโปรแกรม (debugger) สภาพแวดล้อมของการพัฒนาโปรแกรม การเขียนโปรแกรมแบบหลายวินโดว์ย่อย (MDI) และอื่นๆ อีกมากมาย

                 
สำหรับ Visual Basic ในปัจจุบันคือ Visual Basic 2008  ซึ่งออกมาในปี 2008 ได้เพิ่มความสามารถ   ในการเขียนโปรแกรมติดต่อกับเครือข่ายอินเตอร์เน็ต การเชื่อมต่อกับระบบฐานข้อมูล รวมทั้งปรับปรุงเครื่องมือและการเขียนโปรแกรมซึ่งวัตถุ (Object Oriented Programming) ให้สมบูรณ์ยิ่งขึ้นพร้อมทั้งเพิ่มเครื่องมือต่างๆอีกมากมายที่ทำให้ใช้งาย และสะดวกขึ้นกว่าเดิม โดยเราจะค่อยๆมาเรียนรู้ส่วนประกอบและเครื่องมือต่างๆอีกมากมายที่ทำให้ใช้ ง่ายและสะดวกขึ้นกว่าเดิม
         (4.) โครงสร้างโปรแกรมภาษา Assembly    
ภาษาแอสเซมบลี (อังกฤษ: Assembly Languageหมายถึง ภาษาที่ใช้ในการเขียนโปรแกรมภาษาหนึ่งซึ่งจะทำงานโดยขึ้นกับรุ่นของไมโครโพรเซสเซอร์ หรือ "หน่วยประมวลผล" (CPUของเครื่องคอมพิวเตอร์
การใช้ภาษาแอสเซมบลีจำเป็นต้องผ่านการแปลภาษาด้วยคอมไพเลอร์เฉพาะเรียกว่า แอสเซมเบลอร์ (assemblerให้อยู่ในรูปของรหัสคำสั่งก่อน (เช่น .OBJ) โดยปกติ ภาษานี้ค่อนข้างมีความยุ่งยากในการใช้งาน และการเขียนโปรแกรมเป็นจำนวนบรรทัดมากมากกว่า เมื่อเปรียบเทียบกับการใช้ภาษาระดับสูง เช่น ภาษา C หรือภาษา BASIC แต่จะทำให้ได้ผลลัพธ์การทำงานของโปรแกรมเร็วกว่า และขนาดของตัวโปรแกรมมีขนาดเนื้อที่น้อยกว่าโปรแกรมที่สร้างจากภาษาอื่นมาก จึงนิยมใช้ภาษานี้เมื่อต้องการประหยัดเวลาทำงานของเครื่องคอมพิวเตอร์ และเพิ่มประสิทธิภาพของโปรแกรม
เนื่องจากตัวคำสั่งภายในภาษาอ้างอิงเฉพาะกับรุ่นของหน่วยประมวลผล ดังนั้นถ้ามีการเปลี่ยนแปลงไปใช้กับหน่วยประมวลผลอื่นหรือระบบอื่น (เช่น หน่วยประมวลผล x86 ไม่เหมือนกับ z80จะต้องมีการปรับแก้ตัวคำสั่งภายในซึ่งบางครั้งอาจไม่สามารถปรับปรุงแก้ไขได้อย่างสมบูรณ์

(5.)โครงสร้างโปรแกรม ภาษา 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();
 (6.)โครงสร้างโปรแกรม ภาษา COBOL

 ภาษาโคบอล เป็นภาษาระดับสูงที่ออกแบบมาตั้งแต่ปี ค.ศ. 1960 โดยสถาบันมาตรฐานแห่งสหรัฐอเมริกากับบริษัทผู้ผลิตคอมพิวเตอร์หลายแห่ง และได?มีการพัฒนาอย่างต่อเนื่องจากมาตรฐานของภาษาโคบอลในปี 1968 กำหนดโดย The American National Standard Institute และในปี 1974 ได?ออกมาตรฐานที่เรียกว่า ANSI - COBOL ต่อมาเป็น COBOL 85 ภาษาโคบอลเป็นภาษาที่ออกแบบให้ใช้?กับงานทางธุรกิจได?เป็นอย่างดี สำหรับการประมวลผลแฟ้มข้อมูลขนาดใหญ่การคำนวณทางธุรกิจเช่นการจัดเก็บ เรียกใช้และประมวลผลทางด้านบัญชี ตลอดจนทำงานด้านการควบคุมสินค้าคงคลัง การรับและจ่ายเงิน เป็นต้น
          คำสั่งของภาษา COBOL จะคล้ายกับภาษาอังกฤษทำให้สามารถอ่านและเขียนโปรแกรม ได?ไม?ยากนัก ในยุคแรก ๆ ภาษา COBOL จะได?รับความนิยมบนเครื่องระดับเมนเฟรม แต่ปัจจุบันนี้จะ มีตัวแปลภาษา COBOL ที่ใช้บนเครื่องไมโครคอมพิวเตอร์ด้วย รวมทั้งมีภาษา COBOL ที่ได?รับการ ออกแบบตามแนวทางเชิงวัตถุ ( Object Oriented) เรียกว่า Visual COBOL ซึ่งจะช่วยให้การโปรแกรมสามารถทำได?ง่ายขึ้น และสามารถนำโปรแกรมที่เขียนไว้มาใช้ในการพัฒนางานอื่น ๆ อีก
          ตัวอย่างการเขียนโปรแกรมด้วยภาษา COBOL
                    IF SALES-AMOUNT IS GREATER THAN SALES-QUOTA
                    COMPUTE COMMISSION = MAX-RATE * SALES - AMOUNT
                    ELSE
                    COMPUTE COMMISSION = MIN-RATE * SALES - AMOUNT


โครงสร้างโปรแกรมภาษา


โครงสร้างโปรแกรมภาษาปาสคาล
ภาษาปาสคาล  เป็นภาษาระดับสูง (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 มีโครงสร้างเป็นลักษณะดังรูป
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image001_0001.gif 
      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)
       เป็นส่วนที่ใช้สำหรับแสดงข้อความเพื่ออธิบายสิ่งที่ต้องการในโปรแกรม ซึ่งจะใช้เครื่องหมาย /*และ */ ปิดหัวและปิดท้ายของข้อความที่ต้องการ 
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image003_0000.gif
  
รูปที่ 2-2 แสดงการเขียนหมายเหตุหรือ Comment ในลักษณะต่าง ๆ
โปรแกรมที่ 2 – 1 โปรแกรมแรกสำหรับคุณ
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image004_0000.gif 
การตั้งชื่อ
การตั้งชื่อ (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)  มีไว้เพื่อให้ผู้ใช้ออกแบบขั้นตอนการทำงนของโปรแกรมก่อนที่จะลงมือเขียนโปรแกรม ซึ่งจะช่วยให้ผู้ใช้เขียนโปรแกรมได้ง่ายขึ้นและไม่สับสนซึ่งผังงานที่นิยมใช้มีมาตรฐานมากมายหลายแบบ  โดยมีสัญลักษณ์ของผังงานดังนี้
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image005_0000.gif1.  
                    Terminator
สัญลักษณ์แทนจุดเริ่มต้นและจุดสิ้นสุด
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image006_0000.gif        2.
                    Process                                                                         
สัญลักษณ์กระบวนการต่าง ๆ เช่น การประกาศตัวแปร การบวก เป็นต้น
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image007_0000.gif        3.
           
Decision
สัญลักษณ์เงื่อนไข
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image008_0000.gif        4. 
           
Data
สัญลักษณ์ติดต่อกับผู้ใช้โดยการรับข้อมูลหรือแสดงข้อมูล 
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image009_0000.gif5.                                                    
Manual Input
สัญลักษณ์การรับข้อมูลจากผู้ใช้
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image010_0000.gif6.

Display
สัญลักษณ์การแสดงผลออกทางจอภาพ
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image011_0000.gif        7. 
                   
Predefined Process
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image012_0000.gif                 สัญลักษณ์ระบุการทำงานย่อยหรือฟังก์ชั่นย่อย
8.                  
Connect
สัญลักษณ์จุดเชื่อม
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image013_0000.gif        9.                               
                     Arrow
สัญลักษณ์เส้นทางการดำเนินงาน
      โดยการออกแบบผังงาน จะมี 3 แบบ ดังนี้
1แบบเรียงลำดับ จะเป็นลักษณะการทำงานที่เรียงกันไปเรื่อย ๆ โดยไม่มีการวนซ้ำ ดังรูป
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image014_0000.gif 
                                             

2.  แบบทางเลือก จะเป็นลักษณะการทำงานที่มีทางเลือก ซึ่งจะพบในเรื่องคำสั่งเงื่อนไข เช่น คำสั่ง if…else ดังรูป
http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image015_0000.gif               
                                                                                                           

3แบบการทำงานซ้ำ จะเป็นลักษณะการทำงานที่วนการทำงานแบบเดิม จนครบตามจำนวนที่ต้องการ ซึ้งจะพบในเรื่องคำสั่ง วนลูป เช่น คำสั่ง do….while ดังรูป

http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/imgs/clip_image016_0000.gif 












ภาษา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
 






Data  Store    Address
 
                                                                                                                     
                                                                                                                   
 







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                      
07
M1
R2
  (Mi = Mask Value)
รูปแบบที่ 2    BC   M1,D2(X2,B2)
47
M1
X2
B2
D2

การพิจารณาค่าของ 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
S      Integer
 
Fixed-point (Short Form)       
0    1               15                                            
 

Fixed-point (Long Form)       
S
 
D
 
D
 
D
 
D
 
0    1                                                        31                                                                                                      1   to   16  bytes                                                                                                                                                                                                                                                    Packed  Decimal
0       4            8

S

 

D

 

D   

 

D

 
Z               
 

Z

 
                                                                                                                                                                                                                                                                          Unpacked  Decimal
0       4         8        12

S       C                F

 
                                                                                                            Floating-point (Short Form)
S              C                             F
 
0    1               8                                     31
                                                                                                            (Long Form)
ch
 
Ch     ch
 
0     1              8                                               63       
                                                                                                                                               
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
Op-code       R1         R2
 
                                                RR-format
0             8          12         15
Op-code     R1       X2        B2           D2                                               
 
                                                                                    RX-format
0             8         12      16        20                      31
Op-code     R1       R3        B2           D2                               
 
                                                                                    RS-format
0             8       12       16       20                         31
Op-code              I2            B1           D1                               
 
                                                                                    SI-format
0             8                  16       20                         31
Op-code              L              B1           D1                           B2                   D2
 
                                                                                                                       
0             8                  16        20                          32              36                     47
Op-code       L1       L2        B1           D1                           B2                   D2
 
                                                                                                                       
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
Op-code              R1           X2           B2                  D2                   
 
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
  .                     .                       .
  .                     .                       .
  .                     .                       .

       L                         2              0              1                            904
 
            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

รูปแบบบรรทัดคำสั่ง

system prog1

·       ที่ 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

รูปแบบ RX-format
จะไปอ่านข้อมูลมาจากหน่วยความจำหลักที่ตำแหน่ง =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.            การใช้เครื่องหมายวรรคตอน