วันพุธที่ 22 กุมภาพันธ์ พ.ศ. 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  สตริงเข้าด้วยกันโดยผลที่ได้จะเก็บไว้ที่ตัวแปรตัวแรกข้อควรระวังคือการเชื่อมสตริงจะทำให้เกิดความยาวของข้อความมากขึ้น ดังนั้น ขนาดความกว้างของตัวแปรที่จัดเก็บจะต้องมีความยาวเพียงพอต่อการจัดเก็บข้อความ v


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 ให้  เลือกใช้อีกด้วย
    ในการใช้ประโยคคำสั่ง if-statement เพื่อ  ตรวจสอบเงื่อนไข มีอยู่ 4 รูปแบบด้วยกันคือ    

    1. การควบคุมเงื่อนไข  if-statement 

    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.1 ลูป while จะถูกทำงานต่อเมื่อเงื่อนไขเป็นจริง
       1.2 เมื่อเงื่อนไขเป็นเท็จ ก็ขะหลุดออกจากลูป  while
       1.3 นิพจน์ที่นำมาใช้ตรวจสอบเงื่อนไข สามารถใช้ตัวดำเนินการเปรียบเทียบ

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

  3. การทำงานเป็นรอบด้วยลูป for คุณลักษณะของการทำงานเป็นรอบด้วยลูป for
       3.1 การทำงานของลูป จะเริ่มจากค่าเริ่มต้นที่กำหนดใน expression 1
       3.2 รอบการทำงาน ขึ้นอยู่กับนิพจน์เงื่อนไขที่ตั้งไว้ใน expression 2
       3.3 การเพิ่มค่า counter ให้กับลูปใน expression 3 จะส่งผลต่อจำนวนรอบของลูป



อ้างอิง
-   
    -นังสือพื้นฐานการเขียนโปรแกรมคอมพิวเตอร์