array n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
ทบทวน อาร์เรย์ (Array) PowerPoint Presentation
Download Presentation
ทบทวน อาร์เรย์ (Array)

Loading in 2 Seconds...

play fullscreen
1 / 21

ทบทวน อาร์เรย์ (Array) - PowerPoint PPT Presentation


  • 114 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'ทบทวน อาร์เรย์ (Array)' - idona-hopkins


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
วัตถุประสงค์
  • สามารถใช้งานตัวแปรประเภทอาร์เรย์ 1 มิติ และ 2 มิติได้
  • เข้าใจการส่งผ่านอาร์เรย์ไปยังฟังก์ชัน
  • สามารถใช้งานข้อมูลชนิดโครงสร้าง (structure) ได้
outline
Outline
  • นิยามอาร์เรย์
  • การประกาศตัวแปรอาร์เรย์
  • การเข้าถึงตัวแปรอาร์เรย์
  • การส่งผ่านอาร์เรย์ไปยังฟังก์ชัน
  • ข้อมูลชนิดโครงสร้าง
slide4
นิยามของอาร์เรย์
  • อาร์เรย์ เป็นรูปแบบข้อมูลแบบหนึ่งที่จัดเก็บข้อมูลชนิดเดียวกันอย่างต่อเนื่องกัน โดยจัดอยู่ในบล็อกของหน่วยความจำเดียวกัน และใช้ชื่อตัวแปรร่วมกันในการอ้างถึง

v[2]

v[3]

v[0]

v[1]

v[4]

v[5]

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

ชนิดของตัวแปร ชื่อตัวแปร[จำนวนสมาชิกที่ต้องการ]

  • เช่นint v[6]

float data[10]

slide6
การประกาศตัวแปรแบบอาร์เรย์การประกาศตัวแปรแบบอาร์เรย์
  • อาร์เรย์ 2 มิติ มีโครงสร้างคล้ายกับเมตริกซ์สองมิติ มีการอ้างถึงข้อมูลโดยใช้ค่าเลขดัชนี 2 ค่า ซึ่งประกอบค่าดัชนีที่ใช้ในการอ้างอิงในแนวแถว (rows) และค่าดัชนีที่ใช้อ้างอิงในแนวคอลัมน์ (columns)
  • รูปแบบการประกาศตัวแปรอาร์เรย์ 2 มิติ:

ชนิดข้อมูล ชื่อตัวแปร[จำนวนแถว][จำนวนคอลัมน์]

  • เช่น int val[2][3]

float[5][10]

slide7
การเข้าถึงตัวแปรอาร์เรย์การเข้าถึงตัวแปรอาร์เรย์
  • รูปแบบการเข้าถึงตัวแปรอาร์เรย์ 1 มิติ

ชื่อตัวแปร[ตัวชี้]

  • รูปแบบการเข้าถึงตัวแปรอาร์เรย์ 2 มิติ

ชื่อตัวแปร[ตัวชี้แนวแถว][ตัวชี้แนวคอลัมน์]

  • ตัวชี้อาจป้อนอยู่ในรูปของตัวแปร นิพจน์ หรือฟังก์ชันที่ให้ค่าเป็นค่าจำนวนเต็มได้
slide8
ตัวอย่างการเข้าถึงตัวแปรอาร์เรย์ตัวอย่างการเข้าถึงตัวแปรอาร์เรย์
  • read mark[0]
  • write mark[i]
  • tol  tol + v[i]
  • v[0]  78
  • v[i]  v[i-1] + 5
  • x[i][j] i*j
for 1
การใช้คำสั่ง 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]

slide10
ตัวอย่างการรับค่าและแสดงผลลัพธ์ของอาร์เรย์ตัวอย่างการรับค่าและแสดงผลลัพธ์ของอาร์เรย์

#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

……………………………………………………………………………

…………………………………………………………………………….

……………………………………………………………………………..

for 2
การใช้คำสั่ง 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]

slide12
ตัวอย่างการรับค่าและแสดงผลลัพธ์ของอาร์เรย์ 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]);

}

}

slide13
การส่งผ่านอาร์เรย์ไปยังฟังก์ชันการส่งผ่านอาร์เรย์ไปยังฟังก์ชัน
  • ตัวอย่างการส่งค่าแต่ละอิลิเมนต์ในอาร์เรย์ให้กับฟังก์ชัน

#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???

slide14
การส่งผ่านอาร์เรย์ไปยังฟังก์ชันการส่งผ่านอาร์เรย์ไปยังฟังก์ชัน
  • ตัวอย่างการส่งค่าทุกอิลิเมนต์ในอาร์เรย์ให้กับฟังก์ชัน

#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???

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

struct ชื่อแบบข้อมูลชนิดโครงสร้าง

{

ชนิดข้อมูล ชื่อตัวแปรสมาชิก ;

ชนิดข้อมูล ชื่อตัวแปรสมาชิก ;

....

}ชื่อตัวแปรโครงสร้าง;

slide17
ข้อมูลชนิดโครงสร้าง
  • ตัวอย่าง การประกาศข้อมูลชนิดโครงสร้าง

structstudent_history

{

charid[10];

char name[30];

int age;

char faculty[20];

}student[50];

slide18
ข้อมูลชนิดโครงสร้าง
  • การเรียกใช้ การเข้าถึง และการกำหนดค่า

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

  • เช่นstudent[0].id

student[0].name

student[0].age

student[0].faculty

struct argument
#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

struct argument1
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

class exercise
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