3 in 1 Excellence Program

9999999

 

2.3Initializing Arrays

Arrays คือ..?

Arrays (อาร์เรย์) คือ ชุดข้อมูล โดยชนิดข้อมูลในชุดจะต้องเป็นชนิดเดียวกัน  เช่น int , char , float เป็นต้น การเก็บข้อมูลแบบนี้นั้น ทำให้ง่ายในการตั้งชื่อตัวแปรจำนวนมาก เข้าถึงข้อมูลได้เร็ว แต่ถ้าเก็บข้อมูลไม่ครบจะทำให้เสียเนื้อที่หน่วยความจำโดยไม่จำเป็น

ประเภทของ Array มีกี่ชนิด..?

มี3ชนิด ดังนี้

1.ตัวแปรชุด 1 มิติ (one dimension arrays หรือ single dimension arrays)  เป็นตัวแปรชุดที่มีตัวเลขแสดงขนาดเป็นเลขตัวเดียว โดยมีรูปแบบดังนี้

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

เช่น    int a[5];  หมายถึง a เป็นอาร์เรย์ที่มี 5 สมาชิก โดยสมาชิกทุกตัวเก็บค่าเป็นจำนวนเต็ม

  1. ตัวแปรชุดหลายมิติ (multi-dimension arrays) เป็นตัวแปรชุดที่ชื่อมีตัวเลขแสดงขนาดเป็นตัวเลขหลายตัว ที่นิยมใช้กันมี 2 มิติ กับ 3 มิติ

2.1 ตัวแปรชุด 2 มิติ มีเลขแสดงขนาด 2 ตัวโดยตัวแรกจะเป็นตัวเลขที่แสดงตำแหน่งแถว และตัวที่สองจะเป็นตัวเลขแสดงตำแหน่งคอลัมน์ โดยมีรูปแบบดังนี้

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

เช่น  int num[3][4]; หมายความว่า num เป็นอาร์เรย์ 2 มิติ ที่มี 3 แถว 4 คอลัมน์ เก็บค่าเป็นจำนวนเต็ม

 

2.2 ตัวแปรชุด 3 มิติ มีเลขแสดงขนาด 3 ตัว โดยตัวแรกจะเป็นตัวเลขที่แสดงตำแหน่งความลึก  ตัวที่สองจะเป็นตัวเลขแสดงตำแหน่งแถว และตัวที่สามจะเป็นตัวเลขแสดงตำแหน่งคอลัมน์ และ โดยมีรูปแบบดังนี้

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

];3มิติ

 

โดยเราจะทำarrys แบบ 1มิติ โดยมีการใช้คำสั่ง setw(จำนวนช่อง) เช่น cout<<setw(5)<<x;

โดยsetw(5) คือ  _ _ _ _ _ ( _ คือ ช่องว่าง) โดยเราจะใส่ค่าxไว้ในช่องสุดท้าย ดังนั้น จะได้outputเป็น _ _ _ _ x

โดยจะเห็นว่า ค่าoutput ของ junk จะได้เป็น –858993460 เนื่องจากเราไม่ได้กำหนดค่าข้อมูลใน junk นั่นเอง

 

output

 

Source Code :

#include “stdafx.h”           //เป็นการimport คำสั่ง

#include <iostream>         //เป็นการimport คำสั่ง

#include <iomanip>          //เป็นการimport คำสั่ง

 

using std::cout;

using std::endl;

using std::setw;

 

 

int main()

{

int value[5]={1,2,3};  //เป็นการประกาศค่าarraysชนิด int  แบบ 1มิติ โดยกำหนดให้มีค่า 1,2,3

int junk[5];          //เป็นการประกาศค่าarraysชนิด int  แบบ 1มิติ โดยไม่มีการกำหนดค่า

cout<<endl;         //ขึ้นบรรทัดใหม่

for(int i=0;i<5;i++){        //กำหนดให้เงื่อนไขเป็น i<5 โดยให้ค่าi เรื่มต้นที่ 0 และให้เพิ่มค่า i+1 เมื่อทำการวนลูปเสร็จ

cout<<setw(12)<<value[i];  //กำหนดช่องให้เป็น12 และใส่ค่าvalue[i] ในช่องสุดท้าย

}

cout<<endl;         //ขึ้นบรรทัดใหม่

for(int i=0;i<5;i++){

cout<<setw(12)<<junk[i];               //กำหนดช่องให้เป็น12 และใส่ค่าjunk[i] ในช่องสุดท้าย

}

cout<<endl;         //ขึ้นบรรทัดใหม่

system (“pause”);               //ทำให้โปรแกรมหยุดทำงาน

return 0;

}

โดยจะเห็นว่า ค่าoutput ของ junk จะได้เป็น –858993460 เนื่องจากเราไม่ได้กำหนดค่าข้อมูลใน junk นั่นเอง

843265b8tr69s6wa

4.1 Functions and Classes

Passing-by-value(passing a two-dimensional array to a function)

ผู้ที่ได้ออกแบบภาษาในยุคแรก ๆ ก็ได้คิดค้นวิธีแก้ปัญหาแบบนี้ไว้แล้ว Function ก็ได้ถือกำเนิดขึ้นมาเพื่อทำให้การทำงานที่ซ้ำ ๆ กันง่ายขึ้น ในภาษาอื่น ๆ ก็มีสิ่งที่ทำงานคล้าย ๆ Function อยู่ แต่มีชื่อเรียกต่างกัน เช่น Procedure, Subroutine หรือ Method ซึ่งในภาษาจาวา เราก็เรียกมันว่า Method นั่นเองครับ

ฟังก์ชันนั้นมีประโยชน์ในการช่วยให้ผู้เขียนโปรแกรมสร้างการทำงานบางส่วนของโปรแกรมเก็บไว้ เพื่อใช้ได้อีกในหลาย ๆ ส่วนของโปรแกรม การเขียนเพียงครั้งเดียวแล้วเรียกใช้หลายครั้งนั้น เป็นการประหยัดเวลาในการเขียนทั้งยังเป็นการช่วยให้โปรแกรมดูง่ายขึ้นและสามารถแก้ไขได้สะดวก

      pass by Reference: คือ การส่งค่าไปยังฟังก์ชั่นที่ถูกเรียกใช้โดยส่งเป็นค่าตำแหน่งที่อยู่ (Address) ของตัวแปรไปซึ่งหากภายในฟังก์ชันมีการเปลี่ยนแปลงค่าของอาร์กิวเมนต์ที่ส่งไป ก็จะมีผลทำให้ค่าของ อาร์กิวเมนต์นั้นในโปรแกรมที่เรียกใช้เปลี่ยน ไปด้วย

การผ่านค่าอาร์คิวเมนต์แบบนี้ ทำได้ ดังนี้

1) ต้องกำหนดอาร์กิวเมนต์ของฟังก์ชันเป็น pointer(*)

2) การเรียกใช้งานผ่าน Address เป็น argument (&)

3) ภายในฟังก์ชัน การดรียกใช้ formal argument เวลาใช้งานจะใช้ dereferencing operator (*)

Pass by Value: คือ การ copy ค่าที่ผู้เรียกใช้ฟ้งก์ชันส่งให้กับฟังก์ชัน ไปยังตัวแปรแบบ local ในฟังก์ชัน

#ถ้ามีการเปลี่ยนแปลงค่าตัวแปรในฟังก์ชัน

– เป็นการเปลี่ยนแปลงค่าตัวแปรแบบ local ใน ฟังก์ชัน

– ไม่ส่งผลกระทบกับตัวแปรในส่วนที่เรียกใช้

#การส่งคืนค่าจากฟังก์ชัน

– copy ค่าจากฟังก์ชันกลับไปยังส่วนที่เรียกใช้

 

ผลที่แสดง หลังจากการเขียนโค๊ด

12516859_1589540768038423_395432069_o

รหัสแห่งที่มา :

#include “stdafx.h”

#include <iostream>

using std::cout;

using std::endl;

double yield(double array[][4],int n); //ประกาศฟังก์ชันประเภทdouble

int main(void)

{

double beans[3][4] = { {1.0,2.0,3.0,4.0},{5.0,6.0,7.0,8.0},{9.0,10.0,11.0,12.0} }; //ประกาศค่าbeansให้เป็นarray ขนาด 3*4 และเป็นประเภทdouble

cout<<endl<<“Yield = “<<yield(beans,sizeof beans/sizeof beans[0]) //มีการเรียกใช้ฟังก์ชันdouble yield เพื่อนำมาใชแสดงผลoutput

<<endl; //ขึ้นบรรทัดใหม่

system (“pause”); //ทำให้โปรแกรมหยุดทำงาน

return 0;

}

double yield(double beans[][4],int count){ //ประกาศฟังก์ชันประเภทdouble

double sum(0.0); //ประกาศค่าsum โดยให้มีค่าเท่ากับ0.0 และเป็นประเภทdouble

for(int i=0;i<count;i++) { //กำหนดให้ค่าi=0 และมีเงื่อนไขเป็น i<count โดยเมื่อจบลูปในแต่ละครั้งค่าiจะ+1

for(int j=0;j<4;j++){ //กำหนดให้ค่าj=0 และมีเงื่อนไขเป็น j<4 โดยเมื่อจบลูปในแต่ละครั้งค่าjจะ+1

sum+=beans[i][j]; //sum= sum+beans[i][j] โดยอิงค่า i กับ j จาก for loop

}

}

return sum; //ส่งค่าsum กลับไปยังบรรทัดที่มีการเรียกใช้ฟังก์ชันนี้

}

843265b8tr69s6wa

6.1 Dimensional and Dimensional Arrays

ความรู้เบื้องต้นเกี่ยวกับอาร์เรย์(Introduction to Arrays)

ข้อมูลทั่วไปเกี่ยวกับอาร์เรย์
อาร์เรย์ (Arrays) คือ โครงสร้างข้อมูลประเภทหนึ่งที่ใช้เก็บรายการของข้อมูลประเภทเดียวกัน โดยเก็บ ข้อมูลทั้งหมดเรียงติดต่อกันไปในหน่วยความจํา เสมือนนําข้อมูลมาเก็บใน “ช่อง” ที่วางเรียงกัน
อาร์เรย์ 1 ชุด จะมีชื่อของอาร์เรย์ กํากับและมีหมายเลขช่องที่ระบุตําแหน่ง (Index) ของข้อมูลในอาเรย์แต่ ละตัวหรือระบุตําแหน่งสมาชิกของอาร์เรย์ชุดนั้น ซึ่งจะเริ่มต้นที่ตําแหน่ง 0 (Index 0)
ขนาดหรือความยาวของอาร์เรย์คือจํานวนสมาชิกหรือจํานวนค่าที่เก็บไว้ในอาร์เรย์ชุดนั้น

2. รูปแบบของอาร์เรย์

1

เป็นอาร์เรย์ที่ชื่อว่า A มีขนาดหรือความยาวเท่ากับ 10 โดยมีตําแหน่งตั้งแต่ 0-9 (Index 0-9)

2

การประกาศและสร้างอาร์เรย์ และการใช้งานอาร์เรย์

1. การประกาศและสร้างอาร์เรย์ 1 มิติ

– การประกาศตัวแปรอาร์เรย์ 1 มิติ

3

– การสร้างอาร์เรย์ 1 มิติ

4

-อาร์เรย์ที่ได้

5

– การประกาศและสร้างอาร์เรย์ 1 มิติ โดยรวมวิธีการของข้อ 1 ) และข้อ 2) ข้าด้วยกัน

6

-ข้อสังเกต

การประกาศตัวแปรอาร์เรย์ไม่ได้เป็นการสร้างตัวอาร์เรย์
ขนาดของอาร์เรย์ถูกกําหนดตอนสร้างตัวอาร์เรย์
ขนาดของอาร์เรย์เป็นค่านิพจน์ก็ได้ เช่น data = new int [3*n + 1] เป็นต้น
อาร์เรย์ที่สร้างขึ้นไม่สามารถเพิ่มหรือลดขนาดได้ (สร้างแล้วต้องใช้อย่างเดิมตลอดไป)
ระบบจะตั้งคาเริ่มต้นของข้อมูลในอาร์เรย์โดยอัตโนมัติ

2.การประกาศและสร้างอาร์เรย์ 2 มิติ

-การประกาศตัวแปรอาร์เรย์ 2 มิติ

7

-การสร้างอาร์เรย์ 2 มิติ

สร้างแถวของอาร์เรย์

1-1

2. สร้างคอลัมน์ของอาร์เรย์

2-1

3. อาร์เรย์ที่ได้จากข้อ 1 และข้อ 2

3-1

4.การประกาศและสร้างอาร์เรย์ 2 มิติ โดยรวมวิธีการของข้อ 1 และข้อ 2 เข้าด้วยกัน

4-2

5.อาร์เรย์ที่ได้จากข้อ 4

1-2

การประกาศและสร้างอาร์เรย์ 2 มิติ

การหาขนาดของอาร์เรย์ ให้เติม .length หลังชื่อตัวแปรอาร์เรย์ได้เลย (อย่าไปจําสับสนกับเมท็อดที่ใช้หาความยาวของ String ที่ชื่อว่า .length() เหมือนกัน) ดังตัวอย่าง

2-2

การเรียกใช้งานการดําเนินการกับอาร์เรย์จากคลาสมาตรฐาน Arrays

1) ก่อนเรียกใช้งาน จะต้องทําการกําหนดคําสั่ง import java.util.Arrays; ไว้เหนือคลาส

2) Array.sort เป็นการเรียงลําดับข้อมูล

3-2

3) Arrays.binarySearch เป็นการค้นข้อมูล (ข้อมูลในอาร์เรย์ต้องเรียงลําดับแล้ว)

4-2

Arrays.binarySearch จะคืนค่าตําแหน่ง (Index) ของสมาชิกในอาร์เรย์ที่มีค่าตรงกับ Keyword ที่ต้องการ

4) Arrays.equals ทําการตรวจสอบว่าอาร์เรย์สองแถว (สองชุด) มีค่าเท่ากันหรือไม่ (อาร์เรย์ที่นํามาเปรียบเทียบจะต้องเป็นอาร์เรย์ 1 มิติเท่านั้น)

lll

Arrays.equals จะคืนค่าผลลัพธ์ออกมาเป็นค่าความจริง True หรือ False

รหัสตัวอย่าง

  • ลองทำการทดลองโดยการพิมพ์รหัสตามดังนี้

1-4 (1)

  • ผลที่ได้คือ

2-3

  • แผนภาพความคิด

1-4

จากบทความนี้สามารถนำความรู้มาประยุกต์ใช้ในการสร้างโปรแกรมอื่นได้ เช่นโปรแกรมการบวกเลขทศนิยม

รหัสโปรแกรม

1-2

ผลที่ได้คือ

1-3

จากบทความนี้ให้เราได้รู้เกี่ยวกับความรู้เบื้องต้นในการสร้าง อาร์เรย์ภาษา Java ทั้งอาร์เรย์ 1 มิติและอาร์เรย์ 2 ได้อย่างมิติถูกคุณต้อง  มีตัวอย่าง arrow รหัสและโปรแกรมที่ใช้อาร์เรย์ประยุกต์ เพื่อเป็นแนวทางในการศึกษาอีกทั้งสามารถนำความรู้นี้ไปใช้ได้อย่างถูกต้องอีกด้วย ดังนั้นจึงมีวิดีโออธิบายเกี่ยวกับโปรแกรมนี้ สามารถรับชมได้ที่ลิ้งค์ด้านล่างค่ะ

  •  
  •  
  •  
  •  
  •  
  •  
siriporn JAturapuch
at GlurGeek.Com
สวัสดีค่ะ ตอนนี้ทุกคนได้เข้ามาอยู่ในเว็บไซต์ GLURGEEK
หน้าเพจนี้เป็นอีกหนึ่ง Member
แนะนำตัว
ชื่อ ศิริพร จตุรภุช
ชื่อเล่น พริ้ม (ฟรุ้งฟริ้ง) เพรา
เชียร์หน้ากากนักร้องคือ หน้ากากแอปเปิ้ลที่เฉลย ออกมาเป็น โอ๊ต ปราโมช

Leave a Reply