วันศุกร์ที่ 1 พฤษภาคม พ.ศ. 2558



นำเสนอโดย



นางสาว กฤษณา พ่วงพูล 57670079 



คณะภูมิสารสนเทศศาสตร์ 


มหาวิทยาลัยบูรพา

Computer programming

ประวัติภาษาซี (History of C)


  • ภาษาซีถูกออกแบบพัฒนาขึ้นโดย Dennis Ritchie เมื่อ ค.ศ. 1972 ณ ห้องปฏิบัตการเบลล์ โดยออกแบบบนระบบปฏิบัติการ UNIX บนเครื่องเมนแฟรมคอมพิวเตอร์ DEC PDP-11
  • ภาษาซีถูกพัฒนามาจากภาษา B ที่พัฒนาขึ้นโดย Ken Thompson ตั้งอยู่บนพื้นฐานของภาษา BCPL ที่พัฒนามาจาก Martin Richards

   

 









ลักษณะเด่นของภาษา C



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


2. มีประสิทธิภาพสูง (Efficiency)
         ประสิทธิภาพที่นำมาใช้วัดกับภาษาC สามารถวัดได้ 2 แนวทางดังนี้คือ
- ชุดคำสั่งที่มีความกะทัดรัด และกระซับ
- การจัดการหน่วยความจำบนภาษา C มีประสิทธิภาพสูง
- มีการทำงานที่รวดเร็ว ภาษา c มีความสามารถติดต่อกับฮาร์ดแวร์ได้ดีมากกว่าภาษาระดับสูงอื่นๆ โดยสามารถติดต่อกับรีจิสเตอร์ และหน่วยความจำได้โดยตรง


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

4. พอยน์เตอร์ (Pointer Operations)
           ภาษา c มีความสามารถในการทำงานแบบพอยน์เตอร์เป็นอย่างมาก ยากที่จะพบได้ในภาษาระดับสูงทั่วไป โดยพอยน์เตอร์หรือตัวชี้สามารถกำหนดได้จากชนิดข้อมูล (Data Types) หลายชนิดด้วยกัน เช่นเดียวกับฟังก์ชัน หรือโครงสร้าง รวมถึงตัวแปรแบบอาร์เรย์ ยังสามารถถูกจัดการนำพอยน์เตอร์เข้ามาช่วย


5. มีความยืดหยุ่นสูง (Flexible Level)
          ภาษา c จัดได้ว่าเป็นภาษาคอมพิวเตอร์ระดับสูง แต่ภาษา C ก็ยังสามารถเขียนใช้งานร่วมกับภาษาระดับต่ำอย่างภาษาแอสเซมบลีได้ ภาษา c เป็นภาษาที่อยู่กึ่งกลางระหว่างภาษาระดับสูงและภาษาระดับต่ำ

6. ตัวอักษรตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แตกต่างกัน (Case Sensitivity)
          ตามปกติภาษาระดับสูงทั่วไป ตัวแปรที่ตั้งขึ้นด้วยอักษรตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ สามารถนำไปใช้งานร่วมกันได้ แต่ในภาษา c จะถือว่ามีความหมายแตกต่างกัน ดังนั้นอักษรตัวพิมพ์ใหญ่ (Upper Case) และอักษรตัวพิมพ์เล็ก (Lower Case) จะมีความแตกต่างกันอย่างสิ้นเชิง เช่น NUM ไม่เท่ากับ num ในขณะเดียวกัน Num ก็จะไม่เท่ากับ num เช่นกัน

โครงสร้างโปรแกรมภาษา C (Structure of C Programs)


         คำสั่งที่ใช้งานในภาษา C ล้วนเป็นฟังก์ชันทั้งสิ้น ดังนั้นโปรแกรมที่เขียนขึ้นจึงประกอบด้วยฟังก์ชันมากมาย ที่ถูกกำหนดให้ทำหน้าที่ใดหน้าที่หนึ่งในลักษณะโมดูลย่อย พื่อทำงานให้บรรลุเป้าหมาย เมื่อภาษาC ประกอบไปด้วยฟังก์ชันและต้องทำความเข้าใจเกี่ยวกับความหมายของฟังก์ชันเสียก่อน
        ฟังก์ชัน (Function) คือ ชุดคำสั่งที่เขียนขึ้นเพื่อให้คอมพิวเตอร์ทำงาน ที่อนุญาตให้สามารถรับข้อมูล (Input) ประมวลผล (Processes) และแสดงผลข้อมูล (Output) โดยฟังก์ชันที่ถูกเขียนขึ้นพร้อมใช้งาน และสามารถเรียกมาใช้งานได้ทันที จะถูกจัดเก็บไว้ในไลบารีมาตรฐาน (Standard Library) ในภาษา C จะมีฟังก์ชันพิเศษฟังก์ชันหนึ่งที่จำเป็นต้องมีไว้ในโปรแกรมเสมอ คือ ฟังก์ชัน main() ทั้งนี้ฟังก์ชันดังกล่าวจัดเป็นฟังก์ชันหลักที่นำมาใช้เป็นจุดเริ่มต้นของโปรแกรมเพื่อสั่งให้ทำงาน





  • คำสั่งที่ใช้งานในภาษา C ล้วนเป็นฟังก์ชัน(Function)  ทั้งสิ้น ดั้งนั้นโปรแกรมที่เขียนจะประกอบด้วยฟังก์ชัน(Function)ที่ถูกกำหนดให้ทำหน้าที่ใดหน้าที่หนึ่งในลักษณะโมดูลย่อย (Module) เพื่อทำงานให้บรรลุเป้าหมาย ฉะนั้นเราจึงต้องมีการทำความเข้าใจเกี่ยวกับความหมายของฟังก์ชันเสียก่อน

  • —พรีโปรเซสเซอร์ไดเรกทีฟ (Preprocessor Directive) ถือได้ว่าเป็นส่วนที่สำคัญส่วนหนึ่งในภาษา C ที่เป็นตัวบอกให้คอมไพเลอร์รับทราบว่า ให้นำไฟล์ส่วนดังกล่าวมาคอมไพล์ร่วมกันด้วย โดยการนำ Header file เข้ามาด้วยการเขียนแบบนี้ #include <stdio.h> หรือ #include “stdio.h” 
  • ฟังก์ชัน (Function) คือ ชุดคำสั่งที่เขียนเพื่อสั่งให้คอมพิวเตอร์ทำงาน ที่อนุญาตให้สามารถรับข้อมูล (Input) ประมวลผล (Processes) และแสดงผลข้อมูล (Output) และจะถูกจัดเก็บไว้ในไลบรารีมาตรฐาน (Standard Library)

  • เฮดเดอร์ไฟล์ชื่อ stdio.h จัดเป็นเฮดเดอร์ไฟล์ของฟังก์ชันหนึ่งในไลบรารีมาตรฐาน ที่มักจะถูกเรียกใช้งานบ่อยๆ เนื่องจากเกี่ยวข้องกับอินพุตและเอาต์พุต เช่น ฟังก์ชัน printf() ที่ใช้สำหรับสั่งพิมพ์ตัวแปรหรือข้อความ ฟังก์ชัน scanf() ที่ใช้รับค่าตัวแปร
  • —ความหมายของพรีโปรเซสเซอร์นั้นก็คือ “ตัวประมวลผลก่อน” ซึ่งจะต้องถูกกำหนดไว้นอกฟังก์ชันเสมอ โดยในส่วนนี้จะถูกประมวลผลก่อนชุดคำสั่งภายในฟังก์ชัน จึงเป็นที่มาของคำว่า พรีโปรเซสเซอร์ และการเขียนพรีโปรเซสเซอร์จะต้องนำหน้าด้วยเครื่องหมาย # เสมอ พรีโปรเซสเซอร์ที่อยู่ในภาษาC

  • ฟังก์ชันหลัก (Main Function) ฟังก์ชัน main() ในภาษา C จัดเป็นฟังก์ชันที่ทำหน้าที่เสมือนกับเป็นโปรแกรมหลักที่ใช้สั่งให้ชุดคำสั่งทำงาน รวมถึงการเรียกใช้ฟังก์ชันย่อยอื่นๆ ทำงาน กล่าวคือการสั่งงานในโปรแกรมจะอยู่ในฟังก์ชัน main() #include <stdio.h> void main()
  • ไฟล์นามสกุล .h เรียกว่า Header file หรือไฟล์ส่วนหัวที่มีการประกาศรายละเอียดของคำสั่งในภาษา C โดยไฟล์ .h แต่ละไฟล์จะเก็บการประกาศของคำสั่งสำหรับใช้งานด้านต่างๆ ที่ไม่เหมือนกัน เช่น 

stdio.h เป็นกลุ่มฟังก์ชั่นที่ใช้งานด้าน Input/Output ทั่วๆไป เช่น printf, scanf, puts และชุดคำสั่งจัดการไฟล์ เช่น fread, fwrite เป็นต้น
conio.h เป็นกลุ่มฟังก์ชั่นที่ใช้ควบคุมการแสดงผล, รับค่าจากคีย์บอร์ด เช่น cprintf, kbhit เป็นต้น




    แนะนำตัวค่าพารามิเตอร์ต่างๆ ในภาษา C


             string.h กลุ่มฟังก์ชั่นที่ใช้ในการจัดการข้อความ เช่น นำสองข้อความมาต่อกัน, ค้นหาอักขระในข้อความ, รวมข้อความ เป็นต้น
             math.h กลุ่มฟังก์ชั่นด้านการคำนวณทางคณิตศาสตร์ เช่น การหาค่า sin,cos, tan, abs (หาค่าสัมบูรณ์), log เป็นต้น
             นอกจากนี้ไฟล์ .h อีกหลายๆไฟล์ที่ใช้สำหรับจัดการด้านต่างๆ เพื่อให้ผู้เขียนโปรแกรมสร้างโปรแกรมได้หลากหลายมากขึ้น ถ้าเราต้องการจะเรียกคำสั่งใด เราก็จะทำการ include ไฟล์ .h ที่บรรจุการประกาศของคำสั่งนั้น ไว้ที่ด้านบนของโปรแกรม และสามารถที่จะทำการ include เข้ามาหลายๆไฟล์ได้ เช่น ถ้าเราต้องเรียกใช้ฟังก์ชั่น printf, ฟังก์ชั่นทางคณิตศาสตร์ และฟังก์ชั่นที่ใช้การจัดการตัวอักษร (String) เราสามารถเขียน include ได้ว่า




             ภายในภาษา C จะมีมาตรฐาน header file ทั้งหมด 15 ไฟล์  ดังต่อไปนี้


             คำพิเศษที่ใช้ในภาษา C (ห้ามนำมาตั้งเป็นชื่อตัวแปร)



    เริ่มต้นเขียนโปรแกรม

    ทำความเข้าใจกับโปรแกรม

    1. #include <stdio.h>
    2. void main()
    3. {
    4. printf(“Hello GI\n”);
    5. }
    * #include <stdio.h>เป็นคำสั่ง include ใช้สำหรับรวมเอาไฟล์ส่วนหัว หรือ Header file เข้ามาในโปรแกรม เพื่อให้เราเรียกใช้ฟังก์ชั่นต่างๆ ในภาษา C

    แนวคิดในการเขียนโปรแกรม


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

               ขั้นตอนในการพัฒนาโปรแกรม มีขั้นตอนหลัก 5 ขั้นตอน ซึ่งไม่ว่าจะทำการพัฒนาโปรแกรมครั้งใด จะต้องปฏิบัติตามขั้นตอนเหล่านี้ แต่หากผู้เขียนโปรแกรมมีความชำนาญเพียงพอ อาจจะข้ามขั้นตอนบางขั้นตอนได้

               โจทย์ : จงเขียนโปรแกรมรับค่าเลขจำนวนเต็ม 2 จำนวน และหาผลบวกของเลขทั้ง 2 จำนวนนั้น


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

    - ต้องรับข้อมูลเลขจำนวนเต็ม 2 ตัว เข้ามาในโปรแกรม
         วิเคราะห์ กำหนดให้ x เก็บเลขจำนวนเต็มตัวที่ 1
                        กำหนดให้ y เก็บเลขจำนวนเต็มตัวที่ 2

    - เลขจำนวนเต็มที่ 1 บวก เลขจำนวนเต็มที่ 2 มีค่าเท่ากับเท่าไหร่
         วิเคราะห์ กำหนดให้ sum เก็บค่าผลบวกของเลขจำนวนเต็มทั้งสองจำนวน นั่นคือ sum = x + y

    2. วางแผนและออกแบบ
              การวางแผน คือ การนำปัญหาที่วิเคราะห์ได้จากขั้นตอนที่ 1 มาวางแผนอย่างเป็นขั้นตอนว่าจะต้องเขียนโปรแกรมเพื่อแก้ปัญหาอย่างไร การวางแผนอย่างเป็นขั้นตอนนี้ เรียกว่า อัลกอรึทึ่ม ซึ่งแบ่งออกเป็น 2 รูปแบบ ดังนี้
            - ซูโดโค้ด (Pseudo code) คือ การเขียนอัลกอรึทึ่มโดยใช้ภาษาอังกฤษง่ายๆ สื่อความหมายออกมา สามารถเขียนได้ดังนี้

    START
    READ X
    READ Y
    COMPUTE SUM = X + Y
    PRINT SUM
    STOP


            - โฟลวชาร์ต (Flowchart) คือ การเขียนอัลกอรึทึ่มโดยใช้สัญฃลักษณ์รูปภาพเป็นตัวสื่อความหมาย



    3. เขียนโปรแกรม
    เป็นการนำเอาอัลกอริทึมจากขั้นตอนที่ 2 มาเขียนโปรแกรมให้ถูกต้องตามหลักไวยกรณ์ Syntax ของภาษา C จากโจทย์สามารถเขียนโปรแกรมได้ดังนี้

    -แสดงซอสโค้ด

    1 : #include <stdio.h>
    2 : void main()
    3 : {
    4 : int x, y, sum;
    5: printf(“Value of x is :”);
    6 : scanf(“%d”,&x);
    7 : printf(“Value of y is :”);
    8 : scanf(“%d”,&y);
    9 : sum = x + y;
    10 : printf(“Sum of %d + %d is %d\n”,x, y, sum);
    11 : }


    4. ทดสอบโปรแกรม
               เป็นการนำผลลัพธ์จากขั้นตอนที่ 3 มาทำการ RUN โดยทดสอบป้อนค่า X และ Y เข้าไปในโปรแกรม และตรวจสอบผลลัพธ์ว่าถูกต้องหรือไม่ หากถูกต้องแสดงว่า โปรแกรมที่เขียนถูกต้องเช่นกัน แต่หากผลลัพธ์ถูกบ้างผิดบ้าง หรือผิดทุกครั้งแสดงว่าโปรแกรมที่เขียนขึ้นผิดพลาด ผู้เขียนต้องกลับไปตรวจสอบ

    Value of X is: 7

    Value of Y is: 8

    Sum of 7 + 8 is: 15


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

    ชื่อโปรแกรม        หาค่าผลบวกของเลขจำนวนเต็ม 2                           จำนวน
    ตัวแปรที่ใช้          x เก็บค่าจำนวนเต็มที่ 1
                                y เก็บค่าจำนวนเต็มที่ 2
                                sum เก็บค่าผลบวกของจำนวนเต็ม                           ทั้ง 2 จำนวน
    ชนิดของข้อมูล    x, y, sum เป็นข้อมูลชนิดเลขจำนวนเต็ม (integer)

    วิธีการแก้ปัญหา  ใช้สมการ sum = x + y


    การเขียนอัลกอรึทึมแบบโฟลวชาร์ต

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





    ตัวอย่าง จงเขียนโฟลวชาร์ตแสดงขั้นตอนการหาพื้นที่ของรูปสี่เหลี่ยมคางหมู

           วิเคราะห์ปัญหา

    1. ปัญหา คือ ต้องทำการคำนวณหาพื้นที่ของรูปสี่เหลี่ยมคางหมู จากสูตร
            พื้นที่สี่เหลี่ยมคางหมู = เศษ ½ x ผลบวกของด้านคู่ขนาน x สูง
    2. ตัวแปรที่ใช้ คือ
           w1 ใช้เก็บความยาวของด้านคู่ขนานด้านที่ 1
           w2 ใช้เก็บความยาวของด้านคู่ขนานด้านที่ 2
           h ใช้เก็บความสูงของรูปสี่เหลี่ยมคางหมู
           Area ใช้เก็บพื้นที่ของรูปสี่เหลี่ยมคางหมู
    3. ข้อมูลนำเข้า คือ ค่าของ w1, w2 และ h
    4. ผลลัพธ์ คือ คำนวณพื้นที่ของรูปสี่เหลี่ยมคางหมูจากสูตร
           Area = ½ x (w1 + w2) x h

    ตัวแปรกับชนิดของข้อมูล

    Variables and Data Type 

    • ตัวแปร Variables คือ  ชื่อที่กำหนดขึ้นเพื่อใช้ในการเก็บข้อมูล ซึ่งการประกาศตัวแปรขึ้นมาต้องขึ้นอยู่กับกฎข้อห้ามด้วย
    • ชนิดของข้อมูล Data Type
               ชนิดของข้อมูล คือ สิ่งที่ใช้กำหนดลักษณะ และขอบเขตของข้อมูลนั้นๆ โดยชนิดของข้อมูลจะมีความแตกต่างกันไป และจะเก็บข้อมูลในลักษณะที่แตกต่างกันไปด้วยในภาษาซีแบ่งออกเป็น 4 แบบ คือ

        1. ชนิดข้อมูลแบบ void
        2. ชนิดข้อมูลแบบตัวอักษร
        3. ชนิดข้อมูลแบบเลขจำนวนเต็ม
        4. ชนิดข้อมูลแบบเลขทศนิยม


    1. ชนิดข้อมูลแบบ void
              ชนิดข้อมูลแบบนี้จะไม่มีค่า ซึ่งเราจะไม่ใช้ชนิดข้อมูลแบบ void นี้กำหนดให้กับตัวแปร แต่จะนำชนิดข้อมูลประเภทนี้กำหนดไว้ที่ฟังก์ชั่น ในกรณีที่ไม่ต้องการให้ฟังก์ชั่นมีการรับค่าใดๆ เข้ามาหรือส่งค่าใดๆ กลับไป
    2. ชนิดข้อมูลแบบตัวอักษร
              ชนิดข้อมูลประเภท char ซึ่งชนิดข้อมูลในรูปแบบนี้จะเก็บข้อมูลได้ 1 ตัวอักษรเท่านั้น ผู้เขียนโปรแกรมส่วนใหญ่จะคิดว่าเมื่อเรากำหนด char A = ‘a’; แล้วคอมพิวเตอร์จะเก็บค่า a ไว้ในตัวแปร A แต่ความเป็นจริงไม่ได้เป็นเช่นนั้นคอมพิวเตอร์จะเก็บข้อมูลในลักษณะของรหัสแอสกี ASCII :American Standard Code for Information Interchange เช่น ในที่นี้จะเก็บค่าของตัวแปร A เป็น 0110 0001



    เงื่อนไขในภาษา C Condition in C

    •ในการเขียนโปรแกรมนั้น มักจะต้องมีการเปรียบเทียบอยู่ตลอดเวลา ถ้าเราต้องการให้โปรแกรมทำงานตามข้อกำหนดที่เราต้องการ เราต้องใช้การเปรียบเทียบและเอาผลที่ได้จากการเปรียบเทียบมาควบคุมการทำงานของโปรแกรมต่อไป

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

    เครื่องหมายในการเปรียบเทียบ

    •จะใช้เมื่อเราต้องการให้มีการเปรียบค่า 2 ค่าว่าเท่ากัน มากกว่า หรือน้อยกว่าหรือไม่โดยอาจจะเปรียบเทียบระหว่างตัวแปรกับค่าตัวเลข หรือระหว่างตัวแปรกับตัวแปรก็ได้ เพื่อให้โปรแกรมดำเนินการตามที่เรากำหนดไว้ ซึ่งมีเครื่องหมายที่ใช้ในการเปรียบเทียบดังนี้ 
       
    >มากกว่า                      <น้อยกว่า
    >=มากกว่าหรือเท่ากัน  <=น้อยกว่าหรือเท่ากัน
    !=ไม่เท่ากัน                  ==เท่ากัน

    •เมื่อเราทำการเปรียบเทียบค่าใดๆ แล้วผลลัพธ์ที่เป็นไปได้จะมีอยู่ด้วยกัน 2 ค่า คือ จริง (TRUE) กับ เท็จ (FALSE)

    5 > 3 เป็น จริง

    9 < 11 เป็น จริง

    5 >= 5 เป็น จริง

    4 <= 3 เป็น เท็จ


    คำสั่ง if

    •คำสั่งตรวจสอบเงื่อนไขในภาษา C คำสั่งแรกที่เราจะเรียนรู้กันคือ if แปลว่า ถ้า ซึ่งมีหน้าที่ตามชื่อของมันเลย นั่นคือ เราจะใช้ if เพื่อตรวจสอบผลของการเปรียบเทียบว่าเป็น “จริง” หรือ “เท็จ”

    รูปแบบ if (การเปรียบเทียบ) เช่น

    1 #include “stdio.h”

    2 void main()

    3 {

    4 int age;

    5 printf(“How old are you “);

    6 scanf(“%d”,&age);

    7 if (age >= 60)

    8 printf(“You are old\n”);

    9 printf(“Good Bye”);

    10 }

    Flowchart of if statement



    •การเปรียบเทียบตัวแปรแบบ char
              นอกจากตัวเลข จะสามารถเปรียบเทียบได้แล้ว ยังสามารถใช้ตัวอักษร เช่น ‘a’,’b’,’m’ ในการเปรียบเทียบกันได้เช่น โปรแกรมถามเพศ โดยให้ผู้ป้อนค่าใช้ตอบ m (male) หรือ f (female) ที่จำเป็นต้องมีการรับค่าตัวอักษร 1 ตัว เราจะเขียนได้ดังนี้

    1 #include “stdio.h”

    2 void main()

    3 {

    4 char gender;

    5 gender = ‘m’;

    6 if (gender = = ‘m’)

    7 printf(“Male”);

    8 }

              นอกจากจะเปรียบเทียบความเท่ากันแล้ว เรายังสามารถเปรียบเทียบความมากกว่าหรือน้อยกว่าของตัวอักษรได้ด้วย ความมาก / น้อยของตัวอักษรจะขึ้นอยู่กับค่า ASCII ของตัวอักาษร โดยตัวอักษร a – z จะมีค่า ASCII เรียงตามลำดับจากน้อยไปหามาก นั่นคือ ‘aง มีค่าน้อยกว่า ‘b’ และ ‘b’ มีค่าน้อยกว่า ‘c’ ส่วนตัวอักษรพิมพ์ใหญ่จะมีค่า ASCII น้อยกว่าอักษรตัวพิมพ์เล็กเสมอ ไม่ว่าจะเป็นตัวอักษรใดก็ตาม เช่น ‘Z’ มีค่าน้อยกว่า ‘a’ โดยที ‘A’ – ‘Z’ มีค่าตั้งแต่ 65 -90 แต่ ‘a’ – ‘z’ มีค่าตั้งแต่ 97 - 122


    #include “stdio.h”
    void main()

                     {

                             char ch1 ='g';

                             char ch2 = 'k';

                             printf("ch1 = %d\n",ch1);

                             printf("ch2 = %d\n",ch2);

                                            if (ch2 > ch1 )

                                 printf("ch2 is more than ch1\n ");

                       }

    จุดน่าสังเกตในการใช้ if

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

    • if ( age >= 60)

    printf(“You are old\n”);

    prtintf(“Good bye”);

    *ageเท่ากับ 70การเปรียบเทียบเป็นจริงแต่ถ้าage เท่ากับ 34การเปรียบเทียบเป็นเท็จ

    โจทย์

    •ให้นิสิตเขียนโปรแกรมสอบถามผู้ใช้ว่ามีพี่ชาย หรือน้องชาย หรือไม่ ถ้ามีให้ถามอายุของพี่ชาย หรือน้องชาย ด้วย

    1. วิเคราะห์ปัญหา
    กำหนดชนิดข้อมูลเป็นแบบ char และตัวแปรชื่อ brother
    กำหนดตัวกำหนดชนิดข้อมูลเป็นแบบ int และแปรชื่อ age
     

    2. ปัญหา 
               if (brother = = ‘y’) ถ้าเป็นจริงให้ใส่อายุ



    Code Ex.



    #include “studio.h”
    void main()
    {
                     char brother;
                     int age;
                     pritnf (“Do you have brother?:”); 
                     scanf (“%c”, & brother);
                     if (brother == ‘y’) ;
                    {
                             printf(“How old is he? :”);
                             scanf(“%d”, age);
                             printf(“He is %d years old.\n”,age);

                    }
                    printf(“Good bye”);
    }


    if และ else

              •If เป็นคำสั่งที่ใช้ในการตรวจจับผลเปรียบเทียบที่เป็นจริง แต่ สำหรับผลการเปรียบที่เป็นเท็จ เราจะใช้ else ในการตรวจสอบ หรือถ้าแบบเข้าใจได้คือ else จะทำตรงกันข้ามกับ if
        


             • ถ้าต้องการให้ผู้ใช้โปรแกรมของเรากรอก อายุ โดยอายุที่กรอกต้องมากกว่าหรือเท่ากัน 60 ปี ถ้าไม่ถึงให้แสดงว่ายังไม่แก่

             1. วิเคราะห์โจทย์
             กำหนดชนิดตัวแปรเป็น และตั้งชื่อตัวแปรว่า age
             2. ใช้ if และใช้ else ถ้าอายุยังไม่ถึง 60 ปี



    Code Ex.

    #include “stdio.h
    Void main()
    {
                   int age;
                   printf(“How old are you?:”);
                   scanf(“%d”,&age);
                   if(age >= 60)
                  {
                             printf(“You are old\n”);
                  }                                            
                  else 
                  {
                             printf(“You are young\n”);
                  }
                  printf(“Good Bye”);
    return 0;
    }
       
    }

    การเปรียบเทียบพร้อมๆ กัน


           •ในการเขียนโปรแกรมที่ซับซ้อนมากขึ้น บางครั้งเราต้องการการตรวจสอบค่าตัวแปรหลายๆ ตัวพร้อมกัน และต้องทำคำสั่งใดคำสั่งหนึ่งหรือชุดคำสั่ง เมื่อผลการเปรียบเทียบเป็นจริงทุกค่าเท่านั้น เช่น ใช้ if ตรวจสอบว่าค่าตัวแปร a กับ b นั้นมากกว่า 0 ทั้งคู่หรือไม่ ซึ่งเขียนโปรแกรมได้ดังนี้โดยใช้ if

    int a= 20;

    int b = 6;

    if (a > 0)

    {

               if (b > 0)

              {

                          printf(“Yes !! a > 0 and b > 0”);
              }

    }

             •จากโค้ดโปรแกรมข้างต้น จะสังเกตได้ว่ามีการใช้ if ซ้อน 2 ครั้ง ซึ่งโปรแกรมใช้บรรทัดมากขึ้นและดูซับซ้อนยิ่งขึ้นด้วย ในภาษา C มีวิธีการที่จะช่วยลดความยุ่งยากในการเปรียบเทียบพร้อมๆ กันลักษณะนี้ โดยใช้เครื่องหมายทาง ตรรกะ หรือ Logical Operator มาช่วย

    เครื่องหมายทางตรรกะมีอยู่ 2 แบบดังนี้

    && เครื่องหมาย “และ” (AND)

    || เครื่องหมาย “หรือ” (OR)





    && (AND)


    int a = 20;

    Int b = 6;

                if((a>0) && (b > 0))
               {

                          printf(“Yes!! OK.”);
               }
    int a = 20;
    int b = 6;
    int c = 8;
    if ((a > 0) && (b > 0) && (C > 5))
    {
                 printf(“Yes!! OK.”);
    }


    หรือ (OR)

    int a = 20;
    int b = 6;
    int c = 8;
    if ((a < 0) || (b < 0) || (C > 5))
    {
                 printf(“Yes!! OK.”);
    }

    คำสั่ง if และ else if

              จากตัวอย่างที่ผ่านมา เราได้ศึกษาถึงการตรวจสอบเงื่อนไขโดยใช้ if และ else ซึ่งจะใช้ในกรณีที่มีแค่เงื่อนไขเดียว เช่น

    If (a == 0)
              printf(“OK”);
    Else
              printf(“Not Ok”);

               •ถ้าเราต้องการเปรียบเทียบตัวแปร a กับค่าอื่นๆ เช่น a == 20, 
    a == 30, a == 40 สามารถทำได้โดยใส่ if ไปเรื่อยๆ เพื่อเปรียบเทียบค่าที่ต้องการ คือถ้าเงื่อนไขแรกเป็นจริงก็ทำคำสั่งในส่วนของเงื่อนไขแรกเลย แต่ถ้าเป็นเท็จก็จะไปตรวจสอบเงื่อนไขที่สอง แต่ถ้าเป็นเท็จก็ตรวจเงื่อนไขที่สามต่อไป และเป็นอย่างนี้ไปเรื่อยๆ ซึ่งมีลักษณะการเขียนแบบนี้

    If (a == 20)
              printf(“ a is 20”);
    else if (a == 30)
              printf(“a is 30”);
    else if (a == 40)
              pritnf(“a is 40”);
    else
              printf(“a is over”);


    คำสั่ง switch…case

             •การใช้คำสั่ง switch case จะคล้ายกับคำสั่ง if else if แต่จะง่ายกว่าและดูเข้าใจได้ง่ายกว่า คำสั่ง switch ใช้ได้ดีกับการตรวจของค่าตัวแปรนั้นดังเช่น

                 switch (ค่าตัวแปร)
    {
                 case ค่าที่ 1 : สิ่งที่ต้องการให้ทำ
                 case ค่าที่ 2 : สิ่งที่ต้องการให้ทำ
                 case ค่าที่ 3 : สิ่งที่ต้องการให้ทำ
                 …
                 default : สิ่งที่ต้องการให้ทำ ถ้าอยู่นอกเหนือจากข้างบน
    }




    การทำซ้ำ (Iteration)

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

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

    void main()
    {
                   printf(“Krissana Imsawas\n”); // ครั้งที่ 1
                   printf(“Krissana Imsawas\n”); // ครั้งที่ 2
                   printf(“Krissana Imsawas\n”); // ครั้งที่ 3
                   
                   
                   printf(“Krissana Imsawas\n”); // ครั้งที่ 99
                   printf(“Krissana Imsawas\n”); // ครั้งที่ 1000
    }

    •การทำซ้ำมีอยู่ด้วยกัน 2 ลักษณะ คือ
             –แบบมีจำนวนรอบแน่นอน เช่น กรณีที่ต้องแสดงชื่อตัวเอง 1000 ครั้งบนจอภาพ การทำซ้ำแบบนี้จะใช้ for
             –แบบเงื่อนไขเป็นตัวตัดสินว่าจะทำซ้ำต่อไปหรือไม่ ใช้ในกรณีที่ต้องการให้โปรแกรมทำซ้ำไปเรื่อยๆ ตราบใดที่เงื่อนไขที่กำหนดยังคงเป็นจริง เช่น ให้โปรแกรมคำนวณไปเรื่อยๆ ถ้าผลคำนวณยังคงเป็นบวก แต่ถ้าเป็น 0 หรือ ติดลบเมื่อไหร่ก็ให้จบโปรแกรมทันที อาจจะใช้การทำซ้ำทั้ง 2 คำสั่ง คือ do…while และ while

    คำสั่ง for

         คำสั่ง forนี้ใช้ในกรณีเราต้องการทำซ้ำโดยทราบจำนวนครั้งที่แน่นอน เช่น ถ้าต้องการทำซ้ำ 20 ครั้ง , 30 ครั้ง , 40 ครั้ง เรามักจะใช้ for 
            •การใช้ for เราต้องกำหนดจำนวนครั้งลงไปว่าจะวนกี่ครั้งซึ่งในการวนด้วยคำสั่ง for นี้จะต้องสร้างตัวแปรขึ้นมาเพื่อทำหน้าที่เป็น “ตัวนับ” (Counter) ซึ่งโดยส่วนมากจะใช้รูปแบบเลขจำนวนเต็ม integer เพราะจะเป็นตัวที่คอยบอกว่าตอนนี้ครบตามจำนวนแล้วหรือยัง ถ้ายังก็วนต่อไปเรื่อยๆ


    for (กำหนดค่าเริ่มต้นให้กับตัวนับ;
                 เปรียบเทียบตัวนับครบจำนวนครั้งที่ต้องการหรือยัง; 
                 เพิ่มค่า / ลดค่าตัวนับ)
    {
    คำสั่งหรือกลุ่มคำสั่งที่ต้องการให้ทำซ้ำ
    }
    เช่น
    for (count = 0; count < 10; count ++)
    {
                    ….
    }


    คำสั่ง for

    #include “stdio.h” 
    void main()

    {
            int count;
            printf(“Begin\n”);
            for (count = 0; count < 10; count++)
            printf(“Hello %d\n”,count);
            printf(“End\n”);
    }


    คำสั่ง for

    #include "stdio.h"
    void main()

    {
             int mother = 2;
             int count;
             printf("Begin\n");
             for(count = 1;count <= 12; count++)
               {

                         printf("%d x %d = %d\n",mother, count, mother *count);
               }

               printf("End\n");

    }

    รูปที่ 1 เป็นการลองคำนวน และพิมพ์ข้อความง่ายๆ



    รูปที่ 2 ในสัปดาห์1ก็คำนวนหา พ.ศ. โดยระบุระยะห่างระหว่าง พ.ศ. และ ค.ศ. เท่ากับ 543 โดยเราระบุเอง




    รูปที่ 3 สัปดาห์ที่2งานที่1 ให้ลองใช้ intในการคำนวนหาค่าโดยที่ระบุค่าชัดเจนและก็มีการแนะนำตัวด้านล่าง



    รูปที่ 4 สัปดาห์ที่ 2 งานที่ 2 ให้ใช้ intรับค่าและคำสั่ง



    รูปที่ 5 งานในสัปดาห์ที่3หาพื้นที่สี่เหลียมคางหมู



    รูปที่ 6 งานในสัปดาห์ที่3หาพื้นที่วงกลม



    รูปที่ 7 ทำวอปเปเปอร์





    รูปที่ 8char Aเก็บค่า 97 a เลขเป็นตัวเลขที่คอมพิวเตอร์เข้าใจ



    รูปที่ 9 การหาsize limit





    รูปที่ 10นับจำนวนตัวอักษร



    รูปที่ 11 string ใช้ในการนับตัวอักษร



    รูปที่12 คำนวนหาเกณฑ์



    รูปที่ 13



    รูปที่ 14



    รูปที่ 15ใช้ forเพื่อแสดงข้อความซ้ำๆ




    รูปที่ 16 ทำกรอบรอบชื่อ โดยใช้ for




    รูปที่ 17 ใช้ intกับ while



    รูปที่ 18



    รูปที่ 19 ใช้ do while












    Matlab


               เป็น ภาษาคอมพิวเตอร์ระดับสูงที่มาพร้อมด้วยสภาพแวดล้อมการทำงานเชิงโต้ตอบ(คล้ายเครื่องคิดเลข) ซึ่งสามารถคำนวณคณิตศาสตร์ที่ซับซ้อนได้อย่างรวดเร็วมากกว่าภาษาคอมพิวเตอร์สมัยก่อน เช่น ภาษา C, C++ หรือFortran
              
              Matlab เป็นภาษาคอมพิวเตอร์ระดับสูงที่ใช้สำหรับคำนวณเชิงตัวเลข (Numerical Computing: อธิบายด้านล่าง) แสดงผลกราฟฟิก และเขียนแอพพิลเคชั่น ทำให้เราสามารถคำนวณผลลัพธ์ พัฒนาอัลกอลิทึ่ม สร้างแบบจำลอง และแอพพลิเคชั่นได้ง่ายและรวดเร็วมาก ภายในตัว Matlab ประกอบ ด้วยภาษาคอมพิวเตอร์ ทูลบอ็กซ์ (Toolbox: กลุ่มฟังก์ชันสำเร็จรูปในแต่ละสาขาวิชา) และฟังก์ชันพื้นฐานจำนวนมาก ทำให้การวิเคราะห์ทำได้หลากหลายวิธี พร้อมกับคำตอบที่รวดเร็วกว่าโปรแกรมตารางคำนวณ(Spreadsheet) หรือภาษาคอมพิวเตอร์สมัยก่อน เช่น C, C++, Fortran, Java และอื่นๆ

               คุณสามารถนำ Matlab ไปประยุกต์ใช้งานได้หลายสาขามาก ทั้ง การประมวลผลสัญญาณ(Signal Processing) การสื่อสาร(Communication) การประมวลผลภาพและวิดีโอ (Image and Video Processing) ระบบควบคุม (Control System) การวัดและควบคุม(Instruments and Control) การคำนวณทางเศรษฐศาสตร์(Economic) การคำนวณทางชีววิทยา(Biology) และอื่นๆ มีนักวิทยาศาสตร์และวิศวกรหลายล้านคนทั้งในแวดวงการศึกษาและอุตสาหกรรมที่ใช้ Matlab ในการคำนวณเชิงตัวเลข






    รูปแบบเวกเตอร์(row Vecter และ colum)





    การ plot กราฟ

    กำหนด X = [ 4 8 3 1 2 0 6 2 1 5 7 0 1 2] จากนั้นกดEnter ป้อนคำสั่ง plot (x)



    การเขียนชื่อกราฟ
    พิมพ์คำสั่ง title ('ชื่อที่ต้องการ')




    การสร้างเครื่องคิดเลข


    ใช้ฟังก์ชั่น guide โดยไปที่ guide >>Enter จากนั้นเลือก panal ออกแบบตามต้องการ เลือกเครื่องมือ startic text สร้างกล่องรับค่าและแสดงผลลัพธ์ เลือก push button เพื่อสร้างปุ่มการใส่ชื่อปุ่มให้ดับเบิลคลิกที่ปุ่มที่ต้องการเลือก string เป็น 0 tag เป็น zero ทำเช่นเดียวกันกับปุ่มอื่น




    แก้ไขโค้ดเพื่อเป็นการเชื่อมปุ่ม



    ผลลัพธ์



    การปรับภาพสีเป็นภาพขาวดำ

    Browse for folder เลือกโฟล์เดอร์ที่ต้องการ Enter ตั้งชื่อตัวแปร ตามด้วยชื่อภาพที่เลือก Enter



    ใช้ whos picture เพื่อตรวจสอบขนาดของภาพ




    เรียกไฟล์ภาพมาดูด้วยคำสั่ง figure , imshow(picture)



    เปลี่ยนสีภาพเป็นสี โทน เกว์สเกล ด้วยคำสั่ง grey1=rgb2grey แสดงผล figure , imshow(grey1)




    เรียกดูค่าการสะท้อนด้วยคำสั่ง figure , imshist(grey1)



    ทำภาพเป็นขาวดำ



    แลปการทำภาพสามมิติ






    การเขียนโค้ด การอัดเสียง




    บันทึก เเละฟังเสียง