Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore อาร์เรย์1

อาร์เรย์1

Published by วรชัย วงศ์ภิละ, 2019-06-26 00:58:54

Description: อาร์เรย์1

Search

Read the Text Version

อาร์เรย์ 1 มิติ (ONE-DIMENSION ARRAY)

อาเรย์ 1 มติ ิ • เป็นแบบของการอ้าวอิงหรือการเข้าถึงสมาชกิ ตวั ใดตวั หนึง่ เช่น กาหนด A เป็ยอาเรย์ 1 มติ ิ มีสมาชกิ 1 ถงึ N จะได้สมาชกิ ของ A เป็น A[1],A[2],A[3] ... A[N] นนั ้ คือตวั บอกลาดบั • การคานวณหาจานวนสมาชิกของอาเรย์ 1 มิติ ลกั ษณะทั่วไปของอาเรย์ 1 มิติ A(L:U) เม่ือ A คือช่ือของ อาเรย์ L คือ ดรรชนีกากบั คา่ ต่าสุดของอาเรย์ Array (Lower bound) U คือ ดรรชนีกากบั ค่าสูงสุของอาเรย์ Array (Upper bound) คานวณได้จากสูตร จานวนสมาชิก = ดรรชนีกากบั สูงสุด (U) - ดรรชนีกากบั ต่าสุด(L)+1 หรือจานวนสมาชิก = U-L+1 ตวั อย่าง เช่น A[-8..4] = 4-8+1 = 13 B[2..12] = 12-2+1 = 11

รูปแบบการประกาศตวั แปร

การกาหนดคา่ เริ่มตน้ ใหก้ บั อาร์เรย์ 1 มิติ • 1. สามารถกาหนดค่าเร่ิมตน้ ใหก้ บั array ไดต้ ้งั แต่ตอนประกาศตวั แปร 2. ค่าท่ีกาหนดตอ้ งอยใู่ นเครื่องหมาย { } และถา้ มีมากกวา่ 1 ค่า ตอ้ งแยกจากกนั ดว้ ยเคร่ืองหมาย , (comma)

• 3. ถา้ ในตอนประกาศตวั แปรอาร์เรยไ์ ม่กาหนดค่าเริ่มตน้ ใหก้ บั มนั แลว้ ค่าท่ีอยใู่ นตวั แปรจะเป็นค่าท่ีคา้ งอยใู่ น หน่วยความจาช่วงที่เราจองไวเ้ ป็นอาร์เรยน์ ้นั 4. ถา้ กาหนดค่าเริ่มตน้ ต้งั แต่ตอนประกาศตวั แปรแต่กาหนดไม่ครบ ในกรณีที่เป็นอาร์เรยแ์ บบตวั เลขท้งั จานวนเตม็ และจานวนจริง ค่าท่ีเหลือจะถูกกาหนดเป็น 0 โดยอตั โนมตั ิ 5. บางคร้ังถา้ กาหนดค่าเร่ิมตน้ ใหแ้ ก่อาร์เรยเ์ ลย เราไม่จาเป็นตอ้ งใส่ขนาดของอาร์เรยก์ ไ็ ด เช่น float a[ ] = {1,2,3,4,5} ; ความหมายคือเป็นการกาหนดตวั แปรอาร์เรยข์ องจานวนจริงแบบ float ขนาด 5 ช่อง 6. แต่ถา้ เรากาหนดตวั แปรอาร์เรยโ์ ดยไม่ใส่ขนาดของอาร์เรย์ และไม่ไดก้ าหนดค่าเริ่มตน้ ใหก้ บั มนั เช่น int a[ ] ; ประกาศผิด!!! นน่ั คือ เราไม่สามารถประกาศตวั แปรอาร์เรยโ์ ดยไม่ใส่ขนาดของอาร์เรยไ์ ด้ ยกเวน้ มีการกาหนดค่าเริ่มตน้ ใหก้ บั มนั ต้งั แต่แรก

การอ้างถงึ ข้อมูลย่อยแต่ละตวั • ใชเ้ ลขจานวนเตม็ ทาหนา้ ที่เป็นดชั นี (index)เพื่อระบุถึงขอ้ มูลน้นั โดยระบุชื่อตวั แปรอาร์เรย์ แลว้ ตามดว้ ยค่าตาแหน่งท่ีอยู่ ของสมาชิก 1. ในภาษาซี ดชั นีเริ่มต้งั แต่ [0] จนถึง [n-1] ( n= จานวนของสมาชิกในอาร์เรย์ ) 2. ตวั อยา่ ง ให้ aเป็นอาร์เรยข์ อง int ขนาด 5 ช่อง โดยแต่ละช่องมีขอ้ มูล 1, 2, 3, 4, 5 ตามลาดบั เขียนไดเ้ ป็น int a[5]; a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; a[4] = 5;

ข้อสังเกต • 1. a[0] , ... , a[4] เปรียบเสมือนตวั แปร int ธรรมดา 5 ตวั นนั่ คือสามารถนามากระทาการต่างๆ ไดเ้ หมือนตวั แปรธรรมดาเช่น รับขอ้ มูลเขา้ ไปเกบ็ ไวใ้ นอาร์เรย์ a ตาแหน่งท่ี 3 สามารถเขียนเป็นคาสง่ั ไดด้ งั น้ี scanf ( “%d” , &a[3] ) ; i = 3; จะหมายถึง a[i] = a[i+1] + a[4] ; 1) กาหนดค่าใหต้ วั แปร i เท่ากบั 3 2) นาขอ้ มูลในอาร์เรย์ a ตาแหน่งที่ i+1 มาบวกกบั ขอ้ มูลในอาร์เรย์ a ตาแหน่งท่ี 4 แลว้ เกบ็ ผลลพั ธ์ท่ีไดไ้ วใ้ นอาร์เรย์ a ตาแหน่งท่ี i (นน่ั คือ นา a[4] + a[4] แลว้ เกบ็ ผลลพั ธน์ ้ีไวใ้ น a[3] นนั่ เอง)

• 1. ขนาดของอาร์เรยจ์ ะคงท่ี เช่น กาหนดใหอ้ าร์เรย์ N เกบ็ เลขจานวนเตม็ โดยมีขนาด 50 ช่อง กห็ มายความวา่ อาร์เรย์ N จะไปจองเน้ือที่ในหน่วยความจาขนาดท่ีเกบ็ จานวนเตม็ ได้ 50 จานวน โดยที่จะเรียงกนั ไป 50 ช่องติดต่อกนั และจะเกบ็ มากกวา่ 50 ช่องไม่ได้ ตวั อย่าง จากส่วนของโปรแกรม เม่ือ run เสร็จแลว้ มีขอ้ ความใดปรากฏบนหนา้ จอ int n[5] = { 5, 3, 2, 6, 1 }, i , j; for ( i = 0; i < 5; i++ ) { for ( j = 1; j <= n[i]; j++ ) printf( “*” ); printf( \"\\n\" ); }

ตวั อย่าง • #define N 10 • void main() จากสว่ นของโปรแกรม เม่ือ run เสร็จแล้วอาร์เรย์ a มีค่าเท่าไร •{ • int a[N] = {1,2,3,4,5,6,7,8,9,10}; • int i = 1 , j = 9; • while ( i != 11) •{ • if ( i % 2 == 0) •{ • a[11 - i] = a[11 - i] – j ; • j=j–4; •} • else • a[i -1] = a[i -1] + j ; • i++; •} •}

ตัวแปรARRAY 1 มติ ิ การใชต้ วั แปร ARRAY มีรูปแบบดงั น้ี ประเภทตวั แปร ช่ือตวั แปรARRAY[จานวนสมาชิกของ ARRAY]; เช่น int Score[4]; ในท่ีน้ีมีความหมายวา่ เป็นการประกาศตวั แปร array ชื่อ Score มีจานวน 4 รายการ โดยมีรายการท่ี Score[0] Score[1] Score[2] Score[3] Score[0] Score[1] Score[2] Score[3] int int int int รายการของ array จะเร่ิมที่ 0 ไม่ไดเ้ ร่ิมท่ี 1 ถา้ เราประกาศตวั แปร array เช่น int i[3] กจ็ ะมีรายการที่ 0 ถึง 2 จะไม่มีหมายเลข อินเดก็ ซ์ 3

ตัวแปรอาร์เรย์หลายตัว ***ขอ้ ควรระวงั int [] a , b ; a และ b เป็น Array • การประกาศอาร์เรยห์ ลายตวั ทาไดด้ งั น้ี int a[], b ; a เป็น Array b ไม่เป็น Array • int [] abc , xyz; • abc = new int[500]; • xyz = new int[10]; • หรือเขียนรวมกนั ไดด้ งั น้ี • int[] abc = new int [500], xyz = new int[10];

การประมวลผลอาร์เรย์ • Element ของอาร์เรย์ ลาดบั แรกจะเป็น 0 เสมอ ลาดบั ของ Element ของอาร์เรยโ์ ดยส่วนมากจะเป็นค่าตวั เลข จานวนเตม็ ตวั อยา่ งเช่น ใชอ้ าร์เรย์ scores เราจะเขา้ ถึง Element แรกไดด้ งั น้ี • scores[0] • และถา้ ตอ้ งการจะประมวลผล Element ท้งั หมด กส็ ามารถใชล้ ูปเขา้ มาช่วยไดด้ งั ตวั อยา่ งดา้ นล่างน้ี • for (i=0;<9;i++) • scores[i]…;

อาร์เรย์กบั การผ่านค่า • การสง่ Array เข้าไปใน Method จะเป็นการสง่ ตาแหน่งของ Array ( Reference ) เข้าไปให้กบั Parameter ของ Method

อาร์เรย์ของออบเจ็กต์ • อาร์เรย์สามารถเก็บ reference ของ Object ได้ โดยกาหนดให้อาเรย์ เป็น Class นนั ้ ๆ ในตอนประกาศอาเรย์ มรี ูปแบบดงั นี ้ • className [] arrayName = new className[size]; • เชน่ Student [ ] studentList = new Student[10]; • Student [ ] studentList = new Student[3]; • studentList[0] = new Student(); • studentList[1] = new Student(); • studentList[2] = new Student();

จบการนาเสนอ สมาชิกกลุม่ นายธนกฤษ บุตรกิติ เลขที่ 10 นายตนั ดิกร ทิพยส์ ุภา เลขที่ 7 นายทกั ษิณ ชยั ชุ่ม เลขที่ 8 นายนนั ทกร ตุย้ คง เลขที่ 13 นายอธิวฒั น์ วิริยะ เลขท่ี 23 นายวรชยั วงศภ์ ิละ เลขที่ 20


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook