วันอังคารที่ 29 กรกฎาคม พ.ศ. 2557

ข้อมูลและชนิดของข้อมูล

การเก็บข้อมูลภายในหน่วยความจำหลัก ที่ใช้ไฟฟ้าเลี้ยง ram ของคอมพิวเตอร์ก่อนเนื่อง

หลักการออกแบบและพัฒนาโปรแกรม

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

โดยทั่วไปนิยมนิยมแบ่งวิธีการวิเคราะห์งานเป็น 5 หัวข้อ ได้แก่

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

ตัวอย่างการวิเคราะห์ความต้องการ

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

 วิเคราะห์งาน

1.   สิ่งที่ต้องการ
           -  พื้นที่ของรูปสี่เหลี่ยม
           -  รับค่าข้อมูลความกว้างและความสูงจากแป้นพิมพ์
2.  รูปแบบผลลัพธ์
           -  แสดงผลลัพธ์ของพื้นที่รูปสี่เหลี่ยมเป็นตัวเลข
3.  ข้อมูลนำเข้า
           -  ค่าความกว้างของรูปสี่เหลี่ยม
           -  ค่าความสูงของรูปสี่เหลี่ยม
4.  ตัวแปรที่ใช้
           -  ค่า  w แทน  ความกว้างของรูปสี่เหลี่ยม
           -  ค่า  H  แทน  ความสูงของรูปสี่เหลี่ยม

5. วิธีการประมวลผล
           1.  เริ่มต้น
           2.  รับค่า  w  และ H
           3.  คำนวณค่าพื้นที่ของรูปสี่เหลี่ยมจากสูตร  พื้นที่สี่เหลี่ยม  =  w* H
           4.  แสดงค่าพื้นที่สี่เหลี่ยม
           5.  จบการทำงาน

วันพุธที่ 2 กรกฎาคม พ.ศ. 2557

1.การเขียนอัลกอริทึม

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

1.แต่ละขั้นในอัลกอริทึมต้องมีความชัดเจน ถูกต้อง

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

3.อัลกอริทึมที่เขียนนั้น ต้องมีจุดสิ้นสุดเสมอ

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

1.1.ชนิดของคอมพิวเตอร์ข้อมูลในระบบ

1.ตัวเลข จำนวนเต็ม (integer) กับ (float / real) นำมาคำนวณกัน

2.ตัวอักษร (char) 1 ตัวอักษร อยู่ภายใต้เครื่องหมายฝนทอง (single qoute) สามารถประกอบด้วยข้อมูลแบบตัวเลขได้อีก 0-9 (นำมาคำนวณไม่ได้) A-Z a-z $ # % ! @ + - * / \ ตัวอย่าง 'AZ ' ผิดเพราะรูปแบบเป็น char และมากกว่า 1 ค่า

3.ข้อความ (staring) อยู่ภายใต้ เครื่องหมายคำพูด "" double qoute ใช้กับตัวอักษร 1 ตัวขึ้นไปครับ

4.จำนวนจริง (real) เป็นจำนวนจริง ที่หารเพื่อเอาทศนิยม

1.2.อัลกอริทึมชนิด 

1.structure
2.เงื่อนไข
3.วนซ้ำ for,while,Do while

1.3.ข้อมูลในที่ใช้ในการเขียนโปรแกรม 4 ชนิด

1. จำนวนเต็ม = integer
2. ทศนิยม = real
3. ข้อความ = string
4. ตัวอักษร = char

1.4.การวิเคราะห์โจทย์อัลกอริทึม

1.วิเคราะห์สิ่งที่โจทย์ต้องการ

2.รูปแบบผลลัพธ์

3.ตัวแปร

4.ข้อมูลนำเข้า

5.วิธีประมวลผล (input + process + output)

2.การเขียนผังงาน (flowchart)

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



เป็นสัญลักษณ์ที่ใช้อยู่บ่อย ซึงมีมากกว่านี้แต่ขอไม่อธิบายมากครับ
ซึ่งสัญลักษณ์เหล่านี้ จะมีการใช้ควบคู่กันกับอัลกอริทึม ในแต่ละสัญลักษณืมีความหมายอย่างที่เห็นกันครับ

3. รหัสเทียม (pseudo code)

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

       เริ่มต้นบล็อก ให้มีคำว่า begin จบลงที่ end
       อ่าน เขียนข้อมูลใช้ read และ print ตามลำดับ
       การทดสอบเงื่อนไข ใช้ if , else , elseif , endif
       การวนลูปทำซ้ำ ใช้  while , Do while และ end do

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

ตัวอย่าง ของ อัลกอริทึม , ผังงาน และ รหัสเทียม

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

1. วิเคราะห์สิ่งที่โจทย์ต้องการ

    หาพื้นที่ของสี่เหลี่ยม โดยรับค่าความกว้างและความสูง

2. รูปแบบผลลัพธ์

    พื้นที่ของรูปสี่เหลี่ยม = xxx

3. ตัวแปร
   
    พื้นที่ของรูปสี่เหลี่ยม
    ค่าความกว้าง
    ความสูง

4. ข้อมูลนำเข้า

    ค่าความกว้าง
    ค่าความสูง

5. วิธีการประมวลผล (input + process + output)

    1.เริ่มต้น
 
    2.ประกาศตัวแปร Area W,H เป็น real
 
    3.Area = 0

    4.รับค่า W H

    5.Area = W*H

    6.แสดงผล Area

    7.จบ



 ผังงาน (flowchart)



รหัสเทียม (pseudo code)

1. start

2. set area W,H real

3. area = 0

4. input W ,H

5. area = W*H

6. print area

7. end


อ้างอิงแหล่งที่มา : ชื่อผู้แต่ง ผศ.ปัญญาพล หอระตะ
                 ชื่อหนังสือ หลักการเขียนโปรแกรมภาษา C
                 ชื่อสำนักพิมพ์ โรงพิมพ์คลังนานาวิทยา
                 ปีที่พิมพ์ 2545
                 หน้าที่อ้างอิง 14 - 17

วันจันทร์ที่ 30 มิถุนายน พ.ศ. 2557

การเขียนโปรแกรมแบบโครงสร้างใน ภาษา C

      เราก็มาอธิบายเกียวกับการเขียนโปรแกรมด้วยภาษา C สนับสนุนการเขียนโปรแกรมแบบโครงสร้างทั้ง 3 แบบ คือ โครงสร้างลำดับ โครงสร้างการเลือก โครงสร้างทำซ้ำ

โครงสร้างลำดับใน C

      โครงสร้างแบบลำดับใน C การประมวลผลคำสั่งจะทำจากบนล่างทีละคำสั่ง โดยที่คำสั่งแต่ละคำสั่งจะถูกคั่นด้วยเครื่องหมายอัฒภาค ";" เช่น

    a = a + 1;
    printf ("a = d% \n",a) ;
   
      การทำงานของทั้งสองคำสั่งจะทำจากบนล่างคือ ทำจาก คำสั่ง a = a + 1 ; แล้วไปทำคำสั่ง printf เครื่องหมาย ; ใช้แสดงตำแหน่งสิ้นสุดของแต่ละคำสั่ง ดังนั้นการเขียนคำสั่งอาจเขียนอยู่ในบรรทัดเดียวกันก็ได้ จากสองคำสั่งข้างต้นสามารถเขียนได้อีกแบบ คือ

    a = a + 1 ; printf (" a = d% \n" ,a) ;
   
      แต่อย่างไรก็ตามการเขียนคำสั่งต่อเนื่องกันในลักษณะนี้ถือว่าไม่ดีนัก เพราะอ่านยาก เวลาแก้ไขอาจใช้เวลานานกว่าจะหาที่ผิดพบ
      คำสั่งแต่ละบรรทัดถือว่าเป็นคำสั่งเดี่ยว ( single staments ) เมื่อต้องการเขียนคำสั่งให้เป็นกลุ่มคำสั่งสามารถทำได้ด้วยการใช้เครื่องหมายวงเล็บปีกกา {} เรียกคำสั่งเหล่านี้ว่า คำสั่งประกอบ ( compound statement ) ภายในวงเล็บปีกกาสามารถเขียนกี่คำสั่งก็ได้ เช่น

   {
         printf ( "hello \n") ;
         printf ( "how to programming in C. \n") ;
   }

      คำสั่งประกอบนี้ ประกอบด้วยสองคำสั่งเดียว การใช้คำสั่งประกอบนี้มักจะใช้กับคำสั่ง if , for , while

      โครสร้างแบบการเลือกใน C

      โครงสร้างแบบเงื่อนไขเป็นโครงสร้างที่ต้องมีการตัดสินใจเลือกเส้นทางการประมวลผลโดยมีสองเส้นทาง คือเส้นทางที่เงื่อนไขเป็นจริง ( true ) และเส้นทางที่เงื่อนไขเป็นเท็จ ( false ) การเขียนคำสั่งเลือกเส้นทางการประมวลในภาษา C มีคำสั่งให้เราใช้คือ คำสั่ง if และคำสั่ง switch

      โครงสร้างแบบทำซ้ำใน C

      โครงสร้างแบบทำซ้ำใน C ได้แก่ คำสั่ง for คำสั่ง while และ คำสั่ง do....while ตัวอย่าง คำสั่งต่อไปนี้

     for ( k = 1 ; k <= 3 ; k++ )
         printf ("**********\n") ;
      
      คำสั่งนี้เป็นการวนพิมพ์ "********\n" จำนวน 3 รอบ ได้ผลลัพธ์ดังนี้

************
************
************

      คำสั่ง if

      โครงสร้างการเลือก เมื่อเขียนใน C สามารถใช้คำสั่ง if และ switch คำสั่ง if เป็นคำสั่งใช้ตัดสินใจตามนิพจน์เงื่อนไขมีรูปแบบด้งนี้

                        if ( coundition )
                              statement ;

      coundition
          
          เป็นเงื่อนไข ซึ่งอยู่ในรูปนิพจน์ตรรกะ ค่าของเงื่อนไขมีค่าเป็นจริง หรือ เท็จ ในภาษา C ถ้านิพจน์ตรรกะมีค่าเป็นจริงแทนด้วยตัวเลใดๆ ที่มีค่าไม่เท่ากับ 0 แต่ถ้าเงื่อนไขเท็จแทนด้วย 0 เสมอ

      statement

          เป็นคำสั่งที่จะให้ทำงานเมื่อเงื่อนไขมีค่าเป็นจริง แต่ถ้าเงื่อนไขเป็นเท็จก็จะข้ามคำสั่งนี้ไป คำสั่งนี้อาจเป็นคำสั่งเดี่ยว หรือคำสั่งประกอบ(ที่ประกอบด้วยคำสั่งอื่นๆ หลายคำสั่ง) ก็ได้ที่อยู่ภายใต้บล็อก {} เดียวกัน ดังรูปแบบต่อไปนี้

                         if ( coundition )
                            {
                              statement1 ;
                              statement2 ;
                                 ......
                              statementN ;
                            }

        คำสั่ง for

         คำสั่ง for ใน C มีความสามารถทำงานลูปได้ทั้งแบบจำนวนรอบแน่นอน และแบบจำนวนรอบไม่แน่นอน ซึ่งมีรูปแบบดังนี้

                         for ( initialization ; condition ; increment )
                             statement ;

initialization

    เป็นตัวแปรนับรอบ

conition

    เป็นนิพจน์เงื่อนไขการนับรอบ กาวนลูปจะทำจนกว่าเงื่อนไขนี้จะเป็นเท็จ

increment

    เป็นนิพจน์การเพิ่มค่า หรือลดค่าตัวนับรอบ

statement

    เป็นคำสั่ง หรือกลุ่มของคำสั่งทที่ให้ทำในแต่ละรอบ ตัวอย่าง เช่น

                for (I=1 ; I < = 10; I++ )
                      printf ("A") ;
                printf ("\n") ;
                printf ("The out size of loop\n") ;

    ให้วนลูปพิมพ์ "A" จำนวน 10 รอบ คำสั่งที่อยู่ในลูปมีเพียง 1 คำสั่ง คือ printf ("A") หลังจากจบลูปจะมาทำคำสั่งภายนอกลูป คือ คำสั่ง

        printf ("\n")

แล้วไปทำคำสั่ง

        printf ("The out size of loop\n)

แต่อย่างไรก็ตามก็เพื่อให้อ่านคำสั่งได้ง่ายให้ใช้วงเล็บีกกาช่วยบอกขอบเขตของลูป for เช่น

        for ( I=1; I <=10 ; I++)
        {
              printf ("A") ;
        }
        printf ("\n") ;
        printf ("The out size of loop\n") ;

      คำสั่ง while

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

                 while ( coundition )
                 {
                            statement1 ;
                            statement2 ;
                             ....
                 }
counding
  
   เป็นเงื่อนไขที่ใช้ตรวจสอบการวนลูป ถ้าเงื่อนไขมีค่าจริง ( true ) จะไปทำคำสั่งในลูป แต่ถ้าเงื่อนไขเป็นเท็จ ( false ) ให้ออกจากลูปไปทำคำสั่งต่อจาก while (ตามหลังวงเล็บปีกกาปิด) การเขียนเงื่อนไขต้องเขียนวงเล็บเสมอ มิฉะนั้นจะเกิดข้อผิดพลาด เมื่อต้องการออกจากลูปกลางคันสามารถใช้คำสั่ง break เพื่อให้หลุดจากลูปไปทำคำสั่ง while ต่อไป 
statement1 , statement2 ,.... เป็นกลุ่มของคำสั่งที่เราต้องการให้ทำในแต่ละรอบ

ตัวอย่าง

output1 = (13 > 8) ;

 ค่าของ output1 มีค่าเป็น 1 แสดงว่าเก็บค่าจริง

 สำหรับ output2 มีค่าเป็น 0 เนื่องจาก (9<4) เป็นเท็จ

output 2 = ( 9 < 4) ;

เขียนโปรแกรมได้ดังนี้

1    / * File Name : chap06_01 .c* /
2    #include <stdio.h>
3    void main ()
4    {
5         int output1, output2 ;
6         output1 = (13 > 8) ;
7         output2 = (9 <4) ;
8         printf (" Value of true in C is %d \n" ,output1) ;
9         printf (" Value of false in C is %d \n" , output2) ;
10         if (99)
11             printf ("99 is not equal to zero, it is true. \n") ;
12         if (-99)
13             printf ("-99 is also true. \n") ;
14    }




    อ้างอิงข้อมูลจาก : หนังสือ หลักการเขียนโปรแกรมภาษา C โดย ผศ.ปัญญาพล หอระตะ