งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Chapter 3 : Array.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Chapter 3 : Array."— ใบสำเนางานนำเสนอ:

1 Chapter 3 : Array

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

3 เช่น ถ้าต้องการที่จะเก็บข้อมูลอายุของนักศึกษาทั้งมหาวิทยาลัย คน เราไม่จำเป็นต้องประกาศตัวแปรประเภท int มากถึง 2000 ตัว int age , i=1; While (i<=2000) { scanf(“%d”, &age); } Printf(“%d”, age) // ค่าที่แสดงคือค่า อายุของคนสุดท้าย เนื่องจากค่าตัวแปรโดยทับค่าจากการรับค่าในแต่ละรอบ int age1; int age2; int age3; ไม่จำเป็น

4 แต่สามารถประกาศ int age[2000] เพื่อจัดเก็บข้อมูลอายุของนักศึกษาคนที่ 1 ,2,3,4,5….2000 โดยการอ้างถึง age[0],age[1], age[2], age[3]….age[1999] ตามลำดับ

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

6 ตัวแปรอาร์เรย์แบบ 1 มิติ
ตัวแปรแบบอาร์เรย์ ที่ใช้ในการเก็บข้อมูลโดยมีการอ้างอิงที่ใช้เลขดัชนีเพียงหนึ่งค่าจะเรียกว่า ตัวแปรแบบอาร์เรย์ 1 มิติ int age[10]; เป็นการประกาศตัวแปรแบบอาร์เรย์เพื่อเก็บข้อมูลอายุ เมื่อต้องการเก็บข้อมูลอายุของนักศึกษาเป็นจำนวน 10 คน โดยคนที่ 1 สามารถอ้างได้ดังนี้  age[1] = 18;

7 การประกาศ ตัวแปรอาร์เรย์
การประกาศตัวแปรแบบอาร์เรย์สามารถทำได้คล้ายกับการประกาศตัวแปรอื่นๆ ทั่วไป โดยการกำหนดซื่อของตัวแปร ชนิดของข้อมูล และขนาดของข้อมูล ตัวอย่างเช่น float grades[5]; /* Array ขนาด 5 ของ int */ grades[0] = 12.5 scanf(“%f”,&grades[1]); เป็นการประกาศตัวแปรแบบอาร์เรย์ 1 มิติชื่อ grades ให้เป็นข้อมูลแบบอักษรโดยมีขนาดเท่ากับ 5 อีลีเมนต์ ซึ่งการประกาศตัวแปรนี้จะจองหน่วยความจำเท่ากับ 2 byte * 5 = 10 byte

8 char codes[5]; /* Array ขนาด 5 ของ char */
การประกาศตัวแปร codes จะใช้หน่วยความจำเท่ากับ 1 byte * 5 = 5 byte ใช้สำหรับเก็บ string float prices[100]; /* Array ขนาด 100 ของ float */ การประกาศตัวแปร price จะใช้หน่วยความจำเท่ากับ 4 byte * 100 = 400 byte

9 ในการเข้าถึงแต่ละอีลีเมนต์สามารถกระทำได้โดยการระบุค่าดัชนี (Index)
int grades[5]; ในการเข้าถึงแต่ละอีลีเมนต์สามารถกระทำได้โดยการระบุค่าดัชนี (Index) grades[0] อ้างถึงค่า grades แรกที่เก็บใน grades array grades[1] อ้างถึงค่า grades ลำดับที่สองที่เก็บใน grades array grades[2] อ้างถึงค่า grades ลำดับที่สามที่เก็บใน grades array grades[3] อ้างถึงค่า grades ลำดับที่สี่ที่เก็บใน grades array grades[4] อ้างถึงค่า grades ลำดับที่ห้าที่เก็บใน grades array

10 ตัวแปรอาร์เรย์สามารถใช้งานได้เหมือนกับตัวแปรทั่วไป ตัวอย่างการใช้งานตัวแปร grades ที่เป็นอาร์เรย์ของจำนวนเต็ม 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; total = grades[0] + grades[1] + grades[2] + grades[3] + grades[4];

11 ค่าตัวเลขอีลีเมนต์ไม่จำเป็นต้องเป็นตัวเลขโดยตรง อาจเป็นตัวแปร หรือพจน์ของการกระทำที่ได้เป็นจำนวนเต็มก็ได้เช่น grades[i] ถ้า int i =1; grades[2*i] grades[j-i]

12 For loop การใช้ for loop เพื่อเข้าถึงค่า array Scanf(“%f”,&grades[0]);
total = grades[0] + grades[1] + grades[2] + grades[3] + grades[4]; เปลี่ยนเป็น total = 0; for ( i = 0; i <= 4, i++) total = total + grades[i]

13 total = 0; for ( i = 0; i <= 4, ++i) total += grades[i]; -> total = total + grades[i] รอบ i=0 total = 0+ grades[0] รอบ i=1 total = total+ grades[1]

14 หรืออาจใช้การวนรอบเพื่อรับค่าจากผู้ใช้ก็เป็นได้ดังตัวอย่าง
for(i = 0; i <=4; ++i) { printf(“Enter a grade: “); scanf(“%d”, &grades[i]); }

15 จงเขียนโปรแกรมเพื่อรับค่าจำนวนจริง 20 จำนวน แล้วทำการแสดงค่า
จงเขียนโปรแกรมเพื่อรับจำนวนเต็มเข้ามา 5 จำนวน แล้วแสดงผลลัพธ์จาก หลังไปหน้า เช่น จงเขียนโปรแกรมเพื่อรับค่าราคาสินค้าจำนวน 15 ชิ้น แล้วหาว่าร้านมีรายได้รวมเท่าไหร่ (กำหนดให้ใช้ array) จงเขียนโปรแกรมเพื่อรับค่า ชื่อของนิสิต เป็นภาษาอังกฤษแล้วแสดงค่าเป็น ค่ากลับหลัง เช่น รับค่า SIRAYA แสดงผลเป็น AYARIS

16 Student 1: 89 grade = A Student 2: 56 grade = E
จงเขียนโปรแกรมเพื่อรับค่าคะแนน ของนักเรียนทั้งหมด 20 แล้วนำมาคำนวณเกรด โดยมีเกณฑ์ดังนี้ 85 คะแนนขึ้นไปเกรด A 75-84 ได้เกรด B 60-74 ได้เกรด C ต่ำกว่า 60 ได้เกรด E จากนั้นให้แสดงออกทางหน้าจอว่า นักเรียนแต่ละคนได้เกรดเท่าไหร่ ดังรูปแบบต่อไปนี้ Student 1: grade = A Student 2: grade = E Student 3: grade = B Student 4: grade = C

17 int sum=0; for(i = 0; i <=19; ++i) { printf(“Enter a grade: “); scanf(“%d”, &grades[i]); sum = sum + grades[i]; //40 } for(j = 0; j <=19; ++j) printf(“%d”, grades[j]); 1 Avg = sum /20; Printf(“avg = %d”, avg)

18 ต้องการหาค่ามากที่สุด (Maximum) ของค่าในตัวแปรอาร์เรย์จำนวน 100 ค่าคือ float prices[100] สามารถกระทำได้ด้วยวิธีการดังนี้คือ ใช้การวนรอบ for และ เงื่อนไข if เพื่อการตรวจสอบซึ่งจะทำให้ได้โปรแกรมดังนี้ maximum = price[0]; for(i = 1; i <= 99; ++i) if (price[i] > maximum) maximum = price[i];

19 ตัวแปรอาร์เรย์แบบ 2 มิติ
ตัวแปรอาร์เรย์แบบ 2 มิติจะเป็นตัวแปรที่มีการอ้างอิงถึงค่าข้อมูลโดยใช้ค่าเลขดัชนี 2 ค่าซึ่งประกอบไปด้วยค่าดัชนีที่ใช้ในการอ้างอิงในแนวแถว (row) และค่าดัชนีที่ใช้อ้างอิงในแนวคอลัมน์(column) ตัวอย่างเช่น int val[3][4]; // ตัวแปร val เป็น array 2 มิติขนาด 3 x 4

20 int sum=0; for(i = 0; i <3; ++i) { for(j = 0; j <4; ++j) { printf(“Enter a value: [%d ] [%d]“, i,j); scanf(“%d”, &val[i][j]); sum = sum + val[i][j]; }

21 for(i = 0; i <4; ++i) { for(j = 0; j <3; ++j) printf(“%d”, val[i][j]); }

22 แบบฝึกหัด จงทำการหาผลบอกของสองเมตริก ต่อไปนี้ที่มีขนาด 3*3

23 Int a[3][3], b[3][3], c[3][3]; for(i = 0; i <3; ++i) { for(j = 0; j <3; ++j) { printf(“Enter a value %d, %d of Matrix 1:”, i,j ); scanf(“%d”, &a[i][j]); printf(“Enter a value %d, %d of Matrix 2:”, i,j ); scanf(“%d”, &b[i][j]); } { c[i][j] = a[i][j] + b[i][j];


ดาวน์โหลด ppt Chapter 3 : Array.

งานนำเสนอที่คล้ายกัน


Ads by Google