Week 12 Engineering Problem 2

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Advertisements

Pointers. Why have pointers? / pointers ทำให้ฟังก์ชันหรือส่วนของ โปรแกรมสามารถใช้งานข้อมูลร่วมกันได้ / ใช้ pointers ในการสร้างโครงสร้างข้อมูลที่ ซับซ้อนได้
Arrays.
รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
การเขียนโปรแกรมด้วยคำสั่งเบื้องต้น
การทำงานแบบเลือกทำ (Selection)
ข้อมูลชนิดสตริง String บทที่ 8
ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator (บทที่ 3)
บทที่ 6 โครงสร้างข้อมูลลิ้งค์ลิสต์
การแสดงผล และการรับข้อมูล การแสดงผล และการรับข้อมูล.
พอยน์เตอร์ (Pointer) Chapter Introduction to Programming
สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)
Data Type part.II.
หลักการโปรแกรม 1 Lecture 3: ตัวแปร, นิพจน์คณิตศาสตร์, การคำนวณทางคณิตศาสตร์,การดำเนินการกับสายอักขระ.
ชนิดของข้อมูลและตัวดำเนินการ
ทบทวน Array.
อสมการ.
Week 6 ประกาศค่าตัวแปร.
การแสดงผล และการรับข้อมูล
รับและแสดงผลข้อมูล.
PHP LANGUAGE.
อาเรย์ (Array).
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
เรื่อง ประเภทของข้อมูล
การรับข้อมูลเบื้องต้นโดยใช้ฟังก์ชั่น scanf
Arrays.
Arrays.
Week4 Data types, Variables, Operators and Input/output (ต่อ)
ขั้นตอนวิธี (Algorithm)
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
ข้อมูลพื้นฐานและตัวดำเนินการ
หน่วยที่ 1 พื้นฐานภาษา C
อาร์เรย์และข้อความสตริง
อาร์เรย์ (Array).
Suphot Sawattiwong Lab IV: Array Suphot Sawattiwong
การคำนวณทางคณิตศาสตร์ ตัวดำเนินการ
ตัวแปร (Variable) คือ ชื่อที่ตั้งขึ้นเพื่อเก็บข้อมูลในหน่วยความจำ สามารถเก็บข้อมูลชนิดใดก็ ได้ ลักษณะที่สำคัญ ค่าที่จัดเก็บ เมื่อปิดโปรแกรมข้อมูลจะหายไป.
ตัวแปรกับชนิดของข้อมูล
ฟังก์ชันรับข้อมูล ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
แถวอักขระ (string) ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ง30212 พื้นฐานการเขียนโปรแกรม ศูนย์คอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
การรับและพิมพ์ข้อมูลเบื้องต้น
ตัวแปรกับชนิดของข้อมูล
ทบทวน กันก่อน .....กระบวนการแปลโปรแกรม
Week 2 Variables.
การประมวลผลสายอักขระ
Week 12 Engineering Problem 2
Computer Programming for Engineers
กองซ้อน ยอดกองซ้อน (stack).
คำสั่งรับค่าและฟังก์ชันทางคณิตศาสตร์
โครงสร้างข้อมูลแบบกองซ้อน (Stack)
โครงสร้างภาษาซี #include <stdio.h> void main() {
บทที่ 10 สตริง.
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
โครงสร้างโปรแกรมภาษาซี
หลักการเขียนโปรแกรม ( )
หน่วยที่ 4 โครงสร้างโปรแกรมภาษาซี
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
บทที่ 2 โครงสร้างของภาษา C.
การกระทำทางคณิตศาสตร์
ตัวแปร และชนิดข้อมูล.
บทที่ 11 การจัดการข้อมูลสตริง
การเขียนโปรแกรม (ภาษาซี)
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
หลักการทั่วไปเกี่ยวกับการเขียนโปรแกรม
ใบสำเนางานนำเสนอ:

Week 12 Engineering Problem 2

Outline ทบทวนการใช้อาเรย์ ปัญหาการจัดเรียงข้อมูล อัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort)แบบ pseudo-code ตัวอย่างการทำงานของอัลกอริทึม อัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) ในภาษา C

การประกาศอาเรย์ในภาษา C type name[elements]; name คือ ชื่ออาเรย์ type หมายถึง ชนิด อาทิเช่น int, float, ฯลฯ และ elements ระบุจำนวนสมาชิกในอาเรย์ ตัวอย่าง int billy[5]; float c[12], x[27];

ปัญหาในการจัดเรียงข้อมูล ปัญหาในการจัดเรียงข้อมูลสามารถกำหนดได้ดังนี้ Input: อาเรย์ A = <a1,a2,a3,…,an> ที่เก็บตัวเลขจำนวนเต็มจำนวนทั้งหมด n ตัว Output: อาเรย์ A = <a’1,a’2,a’3,…,a’n> ที่เก็บตัวเลขจำนวนเต็มจำนวนทั้งหมด n ตัว โดยที่ a’1≤ a’2 ≤ a’3 ≤… ≤ a’n การแก้ปัญหานี้สามารถทำได้หลายวิธี แต่วิธีที่เราจะศึกษามีชื่อเรียกว่าอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) ข้อมูลนำเข้าเป็นตัวเลขจำนวน n ตัว ข้อมูลนำออกเป็นตัวเลข n ตัวเดิมที่เรียงจากน้อยไปมาก

อัลกอริทึมการจัดเรียงข้อมูลแบบแทรก (Insertion Sort) อธิบายการทำงานโดยใช้ pseudo-code อธิบายการทำงานโดยใช้ pseudo-code

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 สมมติว่ามีตัวเลขอยู่ห้าตัวที่ต้องการจะจัดเรียงจากน้อยไปมากโดยใช้อัลกอริทึมจัดเรียงแบบแทรก สมมติว่ามีตัวเลขอยู่ห้าตัวที่ต้องการจะจัดเรียงจากน้อยไปมากโดยใช้อัลกอริทึมจัดเรียงแบบแทรก

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 ตัวเลขสีแดงคือตัวเลขที่ต้องการจะเปรียบเทียบกับตัวเลขข้างหน้าเพื่อหาตำแหน่งที่ถูกต้อง ตัวเลขสีแดงคือตัวเลขที่ต้องการจะเปรียบเทียบกับตัวเลขข้างหน้าเพื่อหาตำแหน่งที่ถูกต้อง

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 เนื่องจาก 4 มากกว่า 1 จึงไม่ต้องมีการย้ายตำแหน่งของ 4 เนื่องจาก 4 มากกว่า 1 จึงไม่ต้องมีการย้ายตำแหน่งของ 4

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 ตัวเลขถัดมาที่เราจะหาตำแหน่งที่ถูกต้องคือ 2 ตัวเลขถัดมาที่เราจะหาตำแหน่งที่ถูกต้องคือ 2

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 เนื่องจาก 2 น้อยกว่า 4 แสดงว่า 2 ต้องสลับตำแหน่งกับ 4 เนื่องจาก 2 น้อยกว่า 4 แสดงว่า 2 ต้องสลับตำแหน่งกับ 4

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 นำ 2 มาเปรียบเทียบกับตัวเลขข้างหน้าคือ 1 ในที่นี้ 2 มีค่ามากกว่า 1 เลข 2 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว นำ 2 มาเปรียบเทียบกับตัวเลขข้างหน้าคือ 1 ในที่นี้ 2 มีค่ามากกว่า 1 เลข 2 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 พิจารณาตัวเลขถัดมาคือเลข 6 นำเลข 6 ไปเปรียบเทียบกับตัวเลขข้างหน้าคือ เลข 4 พิจารณาตัวเลขถัดมาคือเลข 6 นำเลข 6 ไปเปรียบเทียบกับตัวเลขข้างหน้าคือ เลข 4

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 1,2,4,6,7 เนื่องจากเลข 6 มีค่ามากกว่าเลข 4 แล้ว เลข 6 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว ไม่ต้องสับเปลี่ยนตำแหน่งกับเลข 4 เนื่องจากเลข 6 มีค่ามากกว่าเลข 4 แล้ว เลข 6 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว ไม่ต้องสับเปลี่ยนตำแหน่งกับเลข 4

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 1,2,4,6,7 นำตัวเลขตัวถัดไปคือเลข 7 มาเปรียบเทียบกับตัวเลขข้างหน้าคือ เลข 6 นำตัวเลขตัวถัดไปคือเลข 7 มาเปรียบเทียบกับตัวเลขข้างหน้าคือ เลข 6

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 1,2,4,6,7 เนื่องจากเลข 7 มีค่ามากกว่าเลข 6 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว ไม่ต้องมีการสลับที่ เนื่องจากเลข 7 มีค่ามากกว่าเลข 6 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว ไม่ต้องมีการสลับที่

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 1,2,4,6,7 เนื่องจากตัวเลข 7 เป็นตัวเลขตัวสุดท้าย การจัดเรียงจึงสิ้นสุดลงโดยตัวเลขทั้ง 5 ตัวอยู่ในลำดับจากน้อยไปมากตามที่ต้องการ เนื่องจากเลข 7 มีค่ามากกว่าเลข 6 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว ไม่ต้องมีการสลับที่

อัลกอริทึมการจัดเรียงข้อมูลแบบแทรกใน C สังเกตว่าโค๊ดนี้เหมือนโค๊ดเทียมเป๊ะ เราต้องประกาศขนาดของ array A ให้เกินไว้หนึ่งค่าเพราะเราจะใช้ index ที่อยู่ในช่วง 1 ถึง 20

ตัวอย่างการทำงานของโปรแกรม

การจัดเรียงข้อมูลที่เป็นสตริง การจัดเรียงข้อมูลแบบแทรกสามารถใช้กับการจัดเรียงข้อมูลที่ไม่ใช่ตัวเลขได้ด้วย ขอเพียงแต่ให้มีตัวเปรียบเทียบที่บอกว่าข้อมูลที่ให้มาสองอัน = > หรือ < กัน เช่น เราสามารถจัดเรียงข้อมูลสตริงได้ เพราะเราสามารถใช้ฟังก์ชัน strcmp ซึ่งมีรูปแบบ int strcmp(char *string1, char *string2);

การเปรียบเทียบสตริงโดยใช้ strcmp จะต้องใช้งาน string.h โดยใช้คำสั่ง #include <string.h> การใช้งาน จะต้องใส่เครื่องหมาย & หน้าชื่อตัวแปรที่เก็บตัวอักษรที่ต้องการเปรียบเทียบ ผลการทำงาน ถ้า string1<string2, ค่าที่ได้จะน้อยกว่า 0 ถ้า string1>string2, ค่าที่ได้จะมากกว่า 0 ถ้า string1==string2, ค่าที่ได้จะเท่ากับ 0

อย่างการใช้งานstrcmp char letter1 = ‘c’ char letter2 = ‘k’ int mycmp; mycmp = strcmp(&letter1, &letter) printf(“%d\n”, mycmp); ค่าที่ได้ออกมาจะเป็น ลบ เพราะอักษร c มาก่อน อักษร k * ในการเทียบอักขระ (character) ตัวอักษรเดียว สามารถใช้ ==, >, < ได้ แต่ในแบบฝึกหัดให้ทดลองใช้คำสั่ง strcmp ด้วย

ตัวอย่างโปรแกรมที่ใช้ strcmp ผลการทำงาน