51
กลุ่มที4 ข้อมูลชนิดอาร์เรย์และสตริง

งานนำเสนอ1

Embed Size (px)

Citation preview

Page 1: งานนำเสนอ1

ก ลม ท 4

ขอมลชนดอารเรยและสตรง

อา ร เรย (ARRAY)

อารเรย (Array) เปนตวแปรชดใหส าหรบเกบขอมลทมความสมพนธกน โดยจะเกบไวในชอ

เดยวกนสมาชกแตละตวของ Array จะเรยกวา Element หรอ Cell ตวเลขทใชระบต าแหนง

สมาชกของ Array เรยกวา Index หรอ Subscript

ตวอยาง 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]

ตวแปรอา ร เรยหลายตว

อารเรยหลายมต (Multi-dimensional array) คอ อารเรยทมสมาชกเปนขอมลอารเรย นนคอ ในหนวยขอมลแตละหนวยของ

อารเรย จะเปนอารเรยยอยๆ ซงอาจจะก าหนดซอนลงไปไดหลายชน

การก าหนดอารเรยหลายมต จะกระท าในรป

ชนดตวแปร ชอตวแปร[จ านวนสมาชก][จ านวนสมาชก]hellip ตวแปรอารเรยหลายตว

การประกาศอารเรยหลายตวท าไดดงน

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 ไบต

ตวอย า งอา ร เ รยหลาย ม ต

จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป

การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป

การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต

สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม

รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip

เชน

การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3

int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1

ตวอย า งโปรแกรม

การ เ ข าถ งต วแปรอา ร เร ย

เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร

ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต

โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป

จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1

เชน int v[5]

ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร

ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา

subscript (หรอดชน index)

คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก

ได ( positive integer gt=0 )

ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ

อารเรย)

ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย

เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ

ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ

ขอมลทจะใชในอารเรย

int xa[5]

for (x=0 xlt5 x++)

printf(ldquoEnter value for a[d]rdquox)

scanf(ldquodrdquoampa[x])

printf(ldquoShow all valuesnrdquo)

for (x=0 xlt5 x++)

printf(ldquoa[d] = drdquo x a[x])

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 2: งานนำเสนอ1

อา ร เรย (ARRAY)

อารเรย (Array) เปนตวแปรชดใหส าหรบเกบขอมลทมความสมพนธกน โดยจะเกบไวในชอ

เดยวกนสมาชกแตละตวของ Array จะเรยกวา Element หรอ Cell ตวเลขทใชระบต าแหนง

สมาชกของ Array เรยกวา Index หรอ Subscript

ตวอยาง 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]

ตวแปรอา ร เรยหลายตว

อารเรยหลายมต (Multi-dimensional array) คอ อารเรยทมสมาชกเปนขอมลอารเรย นนคอ ในหนวยขอมลแตละหนวยของ

อารเรย จะเปนอารเรยยอยๆ ซงอาจจะก าหนดซอนลงไปไดหลายชน

การก าหนดอารเรยหลายมต จะกระท าในรป

ชนดตวแปร ชอตวแปร[จ านวนสมาชก][จ านวนสมาชก]hellip ตวแปรอารเรยหลายตว

การประกาศอารเรยหลายตวท าไดดงน

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 ไบต

ตวอย า งอา ร เ รยหลาย ม ต

จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป

การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป

การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต

สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม

รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip

เชน

การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3

int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1

ตวอย า งโปรแกรม

การ เ ข าถ งต วแปรอา ร เร ย

เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร

ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต

โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป

จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1

เชน int v[5]

ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร

ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา

subscript (หรอดชน index)

คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก

ได ( positive integer gt=0 )

ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ

อารเรย)

ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย

เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ

ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ

ขอมลทจะใชในอารเรย

int xa[5]

for (x=0 xlt5 x++)

printf(ldquoEnter value for a[d]rdquox)

scanf(ldquodrdquoampa[x])

printf(ldquoShow all valuesnrdquo)

for (x=0 xlt5 x++)

printf(ldquoa[d] = drdquo x a[x])

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 3: งานนำเสนอ1

ตวแปรอา ร เรยแบบ 1 ม ต

อารเรยหนงมต มโครงสรางเทยบเทาเมตรกซขนาด nx1 การประกาศตวแปรอารเรย จะใช

เครองหมาย [ ] ลอมคาตวเลขจ านวนเตม เพอบอกจ านวนหนวยขอมลทตองการไดในรป

ชนดของตวแปร ชอตวแปร[จ านวนสมาชกทตองการ]

data_type variable_name [ number-of-elements ]

เชน int a[5]

double x y[10] z[3]

ตวแปรอา ร เรยหลายตว

อารเรยหลายมต (Multi-dimensional array) คอ อารเรยทมสมาชกเปนขอมลอารเรย นนคอ ในหนวยขอมลแตละหนวยของ

อารเรย จะเปนอารเรยยอยๆ ซงอาจจะก าหนดซอนลงไปไดหลายชน

การก าหนดอารเรยหลายมต จะกระท าในรป

ชนดตวแปร ชอตวแปร[จ านวนสมาชก][จ านวนสมาชก]hellip ตวแปรอารเรยหลายตว

การประกาศอารเรยหลายตวท าไดดงน

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 ไบต

ตวอย า งอา ร เ รยหลาย ม ต

จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป

การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป

การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต

สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม

รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip

เชน

การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3

int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1

ตวอย า งโปรแกรม

การ เ ข าถ งต วแปรอา ร เร ย

เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร

ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต

โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป

จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1

เชน int v[5]

ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร

ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา

subscript (หรอดชน index)

คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก

ได ( positive integer gt=0 )

ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ

อารเรย)

ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย

เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ

ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ

ขอมลทจะใชในอารเรย

int xa[5]

for (x=0 xlt5 x++)

printf(ldquoEnter value for a[d]rdquox)

scanf(ldquodrdquoampa[x])

printf(ldquoShow all valuesnrdquo)

for (x=0 xlt5 x++)

printf(ldquoa[d] = drdquo x a[x])

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 4: งานนำเสนอ1

ตวแปรอา ร เรยหลายตว

อารเรยหลายมต (Multi-dimensional array) คอ อารเรยทมสมาชกเปนขอมลอารเรย นนคอ ในหนวยขอมลแตละหนวยของ

อารเรย จะเปนอารเรยยอยๆ ซงอาจจะก าหนดซอนลงไปไดหลายชน

การก าหนดอารเรยหลายมต จะกระท าในรป

ชนดตวแปร ชอตวแปร[จ านวนสมาชก][จ านวนสมาชก]hellip ตวแปรอารเรยหลายตว

การประกาศอารเรยหลายตวท าไดดงน

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 ไบต

ตวอย า งอา ร เ รยหลาย ม ต

จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป

การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป

การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต

สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม

รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip

เชน

การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3

int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1

ตวอย า งโปรแกรม

การ เ ข าถ งต วแปรอา ร เร ย

เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร

ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต

โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป

จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1

เชน int v[5]

ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร

ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา

subscript (หรอดชน index)

คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก

ได ( positive integer gt=0 )

ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ

อารเรย)

ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย

เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ

ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ

ขอมลทจะใชในอารเรย

int xa[5]

for (x=0 xlt5 x++)

printf(ldquoEnter value for a[d]rdquox)

scanf(ldquodrdquoampa[x])

printf(ldquoShow all valuesnrdquo)

for (x=0 xlt5 x++)

printf(ldquoa[d] = drdquo x a[x])

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 5: งานนำเสนอ1

ตวอย า งอา ร เ รยหลาย ม ต

เชน อารเรยทมสมาชกอย 3 ตว และสมาชกแตละตวกเปนอารเรยเกบขอมลชนด int มจ านวน

สมาชก 2 ตว จะก าหนดไดดงน int a[3][2]

ขนาดของอารเรย 3 x 2

จ านวนไบต ทใชในการเกบอารเรยsizeof (a) ค านวณจาก 3 x 2 x sizeof ( int ) =

3x2x4 = 24 ไบต

ตวอย า งอา ร เ รยหลาย ม ต

จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป

การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป

การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต

สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม

รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip

เชน

การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3

int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1

ตวอย า งโปรแกรม

การ เ ข าถ งต วแปรอา ร เร ย

เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร

ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต

โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป

จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1

เชน int v[5]

ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร

ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา

subscript (หรอดชน index)

คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก

ได ( positive integer gt=0 )

ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ

อารเรย)

ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย

เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ

ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ

ขอมลทจะใชในอารเรย

int xa[5]

for (x=0 xlt5 x++)

printf(ldquoEnter value for a[d]rdquox)

scanf(ldquodrdquoampa[x])

printf(ldquoShow all valuesnrdquo)

for (x=0 xlt5 x++)

printf(ldquoa[d] = drdquo x a[x])

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 6: งานนำเสนอ1

ตวอย า งอา ร เ รยหลาย ม ต

จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป

การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป

การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต

สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม

รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip

เชน

การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3

int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1

ตวอย า งโปรแกรม

การ เ ข าถ งต วแปรอา ร เร ย

เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร

ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต

โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป

จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1

เชน int v[5]

ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร

ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา

subscript (หรอดชน index)

คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก

ได ( positive integer gt=0 )

ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ

อารเรย)

ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย

เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ

ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ

ขอมลทจะใชในอารเรย

int xa[5]

for (x=0 xlt5 x++)

printf(ldquoEnter value for a[d]rdquox)

scanf(ldquodrdquoampa[x])

printf(ldquoShow all valuesnrdquo)

for (x=0 xlt5 x++)

printf(ldquoa[d] = drdquo x a[x])

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 7: งานนำเสนอ1

การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต

สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม

รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip

เชน

การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3

int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1

ตวอย า งโปรแกรม

การ เ ข าถ งต วแปรอา ร เร ย

เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร

ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต

โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป

จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1

เชน int v[5]

ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร

ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา

subscript (หรอดชน index)

คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก

ได ( positive integer gt=0 )

ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ

อารเรย)

ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย

เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ

ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ

ขอมลทจะใชในอารเรย

int xa[5]

for (x=0 xlt5 x++)

printf(ldquoEnter value for a[d]rdquox)

scanf(ldquodrdquoampa[x])

printf(ldquoShow all valuesnrdquo)

for (x=0 xlt5 x++)

printf(ldquoa[d] = drdquo x a[x])

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 8: งานนำเสนอ1

ตวอย า งโปรแกรม

การ เ ข าถ งต วแปรอา ร เร ย

เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร

ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต

โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป

จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1

เชน int v[5]

ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร

ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา

subscript (หรอดชน index)

คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก

ได ( positive integer gt=0 )

ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ

อารเรย)

ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย

เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ

ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ

ขอมลทจะใชในอารเรย

int xa[5]

for (x=0 xlt5 x++)

printf(ldquoEnter value for a[d]rdquox)

scanf(ldquodrdquoampa[x])

printf(ldquoShow all valuesnrdquo)

for (x=0 xlt5 x++)

printf(ldquoa[d] = drdquo x a[x])

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 9: งานนำเสนอ1

การ เ ข าถ งต วแปรอา ร เร ย

เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร

ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต

โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป

จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1

เชน int v[5]

ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร

ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา

subscript (หรอดชน index)

คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก

ได ( positive integer gt=0 )

ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ

อารเรย)

ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย

เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ

ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ

ขอมลทจะใชในอารเรย

int xa[5]

for (x=0 xlt5 x++)

printf(ldquoEnter value for a[d]rdquox)

scanf(ldquodrdquoampa[x])

printf(ldquoShow all valuesnrdquo)

for (x=0 xlt5 x++)

printf(ldquoa[d] = drdquo x a[x])

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 10: งานนำเสนอ1

ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร

ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา

subscript (หรอดชน index)

คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก

ได ( positive integer gt=0 )

ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ

อารเรย)

ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย

เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ

ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ

ขอมลทจะใชในอารเรย

int xa[5]

for (x=0 xlt5 x++)

printf(ldquoEnter value for a[d]rdquox)

scanf(ldquodrdquoampa[x])

printf(ldquoShow all valuesnrdquo)

for (x=0 xlt5 x++)

printf(ldquoa[d] = drdquo x a[x])

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 11: งานนำเสนอ1

ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย

เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ

ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ

ขอมลทจะใชในอารเรย

int xa[5]

for (x=0 xlt5 x++)

printf(ldquoEnter value for a[d]rdquox)

scanf(ldquodrdquoampa[x])

printf(ldquoShow all valuesnrdquo)

for (x=0 xlt5 x++)

printf(ldquoa[d] = drdquo x a[x])

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 12: งานนำเสนอ1

ตวอย า งโปรแกรม

int grades[5]

grades[0] = 98

grades[1] = grades[0] ndash 11

grades[2] = 2 (grades[0] ndash 6)

grades[3] = 79

grades[4] = (grades[2]+grades[3]ndash 3)2

total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+

grades[i]

grades[2i]

grades[j-i]

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 13: งานนำเสนอ1

ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน

total = grades[0] + grades[1] + grades[2] +

grades[3] + grades[4]

เปลยนเปน for loop ไดดงน

total = 0

for ( i = 0 i lt= 4 i++)

total += grades[i]

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 14: งานนำเสนอ1

การ สงผ านอา ร เรยไปยง ฟงกชน

สามารถแบงไดเปน 2 ลกษณะ

การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ

Call-by-value

การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-

reference

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 15: งานนำเสนอ1

การ เ ร ยกใชแบบ CALL-BY-VALUE

ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร

ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน

ฟงกชน ไมมผลตอตวแปรทสงคามา

ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)

เชน void triple(int x)

x=x3 printf(ldquox = drdquox) hellip

int x=5 y[2]=1011

triple(x) triple(y[0])

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 16: งานนำเสนอ1

ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE

ใชวธการสงคา แอดเดรส (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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 17: งานนำเสนอ1

ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย

ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด

ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])

ในกรณฟงกชนมการรบคาเขาเปนอารเรย 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 ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 18: งานนำเสนอ1

การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน

หากฟงกชน my_func มตนแบบของฟงกชนดงน

void my_func(int x)

และใน main ไดมการประกาศตวแปรอารเรยชอวา num

int num[10]

การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func

สามารถเขยนไดดงน

my_func(num[0])

ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น

include ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 19: งานนำเสนอ1

ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น

include ltstdiohgt

void check_val(int x)

int main()

int a[3] = 2-15

check_val(a[0])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 20: งานนำเสนอ1

ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void check_val(int x)

int main()

int ia[3] = 2-15

for(i=0ilt3i++)

check_val(a[i])

return 0

void check_val(int x)

if(x gt= 0)

printf(d Positivenx)

else

printf(d Negativenx)

2 Positive

-1 Negative5 Positive

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 21: งานนำเสนอ1

ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน

include ltstdiohgt

void showVal(int val) function prototype

void main()

int nums[5] = 2 18 1 27 16

showVal(nums[0])

void showVal(int val) show a value

printf(Value is dn val)

Value is 2

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 22: งานนำเสนอ1

ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน

การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ

ประกาศอารเรยดงน

int num[10]

และฟงกชน print_arr มตนแบบฟงกชนดงน

void print_arr(int a[10])

การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน

print_arr(num)

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 23: งานนำเสนอ1

ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน

include ltstdiohgt

void print_arr(int a[4])

int main()

int num[4] = 52-18

print_arr(num)

return 0

void print_arr(int a[4])

int i

for(i =0ilt4i++)

printf(d a[i])

5 2 -1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 24: งานนำเสนอ1

อา ร เรยของออบเจกต

อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย

เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน

เชน

Student [] studentList = new Student[10]

className [] arrayName = new className[size]

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 25: งานนำเสนอ1

Student [] studentList = new Student[3]

studentList[0] = new Student()

studentList[1] = new Student()

studentList[2] = new Student()

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 26: งานนำเสนอ1

อา ร เรยแบบ 2 ม ต

โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย

ทงหมด (อารเรย 2 มต)

เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน

(อารเรย 1 มต)

เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 27: งานนำเสนอ1

อา เรย 2 ม ต

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 28: งานนำเสนอ1

การประกาศตวแปรอา ร เรย 2 ม ต

int val[3][4]

double prices[10][5]

char code[6][4]

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 29: งานนำเสนอ1

ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต

ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก

ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก

ตวอยางเชน

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 30: งานนำเสนอ1

ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 31: งานนำเสนอ1

ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )

เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน

และมขนาดเทากน

รวมถงสอดคลองกบชนดของอารเรยดวย

โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 32: งานนำเสนอ1

ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )

int val[3][4] = 816 9 52

315 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] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 33: งานนำเสนอ1

หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย

นบจากทก าหนด

ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน

int a[][2] = 589-1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 34: งานนำเสนอ1

ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได

โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 35: งานนำเสนอ1

CLASS ARRAYLIST

ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน

สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม

สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import

javautilArrayList

ตวอยางการสรางออบเจกต จาก Class ArrayList

ArrayList nameList = new ArrayList()

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 36: งานนำเสนอ1

M ETHOD ท ส า คญ ข อ ง ARRAYL IST

add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index

remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย

get(int index) คนคาออบเจกตในต าแหนง index

indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ

size ส าหรบหาขนาดของ ArrayList

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 37: งานนำเสนอ1

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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 38: งานนำเสนอ1

ตวอย า ง เ ชน 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 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 39: งานนำเสนอ1

การ เป รยบ เ ทยบ STRING

ใชเครองหมาย = =

เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ

ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ

ขอมลเดยวกนหรอไม

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 40: งานนำเสนอ1

EQUALS() METHOD

เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน

จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร

พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 41: งานนำเสนอ1

COMPARETO METHOD

การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3

คาคอ

- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง

- เปนบวก (+) ถาคาแรกมากกวาคาทสอง

- เปนศนย (0) ถาคาเทากน

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 42: งานนำเสนอ1

คลาส STRINGBUFFER

คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร

คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน

StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer

StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร

StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง

ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน

กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ

ท าใหประสทธภาพในการเขาถงลดลง

StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 43: งานนำเสนอ1

เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 44: งานนำเสนอ1

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร

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)

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 45: งานนำเสนอ1

เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T

StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index

ออก

StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง

end ออก

StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา

char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ

char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()

สงคา

ของขอความออกมาในรปตวแปรสตรง

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 46: งานนำเสนอ1

ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING

ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ

StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม

หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย

ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง

ตวอยางตอไป

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 47: งานนำเสนอ1

จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร

เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16

ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello

ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย

ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา

พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร

StringBuffer

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 48: งานนำเสนอ1

เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ

เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ

ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม

ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ

กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก

เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให

ประสทธภาพในการเขาถงลดลง

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62

Page 49: งานนำเสนอ1

สมาชก

1 นาย พรวชญ สวรรณรฐ เลขท 3

2 นาย อมรณฐ ออนนอม เลขท 4

3 นาย เพชร พรหมสทอง เลขท 8

4 นาย ราชสงห ทรงบณทตย เลขท 10

5 นาย องกร ตนประเสรฐ เลขท 11

6 นางสาว ธญญารตน แตนเคราะห เลขท 14

ชนมธยมศกษาปท 62