เอกสารประกอบการเรียน รหสั วิชา 3204-2101 วชิ า การเขียนโปรแกรมภาษาจาวา 1 หน่วยที่ 3 นิพจน์และตัวดำเนินกำรในภำษำจำวำวัตถปุ ระสงค์/ผลกำรเรียนรู้ท่คี ำดหวงั 1. มีความรู้ความเขา้ ใจนิพจน์และตวั ดาเนินการและนาไปใชใ้ นการเขยี นโปรแกรมได้อยา่ งถูกตอ้ ง 2. มีความรูค้ วามเขา้ ใจลาดบั ความสาคญั ในการเขยี นโปรแกรมไดอ้ ยา่ งถูกตอ้ ง 3. มีความรู้ความเขา้ ใจในการแปลงขอ้ มูลชนิดต่างๆไดอ้ ยา่ งเหมาะสมหัวข้อเนือ้ หำ 1. นิพจน์ (Expression) 2. ตวั ดาเนินการ (Operators) 3. ลาดบั ความสาคญั 4. การแปลงค่าชนิดขอ้ มูล (Type Conversion)รำยละเอยี ดเนอื้ หำ1. นิพจน์ (Expression) นิพจน์ในภาษา Java คอื รูปแบบการเขยี นคาสง่ั ระหวา่ งตวั ดาเนินการ (Operator) และตวัถูกกระทา (Operand) เช่น การกาหนดคา่ ใหก้ บั ตวั แปร สามารถเขยี นนิพจน์ไดด้ งั น้ี int x = 2+3 ;เป็นการเขียนนิพจน์ 2+3 ซ่ึงมีเคร่ืองหมาย + เป็นตวั ดาเนินการและตวั ถูกกระทาคอื ตวั เลข 2 และ 3จากผลการคานวณไดผ้ ลลพั ธเ์ ทา่ กบั 5 ซ่ึงถูกกาหนดคา่ ใหก้ บั ตวั แปร x ดงั น้นั นิพจน์จะตอ้ งใชต้ วั ดาเนินการต่างๆเพอื่ คานวณหาผลลพั ธ์ และสรา้ งเงือ่ นไขตา่ งๆในการเขียนโปรแกรม2. ตวั ดำเนินกำร (Operators) ในภาษา Java ตวั ดาเนินการแบง่ ออกเป็น 6 ประเภท คือ 1. ตวั ดาเนินการกาหนดคา่ (Assignation Operator) 2. ตวั ดาเนินการทางคณิตศาสตร์(Arithmetic Operator) 3. ตวั ดาเนินการเปรียบเทยี บความสมั พนั ธ์(Relational Operator) 4. ตวั ดาเนินการเงื่อนไข(Conditional Operator) 5. ตวั ดาเนินการทางตรรกะ(Logical Operator)หลกั สูตรประกาศนียบตั รวชิ าชีพช้นั สูง (ปวส.) พทุ ธศกั ราช 2546 เรียบเรียงโดย.... ครูกาญจนา ขนั ดา
เอกสารประกอบการเรียน รหสั วิชา 3204-2101 วิชา การเขียนโปรแกรมภาษาจาวา 2 6. ตวั ดาเนินการแบบบิต(Bitwise Operator) หมำยเหตุ นิพจน์ที่ใชต้ วั ดาเนินการเปรียบเทียบความสมั พนั ธแ์ ละตวั ดาเนินการทางตรรกะ จะใหผ้ ลลพั ธ์เป็นชนิดขอ้ มูลตรรกะ ส่วนนิพจน์ท่ีใชต้ วั ดาเนินการทางคณิตศาสตร์และตวัดาเนินการแบบบิต จะใหผ้ ลลพั ธเ์ ป็นชนิดขอ้ มูลจานวนเตม็ หรือจานวนทศนิยม 1. ตวั ดำเนินกำรกำหนดค่ำ(Assignation Operator) ตวั ดาเนินการกาหนดคา่ คือเคร่ืองหมายทีใ่ ชใ้ นการกาหนดคา่ ขอ้ มูลในกบั ตวั แปรต่างๆโดยการใชเ้ คร่ืองหมายเทา่ กบั ( = ) ดงั ตวั อยา่ งเช่น int x = 20; เป็ นการกาหนดค่าใหก้ บั ตวั แปร x เก็บขอ้ มูลจานวนเตม็ มีคา่ เทา่ กบั 20 x = 2 + 3 + 4; เป็ นการกาหนดคา่ ใหก้ บั ตวั แปร x เก็บขอ้ มูลจานวนเตม็ มีคา่ เทา่ กบั 9 2. ตัวดำเนินกำรทำงคณติ ศำสตร์(Arithmetic Operator) ใชส้ าหรับการคานวณทางคณิตศาสตร์ประกอบดว้ ยเครื่องหมายทางคณิตศาตร์ ไดแ้ ก่เครื่องหมาย +, -, *, / และ % มีตวั อยา่ งการใชง้ านดงั น้ีเคร่ืองหมำย ควำมหมำย ตัวอย่ำงนพิ จน์ดำเนินกำร+ การบวก หรือแทนคา่ ตวั เลข a + b หรือ +a เช่น 1 + 2 + 3, x + y, 25.5 + 81.2 , บวก +52- การลบ หรือแทนค่าตวั เลข a - b หรือ -a เช่น 50 – 15 - 4, x – 169.45, -34, - ลบ 6.25E2* การคูณ a * b เช่น x * y, 2 * 3/ การหาร a / b เช่น x / y, 2 / 3, 42 / 2.5% เศษจากการหาร a % b เช่น x % y, 20 % 3ตวั ดาเนินการทางคณิตศาสตร์ จะใชไ้ ดเ้ ฉพาะตวั แปรท่ีมีชนิดขอ้ มูลแบบจานวนเตม็และจานวนทศนิยมเทา่ น้นั ดงั ตวั อยา่ งเช่นตวั ดาเนินการเคร่ืองหมาย / จะใหผ้ ลลพั ธเ์ ป็ นชนิดขอ้ มูลจานวนทศนิยม ก็ตอ่ เม่ือตวัถูกกระทาตวั ใดตวั หน่ึงเป็นชนิดขอ้ มูลจานวนทศนิยม ดงั ตวั อยา่ งเช่น 20 / 3.0 จะมีคา่ เทา่ กบั6.66667 ถา้ ตวั ถูกกระทาเป็นจานวนเตม็ ท้งั หมดจะใหผ้ ลลพั ธเ์ ป็นจานวนเตม็ ดงั ตวั อยา่ งเช่น 20 / 3ซ่ึงผลลพั ธม์ ีคา่ เท่ากบั 6ตวั ดาเนินการเครื่องหมาย % จะใหผ้ ลลพั ธเ์ ป็นตวั เลขเศษซ่ึงเกิดจากการหารของตวั เลข 2 จานวน ดงั ตวั อยา่ งเช่นหลกั สูตรประกาศนียบตั รวชิ าชีพช้นั สูง (ปวส.) พทุ ธศกั ราช 2546 เรียบเรียงโดย.... ครูกาญจนา ขนั ดา
เอกสารประกอบการเรียน รหสั วิชา 3204-2101 วิชา การเขียนโปรแกรมภาษาจาวา 3 20 % 3 จะไดเ้ ศษของการหารเทา่ กบั 2 51.5 % 2 จะไดเ้ ศษของการหารเทา่ กบั 1.5 2.1 ตวั ดำเนินกำรแบบย่อ (Shortcut Operator) ตวั ดาเนินการแบบยอ่ คือการเขยี นนิพจน์ทางคณิตศาสตร์ใหอ้ ยใู่ นรูปแบบใหม่ ทาใหเ้ ขียนง่ายและโปรแกรมทางานไดเ้ ร็วข้ึน ซ่ึงสามารถเขยี นตวั ดาเนินการแบบยอ่ ไดน้ ้นั ตอ้ งอยใู่ นรูปแบบของนิพจนด์ งั น้ี เช่น x = x + 2; เขียนเป็นตวั ดาเนินการแบบยอ่ ไดเ้ ป็น x += 2; ตวั ดาเนินการแบบยอ่ ในภาษา Java ไดแ้ ก่ เครื่องหมายทางคณิตศาสตร์ เช่น +=, -=,*=, /= และ %= เคร่ืองหมายแบบบิต เช่น <<=, >>=, &= และ |= เป็นตน้เครื่องหมำย ตัวอย่ำงตัวดำเนินกำรแบบ ควำมหมำยดำเนินกำร ย่อ += -= x += 2; x = x + 2; *= /= x -= 2; x = x - 2; %= x *= 2; x = x * 2; x /= 2; x = x / 2; x %= 2; x = x % 2; 2.2 ตัวดำเนินกำรเพมิ่ ค่ำ (Increment Operator) และลดค่ำ (Decrement Operator) ตวั ดาเนินการเพมิ่ ค่า คือการเพม่ิ ค่าชนิดขอ้ มูลจานวนเตม็ และจานวนทศนิยม เพม่ิคา่ ข้นึ คร้งั ละ 1 โดยการใชเ้ คร่ืองหมาย ++ วางไวข้ า้ งหนา้ หรือขา้ งหลงั ตวั แปรดงั ตวั อยา่ ง เช่น x++,++x เป็นตน้ ตวั ดาเนินการลดค่า คือการลดค่าชนิดขอ้ มูลจานวนเตม็ และจานวนทศนิยม ลดค่าลงคร้ังละ 1 โดยการใช้เคร่ืองหมาย -- วางไวข้ า้ งหนา้ หรือขา้ งหลงั ตวั แปรดงั ตวั อยา่ ง เช่น x--, --xเป็ นตน้ตวั อยา่ งการใชต้ วั ดาเนินการเพมิ่ คา่ และลดคา่ x++ มีความหมายเดียวกนั กบั x = x + 1 หรือ x += 1หลกั สูตรประกาศนียบตั รวิชาชีพช้นั สูง (ปวส.) พุทธศกั ราช 2546 เรียบเรียงโดย.... ครูกาญจนา ขนั ดา
เอกสารประกอบการเรยี น รหสั วิชา 3204-2101 วชิ า การเขียนโปรแกรมภาษาจาวา 4 ++x มีความหมายเดียวกนั กบั x = x + 1 หรือ x += 1 x-- มีความหมายเดียวกนั กบั x = x - 1 หรือ x -= 1 --x มีความหมายเดียวกนั กบั x = x - 1 หรือ x -= 1การวางเคร่ืองหมายเพมิ่ คา่ และลดค่าจะไดผ้ ลลพั ธแ์ ตกต่างกนั ดงั ตวั อยา่ ง เช่น ถา้ x = 10; แลว้ เม่ือกาหนดให้ y = x++; จะไดค้ ่าขอ้ มูลของ y เทา่ กบั 10 และคา่ ขอ้ มูลของ xเทา่ กบั 11 เนื่องจากวา่ เครื่องหมาย ++ อยหู่ ลงั ตวั แปร x ซ่ึงตวั แปร x จะกาหนดค่าให้กบั y ก่อนแลว้จงึ เพม่ิ ค่าของตวั แปร x ทหี ลงั ถา้ x = 10; แลว้ เม่ือกาหนดให้ y = ++x; จะไดค้ ่าขอ้ มูลของ y เท่ากบั 11 และคา่ ขอ้ มูลของ xเท่ากบั 11 เน่ืองจากว่าเครื่องหมาย ++ อยู่ขา้ งหน้าตวั แปร x ซ่ึงตวั แปร x จะเพิ่มค่าก่อนแล้วจึงกาหนดคา่ ใหก้ บั y ทหี ลงั 3. ตัวดำเนินกำรเปรียบเทียบควำมสัมพันธ์ (Relational Operator) ตวั ดาเนินการเปรียบเทียบความสมั พนั ธใ์ ชใ้ นการเปรียบเทียบค่าของชนิดขอ้ มูลใดๆสองค่า โดยผลลพั ธท์ ่ีไดจ้ ากการเปรียบเทียบความสัมพนั ธ์จะเป็ นชนิดขอ้ มูลตรรกะ เครื่องหมายของตวั ดาเนินการเปรียบเทียบความสมั พนั ธ์ ไดแ้ ก่เครื่องหมาย ==, !=, >, >=, <, <= มีตวั อยา่ งการใชง้ านดงั น้ี เคร่ืองหมำย ควำมหมำย ตวั อย่ำง ผลลัพธ์ ดำเนินกำร== เทา่ กบั a == b เช่น 2 == 3 false!= ไม่เทา่ กบั a != b เช่น 2 != 3 True> มากกวา่ a > b เช่น 2 > 3 false>= มากกวา่ หรือเทา่ กบั a >= b เช่น 2 >= 3 false< นอ้ ยกวา่ a < b เช่น 2 < 3 true<= นอ้ ยกวา่ หรือเท่ากบั a <= b เช่น 2 <= 3 true การนาขอ้ มูลมาเปรียบเทียบความสัมพนั ธก์ ันจะตอ้ งเป็ นชนิดขอ้ มูลท่ีสอดคลอ้ งกนั เช่นการเปรียบเทียบระหวา่ งขอ้ มูลทเ่ี ป็ นตวั เลขกบั ตวั เลข เป็นตน้ ดงั ตวั อยา่ งเช่น 2 > 5.5 ไดผ้ ลลพั ธเ์ ป็น falseหลกั สูตรประกาศนียบตั รวชิ าชีพช้นั สูง (ปวส.) พทุ ธศกั ราช 2546 เรียบเรียงโดย.... ครูกาญจนา ขนั ดา
เอกสารประกอบการเรยี น รหัสวิชา 3204-2101 วชิ า การเขียนโปรแกรมภาษาจาวา 5 ‘A’ != ‘a’ ไดผ้ ลลพั ธเ์ ป็น true x < 20 นิพจน์น้ีจะถูกตอ้ งเม่ือกาหนดใหต้ วั แปร x เป็นชนิดขอ้ มูลจานวนเตม็ หรือจานวนทศนิยม และไดผ้ ลลพั ธเ์ ป็น false เมื่อคา่ ของตวั แปร x > 20 หรือไดผ้ ลลพั ธเ์ ป็น true เม่ือค่าของตวัแปร x < 20 boolean check = true; check = ( 5 != 3) นิพจน์น้ีจะไดผ้ ลลพั ธเ์ ป็น true เน่ืองจากนิพจน์ 5 !=3 มีคา่ เป็ น trueซ่งมีคา่ เทา่ กบั คา่ ของตวั แปร check 4. ตัวดำเนินกำรเง่อื นไข (Ternary Operator) ตวั ดาเนินการเงื่อนไข คือการเขียนคาสั่งเงื่อนไขและกาหนดค่าให้กบั ตวั แปรตามเง่อื นไขท่ีกาหนด โดยมีรูปแบบคาสง่ั ดงั น้ี <Variable_Name> = (<Condition>)? <Expression_1> : <Expression_2> ;โดยท่ี<Variable_Name> หมายถึง ชื่อตวั แปรชนิดขอ้ มูลใดๆ<Condition> หมายถึง นิพจนเ์ ง่อื นไข<Expression_1> และ <Expression_2> หมายถึง นิพจนท์ 1่ี และ นิพจน์ที2่ ตามลาดบัตวั อยา่ งตวั ดาเนินการเง่ือนไข เช่น y = (a>10)? 200: 300; หมายความวา่ ถา้ ตวั แปร a มีค่ามากกวา่ 10 จริงจะมีผลทาให้ตวั แปร y มีค่าเท่ากบั 200มิฉะน้นั ถา้ ตวั แปร a นอ้ ยกวา่ 10 จะทาใหต้ วั แปร y มีค่าเทา่ กบั 300 5. ตัวดำเนินกำรทำงตรรกะ(Logical Operator) ตวั ดาเนินการทางตรรกะ เป็ นตวั ดาเนินการเก่ียวขอ้ งกบั นิพจน์ที่สามารถบอกค่าความจริงเป็นจริง(true) หรือเทจ็ (false)ได้ หรือชนิดขอ้ มูลตรรกะ เช่น ตวั แปรประเภท boolean ผลลพั ธ์ท่ีได้จากการกระทาจะได้ค่าคงที่ตรรกะเป็ น true หรือ false ตวั ดาเนินการทางตรรกะได้แก่เคร่ืองหมาย !, &&, &, ||, |, ^ มีตวั อยา่ งการใชง้ านดงั น้ี เครื่องหมำย ควำมหมำย ตัวอย่ำง ผลลัพธ์ ดำเนินกำร! NOT (นิเสธ) !(5 > 3) false&& หรือ & AND (และ) (x >= 10)&&(x <= มีค่าเป็ น true เมื่อหลกั สูตรประกาศนียบตั รวิชาชีพช้นั สูง (ปวส.) พทุ ธศกั ราช 2546 เรียบเรียงโดย.... ครูกาญจนา ขนั ดา
เอกสารประกอบการเรยี น รหสั วิชา 3204-2101 วชิ า การเขียนโปรแกรมภาษาจาวา 6 เคร่ืองหมำย ควำมหมำย ตัวอย่ำง ผลลพั ธ์ ดำเนินกำร OR (หรือ) 100) (x >= 10) มีค่าเป็ น true|| หรือ | (x < 10) || (x > 100) และ (x <= 100) มีคา่ เป็ น^ Exclusive (x > 20) ^ (y > 20) true OR มีคา่ เป็ น true เมื่อ (x < 10) มีคา่ เป็ น true หรือ (x > 100) มีค่าเป็ น true มีค่าเป็ น false ได้ 2 กรณี คอื กรณีท1่ี เม่ือ (x >= 10) มีคา่ เป็ น true และ (x <= 100) มีคา่ เป็ น true หรือกรณีท2่ี เมื่อ (x >= 10) มีค่าเป็ น false และ (x <= 100) มีคา่ เป็ น false ตวั ดาเนินการทางตรรกะแบบตา่ งๆ สามารถแสดงผลลพั ธข์ องนิพจนต์ รรกะตามค่าความจริงของการดาเนินการไดด้ งั ตารางคา่ ความจริง (Truth Table) ดงั น้ีตารางค่าความจริงของตวั ดาเนินการ ! หรือ NOTค่ำควำมจริงนิพจน์ ตัวอย่ำง ผลลพั ธ์ Falsefalse !(false) Truetrue !(true)ตารางคา่ ความจริงของตวั ดาเนินการ && หรือ ANDค่ำควำมจริงนิพจน์ที1่ ค่ำควำมจริงนิพจน์ท่ี2 ตวั อย่ำง ผลลัพธ์ Falsefalse false false && false Falsefalse true false && trueหลกั สูตรประกาศนียบตั รวชิ าชีพช้นั สูง (ปวส.) พทุ ธศกั ราช 2546 เรียบเรียงโดย.... ครูกาญจนา ขนั ดา
เอกสารประกอบการเรียน รหัสวชิ า 3204-2101 วชิ า การเขียนโปรแกรมภาษาจาวา 7true false true && false FalseTrue true true && true Trueตารางค่าความจริงของตวั ดาเนินการ || หรือ OR ผลลพั ธ์ ผลลพั ธ์ค่ำควำมจริงนิพจน์ที่1 ค่ำควำมจริงนิพจน์ท่ี2 false || false False false || true True False false true || false True False true true || true True True false True trueตารางค่าความจริงของตวั ดาเนินการ ^ หรือ XOR ผลลพั ธ์ ผลลัพธ์ค่ำควำมจริงนิพจน์ที่1 ค่ำควำมจริงนิพจน์ท2่ี false ^ false False false ^ true True False false true ^ false True False true true ^ true false True false True trueตำรำงสรุปตวั ดำเนินกำรแบบต่ำงๆ เครื่องหมำย ตัวอย่ำง ตวั ดำเนินกำร int x = 20;Assignation Operator =Arithmetic Operator + -*/ % x = x + 1; แบบยอ่ x += 1; += -= *= /= %= x++; เพม่ิ คา่ ตวั แปร 1 ค่า ++x; ++ -- ------------------------------------- x=5; y = ++x; // y = 6, x = 6 y = x++; // y = 5, x = 6Relational Operator > >= < <= == !=หลกั สูตรประกาศนียบตั รวชิ าชีพช้นั สูง (ปวส.) พุทธศกั ราช 2546 เรียบเรียงโดย.... ครูกาญจนา ขนั ดา
เอกสารประกอบการเรยี น รหสั วชิ า 3204-2101 วิชา การเขียนโปรแกรมภาษาจาวา 8Conditional Operator ใชใ้ นการสรา้ งประโยคเงื่อนไข ตวั อยา่ งเช่น (a>=10), (b == 100), (c != 5)Logical Operator <Variable> = (<Condition>)? <Expression_2> : <Expression_2> ; ตวั อยา่ งเช่น y = (a>10)? 200 : 300; ถา้ a>10 จริง y มีคา่ เทา่ กบั 200 มิฉะน้นั ถา้ a>10 เทจ็ y มีค่าเท่ากบั 300 && || ! ใชใ้ นการเช่ือมประโยคเงือ่ นไขหลายๆประโยค เช่น (a >=10)&&(a<=100), (a>10)||(b<5) ใชใ้ นการปฏิเสธ เช่น !((a >=10)&&(a<=100))3. ลำดบั ควำมสำคญัลำดบั ที่ เครื่องหมำย ลำดบั กำรทำงำน1 () ซา้ ยไปขวา ซา้ ยไปขวา2 ++ , -- ซา้ ยไปขวา ซา้ ยไปขวา3 *, /, % ซา้ ยไปขวา ซา้ ยไปขวา4 +, - ซา้ ยไปขวา ซา้ ยไปขวา5 < , <= , > , >=6 == , !=7 &&8 ||9 = , += , -= , *= , /= , %=4. กำรแปลงค่ำชนิดข้อมูล (Type Conversion) ชนิดขอ้ มูลในภาษา Java มีหลายชนิด แต่ชนิดขอ้ มูลท่ีสามารถแปลงคา่ ไดจ้ ะเป็ นชนิดขอ้ มูลแบบตวั เลขและตวั อกั ขระ โดยเรียงลาดบั ชนิดขอ้ มูลจากชนิดขอ้ มูลทมี่ ีขนาดใหญ่ ไปถึงเลก็ไดด้ งั น้ี double float long int char short byteการแปลงชนิดขอ้ มูลของตวั แปรในภาษา Java มี 2 ลกั ษณะ คือหลกั สูตรประกาศนียบตั รวชิ าชีพช้นั สูง (ปวส.) พุทธศกั ราช 2546 เรียบเรียงโดย.... ครูกาญจนา ขนั ดา
เอกสารประกอบการเรยี น รหัสวิชา 3204-2101 วิชา การเขียนโปรแกรมภาษาจาวา 9 1. Widening Casting คือการแปลงชนิดขอ้ มูลทม่ี ีขนาดเลก็ ไปเป็นชนิดขอ้ มูลขนาดใหญ่โดยจะเป็ นการแปลงแบบอตั โนมตั ิ เม่ือตวั แปรทางขวามือเคร่ืองหมายเท่ากบั มีขนาดเลก็ กวา่ ค่าทางซา้ ย และเม่ือขอ้ มลู ทางขวามีการคานวณดว้ ยชนิดขอ้ มูลตวั เลขแบบตา่ งๆ ผลลพั ธจ์ ากการทานวณจะถูกแปลงใหเ้ ป็นชนิดขอ้ มูลทมี่ ีขนาดใหญท่ ่ีสุดตามลาดบั ดงั น้ี double, float, long, int,char, short, byteตวั อยา่ งเช่น float f = 250000; เป็ นการแปลงคา่ จานวนเตม็ ไปเป็ นชนิดขอ้ มลู แบบจานวนทศนิยม double d = 25.325F; เป็ นการแปลงค่า 25.325 เป็ นชนิดขอ้ มูลแบบจานวนทศนิยม int x = 12; float y = x / 10; เมื่อ x = 12 จะได้ y เท่ากบั 1.0 เพราะ x หาร 10 ท้งั สองค่าเป็ นจานวนเตม็ จึงทาใหผ้ ลลพั ธเ์ ป็นจานวนเตม็ float z = 15.0; int x = 2; double y = x + 5 + z; เมื่อ x = 2 และ z = 15.0 จะได้ y เทา่ กบั 22.0 เพราะผลลพั ธข์ อง x +5 + z จะถูกแปลงโดยอตั โนมตั ใิ หเ้ ป็นชนิดขอ้ มูลแบบทศนิยม (float) 2. Narrowing Casting คอื การแปลงชนิดขอ้ มูลท่มี ีขนาดใหญไ่ ปเป็ นชนิดขอ้ มูลขนาดเลก็ กวา่ โดยขอ้ มูลทถี่ ูกแปลงไปจะมีการสูญเสียขอ้ มูลไปตวั อยา่ งเช่น int i = (int)25.325; float f = (float)20.325; float f = 20.325f; char c = (char)97;หลกั สูตรประกาศนียบตั รวิชาชีพช้นั สูง (ปวส.) พุทธศกั ราช 2546 เรียบเรียงโดย.... ครูกาญจนา ขนั ดา
Search
Read the Text Version
- 1 - 9
Pages: