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

สรุปบทที่9
เรื่อง ข้อมูลชนิดโครงสร้าง และการจัดการแฟ้มข้อมูล

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

         ฟังก์ชัน fscanf() เป็นฟังก์ชันที่นำมาใช้สำหรับการอ่านข้อมูลจากแฟ้ม


สรุปบทที่ 8
เรื่อง การสร้างฟังก์ชันและตัวแปรชนิดพอยน์เตอร์ 

การเขียนโปรแกรมในภาษาซี  จำเป็นต้องแบ่งโปรแกรมออกเป็น ฟังก์ชันย่อยๆ ก็เพราะว่า
  1. เพื่อเป็นไปตามหลักการของการโปรแกรมเชิงโครงสร้าง
  2. เพื่อง่ายต่อการตรวจสอบ และการบำรุงรักษา
  3. เพื่อหลีกเลี่ยงการเขียนชุดคำสั่งเดิม ที่ทำงานซ้ำๆ

  4. เพื่อสร้างกลุ่มคำสั่งประมวลผลเฉพาะงาน



ฟังก์ชัน มีความแตกต่างกับโพรซีเยอร์ คือ ฟังก์ชันจะต้องมีการคืนค่ากลับเสมอ โดยชนิดข้อมูลที่คืนค่ากลับไป อาจมีชนิดข้อมูลประเภท int, float หรือ char เป็นต้น
ปกติชนิดข้อมูลที่คืนค่ากลับไปยังฟังก์ชัน main() คือเลขจำนวนเต็ม หรือ int 
การเข้าถึงฟังก์ชัน โดยปกติจะมีอยู่ 3 รูปแบบด้วยกันคือ
1. ฟังก์ชันที่ไม่มีการส่งผ่านค่าใดๆลงไป
2. ฟังก์ชันที่มีการส่งผ่านค่าทางเดียว
3. ฟังก์ชันที่จะส่งผ่านค่าไปและคืนค่ากลับมา
กรณีที่โปรแกรมได้นำฟังก์ชันที่สร้างขึ้นเอง อยู่ถัดจากฟังก์ชัน main() จำเป็นต้องประกาศฟังก์ชันต้นแบบที่ต้นโปรแกรมด้วย 
พอยน์เตอร์หรือตัวชี้ เป็นตัวแปรประเภทหนึ่ง ที่มีความแตกต่างจากตัวแปรเก็บข้อมูลทั่วไป ซึ่งแทนที่จะจัดเก็บข้อมูล กลับเก็บที่อยู่ของตัวแปรอื่นแทน
เครื่องหมาย & ที่ใช้กับพอยน์เตอร์ หมายความว่า “ที่อยู่ของ
เครื่องหมาย * ที่ใช้กับพอยน์เตอร์ หมายความว่า “ค่าที่บรรจุอยู่ในแอดเดรสนั้น
ตามปกติ โปรแกรมทั่วไปมิได้ใช้ประโยชน์จากพอยน์เตอร์ แต่พอยน์เตอร์มักนำไปใช้จัดการกับโครงสร้างข้อมูลที่ซับซ้อนอย่างสแต็ก คิว และลิงก์ลิสต์ เป็นต้น

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

ตัวแปร อาร์เรย์แบบ 1 มิติ และ อาร์เรย์แบบ 2 มิติ มักถูกนำมาใช้งานมากที่สุด






ข้อความหรือสตริง ก็คืออาร์เรย์ของตัวอักขระ
ฟังก์ชันจัดการสตริง ถูกประกาศใช้งานอยู่ในเฮดเดอร์ไฟล์ <string.h>
ฟังก์ชั่น strcpy() นำมาใช้เพื่อคัดลอกข้อความไปเก็บไว้ในตัวแปร หรือคัดลอกจากตัวแปรสตริงหนึ่งไปเก็บไว้ยังตัวแปรของอีกสตริงหนึ่ง
ฟังก์ชัน strlen() เป็นฟังก์ชันที่นำมาใช้เพื่อนับจำนวนตัวอักขระที่บรรจุอยู่ในสตริง
ฟังก์ชัน strcmp() เป็นฟังก์ชันที่นำมาใช้เพื่อเปรียบเทียบสตริง 2 ตัว ว่าตรงกันหรือไม่
ฟังก์ชัน strcat()  เป็นฟังก์ชันที่นำมาใช้เพื่อผนวกสตริง 2 สตริงเข้าด้วยกัน
ฟังก์ชัน strlwr() เป็นฟังก์ชันที่นำมาใช้แปลงข้อความให้เป็นตัวพิมพ์เล็ก
ฟังก์ชัน strupr() เป็นฟังก์ชันที่นำมาใช้แปลงข้อความให้เป็นตัวพิมพ์ใหญ่
ฟังก์ชัน strrev() เป็นฟังก์ชันที่นำมาใช้งานเพื่อสลับตำแหน่งข้อความแบบกลับหัว
ฟังก์ชัน gets() เป็นฟังก์ชันที่นำมาใช้เพื่อรับค่าข้อความสตริง ซึ่งสามารถบรรจุข้อความระหว่างสตริงได้
ฟังก์ชัน puts() เป็นฟังก์ชันที่นำมาใช้พิมพ์ข้อความ หรือตัวแปรสตริง
ฟังก์ชันที่นำมาใช้เพื่อแปลงข้อความสตริงที่เก็บตัวเลข มาเป็นค่าตัวเลขที่สามารถนำไปคำนวณได้ จะถูกประกาศใช้งานอยู่ในเฮดเดอร์ไฟล์ <stdlib.h>
ฟังก์ชัน atof() เป็นฟังก์ชันที่นำมาใช้แปลงข้อความตัวเลขเป็นค่าตัวเลขที่นำมาคำนวณได้ โดยมีชนิดข้อมูลเป็น double
ฟังก์ชัน atoi() เป็นฟังก์ชันที่นำมาใช้แปลงข้อความตัวเลขเป็นค่าตัวเลขที่นำมาคำนวณได้ โดยมีชนิดข้อมูลเป็น int
ฟังก์ชัน atoll() เป็นฟังก์ชันที่นำมาใช้แปลงข้อความตัวเลขเป็นตัวเลขที่นำมาคำนวณได้ โดยมีชนิดข้อมูลเป็น long int

สรุปบทที่ 6
เรื่อง  คำสั่งควบคุมเงื่อนไขและการทำงานเป็นรอบ

  ประโยคเงื่อนไข if  มีรูปแบบการเขียนในลักษณะต่างๆดังนี้
1.การสร้างเงื่อนไขประโยคเดียว
2.การสร้างเงื่อนไข  if…else
3.การสร้างเงื่อนไข if…else แบบหลายกรณี
4.การสร้างเงือนไขแบบซ้อน (Netsted if)
นอกจาก if-else แล้ว ภาษาซียังมีคำสั่งควบคุมเงื่อนไขอีกตัวหนึ่งคือ switch….case
อย่างไรก็ตาม switch….case นำมาใช้งานได้ดีกับโปรแกรมที่มีรายการเมนูให้เลือกและไม่สามารถนำมาใช้ตรวจสอบเงื่อนไขที่ใช้ตัวแปร และเลขจำจวนจริงได้
ภาษาซี มีชุดคำสั่งทำงานเป็นรอบ ดังนี้
การทำงานเป็นรอบด้วยลูป while จะทำการตรวจสอบเงื่อนไขก่อนดำเนินการเสมอ ดังนั้น ชุดคำสั่งภายในลูปอาจมิได้ถูกประมวลผลเลยก็ได้ หากตรวจสอบเงื่อนไขครั้งแรกแล้วมีค่าเป็นเท็จ
การทำงานเป็นรอบด้วยลูป do-while จะกระทำชุดคำสั่งภายในลูปอย่างน้อยรอบหนึ่งเสมอ
การทำงานเป็นรอบด้วยลูป for เหมาะกับกรณีมีจำนวนรอบการทำงานที่แน่นอน
การใช้คำสั่ง
คำสั่ง Break สามารถนำมาใช้เพื่อสั่งให้หลุดออกจากลูปตามเงื่อนไขที่ได้กำหนดไว้

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

วันจันทร์ที่ 26 ธันวาคม พ.ศ. 2559


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


ฟังก์ชั่นการรับและแสดงผลข้อมูล

   ในภาษาซี ได้เตรียมฟังก์ชั่นเพื่อการรับและแสดงผลข้อมูลอยู่ หลายคำสั่งด้วยกัน ซึ่งสามารถนำมาเรียกใช้งานตามความเหมาะสม
   1. ฟังก์ชั่น printf
     เป็นฟั่งชั่นที่ใช้สำหรับแสดงผล
   ข้อมูลที่เป็นตัวอักขระ ข้อความ หรือค่าตัวแปร โดยที่ formatControlString  คือรูปแบบที่ นำมาใช้สำหรับควบคุมการพิมพ์ รวมถึงข้อความที่ต้องการสั่งพิมพ์ ซึ่งจะต้องอยู่ภายในเครื่องหมาย " "
   Printf  คือตัวแปรที่นำมาพิมพ์ ซึ่งจะจับคู่กับ formatControlString ที่สัมพันธ์กันอย่างถูกต้องใส่รูป
   นอกจากนี้แล้ว ยังสามารถผนวกรหัสควบคุม (Escape Sequence) เข้าไปใน FormatControlString ได้อีก ซึ่งรหัสควบคุมเหล่านี้ จะเขียนด้วยเครื่องหมาย และตามด้วยรหัสควบคุม ทั้งนี้ต้องระมัดระวังในเรื่องของการจับคู่ระหว่างรหัสรูปแบบขัอมูล ที่ต้องตรงกับชนิดตัวแปรสั่งพิมพ์


2. ฟังก์ชั่น Scanf()

    เป็นฟังก์ชั่นที่ใช้สำหรับรับค่าข้อมูลจากทางแป้นพิมพ์ เพื่อจัดเก็บไว้ในตัวแปร
   นอกจากนี้ ในการรับข้อมูลทางแป้นพิมพ์ด้วยฟังก์ชั่น scanf() จะต้องพิจารณาสิ่งต่อไปนี้
   1. ถ้าข้อมูลที่รับ เป็นชนิดตัวเลข ซึ่งนำไปใช้ในการคำนวณได้ จะต้องใส่เครื่องหมาย นำหน้าตัวแปรเสมอ
   2. ถ้าข้อมูลที่รับ เป็นข้อความ อาจไม่ต้องใส่เครื่องหมาย นำหน้าตัวแปรก็ได้

3. ฟังก์ชั่น getchar()   เป็นฟังก์ชั่นที่นำมาสำหรับรับค่าตัวอักษรหรืออักขระ 1 ตัว โดยค่าที่ป้อนลงไปจะแสดงให้เห็นทางจอภาพ และจะต้องเคาะ Enter เพื่อแสดงถึงการสิ้นสุดการป้อน

   ข้อมูลด้วย กรณีที่มีการกรอกตัวอักษรมากกว่า 1 ตัว จะมีเพียงอักษรตัวแรกเท่านั้น ที่จะถูกจัดเก็บไว้ในตัวแปร
    4. ฟังก์ชั่น putchar()
    เป็นฟังก์ชั่นที่ถูกนำมาใช้เพื่อสั่งพิมพ์ค่าตัวแปรอักขระที่ถูกป้อนด้วย getchar() หรือนำมาพิมพ์หัสพิเศษได้


สรุปบทที่4

เรื่อง นิพจน์และตัวดำเนินการ


นิพจน์ (Expression)

   นิพจน์ในที่นี้หมายถึง นิพจน์์ทาง  คณิตศาสตร์ ซึ่งสามารถพบเห็นได้จากสูตรการคำนวณตัวเลขต่างๆ ดังนั้น นิพจน์
    จึงประกอบด้วย ตัวแปร ค่าคงที่ และตัวดำเนินการทางคณิตศาสตร์มาประกอบรวมกัน
    จากนิพจน์คณิตศาสตร์ข้างต้น พบว่า ทั้ง and, score และ income จะเป็นตัวแปรที่ใช้เก็บผลลัพธ์จากก คำนวณ ส่วนนิพจน์ด้านขวาก็จะเป็นนิพจน์
   แบบหลายตัวแปร ซึ่งสามารถมีได้ทั้งตัวแปรและค่าคงที่ รวมถึงตัวดำเนินการคณิตศาสตร์  เช่น + - * / เป็นต้น ในการสร้างสูตรคำนวณค่าตัวเลข โดยเฉพาะสูตรคำนวณที่มีความซับซ้อน ต้องระมัดระวังในการจัด
   ลำดับนิพจน์ เพื่อให้คอมพิวเตอร์
   ประมวลผลอย่างถูกต้อง ทั้งนี้
   ตัวดำเนินการต่างๆ ที่นำมาใช้เพื่อการคำนวณนั้น แต่ละตัวจะมีลำดับความสำคัญที่แตกต่างกัน
ตัวดำเนินการ (Operators)
     ในภาษาซี มีตัวดำเนินการหลากหลายชนิด แต่ในที่นี้กล่าวถึงตัวดำเนินการพื้น
    ฐานที่สำคัญ ดังต่อไปนี้

   1. ตัวดำเนินการทางคณิตศาสตร์

   2. ตัวดำเนินการยูนารี

   3. ตัวดำเนินการเปรียบเทียบ

   4. ตัวดำเนินการตรรกะ

   5. ตัวดำเนินการกำหนดค่า
    แบบผสม


   6. ตัวดำเนินการเงื่อนไข




1. ตัวดำเนินการทางคณิตศาสตร์

    จัดเป็นตัวดำเนินการพื้นฐาน ที่นำมาใช้เพื่อการคำนวณ เช่น บวก ลบ คูณ หาญ และ โมดูลัส (หาญเพื่อเอาเศษ)


2. ตัวดำเนินการยูนารี


          ตัวดำเนินการยูนารี ตัวแรกที่กล่าวถึง คือ เครื่องหมายลบ ที่นำมาใช้นำหน้าค่าตัวเลข หรือนำหน้า ค่าตัวแปร ซึ่งจะส่งผลให้ค่าถูกเปลี่ยนเป็นค่าติดลบโดยทันที


3. ตัวดำเนินการเปรียบเทียบ


     ในภาษาซีจะมีตัวกำเนินการที่นำมาใช้เพื่อการเปรียบเทียบค่า

4. ตัวดำเนินตรรกะ
   นอกจากตัวดำเนินการเปรียบเทียบแล้ว เรายังสามารถนำตัวดำเนินการตรรกะมาใช้ร่วมกันได้

5. ตัวดำเนินการกำหนดค่า

      แบบผสมจากความรู้ที่ผ่านมาได้เรียนรู้ถึงการกำหนดค่าให้กับตัวแปรมาบ้างแล้ว แต่ในภาษาซียังมีตัวดำเนินการกำหนดค่าแบบผสม (Compound Assignment Operators)

6. ตัวดำเนินการเงื่อนไข

    ตัวดำเนินการเงื่อนไข จะนำมาทดสอบค่านิพจน์ทางตรรกะ ว่าจริงหรือเท็จ

>>ตัวดำเนินการกับลำดับความสำคัญ<<

   ตัวดำเนินการแต่ละตัวจะมีลำดับความสำคัญก่อนหลังที่แตกต่างกัน โดยการประมวลผลกระทำจากตัวดำเนินการที่มีลำดับความสำคัญสูงก่อน แต่ถ้ากรณีที่มีลำดับความสำคัญเท่ากัน ตามปกติจะกระทำกับตัวดำเนินการจากซ้ายไปขวา กล่าวคือ จะกระทำกับตัวดำเนินการ ที่พบก่อน

>>การเปลี่ยนชนิดข้อมูล<<
ในภาษา ยังมีตัวดำเนินการที่ เรียกว่า การแคสต์ (Casting) เพื่อแปลงชนิดข้อมูลจากชนิดหนึ่ง มาเป็นอีกชนิดหนึ่งได้ วิธีทำคือ ให้ระบุชนิดข้อมูลที่ต้องการภายใน   เครื่องหมายวงเล็บ หน้านิพจน์ที่ ต้องการ















สรุปบทที่ 3
เรื่อง  องค์ประกอบของภาษาซี ตัวแปร และชนิดข้อมูล
         ภาษาชีถูกพัฒนาขึ้นโดย เดนนิส ริตชี ที่ห้องปฏิบัติการเบลล์ ซึ่งมีต้นแบบมาจากภาษาบีที่อยู่บนรากฐานของภาษาบีซีพีแอล
         ทางสถาบัน ANSI ได้รับรองมาตรฐานภาษาซีขึ้นมา ภายใต้ชื่อ ANSI-C
         ปัจจุบันได้มีการพัฒนาภาษาซีให้มีประสิทธิภาพมากขึ้นเป็นเวอร์ชั่นต่างๆ มากมายด้วยการนำมาพัฒนาต่อยอดเป็น C++ หรือ C# โดยได้เพิ่มชุดคำสั่งที่สนับสนุนการโปรแกรมเชิงวัตถุ และยังคงรองรับชุดคำสั่งมาตรฐานของภาษาซีดั้งเดิมอยู่ด้วย
    ภาษาซีมีคุณสมบัติที่โดดเด่นกว่าภาษาระดับสูงทั่วไปในหลายๆ ด้านด้วยกัน  คือ
    1.           เป็นภาษาที่ไม่ขึ้นกับฮาร์ดแวร์และระบบปฏิบัติการ
    2.           เป็นภาษาที่มีความยืดหยุ่นสูงมาก 
    3.           มีประสิทธิภาพสูง
    4.           ความสามารถในด้านการโปรแกรมแบบโมดูล 
    5.           มีตัวแปรชนิดพอยน์เตอร์
    6.           ภาษาซีมองตัวอักษรตัวพิมพ์เล็กและตัวพิมพ์ใหญ่แตกต่างกัน ( Case Sensitive )
    โครงสร้างโปรแกรมในภาษาซี แบ่งออกเป็นส่วนต่างๆ ดังนี้
1.           ตัวประมวลผลก่อน ( Preprocessor Directive )
2.           ฟังก์ชันหลัก
3.           ชุดคำสั่ง
4.           คำอธิบายโปรแกรม


กฎเกณฑ์ที่ต้องรู้ในการเริ่มต้นฝึกหัดเขียนโปรแกรมภาษาซี คือ

    1.           ที่ส่วนหัวโปรแกรม จะต้องกำหนดตัวประมวลผลก่อนเสมอ
    2.           ชุดคำสั่งในภาษาซี จะใช้อักษรตัวพิมพ์เล็กทั้งหมด
    3.           ตัวแปรที่ใช้งาน ต้องถูกประกาศชนิดข้อมูลไว้เสมอ
    4.           ภายในโปรแกรม จะต้องมีอย่างน้อย ฟังก์ชันเสมอ ซึ่งก็คือฟังก์ชัน main()นั่นเอง
    5.           สามารถใช้เครื่องหมายปีกกา{ เพื่อบอกจุดเริ่มต้นของชุดคำสั่ง และเครื่องหมายปีกกาปิด}
    6.           เมื่อเขียนชุดคำสั่งเสร็จแล้ว ต้องจบด้วยเครื่องหมาย ;
    7.           สามารถอธิบายโปรแกรมตามความจำเป็นด้วยการใช้เครื่องหมาย/*…..*/ หรือ //….
ตัวแปร คือ ชื่อที่ตั้งขึ้นตามกฎการตั้งชื่อตัวแปร เพื่อนำมาใช้จัดเก็บข้อมูล และอ้างอิงใช้งานภายในโปรแกรม
กฎเกณฑ์การตั้งตัวแปรในภาษาซี ประกอบด้วย
    1.           สามรถใช้ตัวอักษร A ถึง หรือ ถึง รวมทั้งตัวเลข ถึง และเครื่องหมาย _Underscore ) มาใช้เพื่อการตั้งชื่อตัวแปรได้ แต่มีเงื่อนไขว่า ห้ามใช้ตัวเลขนำหน้าชื่อตัวแปร ตัวอย่างเช่น 1 digit ถือว่าผิด แต่ถ้าตั้งชื่อใหม่เป็น digit1 หรือ digit1 ถือว่าถูกต้อง
    2.           ชื่อตัวแปรสามารถมีความยาวได้ถึง 31 ตัวอักษร ( กรณีเป็น ANSI-C )
    3.           

ชื่อตัวแปร จะต้องไม่ตรงกับคำสงวน ( Reserved Words )