SlideShare a Scribd company logo
1 of 56
Download to read offline
ชันมัธยมศึกษาปี ที 6/1
อาร์เรย์ (Array)
                              
        อาร์เรย์ (Array) เป็ นตัวแปรชุดให้ สาหรับเก็บข้ อมูลทีมีความสัมพันธ์กน โดยจะ
                                            ํ                                ั
เก็บไว้ ในชือเดียวกัน
        สมาชิกแต่ละตัวของ Array จะเรียกว่า Element หรือ Cell ตัวเลขทีใช้ ระบุ
ตําแหน่งสมาชิกของ Array เรียกว่า Index หรือ Subscript
                     5      8       9        7        3
                  X[0]     X[1]    X[2]    X[3]    X[4]




                ตัวอย่าง Array X ทีมี 5 Element
                ซึ งจะเริ มต้นตังแต่ Index 0 ถึง 4
ตัวแปรอาร์เรย์แบบ 1 มิติ
                                       
   อาร์เรย์หนึ งมิติ มีโครงสร้ างเทียบเท่าเมตริ กซ์ขนาด nx1 การประกาศตัวแปรอาร์ เรย์ จะ
   ใช้เครื องหมาย [ ] ล้อมค่าตัวเลขจํานวนเต็ม เพือบอกจํานวนหน่วยข้อมูลทีต้องการได้ใน
   รู ป
      ชนิดของตัวแปร ชือตัวแปร[จํานวนสมาชิกทีต้ องการ]
           data_type variable_name [ number-of-elements ]

เช่น     int   a[5];
         double                 x, y[10], z[3];
ตัวแปรอาร์เรย์หลายตัว
                                 array) คือ อาร์เรย์ทีมีสมาชิก
      อาร์เรย์หลายมิติ (Multi-dimensional
เป็ นข้อมูลอาร์เรย์ นันคือ ในหน่วยข้อมูลแต่ละหน่วยของอาร์เรย์ จะเป็ นอาร์ เรย์ยอยๆ ซึง
                                                                               ่
อาจจะกําหนดซ้อนลงไปได้หลายชัน
        การกําหนดอาร์เรย์หลายมิติ จะกระทําในรู ป
ชนิดตัวแปร ชือตัวแปร[จํานวนสมาชิก][จํานวนสมาชิก]….;

การประกาศอาร์ เรย์หลายตัวทําได้ดงนีั
           int [] abc , xyz;
           abc = new int[500];
           xyz = new int[10];
หรื อเขียนรวมกันได้ดงนีั
           int[] abc = new int[500], xyz = new int[10];
ตัวอย่างอาร์เรย์หลายมิติ
เช่น อาร์เรย์ทีมีสมาชิกอยู่ 3 ตัว และสมาชิ กแต่ละตัวก็เป็ นอาร์เรย์เก็บข้อมูลชนิด int มีจานวน
                                                                                         ํ
     สมาชิก 2 ตัว จะกําหนดได้ดงนี int a[3][2];
                                  ั
 ขนาดของอาร์เรย์ 3 x 2                       
 จํานวนไบต์ ทีใช้ในการเก็บอาร์ เรย์
     sizeof (a) คํานวณจาก 3 x 2 x sizeof ( int ) = 3x2x4 = 24 ไบต์
        จากการกําหนดดังกล่าวจะได้อาร์ เรย์        การจัดวางภายในหน่วยความจํา
        ทีมีโครงสร้างดังรู ป                         สามารถแสดงได้ดงรู ป
                                                                     ั

              a

            a[0           a[0][0]   a[0][1]
                                                   a[0][0]   a[0][1]   a[1][0]   a[1][1]   a[2][0]   a[2][1]
            ]
            a[1           a[1][0]   a[1][1]       a                    a[1]                a[2]
            ]                                     a[0]
            a[2           a[2][0]   a[2][1]
            ]
การกําหนดคาเริ่มตนใหอารเรย 1 มิติ
                                       
 สามารถประกาศตัวแปร Array พร้ อมกับกําหนดค่าเริมต้ นให้ กบสมาชิก Array
                                                          ั
  ได้ โดยมีรปแบบดังนี
            ู
  ชนิดของตัวแปรอาร์ เรย์ ชืออาร์เรย์[จํานวนข้อมูล] = {ค่าคงที,ค่าคงที,…};

Type [] var_name = {value1,value2,value3};

เช่น
int []num = {5,6,9};
String []name = {“noom”,”boby”,”goft”};
Int []unit = {1}
ตัวอย่างโปรแกรม
import java.util.Scanner;
public class ArrayDemo1 {
 public static void main(String[] args)
  {
  final int EMPLOYEES = 3;
                                                  
                                        //กําหนดคาคงที่วามีพนักงาน 3 คน
     int[] hours = new int[EMPLOYEES];               //ประกาศตัวแปรอารเรยเก็บชั่วโมงทํางาน 3 เซล
     Scanner keyboard = new Scanner(System.in); //สรางออบเจ็กตรับขอมูลทางแปนพิมพ
     System.out.println("Enter the hours worked by " +
                  EMPLOYEES + " employees.");
  for (int index = 0; index < EMPLOYEES; index++)//วนลูปรับขอมูลไปเก็บในเซล
     {
       System.out.print("Employee " + (index + 1) + ": ");
       hours[index] = keyboard.nextInt();//รับขอมูลทางแปนพิมพไปเก็บในอารเรย
     }
     System.out.println("The hours you entered are:");//แสดงชั่วโมงการทํางาน
     for (int index = 0; index < EMPLOYEES; index++)//วนลูปแสดงขอมูลแตละเซลของอารเรย
         System.out.println(hours[index]);
   }
}
การเข้ าถึงตัวแปรอาร์ เรย์
                            
 เมือมีการประกาศอาร์เรย์แล้ว ค่าตําแหน่งหมายเลขลําดับข้อมูลสําหรับใช้เข้าถึงตัวแปร
     ย่อยต่างๆ ในอาร์เรย์ จะถูกกําหนดโดยอัตโนมัติ
 โดยหากกําหนดอาร์ เรย์ดวยขนาด n ข้อมูล หน่วยแรก จะมีค่าตําแหน่งลําดับเป็ น 0 ไป
                             ้
     จนถึงข้อมูลหน่วยสุ ดท้ายจะมีค่าตําแหน่งลําดับเป็ น n-1
เช่น         int v[5];


                        3000    3004     3008   3012    3016

                        v[0]    v[1]    v[2]     v[3]    v[4]

 ถ้าต้องการอ่านหรื อเขียนข้อมูลในหน่วยต่างๆ ของตัวแปรอาร์เรย์ จะต้องอ้างชื อตัวแปร
  ตามด้วยค่าลําดับของหน่วยในกลุ่มข้อมูลอาร์ เรย์ ล้อมด้วยเครื องหมาย [ ] ซึงเรี ยกว่า
  subscript (หรื อดัชนี index)
 ค่าดัชนี อาจอยูในรู ป ค่าคงที ของตัวแปร นิพจน์ หรื อฟังก์ชนทีให้ค่าเป็ นค่าจํานวนเต็มก็
                 ่                                          ั
  ได้ ( positive integer >=0 )
 ของเขตของ index หรื อ subscript มีค่าตังแต่ 0 ถึง n-1 ( n คือขนาดของ
  อาร์เรย์)
การใช้คาสังวนรอบ for ในการเข้าถึงค่าในอาร์เรย์
          ํ
                               
     เราสามารถใช้คาสังวนรอบ for ในการวนรอบรับค่าทีป้ อนเข้ามาและใช้ในการ
                  ํ
  คํานวณโดยการใช้ตวแปรในการวนรอบ และใช้ตวแปรเดียวกัน เพือกําหนดลําดับของ
                     ั                  ั
  ข้อมูลทีจะใช้ในอาร์เรย์
int x,a[5];
for (x=0; x<5; x++)
{ printf(“Enter value for a[%d]:”,x);
   scanf(“%d”,&a[x]);
}
printf(“Show all valuesn”);
for (x=0; x<5; x++)
{ printf(“a[%d] = %d”, x, a[x]); }
ตัวอย่างโปรแกรม
          int 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];
          grades[i];
          grades[2*i];
          grades[j-i];

ถาตองการหาผลรวมของตัวแปร grade ทั้ง 5 อีลเี มนต ทําดังนี้
     total = grades[0] + grades[1] + grades[2] + grades[3] + grades[4];
             เปลี่ยนเปน for loop ไดดังนี้
     total = 0;
     for ( i = 0 ; i <= 4 ; i++)
      total += grades[i];
การส่ งผ่านอาร์เรย์ไปยังฟังก์ชน
                                        ั
สามารถแบ่งได้เป็ น 2 ลักษณะ
                            
การส่งผ่านค่าอีลีเมนต์อาร์เรย์ให้กบฟังก์ชน เป็ นการเรี ยกใช้ฟังก์ชนแบบ
                                   ั      ั                        ั
 Call-by-value
การส่งอาร์เรย์ทุกอีลีเมนต์ให้กบฟังก์ชน เป็ นการเรี ยกใช้ฟังก์ชนแบบ Call-
                                ั     ั                         ั
 by-reference
การเรี ยกใช้แบบ Call-by-value
                                        ชนั โดยผ่านพารามิเตอร์
 ใช้วิธีการส่ งค่าของตัวแปร (value) ให้กบฟังก์
                                         ั
 ไม่ สามารถแก้ ไขค่ าของอาร์ กิวเมนต์ (หรื อพารามิเตอร์ ) ภายในฟั งก์ ชันได้ = การแก้ ไขค่ าต่ างๆใน
  ฟั งก์ ชัน ไม่ มีผลต่ อตัวแปรที ส่ งค่ ามา
 ใช้กบฟังก์ชนทีรับค่าเข้าเป็ นตัวแปรธรรมดา (int, float, char,...)
         ั        ั
 เช่น void triple(int x)
            { x=x*3; printf(“x = %d”,x); }
            ….                                 triple(x) ส่ งค่ า 5 ให้ กับฟังก์ ชัน ในฟังก์ ชัน x เริมต้ นเป็ น 5
           int x=5, y[2]={10,11}; และถูกทําให้กลายเป็ น 15 หลังจบฟังก์ชัน ค่า x นอกฟังก์ชัน
           triple(x); triple(y[0]); ไม่เปลียนแปลง
                                                     triple(y[0]) ส่ งค่า 10 ให้ กับฟังก์ ชัน ในฟังก์ ชัน x เริมต้นเป็ น 10
                                                     และถูกทําให้ กลายเป็ น 30 หลังจบฟังก์ ชัน ค่า y[0] ยังเหมือนเดิม
การเรี ยกใช้แบบ Call-by-reference
                   
 ใช้วิธีการส่ งค่า แอดเดรส (Address)*** ของตัวแปรไปให้ฟังก์ชน    ั
 ใช้กบฟังก์ชนทีรับค่าเข้าเป็ นอาร์เรย์
           ั      ั
 สามารถแก้ไขค่าของอาร์กิวเมนต์ภายในฟังก์ชนได้ = การแก้ ไขค่ าตัวแปรอาร์ เรย์ ภายใน
                                                  ั
    ฟั งก์ ชัน มีผลการเปลียนแปลงต่ อตัวแปรทีส่ งค่ ามา
    เพราะ การมีการจัดการค่ าของหน่ วยความจําในตําแหน่ งเดียวกัน
***แอดเดรส (Address) คือ ค่าทีใช้อางถึงตัวข้อมูลภายในหน่วยความจํา เหมือนกับ
                                          ้
    หมายเลขบ้านเลขที***
ฟังก์ชนทีมีการรับค่าเข้าเป็ นอาร์เรย์
             ั
                      
 ฟังก์ชันสามารถทีจะรับค่าเข้ าเป็ นอาร์เรย์ได้ ซึงรูปแบบของการเขียนต้ นแบบของฟั งก์ชัน
  เป็ นดังนี
  ชนิดข้ อมูล ชือฟั งก์ชัน(ชนิดข้ อมูล ชือตัวแปร[ขนาดอาร์เรย์]);
 ในกรณีฟังก์ชันมีการรับค่าเข้ าเป็ นอาร์เรย์ 1 มิติ อาจจะไม่ต้องกําหนดขนาดของอาร์เรย์ก ็
  ได้
 ตัวอย่างเช่น
          int sum_arr(int num[10]);
          void print_arr(int a[5]);
          float average(int num[]);
การส่ งผ่านค่าอีลีเมนต์อาร์เรย์ให้กบ
                                         ั
                    ฟังก์ชนั
                      
 หากฟังก์ชน my_func มีตนแบบของฟังก์ชนดังนี
              ั                     ้           ั
  void my_func(int x);
 และใน main ได้มีการประกาศตัวแปรอาร์เรย์ชือว่า num
  int num[10];
 การส่ งอีลีเมนต์ที 0 ของอาร์ เรย์ num ไปเป็ นอาร์ กิวเมนต์ของฟังก์ชน my_func
                                                                     ั
  สามารถเขียนได้ดงนี ั
  my_func(num[0]);
ตัวอย่างที 1 : การส่ งค่าแต่ละอีลเี มนต์ใน
           อาร์เรย์ให้กบฟังก์ชน
                       ั      ั
                    
   #include <stdio.h>                  2 : Positive
   void check_val(int x);
   int main()
   {
     int a[3] = {2,-1,5};
     check_val(a[0]);
     return 0;
   }
   void check_val(int x)
   {
     if(x >= 0)
       printf("%d : Positiven",x);
     else
       printf("%d : Negativen",x) ;
   }
ตัวอย่างที 2: การส่ งค่าแต่ละอีลเี มนต์ใน
          อาร์เรย์ให้กบฟังก์ชน
                      ั      ั
#include <stdio.h> 
void check_val(int x);                 2 : Positive
int main()                             -1 : Negative
{                                      5 : Positive
  int i,a[3] = {2,-1,5};
  for(i=0;i<3;i++)
                check_val(a[i]);
  return 0;
}
void check_val(int x)
{
 if(x >= 0)
        printf("%d : Positiven",x);
  else
     printf("%d : Negativen",x);
}
ตัวอย่างที 3 : การส่ งค่าแต่ละอีลเี มนต์ใน
           อาร์เรย์ให้กบฟังก์ชน
                       ั      ั
#include <stdio.h>
                    
void showVal(int val);     /* function prototype */
void main()
{
       int nums[5] = {2, 18, 1, 27, 16};
       showVal(nums[0]);
}                                           Value     is 2

void showVal(int val) /* show a value */
{
       printf("Value is %dn", val);
}
การส่ งอาร์เรย์ทุกอีลีเมนต์ของอาร์เรย์
                ให้กบฟังก์ชน
                     ั       ั
                       
 การส่ งอาร์เรย์ในกรณี นี ใช้แค่ชือตัวแปรอาร์ เรย์เท่านัน เช่น หากใน main มีการ
  ประกาศอาร์เรย์ดงนี
                   ั
  int num[10];
 และฟังก์ชน print_arr มีตนแบบฟังก์ชนดังนี
            ั                      ้            ั
  void print_arr(int a[10]);
 การส่ งอาร์เรย์ num ทุกอีลีเมนต์ไปให้ฟังก์ชน print_arr สามารถเขียนได้ดงนี
                                                  ั                              ั
  print_arr(num);
ตัวอย่างที 1: การส่ งอาร์เรย์ทุกอีลีเมนต์
             ให้กบฟังก์ชน
                 ั       ั
#include <stdio.h>
                            5 2 -1 8
void print_arr(int a[4]);
int main() {
  int num[4] = {5,2,-1,8};
  print_arr(num);
  return 0;
}

void print_arr(int a[4])
{
  int i;
  for(i =0;i<4;i++)
    printf("%d ", a[i]);
}
ตัวอย่างที 2 : การส่ งอาร์เรย์ทุกอีลีเมนต์
                  ให้กบฟังก์ชน
                      ั      ั
 ไฟล์ arrayex9.c
#include <stdio.h>
                        
void find_max(int vals[5]); /* function prototype */
void main()
{
       int nums[5] = {2, 18, 1, 27, 16};
       find_max(nums);
}

void find_max(int vals[5])    /* find the maximum value */
{
       int i, max = vals[0];          The maximum value is 27
       for ( i = 1; i < 5; ++i)
               if (max < vals[i])
               max = vals[i];
       printf("The maximum value is %dn", max);
}
อาร์เรย์ของออบเจ็กต์
                               
              อาร์เรย์สามารถเก็บ 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();
         studentList

                                            Student
                                             Object
                studentList[0]
                                            Student
                studentList[1]               Object

                studentList[2]              Student
                                             Object
อาร์เรย์แบบ 2 มิติ
 โดยสรุ ป
                                            
              สําหรับอาร์ เรย์สองมิติ เมืออ้างชืออาร์เรย์ จะหมายถึงตําแหน่งเริ มต้นของอาร์ เรย์
  ทังหมด (อาร์เรย์ 2 มิติ)
 เมืออ้างชืออาร์เรย์พร้อมสมาชิกหนึ งอันดับ จะหมายถึงตําแหน่งเริ มต้นของอาร์ เรย์ยอยภายใน
                                                                                  ่
  (อาร์เรย์ 1 มิติ)
 เมืออ้างชืออาร์เรย์พร้อมค่าสองอันดับ จะหมายถึง ข้อมูลภายในอาร์ เรย์


    อาเรย์ 2 มิติ
                        X[0][0]   X[0][1]   X[0][2]   X[0][3]   X[0][4]



                        X[1][0]   X[1][1]   X[1][2]   X[1][3]   X[1][4]
การประกาศตัวแปรอาร์ เรย์ 2 มิติ

   int val[3][4];                  
   double prices[10][5];
   char code[6][4];      code[0][1]    code[0][2]

   code[0][0]                                         code[0][3]

   code[1][0]             code[1][1]
          .
          .
          .
code[3]
          .
          .
   code[5][0]                                         code[5][3]
ตัวอย่ างการเข้ าถึงตัวแปรอาร์ เรย์ 2 มิติ

                              
num = val[2][3];
val[0][0] = 62;
new_nu = 4 * ( val[1][0] – 5);
sum_row0 = val[0][0] + val[0][1] + val[0][2] + val[0][3];
การใช้คาสัง for ในการเข้าถึงอาร์เรย์ 2
        ํ
                 มิติ
                 
 ใช้ลูป for 2 ชัน โดยลูปชันนอกวนรอบตามจํานวนแถว ส่ วนลูปชันในวนรอบตาม
  จํานวนหลัก
 ต้องมีตวนับ 2 ตัว คือ ตัวนับแถวและตัวนับหลัก
          ั
 ตัวอย่างเช่น
                                                 0          1            2
 int i,j,x[2][3];                        0       0          1            2
 for(i=0;i<2;i++)        1                       1          2            3
   for(j=0;j<3;j++)
          x[i][j] = i+j;
ตัวอย่างที 1 : การแสดงค่าของอาร์เรย์ 2 มิติ
#include<stdio.h>
int main(void)
                                       
{
       int i, j, val[3][4] = {8,16,9,52,3,15,27,6,14,25,2,10};

  printf("n Display all elements of array");

  printf("n%2d %2d %2d %2d", val[0][0],val[0][1],val[0][2],val[0][3]);
  printf("n%2d %2d %2d %2d", val[1][0],val[1][1],val[1][2],val[1][3]);
  printf("n%2d %2d %2d %2dn",val[2][0],val[2][1],val[2][2],val[2][3]);

  for ( i = 0; i < 3; ++i) {
        printf("n");       /* start a new line for each row */
        for ( j = 0; j < 4; ++j)                  Display all elements of array
                 printf("%2d ", val[i][j]);        8 16 9 52
        }                                          3 15 27 6
  return 0;                                       14 25 2 10
}                                                  8 16 9 52
                                                   3 15 27 6
                                                  14 25 2 10
ตัวอย่างที 2 : การรับและแสดงค่าของ
               อาร์เรย์ 2 มิติ
#include <stdio.h>
                    
int main() {
  int i,j,a[2][3];
  for(i=0;i<2;i++) {
    for(j=0;j<3;j++) {
         printf("Enter a[%d][%d] : ",i,j);
         scanf("%d", &a[i][j]);
        }                              Enter a[0][0]: 10
  }                                    Enter a[0][1]: 20
  for(i=0;i<2;i++) {                   Enter a[0][2]: 30
    for(j=0;j<3;j++)                   Enter a[1][0]: 40
      printf("%d",a[i][j]);            Enter a[1][1]: 50
    printf("n");                      Enter a[1][2]: 60
  }                                    10 20 30
  return 0;                            40 50 60
}
การให้ค่าเริ มต้น (Array
                     Initialization)
                                
 เราจะใช้กลุ่มค่าคงทีทีมีสมาชิกเป็ นกลุ่มค่าคงทีย่อย ซึ งเป็ นชนิ ดเดียว กันและมีขนาดเท่ากัน
  รวมถึงสอดคล้องกับชนิดของอาร์ เรย์ดวย   ้
 โดยใช้เครื องหมาย {} หรื อ , ในการแบ่งแยกแต่ละแถว
ตัวอย่ างการให้ ค่าเริมต้ น (Array Initialization)
int val[3][4]     ={ { 8,16, 9, 52 },
                     {3,15, 27, 6},
                     {14, 25, 2, 10} };
int val[3][4]     = { 8, 16, 9, 52,
                      3, 15, 27, 6,
                      14, 25, 2, 10 };
ะกําหนดจํานวนแถวโดยนับจากทีกําหนด
 หากไม่มีการกําหนดจํานวนแถว คอมไพเลอร์จ
   ในค่าเริ มต้น แต่จะต้องมีการกําหนดจํานวนหลักเสมอ เช่น
             int a[][2] = {{5,8},{9},{-1}};


                                      0            1
                             0        5            8
                             1        9            0
                             2       -1            0
 ในการกําหนดค่าเริ มต้นของอาร์เรย์ 2 มิติ สามารถละเครื องหมายปี กกาทีใช้แบ่งแถวได้
  โดยใช้จานวนหลักในการจัดว่าอีลีเมนต์ใดอยูแถวใด
         ํ                                    ่
                              6.9, 7.2 };
เช่น float x[2][3] = { 2.5, 1.25, 8.6,4.1,




                        0            1            2
                0     2.5         1.25          8.6
                1     4.1          6.9          7.2
Class ArrayList
                 
     ในภาษา Java มีกลุ่มคลาสทีเรียกว่า คอลเล็กชัน (Collection) ซึงออบเจ็กต์
จากคลาสนีสามารถใช้สะสมออบเจ็กต์ต่าง ๆ ไว้ได้ เช่น Class ArrayList ดีกว่า
Array ทีสามารถเพิมสมาชิกได้ โดยไม่ตองประกาศไว้ล่วงหน้า
                                     ้
การใช้ Class ArrayList จะต้อง import java.util.ArrayList
ตัวอย่างการสร้างออบเจ็กต์ จาก Class ArrayList


   ArrayList nameList = new ArrayList();
Method ทีสําคัญของ ArrayList
                                    
 add(int index,Object obj)
  ใช้ใส่ออบเจ็กต์ลงในอาร์เรย์ทตําแหน่ ง index
                              ี
 remove(int index)
  นําออบเจ็กต์ตําแหน่ง index ออกจากอาร์เรย์
 get(int index)
  คืนค่าออบเจ็กต์ในตําแหน่ง index
 indexof(Object obj)
  คืนค่า index ของออบเจ็กต์ทระบุ ี
 size
  สําหรับหาขนาดของ ArrayList
ตัวอย่างโปรแกรม
import java.util.ArrayList;                //เรียกใช้ คลาส ArrayList
public class Beatles {
  public static void main(String[] args)


                                            
  {
             ArrayList band = new ArrayList();           //สร้ างออบเจ็กต์เป็ นอาร์เรย์ชือ band
             band.add("Pom");              //ใส่คาว่า Pom ลงใน band
                                                 ํ
             band.add("Pet");              //ใส่คาว่า Pet ลงใน band
                                                   ํ
             band.add("Jo");                             //ใส่คาว่า Jo ลงใน band
                                                                ํ
             band.add("Goft");             //ใส่คาว่า Goft ลงใน band
                                                     ํ
             System.out.println(band);     //แสดงข้ อมูลใน band ออกมาทังหมด
             int location = band.indexOf("Pet"); //หาตําแหน่งของ Pet
             band.remove(location);        //ลบคําว่า Pete ออกไป
             System.out.println(band);                   //แสดงข้ อมูลใน band ทังหมด
             System.out.println("At index 1: "+band.get(1));                              //อ่าน
  ข้ อมูลตําแหน่งทีสอง
             band.add(2,"Rose");           //เพิม Rose ลงไปในตําแหน่งทีสาม
             System.out.println(band);                   //แสดงค่าใน band ทังหมด
             System.out.println("Size of the band: "+band.size());
             //แสดงขนาดของอาร์เรย์
  }
}
String
                          
       String คือขอความ หรือ สายของอักขระ ในภาษา C++ ไมมีตัว
    แปร ประเภท String แตจะมีตัวแปรประเภท char ใหใชแทน ซึ่งตัว
    แปร ประเภทchar จะสามารถเก็บอักขระได 1 อักขระ เทานั้นถาหาก
    เราอยากใหตัวแปร char สามารถเก็บขอความไดเราก็สามารถ ทําให
    ตัวแปร char เปน array ได char Name[10];
ตัวอยางเชน char Name[10];

ความหมายวา
                                         
 ตัวแปร ชื่อ Name เปนตัวแปรประเภท char สามารถเก็บอักขระได 9 ตัวอักษรสาเหตุที่เก็บ
     ได 9 ตัวอักษรก็เพราะวา ในกรณีที่เราใชตัวแปร char เปน array เพื่อเก็บขอความ
     Compiler จะเหลือเนื้อที่ตําแหนงสุดทายไวเก็บอักขระ นัล เพื่อใหรูวาเปนการจบ String
     เพราะฉะนั้นรูปแบบการประกาศตัวแปร char ที่เปน Stringจึงเปนแบบนี้
 char ชื่อตัวแปร[จํานวนอักษร+1];
ถาเราตองการประกาศตัวแปร char ที่เปน String ไวเก็บขอมูลชื่อที่มีไดมากสุด 30 ตัวอักษรก็ให
ประกาศดังนี้ char Name[31];
หรือถาเรา จะประกาศตัวแปร char ที่เปน String ไวเก็บขอมูลชื่อเดือนมีไดมากสุด 20 ตัวอักษร
ก็ใหประกาศดังนี้ char Month[21];
การเปรียบเทียบ String
ใชเครื่องหมาย = =
 เปนการเปรียบเทียบวา String 2 ตัวเปนเดียวกันหรือไม โดยจะ
                                       Object
   เปรียบเทียบคาอางอิงหรือที่อยูในหนวยความจําของตัวแปรทั้งสอง ไมไดเปนการ
   เปรียบเทียบถึงขอมูลที่ String ทั้ง 2 ตัววาเก็บขอมูลเดียวกันหรือไม

   รูปแบบคําสั่ง             ตัวอยางการใชงาน
   String1 == String2;       String datastring1 = “Motorcycle”;
                             String datastring2 = datastring1;
                                   .............................................
                                   .............................................
                                 if(datastring1 == datastring2)
                                  System.out.println(“เปน Object เดียวกัน”);
                             else
                                  System.out.println(“ไมไดเปน Object เดียวกัน”);
equals() method
เปนการเปรียบเทียบคาใน String Object ทั้ง 2 ตัวเปนคาเดียวกันหรือไม โดย
ที่จะใหคาเปนจริง (True) ก็ตอเมื่อตัวอักษรทุกตัวใน String ทั้ง 2 คาจะตอง
เหมือนกันหมด โดยสนใจตัวอักษรพิมพเล็กและพิมพใหญดวย หากตางกันก็จะ
ใหคาเปนเท็จ (False)                   
รูปแบบคําสั่ง                               ตัวอยางการใชงาน
String1.equals(String2);                    String datastring1 = “Motorcycle”;
                                            String datastring2 = “Motorcycle”;
หากไมสนวาตัวอักษรที่อยูภายใน String
                                            ....................................................
จะเปนตัวเล็กหรือตัวใหญ ถาตองการ
ตรวจสอบเพียงการเหมือนทางรูปรางก็ใช        ...................................................
method equalsIgnoreCase()                   if (datastring1.equals(datastring2))
                                                   System.out.println(“มีคาเทากัน”);
                                            else
                                                   System.out.println(“มีคาไมเทากัน”);
compareTo method
  การเปรียบเทียบความไมเทากันของ String โดยจะใหคาที่ไดจากการ
  เปรียบเทียบแบงเปน 3 คาคือ
                                        
  - เปนลบ (-) ถาคาแรกนอยกวาคาที่สอง ตัวอยางการใชงาน
  - เปนบวก (+) ถาคาแรกมากกวาคาที่สอง ถากําหนดให
  - เปนศูนย (0) ถาคาเทากัน           datastring1 เปน “abc”;
                                           datastring2 เปน “abf”;
  รูปแบบคําสั่ง
  String1.compareTo(String2);              เขียนคําสั่งดังนี้
                                           datastring1.compareTo(datastring2);

                                           ผลลัพธที่ไดจะออกมาเปน -3 หมายถึง ตําแหนงที่ 2
                                           ของ object แรกมีคานอย กวาตําแหนงที่ 2 ของ object
                                           ที่ 2 (c<f)
คลาส StringBuffer
 คลาส StringBuffer จะมีลักษณะคล้ ายกับคลาส String เพียงแต่เป็ นตัวแปร
                                         
  สตริงทีมีการแก้ ไขค่าแบบถาวร คอนสตรักเตอร์ของคลาส StringBuffer ทีน่าสนใจ
  มีดังต่อไปนี
    StringBuffer(String s) เก็บสตริง s ไว้ ในตัวแปร StringBuffer
    StringBuffer() เก็บข้ อความว่างเปล่าไว้ ในตัวแปร StringBuffer และมีขนาด
     16 byte เหตุทตัวแปร StringBuffer มีขนาดปกติ 16 และจะเพิมขนาดเมือเก็บ
                       ี
     ข้ อความลงไป เป็ นเพราะถ้ ามีการเปลียนข้ อความทีเก็บภายหลัง ข้ อความใหม่อาจมีขนาดไม่
     เท่าเดิม ดังนันจาวาจึงว่างไว้ อก 16 ทีว่างเพือจะได้ ไม่ต้องกันทีในหน่วยความจําเพิมเติมอีก
                                    ี
     ในกรณีทข้ อความใหม่มีขนาดใหญ่กว่าเดิมไม่เกิน 16 เพราะการกันทีในหน่วยความจํา
               ี
     เพิมเติมภายหลังเป็ นเรืองยุ่งยากและอาจทําให้ ประสิทธิภาพในการเข้ าถึงลดลง
    StringBuffer(int length) เก็บข้ อความว่างเปล่าไว้ ในตัวแปร
     StringBuffer และมีขนาดเท่ากับ length
 เมธอดที่นาสนใจสวนหนึ่งของคลาส StringBuffer

StringBuffer append(String s)               
StringBuffer append(char c)
StringBuffer append(chra[] c, int offset, int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
 เมธอดนี้เปนโอเวอรโหลดเมธอด ทําหนาที่เพิ่มขอความในวงเล็บเขาไปตอทายขอความที่มี
  อยูแลวใน StringBuffer ถามีการเปลี่ยนแปลง StringBuffer ผานเมธอดขอความจะถูก
  เปลี่ยนแบบถาวร
                                             
StringBuffer insert(int offset, String s)
StringBuffer insert(int offset, char c)
StringBuffer insert(int offset, char[] c)
StringBuffer insert(int offset, boolean b)
StringBuffer insert(int offset, int i)
StringBuffer insert(int offset, long l)
StringBuffer insert(int offset, float f)
StringBuffer insert(int offset, double b)
 เมธอดนี้เปนโอเวอรโหลดเมธอด ทําหนาที่แทรกขอความในวงเล็บเขาไปในตําแหนงที่
  เทากับ offset
                                         าหนาที่ลบตัวอักษรในตําแหนง index ออก
StringBuffer deleteCharAt(int index) เมธอดนี้จะทํ
StringBuffer delete(int start, int end) เมธอดนี้จะทําหนาที่ลบตัวอักษรจากตําแหนง start ถึง
end ออก
StringBuffer revers()เมธอดนี้จะทําหนาที่กลับตัวตัวอักษรจากหลังมาหนา
char charAt(int index) ลงคาตัวอักษรในตําแหนง index กลับ
char setCharAt(int index, char ch) เปลี่ยนตัวอักษรในตําแหนง index ดวย chtoString()สงคา
ของขอความออกมาในรูปตัวแปรสตริง
//TestString09.java
public class TestString09 {
    public static void main(String[] argd) {

                                 
      StringBuffer s1 = new StringBuffer("banana
split") ;
      System.out.println("s1 = "+s1);
      s1.delete(4,12) ; //bana
      System.out.println("s1 = "+s1);
      s1.append(42) ; // bana42
      System.out.println("s1 = "+s1);
      s1.insert(4, "na") ; //banana42
      System.out.println("s1 = "+s1);
      s1.setCharAt(0,'s') ; //sanana42
      System.out.println("s1 = "+s1);
      s1.reverse() ; //24ananas
      System.out.println("s1 = "+s1);
   }
}
ขอแตกตางระหวาง StringBuffer และ String
                                 
 ข้ อทีแตกต่างระหว่าง StringBuffer และ String คือขนาดของ
  StringBuffer ไม่จาเป็ นต้ องเท่ากับขนาดของข้ อความและสามารถเพิมหรือลด
                         ํ
  ขนาดได้ เราสามารถตรวจสอบขนาดของ StringBuffer ได้ โดยใช้ เมธอด int
  capacity() ซึงจะคืนค่าปัจจุบันของ StringBuffer ดังตัวอย่างต่อไปนี
//TestString08.java
public class TestString08 {


                                         
   public static void main(String[] args) {
       StringBuffer s1 = new StringBuffer() ; // (1)
       System.out.println(s1) ;
       System.out.println(s1.length()) ;
       System.out.println(s1.capacity()) ;
       StringBuffer s2 = new StringBuffer("Hello") ; // (2)
       System.out.println(s2) ;
       System.out.println(s2.length()) ;
       System.out.println(s2.capacity()) ;
      //StringBuffer s3 = "Hello"; // (3) Error
   }
}
 จากโค้ ดข้ างบนในบรรทัดที (1) เราสร้ างตัวแปร s1 โดยไม่เก็บค่าอะไรเลย ผลทีได้ คือ
  ขนาดของข้ อความเท่ากับ 0 แต่ขนาดของตัวมันเองจริงเป็ น 16 ซึงเป็ นค่าปกติ ใน
                                    
  บรรทัดที (2) เราสร้ างตัวแปร s2 โดยให้ เก็บค่า Hello ผลทีได้ คือขนาดข้ อความ
  เป็ น 5 แต่ขนาดของตัวมันเองเท่ากับค่าปกติบวกด้ วยความยาวของข้ อความทีสังให้ มัน
  เก็บซึงเท่ากับ 21 นันเอง ในบรรทัดที (3) เราพยายามสร้ างตัวแปร s3 ซึงเป็ นวิธการ
                                                                              ี
  ทีใช้ ไม่ได้ กบตัวแปร StringBuffer
                ั

 เหตุทตัวแปร StringBuffer มีขนาดเท่ากับ 16 และจะเพิมขนาดเมือเก็บข้ อความ
         ี
  ลงไป เป็ นเพราะถ้ ามีการเปลียนแปลงข้ อความทีเก็บภายหลัง ข้ อความหใม่อาจมีขนาดไม่
  เท่าเดิม จาวาจึงเผือทีว่างไว้ อก 16 ทีว่าง เพือจะได้ ไม่ต้องกันพืนทีในหน่วยความจํา
                                 ี
  เพิมเติมอีกในกรณีทข้ อความใหม่มีขนาดใหญ่ กว่าเดิมไม่เกิน 16 เพราะการกันทีใน
                       ี
  หน่วยความจําเพิมเติมภายหลังทําได้ ยาก เนืองจากพืนทีในหน่วยความจําทีเพิมขึนอาจไม่
  อยู่ติดกับพืนทีเดิมทําให้ ประสิทธิภาพในการเข้ าถึงลดลง
แบบฝึ กหัด
1. ค่าคงทีของสตริงจะอยู่ภายใต้ เครืองหมายใด
   ก) ‘_’                               
    ข)   “_”
    ค)   <_>
    ง)   {_}
2. ในการประกาศตัวแปรสตริงนัน จะต้ องคํานึงถึงสิงใด
    ก)   ความยาวของข้ อมูล
    ข)   จํานวนตัวอักษร
    ค)   ลักษณะของข้ อมูล
    ง)   ประเภทของข้ อมูล
3. get(int index) คือmethodอะไรในArraylist
    ก)    ใช้ ใส่ออบเจ็กต์ลงในอาร์เรย์ทตําแหน่ง index
                                       ี
    ข)    คืนค่า index ของออบเจ็กต์ทระบุ  ี
    ค)    คืนค่าออบเจ็กต์ในตําแหน่ง index
    ง)                                     
          นําออบเจ็กต์ตาแหน่ง index ออกจากอาร์เรย์
                         ํ
4. ฟังก์ชันในการ printfซึงในภาษา C นัน สามารถทีจะกําหนดให้ ข้อมูลของสตริง เมือเวลาจะ
   พิมพ์แสดงนัน จะให้ อยู่ติดขอบซ้ ายหรือขอบขวาก็ได้ โดยใช้ เครืองหมายในข้ อใด
    ก)    –
    ข)    #
    ค)    *
    ง)    /
5. การใช้ ฟังก์ชันต่าง ๆ ทีเกียวกับสตริงนันจะต้ องนําเข้ าไลบรารีไฟล์ใดเสมอ
    ก)    strintg.g
    ข)    string.th
    ค)    strintg.h
    ง)    strint.gh
6. ข้ อมูลในลักษณะใดทีถูกต้ องทีสุดต่อไปนีเป็ นข้ อมูลทีเรียกว่า อาเรย์
    ก) เป็ นข้ อมูลเลขจํานวนจริง
    ข) เป็ นข้ อมูลเลขจํานวนเต็ม
    ค) เป็ นข้ อมูลชนิดข้ อความ
    ง) เป็ นข้ อมูลชนิดเดียวกันหลายข้ อมูลทีใช้ ชือตัวแปรเดียวกัน
จากอาเรย์ X]3][4[ = {1, 2, 3, 4
                             5, 6, 7, 8
                                         
                             9, 10, 11, 12}
ตอบคําถามข้ อ 40 – 41
7. จากอาร์เรย์ทกําหนดให้ ค่าของข้ อมูลอาเรย์ X[1][3] มีค่าเท่ากับเท่าใด
                ี
    ก) 3
    ข) 4
    ค) 8
    ง) 11
8. จากอาร์เรย์ทกําหนดให้ ค่าของข้ อมูลอาเรย์ X[0][1] + X[2][3] มีค่าเท่ากับเท่าใด
                  ี
    ก) 4
    ข) 6
    ค) 10
    ง)      14
9. strlenเป็ นฟั งก์ชันเกียวกับอะไร
   ก) การคัดลอกสตริง
   ข) ความยาวของสตริง
   ค) การต่อสตริง         
   ง) การหาขนาดของสตริง
10. คําสัง READ, READLN, WRITE, WRITELN ซึงเป็ นคําสังรับ
    ข้ อมูล และแสดงผลของภาษาใด
   ก) ภาษาอังกฤษ
   ข) ภาษาไทย
   ค) ภาษาซี
   ง) ภาษาปาสคาล
เฉลย
1. ก     
2. ก
3. ข
4. ก
5. ค
6. ง
7. ค
8. ง
9. ข
10. ง
รายชือสมาชิก
                            
1.   น.ส.กฤตวรรณ      แต้ มประเสริฐ      เลขที 13
2.   น.ส.ณัฐชยา       พลูสวัสดิ         เลขที 14
3.   น.ส.นพวรรณ       ปลาบู่ทอง         เลขที 19
4.   น.ส.กาญจนาพร     พงศ์อมพรทิพย์
                            ั            เลขที 21
5.   น.ส.นภัสกร       นาควิโรจน์         เลขที 22
6.   น.ส. ลลิตา        บันลือศรีสกุล      เลขที 23

               ชันมัธยมศึกษาปี ที 6/1

More Related Content

What's hot

ตัวแปรชุดและตัวแปรอักขระ PPT
ตัวแปรชุดและตัวแปรอักขระ PPTตัวแปรชุดและตัวแปรอักขระ PPT
ตัวแปรชุดและตัวแปรอักขระ PPTAreeya Onnom
 
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริงบทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริงdefeat overcome
 
Java-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional ArraysJava-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional ArraysWongyos Keardsri
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ Areeya Onnom
 
09 multi arrays
09 multi arrays09 multi arrays
09 multi arraysa-num Sara
 
Java-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysJava-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysWongyos Keardsri
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1Ploy StopDark
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขรบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขรMook Sasivimon
 
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระบทที่ 5 ตัวแปรชุดและตัวแปรอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระMook Sasivimon
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]Mook Sasivimon
 

What's hot (19)

4
44
4
 
ตัวแปรชุดและตัวแปรอักขระ PPT
ตัวแปรชุดและตัวแปรอักขระ PPTตัวแปรชุดและตัวแปรอักขระ PPT
ตัวแปรชุดและตัวแปรอักขระ PPT
 
บทที่ 5
บทที่ 5บทที่ 5
บทที่ 5
 
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริงบทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง
 
งาน
งานงาน
งาน
 
Java-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional ArraysJava-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional Arrays
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ
 
09 multi arrays
09 multi arrays09 multi arrays
09 multi arrays
 
งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8
 
..Arrays..
..Arrays....Arrays..
..Arrays..
 
New presentation1
New presentation1New presentation1
New presentation1
 
Java-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysJava-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional Arrays
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
Presentation1
Presentation1Presentation1
Presentation1
 
งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขรบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
 
08 arrays
08 arrays08 arrays
08 arrays
 
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระบทที่ 5 ตัวแปรชุดและตัวแปรอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระ
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
 

Similar to บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1

ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระAreeya Onnom
 
Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionIMC Institute
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระMook Sasivimon
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระMook Sasivimon
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์Theeravaj Tum
 
ตัวแปรชุด
ตัวแปรชุดตัวแปรชุด
ตัวแปรชุดPear Pimnipa
 
ตัวแปรชุดนำเสนอ
ตัวแปรชุดนำเสนอตัวแปรชุดนำเสนอ
ตัวแปรชุดนำเสนอPz'Peem Kanyakamon
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นJava Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นThanachart Numnonda
 
ตัวแปรชุดและตัวแปรกลุ่มอิสระ
ตัวแปรชุดและตัวแปรกลุ่มอิสระตัวแปรชุดและตัวแปรกลุ่มอิสระ
ตัวแปรชุดและตัวแปรกลุ่มอิสระLacus Methini
 
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระSirinat Sansom
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1prapassonmook
 
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระSanita Fakbua
 
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระBoOm mm
 

Similar to บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1 (20)

ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ
 
Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and Collection
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
 
งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8
 
ข้อมูลชนิดอาร์เรย์และสตริง
ข้อมูลชนิดอาร์เรย์และสตริงข้อมูลชนิดอาร์เรย์และสตริง
ข้อมูลชนิดอาร์เรย์และสตริง
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์
 
ตัวแปรชุด
ตัวแปรชุดตัวแปรชุด
ตัวแปรชุด
 
ตัวแปรชุดนำเสนอ
ตัวแปรชุดนำเสนอตัวแปรชุดนำเสนอ
ตัวแปรชุดนำเสนอ
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นJava Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่น
 
99
9999
99
 
งาน
งานงาน
งาน
 
ตัวแปรชุดและตัวแปรกลุ่มอิสระ
ตัวแปรชุดและตัวแปรกลุ่มอิสระตัวแปรชุดและตัวแปรกลุ่มอิสระ
ตัวแปรชุดและตัวแปรกลุ่มอิสระ
 
03 input math
03 input math03 input math
03 input math
 
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
 
ภาษา C#
ภาษา C#ภาษา C#
ภาษา C#
 
C lang
C langC lang
C lang
 
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
 

More from Little Tukta Lita

งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1Little Tukta Lita
 
สรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบสรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบLittle Tukta Lita
 
สรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบสรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบLittle Tukta Lita
 
สรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบสรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบLittle Tukta Lita
 
โปรแกรมย่อยและฟังชั่นมาตรฐาน ม.6 1
โปรแกรมย่อยและฟังชั่นมาตรฐาน ม.6 1โปรแกรมย่อยและฟังชั่นมาตรฐาน ม.6 1
โปรแกรมย่อยและฟังชั่นมาตรฐาน ม.6 1Little Tukta Lita
 
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1Little Tukta Lita
 
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม. 6 1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม. 6  1ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม. 6  1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม. 6 1Little Tukta Lita
 

More from Little Tukta Lita (9)

งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
มายแม็บ
มายแม็บมายแม็บ
มายแม็บ
 
It news
It newsIt news
It news
 
สรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบสรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบ
 
สรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบสรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบ
 
สรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบสรุปงานผู้ทดสอบ
สรุปงานผู้ทดสอบ
 
โปรแกรมย่อยและฟังชั่นมาตรฐาน ม.6 1
โปรแกรมย่อยและฟังชั่นมาตรฐาน ม.6 1โปรแกรมย่อยและฟังชั่นมาตรฐาน ม.6 1
โปรแกรมย่อยและฟังชั่นมาตรฐาน ม.6 1
 
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
 
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม. 6 1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม. 6  1ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม. 6  1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม. 6 1
 

บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1

  • 2. อาร์เรย์ (Array)  อาร์เรย์ (Array) เป็ นตัวแปรชุดให้ สาหรับเก็บข้ อมูลทีมีความสัมพันธ์กน โดยจะ ํ ั เก็บไว้ ในชือเดียวกัน สมาชิกแต่ละตัวของ Array จะเรียกว่า Element หรือ Cell ตัวเลขทีใช้ ระบุ ตําแหน่งสมาชิกของ Array เรียกว่า Index หรือ Subscript 5 8 9 7 3 X[0] X[1] X[2] X[3] X[4] ตัวอย่าง Array X ทีมี 5 Element ซึ งจะเริ มต้นตังแต่ Index 0 ถึง 4
  • 3. ตัวแปรอาร์เรย์แบบ 1 มิติ  อาร์เรย์หนึ งมิติ มีโครงสร้ างเทียบเท่าเมตริ กซ์ขนาด nx1 การประกาศตัวแปรอาร์ เรย์ จะ ใช้เครื องหมาย [ ] ล้อมค่าตัวเลขจํานวนเต็ม เพือบอกจํานวนหน่วยข้อมูลทีต้องการได้ใน รู ป ชนิดของตัวแปร ชือตัวแปร[จํานวนสมาชิกทีต้ องการ] data_type variable_name [ number-of-elements ] เช่น int a[5]; double x, y[10], z[3];
  • 4. ตัวแปรอาร์เรย์หลายตัว  array) คือ อาร์เรย์ทีมีสมาชิก อาร์เรย์หลายมิติ (Multi-dimensional เป็ นข้อมูลอาร์เรย์ นันคือ ในหน่วยข้อมูลแต่ละหน่วยของอาร์เรย์ จะเป็ นอาร์ เรย์ยอยๆ ซึง ่ อาจจะกําหนดซ้อนลงไปได้หลายชัน การกําหนดอาร์เรย์หลายมิติ จะกระทําในรู ป ชนิดตัวแปร ชือตัวแปร[จํานวนสมาชิก][จํานวนสมาชิก]….; การประกาศอาร์ เรย์หลายตัวทําได้ดงนีั int [] abc , xyz; abc = new int[500]; xyz = new int[10]; หรื อเขียนรวมกันได้ดงนีั int[] abc = new int[500], xyz = new int[10];
  • 5. ตัวอย่างอาร์เรย์หลายมิติ เช่น อาร์เรย์ทีมีสมาชิกอยู่ 3 ตัว และสมาชิ กแต่ละตัวก็เป็ นอาร์เรย์เก็บข้อมูลชนิด int มีจานวน ํ สมาชิก 2 ตัว จะกําหนดได้ดงนี int a[3][2]; ั  ขนาดของอาร์เรย์ 3 x 2   จํานวนไบต์ ทีใช้ในการเก็บอาร์ เรย์ sizeof (a) คํานวณจาก 3 x 2 x sizeof ( int ) = 3x2x4 = 24 ไบต์ จากการกําหนดดังกล่าวจะได้อาร์ เรย์ การจัดวางภายในหน่วยความจํา ทีมีโครงสร้างดังรู ป สามารถแสดงได้ดงรู ป ั a a[0 a[0][0] a[0][1] a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1] ] a[1 a[1][0] a[1][1] a a[1] a[2] ] a[0] a[2 a[2][0] a[2][1] ]
  • 6. การกําหนดคาเริ่มตนใหอารเรย 1 มิติ   สามารถประกาศตัวแปร Array พร้ อมกับกําหนดค่าเริมต้ นให้ กบสมาชิก Array ั ได้ โดยมีรปแบบดังนี ู ชนิดของตัวแปรอาร์ เรย์ ชืออาร์เรย์[จํานวนข้อมูล] = {ค่าคงที,ค่าคงที,…}; Type [] var_name = {value1,value2,value3}; เช่น int []num = {5,6,9}; String []name = {“noom”,”boby”,”goft”}; Int []unit = {1}
  • 7. ตัวอย่างโปรแกรม import java.util.Scanner; public class ArrayDemo1 { public static void main(String[] args) { final int EMPLOYEES = 3;  //กําหนดคาคงที่วามีพนักงาน 3 คน int[] hours = new int[EMPLOYEES]; //ประกาศตัวแปรอารเรยเก็บชั่วโมงทํางาน 3 เซล Scanner keyboard = new Scanner(System.in); //สรางออบเจ็กตรับขอมูลทางแปนพิมพ System.out.println("Enter the hours worked by " + EMPLOYEES + " employees."); for (int index = 0; index < EMPLOYEES; index++)//วนลูปรับขอมูลไปเก็บในเซล { System.out.print("Employee " + (index + 1) + ": "); hours[index] = keyboard.nextInt();//รับขอมูลทางแปนพิมพไปเก็บในอารเรย } System.out.println("The hours you entered are:");//แสดงชั่วโมงการทํางาน for (int index = 0; index < EMPLOYEES; index++)//วนลูปแสดงขอมูลแตละเซลของอารเรย System.out.println(hours[index]); } }
  • 8. การเข้ าถึงตัวแปรอาร์ เรย์   เมือมีการประกาศอาร์เรย์แล้ว ค่าตําแหน่งหมายเลขลําดับข้อมูลสําหรับใช้เข้าถึงตัวแปร ย่อยต่างๆ ในอาร์เรย์ จะถูกกําหนดโดยอัตโนมัติ  โดยหากกําหนดอาร์ เรย์ดวยขนาด n ข้อมูล หน่วยแรก จะมีค่าตําแหน่งลําดับเป็ น 0 ไป ้ จนถึงข้อมูลหน่วยสุ ดท้ายจะมีค่าตําแหน่งลําดับเป็ น n-1 เช่น int v[5]; 3000 3004 3008 3012 3016 v[0] v[1] v[2] v[3] v[4]
  • 9.   ถ้าต้องการอ่านหรื อเขียนข้อมูลในหน่วยต่างๆ ของตัวแปรอาร์เรย์ จะต้องอ้างชื อตัวแปร ตามด้วยค่าลําดับของหน่วยในกลุ่มข้อมูลอาร์ เรย์ ล้อมด้วยเครื องหมาย [ ] ซึงเรี ยกว่า subscript (หรื อดัชนี index)  ค่าดัชนี อาจอยูในรู ป ค่าคงที ของตัวแปร นิพจน์ หรื อฟังก์ชนทีให้ค่าเป็ นค่าจํานวนเต็มก็ ่ ั ได้ ( positive integer >=0 )  ของเขตของ index หรื อ subscript มีค่าตังแต่ 0 ถึง n-1 ( n คือขนาดของ อาร์เรย์)
  • 10. การใช้คาสังวนรอบ for ในการเข้าถึงค่าในอาร์เรย์ ํ  เราสามารถใช้คาสังวนรอบ for ในการวนรอบรับค่าทีป้ อนเข้ามาและใช้ในการ ํ คํานวณโดยการใช้ตวแปรในการวนรอบ และใช้ตวแปรเดียวกัน เพือกําหนดลําดับของ ั ั ข้อมูลทีจะใช้ในอาร์เรย์ int x,a[5]; for (x=0; x<5; x++) { printf(“Enter value for a[%d]:”,x); scanf(“%d”,&a[x]); } printf(“Show all valuesn”); for (x=0; x<5; x++) { printf(“a[%d] = %d”, x, a[x]); }
  • 11. ตัวอย่างโปรแกรม int 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]; grades[i]; grades[2*i]; grades[j-i]; ถาตองการหาผลรวมของตัวแปร grade ทั้ง 5 อีลเี มนต ทําดังนี้ total = grades[0] + grades[1] + grades[2] + grades[3] + grades[4]; เปลี่ยนเปน for loop ไดดังนี้ total = 0; for ( i = 0 ; i <= 4 ; i++) total += grades[i];
  • 12. การส่ งผ่านอาร์เรย์ไปยังฟังก์ชน ั สามารถแบ่งได้เป็ น 2 ลักษณะ  การส่งผ่านค่าอีลีเมนต์อาร์เรย์ให้กบฟังก์ชน เป็ นการเรี ยกใช้ฟังก์ชนแบบ ั ั ั Call-by-value การส่งอาร์เรย์ทุกอีลีเมนต์ให้กบฟังก์ชน เป็ นการเรี ยกใช้ฟังก์ชนแบบ Call- ั ั ั by-reference
  • 13. การเรี ยกใช้แบบ Call-by-value ชนั โดยผ่านพารามิเตอร์  ใช้วิธีการส่ งค่าของตัวแปร (value) ให้กบฟังก์ ั  ไม่ สามารถแก้ ไขค่ าของอาร์ กิวเมนต์ (หรื อพารามิเตอร์ ) ภายในฟั งก์ ชันได้ = การแก้ ไขค่ าต่ างๆใน ฟั งก์ ชัน ไม่ มีผลต่ อตัวแปรที ส่ งค่ ามา  ใช้กบฟังก์ชนทีรับค่าเข้าเป็ นตัวแปรธรรมดา (int, float, char,...) ั ั  เช่น void triple(int x) { x=x*3; printf(“x = %d”,x); } …. triple(x) ส่ งค่ า 5 ให้ กับฟังก์ ชัน ในฟังก์ ชัน x เริมต้ นเป็ น 5 int x=5, y[2]={10,11}; และถูกทําให้กลายเป็ น 15 หลังจบฟังก์ชัน ค่า x นอกฟังก์ชัน triple(x); triple(y[0]); ไม่เปลียนแปลง triple(y[0]) ส่ งค่า 10 ให้ กับฟังก์ ชัน ในฟังก์ ชัน x เริมต้นเป็ น 10 และถูกทําให้ กลายเป็ น 30 หลังจบฟังก์ ชัน ค่า y[0] ยังเหมือนเดิม
  • 14. การเรี ยกใช้แบบ Call-by-reference   ใช้วิธีการส่ งค่า แอดเดรส (Address)*** ของตัวแปรไปให้ฟังก์ชน ั  ใช้กบฟังก์ชนทีรับค่าเข้าเป็ นอาร์เรย์ ั ั  สามารถแก้ไขค่าของอาร์กิวเมนต์ภายในฟังก์ชนได้ = การแก้ ไขค่ าตัวแปรอาร์ เรย์ ภายใน ั ฟั งก์ ชัน มีผลการเปลียนแปลงต่ อตัวแปรทีส่ งค่ ามา เพราะ การมีการจัดการค่ าของหน่ วยความจําในตําแหน่ งเดียวกัน ***แอดเดรส (Address) คือ ค่าทีใช้อางถึงตัวข้อมูลภายในหน่วยความจํา เหมือนกับ ้ หมายเลขบ้านเลขที***
  • 15. ฟังก์ชนทีมีการรับค่าเข้าเป็ นอาร์เรย์ ั   ฟังก์ชันสามารถทีจะรับค่าเข้ าเป็ นอาร์เรย์ได้ ซึงรูปแบบของการเขียนต้ นแบบของฟั งก์ชัน เป็ นดังนี ชนิดข้ อมูล ชือฟั งก์ชัน(ชนิดข้ อมูล ชือตัวแปร[ขนาดอาร์เรย์]);  ในกรณีฟังก์ชันมีการรับค่าเข้ าเป็ นอาร์เรย์ 1 มิติ อาจจะไม่ต้องกําหนดขนาดของอาร์เรย์ก ็ ได้  ตัวอย่างเช่น int sum_arr(int num[10]); void print_arr(int a[5]); float average(int num[]);
  • 16. การส่ งผ่านค่าอีลีเมนต์อาร์เรย์ให้กบ ั ฟังก์ชนั   หากฟังก์ชน my_func มีตนแบบของฟังก์ชนดังนี ั ้ ั void my_func(int x);  และใน main ได้มีการประกาศตัวแปรอาร์เรย์ชือว่า num int num[10];  การส่ งอีลีเมนต์ที 0 ของอาร์ เรย์ num ไปเป็ นอาร์ กิวเมนต์ของฟังก์ชน my_func ั สามารถเขียนได้ดงนี ั my_func(num[0]);
  • 17. ตัวอย่างที 1 : การส่ งค่าแต่ละอีลเี มนต์ใน อาร์เรย์ให้กบฟังก์ชน ั ั  #include <stdio.h> 2 : Positive void check_val(int x); int main() { int a[3] = {2,-1,5}; check_val(a[0]); return 0; } void check_val(int x) { if(x >= 0) printf("%d : Positiven",x); else printf("%d : Negativen",x) ; }
  • 18. ตัวอย่างที 2: การส่ งค่าแต่ละอีลเี มนต์ใน อาร์เรย์ให้กบฟังก์ชน ั ั #include <stdio.h>  void check_val(int x); 2 : Positive int main() -1 : Negative { 5 : Positive int i,a[3] = {2,-1,5}; for(i=0;i<3;i++) check_val(a[i]); return 0; } void check_val(int x) { if(x >= 0) printf("%d : Positiven",x); else printf("%d : Negativen",x); }
  • 19. ตัวอย่างที 3 : การส่ งค่าแต่ละอีลเี มนต์ใน อาร์เรย์ให้กบฟังก์ชน ั ั #include <stdio.h>  void showVal(int val); /* function prototype */ void main() { int nums[5] = {2, 18, 1, 27, 16}; showVal(nums[0]); } Value is 2 void showVal(int val) /* show a value */ { printf("Value is %dn", val); }
  • 20. การส่ งอาร์เรย์ทุกอีลีเมนต์ของอาร์เรย์ ให้กบฟังก์ชน ั ั   การส่ งอาร์เรย์ในกรณี นี ใช้แค่ชือตัวแปรอาร์ เรย์เท่านัน เช่น หากใน main มีการ ประกาศอาร์เรย์ดงนี ั int num[10];  และฟังก์ชน print_arr มีตนแบบฟังก์ชนดังนี ั ้ ั void print_arr(int a[10]);  การส่ งอาร์เรย์ num ทุกอีลีเมนต์ไปให้ฟังก์ชน print_arr สามารถเขียนได้ดงนี ั ั print_arr(num);
  • 21. ตัวอย่างที 1: การส่ งอาร์เรย์ทุกอีลีเมนต์ ให้กบฟังก์ชน ั ั #include <stdio.h>  5 2 -1 8 void print_arr(int a[4]); int main() { int num[4] = {5,2,-1,8}; print_arr(num); return 0; } void print_arr(int a[4]) { int i; for(i =0;i<4;i++) printf("%d ", a[i]); }
  • 22. ตัวอย่างที 2 : การส่ งอาร์เรย์ทุกอีลีเมนต์ ให้กบฟังก์ชน ั ั  ไฟล์ arrayex9.c #include <stdio.h>  void find_max(int vals[5]); /* function prototype */ void main() { int nums[5] = {2, 18, 1, 27, 16}; find_max(nums); } void find_max(int vals[5]) /* find the maximum value */ { int i, max = vals[0]; The maximum value is 27 for ( i = 1; i < 5; ++i) if (max < vals[i]) max = vals[i]; printf("The maximum value is %dn", max); }
  • 23. อาร์เรย์ของออบเจ็กต์  อาร์เรย์สามารถเก็บ reference ของ Object ได้ โดยกําหนดให้ อาเรย์ เป็ น Class นัน ๆ ในตอนประกาศอาเรย์ มีรปแบบดังนี ู className [] arrayName = new className[size]; เช่น Student [] studentList = new Student[10];
  • 24. Student [] studentList = new Student[3]; studentList[0] = new Student();  studentList[1] = new Student(); studentList[2] = new Student(); studentList Student Object studentList[0] Student studentList[1] Object studentList[2] Student Object
  • 25. อาร์เรย์แบบ 2 มิติ  โดยสรุ ป  สําหรับอาร์ เรย์สองมิติ เมืออ้างชืออาร์เรย์ จะหมายถึงตําแหน่งเริ มต้นของอาร์ เรย์ ทังหมด (อาร์เรย์ 2 มิติ)  เมืออ้างชืออาร์เรย์พร้อมสมาชิกหนึ งอันดับ จะหมายถึงตําแหน่งเริ มต้นของอาร์ เรย์ยอยภายใน ่ (อาร์เรย์ 1 มิติ)  เมืออ้างชืออาร์เรย์พร้อมค่าสองอันดับ จะหมายถึง ข้อมูลภายในอาร์ เรย์ อาเรย์ 2 มิติ X[0][0] X[0][1] X[0][2] X[0][3] X[0][4] X[1][0] X[1][1] X[1][2] X[1][3] X[1][4]
  • 26. การประกาศตัวแปรอาร์ เรย์ 2 มิติ int val[3][4];  double prices[10][5]; char code[6][4]; code[0][1] code[0][2] code[0][0] code[0][3] code[1][0] code[1][1] . . . code[3] . . code[5][0] code[5][3]
  • 27. ตัวอย่ างการเข้ าถึงตัวแปรอาร์ เรย์ 2 มิติ  num = val[2][3]; val[0][0] = 62; new_nu = 4 * ( val[1][0] – 5); sum_row0 = val[0][0] + val[0][1] + val[0][2] + val[0][3];
  • 28. การใช้คาสัง for ในการเข้าถึงอาร์เรย์ 2 ํ มิติ   ใช้ลูป for 2 ชัน โดยลูปชันนอกวนรอบตามจํานวนแถว ส่ วนลูปชันในวนรอบตาม จํานวนหลัก  ต้องมีตวนับ 2 ตัว คือ ตัวนับแถวและตัวนับหลัก ั  ตัวอย่างเช่น 0 1 2 int i,j,x[2][3]; 0 0 1 2 for(i=0;i<2;i++) 1 1 2 3 for(j=0;j<3;j++) x[i][j] = i+j;
  • 29. ตัวอย่างที 1 : การแสดงค่าของอาร์เรย์ 2 มิติ #include<stdio.h> int main(void)  { int i, j, val[3][4] = {8,16,9,52,3,15,27,6,14,25,2,10}; printf("n Display all elements of array"); printf("n%2d %2d %2d %2d", val[0][0],val[0][1],val[0][2],val[0][3]); printf("n%2d %2d %2d %2d", val[1][0],val[1][1],val[1][2],val[1][3]); printf("n%2d %2d %2d %2dn",val[2][0],val[2][1],val[2][2],val[2][3]); for ( i = 0; i < 3; ++i) { printf("n"); /* start a new line for each row */ for ( j = 0; j < 4; ++j) Display all elements of array printf("%2d ", val[i][j]); 8 16 9 52 } 3 15 27 6 return 0; 14 25 2 10 } 8 16 9 52 3 15 27 6 14 25 2 10
  • 30. ตัวอย่างที 2 : การรับและแสดงค่าของ อาร์เรย์ 2 มิติ #include <stdio.h>  int main() { int i,j,a[2][3]; for(i=0;i<2;i++) { for(j=0;j<3;j++) { printf("Enter a[%d][%d] : ",i,j); scanf("%d", &a[i][j]); } Enter a[0][0]: 10 } Enter a[0][1]: 20 for(i=0;i<2;i++) { Enter a[0][2]: 30 for(j=0;j<3;j++) Enter a[1][0]: 40 printf("%d",a[i][j]); Enter a[1][1]: 50 printf("n"); Enter a[1][2]: 60 } 10 20 30 return 0; 40 50 60 }
  • 31. การให้ค่าเริ มต้น (Array Initialization)   เราจะใช้กลุ่มค่าคงทีทีมีสมาชิกเป็ นกลุ่มค่าคงทีย่อย ซึ งเป็ นชนิ ดเดียว กันและมีขนาดเท่ากัน รวมถึงสอดคล้องกับชนิดของอาร์ เรย์ดวย ้  โดยใช้เครื องหมาย {} หรื อ , ในการแบ่งแยกแต่ละแถว
  • 32. ตัวอย่ างการให้ ค่าเริมต้ น (Array Initialization) int val[3][4] ={ { 8,16, 9, 52 }, {3,15, 27, 6}, {14, 25, 2, 10} }; int val[3][4] = { 8, 16, 9, 52, 3, 15, 27, 6, 14, 25, 2, 10 };
  • 33. ะกําหนดจํานวนแถวโดยนับจากทีกําหนด  หากไม่มีการกําหนดจํานวนแถว คอมไพเลอร์จ ในค่าเริ มต้น แต่จะต้องมีการกําหนดจํานวนหลักเสมอ เช่น int a[][2] = {{5,8},{9},{-1}}; 0 1 0 5 8 1 9 0 2 -1 0
  • 34.  ในการกําหนดค่าเริ มต้นของอาร์เรย์ 2 มิติ สามารถละเครื องหมายปี กกาทีใช้แบ่งแถวได้ โดยใช้จานวนหลักในการจัดว่าอีลีเมนต์ใดอยูแถวใด ํ ่  6.9, 7.2 }; เช่น float x[2][3] = { 2.5, 1.25, 8.6,4.1, 0 1 2 0 2.5 1.25 8.6 1 4.1 6.9 7.2
  • 35. Class ArrayList  ในภาษา Java มีกลุ่มคลาสทีเรียกว่า คอลเล็กชัน (Collection) ซึงออบเจ็กต์ จากคลาสนีสามารถใช้สะสมออบเจ็กต์ต่าง ๆ ไว้ได้ เช่น Class ArrayList ดีกว่า Array ทีสามารถเพิมสมาชิกได้ โดยไม่ตองประกาศไว้ล่วงหน้า ้ การใช้ Class ArrayList จะต้อง import java.util.ArrayList ตัวอย่างการสร้างออบเจ็กต์ จาก Class ArrayList ArrayList nameList = new ArrayList();
  • 36. Method ทีสําคัญของ ArrayList   add(int index,Object obj) ใช้ใส่ออบเจ็กต์ลงในอาร์เรย์ทตําแหน่ ง index ี  remove(int index) นําออบเจ็กต์ตําแหน่ง index ออกจากอาร์เรย์  get(int index) คืนค่าออบเจ็กต์ในตําแหน่ง index  indexof(Object obj) คืนค่า index ของออบเจ็กต์ทระบุ ี  size สําหรับหาขนาดของ ArrayList
  • 37. ตัวอย่างโปรแกรม import java.util.ArrayList; //เรียกใช้ คลาส ArrayList public class Beatles { public static void main(String[] args)  { ArrayList band = new ArrayList(); //สร้ างออบเจ็กต์เป็ นอาร์เรย์ชือ band band.add("Pom"); //ใส่คาว่า Pom ลงใน band ํ band.add("Pet"); //ใส่คาว่า Pet ลงใน band ํ band.add("Jo"); //ใส่คาว่า Jo ลงใน band ํ band.add("Goft"); //ใส่คาว่า Goft ลงใน band ํ System.out.println(band); //แสดงข้ อมูลใน band ออกมาทังหมด int location = band.indexOf("Pet"); //หาตําแหน่งของ Pet band.remove(location); //ลบคําว่า Pete ออกไป System.out.println(band); //แสดงข้ อมูลใน band ทังหมด System.out.println("At index 1: "+band.get(1)); //อ่าน ข้ อมูลตําแหน่งทีสอง band.add(2,"Rose"); //เพิม Rose ลงไปในตําแหน่งทีสาม System.out.println(band); //แสดงค่าใน band ทังหมด System.out.println("Size of the band: "+band.size()); //แสดงขนาดของอาร์เรย์ } }
  • 38. String   String คือขอความ หรือ สายของอักขระ ในภาษา C++ ไมมีตัว แปร ประเภท String แตจะมีตัวแปรประเภท char ใหใชแทน ซึ่งตัว แปร ประเภทchar จะสามารถเก็บอักขระได 1 อักขระ เทานั้นถาหาก เราอยากใหตัวแปร char สามารถเก็บขอความไดเราก็สามารถ ทําให ตัวแปร char เปน array ได char Name[10];
  • 39. ตัวอยางเชน char Name[10]; ความหมายวา   ตัวแปร ชื่อ Name เปนตัวแปรประเภท char สามารถเก็บอักขระได 9 ตัวอักษรสาเหตุที่เก็บ ได 9 ตัวอักษรก็เพราะวา ในกรณีที่เราใชตัวแปร char เปน array เพื่อเก็บขอความ Compiler จะเหลือเนื้อที่ตําแหนงสุดทายไวเก็บอักขระ นัล เพื่อใหรูวาเปนการจบ String เพราะฉะนั้นรูปแบบการประกาศตัวแปร char ที่เปน Stringจึงเปนแบบนี้  char ชื่อตัวแปร[จํานวนอักษร+1]; ถาเราตองการประกาศตัวแปร char ที่เปน String ไวเก็บขอมูลชื่อที่มีไดมากสุด 30 ตัวอักษรก็ให ประกาศดังนี้ char Name[31]; หรือถาเรา จะประกาศตัวแปร char ที่เปน String ไวเก็บขอมูลชื่อเดือนมีไดมากสุด 20 ตัวอักษร ก็ใหประกาศดังนี้ char Month[21];
  • 40. การเปรียบเทียบ String ใชเครื่องหมาย = = เปนการเปรียบเทียบวา String 2 ตัวเปนเดียวกันหรือไม โดยจะ Object เปรียบเทียบคาอางอิงหรือที่อยูในหนวยความจําของตัวแปรทั้งสอง ไมไดเปนการ เปรียบเทียบถึงขอมูลที่ String ทั้ง 2 ตัววาเก็บขอมูลเดียวกันหรือไม รูปแบบคําสั่ง ตัวอยางการใชงาน String1 == String2; String datastring1 = “Motorcycle”; String datastring2 = datastring1; ............................................. ............................................. if(datastring1 == datastring2) System.out.println(“เปน Object เดียวกัน”); else System.out.println(“ไมไดเปน Object เดียวกัน”);
  • 41. equals() method เปนการเปรียบเทียบคาใน String Object ทั้ง 2 ตัวเปนคาเดียวกันหรือไม โดย ที่จะใหคาเปนจริง (True) ก็ตอเมื่อตัวอักษรทุกตัวใน String ทั้ง 2 คาจะตอง เหมือนกันหมด โดยสนใจตัวอักษรพิมพเล็กและพิมพใหญดวย หากตางกันก็จะ ใหคาเปนเท็จ (False)  รูปแบบคําสั่ง ตัวอยางการใชงาน String1.equals(String2); String datastring1 = “Motorcycle”; String datastring2 = “Motorcycle”; หากไมสนวาตัวอักษรที่อยูภายใน String .................................................... จะเปนตัวเล็กหรือตัวใหญ ถาตองการ ตรวจสอบเพียงการเหมือนทางรูปรางก็ใช ................................................... method equalsIgnoreCase() if (datastring1.equals(datastring2)) System.out.println(“มีคาเทากัน”); else System.out.println(“มีคาไมเทากัน”);
  • 42. compareTo method การเปรียบเทียบความไมเทากันของ String โดยจะใหคาที่ไดจากการ เปรียบเทียบแบงเปน 3 คาคือ  - เปนลบ (-) ถาคาแรกนอยกวาคาที่สอง ตัวอยางการใชงาน - เปนบวก (+) ถาคาแรกมากกวาคาที่สอง ถากําหนดให - เปนศูนย (0) ถาคาเทากัน datastring1 เปน “abc”; datastring2 เปน “abf”; รูปแบบคําสั่ง String1.compareTo(String2); เขียนคําสั่งดังนี้ datastring1.compareTo(datastring2); ผลลัพธที่ไดจะออกมาเปน -3 หมายถึง ตําแหนงที่ 2 ของ object แรกมีคานอย กวาตําแหนงที่ 2 ของ object ที่ 2 (c<f)
  • 43. คลาส StringBuffer  คลาส StringBuffer จะมีลักษณะคล้ ายกับคลาส String เพียงแต่เป็ นตัวแปร  สตริงทีมีการแก้ ไขค่าแบบถาวร คอนสตรักเตอร์ของคลาส StringBuffer ทีน่าสนใจ มีดังต่อไปนี  StringBuffer(String s) เก็บสตริง s ไว้ ในตัวแปร StringBuffer  StringBuffer() เก็บข้ อความว่างเปล่าไว้ ในตัวแปร StringBuffer และมีขนาด 16 byte เหตุทตัวแปร StringBuffer มีขนาดปกติ 16 และจะเพิมขนาดเมือเก็บ ี ข้ อความลงไป เป็ นเพราะถ้ ามีการเปลียนข้ อความทีเก็บภายหลัง ข้ อความใหม่อาจมีขนาดไม่ เท่าเดิม ดังนันจาวาจึงว่างไว้ อก 16 ทีว่างเพือจะได้ ไม่ต้องกันทีในหน่วยความจําเพิมเติมอีก ี ในกรณีทข้ อความใหม่มีขนาดใหญ่กว่าเดิมไม่เกิน 16 เพราะการกันทีในหน่วยความจํา ี เพิมเติมภายหลังเป็ นเรืองยุ่งยากและอาจทําให้ ประสิทธิภาพในการเข้ าถึงลดลง  StringBuffer(int length) เก็บข้ อความว่างเปล่าไว้ ในตัวแปร StringBuffer และมีขนาดเท่ากับ length
  • 44.  เมธอดที่นาสนใจสวนหนึ่งของคลาส StringBuffer StringBuffer append(String s)  StringBuffer append(char c) StringBuffer append(chra[] c, int offset, int len) StringBuffer append(booleab b) StringBuffer append(int i) StringBuffer append(long l) StringBuffer append(float f) StringBuffer append(double d)
  • 45.  เมธอดนี้เปนโอเวอรโหลดเมธอด ทําหนาที่เพิ่มขอความในวงเล็บเขาไปตอทายขอความที่มี อยูแลวใน StringBuffer ถามีการเปลี่ยนแปลง StringBuffer ผานเมธอดขอความจะถูก เปลี่ยนแบบถาวร  StringBuffer insert(int offset, String s) StringBuffer insert(int offset, char c) StringBuffer insert(int offset, char[] c) StringBuffer insert(int offset, boolean b) StringBuffer insert(int offset, int i) StringBuffer insert(int offset, long l) StringBuffer insert(int offset, float f) StringBuffer insert(int offset, double b)
  • 46.  เมธอดนี้เปนโอเวอรโหลดเมธอด ทําหนาที่แทรกขอความในวงเล็บเขาไปในตําแหนงที่ เทากับ offset าหนาที่ลบตัวอักษรในตําแหนง index ออก StringBuffer deleteCharAt(int index) เมธอดนี้จะทํ StringBuffer delete(int start, int end) เมธอดนี้จะทําหนาที่ลบตัวอักษรจากตําแหนง start ถึง end ออก StringBuffer revers()เมธอดนี้จะทําหนาที่กลับตัวตัวอักษรจากหลังมาหนา char charAt(int index) ลงคาตัวอักษรในตําแหนง index กลับ char setCharAt(int index, char ch) เปลี่ยนตัวอักษรในตําแหนง index ดวย chtoString()สงคา ของขอความออกมาในรูปตัวแปรสตริง
  • 47. //TestString09.java public class TestString09 { public static void main(String[] argd) {  StringBuffer s1 = new StringBuffer("banana split") ; System.out.println("s1 = "+s1); s1.delete(4,12) ; //bana System.out.println("s1 = "+s1); s1.append(42) ; // bana42 System.out.println("s1 = "+s1); s1.insert(4, "na") ; //banana42 System.out.println("s1 = "+s1); s1.setCharAt(0,'s') ; //sanana42 System.out.println("s1 = "+s1); s1.reverse() ; //24ananas System.out.println("s1 = "+s1); } }
  • 48. ขอแตกตางระหวาง StringBuffer และ String   ข้ อทีแตกต่างระหว่าง StringBuffer และ String คือขนาดของ StringBuffer ไม่จาเป็ นต้ องเท่ากับขนาดของข้ อความและสามารถเพิมหรือลด ํ ขนาดได้ เราสามารถตรวจสอบขนาดของ StringBuffer ได้ โดยใช้ เมธอด int capacity() ซึงจะคืนค่าปัจจุบันของ StringBuffer ดังตัวอย่างต่อไปนี
  • 49. //TestString08.java public class TestString08 {  public static void main(String[] args) { StringBuffer s1 = new StringBuffer() ; // (1) System.out.println(s1) ; System.out.println(s1.length()) ; System.out.println(s1.capacity()) ; StringBuffer s2 = new StringBuffer("Hello") ; // (2) System.out.println(s2) ; System.out.println(s2.length()) ; System.out.println(s2.capacity()) ; //StringBuffer s3 = "Hello"; // (3) Error } }
  • 50.  จากโค้ ดข้ างบนในบรรทัดที (1) เราสร้ างตัวแปร s1 โดยไม่เก็บค่าอะไรเลย ผลทีได้ คือ ขนาดของข้ อความเท่ากับ 0 แต่ขนาดของตัวมันเองจริงเป็ น 16 ซึงเป็ นค่าปกติ ใน  บรรทัดที (2) เราสร้ างตัวแปร s2 โดยให้ เก็บค่า Hello ผลทีได้ คือขนาดข้ อความ เป็ น 5 แต่ขนาดของตัวมันเองเท่ากับค่าปกติบวกด้ วยความยาวของข้ อความทีสังให้ มัน เก็บซึงเท่ากับ 21 นันเอง ในบรรทัดที (3) เราพยายามสร้ างตัวแปร s3 ซึงเป็ นวิธการ ี ทีใช้ ไม่ได้ กบตัวแปร StringBuffer ั  เหตุทตัวแปร StringBuffer มีขนาดเท่ากับ 16 และจะเพิมขนาดเมือเก็บข้ อความ ี ลงไป เป็ นเพราะถ้ ามีการเปลียนแปลงข้ อความทีเก็บภายหลัง ข้ อความหใม่อาจมีขนาดไม่ เท่าเดิม จาวาจึงเผือทีว่างไว้ อก 16 ทีว่าง เพือจะได้ ไม่ต้องกันพืนทีในหน่วยความจํา ี เพิมเติมอีกในกรณีทข้ อความใหม่มีขนาดใหญ่ กว่าเดิมไม่เกิน 16 เพราะการกันทีใน ี หน่วยความจําเพิมเติมภายหลังทําได้ ยาก เนืองจากพืนทีในหน่วยความจําทีเพิมขึนอาจไม่ อยู่ติดกับพืนทีเดิมทําให้ ประสิทธิภาพในการเข้ าถึงลดลง
  • 51. แบบฝึ กหัด 1. ค่าคงทีของสตริงจะอยู่ภายใต้ เครืองหมายใด ก) ‘_’  ข) “_” ค) <_> ง) {_} 2. ในการประกาศตัวแปรสตริงนัน จะต้ องคํานึงถึงสิงใด ก) ความยาวของข้ อมูล ข) จํานวนตัวอักษร ค) ลักษณะของข้ อมูล ง) ประเภทของข้ อมูล
  • 52. 3. get(int index) คือmethodอะไรในArraylist ก) ใช้ ใส่ออบเจ็กต์ลงในอาร์เรย์ทตําแหน่ง index ี ข) คืนค่า index ของออบเจ็กต์ทระบุ ี ค) คืนค่าออบเจ็กต์ในตําแหน่ง index ง)  นําออบเจ็กต์ตาแหน่ง index ออกจากอาร์เรย์ ํ 4. ฟังก์ชันในการ printfซึงในภาษา C นัน สามารถทีจะกําหนดให้ ข้อมูลของสตริง เมือเวลาจะ พิมพ์แสดงนัน จะให้ อยู่ติดขอบซ้ ายหรือขอบขวาก็ได้ โดยใช้ เครืองหมายในข้ อใด ก) – ข) # ค) * ง) / 5. การใช้ ฟังก์ชันต่าง ๆ ทีเกียวกับสตริงนันจะต้ องนําเข้ าไลบรารีไฟล์ใดเสมอ ก) strintg.g ข) string.th ค) strintg.h ง) strint.gh
  • 53. 6. ข้ อมูลในลักษณะใดทีถูกต้ องทีสุดต่อไปนีเป็ นข้ อมูลทีเรียกว่า อาเรย์ ก) เป็ นข้ อมูลเลขจํานวนจริง ข) เป็ นข้ อมูลเลขจํานวนเต็ม ค) เป็ นข้ อมูลชนิดข้ อความ ง) เป็ นข้ อมูลชนิดเดียวกันหลายข้ อมูลทีใช้ ชือตัวแปรเดียวกัน จากอาเรย์ X]3][4[ = {1, 2, 3, 4 5, 6, 7, 8  9, 10, 11, 12} ตอบคําถามข้ อ 40 – 41 7. จากอาร์เรย์ทกําหนดให้ ค่าของข้ อมูลอาเรย์ X[1][3] มีค่าเท่ากับเท่าใด ี ก) 3 ข) 4 ค) 8 ง) 11 8. จากอาร์เรย์ทกําหนดให้ ค่าของข้ อมูลอาเรย์ X[0][1] + X[2][3] มีค่าเท่ากับเท่าใด ี ก) 4 ข) 6 ค) 10 ง) 14
  • 54. 9. strlenเป็ นฟั งก์ชันเกียวกับอะไร ก) การคัดลอกสตริง ข) ความยาวของสตริง ค) การต่อสตริง  ง) การหาขนาดของสตริง 10. คําสัง READ, READLN, WRITE, WRITELN ซึงเป็ นคําสังรับ ข้ อมูล และแสดงผลของภาษาใด ก) ภาษาอังกฤษ ข) ภาษาไทย ค) ภาษาซี ง) ภาษาปาสคาล
  • 55. เฉลย 1. ก  2. ก 3. ข 4. ก 5. ค 6. ง 7. ค 8. ง 9. ข 10. ง
  • 56. รายชือสมาชิก  1. น.ส.กฤตวรรณ แต้ มประเสริฐ เลขที 13 2. น.ส.ณัฐชยา พลูสวัสดิ เลขที 14 3. น.ส.นพวรรณ ปลาบู่ทอง เลขที 19 4. น.ส.กาญจนาพร พงศ์อมพรทิพย์ ั เลขที 21 5. น.ส.นภัสกร นาควิโรจน์ เลขที 22 6. น.ส. ลลิตา บันลือศรีสกุล เลขที 23 ชันมัธยมศึกษาปี ที 6/1