ete183 บทที่ 8 ส่วนที่...

28
ETE183 การเขียนโปรแกรมคอมพิวเตอร์สำหรับ วิศวกรรมไฟฟ้า ผศ.ดร.วชิราพรรณ แก้วประพันธ์ .ชนกชนม์ สังวรโยธิน

Upload: others

Post on 12-Jul-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

ETE183การเขียนโปรแกรมคอมพิวเตอร์สำหรับ

วิศวกรรมไฟฟ้า

ผศ.ดร.วชิราพรรณ แก้วประพนัธ์

อ.ชนกชนม์ สงัวรโยธิน

Page 2: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

บทที่ 8(ส่วนที่ 1)

ลำดับแถว Array

Page 3: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

บทที่ 8(ส่วนที่ 1)

1. ความหมายและลักษณะของตัวแปรลำดับแถว Array

2. การประกาศตัวแปร array 1 มิติและกำหนดค่าเริ่มต้น

3. การเก็บค่าลงตัวแปร array 1 มิติ

4. การใช้งานตัวแปร array 1 มิติ

5. การประยุกต์ใช้ตัวแปร array กับ for

Page 4: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

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

Array

Page 5: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

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

Array

Page 6: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

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

ตวัอยา่ง : int age[10];เป็นการประกาศตวัแปรแบบอาร์เรย์เพืFอเก็บ

ข้อมลูอาย ุเมืFอต้องการเก็บข้อมลูอายขุองนกัศกึษาคนทีF 1 สามารถทําได้ดงันี ้

age[0]=18;

Array1 มิติ

Page 7: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

การประกาศตวัแปรแบบอาร์เรย์สามารถทําได้คล้ายกบัการประกาศตวัแปรอืFนๆ ทัFวไป โดยการกําหนดซืFอของตวัแปร ชนิดของข้อมลู และขนาดของข้อมลู

การประกาศArray 1 มิติ

Page 8: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

int student1;

int student2;

int student3;

int student4;

int student5;

int student6;

int student7;

int student8;

int student9;

int student10;

Page 9: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

int student[10];

Page 10: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

0 1 2 3 4 5 6 7 8 9

int student[10];

Page 11: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

การประกาศตวัแปร Array

int grades[5]; /*Arrayขนาด 5 ของ int */เป็นการประกาศตวัแปรแบบอาร์เรย์ 1 มิตชืิFอ gradesให้เป็นข้อมลูแบบคา่ตวั

เลขทีFเป็นจํานวนเตม็โดยมีขนาดเทา่กบั 5 อีลเีมนต์ ซึFงการประกาศตวัแปรนี Qจะจองหนว่ยความจําเทา่กบั 2 byte*5=10byte

charcodes[5]; /*Arrayขนาด 5 ของ char*/การประกาศตวัแปร codesเป็นข้อมลูแบบคา่ตวัอกัษรจะใช้หนว่ยความจํา

เทา่กบั 1 byte*5=5bytefloatprices[100]; /*Arrayขนาด 100 ของ float*/

การประกาศตวัแปร priceเป็นข้อมลูเลขทศนิยม จะใช้หนว่ยความจําเทา่กบั 4 byte*100=400byte

Page 12: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

การกําหนดคา่เริFมต้นของตวัแปรแบบอาร์เรย์ 1 มิต ิสามารถกําหนดได้สาํหรับทกุชนิดข้อมลู

int grades[5] = {98,87,92,79,85};

char codes[6] = {‘s’, ‘a’, ‘m’, ‘p’, ‘l’, ‘e’};

float temp[4] = {98.6, 97.2, 99.0 , 101.5};

การเรียงข้อมลูคือคา่แรกจะถกูกําหนดให้กบัอีลีเมนต์ดชันีทีF 0 และ คา่ทีFสองจะถกูกําหนดให้อีลเีมนต์ดชันีทีF 1 และ ถดั ๆ ไป

การให้ค่าเริ่มต้น

Array 1 มิติ

Page 13: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

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

float length[7] = {7.8, 6.4, 4.9, 11.2};

จะได้ว่าสี่ค่าแรกคือ length[0] ถึง length[3] จะมีค่าเริ่มต้น ส่วน length[4] ถึง length[6] จะถูกกำหนดให้มีค่าเป็นศูนย์

การให้ค่าเริ่มต้น

Array 1 มิติ

Page 14: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

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

char codes[5] = {‘s’, ‘a’, ‘m’, ‘p’, ‘l’};

char codes[] = {‘s’, ‘a’, ‘m’, ‘p’, ‘l’};

ทั้งสองบรรทัดทำงานเหมือนกัน โดยตัวแปลภาษา จะทราบด้วยตัวเองว่าขนาดของ อาร์เรย์จะมีขนาดเป็น 6

การให้ค่าเริ่มต้น

Array 1 มิติ

Page 15: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

char code[] = “sample”;

สายตัวอักษร หรือเรียกว่า สตริง (String) คือลำดับของตัวอักษรที่เรียงต่อกันนั้นเอง แต่ในกรณีที่เป็นการให้ค่าแบบใช้เครื่องหมายคำพูด หรือแบบสายอักษรนี้ จะทำให้ขนาดของอาร์เรย์มีขนาดเพิ่มจากเดิมมาหนึ่งค่า (ดังรูป) เพื่อใช้ในการเก็บ “\0” หรือเรียกว่า “null character” ซึ่งจะถูกเพิ่มเข้าไปโดยอัตโนมัติในส่วนท้ายของสายอักษรซึ่งมีค่าเท่ากับ 0 ทำหน้าที่ในการบอกการสิ้นสุดของสายอักษร

การให้ค่าเริ่มต้น

Array 1 มิติแบบ

เก็บข้อความ(String)

Page 16: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

สมมตวิา่ประกาศ int grade[5];

วิธีการกําหนดคา่ จะต้องกําหนดคา่

ตั Qงแตช่อ่งทีF 0 ถงึ ชอ่งทีF 4 รวมทั Qงหมด 5 ชอ่ง

grades[0] = 98;

grades[1] = grades[0] – 11;

grades[2] = 2 * (grades[0] – 6);

grades[3] = 79;

grades[4] = (grades[2] + grades[3] – 3) / 2;

นัFนคือข้อมลูในอาร์เรย์ grades [2] คือ184

การเก็บค่าลงArray 1 มิติ

Page 17: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

สมมตวิา่ต้องการหาผลรวม

total = grades[0] + grades[1] + grades[2] + grades[3] + grades[4];

สามารถเปลีFยนเป็น

total = 0;

for ( i = 0; i <= 4, ++i)

{ total += grades[i]; }

จะเหน็วา่จะมีการเก็บคา่ใน grades แตล่ะอีลเีมนต์ตามลาํดบัเชน่กนั และสามารถใช้ i ซึFงใช้เป็นตวันบัของลปู for ในขณะเดียวกนัก็เป็นตวัชี Qให้กบัอาร์เรย์ด้วย จะเหน็วา่จะมีประโยชน์มาก เมืFอมีการกระทําทีFมีจํานวนครั Qงมากกวา่นี ้

การประยุกต์ใช้For - Array

Page 18: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

ตวัอย่างการใช้ for กับ array

กรณีทีFต้องการหาคา่มากทีFสดุ (Maximum)ของคา่ในตวัแปรอาร์เรย์จํานวน 100 คา่คือ prices[100]สามารถกระทําได้ด้วยวิธีการดงันี Qคือ ใช้การวนรอบ forและ เงืFอนไข ifเพืFอการตรวจสอบซึFงจะทําให้ได้โปรแกรมดงันี ้

maximum=price[0];for(i =1;i <=999;++i){

if(price[i]>maximum){ maximum=price[i]; }

}

Page 19: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

ในการให้คา่แก่ตวัแปรสามารถทําได้ด้วยการกําหนดให้โดยตรงหรือจะให้ผู้ใช้กรอกโดยการรับคา่จากคีย์บอร์ด โดยใช้ร่วมกบัคําสัFง scanf()

การรับค่าของ array

Page 20: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

ตวัอย่างการรับค่าจาก array

price[5] = 10.69;

scanf(“%d %lf”, &grades[0], &price[2])

scanf(“%c”, &code[0]);

scanf(“%d %d %d”, &grades[0], &grades[1], &grades[2]);

หรืออาจใช้การวนรอบเพื่อรับค่าจากผู้ใช้ก็เป็นได้ดังตัวอย่าง

for(i = 0; i <=4; ++i)

{ printf(“Enter a grade: “);

scanf(“%d”, &grades[i]); }

จะเป็นการวนรอบรับค่า grades จากผู้ใช้จำนวน 5 ค่า

Page 21: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

การแสดงคา่ของอาร์เรย์ในแตล่ะอีลีเมนต์สามารถใช้งานร่วมกบัคําสัFงเชน่ printf()ซึFงทํางานร่วมกบัการวนรอบ forจะทําให้สะดวกมากยิFงขึ Qน

การแสดงค่าของ array

Page 22: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

ตวัอย่างการแสดงค่าจาก array

printf(“%f”, price[6]);

แสดงค่าของ price ที่อีลีเมนต์ที่ 6

printf(“The value of element %d is %d”, i, grades[i]);

แสดงค่าของ i และ ค่า grades ที่ i

for( n = 5; n <= 20; ++n)

printf(“%d %lf”, n, price[n]);

แสดงค่าของ price ที่อีลีเมนต์ที่ 5 ถึง 20 โดยการใช้งานการวนรอบ

Page 23: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

-

EXAMPLEArray

1.จงเขียนโปรแกรมรับคา่

จํานวนเตม็มาสบิจํานวน

แล้วแสดงผลวา่ทั Qงสบิจํานวนนั Qน

คา่ไหนมีคา่สงูสดุคา่ไหนมีคา่ตํFาสดุ

Page 24: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

-

EXAMPLEArray

2. จงเขียนโปรแกรมแคชเชียร์สาํหรับคํานวณราคาสนิค้า 10 ชนิด โดยแต่

จะชนิดจะต้องใสข้่อมลูทั Qง ราคา และ

จํานวนได้ จากนั Qนหาวา่ ราคาสนิค้า

ทกุชิ Qนรวมกนัทั Qงหมด มีราคาเทา่ไร

แล้วแสดงผล

Page 25: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

-

EXAMPLEArray

3. จงเขียนโปรแกรมรับคา่จํานวนเตม็ฐานสบิ แล้วนํามาแปลงแล้วแสดงผล

เป็นเลขฐานสอง โดยใช้ for และ

Array ชว่ยในการแปลง

Page 26: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

Research

ทบทวนการประยุกต์ใช้ for กับ arrayทั้งการรับค่า การคำนวณและการแสดงผล

ปล.ใช้ตอบคำถามใน Quiz

Page 27: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

-

QuizQuiz บทที4 8

ส่วนที4 1 ก่อนเข้าเรียนครั9งต่อไป

Page 28: ETE183 บทที่ 8 ส่วนที่ 1ete.tido.tech/ete-programming/student/tutorials/... · บทที่8 (ส่วนที่1) 1. ความหมายและลักษณะของ

-

Homework

ตดิตามได้ใน

FACEBOOKสง่ภายใน

18 กนัยายน 2560เวลา 16.30 น.