วันพฤหัสบดีที่ 15 ตุลาคม พ.ศ. 2552

ลูกแรดเตรียมพร้อมล่าเหยื่ิอ

สรุปสิ่งที่ได้จากการเรียนวิชาเตรียมฝึกประสบการณ์วิชาชีพบริหารธุรกิจ

สิ่งที่ได้รับจากการเรียนวิชาเตรียมฝึกประสบการณ์วิชาชีพบริหารธุรกิจ คือ

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

- 03 กรกฎาคม 2552 มารู้จักสวนดุสิตกันเถอะ กับการประกันคุณภาพ

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

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

- 10 กรกฎาคม 2552 คุณธรรมจริยธรรมและธนาคารความดี

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

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

- 17 กรกฎาคม 2552 การเงินส่วนบุคคล

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

นอกจากนี้ยังได้จัดทำการบันทึกรายรับ รายจ่ายที่ใช้จ่ายในชีวิตประจำวันของในแต่ละวันตั้งแต่วันที่ 20 กรกฎาคม 30 สิงหาคม 2552 จัดทำเป็นโครงการเงินออมใน Excel เพื่อทำให้เราทราบว่าในแต่ละวันใช้เงินไปเท่าไร เหลือเงินเท่าไร เมื่อได้รับเงินมาแต่ละครั้ง ทำให้เราสามารถออมเงินได้มากพอสมควรว่าไม่ควรใช้จ่ายอย่างประหยัด

- 24 กรกฎาคม 2552 รับขวัญสู่บ้านใหม่ กับการพัฒนาบุคลิกภาพ

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

- 07 สิงหาคม 2552 กิจกรรมแขนงคอมพิวเตอร์

สิ่งที่ได้เกี่ยวกับกิจกรรมแขนงคอมพิวเตอร์ การเรียนรู้เกี่ยวกับ จุดเด่น องค์ประกอบ

ต่าง ๆ ของ Business Intelligence ของการเปลี่ยนแปลงต่าง ๆ และทราบเกี่ยวกับทำไมต้องมี Business Intelligence

- 14 สิงหาคม 2552 กิจกรรมแขนงธุรกิจระหว่างประเทศ

สิ่งที่ได้เกี่ยวกับกิจกรรมแขนงธุรกิจระหว่างประเทศ การเรียนรู้เกี่ยวกับการจัดการวัฒนธรรมข้ามชาติ ระดับของวัฒนธรรม การค้าขายข้ามวัฒนธรรม รวมทั้งความสามารถในการจัดการทางวัฒนธรรมหรือที่เรียกว่า ความฉลาดรอบรู้ทางวัฒนธรรม คือ การเปิดใจให้กว้างด้วยการยอมรับวัฒนธรรมที่แตกต่าง

- 21 สิงหาคม 2552 กิจกรรมแขนงการตลาด

สิ่งที่ได้เกี่ยวกับกิจกรรมแขนงการตลาด การเรียนรู้เกี่ยวกับเส้นทางสู่ความสำเร็จกับ Marketing คือความรู้ด้านการตลาด การขายตรง และขบวนการแห่งความสำเร็จประกอบด้วย ความฝัน เป้าหมาย การวางแผน การกระทำต้องการความสำเร็จ

- 11 กันยายน 2552 ภาษาไทยในชีวิตประจำวัน

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

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

DTS 10-09/09/52

Sorting

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

(1) เวลาและแรงงาน

(2) เวลาที่เครื่องคอมพิวเตอร์ต้องใช้ในการทำงาน

(3) จำนวนเนื้อที่ในหน่วยความจำหลักมีเพียงพอหรือไม่

วิธีการเรียงลำดับ

ขั้นตอนการจัดเรียงเป็นแบบง่าย ๆ ตรงไปตรงมา แต่ใช้เวลาในการจัดเรียงลำดับนาน และบางวิธีก็มีขั้นตอนในการจัดเรียงลำดับแบบซับซ้อนยุ่งยากแต่ใช้เวลาในการจัดเรียงไม่นานนัก ดังนั้น วิธีการเรียงลำดับสามารถแบ่งออกเป็น2 ประเภท คือ

(1)การเรียงลำดับแบบภายใน (internal sorting)เป็นการเรียงลำดับที่ข้อมูลทั้งหมดต้องอยู่ในหน่วยความจำหลัก เวลาที่ใช้ในการเรียงลำดับจะคำนึงถึงเวลาที่ใช้ในการเปรียบเทียบและเลื่อนข้อมูลภายในความจำหลัก

(2) การเรียงลำดับแบบภายนอก(external sorting) เป็นการเรียงลำดับข้อมูลที่เก็บอยู่ในหน่วยความจำสำรอง ซึ่งเป็นการ

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

การเรียงลำดับแบบเลือก (selection sort)

ทำการเลือกข้อมูลมาเก็บในตำแหน่งที่ โดยทำการค้นหาข้อมูลนั้นในแต่ละรอบแบบเรียงลำดับ เป็นการเรียงลำดับจากน้อยไปมาก

1. ในรอบแรกจะทำการค้นหาข้อมูลตัวที่มีค่าน้อยที่สุดมาเก็บ

ไว้ที่ตำแหน่งที่ 1

2. ในรอบที่สองนำข้อมูลตัวที่มีค่าน้อยรองลงมาไปเก็บไว้ที่

ตำแหน่งที่สอง

3. ทำเช่นนี้ไปเรื่อย ๆ จนกระทั่งครบทุกค่าในที่สุดจะได้ข้อมูลเรียงลำดับจากน้อยไปมากตามที่ต้องการ

การจัดเรียงลำดับแบบเลือกเป็นวิธีที่ง่ายและตรงไปตรงมา แต่มีข้อเสียตรงที่ใช้เวลาในการจัดเรียงนานต้องทำการเปรียบเทียบทั้งหมด n – 1 รอบ และจำนวนครั้งของการเปรียบเทียบในแต่ละ

รอบเป็นดังนี้

รอบที่ 1 เปรียบเทียบเท่ากับ n - 1 ครั้ง

รอบที่ 2 เปรียบเทียบเท่ากับ n – 2 ครั้ง

รอบที่ n – 1 เปรียบเทียบเท่ากับ 1 ครั้ง

การเรียงลำดับแบบฟอง (Bubble Sort)

เป็นวิธีการเรียงลำดับที่มีการเปรียบเทียบข้อมูลในตำแหน่งที่อยู่ติดกัน

1. ถ้าข้อมูลทั้งสองไม่อยู่ในลำดับที่ถูกต้องให้สลับตำแหน่งที่อยู่กัน

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

กรณีที่ดีที่สุด คือ กรณีที่ข้อมูลมีการเรียงลำดับในตำแหน่งที่ถูกต้องอยู่แล้ว โดยจะทำการเปรียบเทียบในรอบที่ 1 รอบเดียวเท่านั้น ก็สามารถสรุปได้ว่าข้อมูลเรียงลำดับเรียบร้อยแล้ว ถ้ามีจำนวนข้อมูลทั้งหมด n จำนวนจำนวนครั้งของการเปรียบเทียบ = n –1

การเรียงลำดับแบบแทรก (insertion sort)

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

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

2. จะต้องจัดให้ข้อมูลที่มีค่าน้อยอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก และถ้าเรียงจากมากไปน้อยจะก็จะจัดให้ข้อมูลที่มีค่ามากอยู่ในตำแหน่งก่อน

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

จำนวนครั้งของการเปรียบเทียบ = n - 1 ครั้งการเรียงลำดับแบบฐาน เป็นการเรียงลำดับโดยการพิจารณาข้อมูลทีละหลัก

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

2. การจัดเรียงจะนำข้อมูลเข้ามาทีละตัว แล้วนำไปเก็บไว้ที่ซึ่งจัดไว้สำหรับค่านั้น เป็นกลุ่ม ๆตามลำดับการเข้ามา

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

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

วันพฤหัสบดีที่ 10 กันยายน พ.ศ. 2552

DTS 09-02/09/52

Tree (ต่อ)
เอ็กซ์เพรสชันทรี (Expression Tree)
การนำเอาโครงสร้างทรีไปใช้เก็บนิพจน์ทางคณิตศาสตร์โดยเป็นไบนารีทรี ซึ่งแต่ละโหนดเก็บตัวดำเนินการ (Operator) และและตัวถูกดำเนินการ
(Operand) ของนิพจน์คณิตศาสตร์นั้น ๆ ไว้ หรืออาจจะเก็บค่านิพจน์ทางตรรกะ (Logical Expression)นิพจน์เหล่านี้เมื่อแทนในทรีต้องคำนึงลำดับขั้นตอน
การคำนวณตามความสำคัญของเครื่องหมายด้วย
โดยมีความสำคัญตามลำดับดังนี้
- ฟังก์ชัน
- วงเล็บ
- ยกกำลัง
- เครื่องหมายหน้าเลขจำนวน (unary)
- คูณ หรือ หาร
- บวก หรือ ลบ
- ถ้ามีเครื่องหมายที่ระดับเดียวกันให้ทำจากซ้ายไปขวา

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

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

DTS 08-26/08/52

Tree
ทรี (Tree) เป็นโครงสร้างข้อมูลที่ความสัมพันธ์ระหว่าง โหนดจะมีความสัมพันธ์ลดหลั่นกันเป็นลำดับ ได้มีการนำรูปแบบทรีไปประยุกต์ใช้ในงานต่าง ๆ ส่วนมากจะใช้สำหรับแสดงความสัมพันธ์ระหว่างข้อมูล
แต่ละโหนดจะมีความสัมพันธ์กับโหนดในระดับที่ต่ำลงมา หนึ่งระดับได้หลาย ๆ โหนดเรียกโหนดดังกล่าวว่าโหนดแม่ (Parent or Mother Node)
โหนดที่อยู่ต่ำกว่าโหนดแม่อยู่หนึ่งระดับเรียกว่า โหนดลูก (Child or Son Node)
โหนดที่อยู่ในระดับสูงสุดและไม่มีโหนดแม่เรียกว่า โหนดราก (Root Node)
โหนดที่มีโหนดแม่เป็นโหนดเดียวกันเรียกว่า โหนดพี่น้อง (Siblings)
โหนดที่ไม่มีโหนดลูก เรียกว่าโหนดใบ (Leave Node)
เส้นเชื่อมแสดงความสัมพันธ์ระหว่างโหนดสองโหนดเรียกว่า กิ่ง (Branch)
นิยามที่เกี่ยวข้องกับทรี
1. ฟอร์เรสต์ (Forest)หมายถึง กลุ่มของทรีเกิดจากการเอาโหนดรากของ
ทรีออกหรือ เซตของทรีที่แยกจากกัน
2. ทรีที่มีแบบแผน (Ordered Tree)หมายถึง โหนดต่าง ๆ ในทรีนั้นมี
ความสัมพันธ์ที่แน่นอน
แสดงทรีที่ต่างกันเมื่อกำหนดให้เป็นทรีที่มีแบบแผน
3. ทรีคล้าย (Similar Tree) คือ โครงสร้างเหมือนกัน หรือทรีที่มีรูปร่างของทรีเหมือนกัน โดยไม่คำนึงถึงข้อมูลที่อยู่ในแต่ละโหนด
4. ทรีเหมือน (Equivalent Tree) คือ เหมือนกันโดยสมบูรณ์ โดยต้องเป็นทรีที่คล้ายกันและแต่ละโหนดในตำแหน่งเดียวกันมีข้อมูลเหมือนกัน
5. กำลัง (Degree) หมายถึง จำนวนทรีย่อยของโหนด
6. ระดับของโหนด (Level of Node) คือ ระยะทางในแนวดิ่งของโหนด ที่อยู่ห่างจากโหนดราก กำหนดให้ โหนดรากของทรีอยู่ระดับ 1และกิ่งแต่ละกิ่งมีความเท่ากันหมด คือ ยาวเท่ากับ 1 หน่วย ซึ่งระดับของโหนดจะเท่ากับจำนวนกิ่งที่น้อยที่สุด จากโหนดรากไปยังโหนดใด ๆ บวกด้วย 1 และจำนวนเส้นทางตามแนวดิ่งของโหนดใด ๆ ซึ่งห่างจากโหนดราก เรียกว่า ความสูง (Height) หรือความลึก (Depth)
การแทนที่ทรีในหน่วยความจำหลัก
1. โหนดแต่ละโหนดเก็บพอยเตอร์ชี้ไปยังโหนดลูกทุกโหนด การแทนที่ทรีด้วยวิธีนี้ จะให้จำนวนฟิลด์ในแต่ละโหนดเท่ากันโดยกำหนดให้มีขนาดเท่ากับจำนวนโหนดลูกของโหนดที่มีลูกมากที่สุด โหนดใดไม่มีโหลดลูกก็ให้ค่าพอยเตอร์ในลิงค์ฟิลด์นั้นมีค่าเป็น Null และให้ลิงค์ฟิลด์แรกเก็บค่าพอยเตอร์ชี้ไปยังโหนด ลูกลำดับที่หนึ่ง ลิงค์ฟิลด์ที่สองเก็บค่าพอยเตอร์ชี้ไปยังโหนดลูกลำดับที่สอง และลิงค์ฟิลด์อื่นเก็บค่าพอยเตอร์ของโหนดลูก
ลำดับ ถัดไปเรื่อย ๆ
2. แทนทรีด้วยไบนารีทรี เป็นวิธีแก้ปัญหาเพื่อลดการ สิ้นเปลืองเนื้อที่ในหน่วยความจำก็คือ กำหนดลิงค์ฟิลด์ให้มีจำนวนน้อยที่สุดเท่าที่จำเป็นเท่านั้นโดยกำหนดให้แต่ละโหนดมีจำนวนลิงค์ฟิลด์สองลิงค์ฟิลด์
-ลิงค์ฟิลด์แรกเก็บที่อยู่ของโหนดลูกคนโต
-ลิงค์ฟิลด์ที่สองเก็บที่อยู่ของโหนดพี่น้องที่เป็นโหนดถัดไป
โหนดใดไม่มีโหนดลูกหรือไม่มีโหนดพี่น้องให้ค่าพอยน์เตอร์ใน
ลิงค์ฟิลด์มีค่าเป็น Null
การท่องไปในไบนารีทรี คือ การท่องไปในไบนารีทรี เพื่อเข้าไปเยือนโหนดในทรี ซึ่งวิธีการท่องเข้าไปต้องเป็นไปอย่างมีระบบแบบแผน สามารถเยือนโหนดทุก ๆ โหนด ๆ ละหนึ่งครั้งวิธีการท่องไปนั้นมีด้วยกันหลายแบบ
การลำดับขั้นตอนการเยือน โหนดที่ถูกเยือนอาจเป็น เช่น
โหนดแม่ (แทนด้วย N)
ทรีย่อยทางซ้าย (แทนด้วย L)
ทรีย่อยทางขวา (แทนด้วย R)
มีวิธีการท่องเข้าไปในทรี 6 วิธี คือ NLR
วิธีการท่องจากซ้ายไปขวา 3 แบบแรกที่นิยมใช้คือ NLR LNR และ LRN ซึ่งแต่ละลักษณะ มีดังนี้
1. การท่องไปแบบพรีออร์เดอร์(Preorder Traversal)
เป็นการเดินเข้าไปเยือนโหนด ในทรีด้วยวิธี NLR มีขั้นตอนการเดินดังต่อไปนี้
- เยือนโหนดราก
- ท่องไปในทรีย่อยทางซ้ายแบบพรีออร์เดอร์
- ท่องไปในทรีย่อยทางขวาแบบพรีออร์เดอร์

2.การท่องไปแบบอินออร์เดอร์ (Inorder Traversal)
เป็นการเดินเข้าไปเยือนโหนด ในทรีด้วยวิธี LNRมีขั้นตอนการเดินดังต่อไปนี้
- ท่องไปในทรีย่อยทางซ้ายแบบอินออร์เดอร์
- เยือนโหนดราก
- ท่องไปในทรีย่อยทางขวาแบบอินออร์เดอร์

3. การท่องไปแบบโพสออร์เดอร์(Postorder Traversal)
เป็นการเดินเข้าไปเยือนโหนด ในทรีด้วยวิธี LRN มีขั้นตอนการเดินดังต่อไปนี้
- ท่องไปในทรีย่อยทางซ้ายแบบโพสต์ออร์เดอร์
- ท่องไปในทรีย่อยทางขวาแบบโพสต์ออร์เดอร์

DTS 07-05/08/52

Queue

คิว (Queue) เป็นโครงสร้างข้อมูลแบบเชิงเส้นหรือลิเนียร์ลิสต์ซึ่งการเพิ่มข้อมูลจะกระทำที่ปลายข้างหนึ่งซึ่งเรียกว่าส่วนท้ายหรือเรียร์ (rear) และการนำข้อมูลออกจะกระทำที่ปลายอีกข้างหนึ่งซึ่งเรียกว่า ส่วนหน้า หรือ ฟรอนต์(front)
ลักษณะการทำงานของคิวเป็นลักษณะของการเข้าก่อนออกก่อนหรือที่เรียกว่า FIFO (First In First Out)
การทำงานของคิว
- การใส่สมาชิกตัวใหม่ลงในคิวเรียกว่า Enqueue ซึ่งมีรูปแบบคือ enqueue หมายถึง การใส่ข้อมูล newElement ลงไปที่ส่วนเรียร์ของคิว
- การนำสมาชิกออกจากคิว เรียกว่า Dequeue ซึ่งมีรูปแบบคือ dequeue หมายถึง การนำออกจากส่วนหน้าของคิวและให้ ข้อมูลนั้นกับ element

การแทนที่ข้อมูลของคิว สามารถทำได้ 2 วิธี คือ
1. แบบลิงค์ลิสต์
2. แบบอะเรย์
การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์ จะประกอบไปด้วย 2 ส่วน คือ
1. Head Node จะประกอบไปด้วย 3 ส่วน คือ พอยเตอร์จำนวน 2 ตัว คือ Front และ rear กับจำนวนสมาชิกในคิว
2. Data Node จะประกอบไปด้วย ข้อมูล (Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป

การดำเนินการเกี่ยวกับคิว
1. Create Queue จัดสรรหน่วยความจำให้แก่ Head Node และ
ให้ค่า pointer ทั้ง 2 ตัวมีค่าเป็น null และจำนวน สมาชิกเป็น 0
2. Enqueue การเพิ่มข้อมูลเข้าไปในคิว
3. Dequeue การนำข้อมูลออกจากคิว
4. Queue Front เป็นการนำข้อมูลที่อยู่ส่วนต้นของคิวมาแสดง
5. Queue Rear เป็นการนำข้อมูลที่อยู่ส่วนท้ายของคิวมาแสดง
6. Empty Queue เป็นการตรวจสอบว่าคิวว่างหรือไม่
7. Full Queue เป็นการตรวจสอบว่าคิวเต็มหรือไม่
8. Queue Count เป็นการนับจำนวนสมาชิกที่อยู่ในคิว
9. Destroy Queue เป็นการลบข้อมูลทั้งหมดที่อยู่ในคิว

การแทนที่ข้อมูลของคิวแบบอะเรย์
- การนำข้อมูลเข้าสู่คิว จะไม่สามารถนำเข้าในขณะที่คิวเต็ม หรือไม่มีที่ว่าง ถ้านำเข้าจะทำให้เกิดความผิดพลาดที่เรียกว่า overflow
- การนำข้อมูลออกจากคิว จะไม่สามารถนำอะไรออกจากคิวที่ว่างเปล่าได้ ถ้าจะทำให้เกิดความผิดพลาดที่เรียกว่า underflow

วันอังคารที่ 25 สิงหาคม พ.ศ. 2552

DTS 06-29/07/52

Stack (ต่อ)

การแทนที่ข้อมูลของสแตกสามารถทำได้ 2 วิธี คือ
1. การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์
2. การแทนที่ข้อมูลของสแตกแบบอะเรย์
การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์จะประกอบไปด้วย2 ส่วน คือ
1. Head Node จะประกอบไปด้วย 2 ส่วนคือ top pointer และจำนวนสมาชิกในสแตก
2. Data Node จะประกอบไปด้วยข้อมูล (Data) และพอยเตอร์ ที่ชี้ไปยังข้อมูล
การดำเนินการเกี่ยวกับสแตก
1.Create Stack จัดสรรหน่วยความจำให้แก่ Head Nodeและส่งค่าตำแหน่งที่ชี้ไปยัง Head ของสแตกกลับมา
2. Push Stack การเพิ่มข้อมูลลงไปในสแตก
3. Pop Stack การนำข้อมูลบนสุดออกจากสแตก
4. Stack Top เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตก โดยไม่มีการลบข้อมูลออจาก
สแตก
5. Empty Stack เป็นการตรวจสอบการว่างของสแตก เพื่อไม่ให้เกิดความผิดพลาดในการนข้อมูลออกจากสแตกที่เรียกว่า Stack Underflow6.
6. Full Stack เป็นการตรวจสอบว่าสแตกเต็มหรือไม่ เพื่อไม่ให้เกิดความผิดพลาดในการนำข้อมูลเข้าสแตกที่เรียกว่า Stack Overflow
7. Stack Count เป็นการนับจำนวนสมาชิกในสแตก
8. Destroy Stack เป็นการลบข้อมูลทั้งหมดที่อยู่ในสแตก
การแทนที่ข้อมูลของสแตกแบบอะเรย์ เช่นเดียวกับ 8 ขั้นตอนที่กล่าวมาข้างต้น
การประยุกต์ใช้สแตก การประยุกต์ใช้สแตก จะใช้ในงานด้านปฏิบัติการของเครื่องคอมพิวเตอร์ที่ขั้นตอนการทำงานต้องการเก็บข่าวสารอันดับแรกสุดไว้ใช้หลังสุด เช่น การทำงานของโปรแกรมแปลภาษานำไปใช้ในเรื่องของการโปรแกรมที่เรียกใช้โปรแกรมย่อย การคำนวณนิพจน์ทางคณิตศาสตร์ และรีเคอร์ชั่น (Recursion)


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


การคำนวณนิพจน์ทางคณิตศาสตร์
ในการเขียนนิพจน์ทางคณิตศาสตร์เพื่อการคำนวณ จะต้องคำนึงถึงลำดับความสำคัญของเครื่องหมายสำหรับการคำนวณด้วยโดยทั่วไปนิพจน์ทางคณิตศาสตร์สามารถเขียนได้ 3 รูปแบบ คือ
1. นิพจน์ Infix นิพจน์รูปแบบนี้ operatorจะอยู่ตรงกลางระหว่างตัวถูกดำเนินการ 2 ตัว
2. นิพจน์ Postfix นิพจน์รูปแบบนี้ จะต้องเขียนตัวถูกดำเนินการตัวที่ 1 และ 2 ก่อน แล้วตามด้วย operator
3. นิพจน์ Prefix นิพจน์รูปแบบนี้ จะต้องเขียน operatorก่อนแล้วตามด้วยตัวถูกดำเนินการตัวที่ 1 และ 2

ขั้นตอนการแปลงจากนิพจน์ Infix เป็นนิพจน์Postfix
1. อ่านอักขระในนิพจน์ Infix เข้าทีละตัว
2. ถ้าเป็นตัวถูกดำเนินการจะถูกย้ายไปเป็นตัวอักษรในนิพจน์ Postfix
3. ถ้าเป็นตัวดำเนินการ จะนำค่าลำดับความสำคัญของตัว ดำเนินการที่อ่านเข้ามาเทียบกับค่าลำดับความสำคัญของตัวดำเนินการที่อยู่บนสุดของสแตก
- ถ้ามีความสำคัญมากกว่า จะถูก push ลงในสแตก
- ถ้ามีความสำคัญน้อยกว่าหรือเท่ากัน จะต้อง pop ตัวดำเนินการที่อยู่ในสแตก
4. ตัวดำเนินการที่เป็นวงเล็บปิด “)” จะไม่ push ลงในสแตกแต่จะดำเนินการตัวอื่น ๆ ถูก pop ออกจากสแตกนำไป เรียงต่อกันในนิพจน์ Postfix จนกว่าจะเจอ “(” จะ popวงเล็บเปิดออกจากสแตกแต่ไม่นำไปเรียงต่อ
5. เมื่อทำการอ่านตัวอักษรในนิพจน์ Infixหมดแล้ว ให้ทำการ Pop ตัวดำเนินการทุกตัวใน
สแตกนำมาเรียงต่อในนิพจน์Postfix

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

DTS 05-22/07/52

Linked List :
กระบวนการทำงานและฟังก์ชั่นที่ใช้ดำเนินงานพื้นฐาน (ต่อ)
1. กระบวนการทำงาน Traverse : การท่องไปใน list เพื่อเข้าถึงการประมวลผลข้อมูลนำเข้าของ list ก็ขึ้นอยู่กับประมวลผลด้วย
2. กระบวนการทำงาน Retrieve Node : การเรียกกับคืน โดยบอกตำแหน่งของข้อมูลและนำตำแหน่งที่ได้ค่าแสดง
3. ฟังก์ชั่น Empty list : ทดสอบว่า list ว่าง ถ้าจริง list ก็ว่าง ถ้าไม่จริง list ไม่ว่าง
4. ฟังก์ชั่น Full list : การทดสอบ list เต็มหรือไม่ ถ้าจริงหน่วยความจำเต็ม ถ้าไม่จริง สามารถมี node อื่นได้
5. ฟังก์ชั่น List count : นับจำนวนใน list โดยเอาค่า count มาแสดงที่อยู่ใน head node
6. กระบวนการทำงาน Destroy List : การทำลาย list

Stack:
สแตก คือ เป็นข้อมูลที่เป็นลิเนอร์ลิสต์ มีคุณสมบัติเพิ่มหรือลบข้อมูล จะกระทำข้างเดียว เรียกว่า Top ของสแตก โดยมีลักษณะที่เป็นข้อมูลที่ใส่หลังสุดจะถูกนำออกจากสแตกเป็นลำดับแรกสุด
การดำเนินงานพื้นฐานของสแตก
การกระทำที่ปลายข้างหนึ่งของสแตกเท่านั้น ดังนั้นจะต้องมีตัวชี้ตำแหน่งข้อมูลบนสุดของสแตกด้วย สแตกจะประกอบด้วยกระบวนการ 3 กระบวนการ คือ
1. Push คือ การนำข้อมูลใส่ในสแตก และสามารถตรวจสอบว่าสแตกเต็มหรือไม่ ถ้าไม่เต็มสามารถเพิ่มข้อมูลลงไปได้ แล้วปรับตัวชี้ตำแหน่งให้ไปชี้ที่สแตกว่าง ถ้าเต็ม (Stack Overflow) ก็ไม่สามารถเพิ่มข้อมูลได้
2. Pop คือ การนำข้อมูลออกจากส่วนบนสุดของสแตก ถ้ามีข้อมูลออกจากสแตกเพียงหนึ่งตัว จะเกิดสภาวะว่าง (Stack Empty) คือการไม่มีข้อมูลในสแตก ถ้าไม่มีข้อมูลในสแตก แล้วทำการ Pop จำทำให้เกิดความผิดพราดที่เรียกว่า Stack Underflow ดังนั้นก่อนการนำข้อมูลออกจากสแตกต้องทำการตรวจสอบก่อนว่าว่างหรือเปล่า จึงจะนำข้อมูลออกได้ และปรับตัวชี้ตำแหน่งให้ไปชี้ตำแหน่งข้อมูลที่ต่อจากข้อมูลที่ถูกนำออกไป
3. Stack Top คือ การคัดลอกข้อมูลที่อยู่บนสุดของสแตก แต่ไม่ได้นำข้อมูลออกจากสแตก


การบ้าน
ยกตัวอย่างในการใช้ชีวิตประจำวันเกี่ยวกับ Stack


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

DTS 04-15/07/52

Linked List :
ลิงค์ลิสต์ คือ การเชื่อมต่อรายการ
อิลิเมนท์ คือ ตัวแปรแต่ละตัวเป็นสมาชิก โดยมีพอยเตอร์เป็นตัวเชื่อม
Node คือ จุดเชื่อมต่อเข้าด้วยกัน ลักษณะของ Node ไม่จำเป็นต้องเป็นรูปวงกลม ประกอบด้วย 2 ด้วย คือ Data กับ Link Field โดย Data เชื่อมต่อกับ list ถ้า Data ของ list ไม่ได้มีการเชื่อมต่อกับตัวใดจ ะมีเครื่องหมายกากบาดในช่องนั้น และถ้า Node แรกนั้นไม่มีข้อมูลในดนดแรกของลิสต์นั้นจะเป็น null
กระบวนการทำงานและฟังก์ชั่นที่ใช้ดำเนินงานพื้นฐาน
1. กระบวนการทำงาน Create List : การสร้าง list ว่าง เพราะยังไม่มี data node จะใส่ 0 ไว้ในช่องว่างก่อน
2. กระบวนการทำงาน Insert Node : เพิ่มข้อมูลลงไปใน list ที่ต้องการ สามารถเปลี่ยนแปลงได้
3. กระบวนการทำงาน Delete Node : ต้องการลบในตำแหน่งที่ต้องการ จะมีการเปลี่ยนแปลงสมาชิกลดลง โดยถึงจะทำการสั่งให้ลบ
4. กระบวนการทำงาน Search List : ค้นหาข้อมูลใน list ที่ต้องการนำเข้าข้อมูล ถ้าจริงจะพบข้อมูล ถ้าไม่จริงจะไม่พบข้อมูลที่ต้องการ


การบ้าน
เขียนโปรแกรมเปรียบเทียบการใช้ฟังก์ชั่น stdio.h กับ iostream.h แต่ผลลัพธ์ออกมาต้องเหมือนกัน

การหาพื้นที่วงกลม สี่เหลี่ยมผืนผ้า สามเหลี่ยมจตุรัส
#include stdio.h
#include conio.h
void main(){
clrscr();
float area;int m, a, b;
printf(“1.Area of Circle\n2.Area of Rectangular\n3.Area of Square\n99.Stop\n”);

printf(“Press”);scanf(“%d”,& m);
while(m!=99){
if(m>=1 && m<=3){

switch(m){
case 1:
printf( “\nInput Radius” );
scanf(“%d”,& a);
area = (22.0/7) * a * a;
break;
case 2:
printf( “\nInput Width”);
scanf(“%d”,& a);
printf( “Input Long”);
scanf(“%d”,& b);
area = a * b; break;
case 3:
printf( “\nInput Width”);
scanf(“%d”,& a);
area = a * a;
break;
default:
break;
}
printf(“Area \n”);
}
else{
printf(“Invalid Data. Try again (Choose Integer 1-3 or 99 Exit)\n”);
}
printf( “Press”);
scanf(“%d”,& m);
}
printf(“End Program. Bye \n” , “Press Enter to Exit”);
getch(); }
……………………………………………..
#include iostraem.h
#include conio.h
void main(){
clrscr();
float area;

int m, a, b;
cout << “1.Area of Circle\n2.Area of Rectangular\n3.Area of Square\n99.Stop\n”;

cout << “Press “;
cin >> m;
while(m!=99){
if(m>=1 && m<=3){

switch(m){
case 1: cout << “\nInput Radius “; cin >> a;
area = (22.0/7) * a * a;
break;
case 2:
cout << “\nInput Width “;cin >> a;cout << “Input Long “;cin >> b;
area = a * b;
break;
case 3:
cout << “\nInput Width “;cin >> a;
area = a * a;
break;
default:
break;
}
cout << “Area ” <<>> m;
}
cout << “End Program. Bye \n” << “Press Enter to Exit”;

getch(); }


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

DTS 03 -01/07/52

Structure กับ pointer
pointer เป็นตัวแปรที่ทำหน้าที่เก็บตำแหน่ง (address) ของตัวแปรที่อยู่ในหน่วยความจำในการประกาศตัวแปร pointer จะต้องนำหน้าด้วยเครื่องหมาย * และเครื่องหมาย & เป็นเครื่องหมายที่บอกตำแหน่งที่อยู่ของตัวแปรที่เก็บไว้ในหน่วยความจำ
เช่น การกำหนดตัวแปร x = 10
x
10
1000 ....... address
โดยการกำหนดตัวแปร X ซึ่งอยู่ที่ตำแหน่ง 1000 มีค่า 10 เก็บอยู่
การประกาศ parameter เป็นตัวแปรแบบพอยน์เตอร์
เช่น void swap (int*p,int*q) .......การส่งพารามิเตอร์ 2 ตัว
Set and string
สตริงเป็นข้อมูลที่ประกอบด้วยตัวอักษร ตัวเลขหรือเครื่องหมายเรียงติดกันไป รวมทั้งช่องว่าง โดยการกำหนดค่าคงที่ตัวสตริง สามารถ กำหนดได้ทั้งนอกและในฟังก์ชัน เมื่อกำหนดไว้นอกฟังก์ชัน ชื่อค่าคงตัวเป็นพอยน์เตอร์ไปยังหน่วยความจำที่เก็บสตริง และเมื่อกำหนดไว้ในฟังก์ชัน จะเป็นพอยน์เตอร์ไปยังหน่วยความจำที่เก็บตัวมันเอง
การกำหนดค่าให้กับสตริง จะใช้เครื่องหมาย double quote (“ ”)
เช่น (“ ABC ”) คือ ชุดอักขระที่มีขนาด 4 โดยรวม \0 ด้วย

วันอังคารที่ 30 มิถุนายน พ.ศ. 2552

ประวัติส่วนตัว


นางสาวอารีรัตน์ ตั้งอำนวยชัย
Miss Areerat Tangamnuaychai
กำลังศึกษาปริญญาตรีปีที่ 3
รหัสนักศึกษา 50152792046
หลักสูตรบริหารธุรกิจ (คอมพิวเตอร์ธุรกิจ)
คณะวิทยาการจัดการ
มหาวิทยาลัยราชภัฏสวนดุสิต

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

DTS 02-24/06/52

Array and Record
การกำหนดอะเรย์เริ่มจากชื่อของอะเรย์ ตามด้วย Subscript มีมากกว่า 1 จำนวน และเป็นตัวบอกอะเรย์หลายมิติและการกำหนด Subscript จะมีค่าสูงสุดที่เรียกว่า ขอบเขตบน และค่าต่ำสุด เรียกว่า ขอบเขตล่าง
การจัดเก็บอะเรย์ในหน่วยความจำหลักของอะเรย์ในมิติต่าง ๆ เช่น อะเรย์ 1 มิติ หรืออะเรย์หลายมิติ โดยอะเรย์จะส่งให้ฟังก์ชันได้ 2 ลักษณะ คือ
1. การกำหนด array element เป็นพารามิเตอร์ส่งค่าให้กับฟังก์ชัน โดยอ้างชื่อพร้อมระบุ Subscript
ตัวอย่าง int(num[10],num[5]);
2. ส่งอะเรย์ทั้งชุดให้ฟังก์ชัน โดยอ้างถึงชื่ออะเรย์ ไม่มี Subscript
ตัวอย่าง float a[0]; float salary;
การประกาศอาร์กิวเมนต์ในฟังก์ชันเป็นอะเรย์ มีหน้าที่รับค่า และไม่ต้องมีการประกาศขนาดของอะเรย์ที่ในการรับค่า โดยตัวแปรที่ทำหน้าที่รับค่าถูกกำหนดเป็นพอยเตอร์
Structure เป็นโครงสร้างที่มีข้อมูลแต่ละตัวแตกต่างกันได้ โดยมีสมาชิกเป็นจำนวนเต็ม ทศนิยม อักขระ อะเรย์หรือพอยเตอร์ หรือ structure ด้วยกันก็ได้
การประกาศสมาชิกแต่ละตัวของ structure จะเป้นตัวธรรมดา หรือ structureอื่น ๆ ก็ได้ โดยชื่อสมาชิกแต่ละตัวต้องต่างกัน
การบ้าน
#include stdio.h
#includ string.h
main() {
struct student {
char name [30];
char adds[30];
int age;
char sex[10];
float salary;
char apartment_name[20];
int floor;
int room;
float rent;
}student1;
strcpy(student1.name,"areerat");
strcpy(student1.adds," Ratchatawee,bangkok ");
student1.age,22;
strcpy(student1.sex,"female");
student1.salary,5000;
strcpy(student1.apartment_name,"A&D");
student1.floor,3;
student1.room,306;
student1.rent,3700;
printf ("This is my resume\n\n");
printf ("Name :%s\n",student1.name);
printf ("Address:%s\n",student1.adds);
printf ("Age :%d\n",student1.age);
printf ("Sex :%s\n",student1.sex);
printf("Salary :%.2f\n",student1.salary);
printf ("Appartment :%d\n",student1.apartment_name);
printf ("Floor :%d\n",student1.floor);
printf ("Room :%d\n",student1.room);
printf ("Rent :%.2f\n",student1.rent); }