วันเสาร์ที่ 28 กุมภาพันธ์ พ.ศ. 2558

การคอมไพล์และรันโปรแกรม

การคอมไพล์และรันโปรแกรม
              โปรแกรมที่เขียนขึ้นโดยใช้ภาษาโปรแกรมต่างๆ นั้น เรียกว่า  รหัสต้นฉบับ (source code) ซึ่งอยู่ในรูปของข้อความตามหลักการเขียนโปรแกรมของภาษาโปรแกรมที่สามารถอ่าน และทำความเข้าใจได้
โดยมนุษย์เท่านั้น  ดังนั้นเพื่อให้เครื่องคอมพิวเตอร์สามารถเข้าใจโปรแกรมและปฏิบัติ   จึงต้องนำรหัสต้นฉบับมาผ่านกระบวนการแปลงให้อยู่ในรูปของ อ็อบเจกต์โค้ด  ที่ประกอบด้วยรหัสตัวเลข 0 และ 1 ก่อน เราเรียกกระบวนการแปลงดังกล่าวว่า การคอมไพล์โปรแกรม
               ดังนั้น  โปรแกรมจะต้องถูกคอมไพล์ด้วยคอมไพเลอร์ภาษาซี ( C compiler) เพื่อให้ได้
อ็อบเจกต์โค้ดก่อนจึงจะสามารถรันได้  นอกจากคอมไพล์  และรันโปรแกรมยังมีกระบวนการอื่นที่เกี่ยวข้อง
ก่อนที่คอมไพเลอร์ภาษาซีจะแปลงรหัสต้นฉบับให้อยู่ในอ็อบเจกต์โค้ด  ตัวประมวลผลก่อนซี(C preprocessor) จะถูกรันโดยอัตโนมัติ ในขั้นตอนนี้จะมีการดำเนินการต่างๆตามคำสั่งของตัวประมวลผลก่อนซี เช่น การอ่านแฟ้มส่วนหัว (header files) ต่างๆ เพื่อให้ถูกประมวลผลร่วมกับโปรแกรม เมื่อมีการใช้คำสั่ง  #include  หรือการแทนที่ข้อความด้วยค่าที่กำหนดให้เมื่อมีการใช้คำสั่ง #define เป็นต้น
               หลังจากโปรแกรมถูกคอมไพล์  อ็อบเจกต์โค้ดจะถูกเชื่อมโยงโดยโปรแกรมเชื่อมโยง (linker) เข้ากับส่วนของรหัสคำสั่ง (code) ที่อ้างอิงโดยโปรแกรม แต่ไม่ได้เป็นส่วนหนึ่งของโปรแกรม เช่น ไลบรารีมาตรฐาน (standard library) ต่างๆ เป็นต้น เพื่อให้อ็อบเจกต์โค้ดมีความสมบูรณ์ เกิดเป็นโปรแกรมที่สามารถรันได้ (executable program)
               ในขั้นตอนสุดท้าย  โปรแกรมที่สามารถรันได้จะถูกนำเข้าสู่หน่ายความจำของเครื่องคอมพิวเตอร์โดยโปรแกรมบรรจุ (loader) จากนั้นการรันโปรแกรมจึงเริ่มต้นขึ้น ซึ่งผลที่ได้จากการรันโปรแกรมขึ้นอยู่กับคำสั่งในโปรแกรมที่ปรากฏอยู่ในรหัสต้นฉบับที่เขียนโปรแกรมนั่นเอง

โครงสร้างพื้นฐานของภาษา C

โครงสร้างพื้นฐานของภาษา C

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

            โปรแกรมในภาษาซีทุกโปรแกรมจะประกอบด้วยฟังก์ชันอย่างน้อย หนึ่งฟังก์ชัน คือ ฟังก์ชัน main โดยโปรแกรมภาษาซีจะเริ่มทำงานที่ฟังก์ชัน main ก่อน ในแต่ละฟังก์ชันจะประกอบด้วย 
1. Function Heading
       ประกอบด้วยชื่อฟังก์ชัน และอาจมีรายการของ argument (บางคนเรียก parameter) อยู่ในวงเล็บ
2. Variable Declaration
        ส่วนประกาศตัวแปร สำหรับภาษาซี ตัวแปรหรือค่าคงที่ทุกตัว ที่ใช้ในโปรแกรมจะต้องมีการประกาศก่อนว่าจะใช้งานอย่างไร จะเก็บค่าในรูปแบบใดเช่น interger หรือ  real number
3. Compound Statements
        ส่วนของประโยคคำสั่งต่างๆ ซึ่งแบ่งเป็นประโยคเชิงซ้อน (compound statement) กับ ประโยคนิพจน์ (expression statment) โดยประโยคเชิงซ้อนจะอยู่ภายในวงเล็บปีกกาคู่หนึ่ง { และ } โดยในหนึ่งประโยคเชิงซ้อน จะมีประโยคนิพจน์ที่แยกจากกันด้วยเครื่องหมาย semicolon (;) หลายๆ ประโยครวมกัน และ อาจมีวงเล็บปีกกาใส่ประโยคเชิงซ้อนย่อยเข้าไปอีกได้ 


โครงสร้างพื้นฐานขอโครงสร้างพื้นฐานของภาษา C

โครงสร้างพื้นฐานขอโครงสร้างพื้นฐานของภาษา C

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

            โปรแกรมในภาษาซีทุกโปรแกรมจะประกอบด้วยฟังก์ชันอย่างน้อย หนึ่งฟังก์ชัน คือ ฟังก์ชัน main โดยโปรแกรมภาษาซีจะเริ่มทำงานที่ฟังก์ชัน main ก่อน ในแต่ละฟังก์ชันจะประกอบด้วย 
1. Function Heading
       ประกอบด้วยชื่อฟังก์ชัน และอาจมีรายการของ argument (บางคนเรียก parameter) อยู่ในวงเล็บ
2. Variable Declaration
        ส่วนประกาศตัวแปร สำหรับภาษาซี ตัวแปรหรือค่าคงที่ทุกตัว ที่ใช้ในโปรแกรมจะต้องมีการประกาศก่อนว่าจะใช้งานอย่างไร จะเก็บค่าในรูปแบบใดเช่น interger หรือ  real number
3. Compound Statements
        ส่วนของประโยคคำสั่งต่างๆ ซึ่งแบ่งเป็นประโยคเชิงซ้อน (compound statement) กับ ประโยคนิพจน์ (expression statment) โดยประโยคเชิงซ้อนจะอยู่ภายในวงเล็บปีกกาคู่หนึ่ง { และ } โดยในหนึ่งประโยคเชิงซ้อน จะมีประโยคนิพจน์ที่แยกจากกันด้วยเครื่องหมาย semicolon (;) หลายๆ ประโยครวมกัน และ อาจมีวงเล็บปีกกาใส่ประโยคเชิงซ้อนย่อยเข้าไปอีกได้ 


โครงสร้างพื้นฐานขอโครงสร้างพื้นฐานของภาษา C

โครงสร้างพื้นฐานขอโครงสร้างพื้นฐานของภาษา C

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

            โปรแกรมในภาษาซีทุกโปรแกรมจะประกอบด้วยฟังก์ชันอย่างน้อย หนึ่งฟังก์ชัน คือ ฟังก์ชัน main โดยโปรแกรมภาษาซีจะเริ่มทำงานที่ฟังก์ชัน main ก่อน ในแต่ละฟังก์ชันจะประกอบด้วย 
1. Function Heading
       ประกอบด้วยชื่อฟังก์ชัน และอาจมีรายการของ argument (บางคนเรียก parameter) อยู่ในวงเล็บ
2. Variable Declaration
        ส่วนประกาศตัวแปร สำหรับภาษาซี ตัวแปรหรือค่าคงที่ทุกตัว ที่ใช้ในโปรแกรมจะต้องมีการประกาศก่อนว่าจะใช้งานอย่างไร จะเก็บค่าในรูปแบบใดเช่น interger หรือ  real number
3. Compound Statements
        ส่วนของประโยคคำสั่งต่างๆ ซึ่งแบ่งเป็นประโยคเชิงซ้อน (compound statement) กับ ประโยคนิพจน์ (expression statment) โดยประโยคเชิงซ้อนจะอยู่ภายในวงเล็บปีกกาคู่หนึ่ง { และ } โดยในหนึ่งประโยคเชิงซ้อน จะมีประโยคนิพจน์ที่แยกจากกันด้วยเครื่องหมาย semicolon (;) หลายๆ ประโยครวมกัน และ อาจมีวงเล็บปีกกาใส่ประโยคเชิงซ้อนย่อยเข้าไปอีกได้ 


โครงสร้างพื้นฐานขอโครงสร้างพื้นฐานของภาษา C

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

            โปรแกรมในภาษาซีทุกโปรแกรมจะประกอบด้วยฟังก์ชันอย่างน้อย หนึ่งฟังก์ชัน คือ ฟังก์ชัน main โดยโปรแกรมภาษาซีจะเริ่มทำงานที่ฟังก์ชัน main ก่อน ในแต่ละฟังก์ชันจะประกอบด้วย 
1. Function Heading
       ประกอบด้วยชื่อฟังก์ชัน และอาจมีรายการของ argument (บางคนเรียก parameter) อยู่ในวงเล็บ
2. Variable Declaration
        ส่วนประกาศตัวแปร สำหรับภาษาซี ตัวแปรหรือค่าคงที่ทุกตัว ที่ใช้ในโปรแกรมจะต้องมีการประกาศก่อนว่าจะใช้งานอย่างไร จะเก็บค่าในรูปแบบใดเช่น interger หรือ  real number
3. Compound Statements
        ส่วนของประโยคคำสั่งต่างๆ ซึ่งแบ่งเป็นประโยคเชิงซ้อน (compound statement) กับ ประโยคนิพจน์ (expression statment) โดยประโยคเชิงซ้อนจะอยู่ภายในวงเล็บปีกกาคู่หนึ่ง { และ } โดยในหนึ่งประโยคเชิงซ้อน จะมีประโยคนิพจน์ที่แยกจากกันด้วยเครื่องหมาย semicolon (;) หลายๆ ประโยครวมกัน และ อาจมีวงเล็บปีกกาใส่ประโยคเชิงซ้อนย่อยเข้าไปอีกได้ 


ฝึกพื้นฐานภาษาซี (C) 04 : อาเรย์ (Array)

ฝึกพื้นฐานภาษาซี (C) 04 : อาเรย์ (Array)

ฝึกพื้นฐานภาษาซี (C) 05 : สตริง (String)

ฝึกพื้นฐานภาษาซี (C) 05 : สตริง (String)

ฝึกพื้นฐานภาษาซี (C) 03 : พื้นฐานตัวแปรและการรับ/แสดงผลข้อมูล

ฝึกพื้นฐานภาษาซี (C) 03 : พื้นฐานตัวแปรและการรับ/แสดงผลข้อมูล

ฝึกพื้นฐานภาษาซี (C) 01 : Intro และ เครื่องมือที่จำเป็น

ฝึกพื้นฐานภาษาซี (C) 01 : Intro และ เครื่องมือที่จำเป็น

การเขียนภาษาซี Part 1: Flowchart & Pseudo-code

การเขียนภาษาซี Part 1: Flowchart & Pseudo-code

ฝึกพื้นฐานภาษาซี (C) 09 : ฟังก์ชัน (Function)

ฝึกพื้นฐานภาษาซี (C) 09 : ฟังก์ชัน (Function)

ฝึกพื้นฐานภาษาซี (C) 02 : โครงสร้างพื้นฐานในภาษาซีและการคอมไพล์

ฝึกพื้นฐานภาษาซี (C) 02 : โครงสร้างพื้นฐานในภาษาซีและการคอมไพล์

วันศุกร์ที่ 27 กุมภาพันธ์ พ.ศ. 2558

ฝึกพื้นฐานภาษาซี (C) 08 : การดำเนินการพื้นฐาน

ฝึกพื้นฐานภาษาซี (C) 08 : การดำเนินการพื้นฐาน (Basic Operation)

ฝึกพื้นฐานภาษาซี (C) 06 : การตรวจสอบเงื่อนไข


ฝึกพื้นฐานภาษาซี (C) 06 : การตรวจสอบเงื่อนไข (IF, IF-ELSE, Switch Case)

ฝึกพื้นฐานภาษาซี (C) 07 : คำสั่งทำซ้ำ (Loop)

       
   ฝึกพื้นฐานภาษาซี (C) 07 : คำสั่งทำซ้ำ (Loop) For, While, Do While

ตัวดำเนินการและนิพจน์ในภาษาซี




ตัวดำเนินการและนิพจน์ในภาษาซี


การแปลงชนิดของข้อมูล

การแปลงชนิดของข้อมูล
              การเปลี่ยนชนิดของข้อมูล ทำได้หลายวิธีขึ้นกับชนิดของข้อมูล วิธีการที่จะกล่าวถึง คือ กำหนดชนิดหน้าข้อมูล มีรูปแบบคือ
                               ตัวแปร   =  (ชนิดข้อมูล) นิพจน์;
ตัวอย่างที่  
#include <stdio.h>
main()
{
      int a,b;
      a =  2.7 + 3.9 ;    /* บวกก่อน ได้ 6.5 แต่เนื่องจาก a เป็น int จึงตัดทศนิยมทิ้งได้ a เป็น 6  */
      printf("\n\ta = %d ",a);
      b = (int) 2.7 + (int) 3.9 ;  /* เปลี่ยน 2.7 เป็น int ได้ 2 และเปลี่ยน 3.9 เป็น int ได้ 3 บวกกันได้ 5  */
      printf("\n\tb = %d ",b);
      int num1 =5 , num2 =4;
      float x,y;
      x = num1/num2;         /* ผลหารได้ 1.25 แต่ทั้ง num1 และ num2 เป็น int จึงตัดเศษทิ้ง แล้วจึงกำหนดค่าให้ x จึงมีค่าเป็น 1 แต่ x เป็น float จึงมีทศนิยม  */
      printf("\n\tx = %f",x);      /* พิมพ์ x เป็นแบบ %f ถ้าไม่ระบุตำแหน่งจะให้ 6 ตำแหน่งจึงเป็น 1.000000 */
      y = (float)num1/num2;    /* เปลี่ยน num1 เป็น float ก่อน แล้วจึงหาร จึงได้ผลลัพธ์เป็น 1.25  */
      printf("\n\ty = %f",y);    /* พิมพ์แบบ float จึงได้ผลลัพธ์เป็น 1.250000
      getch();
}
ผลการทำงานของโปรแกรมได้เป็น
a  =  6
b  =  5
x  =  1.000000
y  =   1.250000

                กรณีที่นิพจน์นั้นประกอบด้วยข้อมูลหลายชนิด จะมีการเปลี่ยนเป็นข้อมูลชนิดเดียวกันก่อน จึงดำเนินการอื่นต่อ โดยการเปลี่ยนจะเปลี่ยนจากข้อมูลที่เล็กกว่าเป็นข้อมูลชนิดที่ใหญ่กว่า เช่นข้อมูลชนิด int มีการดำเนินการกับข้อมูลชนิด float จะมีการเปลี่ยนข้อมูลชนิด int เป็น float ก่อน จึงดำเนินการอื่นต่อไป

ตัวดำเนินการประกอบ

ตัวดำเนินการประกอบ
                นอกจากเครื่องหมายคำนวณตามปกติ และเครื่องหมายคำนวณแบบเพิ่ม/ลดค่าแล้ว การคำนวณทางคณิตศาสตร์ในภาษา C ยังมีเครื่องหมายประเภทที่เรียกว่า ลดรูปอีกด้วย ดังแสดงรายละเอียดในตารางต่อไปนี้



ตัวดำเนินการเอกภาค (unary operator)

ตัวดำเนินการเอกภาค  (unary operator)
      คือ ตัวดำเนินการที่ดำเนินกับตัวแปรตัวเดียว เช่น ++x หรือ ++x หรือ –y หรือ y— 
ซึ่งมีลักษณะการใช้ 2 แบบ คือ 
ตัวดำเนินการเอกภาคเติมหน้า( prefix mode ) เช่น ++x  หรือ y  ตัวดำเนินการแบบนี้จะทำงานก่อนที่จะทำตามคำสั่งอื่น  
 ตัวดำเนินการเอกภาคเติมหลัง (postfix mode) เช่น x++ หรือ y-- ตัวดำเนินการแบบนี้จะทำงานหลังจากที่ทำคำสั่งอื่น แล้ว

เครื่องหมายการคำนวณทางคณิตศาสตร์

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


ลำดับของเครื่องหมายในการคำนวณ
ส่วนใหญ่นิพจน์ที่เขียนขึ้นในโปรแกรมมักจะมีความซับซ้อน มีการดำเนินการหลายอย่างปะปนอยู่ภายในนิพจน์เดียวกัน ยกตัวอย่างเช่น a/b+15*c หรือ(a-b)*10/c&& d+5 ซึ้งผลลัพธ์จะออกมาเป็นอย่างไรนั้น ต้องพิจารณาลำดับความสำคัญก่อนหลังของเครื่องหมายที่ภาษา c กำหนดไว้ให้ ดังแสดงในตารางต่อไปนี้





ตัวดำเนินการตรรกะ (logical operator)

ตัวดำเนินการตรรกะ (logical operator)
       ตัวดำเนินการตรรกะใช้สำหรับเชื่อมโยงความสัมพันธ์ระหว่างนิพจน์ตรรกะตั้งแต่ 2 นิพจน์ขึ้นไป ผลจากการเชื่อมโยงดังกล่าว จะให้ผลลัพธ์เป็นจริงหรือเท็จ
ตัวดำเนินการ
ความหมาย
ตัวอย่าง
&&
และ(and)
x &&y
||
หรือ (or)
x || y
!
ไม่ (not)
x != y


ตัวดำเนินการสัมพันธ์ (relation operator)

ตัวดำเนินการสัมพันธ์ (relation operator)
    ใช้สำหรับเปรียบเทียบนิพจน์ ผลการเปรียบเทียบนิพจน์ที่มีตัวดำเนินการสัมพันธ์จะให้ผลลัพธ์เป็นจริงหรือเท็จ
ตัวดำเนินการ
ตัวอย่าง
การทำงาน
= =
เท่ากับ
x = = y
> 
มากกว่า
x > y
< 
น้อยกว่า
x < y
>=
มากกว่าหรือเท่ากับ
x >= y
<=
น้อยกว่า หรือเท่ากับ
x<= y
!=
ไม่เท่ากับ
x != y
        สำหรับนิพจน์ที่มีการใช้ตัวดำเนินการสัมพันธ์ เมื่อการเปรียบเทียบได้ผลลัพธ์เท่ากับศูนย์

จะแปลความหมายว่าเท็จ แต่หากผลลัพธ์เท่ากับหนึ่ง จะแปลความหมายว่าจริง

ตัวดำเนินการ

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

1.                พีชคณิต ( +, -, *, /, % )
2.                การกำหนดค่า ( = )
3.                การกำหนดค่าแต่งเติม ( +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= )
4.                ตรรกะระดับบิต ( ~ ,  & , | , ^ )
5.                การเลื่อนระดับบิต ( << ,  >> )
6.                ตรรกะแบบบูล ( !, &&, || )
7.                การประเมินค่าเชิงเงื่อนไข ( ?: )
8.                การทดสอบภาวะเท่ากัน ( ==, != )
9.                การรวมอาร์กิวเมนต์ฟังก์ชัน ( ( ) )
10.           การเพิ่มค่าและการลดค่า ( ++, -- )
11.           การเลือกสมาชิกในวัตถุ ( . , -> )
12.           ขนาดของวัตถุ ( sizeof )
13.           ความสัมพันธ์เชิงอันดับ ( <,  <= ,  >,  >= )
14.           การอ้างอิงและการถูกอ้างอิง ( &, *, [ ] )
15.           การลำดับ ( , )
16.           การจัดกลุ่มนิพจน์ย่อย ( ( ) )
17.          การแปลงชนิดข้อมูล ( ( ) )

ค่าคงที่ (constant)

ค่าคงที่ (constant)
          ตัวคงที่ (constant)
                ตัวคงที่มีลักษณะคล้ายตัวแปร แตกต่างจากตัวแปรตรงที่ ค่าที่เก็บในตัวคงที่จะคงเดิมไม่มีการเปลี่ยนแปลงจนกระทั่งจบโปรแกรม แต่ค่าที่เก็บในตัวแปรสามารถเปลี่ยนแปลงได้ตลอดเวลา
การประกาศตัวคงที่
                การประกาศตัวคงที่ทำได้ 2 วิธี ดังนี้
1. ใช้คำหลัก const   ตามรูปแบบดังนี้
                              const   ชนิดข้อมูล  ชื่อตัวแปร = ค่าคงที่เก็บในตัวแปร;
ตัวอย่าง  การประกาศตัวคงที่โดยใช้คำหลัก  const
         const   int  count = 100;             //กำหนดให้ count  เป็นตัวคงที่ชนิด  int  และเก็บค่า 100
         const   float  vat = 0.07;             //กำหนดให้  vat  เป็นตัวคงที่ชนิด  float  และเก็บค่า  0.07
          const   float  pi = 3.14159;       //กำหนดให้  pi  เป็นตัวคงที่ชนิด  float  และเก็บค่า  3.14159
 2. ใช้ตัวประมวลผลก่อน ตามรูปแบบดังนี้
                                #define   ชื่อตัวคงที่   ค่าคงที่
                ตัวอย่าง  การประกาศตัวคงที่ โดยใช้ข้อความสั่งประมวลผลก่อน
           #define   COUNT   100          //กำหนดให้   COUNT เป็นตัวคงที่ชนิด   int   และเก็บค่า   100
           #define   VAT   0.07              //กำหนดให้   VAT   เป็นตัวคงที่ชนิด   float   และเก็บค่า   0.07

           #define   PI   3.14159            //กำหนดให้   PI    เป็นตัวคงที่ชนิด   float   และเก็บค่า   3.14159

การแสดงผลและการรับข้อมูล

การแสดงผลและการรับข้อมูล
แสดงผลออกทางหน้าจอ 
    คำสั่ง printf() 
           คำสั่ง printf ถือว่าเป็นคำสั่งพื้นฐานที่สุดในการแสดงผลข้อมูลทุกชนิดออกทางหน้าจอ ไม่ว่าจะเป็นจำนวนเต็ม( int ) , ทศนิยม ( float ) , ข้อความ ( string ) หรืออักขระ นอกจากนี้คำสั่งยังมีความยืดหยุ่นสูง โดยเราสามาถกำหนดหรือจัดรูปแบบการแสดงผลให้มีระเบียบหรือเหมาะสมตามความต้องการได้อีกด้วย รูปแบบการเรียกใช้คำสั่ง printf แสดงได้ดังนี้
printf(“ format ” , variable);
format : ข้อมูลที่ต้องการแสดงออกทางหน้าจอโดยข้อมูลนี้ต้องเขียนไว้ในเครื่องหมาย “ ” ข้อมูลที่สามารถแสดงผลได้มีอยู่ 2 ประเภท คือ ข้อความธรรมดา และค่าที่เก็บไว้ในตัวแปร ซึ่งถ้าเป็นค่าที่เก็บไว้ในตัวแปรต้องใส่รหัสควบคุมรูปแบบให้ตรงกับชนิดของข้อมูลที่เก็บไว้ในตัวแปรนั้นด้วย
variable : ตัวแปรหรือนิพจน์ที่ต้องการนำค่าไปแสดงผลให้ตรงกับรหัสควบคุมรูปแบบที่กำหนดไว้
รหัสควบคุมรูปแบบการแสดงผลค่าของตัวแปรออกทางหน้าจอ แสดงได้ดังนี้
รหัสควบคุมรูปแบบ
การนำไปใช้งาน
%d
สำหรับแสดงผลค่าของตัวแปรชนิดจำนวนเต็ม ( int, short, unsigned short, long, unsigned long)
%u
สำหรับแสดงผลตัวเลขจำนวนเต็มบวก ( unsigned short, unsigned long )
%o
สำหรับแสดงผลออกมาในรูปแบบของเลขฐานแปด
%x
สำหรับแสดงผลออกมาในรูปแบบของเลขฐานสิบหก
%f
สำหรับแสดงผลค่าของตัวแปรชนิดจำนวนทศนิยม ( float, double, long double )
%e
สำหรับแสดงผลตัวเลขทศนิยมออกมาในรูปแบบของ ( E หรือ e ) ยกกำลัง ( float, double, long double )
%c
สำหรับแสดงผลอักขระ 1 ตัว ( char )
%s
สำหรับแสดงผลข้อความ ( string หรืออักขระมากกว่า 1 ตัว)
%p
สำหรับแสดงผลตัวชี้ตำแหน่ง ( pointer )
แสดงผลให้เป็นระเบียบด้วยอักขระควบคุมการแสดงผล 
      อักขระควบคุมการแสดงผลหลายรูปแบบด้วยกัน ดังแสดงต่อไปนี้
อักขระควบคุมการแสดงผล
ความหมาย
\n
ขึ้นบรรทัดใหม่
\t
เว้นช่องว่างเป็นระยะ 1 แท็บ (6 ตัวอักษร)
\r
กำหนดให้เคอร์เซอร์ไปอยู่ต้นบรรทัด
\f
เว้นช่องว่างเป็นระยะ 1 หน้าจอ
\b
ลบอักขระสุดท้ายออก 1 ตัว
ควบคุมขนาดพื้นที่แสดงผล
         ตามปกติในการแสดงผลโปรแกรมจะเตรียมพื้นที่ให้พอดีกับข้อความ เช่น ถ้าจะแสดงข้อความ HELLO ซึ่งมี 5 ตัวอักษร โปรแกรมจะจัดเตรียมพื้นที่ไว้ให้พอดีสำหรับ 5 ตัวอักษร ดังแสดงรูปต่อไปนี้
H
E
L
L
O
แต่เราสามารถเพิ่มพื้นที่ในการแสดงผลได้ตามต้องการ เช่น กำหนดให้แสดงข้อความ HELLO ในพื้นที่ขนาด 8 ตัวอักษร โปรแกรมจะแสดงข้อความชิดด้านขวาของพื้นที่ที่จองไว้ โดยจะเว้นพื้นที่ว่างทางด้านซ้ายอีก 3 ช่องที่เหลือเอาไว้ ดังรูป



H
E
L
L
O
วิธีกำหนดขนาดพื้นที่การแสดงผล ให้ใส่ตัวเลขขนาดของพื้นที่ที่ต้องการไว้หลังเครื่องหมาย % ในรหัสควบคุมรูปแบบ
ควบคุมตำแหน่งตัวเลขหลังจุดทศนิยม 
          นอกจากนี้ในการแสดงผลตัวเลขหลังจุดทศนิยม   ตามปกติถ้าไม่ได้กำหนดค่าใด ๆ เพิ่มเติม   เมื่อใช้รหัสควบคุมรูปแบบ %f โปรแกรมจะแสดงตัวเลขทศนิยมทั้งหมด 6 ตำแหน่ง ในกรณีที่เราต้องการตัดให้แสดงตัวเลขหลังจุดทศนิยมเท่าที่จำเป็น (เช่น 2 หรือ 3 ตำแหน่ง) ก็สามารถกำหนดค่าเพิ่มไปกับรหัสควบคุมรูปแบบได้ ดังต่อไปนี้
% . nf
n : จำนวนตัวเลขหลังจุดทศนิยมที่ต้องการให้แสดงผล
รับข้อมูลจากคีย์บอร์ด 
         การทำงานของโปรแกรมส่วนใหญ่มักจะเป็นการเชื่อมโยงกับผู้ใช้แบบ 2 ทิศทาง นั่นก็คือ ทั้งภาคของแสดงผลการทำงานออกทางหน้าจอ และภาคของการรับข้อมูลจากผู้ใช้เข้ามาทางคีย์บอร์ด เพื่อร่วมในการประมวลผลของโปรแกรม ซึ่งในภาคของการรับข้อมูลจากผู้ใช้
คำสั่ง scanf()
          ในภาษาซี การรับข้อมูลจากคีย์บอร์ดสามารถทำได้โดยการเรียกใช้ฟังก์ชัน scanf() ซึ่งเป็นฟังก์ชันมาตรฐานสำหรับรับข้อมูลจากคีย์บอร์ด โดยสามารถรับข้อมูลได้ทุกประเภท ไม่ว่าจะเป็นจำนวนเต็ม ( int ) , ทศนิยม ( float ) ,อักขระ ( char ) หรือข้อความก็ตาม รูปแบบการเรียกใช้คำสั่ง scanf() คล้ายกับการเรียกใช้คำสั่ง printf() ดังแสดงต่อไปนี้
scanf(“format” , &variable) ;
format : การใช้รหัสควบคุมรูปแบบ เพื่อกำหนดชนิดของข้อมูลที่จะรับเข้ามาจากคีย์บอร์ด โดยรหัสควบคุมรูปแบบจะใช้ชุดเดียวกับรหัสควบคุมรูปแบบของคำสั่ง printf()
variable : ตัวแปรที่จะใช้เก็บค่าข้อมูลที่รับเข้ามาจากคีย์บอร์ด โดยชนิดของตัวแปรจะต้องตรงกับรหัสควบคุมรูปแบบที่กำหนดไว้ นอกจากนี้ หน้าชื่อของตัวแปรจะต้องนำหน้าด้วยเครื่องหมาย & ยกเว้นตัวแปรสตริงสำหรับเก็บข้อความเท่านั้นที่ไม่ต้องนำหน้าด้วยเครื่องหมาย &