1 / 21

ทบทวน อาร์เรย์ (Array)

ทบทวน อาร์เรย์ (Array). วัตถุประสงค์. สามารถใช้งานตัวแปรประเภทอาร์เรย์ 1 มิติ และ 2 มิติได้ เข้าใจการส่งผ่านอาร์เรย์ไปยังฟังก์ชัน สามารถใช้งานข้อมูลชนิดโครงสร้าง (structure) ได้. Outline. นิยามอาร์เรย์ การประกาศตัวแปรอาร์เรย์ การเข้าถึงตัวแปรอาร์เรย์ การส่งผ่านอาร์เรย์ไปยังฟังก์ชัน

Download Presentation

ทบทวน อาร์เรย์ (Array)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ทบทวน อาร์เรย์ (Array)

  2. วัตถุประสงค์ • สามารถใช้งานตัวแปรประเภทอาร์เรย์ 1 มิติ และ 2 มิติได้ • เข้าใจการส่งผ่านอาร์เรย์ไปยังฟังก์ชัน • สามารถใช้งานข้อมูลชนิดโครงสร้าง (structure) ได้

  3. Outline • นิยามอาร์เรย์ • การประกาศตัวแปรอาร์เรย์ • การเข้าถึงตัวแปรอาร์เรย์ • การส่งผ่านอาร์เรย์ไปยังฟังก์ชัน • ข้อมูลชนิดโครงสร้าง

  4. นิยามของอาร์เรย์ • อาร์เรย์ เป็นรูปแบบข้อมูลแบบหนึ่งที่จัดเก็บข้อมูลชนิดเดียวกันอย่างต่อเนื่องกัน โดยจัดอยู่ในบล็อกของหน่วยความจำเดียวกัน และใช้ชื่อตัวแปรร่วมกันในการอ้างถึง v[2] v[3] v[0] v[1] v[4] v[5]

  5. การประกาศตัวแปรแบบอาร์เรย์การประกาศตัวแปรแบบอาร์เรย์ • อาร์เรย์ 1 มิติ มีโครงสร้างเทียบเท่าเมตริกซ์ขนาด n x 1 • การประกาศตัวแปรอาร์เรย์ จะใช้เครื่องหมาย [] ล้อมค่าตัวเลขจำนวนเต็ม เพื่อบอกจำนวนสมาชิกที่ต้องการ • รูปแบบการประกาศตัวแปรอาร์เรย์ 1 มิติ: ชนิดของตัวแปร ชื่อตัวแปร[จำนวนสมาชิกที่ต้องการ] • เช่นint v[6] float data[10]

  6. การประกาศตัวแปรแบบอาร์เรย์การประกาศตัวแปรแบบอาร์เรย์ • อาร์เรย์ 2 มิติ มีโครงสร้างคล้ายกับเมตริกซ์สองมิติ มีการอ้างถึงข้อมูลโดยใช้ค่าเลขดัชนี 2 ค่า ซึ่งประกอบค่าดัชนีที่ใช้ในการอ้างอิงในแนวแถว (rows) และค่าดัชนีที่ใช้อ้างอิงในแนวคอลัมน์ (columns) • รูปแบบการประกาศตัวแปรอาร์เรย์ 2 มิติ: ชนิดข้อมูล ชื่อตัวแปร[จำนวนแถว][จำนวนคอลัมน์] • เช่น int val[2][3] float[5][10]

  7. การเข้าถึงตัวแปรอาร์เรย์การเข้าถึงตัวแปรอาร์เรย์ • รูปแบบการเข้าถึงตัวแปรอาร์เรย์ 1 มิติ ชื่อตัวแปร[ตัวชี้] • รูปแบบการเข้าถึงตัวแปรอาร์เรย์ 2 มิติ ชื่อตัวแปร[ตัวชี้แนวแถว][ตัวชี้แนวคอลัมน์] • ตัวชี้อาจป้อนอยู่ในรูปของตัวแปร นิพจน์ หรือฟังก์ชันที่ให้ค่าเป็นค่าจำนวนเต็มได้

  8. ตัวอย่างการเข้าถึงตัวแปรอาร์เรย์ตัวอย่างการเข้าถึงตัวแปรอาร์เรย์ • read mark[0] • write mark[i] • tol  tol + v[i] • v[0]  78 • v[i]  v[i-1] + 5 • x[i][j] i*j

  9. การใช้คำสั่ง for ในการเข้าถึงอาร์เรย์ 1 มิติ • ตัวอย่าง ถ้าต้องการหาผลรวมของตัวแปร score 5 อิลิเมนต์ ทำได้ดังนี้ sum  score[0] + score[1] + score[2] + score[3] + score[4] • เปลี่ยนเป็นใช้ for loop ได้ดังนี้ sum 0 for i0 to 4 sum  sum + score[i]

  10. ตัวอย่างการรับค่าและแสดงผลลัพธ์ของอาร์เรย์ตัวอย่างการรับค่าและแสดงผลลัพธ์ของอาร์เรย์ #include<stdio.h> main() { intsal[4] for(i=0;i<4;i++) {printf(“Enter sal[%d]: ”,i); scanf(“%d”, sal[i]); //การรับค่า } for(i=1;i<4;i++) {sal[i] = sal[i]*sal[i-1]; printf(“sal[%d] = %d\n” , i, sal[i]); //การแสดงผลลัพธ์ } } Enter[0]: 1 Enter[1]: 1 Enter[2]: 2 Enter[3]: 5 …………………………………………………………………………… ……………………………………………………………………………. ……………………………………………………………………………..

  11. การใช้คำสั่ง for ในการเข้าถึงอาร์เรย์ 2 มิติ • ใช้ลูป for 2 ชั้น โดยลูปชั้นนอกวนรอบตามจำนวนแถว และลูปชั้นในวนรอบตามจำนวนคอลัมน์ • ตัวอย่างเช่น ตัวการหาผลรวมของคะแนนเก็บ คะแนนสอบกลางภาค คะแนนสอบปลายภาคของนักศึกษาแต่ละคน จำนวน 5 คน 1. for i0 to 4 1.1 stu[i]0 1.2 for j 0 to 2 1.2.1 stu[i]  stu[i] + score[i][j]

  12. ตัวอย่างการรับค่าและแสดงผลลัพธ์ของอาร์เรย์ 2 มิติ #include<stdio.h> main() { float score[5][3], stu[5]; for(i=0;i<5;i++) { stu[i]=0; for(j=0;j<3;j++) { scanf(“%f”, &score[i][j]); //การรับค่า stu[i] = stu[i] + score[i][j]; } } for(i=0;i<5;i++) { for(j=0;j<3;j++) printf(“%.2f\t”, score[i][j]); //การแสดงผลลัพธ์ printf(“\t%.2f\n”, stu[i]); } }

  13. การส่งผ่านอาร์เรย์ไปยังฟังก์ชันการส่งผ่านอาร์เรย์ไปยังฟังก์ชัน • ตัวอย่างการส่งค่าแต่ละอิลิเมนต์ในอาร์เรย์ให้กับฟังก์ชัน #include<stdio.h> void chk_v(int num) { if(num%2==0) printf(“%d is an even number\n”, num); else printf(“%d is an odd number\n”,num); } main() { int i; int val[5] = {2,7,4,1,9}; for(i=0;i<5;i++) chk_v(val[i]); //ส่งไปที่ค่า (call by value) } Output???

  14. การส่งผ่านอาร์เรย์ไปยังฟังก์ชันการส่งผ่านอาร์เรย์ไปยังฟังก์ชัน • ตัวอย่างการส่งค่าทุกอิลิเมนต์ในอาร์เรย์ให้กับฟังก์ชัน #include<stdio.h> void chk_v(int num[5]) { int i; for(i=0;i<5;i++) { if(num[i]%2==0) printf(“%d is an even number\n”, num); else printf(“%d is an odd number\n”,num); } } main() { int val[5] = {2,7,4,1,9}; chk_v(val); //ส่งไปทุกค่าในอาร์เรย์ (call by reference) } Output???

  15. แบบฝึกหัด • เขียนขั้นตอนวิธีด้วยรหัสจำลองเพื่อรับ 2 เมตริกซ์ ขนาด 4 x 3 แล้วเรียกใช้ 2 ฟังก์ชัน • ทำการบวกกัน • ทำ transpose

  16. ข้อมูลชนิดโครงสร้าง • การประกาศข้อมูลชนิดโครงสร้าง struct ชื่อแบบข้อมูลชนิดโครงสร้าง { ชนิดข้อมูล ชื่อตัวแปรสมาชิก ; ชนิดข้อมูล ชื่อตัวแปรสมาชิก ; .... }ชื่อตัวแปรโครงสร้าง;

  17. ข้อมูลชนิดโครงสร้าง • ตัวอย่าง การประกาศข้อมูลชนิดโครงสร้าง structstudent_history { charid[10]; char name[30]; int age; char faculty[20]; }student[50];

  18. ข้อมูลชนิดโครงสร้าง • การเรียกใช้ การเข้าถึง และการกำหนดค่า การรับค่า และการกำหนดค่าเริ่มต้น สามารถทำได้เช่นเดียวกับตัวแปรทั่วไป เพียงแต่การอ้างถึงแต่กต่างกันเท่านั้น ซึ่งการอ้างถึงตัวแปรที่เป็นสมาชิกในตัวแปรโครงสร้างนั้น สามารถทำได้โดยการระบุชื่อตัวแปรโครงสร้าง ตามด้วยจุด (.) และตามด้วยชื่อตัวแปรสมาชิกที่ต้องการอ้างถึง • เช่นstudent[0].id student[0].name student[0].age student[0].faculty

  19. #include<stdio.h> void print(struct history); struct history { int id; char name[20]; char faculty[25]; } student; int main () { printf ("Enter id :"); scanf ("%d",&student.id); printf ("Enter name :"); scanf ("%s",student.name); printf ("Enter faculty :"); scanf ("%s",student.faculty); printf ("\nstudent detail"); print(student); return 0; } void print(struct history std) { printf ("\n\t ID :%d \n\t Name : %s \n\t Faculty:%s",std.id,std.name,std.faculty); } การส่งผ่านข้อมูลแบบ struct เป็น argument created by DararatSaeleee , 344-211 Algorithmic Process & Programming Struct1_2.c

  20. typedef struct { int roomno ; char name [15]; int age ; char sex ; } Detail; #define size 4 Detailcustomer [size] ; void range(Detail c[]); void main() { ….. range(customer); …} void range (Detailc[ ]) { int i, minage=999, maxage=0; for(i=0;i<size;i++) { if (c[i].age < minage) minage = c[i].age; if (c[i].age > maxage) maxage = c[i].age; } printf("age range = %d -%d\n",minage,maxage); } การส่งผ่านข้อมูลแบบ struct เป็น argument created by DararatSaeleee , 344-211 Algorithmic Process & Programming Demo struct2_2.c

  21. Class Exercise • เขียนโปรแกรมภาษาซีเพื่อพิมพ์รายงานผลการเรียน ดังนี้ 344-201 C programming 3 B+ 322-212 Basic Math 4 C 890-200 English 1 3 A GPA = 3.05 Status = Pass created by DararatSaeleee , 344-211 Algorithmic Process & Programming

More Related