วันพฤหัสบดีที่ 6 กันยายน พ.ศ. 2550

homework7

สรุปเนื้อหาที่เรียนไปวันที่ 24 สิงหาคม 2550
Class
แบบร่างของออบเจ็กต์ เราเรียกว่า คลาส (class) ส่วนสิ่งที่เราสร้างขึ้นมาตามแบบร่างนั้น ก็คือ อินสแตนซ์(instance) ซึ่ง ออบเจ็กต์หลายออบเจ็กต์ ที่มีลักษณะบางอย่างที่เหมือนกัน ซึ่งเราสามารถจัดให้อยู่ภายในคลาสเดียวกันได้ และในแต่ละอินสแตนซ์ ก็จะมีคุณสมบัติพื้นฐาน (class variable) และพฤติกรรมพื้นฐาน (class method) ที่เหมือนกัน
ชนิดของคลาส แบ่งตามการใช้งาน
- คลาสที่ทำหน้าที่เป็นชนิดข้อมูล เช่น คลาส class1_1
- คลาสที่ทำหน้าที่เป็นผู้เรียกใช้ชนิดข้อมูล หรือเป็น Application แบ่งเป็น คลาส String และคลาส JOptionPane
โครงสร้างของ class
[class Modifiers] class ชื่อclass
{
fields Member Variables -> ( properties)
methods Member Functions -> behaviors
nested Classes/Interface
}
------------------------------------------------------------------------------------------
[class Modifiers]public กำหนดให้คลาสเข้าถึงได้abstract ประกาศให้มันเป็นต้นแบบ ใช้สืบทอดคุณสมบัติเท่านั้นfinal ไม่สามารถสร้าง subsclassได้strictftp ใช้กำหนดรูปแบบต่างๆสรุป
static members = class member
static variables = class variables และ
static methods = class methods
Methods
โครงสร้างของ methods
[modifiers] [return type] name(parameter list){[return data ;]}
การเรียกใช้ Methodsสามารถทดลองต่างๆได้ เช่น ทดลองเปลี่ยน Access Modifier ทดลองเรียกใช้สมาชิก private การคืนค่าด้วย return การใช้เมธทอดเรียกใช้เมธทอดอื่นการส่งผ่านMethods ในจาวา ทำได้2แบบ คือ
1. pass a primitive type to a methods = passed by value
2. pass an object to a methods= passed by reference
ตัวอย่างโจทย์ที่อาจารย์ให้ทำในห้อง
//class2
public class class2{
public static void main(String[] args){
sub1 hello=new sub1();
}
}
class sub2{
public sub2(){
System.out.println("Hello! from sub2\n");
}
}
class sub1{
public sub1(){
System.out.println("Hello! from sub1\n");
sub2 hello=new sub2();
}
}
--------------------------------------------------------------------
public class class3_static0{
int x1=20;
public static void main(String[]args){
sub1_1();
// sub1_3();
// x1=30;
}

static int var1=10;
int var2=20;
public static void sub1_1()
{
System.out.println("var1+10 from sub1_1 "+(var1+10));
sub1_2();
}
public static void sub1_2()
{
System.out.println("var1 from sub1_2 "+var1);
// System.out.println("var2 from sub1_2 "+var2);
}
public void sub1_3()
{
System.out.println("from sub1_3");
}
}
------------------------------------------------------------------------
//class3_static1.java
public class class3_static1
{
int x1 = 20;
public static void main(String[] args)
{
sub1 hello1 = new sub1();
System.out.println("object hello1 var1 from sub1 "+ hello1.var1);
hello1.sub1_1();
//System.out.println("x1 from main "+ x1);
hello1.sub1_2();
System.out.println("var1 Static var from sub1 "+ sub1.var1);
System.out.println("var1 Static var from sub2 "+ sub2.var1);
hello1.sub1_3();
hello1.var1 = 20 ;
sub1 hello2 = new sub1();
System.out.println("object hello2 var1 from sub1 "+ hello2.var1);
System.out.println("var1 Static var from sub1 again "+ sub1.var1);
System.out.println("direct access to class method");
sub3.sub3_1();
}
}
class sub1
{
static int var1 = 10;
int var2 = 20;
public static void sub1_1() {
System.out.println("var1 + 10 from sub1_1 " + (var1+10));
System.out.println("Hello! from sub1\n");
}

public void sub1_2(){
System.out.println("var1 from sub1_2 " + var1);
System.out.println("var2 from sub1_2 " + var2);
}
public void sub1_3() {
System.out.println("class variable from class sub2 " + sub2.var1);
}
}

class sub2
{
static int var1 = 10;
}

class sub3
{
static int var1 = 10;
public static void sub3_1()
{
System.out.println("Hello! from sub3 and var1 " + var1);
}
}
-----------------------------------------------------------------------------
public class m0{
public static void main(String [] args){
mt0Car1 car1 = new mt0Car1();
car1.showmodel();
}
}
class mt0Car1{
private int gear ;
private static final String model = "Camel V6" ;
private void showModel(){
System.out.println("car 's Model : "+ model);
}
}
-------------------------------------------------------------------------------------
public class mt1{
public static void main(String [] args){
mt1Car1 car1=new mt1Car1();
car1.changeGear(5);
System.out.println("Current gear is "+car1.showGear());
}
}

class mt1Car1{
private int gear;
void changeGear(int gear){
this.gear=gear;
}
int showGear(){
return gear;
}
}
-------------------------------------------------------------------------------------
public class mt3{
public static void main(String [] args){
mt3Pass1 p1=new mt3Pass1();
p1.testPass(10,20);
System.out.println("p1.a is "+p1.a+"\np1.b is "+p1.b);
mt3Pass2 p2=new mt3Pass2();
p2.testPass(p1);
System.out.println("p1.a is "+p1.a+"\np1.b is "+p1.b);

}
}

class mt3Pass1{
int a,b;
void testPass(int i,int j){
a=i;b=j;
}
}
class mt3Pass2{
void testPass(mt3Pass1 x){
x.a+=10;x.b+=20;
}
}
--------------------------------------------------------------------------
การบ้าน GUI คือ
หน้าที่พื้นฐานของ GUI คือ สร้างอินเทอร์เฟซสำหรับการรับ ข้อมูลจากผู้ใช้ (เช่น การรับข้อความหรือแสดงรายการเมนูให้ผู้ใช้เลือก) และแสดงผลการทำงาน ซึ่งในการพัฒนา MIDlet เราจะเลือก GUI สำเร็จรูปที่ MIDP เตรียมไว้ให้ มาใช้งานเลย หรือจะสร้าง GUI แล้วเขียนโค้ดควบคุมการทำงานต่างๆ เองก็ได้
  • High-level API ดูแลอินเทอร์เฟซระดับสูง
  • Low-level API จัดการกราฟิกระดับต่ำ
  • Display ตัวจัดการจอภาพ
  • Displayable ตัวนำอ็อบเจ็กต์มาแสดง
    คลาส Screen แยกย่อยเป็น 4 คลาส
  • Form รวมคอมโพเนนต์ต่างๆ อยู่ในหน้าจอเดียว
  • Command สร้างเมนูสำหรับผู้ใช้
  • Alert แจ้งเตือนหรือแจ้งข้อผิดพลาด
  • TextBox สร้างกรอบรับข้อความจากผู้ใช้
  • List สร้างรายการให้ผู้ใช้เลือก
  • TextField สร้างกรอบรับข้อความบรรจุใน Form
  • ChoiceGroup สร้างรายการบรรจุใน Form ให้ผู้ใช้เลือก
  • StringItem แสดงข้อความใน Form
  • Image แสดงรูปกราฟิกใน Form
  • ImageItem แสดงรูปกราฟิก + ข้อความกำกับรูป
  • Gauge โชว์กราฟแท่งแทนตัวเลข
  • DateField รับข้อมูลวัน-เวลาตามที่ผู้ใช้เลือก
  • Ticker โชว์ตัวอักษรวิ่ง
    ที่มา http://witty.net/books/j2me.html

วันศุกร์ที่ 10 สิงหาคม พ.ศ. 2550

homework6

การบ้าน
1.เขียนโปรแกรมใช้งานแถวลำดับ เพื่อใช้ประมวลผลข้อมูลนักเรียนไม่เกิน 100 คน
1.1 กำหนดนักเรียนที่จะกรอกคะแนน
1.2 รับชื่อ นามสกุล
1.3 แสดงผลข้อมูล ชื่อ สกุล คะแนนทั้ง3 ครั้ง
2. เขียนโปรแกรม เพื่อรับค่าทางคีย์บอร์ดเข้าในแถวลำดับ 3×3 จำนวน 2 ชุด แล้วนำข้อมูลทั้ง 2 ชุดมาบวกกัน และเก็บไว้ในแถวลำดับชุดที่3 แล้วนำข้อมูลในแถวลำดับแต่ละตัวมาแสดงผล
ข้อที่1

Output ในกรณีแรก


Output ในกรณีสอง



ข้อที่ 2



Output ข้อที่ 2

สรุปที่เรียนไปวันนี้(10 สิงหาคม 2550)
1.array
การประกาศตัวแปรarray
รูปแบบที่หนึ่ง
ชนิดของตัวแปรarray[] ชื่อของตัวแปรarray;
รูปแบบที่สอง
ชนิดของตัวแปรarray ชื่อของตัวแปรarray[];
การสร้าง object ของ array
ชื่อของตัวแปรarray = new ชนิดของตัวแปรarray[ขนาดของตัวแปรarray]
หรือ กำหนดค่าของสมาชิกarray เลย เช่น int array_int[]={1,2,3,4}
หมายเหตุ การประกาศarray จะมีค่าอยู่แล้ว คือ 0 โดยอัตโนมัติ
2.String
การประกาศข้อมูล
เช่น String s1=new String(“Hello World!”); หรือ String s1= “Hello World!”;
ในที่นี้ตัว H อยู่ที่ตำแหน่ง 0 และตัว d อยู่ในตำแหน่ง 11
indexof<>method
เช่น s1.indexof< ‘o’,4 > คือให้ค้นหาตัวโอในs1 เริ่มตำแหน่งค้นหาตำแหน่งที่4 ในที่นี้จะแสดงผลคือ 4
lastIndexof<>method
เช่น s1.lastIndexof< ‘o’ > คือให้ค้นหาตัวโอตัวสุดท้ายในs1 ตั้งแต่ตำแหน่งแรก ในที่นี้จะแสดงผลคือ 7
s1.lastIndexof< ‘o’,6 > คือให้ค้นหาตัวโอตัวสุดท้ายในs1 จนถึงเริ่มตำแหน่งสุดท้ายที่ค้นหาคือ ตำแหน่งที่6 ในที่นี้จะแสดงผลคือ 4
การเปรียบเทียบข้อมูลสายอักขระ
s1.equals(s2) //เปรียบเทียบข้อความระหว่างs1 และ s2
s1.substring(start,end) //ตัดข้อความ
เช่น s1.substring(2,5) ของคำว่า Hello World! ในที่นี้จะได้คือ llo
replace String
เช่น s2=s1.replace( ‘o’, ‘e’); ผลที่ได้ คือ Helle Werld!
Trim string //ตัดช่องว่างออก
s1.toLowerCase(); //เปลี่ยนตัวอักษรให้เป็นตัวพิมพ์เล็ก
s1.toUpperCase(); //เปลี่ยนตัวอักษรให้เป็นตัวพิมพ์ใหญ่

โปรแกรมที่อาจารย์เก็บคะแนนในห้อง


Output






วันพุธที่ 8 สิงหาคม พ.ศ. 2550

homework5(ข้อสอบข้อที่3)

ข้อสอบข้อที่3

รับข้อมูลตัวเลขตามจำนวนรอบที่เราใส่ค่า พร้อมทั้งแสดงผล
1. ค่าน้อยไปมาก
2. ค่ามากไปน้อย
3. เลขคี่เรียงจากน้อยไปมาก
4. เลขคู่เรียงจากมากไปน้อย


วันจันทร์ที่ 6 สิงหาคม พ.ศ. 2550

homework5(test)

ข้อสอบในห้องเรียน 2 ข้อ

ข้อที่1
Output ในกรณีแรก

Output ในกรณีที่สอง
ข้อที่ 2



Output ในกรณีแรก




Output ในกรณีที่สอง


homework4

การเขียนโปรแกรมรับจำนวนข้อมูล และรับข้อมูลโดยใช้คำสั่ง while,forและdo while

1.คำสั่ง while

2.คำสั่ง for


3.คำสั่ง do-while














วันศุกร์ที่ 6 กรกฎาคม พ.ศ. 2550

Homework3

สรุปเนื้อหาที่เรียนไปวันนี้


คอนแรกอาจารย์ก็สอนเรื่องคลาสMath

เช่น Math.PI,Math.E,Math.min(),Math.max(),Math.round(),Math.floor(),Math.celi(),Math.random(),Math.pow()
ข้อแตกต่างระหว่าง Math.round() ,Math.ceil()และMath.floor() คือ

  • Math.round() //ปัดเศษขึ้นลง --->ได้ผลลัพธ์เป็น int
  • Math.ceil() //ปัดเศษขึ้น--->ได้ผลลัพธ์เป็น Double
  • Math.floor() //ปัดเศษลง --->ได้ผลลัพธ์เป็น Double

อาจารย์ก็ให้สร้างโปรแกรมรับข้อมูลทางคีบอร์ด คำนวนพื้นที่วงกลม
import java.util.*;

public class circle{

public static void main(String[]args){

Scanner in=new Scanner(System.in);

System.out.print("input radian: ");

int x=in.nextInt();

Double y ; y = Math.PI*x*x;

System.out.println("Area :"+y );

}
}
อันที่2 เป็นการทดลองใช้ Math
public class circle{

public static void main(String[]args){

System.out.println(Math.round(7.61));

System.out.println(Math.round(7.5));

System.out.println(Math.round(7.4));

System.out.println(Math.round(8.2));

System.out.println(Math.round(8.215));

System.out.println(Math.floor(8.9));

System.out.println(Math.ceil(9.5));

System.out.println(Math.ceil(9.9));

System.out.println(Math.ceil(9.215));

}

}

ผลลัพธ์ที่ได้ คือ

8

8

7

8

8

8.0

10.0

10.0

อันที่3
public class circle{


public static void main(String[]args){
float rand1=(float)Math.random();
float rand2=rand1*10;
int rand3=(int)Math.round(rand2);
System.out.println("Basic random is "+rand1);
System.out.println("Bigger range random is "+rand2);
System.out.println("Rounded up random is "+rand3);
int rand4=(int)Math.ceil(Math.random()*10);
System.out.println("Another Ceiling random is "+rand4);
} }
อาจารย์แนะนำเวปด้วย http://java.sun.com/javase/6/docs/api/java/lang/Math.html .ให้ลองเข้าไปดู
อันนี้ก่อนกลับบ้าน อาจารย์สั่งให้เขียนโปรแกรมนี้ ถ้าใครเขียนเสร็จก็กลับบ้านได้

import java.util.*;
public class score1{

public static void main(String[]arg){

Scanner in=new Scanner(System.in);
System.out.print("Input score1 : ");
Double x=in.nextDouble();
System.out.print("Input score2 : ");
Double y=in.nextDouble();
System.out.print("Input score3 : ");
Double z=in.nextDouble(); Double sum;
sum=x+y+z;
if(sum>=50){
System.out.println("ผ่านและเรียนวิชาใหม่");
System.out.println("Take new Couse"); }
else { System.out.println("ไม่ผ่าน");
System.out.println("เรียนซ้ำ"); }
System.out.println("Bye Bye"); }}
จบการเรียนของวันนี้
ตัวดำเนินการ
Relational Operator





Logical Operator



ลำดับการประมวลผลของตัวดำเนินการต่างๆ เริ่มจากก่อนไปหลัง



เขียนโปรแกรม 1 โปรแกรมโดยใช้ความรู้ที่เรียนไปในวันนี้

โปรแกรมคำนวนเกรดนักเรียน

import java.util.*;

public class grade1{

public static void main(String[]arg){

Scanner in=new Scanner(System.in);

System.out.print("Input your score of Math <0-100> : ");

Double m=in.nextDouble();

System.out.print("Input your score of Biology <0-100> : ");

Double n=in.nextDouble();

System.out.print("Input your score of Chemisty <0-100> : ");

Double o=in.nextDouble();

System.out.print("Input your score of Physic <0-100> : ");

Double p=in.nextDouble();

System.out.print("Input your score of English <0-100> : ");

Double q=in.nextDouble();

System.out.print("Input your score of Thai <0-100> : ");

Double r=in.nextDouble();

Double sum; sum =(m+n+o+p+q+r)/6;

System.out.println("===========================================");

System.out.println("Your Average score: "+sum);

if(sum>=80)

System.out.println("You get 'A'่");

else if(sum>=70)

System.out.println("You get 'B'่");

else if(sum>=60)

System.out.println("You get 'C'");

else if(sum>=50)

System.out.println("You get 'D'");

else { System.out.println("You get 'F'");

System.out.println("Take Course Again"); }

System.out.println("Bye Bye"); System.out.println

("===========================================");

}}

จบHomework3

Homework2


การรับตัวเลขที่ผู้ใช้ป้อนค่าทางคีย์บอร์ด Input number from keyboard (Scanner)

การรับค่าจากทางแป้นพิมพ์

1-ทำให้ใช้ Scannerได้

2-ใช้งานประกาศตัวแปร reader ให้มีค่าเป็น class Scanner

3-ใช้คำสั่งรับค่าจาก reader.nextLine()

**ไม่ว่าต้องการรับค่าเมื่อไร ให้ใช้reader.nextLine() (หรือตัวแปรตัวไหนก็ได้ ที่ประกาศไว้เป็น Scanner) เป็นตัวรับค่าจากทางเป้นพิมพ์**

nextมีโปรแกรมรับข้อมูลสำหรับdata tyepแต่ละแบบ จะเอามาปนกันไม่ได้ ดังนี้

Scanner read=new Scanner(System.in);

char b=read.next().charAt(0); // ชนิดข้อมูล Char

byte c=read.nextByte();// ชนิดข้อมูล byte

short d=read.nextShort();// ชนิดข้อมูล Short

int e=read.nextInt();// ชนิดข้อมูล Int

long f=read.nextLong(); // ชนิดข้อมูล Long

float g=read.nextFloat();// ชนิดข้อมูล Float

double h=read.nextDouble();// ชนิดข้อมูล Double

boolean i=read.nextBoolean();// ชนิดข้อมูล Boolean

ดูเพิ่มเติมที่ http://www.bloggang.com/mainblog.php?id=suar-hine&month=27-05-2007&group=9&gblog=3

Class ที่เป็น Wrapper จัดการกับตัวเลข


การเปลี่ยนแปลงข้อมูลสายอักขระเป็นข้อมูลตัวเลข และ การเปลี่ยนตัวเลขเป็นสายอักขระ

  • Integer Type Wrapper สำหรับจำนวนเต็ม

- public Integer(String s)

- public static String toString(int I, int radix)

- public static int parseInt(String s, int radix)

- public static Integer valueOf(Strings, int radix)

// radix คือระบบเลขฐาน เช่น 2, 8 10, 16 โดยปกติจะเป็นฐานสิบ

  • Double สำหรับจำนวนจริง

- public Double(String s)

- public static String toString(int I, int radix)

- public static Double valueOf(Strings, int radix)

// radix คือระบบเลขฐาน เช่น 2, 8 10, 16 โดยปกติจะเป็นฐานสิบ

ขั้นตอน เปลี่ยนข้อมูลสายอักขระเป็นข้อมูล Double ซึ่งเป็น class Double ที่เก็บค่าจำนวนจริง แต่ไม่สามารถเรียกไปคำนวณได้ Double tmpV = Double.valueOf(StrVal); เปลี่ยนค่าของ Double เป็นข้อมูลจำนวนจริงด้วย method doubleValue() double realVal = doubleValue(tmpV);


ดูเพิ่มเติ่ม www.cs.sci.ku.ac.th/~chulee/java-ku/java-5.ppt