วันเสาร์ที่ 3 กันยายน พ.ศ. 2554

Queue



  คิวเป็นโครงสร้างข้อมูลแบบลำดับ (Sequential) ลักษณะของคิวเราสามารถพบได้ในชีวิตประจำวัน เช่น การเข้าแถวตามคิวเพื่อรอรับบริการต่างๆ ลำดับการสั่งพิมพ์งาน เป็นต้น ซึ่งจะเห็นได้ว่าลักษณะของการทำงานจะเป็นแบบใครมาเข้าคิวก่อน จะได้รับบริการก่อน เรียกได้ว่าเป็นลักษณะการทำงานแบบ FIFO (First In , First Out)

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

การกระทำกับคิว
  • การเพิ่มข้อมูลเข้าไปในคิว
    การจะเพิ่มข้อมูลเข้าไปในคิว จะกระทำที่ตำแหน่ง REAR หรือท้ายคิว และก่อนที่จะเพิ่มข้อมูลจะต้องตรวจสอบก่อนว่าคิวเต็มหรือไม่ โดยการเปรียบเทียบค่า REAR ว่า เท่ากับค่า MAX QUEUE หรือไม่ หากว่าค่า REAR = MAX QUEUE แสดงว่าคิวเต็มไม่สามารถเพิ่มข้อมูลได้ แต่หากไม่เท่า แสดงว่าคิวยังมีที่ว่างสามารถเพิ่มข้อมูลได้ เมื่อเพิ่มข้อมูลเข้าไปแล้ว ค่า REAR ก็จะเป็นค่าตำแหน่งท้ายคิวใหม่ 
  • การนำข้อมูลออกจากคิว
    การนำข้อมูลออกจากคิวจะกระทำที่ตำแหน่ง FRONT หรือส่วนที่เป็นหัวของคิว โดยก่อนที่จะนำข้อมูลออกจากคิวจะต้องมีการตรวจสอบก่อนว่ามีข้อมูลอยู่ในคิวหรือไม่ หากไม่มีข้อมูลในคิวหรือว่าคิวว่าง ก็จะไม่สามารถนำข้อมูลออกจากคิวได้
     
คิวแบบวงกลม (Circular Queue)
       คิวแบบวงกลมจะมีลักษณะเหมือนคิวธรรมดา คือ มีตัวชี้ FRONT และ REAR ที่แสดงตำแหน่งหัวคิวและท้ายคิวตามลำดับ โดย FRONT และ REAR จะมีการเลื่อนลำดับทุกครั้งเมื่อมีการนำข้อมูลเข้าและออกจากคิว แต่จะแตกต่างจากคิวธรรมดาก็คือ คิวธรรมดาเมื่อ REAR ชี้ที่ตำแหน่งสุดท้ายของคิว จะทำให้เพิ่มข้อมูลเข้าในคิวอีกเมื่อไม่ได้ เนื่องจาก ค่า REAR=MAX QUEUE ซึ่งแสดงว่าคิวนั้นเต็ม ไม่สามารถเพิ่มข้อมูลเข้าไปได้อีก ทั้งๆ ที่ยังมีเนื้อที่ของคิวเหลืออยู่ก็ตาม ทำให้การใช้เนื้อที่ของคิวไม่มีประสิทธิภาพ 
 
จากรูป แสดงคิวที่ค่า REAR ชี้ที่ตำแหน่งสุดท้ายของคิว ทำให้ไม่สามารถนำข้อมูลเข้าได้อีก

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

คิวแบบวงกลมจากที่กล่าวมาสามารถเพิ่มข้อมูลได้อีก จนกว่าคิวจะเต็มซึ่งแสดงดังรูป

วันจันทร์ที่ 15 สิงหาคม พ.ศ. 2554

การพูดในที่ชุมชน


การพูดในที่ชุมชน


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

ใบ้ย่อมพูดได้ แต่บางคนเท่านั้นที่พูดเป็น เพราะการพูดเป็นทั้งศาสตร์
และศิลป์ ไม่จำเป็นต้องอาศัยพรสวรรค์เสมอไปแต่สามารถพูดได้ เพราะการศึกษา การฝึกฝน 

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

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

การพูดสังสรรค์งานชุมนุมศิษย์เก่า การพูดเรื่องตลกในที่ประชุม
การกล่าวอวยพรตามโอกาสต่าง ๆ ในงานสังสรรค์
         3. การพูดกึ่งทางการ 
            เป็นการพูดที่ลดความเป็นแบบแผนลง เช่น พูดอบรมนักเรียนในคาบจริยธรรม 

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

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


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

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

พิธีกรไม่ใช่ตัวตลก พิธีกรไม่ใช่ผู้โฆษณา พิธีกรไม่ใช่ผู้ทำหน้าที่ประชาสัมพันธ์
และพิธีกรไม่ใช่ผู้พูดสลับฉากบนเวที แต่ พิธีกรเป็นที่รวมของบทบาทหน้าที่อย่างน้อย 4 ประการ คือ
                   •  เป็นเจ้าของเวที (Stage Owner)
                   •  เป็นผู้ดำเนินรายการ (Program Monitor)
                   •  เป็นผู้แก้สถานการณ์เฉพาะหน้า (Situation Controller)
                   •  เป็นผู้ประสานงานบันเทิงและสังคม (Social Linkage)
              ดังนั้น พิธีกร จึงต้องมีความรู้พื้นฐาน 4 อย่าง คือ
                   •  รู้ลำดับรายการ
                   •  รู้รายละเอียดของแต่ละรายการ
                   •  รู้จักผู้เกี่ยวข้องในแต่ละรายการ ( ใครจะมารับช่วงเวทีต่อไป )
                   •  รู้กาลเทศะ ( ไม่เล่นหรือล้อเลียนจนเกินขอบเขต ต้องมีความพอดี )
โอกาสต่าง ๆ ในการเป็นพิธีกร ได้แก่
•  ผู้ดำเนินรายการบนเวทีในงานแสดงต่างๆ เช่น ดนตรี ละคร โชว์ ฯลฯ|
•  เป็นผู้ดำเนินการอภิปราย โต้วาที ยอวาที แซววาที
•  แนะนำองค์ปาฐก ผู้บรรยายรับเชิญ
•  จัดรายการทางวิทยุกระจายเสียง
•  จัดรายการทางโทรทัศน์
•  ดำเนินรายการในงานพระราชพิธี งานพิธี และงานมงคลต่างๆ
•  เป็นโฆษกของพรรคการเมืองในการปราศรัยหาเสียง หรือในงานต่างๆ 

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

วันอาทิตย์ที่ 14 สิงหาคม พ.ศ. 2554

Stack


สแต็ก
สแต็กเป็นโครงสร้างข้อมูลแบบลิเนียร์ลิสต์(linear list) ที่สามารถนำข้อมูลเข้าหรือออกได้ทางเดียวคือส่วนบนของสแต็กหรือ หรือเรียกว่า ท๊อปของสแต็ก (Top Of Stack)  ซึ่งคุณสมบัติดังกล่าวเรียกว่า ไลโฟลิสต์ (LIFO list: Last-In-First-Out list)
1. การดำเนินการพื้นฐานของสแต็ก
1.1 ฟังก์ชัน Push การเพิ่มข้อมูลในสแต็ก ในการเพิ่มข้อมูลในสแต็ก (pushing) สามารถทำได้โดยให้ทับบนข้อมูลสุดท้ายในสแต็ก และจะสามารถเพิ่มเข้าได้เรื่อย ๆ จนกว่าสแต็กจะเต็ม (Overflow State)
1.2 ฟังก์ชัน Pop การเอาข้อมูลที่อยู่บนสุดในสแต็ก หรือที่ชี้ด้วย Top ออกจากสแต็ก
1.3 ฟังก์ชัน Stack Top จะคืนค่าไปยังผู้ใช้งานเท่านั้น โดยไม่มีการลบข้อมูลออกจากสแต็กแต่อย่างใด
2. การสร้างสแต็ก
2.1 การสร้างสแต็กด้วยอาร์เรย์ การสร้างสแต็กด้วยอาร์เรย์ต้องมีการจัดสรรพื้นที่หน่วยความจำที่แน่นอนไว้ล่วงหน้า
2.2 การสร้างสแต็กด้วยลิงก์ลิสต์ จะเป็นการจัดสรรหน่วยความจำแบบไดนามิก (Dynamic) ไม่จำเป็นต้องกำหนดขนาดของหน่วยความเหมือนกับอาร์เรย์ หน่วยความจำจะถูกจัดสรรเมื่อมีการใช้งานจริงเท่านั้น
3. อัลกอริทึมการสร้างสแต็กด้วยลิงก์ลิสต์
3.1 Create stack สร้าง stack head node
3.2 Push stack เพิ่มรายการใน stack
3.3 Pop stack ลบรายการใน stack
3.4 Stack top เรียกใช้รายการข้อมูลที่อยู่บนสุดของ stack
3.5 Empty stack ตรวจสอบว่า stack ว่างเปล่าหรือไม่
3.6 Full stack ตรวจสอบว่า stack เต็มหรือไม่        
3.7 Stack count ส่งค่าจำนวนรายการใน stack
3.8 Destroy stack คืนหน่วยความจำของทุก node ใน stack ให้ระบบ
4. การประยุกต์ใช้งานสแต็ก
4.1    การเรียงลำดับข้อมูลแบบย้อนกลับ (Reversing data) คือการจัดเรียงลำดับข้อมูลใหม่
4.2    การแตกข้อมูลออกเป็นส่วนๆ (Parsing) เป็นการแตกข้อมูลออกเป็นส่วนๆ ให้เป็นอิสระต่อกัน เพื่อส่งไปประมวลผล
4.3    การหน่วงเวลา (Postponement) เป็นการหน่วงเวลาของข้อมูลไว้ชั่วขณะหนึ่งเพื่อรอการประมวลผลในช่วงจังหวะเวลาที่เหมาะสม ซึ่งกรณีดังกล่าว จะนำไปใช้กับการแปลงนิพจน์ Infix มาเป็น Postfix
4.4    การย้อนรอย (Backtracking Steps) คือวิธีการหาคำตอบโดยเดินหน้าไปยังเป้าหมาย เมื่อถึงทางแยกก็จะต้องตัดสินใจเลือกเส้นทางใดเส้นทางหนึ่งเดินหน้าต่อไปเพื่อหาเป้าหมาย หากเดินไปจนสุดเส้นทางแล้วยังไม่พบเป้า ก็จะเดินย้อนกลับมายังจุดแยกครั้งสุดท้ายแล้วเลือกเส้นทางใหม่ที่ยังไม่เคยไป ทำเช่นนี้ไปเรื่อยๆจนกว่าจะพบเป้าหมาย หรือจนครบทุกเส้นทาง
5.รูปแบบนิพจน์ทางคณิตศาสตร์ แบ่งเป็น ประเภทคือ
5.1 นิพจน์ Infix คือ นิพจน์ที่มีเครื่องหมายดำเนินการอยู่กึ่งกลางตัวถูกดำเนินการ (operand)
5.2 นิพจน์ Postfix คือ นิพจน์ที่มีเครื่องหมายดำเนินการอยู่ด้านหลังตัวถูกดำเนินการ (operand)
5.3 นิพจน์ Prefix คือ นิพจน์ที่มีเครื่องหมายดำเนินการอยู่ด้านหน้าตัวถูกดำเนินการ (operand)

Infix     : A+B
Postfix : AB+
Prefix   : +AB


6. การแปลงนิพจน์ Infix เป็น Postfix มีขั้นตอนดังนี้
6.1 ให้ทำการใส่เครื่องหมายวงเล็บให้กับทุกๆ นิพจน์ด้วยการคำนึงถึงลำดับการคำนวณ เช่น เครื่องหมายคูณและหารต้องมาก่อนเครื่องหมายบวกและลบ
6.2 ทำการเปลี่ยนสัญลักษณ์ Infix ในแต่ล่ะลงเล็บให้มาเป็นสัญลักษณ์แบบ Postfix โดยให้เริ่มต้นจากนิพจน์ที่อยู่วงเล็บในสุดก่อน จากนั้นก็ดำเนินการแปลงให้เป็นนิพจน์ Postfix ด้วยการย้ายโอเปอเรเตอร์ตรงตำแหน่งวงเล็บนั้นไปยังตำแหน่งวงเล็บปิดของคู่นั้นๆ
6.3 ถอดเครื่องหมายวงเล็บทิ้งออกไปให้หมด
7. รีเคอร์ชัน (Recursion)
                7.1 การวนรอบ
                7.2 การเรียกตัวเอง







วันพฤหัสบดีที่ 28 กรกฎาคม พ.ศ. 2554

ลิงกลิสต์

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

ลิงค์ลิสต์เดี่ยว

รูปแบบการเก็บข้อมูลโดยการใช้โครงสร้างแบบ Linked -List อาจมีการเชื่อมต่อกันเป็นเส้นตรง(linear) หรือไม่เรียงเป็นเส้นตรง ติดต่อกันไป (nonlinear) ในจำนวนที่ไม่แน่นอน เรียกสมาชิก ของลิงค์ลิสต์ว่า "โหนด" (node) แต่ละโหนดไม่จำเป็นต้องมีสมาชิกในตำแหน่งที่ประชิดกัน โครงสร้างของแต่ละโหนดจะประกอบด้วย 2 ส่วน ส่วนแรกบรรจุสารสนเทศของสมาชิก (INFO) ส่วนที่สองบรรจุตำแหน่งของโหนดถัดไป หรือ โหนดที่ตามมาหลัง (LINK) โหนดสุดท้ายของลิงค์ลิส จะไม่มีโหนดตามหลัง หรือลิงค์ไม่มีการเก็บตำแหน่งของโหนดใด ๆ แต่จะเก็บ ค่า NULL แทน (แทนด้วยเครื่องหมาย / ) ซึ่งเป็นสัญญาณว่าสิ้นสุดลิงค์ลิสต์ ลิงค์ลิสต์เดี่ยวจึงหมายถึง ลิงค์ลิสต์ที่ แต่ละโหนดมีลิงค์ตัวเดียว ส่วนลิงค์ลิสต์ใดที่ไม่มีโหนดเลยเรียกว่า ลิสค์ว่าง (empty)

การท่องลิงค์ลิสต์

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

การแทรกข้อมูลและการลบข้อมูล

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

การลบโหนดออกจากลิงค์ลิสต์ จะกระทำโดยการเปลี่ยนพอยเตอร์บางตัว เริ่มต้นก็จะต้องหาโหนดที่มาก่อน โหนดที่ต้องการลบ จากนั้นก็ทำการเปลี่ยนพอยเตอร์

ลิสต์พร้อมใช้งาน

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

ลิงค์ลิสวงกลม

ลิงค์ลิสต์ชนิดนี้ เกิดจากการปรับปรุงค่าลิงค์ลิสต์ เพื่อให้การประมวลผลที่ดีขึ้น โดยการแทนค่าลิงค์ที่เป็น NULL ของโหนดสุดท้ายของลิงค์ลิสต์ด้วยตำแหน่ง ที่อยู่ของโหนดแรก ลิงค์ลิสต์ในลักษณะนี้เราเรียกว่า ลิงค์ลิสต์วงกลม (circular linking linear list ) หรือ ลิสต์วงกลม ( circular list)

ลิงค์ลิสต์วงกลม มีประโยชน์กว่าลิงค์ลิสต์ธรรมดามาก


กล่าวคือ
1. ในการเข้าถึงข้อมูล ของโหนดลิงค์ลิสต์วงกลมโหนดทุกโหนด สามารถเข้าถึงได้จากโหนดใด ๆ ที่กำหนดให้ โดยผ่านทางสายโซ่ (ลิงค์ ) ของลิสต์
2. ในการลบโหนด ในการค้นหาโหนดที่มาก่อนโหนดใด ๆ สามารถเริ่มต้นค้นหาในโหนดนั้นได้เลย

ข้อเสียของลิงค์ลิสต์วงกลม

1. ในการประมวลผลหากไม่ระมัดระวัง อาจทำให้การประมวลผลวนรอบซ้ำไม่รู้จบ (infinite loop )จึงต้อง รู้จุดสิ้นสุดของการทำงาน โดยเราจะแทนจุดสุดท้ายของลิงค์ด้วยโหนดพิเศษ ที่ง่ายต่อการจำแนกโหนดในลิสต์วงกลม ซึ่งเราเรียกโหนดพิเศษนี้ว่า " โหนดหัว" (head node) หรือ "หัวลิสต์" (head list ) ของลิสต์วงกลม เทคนิคนี้จะทำให้ ลิสต์ไม่สามรถเป็นลิสต์ว่างได้

ลิงค์ลิสต์คู่

ในลิงค์ลิสต์ประเภทนี้จะมีโหนดซึ่งประกอบด้วยลิงค์ลิสต์ 2 ส่วน เพื่อแสดงโหนดที่มาก่อน และโหนดที่มาที หลัง โหนดที่มาก่อนเราเรียกว่า ลิงค์ซ้าย (left link) ซึ่งแทนด้วยพอยเตอร์ LLINK และลิงค์ที่แทนโหนดที่มาหลังเรา เรียกว่า ลิงค์ขวา(rigth ilnk) ซึ่งแทนด้วยพอยเตอร์ RLINK ซึ่งลิงค์ลิสต์ที่ประกอบด้วย คุณสมบัติดังกล่าวเราเรียกว่า "ลิงค์ลิสต์เชิงเส้นคู่ "(double linked linear list) หรือลิงค์ลิสต์คู่ (double linked list) ในแต่ละทิศทาง ไม่ว่าขวาสุด หรือซ้ายสุด จะมีค่า NULL เพื่อแสดงว่าสิ้นสุดลิสต์ในแต่ละทิศทาง

การแทรกข้อมูลในลิงค์ลิสต์คู่

การพิจารณาแทรกโหนดในลิงค์ลิสต์คู่มีดังกรณีที่จะเป็นไปได้ดังนี้
1. เมื่อลิงค์ลิสต์ว่าง ให้แทนโดยการกำหนดให้ พอยเตอร์ L และพอยเตอร์ R ชี้ไปยังตำแหน่งโหนดใหม่ และกำหนดให้ลิงค์ซ้ายและลิงค์ขวาของโหนดใหม่มีค่า NULL
blockquote>2.เมื่อแทรกโหนดใหม่ลงในกึ่งกลางของลิงค์ลิสต์ ลิงค์ลิสต์ก่อนการแทรกและหลังการแทรก ลำดับการเปลี่ยน พอยเตอร์มีความสำคัญมาก หากเปลี่ยนในลำดับที่ไม่ถูกต้องอาจทำให้โหนดที่บรรจุค่าเดิมสูญหายไป
3. เมื่อมีการแทรกโหนดใหม่ทางด้านซ้ายของโหนดซ้ายสุดของลิสต์ จะทำให้พอยเตอร์ L มีค่าเปลี่ยนไป

การลบข้อมูลอกจากลิงค์ลิสต์คู่

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

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

Resume

RESUME
Personal Detail
Name :  Miss. Khamwai   Phakphilai
Address :  222  M.3  T.Kanchong  A.Wadbot  Phitsanulok 65160
Age :   22  Years
Height :  157  Cm.
Weight :  63  Kg.
Dete of birth :  7  Apr.  1989
Telephone :  0-83960-0242
E-mail :  pakpilai_may@hotmail.com
Educational Background
        2008 – 2011   Suan Dusit Ratjabhat University.   GPA : 3.04
        2005 – 2007   Kanchongphitayacom School.   GPA : 3.42
Tranining Background
        Nov  2011 – Feb  2012
Specal Abilities
        Can Speak, Write, Reading English
        Can type 30 word perminute in Thai and 25 word per minute in English
Interests
        Gardening
References
                Mr. Khamwai   Chob


จดหมายสมัครงาน
Dear Sir / Madam.
            Referring to your advertize in Job Thai Hotel.com in position of Computer graphics. I would appreciate to apply for this position.
I very ensure that my background and experience as serve you will. Here with my resume with file attached.
I look forward to hearing from you soon or your convenience time. My contact number is 0-83960-0242. Personal Email : pakpilai_may@hotmail.com.

Sincerely Yours,

( Phakphilai   Khamwai ) 

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

conversation

Good moring. How doyoudo?.
Good moring. How doyoudo.
I’m fine , very well
How are you ?
Nice to meet you.
Glad to meet you.

เริ่มต้นการแนะนำตัว
May I introduce myself?
My name is …ชื่อ… หรือ I’m …ชื่อ-สกุล..
หรือถ้าถามว่า
Could you please introduce youself briefly?
Would you mind telling me about youself briefly?

การแนะนำตัว
My name is …ชื่อ … I,’m now …อายุ.. year old. I have …จำนวน.. brother and …จำนวน… sister.   หรือ I’m only one child (ลูกคนเดียว)   หรือ I have no brother and sister.
I graduated from Suan Dusit Rajabhat University.   หรือ กำลังรัยน I ‘m studing Suan Dusit Rajabhat University.
I did a bachelor in managementscince. my major wos business computer.

การถามตอบ
A: Where did you greduate?
B: I graduated from Suan Dusit Rajabhat University
A: What course did you take?
B: I did a bachelor in management scince.

A: What are you doing now ?
ในกรณีทำงานตอบ
B: I’m working at …ชื่อบริษัท… company.   หรือ 
กรณียังหางานทำไม่ได้ หรือหางานอยู่
B: I’m still out of work.

คุณทำงานที่ไหน
A: What company are you working for?
B: I’m working for …ชื่อบริษัท… company.

ทำงานตำแหน่งงอะไร
A: What is your position there?
B: I’m working as a …ตำแหน่ง…

คุณจะเริ่มทำงานเมื่อไหร่
A: when are you going to start?
B: May 1,2011.

คุณคาดหวังเงินเดือนเท่าไร
A: What salary do you expect?
B: 15',000 bhat.

เวลาว่างคุณทำอะไร
A:What do you do during your free time?
B: – Playing sport
- Reading A book.
- Gradening. (ทำสวน)
- Collecting stemp.

คุณเคยไปไหนมา
A: Have you been to abroad?
B: No,I haven’t.
B: Yes,I have been to …ที่ไปมา…

คุณสามารถพูดอังกฤษได้ไหม
A: Can you speak English?
B: Yes,I can speak abite.

คุณสามารถขับรถได้ไหม
A: Can you drive a car?
B: Yes,I’m drive a car.

คุณได้เกรดอะไร
A: What wos you Grage Point Average?
B: Tree point oh four.

คุณสามารถพิมพ์ได้เร็วเท่าไร
A: Can you type?
B: Yes,I can type 35  words per minute in thai and 30 words per minute in English.

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

Joomla

สร้างฐานข้อมูลใหม่ พิมพ์ Joomla

เปลี่ยน font   กดสร้าง
เปิดหน้าต่างใหม่ขึ้นมาพิมพ์ http://localhost/joomla  (แต่ต้องมีการย้าย จุมลา ไปอยู่ใน www ก่อน)
หากไม่ขึ้นหน้า joomla ให้ทำการ Copy อีกครั้ง
การติดตั้ง joomla --->เลือก --->เลือกถัดไปเรื่อยๆจนถึงการใส่ข้อมูลให้ใส่ข้อมูลดังนี้

ชนิดฐานข้อมูล
mysql โดยมากใช้ 'mysql'

ชื่อโฮสต์
localhost ค่าทั่วไปคือ 'localhost'

ชื่อผู้ใช้ฐานข้อมูล
root ชื่อผู้ใช้งานดาต้าเบส อาจจะใส่เป็น 'root' หรือชื่อผู้ใช้ที่ได้รับ จากผู้ให้บริการโฮสของท่าน

รหัสผ่าน
root เพื่อความปลอดภัยท่านควรกำหนดรหัสผ่าน สำหรับเข้าใช้งานฐานข้อมูล

ชื่อฐานข้อมูล
joomla โฮสบางแห่งมีเพียงดาเบสเดียวให้ท่านใช้งาน กรณีนี้ท่านสามารถใช้ชื่อนำหน้า (prefix) ตารางเพื่อติดตั้งมากกว่าหนึ่งไซต์.

จากนั้นคลิกถัดไป ถัดไป
ตั้งชื่อเว็บไซต์ว่า joomla program
ใส่อีเมล์ปลอม
ใส่รหัสผ่าน addmin
ยืนยันเหมือนกัน คลิกถัดไป  คลิกตกลง เท่านี้ก็ติดตั้งเรียบร้อยแล้ว
เปลี่ยนชื่อที่ joomla   ที่ตัว  installation เป็น installation-1  (ถ้าทำจริงต้องลบทิ้ง)
คลิกดูหน้าเว็บไซต์
เปิดแท็บใหม่พิมพ์http://localhost/joomla/administrator/เพื่อเข้าสู่ระบบadmin (Username : admin   , Password: addmin)

ติดตั้ง font ภาษาไทย Extensions เลือก install  ---> เลือกไฟล์   แล้วทำการอัฟโหลด
ไปเช็ค ที่ตัว Languages เพื่อดูภาษาเป็นภาษาไทย
กลับไป Extensions    Languages Manager
เลือกไทย  Default  เพื่อพิมพ์ภาษาไทย
ไปส่วนขยาย  การจัดการเทมเพลต   เพื่อเปลี่ยนพื้นหลังให้กับเว็บ
โมดูล เป็ฯตัวเสริมข้อมูลต่างๆ  บลั๊กอินก็เช่นกัน

บทความ   -->การจัดการบทความ     --> สร้างใหม่--->พิมพ์ ชื่อเรื่อง เกี่ยวกับการทำเว็บ--->about-web--->section เป็น  un...

วันพฤหัสบดีที่ 30 มิถุนายน พ.ศ. 2554

บทที่ 3 Array

Array ตามปกติ โครงสร้างข้อมูลแบ่งออกเป็น 2 ประเภทใหญ่ๆ ด้วยกัน คือ

1.โครงสร้างข้อมูลแบบเชิงเส้น (Linear Lists) เป็นรายการต่อเนื่อง ข้อมูลที่จัดเก็บมีลักษณะเป็นแถวลำดับต่อเนื่องกันไป เช่น Array,Stack,Queues เป็นต้น

2.โครงสร้างข้อมูลแบบไม่เป็นเชิงเส้น (Non-Linear Lists) ตรงกันข้ามกับโครงสร้างแบบเชิงเส้น เช่น Trees และ Graphs เป็นต้น

โครงสร้างข้อมูลแบบArray

อาร์เรย์ หรือ แถวลำดับ คือการวมกลุ่มของตัวแปรที่สามารถใช้ตัวแปรชื่อเดียวแทนข้อมูลสมาชิกได้หลายๆตัวใช้เลขดรรชนี(Index)หรือซับสคริปต์(Subscript)เป็นตัวอ้างอิงตำแหน่งสมาชิกบนแถวลำดับ

score[1] คือ คะแนนทดสอบของนักศึกษา
score[50] คือ คะแนนทดสอบของนักศึกษาคนสุดท้าย

คุณสมบัติสำสคัญของอาร์เรย์

1. อาร์เรย์เป็นตัวแทนของกลุ่มของมูลที่มีความสัมพันธ์กันเช่น เดือน 12 เดือน ซึ่งประกอบด้วยเดือนมกราคมถึงเดือนธันนวาคม ราคาหุ้นในรอบ 30 วัน เป็นต้น

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

3. ขนาดของอาร์เราย์จะมีขนาดลดลงคงที่

4. ผู้ใช้สามารถอ้างอิงเพื่อเข้าถึงข้อมูลที่ต้องการได้ทันที

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

ขอบเขตของอาร์เรย์ [Bounds]

1. ภาษา C,C++,C#,JAVA    จะถูกกำหนดขอบเขตล่างสุดเท่ากับ 0

2. ภาษา FRONTRAN      จะถูกกำหนดขอบเขตล่างสุดเท่ากับ 1

3. ADA,PL/1,PASCAL สามารถทำการกำหนดขอบเขตล่างสุดและขอบเขตบนสุดของอาร์เรย์ได้ รวมถึงกำหนดขอบเขตค่าติดลบได้

การคำนวณจำนวนสามาชิกของอาร์เรย์ 1 มิติ

จำนวนสมาชิก  = U + L + 1

การคำนวณจำนวนสามาชิกของอาร์เรย์ 2 มิติ

จำนวนสมาชิก = (U1 – L1 + 1) x (U2 – L2 + 1)

การคำนวณจำนวนสามาชิกของอาร์เรย์ 3 มิติ

จำนวนสมาชิก = (U1 – L1 + 1) x (U2 – L2 + 1) x (U3 – L3 + 1)

การจัดเก็บอาร์เรย์ในหน่วยความจำ
รูปแบบทั่วไปของโครงสร้างข้อมูลอาร์เรย์   
อาร์เรย์ 1 มิติ ใช้สูตร ArrayName [ L:U ]                         
ตัวอย่าง   a[1:10] = a[10]                                          
อาร์เรย์ 2 มิติ ใช้สูตร ArrayName [ L1:U1,L2:U2 ]
ตัวอย่าง a[4,5] = a[0:3,0:4]                         
อาร์เรย์ 3 มิติ ใช้สูตร ArrayName [ L1:U1,L2:U2 ,L3:U3 ]
ตัวอย่าง a[6,5,4] = a[0:5,0:4,0:3]
การคำนวณหาตำแหน่งแอดเดรสในหน่วยความจำ
อาร์เรย์ 1 มิติ ใช้สูตร LOC(a[i]) = B + w(i – L)
โดยที่                                                                                 
LOC(a[i]) คือ ตำแหน่งแอดเดรสที่เก็บ a[i] ในหน่วยความจำ                      
B คือ แอดเดรสเริ่มต้นของ a                                                
w  คือ ขนาดของข้อมูลในการจัดเก็บ                                   
i คือ ตำแหน่งของสมาชิกในอาร์เรย์                                    
L คือ ขอบเขตล่างสุด                                                           
ตัวอย่าง อยากทราบอาร์เรย์ a[10] (ภาษา C ) ถูกจัดเก็บในหน่วยความจพเดรสใด กำหนดให้ :  แอดเดรสเริ่มต้น = 1000      w =  1 ไบต์
LOC(a[i]) = B + w(i – L)                 
                  = 1000 + 1(10-0)
                  = 1000 + 10
                  = 1010
อาร์เรย์ 2 มิติ                                                                      
การจัดเก็บด้วยการเรียงคอลัมน์เป็นหลัก  
ใช้สูตร      LOC(a[i]) = B + w[C(i – L1) + ( j – L2)]
โดยที่ C  คือตำแหน่งคอลัมน์ของแถวลำดับ ( R*C )           
ตัวอย่าง ต้องการทราบตำแหน่งที่เก็บข้อมูลอาร์เรย์ K แถวที่ 2 คอลัมน์ 1 กำหนด B = 500, w = 4 ( ภาษา C )
LOC(K[i,j]     = B + w[C(i – L1) + ( j – L2)]
LOC(K[2,1])  = 500 + 4[3(2– 0) + ( 1 – 0)]
                        = 500 + 4[6 +1]
                        = 500 +28
                        = 528
อาร์เรย์ 3 มิติ                                                                           
การจัดเก็บด้วยการเรียงแถวเป็นหลัก       ใช้สูตร
      LOC(s[i,j,k])  = B + [ w * R * C( i - L1)                 
                                     + [w * C( j – L2 )] + [w(k-L3)]
ตัวอย่าง ต้องการทราบตำแหน่งที่เก็บข้อมูลอาร์เรย์ S ชั้นที่ 0 แถวที่ 3 คอลัมน์ 4 กำหนดให้ B = 500, w =4 (ภาษา C S[3][4][5] )
LOC(s[i,j,k])  = B + [ w * R * C( i - L1)                 
                               + [w * C( j – L2 )] + [w(k-L3)]
LOC(s[0,3,4])  = 500 + [ 4 * 4 * 5( 0 - 0)                 
                                     + [4 * 5( 3– 0 )] + [4(4-0)]
                           = 500 + 0 + 60 + 16
                          = 576
อาร์เรย์ 3 มิติ                                                                           
การจัดเก็บด้วยการเรียงคอลัมน์เป็นหลัก       ใช้สูตร
LOC( S[i,j,k]) = B + [w * K * R * C(j – L2) ]
                                + [ w * K * R(i – L1 )]  + [k – L3]

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

WordPress

WordPress เป็นบล็อกที่มีทั้งฟรีและไม่ฟรี

.org เป็นเว็บที่ใช้โหลด
.comใช้ในกาารเปิดเว็บ

WordPressเป็นเว็บที่ใช้ในการทำเว็บไซต์แบบง่ายและเป็นที่นิยมทำกันโดยต้องใช้โปรแกรม Apache2.2 1.กดปุ่มSCM…-->Apache2.2-->ดับเบิ้ลคลิก—>เปลี่ยนStart type เป็น Manual
2.กด Mysql—>ดับเบิ้ลคลิก—>เปลี่ยน Start type เป็น Manual—>Apply—>Ok
เพื่อไม่ให้มันเริ่มต้นตอนเปิดWindows

เข้าเพื่อ test Web Sebverของเราว่าใช้ได้ไหม  ไปที่ http://locolhost หรือ http://127.0.0.1

เลือก phpMyAddmin Database Maneger Version 2.10.2 ตัวข้างบน   การเตรียมฐานข้อมูล
1.สร้างฐานข้อมูลใหม่—>พิมพ์ wordpress –->font มาตรฐานใช้ utf_8ganeral_ci –> คลิกสร้าง
2.จากนั้น ไปที่ Folder WordPress แล้วไปใส่ในC:\appserv เป็นที่เก็ยเว็บไซต์ทั้งหมด   แล้วไปที่ drive ที่เก็บข้อมูลเมื่อสักครู่ ไปที่ www—>wordpress—>wp-config-sample จากนั้น Copy แล้ววาง จากนั้นเปลี่ยนชื่อเหลือแค่ wp-config
3.ดับเบิ้ลคลิกที่ wp-config แล้วใช้ Dremweaver 8 ในการเปิดเพื่อที่จะแก้ชื่อแสดงเว็บเราและชื่อเข้าใช้ระบบและPasswordโดยเปลี่ยนฝยบรรทัดที่ 19,22,23จากนั้นก็ปิดโปรแกรมไป

วันพฤหัสบดีที่ 23 มิถุนายน พ.ศ. 2554

บทที่ 2 ทบทวนภาษา C (Review C Language

1.คำสั่งพื้นฐานต่างๆ
-printf : ใช้แสดงผล ข้อความ ข้อมูลจากค่าคงที่ หรือตัวแปรที่จอภาพ

เช่น printf(“abc”);
printf(“%s”,”abc”);
-scanf : ใช้รับข้อมูลจากแป้นพิมพ์ แล้วจัดเก็บลงในหน่วยความจำของข้อมูล
เช่น scanf(“%d”,&x);
Format Code ใช้ในการแสดงผลที่นิยมใช้ ได้แก่
Format Codeความหมาย
%dใช้กับข้อมูลแบบ integer(เก็บข้อมูลแบบตัวเลขจำนวนเต็ม)
%cใช้กับข้อมูลแบบ character(เก็บข้อมูลแบบอักขระ)
%fใช้กับข้อมูลแบบ floating(เก็บข้อมูลแบบตัวเลขทศนิยม),double
%sใช้กับข้อมูลแบบ string
2.Operatorแบ่งออกเป็น 3 ชนิด คือ
  • Arithmetic Operators ได้แก่  +, - , *, /, % , -- , ++
  • Relational and Equality Operators ได้แก่ < , > , <= , >= , == , !=
  •    - Logical Operators ได้แก่ ! , && , ||
3. ทางเลือก/ลักษณะ [Selection/Condition] มีทั้งหมด 4 ทางเลือกหรือลักษณะ ได้แก่
3.1.  If Statement คือ เป็นคำสั่งที่ใช้เพื่อการตัดสินใจเลือกทำงานอย่างใดอย่างหนึ่ง โดยอาศัยการทดสอบเงื่อนไขบางประการ รูปแบบ : "... if (เงื่อนไข) คำสั่ง ; ..." 3.2. if-else statement คือ ผลลัพธ์ที่ได้จะมีค่าจริงกับเท็จเท่านั้น รูปแบบ : "... if (เงื่อนไข)
                          { คำสั่งต่างๆ เมื่อเงื่อนไขเป็นจริง ; }
                          else
                          { คำสั่งต่างๆ เมื่อเงื่อนไขเป็นเท็จ ; } ..."
3.3. If-Else Statement (Nested If) คือ มีรูปแบบโดยที่เงื่อนไขซ้อนเงื่อนไขเช่นในกรณีเปรียบเทียบเงื่อนไขแรก (condition1) แล้วปรากฏว่าเป็นจริง โปรแกรมจะเลือกทำคำสั่งหลังอักขระ : แต่หลังอักขระ : มีเงื่อนไขที่สอง (condition2) ที่ต้องตรวจสอบ เช่นเดียวกันถ้าเงื่อนไขตัวแรกเปรียบเทียบกันแล้วปรากฏว่าได้ผลลัพธ์ออกมาเป็นเท็จ โปรแกรมจะเลือกทำคำสั่งหลัง else : แต่ต้องไปพบกับเงื่อนไขที่สาม (condition3) ที่ซ้อนอยู่อีกเช่นกัน
รูปแบบ :
"... if (เงื่อนไขที่1)
คำสั่งชุดที่1; (กรณีเงื่อนไขที่ 1 เป็นจริง)
                  else if (เงื่อนไขที่2)
คำสั่งชุดที่2; (กรณีเงื่อนไขที่ 2 เป็นจริง)
                  else
คำสั่งชุดที่3; ..."
3.4. Switch Statement คือ จะคล้ายกับคำสั่ง If แต่ว่าเงื่อนไขจะมีมากกว่า 2 เงื่อนไข คือตรวจสอบเงื่อนไข โดยดูจากค่าของตัวแปร โดยนำค่าจากตัวแปรที่อยู่ในคำสั่ง switch มาตรวจสอบกับค่าที่อยู่หลังคำสั่ง case แต่ละคำสั่ง ถ้าตรงกัน ก็จะทำงานตามคำสั่งใน case นั้น ถ้าไม่ตรงกับ case ไหนเลยจะมาทำงานในคำสั่ง default แทน
รูปแบบ :
".... switch ( ตัวแปร ) {
case ค่าที่ 1 : คำสั่งที่ 1 ;
break; 
case ค่าที่ 2 : คำสั่งที่ 2 ;
break;
default : คำสั่งที่ไม่ตรงกับค่าที่ 1 และ 2 ;
} .... "
ไม่รู้จบ
4. การทำซ้ำ(Repetition/Loop) -while statement Format :

           while (เงื่อนไข) {
                  statement-1;
                  statement-2;
                       ……
                  statement-n;
     }
-for statement Format :

  for (ตัวแปร = ค่าเริ่มต้น ; นิพจน์ตรรกะ ; ค่าเพิ่มหรือค่าลด)
{
                statement -1 ;
                statement -2 ;
                     …..
                statement -n ;
  }
ข้อควรจำ : ตัวแปรที่ใช้งานในคำสั่ง for ต้องเป็นตัวแปรประเภทจำนวนเต็มเท่านั้น -do-while statement Format :

                          do {
                                  statement -1 ;
                                  statement -2 ;
                                        …..
                                 statement -n ;
            } while (นิพจน์ตรรกะ);

5. ฟังก์ชัน [Function]
ข้อดี คือ
          - เขียนโค้ดครั้งเดียว แต่สามารถเรียกใช้ได้หลายครั้ง
          - สามารถนำหลับมาใช้ใหม่ในโปรแกรมอื่นได้
          - ถ้าต้องการเปลี่ยนแปลงแก้ไขเพียงที่เดียว
          - ทำให้โปรแกรมมีความเป็นโครงสร้าง
          - สามารถแบ่งเป็นโมดูลย่อยๆได้
ฟังก์ชันแบ่งได้เป็น 2 ประเภท ได้แก่
5.1 ฟังก์ชันมาตรฐานหรือไลบรารีฟังก์ชัน [Library Function]  คือ ฟังก์ชันที่ใช้ในงานนี้ เป็นรูปแบบฟังก์ชันที่ต้องมีการส่งค่ากลับ ดังนั้นตัวแปรที่จะใช้งานต้องเป็นตัวเลข กลุ่มทศนิยม เช่น float, double เป็นต้น
รูปแบบ :                          ".... #include<file-name> ...."
ตัวอย่างเช่น :
                        "... #include<stdio.h>
                             #include<conio.h >                              etc.  ...." วิธีเรียกการใช้งาน Library Function                     - เรียกชื่อของฟังก์ชันที่ต้องการใช้งาน                     - เอาค่าที่จะส่งไปทำงานในฟังก์ชัน ใส่ลงในวงเล็บตามหลังชื่อฟังก์ชันนั้น แบบที่ 1 : ".... strcpy () ..."                    - อยู่ในแฟ้มข้อมูล string.h                   - ทำหน้าที่คัดลอกข้อมูลจาก string หนึ่งไปยัง string หนึ่ง รูปแบบ :
"... strcpy (str1, str2); ..."
แบบที่2 :
".... strcat() ..."
                  - อยู่ในแฟ้มข้อมูล string.h
                  - ทำหน้าที่ใช้เชื่อมต่อข้อความ 2 ข้อความเข้าด้วยกัน
รูปแบบ :
"... strcat (str1, str2); ..."
แบบที่ 3 :
".... strlen () ..."
                  - อยู่ในแฟ้มข้อมูล string.h
                  - ทำหน้าที่หาความยาวของข้อความ
รูปแบบ :
"... strlen (string); ..."
แบบที่ 4 :
".... getchar () ..."
                  - อยู่ในแฟ้มข้อมูล stdio.h
                  - ทำหน้าที่เป็นพังก์ชั่นรับข้อมูลเข้าทางคีย์บอร์ดครั้งละ 1 อักขระโดยต้องกด enter  และข้อมูลที่ป้อนเข้าจะปรากฏทางจอภาพ
รูปแบบ :
"... getchar (); ..."
แบบที่ 5 :
".... getch() ..."
                  - อยู่ในแฟ้มข้อมูล stdio.h
                  - ทำหน้าที่เป็นฟังก์ชั่นรับข้อมูลเข้าทางคีย์บอร์ดครั้งละ 1 อักขระ โดยไม่ต้องกด enter  และข้อมูลที่ป้อนเข้าจะไม่ปรากฏทางจอภาพ
รูปแบบ :
"... getch (); ..."
แบบที่ 6 :
".... gets() ..."
                  - อยู่ในแฟ้มข้อมูล stdio.h
                  - ทำหน้าที่เป็นฟังก์ชั่นรับข้อมูลที่เป็นข้อความจากแป้นพิมพ์ เข้ามาเก็บไว้ในตัวแปรชุด (อาร์เรย์)
รูปแบบ :
"... gets (); ..."
แบบที่ 7 :
".... putchar(); ..."
                  - อยู่ในแฟ้มข้อมูล stdio.h
                  - ทำหน้าที่เป็นฟังก์ชั่นให้แสดงผลทางจอภาพครั้งละ 1 อักขระ (อาร์เรย์)
รูปแบบ :
"... putchar (); ..." 5.2. การสร้างฟังก์ชันใช้เอง [User Defined Function] คือ เป็นฟังก์ชันที่ผู้เขียนโปรแกรมนิยามขึ้นใหม่ โดยอาจจะเขียนรวมไว้ในตัวโปรแกรมต้นฉบับเดียวกัน หรือเขียนแยกไว้ในไฟล์อื่น ซึ่งจะนำมาแปลร่วมโดยการใช้ Include Directives เช่นเดียวกับฟังก์ชันมาตรฐานการสร้าง Function ประกอบด้วย 5.2.1. Function Definition หรือนิยามฟังก์ชัน รายละเอียดในการทำงานของฟังก์ชัน คือ
รูปแบบ : "...     /* ………………….. */ heading comment                                  data-type function-name (type argument argument)                              {                                   declaration;                                   statement;                                return(value);                              }  ...."
Function Prototype คือ การประกาศฟังก์ชันโดยระบุทั้งชนิดของ function และ arguments ทั้งหมด เพื่อ ให้ compiler มีการตรวจสอบการเรียกใช้ชนิดของ arguments ให้ถูกต้องในขั้นตอนของการ compile ถ้า หากว่ามีการเรียกใช้ arguments ที่ไม่ถูกต้องก็จะมี message แจ้งตอนcompile ทำให้ไม่ผิด
พลาดในการเรียกใช้ฟังก์ชัน
-Invocation คือการเรียกใช้ฟังก์ชัน ลักษณะของฟังก์ชัน -ฟังก์ชันที่ไม่มีการส่งค่ากลับ การเรียกใช้ทำได้โดยอ้างถึงชื่อฟังก์ชัน            ...........   Print_banner () ; -ฟังก์ชันที่มีการส่งค่ากลับ การเรียกใช้ทำได้เหมือนแบบแรก แต่ต้องมีตัวแปรมารับค่าด้วย การเรียกใช้ทำได้โดย
int main(void) {
   int k, j;
   j = prompt ();
   k = prompt ();
printf(“j = %d and k = %d”, j, k);
-ฟังก์ชันที่มีการรับค่า argument การเรียกใช้ฟังก์ชันทำได้โดยอ้างถึงชื่อของฟังก์ชันพร้อมทั้งส่งค่าของตัวแปร(parameter)ไปด้วย โดยจะ ต้องมีชนิดสอดคล้องกับ argument ของฟังก์ชัน ที่เรียกใช้ การผ่านค่า argument ให้ฟังก์ชัน ทำได้ 2 แบบ คือ 1) Pass by Value คือ การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้โดยส่งค่าของตัวแปรหรือค่าที่ส่งไปโดยค่าคง ที่ผ่านให้กับค่าฟังก์ชันจะถูกคัดลอกส่งให้กับ ฟังก์ชันและจะถูกเลี่ยนแปลงเฉพาะภายในฟังก์ชัน โดยค่า ของ argumentในโปรแกรมที่เรียกใช้จะไม่เปลี่ยนแปลง ตัวอย่าง :
void swap(int num1, int num2) {
          int tmp;
tmp = num1;
num1 = num2;
num2 = tmp;
print(“A is %d B is %d\n”, num1, num2);
}
2) Pass by Reference คือ การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้โดยส่งเป็นตำแหน่งที่อยู่ของตัวแปรไป ซึ่งหากภายในฟังก์ชันมีการเปลี่ยนแปลงค่าของ argument ที่ส่งไป ก็จะมีผลทำให้ค่าของ argument นั้นใน โปรแกรมที่เรียกใช้เปลี่ยนไปด้วย ตัวอย่าง :
void swap(int * num1, int * num2) {
       int tmp;
tmp = *num1;
*num1 =* num2;
*num2 = tmp;
}

บทที่ 1 การทบทวนความรู้พื้นฐาน (Review)

ขั้นตอนการพัฒนาโปรแกรม
  1. กำหนดปัญหา (Define the Problem)
  2. ร่างรายละเอียดแนวทางการแก้ไขปัญหา (Outline the Solution)
  3. พัฒนาอัลกอลิทึ่ม (Develop and Algorithm)
  4. ตรวจสอบความถูกต้องของอัลกอลิทึ่ม (Test the Algorithm for Correctness)
  5. เขียนโปรแกรม (Programming)
  6. ทดสอบโปรแกรม(Testing)
  7. จัดทำเอกสารและบำรุงรักษาโปรแกรม (Document and Maintain the Program)
ขั้นตอนการพัฒนาโปรแกรมจะต้องมีการทำที่เป็นขั้นตอนลงไปเรื่อยๆเป็นลำดับตั้งแต่ขั้นตอนที่ 1-7

Program Design Methodology
  1. การออกแบบโปรแกรมแบบ Procedure-Driven
    • แนวคววามคิด - มีกระบวนการ (Processes) หรือฟังก์ชัน (Functions)
  2. การออกแบบโปรแกรมแบบ Event – Deiven
    • แนวความคิด - เหตุการณ์หรือการโต้ตอบจากภายนอกเป็ฯสำคัญ ที่ส่งผลต่อการโปรแกรมในด้ารการเปลี่ยนแปลงในแต่ละสถานะ
  3. การออกแบบโปรแกรมแบบ Data – Driven
    • แนวความคิด - ข้อมูลในโปรแกรมมากกว่ากระบวนการ โดยเริ่มต้นจากการวิเคราะห์ข้อมูลและควาสัมพันธ์ระหว่างข้อมูล มีการกำหนดโครงสร้างเบื้องต้น และเมื่อโครงสร้างข้อมูลได้ถูกกำหนดขึ้น ความต้องการในผลลัพธ์ของข้อมูลก็จะถูกพิจารณาในลำดับถัดไปว่ามีกระบวนการใดที่จะทำการแปลงข้อมูลนำเข้าเพื่อไปสู่ผลลัพธ์หรือเอาต์พุตที่ต้องการ
การเขียนโปรแกรมแบบ Procedural และ Object – Oriented
  1. การเขียนโปรแกรมแบบบนลงล่าง (Top-Down Development)
    • ตัวอย่างเช่น
    • image
    • ตัวอย่าง คลาสไดอะแกรมที่ออกแบบขึ้นเพื่อการโปรแกรม
    • image
Objective of Structured Program Design Techniques
  1. ต้องการให้โปรแกรมมีคุณภาพและคาดหมายพฤติกรรมการทำงานของโปรแกรมได้
  2. โปรแกรมสามารถที่จะแก้ไข ปรับปรุง หรือดัดแปลงได้ง่ายในอนาคต
  3. ทำให้ขั้นตอนของการเขียนโปรแกรมเป็ฯไปอย่างมีระบบ มีความสะดวกและง่ายขึ้น
  4. ลดเวลาในการพัฒนาโปรแกรม
Introduction to Algorithm and Pseudo Code
  1. Algorithm
    • คือ กลุ่มของขั้นตอนหรือกฏเกณฑ์ที่จะนำพาไปสู่การแก้ไขปัญหาได้
    • คือ ขั้นตอนวิธี ซึ่งจะใช้อธิบายว่างานนั้นๆทำอย่างไร โดยจะประด้วยชุดลำดับเป็นขั้นตอนที่ชัดเจน และรับประกันว่าเมื่อได้ปฏิบัติถูกต้องตามขั้นตอนจนครบ ก็จะได้ผลลัพธ์ที่ถูกต้องตามต้องการ
ExampleAlgorithm
อัลกอริทึ่มในการใช้เครื่องคิดเลขรวมตัวเลข
  1. turn on calculator
    clear calculator
    repeat the following instructions
    key in baht amount
    key in decimal point (.)
    key in satang amount
    press addition(+) key
    until all prices have been entered
    write down total price
    turn off calculator
Introduction to Algorithm and Pseudo Code (Cont.)  
Pseudo Code
  1. นำมาใช้แทนอัลกอริทึ่ม
  2. โปรแกรมเมอร์สามารถนำอัลกอลิทึ่มที่นำเสนอในรูปแบบซูโดโค้ดไปเขียนเป็นชุดคำสั่งภษาฌปรแกรมได้ทันที
หลักกการเขียนซูโดโค้ด
  1. ถ้อยคำหรือประโยคคำสุั่ง (Statement) ให้เขียนอยู่ในรูปแบบของภาษาอังกฤษอย่างง่าย
  2. ในหนึ่งบรรทัดให้เขียนประโยคคำสั่งเพียงคำสั่งเดียว
    ควรใช้ย่อออหน้าให้เป็นประโยชน์เพื่อแยกคำเฉพาะ (Keyword) ได้อย่างชัดเจนรวมถึงจัดโครงสร้าง การควบคุมให้เป็ฯสัดส่วน ซึ่งการกระทำดังกล่าวจะทำให้อ่านง่าย
  3. แต่ละประโยคคำสั่งให้เขียนลำดับจากบนลงล่าง โดยเพียงทางเข้าทางเดียวและมีทางออกทางเดียวเท่านั้น
  4. กลุ่มของประโยคคำสั่งต่างๆอาจจัดรวมกลุ่มเข้าด้วยกันในรูปแบบของโมดุล แต่ต้องกำหนดชื่อโมดุูลเหล่านั้นด้วย เพื่อสามารถเรียกใช้งานโมดูลนั้นได้
Six Basic Computer Operations
  1. คอมพิเตอร์สามารถรับข้อมูลได้
    • read ใช้เมื่อมีการรับหรืออ่านเรคอร์ดจากไฟล์ข้อมูล
    • get ใช้สำหรับข้อมูลจากแป้นคีย์บอร์ด   เช่น                                                                                   
    •  read studentName
      get systemDate
      read number1, number2
      get taxCode
  2. คอมพิวเตอร์สามารถแสดงผลลัพธ์ได้
    • print มช้สำหรับการส่งผลลัพธ์ออกทางเครื่องพิมพ์
    • write ใช้สำหรับการส่งเอาต์พุตเพื่อเก็บบันทึกลงในไฟล์
    • put,output หรือ display จะใช้สำหรับการส่งเอาต์พุตออกไปแสดงผลทางจอภาพ เช่น                  
    •  print “Program Completed”
      write customer record to master file
      put name, address and postcode
      output totalTax
      display “End of data”
    • คำสั่ง prompt ที่ใช้สำหรับแสดงข้อมความก่อนที่จะใช้คำสั่ง get, เพื่อจะสามารถสื่อสารโต้ตอบกับยูสเซอร์ได้อย่างสมบูรณ์ยิ่งขึ้น         เช่น
    •  promt for studentMark
      get studentMark
  3. คอมพิวเตอร์สามารถคำนวณได้
    • สัญลักษณ์ที่ใช้ในการคำนวณ
      • สัญลักษณ์ + ใช้แทนการบวก (Add)
      • สัญลักษณ์ - ใช้แทนการลบ (subtract)
      • lสัญลักษณ์ * ใช้แทนการคูณ (multiply)
      • สัญลักษณ์ / ใช้แทนการหาร (divide)
    • คำกริยาที่ใช้ในการคำนวณจะใช้คำว่า compute และ culculate เช่น  divide totalMarks by studentCount
      salesTax costPrice * 0.10
    • compute C = (F – 32) * 5 / 9
  4. คอมพิวเตอร์สามารถกำหนดค่าตัวแปรได้
    • สามารถทำได้ 3 รูปแบบ ดังนี้
      1. ใช้คำกริยา initialize หรือคำว่า set เพื่อกำหนดค่าเริ่มต้นให้กับตัวแปร
      2. ใช้สัญลักษณ์เครื่องหมาย = หรือเครื่องหมาย <-- เพื่อกำหนดค่าให้กับตัวแปร
      3. ใช้คำกริยา store ในการเก็บข้อมูลให้กับตัวแปร
      4. initialize totalPrice to zero
      5. set studentCount to 0
      6. totalPrice = costPrice + salesTax
      7. totalPricecostPrice + salesTaxstore customerId in lastCustomerID
  5. คอมพิวเตอร์สามารถเปรียบเทียบและเลือกการทำงานได้
    • ใช้คำ if…then…else และจบด้วย cnd if เสมอ
    • if employeeStatus is partTime then add 1 to partTimeCount else Mr.Warawut Chapter 1 Review 35 add 1 to fullTimeCount end if
  6. คอมพิวเตอร์สามารถทำงานซ้ำๆได้
    1. ใช้คำ dowhile…end หรือ repeat…until
    2. dowhile file_flag <> “eof” read student record print studentName, address to report Mr.Warawut Chapter 1 Review 36 add 1 to studentTotal enddoeof        eof – End Of File
The Three Basic Control Structures
  1.  The Three Basic Control Structures แบบเรียงลำดับ (Sequence) ทำงานตามชุดคำสั่งแบบลำดับ จากบนลงล่าง 
  2. แบบเลือกการทำงาน (Selection) เปรียบเทียบเงื่อนไขโดยใช้คำสั่ง
 if…
then….
else ….
end if
แบบทำงานซ้ำ (Repetition)

dowhile จะทำงานซ้ำไปเรื่อยๆ เมื่อตรงกับเงื่อนไขจนกระทั่งเงื่อนไขเป็นเท็จ ก็จะหลุดออกจากลูป
dowhile condition p is true
statement block
enddo

ส่วน repeat …. until จะทำการ execute statement
ก่อนเช็คเงื่อนไข
repeat
statement
statement
until condition is true