วันอังคารที่ 21 กุมภาพันธ์ พ.ศ. 2560

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

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


          ฟังก์ชัน fopen() นำมาใช้เพื่อการเปิดแฟ้มข้อมูลตามโหมดที่ต้องการ


          ฟังก์ชัน fclose() นำมาใช้เพื่อการปิดข้อมูล


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




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


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

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

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



สรุปบทที่ 7 อาร์เรย์และฟังก์ชั่นจัดการสตริง

สรุปบทที่ 7 อาร์เรย์และฟังก์ชั่นจัดการสตริง
อาร์เรย์หรือตัวแปรชุดเป็นตัวแปรประเภทหนึ่งที่เหมาะกับการนำไปใช้เพื่อการประมวล  ผลกลุ่มชุดข้อมูลเดียวกัน ดังนั้น จึงมีแนวทาง  การแก้ไขเพื่อให้เราสามารถอ้างอิงตัวแปร เพื่อนำมาใช้งานได้ง่ายขึ้นที่เรียกว่าตัวแปรชนิดอาร์เรย์ โดยอาร์เรย์จะดำเนินการเสมือน  กับแบ่งหน่วยความจำออกเป็นช่องๆ  (Elements) และจะใช้เลขดัชนี (Index) หรือที่  เรียกว่า  ซับสคริปต์ (Supscipt) เป็นตัวชี้  ตำแหน่งของอิลิเมนต์นั้นๆ ซึ่งภาษาซีจะใช้  สัญลักษณ์  [n] เป็นตัวชี้ระบุตำแหน่ง

ชนิดของตัวแปรอาร์เรย์: อาร์เรย์ ยังสามารถประกาศได้หลายชนิดด้วยกันซึ่งประกอบด้วยอาร์ 1 มิติอาร์เรย์ 2  มิติ และอาร์เรย์ 3 มิติ แต่โดยส่วยใหญ่  อาร์เรย์ 1 มิติและอาร์เรย์ 2 มิติ จะถูกนำมาใช้งานมากที่สุด 1. อาร์เรย์ 1 มิติ (One Dimension Array) เป็น

ตัวแปรอาร์เรย์แบบมิติเดียว ที่มีลักษณะ  เสมือนตู้เก็บ

ความจำที่เรียงกันะป็นลำดับ


2. 
อาร์เรย์ 2 มิติ (Two Dimension Array) รูปแบบของอาร์เรย์ 1 มิติมาแล้ว ซึ่งจะพบว่าจะจัดเก็บข้อมูลเป็นแนวราบแบบแถวลำดับ 

  
ฟังก์ชั่นจัดการสตริง: สตริงหรือข้อความจะถูกจัดเก็บอยู่ในลักษณะของอาร์เรย์ของอักขระอีกทั้งยังมีการผนวกรหัส \0 ไว้ที่ท้ายข้อมูลเพื่อให้ทราบว่าเป็นจุดสิ้นสุดของข้อความนั้นๆ



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


ไปเก็บไว้ยังตัวแปรอีกสตริงหนึ่ง

   


2. ฟังก์ชั่น strlen() เป็นฟังก์ชั่นที่นำมาใช้เพื่อขอทราบข้อมูลตัว  อักขระที่บรรจุอยู่ในสติง

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


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

 5. ฟังก์ชั่น strlwr() เป็นฟังก์ชั่นที่นำมาใช้เพื่อแปลงอักขระในสตริงให้เป็นตัวพิมพ์เล็ก  

6. ฟังก์ชั่น strupr() เป็นฟังก์ชั่นที่นำมาใช้เพื่อแปลงอักขระในสตริงให้เป็นตัวพิมพ์ใหญ่  

7. ฟังก์ชั่น strrev() เป็นฟังก์ชั่นที่นำมาใช้งานเพื่อสลับตำแหน่งข้อความแบบกลับหัว (Reverse) เช่น ข้อความ  123 เมื่อผ่านฟังก์ชั่น strrev() ก็จะเป็น 321  เป็นต้น


การอ่านและแสดงผลค่าของสตริง
 ฟังก์ชั่น scant() และ ฟังก์ชั่น printf()  สามารถนำมาใช้เพื่อการรับข้อมูลชนิดขัอ  ความ และสั่งพิมพ์ข้อความ ในภาษาซียังมี  ฟังก์ชั่นเพื่อการรับค่าข้อมูลสตริง และพิมพ์  ข้อความสตริงโดยตรง ด้วยฟังก์ชั่น gets()  และ ฟังก์ชั่น puts() ซึ่งฟังก์ชั่นทั้งสอง ถูก  ประกาศใช้งานอยู่ในเฮดเดอร์ไฟล์  <stdio.h>

1. ฟังก์ชั่น gets() เป็นฟังก์ชั่นที่นำมาใช้รับค่าสตริง
2.ฟังก์ชั่น puts() เป็นฟังก์ชั่น ที่นำมาใช้พิมพ์ข้อความ หรือ  ตัวแปรสตริง

การแปลงข้อความที่เป็นตัวเลขเป็นค่าตัว  เลขที่นำไปคำนวณได้: ตัวแปรสตริงที่นำมาใช้เพื่อรับข้อมูลสามารถเป็นได้ทั้งตัวอักษรหรือตัวเลขก็ได้แต่ถ้าเป็น  ตัวเลขล้วนๆถือว่าเป็นข้อความที่ไม่สามารถนำไปคำนวณได้แต่ทั้งนี้หากมีการยำข้อความที่เป็นตัวเลขมาผ่านฟังก์ชั่นแปรสตริงให้เป็นตัวเลขก็สามารถนำไปใช้เพื่อการคำนวณได้    1. ฟังก์ชั่น atof() เป็นฟังก์ชั่นที่นำมาใช้แปลงข้อความตัวเลขมาเป็นค่าตัวเลขที่สามารถนำไปคำนวณได้โดยกำหนดให้มีชนิดข้อมูลเป็น double 2. ฟังก์ชั่น atoi() เป็นฟังก์ชั่นที่นำมาใช้แปลงข้อความตัวเลขมาเป็นค่าตัวเลขที่สามารถนำไปคำนวณได้โดยกำหนดให้มีชนิดข้อมูลเป็น int 3. ฟังก์ชั่น atol() เป็นฟังก์ชั่นที่นำมาใช้แปลงข้อความตัวเลขมาเป็นค่าตัวเลขที่สามารถนำไปคำนวณได้โดยกำหนดให้มีชนิดข้อมูลเป็น long  int 

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

สรุปบทที่ 6

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


   คำสั่งควบคุมเงื่อนไข

        ภาษาซีจะใช้ประโยค if ในการ
    สร้างเงื่อนไข ซึ่งสามารถตรวจสอบเงื่อนไข
    ว่าตรงกับความจริง หรือความเท็จได้  นอกจากประโยค if แล้ว ในภาษาซียังมีการกำหนดทางเลือก       ด้วยประโยค switch ให้เลือกใช้อีกด้วย
   
   1. การควบคุมเงื่อนไข  if-statement
   
       ในการใช้ประโยคคำสั่ง if-statement เพื่อ  ตรวจสอบเงื่อนไข มีอยู่ 4 รูปแบบด้วยกันคือ

1.1 การสร้างเงื่อนไขประโยคเดียว 
   
      เป็นการาตรวจสอบเงื่อนไขว่าเป็นจริงหรือเท็จ แล้วให้ทำชุดคำสั่งนั้นๆ






  1.2 การสร้างเงื่อนไข if...eles
  
       เป็นการตรวจสอบว่า หากเงื่อนไขเป็นจริงก็จะดำเนินการกับชุดคำสั่งที่กำหนดไว้ และหาก
       เงื่อนไขเป็นเท็จ ก็จะดำเนินการกับชุดคำสั่งหลังประโยค eles


   


   
1.3 การสร้างเงื่อนไข if...eles แบบหลาย  กรณี

      จากรูปแบบเงื่อนไขข้างต้นที่ผ่านมา ้ป็นรูปแบบเงื่อนไขแค่ 2 กรณีเท่านั้น ดังนั้น หากรูปแบบการสร้างเงื่อนไขที่ต้องตรวจสอบหลายๆ กรณี ก็จะใช้ประโยค eles if เพื่อตรวจสอบ  เป็นลำดับย่อยๆต่อไป









1.4 การสร้างเงื่อนไขแบบซ้อน (Netsted if)

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





  







2. การควบคุมเงื่อนไขด้วยปรโยค switch

     นอกจาก if-else แล้ว ภาษาซียังมีคำสั่งควบคุมเงื่อนไขอีกตัวหนึ่งคือ switch  ซึ่งสามารถนำมาใช้งาน      ได้ดีกับโปรแกรมที่มีรายการเมนูให้เลือก


  







คุณสมบัติของประโยค if และ switch มี  ข้อแตกต่างกัน ดังต่อไปนี้

    1. switch ไม่สามารถตรวจสอบนิพจน์ชนิดเลขจำนวนจริงที่มีจุดทศนิยม

    2. switch นำมาใช้ตรวจสอบชนิดข้อมูลที่เป็นแบบ int หรือ char เท่านั้น

    3. การตรวจสอบเงื่อนไขภายใน case ของ  switch ในแต่ละกรณี จะไม่สามารถนำตัวแปรมาใช้ได้
       จะใช้ได้แต่เพียงค่าคงที่เท่านั้น

    4. switch ไม่สามารถตรวจสอบ เงื่อนไขหลายๆตัว ภายในนิพจน์ได้












การทำงานเป็นรอบ

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

  1. การทำงานเป็นรอบด้วยลูป while

  2. การทำงานเป็นรอบด้วยลูป do while

  3. การทำงานเป็นรอบด้วยลูป for











1.การทำงานเป็นรอบด้วยลูป while

  คุณลักษณะของการทำงานเป็นรอบด้วยลูป while

  1. ลูป while จะถูกทำงานต่อเมื่อเงื่อนไขเป็นจริง

  2. เมื่อเงื่อนไขเป็นเท็จ ก็ขะหลุดออกจากลูป  while

  3. นิพจน์ที่นำมาใช้ตรวจสอบเงื่อนไขสามารถใช้ตัวดำเนินการเปรียบเทียบ





 





2. การทำงานเป็นรอบด้วยลูป do while

   คุณลักษณะของการทำงานเป็นรอบด้วยลูป do while

   1. หากสร้างลูปด้วย do while ชุดคำสั่งภาย  ในลูป อย่างน้อยจะต้องถูกทำงาน 1 รอบ เสมอ ถึงแม้ว่าการตรวจสอบเงื่อนไขครั้งแรกจะเป็นเท็จก็ตาม


  



   
3. การทำงานเป็นรอบด้วยลูป for

   คุณลักษณะของการทำงานเป็นรอบด้วยลูป for

   1. การทำงานของลูป จะเริ่มจากค่าเริ่มต้นที่กำหนดใน expression 1

   2. รอบการทำงาน ขึ้นอยู่กับนิพจน์       เงื่อนไขที่ตั้งไว้ใน expression 2

   3. การเพิ่มค่า counter ให้กับลูปใน expression 3 จะส่งผลต่อจำนวนรอบของลูป