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

-Binary Display-(Plus)

size(270,100);
boolean[] a={true,true,true,false};   // เป็นการประกาศตัวแปลเป็นArray 
                                                       ชนิดboolean(เก็บค่า true,false)  ชื่อ a ซึ่งตัวแปลชนิดนี้
                                                      จะเก็บค่าได้หลายตัวโดยที่มีตำแหน่ง index เป็นตัวกำกับ
boolean[] b={true,true,false,false};
boolean[] ab=new boolean[a.length]; // เป็นการประกาศตัวแปลเป็นArray 
                                                        ชนิดboolean(เก็บค่า true,false)  ชื่อ ab ซึ่งตัวแปลชนิดนี้
                                                      จะเก็บค่าได้หลายตัวโดยที่มีตำแหน่ง index เป็นตัวกำกับ
                                                    (ในที่นี้ยังไม่กำหนดค่า แต่่กำหนดให้มีจำนวนข้อมูลเท่ากับ
                                                      ความกว้างของ array a  ในที่นี้คือ 4)
                                                       .ให้ตัวแปลนี้เก็บผลบวกของa และ b โดยไม่รวมตัวทด
boolean[] tod=new boolean[a.length+1]; //ให้ตัวแปลนี้เก็บค่าทดเลข
boolean[] sum=new boolean[a.length];  //ให้ตัวแปลนี้เก็บคำตอบ
int count=a.length-1;                     //a.length คือความกว้างของarray a ในที่นี้เท่ากับ 4
                                                    ดังนั้น count=4-1=3
int r=30,y=50,x=70;

while(count>=0){    //ลูปนี้ทำหน้าที่ในการหาผลบวกของa และ b โดยไม่รวมตัวทด
 if(a[count]==true&&b[count]==true){  //เงื่อนไขเทียบค่าaกับbในตำแหน่งเดียวกัน
                           เมื่อเงื่อนไขเป็นจริงจะทำตามคำสั่งด้านในทำหน้าที่คล้ายการบวก
    ab[count]=false;         //ตัวแปรabเก็บค่าผลบวกของa และ b โดยยังไม่รวมค่าทดเลข    
    tod[count]=true;        //ตัวแปรtodเก็บค่าทดที่ได้จากการบวกกัน
 }
 else if(a[count]==false&&b[count]==false){ //เงื่อนไขเทียบค่าaกับbในตำแหน่งเดียวกัน
                                            เมื่อเงื่อนไขเป็นจริงจะทำตามคำสั่งด้านในทำหน้าที่คล้ายการบวก
    ab[count]=false;
    tod[count]=false;
 }
 else{                                    //ในที่นี้คือเงื่อนไข a[count]==true&&b[count]==false
                                             และ a[count]==false&&b[count]==true  เป็น
                                             เงื่อนไขเทียบค่าaกับbในตำแหน่งเดียวกัน
                                            เมื่อเงื่อนไขเป็นจริงจะทำตามคำสั่งด้านในทำหน้าที่คล้ายการบวก
                                         
    ab[count]=true;
    tod[count]=false;
 }

 count=count-1;
}

if(tod[1]==true&&ab[0]!=false){  //เงื่อนไขในการปริ้นค่าตัวแรกที่เราจะปริ้นออกมา
  fill(127 ,255, 0);
  ellipse(x,y,r,r);
  text("true",x,y-20);

}
 if(tod[0]==true){            //เงื่อนไขในการปริ้นค่าตัวแรกที่เราจะปริ้นออกมา
   fill(127, 255, 0);
  ellipse(x,y,r,r);
  text("true",x,y-20);
}
x=x+40;        
count=0;                     //กำหนดค่าcount=0เพื่อใช้ในการวนลูปด้านล่าง
while(count<a.length){ //ลูปนี้ทำหน้าที่ในการรวมค่าabและค่าtodเข้าด้วยกัน
                                    เพื่อให้ได้คำตอบ
  if(ab[count]==true&&tod[count+1]==true){  //เงื่อนไขเทียบค่าabกับtodในตำแหน่งเดียวกัน
                                        เมื่อเงื่อนไขเป็นจริงจะทำตามคำสั่งด้านในทำหน้าที่คล้ายการบวก
    sum[count]=false;
  }
  else if(ab[count]==false&&tod[count+1]==false){ //เงื่อนไขเทียบค่าabกับtodในตำแหน่งเดียวกัน
                                        เมื่อเงื่อนไขเป็นจริงจะทำตามคำสั่งด้านในทำหน้าที่คล้ายการบวก
    sum[count]=false;
  }
  else {                          //เงื่อนไขเทียบค่าabกับtodในตำแหน่งเดียวกัน
                                        เมื่อเงื่อนไขเป็นจริงจะทำตามคำสั่งด้านในทำหน้าที่คล้ายการบวก
    sum[count]=true;
  }


 if(sum[count]==true){           //กำหนดเงื่อนไขในการใส่สี
   fill(127 ,255, 0);
  }
  else if(sum[count]==false){
    fill(255);
  }
  text(""+sum[count],x,y-20);
  ellipse(x,y,r,r);
   x=x+40;

  count=count+1;
}
fill(0);
text("Sum(+)=",5,y-20);     //เป็นคำสั่งแสดงข้อความโดยกำหนดดังนี้
                                   ("ข้อความ"+ค่าที่ต้องการแสดง,ตำแน่งแกนx,ตำแหน่งแกนy)

//อ้างอิงคำสั่งพื้นฐานต่างๆจาก lab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจาก lab2 http://com5630043.blogspot.com/search/label/lab2
//อ้างอิงอธิบายเรื่องif-elseจาก lab3 http://com5630043.blogspot.com/search/label/lab3%20%3A%20Condition

-Binary display-(Minus)

size(240,100);
boolean[] a={true,false,true,false}; // เป็นการประกาศตัวแปลเป็นArray 
                                                        ชนิดboolean(เก็บค่า true,false)  ชื่อ a ซึ่งตัวแปลชนิดนี้
                                                      จะเก็บค่าได้หลายตัวโดยที่มีตำแหน่ง index เป็นตัวกำกับ
boolean[] b={true,true,false,true};
boolean[] sum=new boolean[a.length];  // เป็นการประกาศตัวแปลเป็นArray 
                                                        ชนิดboolean(เก็บค่า true,false)  ชื่อ sum ซึ่งตัวแปลชนิดนี้
                                                      จะเก็บค่าได้หลายตัวโดยที่มีตำแหน่ง index เป็นตัวกำกับ
                                                    (ในที่นี้ยังไม่กำหนดค่า แต่่กำหนดให้มีจำนวนข้อมูลเท่ากับ
                                                      ความกว้างของ array a  ในที่นี้คือ 4)
int count=a.length-1;                      //a.length คือความกว้างของarray a ในที่นี้เท่ากับ 4
                                                    ดังนั้น count=4-1=3
int j=1;
int r=30,y=50,x=60;                  
while(count>0){                           //ลูปนี้ทำงานคล้ายกับการลบเลข
 if(a[count]==false&&b[count]==true){    //เงื่อนไขเทียบค่าaกับbในตำแหน่งเดียวกันเมื่อ
                                            เมื่อเงื่อนไขเป็นจริงจะทำตามคำสั่งด้านในทำหน้าที่คล้ายการลบ
    sum[count]=true;                          //ให้sumเก็บคำตอบที่ได้ในตำแหน่งเดียวกับa และ b
    a[count-1]=!a[count-1];             //เป็นการเปลี่ยนตัวหน้าให้เป็นตัวเลขตรงกันข้าม
                                                        คล้ายกับการ ลบ เลขฐาน10(การยืมค่า)
    if(a[0]==false && b[0]==true){  
        sum[0]=true;
    }
    if(a[count-1]==true){         //เป็นการเปลี่ยนเช็คค่าที่เปลี่ยนไป ถ้าค่าที่เปลี่ยนเป็นtrue
                                               แสดงว่าค่าเดิมเป็นfalseจะต้องทำการยืมค่าไปเรื่อยๆ
                                           
      while(a[count-j]==true){ //ลูปนี้ทำงานเหมือนการยืมค่าไปเรื่อยๆจะออกจากลูป
                                           เมื่อค่าa[count-j]==false
        if(a[0]==true){
        break;                       //เป็นคำสั่งหยุดการทำงาน
        }
        j=j+1;
        a[count-j]=!a[count-j];     //เป็นการเปลี่ยนตัวหน้าให้เป็นตัวเลขตรงกันข้าม
                                                 คล้ายกับการ ลบ เลขฐาน10(การยืมค่า)ถ้าa[count-j]=true
                                                  ค่า!a[count-j]=false จะหยุดการทำงาน
      }
    }
 }
 else if(a[count]==true&&b[count]==false){ //เงื่อนไขเทียบค่าaกับbในตำแหน่งเดียวกัน
                                เมื่อเงื่อนไขเป็นจริงจะทำตามคำสั่งด้านในทำหน้าที่คล้ายการลบ
    sum[count]=true;
 }
 else{                                          //เงื่อนไขเทียบค่าaกับbในตำแหน่งเดียวกันเมื่อ
                                                   เมื่อเงื่อนไขเป็นจริงจะทำตามคำสั่งด้านในทำหน้าที่คล้ายการลบ
    sum[count]=false;
 }

 count=count-1;           //ให้ค่าcount-1 เรื่ีอยๆเพื่อให้ออกจากลูป
}

count=0;                 //กำหนดค่าcount=0เพื่อใช้ในการวนลูปด้านล่าง
while(count<a.length){    //ลูปนี้ทำหน้าที่ในการแสดงผลลบที่เก็บไว้ในsumออกมา
   if(sum[count]==true){
   fill(127 ,255, 0);
   }
   else {
    fill(255);
   }
  text(""+sum[count],x,y-20);     //เป็นคำสั่งแสดงข้อความโดยกำหนดดังนี้
                                   ("ข้อความ"+ค่าที่ต้องการแสดง,ตำแน่งแกนx,ตำแหน่งแกนy)
  ellipse(x,y,r,r);
  x=x+40;
  count=count+1;
}
fill(0);
text("Sum(-)=",5,y-20);



//อ้างอิงคำสั่งพื้นฐานต่างๆจาก lab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจาก lab2 http://com5630043.blogspot.com/search/label/lab2
//อ้างอิงอธิบายเรื่องif-elseจาก lab3 http://com5630043.blogspot.com/search/label/lab3%20%3A%20Condition




วันพฤหัสบดีที่ 25 กรกฎาคม พ.ศ. 2556

-New UFO-



int[] n={4,2,2,4}; //เป็นการประกาศตัวแปลเป็นArray  จำนวนเต็ม  ชื่อ n
                          ซึ่งตัวแปลชนิดนี้จะเก็บค่าได้หลายตัว โดยที่มีตำแหน่ง index เป็นตัวกำกับ
int i=0;                  //ค่าi มีผลต่อการนับเปลี่ยบเสมือนเวลา
int p=-200;           //ค่าp มีผลต่อตำแหน่งในแนวแกน x ของUFO
void setup(){
 size(400,300);
}
void draw(){
 background(0);
 drawUFO(p);               //เป็นการเรียกใช้ฟังก์ชัน drawUFO โดยมีการส่งค่า p ไปที่ฟังก์ชัน
 if(i<=600){                   //if( ){ }เป็นการกำหนดเงื่อนไข โดยกำหนดเงื่อนไขไว้ใน ( )
                                      ถ้าเงื่อนไขเป็นจริง ให้ทำตามคำสั่งใน { }
  p=p+1;  
 }
 else{                               //else{ } เป็นคำสั่งที่ใช้ต่อจาก if( ){ }  โดยคำสั่งจะเริ่มพิจารณา
                                  เงื่อนไขจาก if ก่อนถ้าไม่เป็นจริง จะทำตามคำสั่งของ else ใน { }
  p=p-1;
 }
 if(i>=1200){
  p=-200;
  i=0;
 }
 i=i+1;                             //เป็นการกำหนดให้ค่า i เพิ่มขึ้น 1 ทุกๆครั้งที่มีการ
                                     เรียกใช้ฟังก์ชัน void draw( ){ }
}

void drawUFO(int p){         //เป็นการสร้างฟังก์ชันขึ้นมาเอง
                                          (int p)ที่เห็นคือการ กำหนดตัวแปลเพื่อให้สามารถ
                                           รับค่าที่ส่งมาเมื่อมีการเรียกใช้ฟังชัน และส่งต่อไปยังตัวแปลp
                                           ในคำสั่งต่าง ๆ
  int y=50;
  int count=0;
 while(count<n.length){        //while( ){} คือคำสั่งที่ใช่ในการวนลูป 
                                           หรือทำงานซ้ำๆเมื่อเงื่อนไขเป็นจริง
                                           และเลิกทำเมื่อเงื่อนไขไม่เป็นจริง
                                           โดยกำหนดเงื่อนไขใน ( ) และกำหนดคำสั่งใน { }
                               ในที่นี้เงื่อนไขคือ count<n.length (n.length)คือความกว้างของตัวแปลarray n
   int c=0; int x=30;
   while(c<n[count]){        
   fill(250,255,0);
   triangle(x+p,y,x-15+p,y+30,x+15+p,y+30);
   fill(150);
   ellipse(x+p,y,30,30);
   fill(30, 144 ,255);
   ellipse(x+p,y+5,50,15);
   x=x+50;
   c=c+1;
   }
 y=y+60 ;
 count=count+1;
 }
}
//อธิบายเพิ่มเติมลูปwhileแรกทำงานเป็นตัวกำหนดจำนวนแถวในแนวนอน จำนวนแถวในแนวนอนจะขึ้นอยู่กับความกว้างของ array n
ลูปwhileสองทำงานเป็นตัวกำหนดจำนวนUFOในแต่ล่ะแถว สามารถเปลี่ยนได้โดยการเปลี่ยนเลขใน array n ที่ประกาศไว้ข้างตน


//อ้างอิงคำสั่งพื้นฐานต่างๆจาก lab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจาก lab2 http://com5630043.blogspot.com/search/label/lab2
//อ้างอิงอธิบายเรื่องif-elseจาก lab3 http://com5630043.blogspot.com/search/label/lab3%20%3A%20Condition

วันพุธที่ 24 กรกฎาคม พ.ศ. 2556

-Bar Chart-




ข้อมูลสถิติ จังหวัดที่มีผลผลิตข้าวมากที่สุด5 อันดับ ในปี 2554
โดยแสดงจำนวนผลผลิตเป็น%อย่างหยาบ นำมาคำนวณหารค่าMax Min

float[] s={24.81, 19.87, 19.06, 18.91, 17.35};// เป็นการประกาศตัวแปลเป็นArray จำนวนทศนิยม ชื่อ s ซึ่งตัวแปลชนิดนี้จะเก็บค่าได้หลายตัวโดยที่มีตำแหน่ง index เป็นตัวกำกับ
String[] t={"Suphan Buri","Nakhon Sawan","Phichit","Phitsanulok","Ayutthaya"};
       //String[] t เป็นการประกาศตัวแปลเป็นArray ชนิดข้อความ ชื่อ t ซึ่งตัวแปลชนิดนี้จะเก็บค่าได้หลายตัวโดยที่มีตำแหน่ง index เป็นตัวกำกับ
int count=0;
void setup(){
 size(300,200);
 background(150);
 drawBar();
}

void drawBar(){  
  int x=16;
  int y=100;
  int d=30;
  int a=25;
  line(0,y,300,y);
  while(count<s.length){  //while( ){} คือคำสั่งที่ใช่ในการวนลูป 
                                           หรือทำงานซ้ำๆเมื่อเงื่อนไขเป็นจริง
                                           และเลิกทำเมื่อเงื่อนไขไม่เป็นจริง
                                           โดยกำหนดเงื่อนไขใน ( ) และกำหนดคำสั่งใน { }
                               ในที่นี้เงื่อนไขคือ count<s.length (s.length) คือความกว้างของตัวแปลarray s
  if(count==0){fill(255,0,0);}
  if(count==1){fill(0,255,0);}
  if(count==2){fill(0,0,255);}
  if(count==3){fill(255,255,0);}
  if(count==4){fill(0,255,255);}
  rect(x,y,d,-s[count]);
  text(s[count]+"%",x,y-s[count]-10);//เป็นคำสั่งแสดงข้อความโดยกำหนดดังนี้
                                               (ค่าที่ต้องการแสดง+"ข้อความ",ตำแน่งแกนx,ตำแหน่งแกนy)
  rect(16,y+a,5,5);
  text(t[count],25,y+a+8);      
  a=a+15;
  count=count+1;    //ค่าcountจะเพิ่มขึ้น1ทุกๆครั้งที่มีการวนลูป
  x=x+60;
  }
}

///อ้างอิงคำสั่งพื้นฐานต่างๆจาก lab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจาก lab2 http://com5630043.blogspot.com/search/label/lab2
//อ้างอิงอธิบายเรื่องif-elseจาก lab3 http://com5630043.blogspot.com/search/label/lab3%20%3A%20Condition

-Max Min-

ข้อมูลสถิติ จังหวัดที่มีผลผลิตข้าวมากที่สุด5 อันดับ ในปี 2554
โดยแสดงจำนวนผลผลิตเป็น%อย่างหยาบ นำมาคำนวณหารค่าMax Min
Suphan Buri=24% Nakhon Sawan=20% Phichit=19% Phitsanulok=18% Ayutthaya=17%

size(200,100);
int[] n={24,20,19,18,17};  // เป็นการประกาศตัวแปลเป็นArray จำนวนเต็ม ชื่อ n
                               ซึ่งตัวแปลชนิดนี้จะเก็บค่าได้หลายตัวโดยที่มีตำแหน่ง index เป็นตัวกำกับ
int max=n[0];   //เป็นการประกาศให้ค่าmax =ค่าn[0] ในที่นี้คือ 24 
                        เพื่อให้สะดวกในการคำนวน
int min=n[0];    //เป็นการประกาศให้ค่าmin =ค่าn[0] ในที่นี้คือ 24 
                        เพื่อให้สะดวกในการคำนวน
int count=0;
float sum=0;
float avg;
while(count<n.length){       //while( ){} คือคำสั่งที่ใช่ในการวนลูป
                                           หรือทำงานซ้ำๆเมื่อเงื่อนไขเป็นจริง
                                           และเลิกทำเมื่อเงื่อนไขไม่เป็นจริง
                                           โดยกำหนดเงื่อนไขใน ( ) และกำหนดคำสั่งใน { }
                                   ในที่นี้เงื่อนไขคือ c<n.length (n.length) คือความกว้างของตัวแปลarray n
  if(max<n[count]){        //กำหนดเงื่อนไขในการคำนวน ถ้าค่าmax<n[count]
                                    (ซึ่งค่าn[count]เปลี่ยนแปลงค่าเมื่อมีการวนลูป)
    max=n[count];          ถ้าจริงให้maxเก็บค่าn[count] ซึ่งเมื่อวนลูปเสร็จเราก็จะได้ค่าmax
  }
  if(min>n[count]){         //กำหนดเงื่อนไขในการคำนวน ถ้าค่าmin>n[count]
                                    (ซึ่งค่าn[count]เปลี่ยนแปลงค่าเมื่อมีการวนลูป)
    min=n[count];          ถ้าจริงให้minเก็บค่าn[count] ซึ่งเมื่อวนลูปเสร็จเราก็จะได้ค่าmin
  }
  sum=sum+n[count];     //หาผลรวมของจำนวนทั้งหมดเพื่อนำไปคิดค่าเฉลี่ย
  count=count+1;
}
avg=sum/n.length;         //คิดหาค่าเฉลี่ย
fill(0);
text("max is Suphan Buri ="+max+"%",10,20); //เป็นคำสั่งแสดงข้อความโดยกำหนดดังนี้
                                                  ("ข้อความ"+ค่าที่ต้องการแสดง,ตำแน่งแกนx,ตำแหน่งแกนy)
text("min is Ayutthaya ="+min+"%",10,50);
text("average="+avg,10,80);




//อ้างอิงคำสั่งพื้นฐานต่างๆจาก lab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจาก lab2 http://com5630043.blogspot.com/search/label/lab2
//อ้างอิงอธิบายเรื่องif-elseจาก lab3 http://com5630043.blogspot.com/search/label/lab3%20%3A%20Condition




วันอาทิตย์ที่ 21 กรกฎาคม พ.ศ. 2556

=Variable= (medium)

Programming Exercise
Proposition =>Write an assignment statement to calculate the sum of the number from 1 through n
using Gauss'formula : sum=n(n+1)/2 
Translated into Thailand =>  เขียนคำสั่งที่ได้รับมอบหมายในการคำนวณผลรวมของจำนวน
จาก 1 ถึง n โดยใช้สูตรของ Gauss'formula : sum=n(n+1)/2 

Solution=> 
int n=10;
int sum=0;

sum=n*(n+1)/2;   //n*(n+1)/2  จะเริ่มคิดจากในวงเล็บก่อนเหมือนการคิดเลขคณิตศาสตร์
                                         เครื่องหมาย * คือการคูณ, / คือการหาร
print("sum="+sum);




Out put => sum =55



อธิบายการทำงานของโปรแกรม =>
              เป็นโปรแกรมที่ใช้หาผลรวมของจำนวนตั้งแต่ 1 จนถึงค่าn
เริ่มประกาศตัวแปล nและ sumโดยให้ n เก็บค่าจำนวนสุดท้ายที่เราต้องการหาผลบอก โดยเราสามารถแก้ไขค่าnได้ และ sum เก็บค่าผลรวมของจำนวนตั้งแต่ 1ถึง n ผลที่ออกมาคือ
ผลรวมของจำนวนตั้งแต่1จนถึงค่าn



text book name :Programming and problem solving with Java – 2nd edition
Author : Nell Dale and Chip Weems
              ISBN 978-0-7637-3402-2

=Variable=(easy)

Programming Exercise
Proposition =>  If alpha and beta are int variables with alpha=4 and beta=9,what value is stored
 into alpha in each of the following? Answer each part independently of the others.
 A) alpha=3*beta;    B) alpha=alpha+beta;    C)alpha++;    D)alpha--;
 E)alpha=alpha+alpha    F)alpha=beta%6
Translated into Thailand => ถ้าอัลฟาและเบต้าเป็นตัวแปร int เมื่อ alpha = 4 และ beta = 9, จงหาว่าค่าที่ถูกเก็บไว้ในอัลฟาในแต่ละข้อดังต่อไปนี้เป็นเท่าไร คำตอบของแต่ละข้อเป็นอิสระจากข้ออื่น ๆ
 A) alpha=3*beta;    B) alpha=alpha+beta;    C)alpha++;    D)alpha--;  
 E)alpha=alpha+alpha    F)alpha=beta%6

Solution=>
int alpha=4; //เป็นการประกาศตัวแปล และกำหนดค่า
int beta=9;
int a,b,c,d,e,f;    //เป็นการประกาศตัวแปลแต่ยังไม่กำหนดค่า 
a=3*beta;          
b=alpha+beta;
c=alpha+1;
d=alpha-1;
e=alpha+alpha;
f=beta%6;

println("A) alpha="+a+" B) alpha="+b+" C) alpha++="+c);
println("D) alpha="+d+" e) alpha="+e+" f) alpha="+f);

Out put =>    A) alpha=27 B) alpha=13 C) alpha++=5
                     D) alpha=3 e) alpha=8 f) alpha=3

You can run code in http://processingjs.org/tools/processing-helper.html



text book name :Programming and problem solving with Java – 2nd edition
Author : Nell Dale and Chip Weems
ISBN 978-0-7637-3402-2

วันพฤหัสบดีที่ 18 กรกฎาคม พ.ศ. 2556

=Array=(hard)

Programming Exercise
Proposition =>  Write a program that reads eleven numbers, computers their average, and finds out how                                many number are below the average.
Translated into Thailand => ให้เขียนโปรแกรมที่คำนวณค่าเฉลี่ยของเลขทั้ง 11 ตัว และ หาว่ามีกี่ตัวที่มีค่าน้อยกว่าค่าเฉลี่ย

Solution=>

int[] n= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
int i=1;
int av=0;
int sum=0;
int c=0;
int x=n[0];
while (i<n.length) {

  sum=x+n[i];
  x=sum;
  av=sum/11;
  i=i+1;
}


if (i>=n.length) {
  i=0;
  while (i<n.length) {
    if (n[i]<av) {
      c=c+1;
    }
    i=i+1;
  }
}
println("How many number are below the average?");
println("average="+av+" answer="+c);

Out put => How many number are below the average?
                       average=6 answer=5

You can run code in http://processingjs.org/tools/processing-helper.html


อธิบายการทำงานของโปรแกรม =>
ใส่ตัวเลขที่ต้องการคำนวณทั้งหมด11ตัวใน
 int[] n= {x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11};
ในที่นี้กำหนดให้เป็น  int[] n= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; กำหนดให้ค่า i=1, x=n[0]
เช็คเงื่อนไขของwhile ว่า i<n.length
 (n.length คือ จำนวนตัวแปลทั้งหมดที่มีใน n ในที่นี้คือ11 )
เมื่อเป็นจริง เริ่มทำการวนลูป ทำตามคำสั่งด้านในจนกว่าเงื่อนไขจะเป็นเท็จ จะจบการวนลูป
และเริ่มพิจารณาที่เงื่อนไขของif ต่อ ว่า i>=n.length(ซึ้งเมื่อจบจากการวนลูปแล้ว i=11)
เมื่อเป็นจริง ทำตามคำสั่งใน if ทำให้ค่า i=0 และพิจารณาเงื่อนไขของ while ที่อยู่ข้างใน if
ว่า i<n.length เมื่อเป็นจริง จำเริ่มทำการวนลูป โดยภายในลูปมี เงื่อนไข if ว่า n[i]<av (average)
เมื่อเป็นจริงให้ทำการเพิ่มค่าc 1หน่วย ทำการวนลูปไปเรื่อยๆ จนกว่าเงื่อนไขจะเป็นเท็จ
จะได้ค่า c=จำนวนตัวเลขที่มีค่าน้อยกว่าค่าเฉลี่ย

text book name : Introdution to Programming with C++
Author : Y.Daniel  Liang




วันพุธที่ 17 กรกฎาคม พ.ศ. 2556

-Expressway-




void setup() {
  size(300, 200);

  int x=0;
  int n=3;
  int c=0;
  int s=100;

  fill(0,191,255);
  rect(-5,-5, 310, 100);
  fill(204, 102, 0);
  rect(-5, 30, 310, 30);
  while (c<n) {       //while( ){} คือคำสั่งที่ใช่ในการวนลูป หรือทำงานซ้ำๆเมื่อเงื่อนไขเป็นจริง
                                           และเลิกทำเมื่อเงื่อนไขไม่เป็นจริง
                                           โดยกำหนดเงื่อนไขใน ( ) และกำหนดคำสั่งใน { }
                                           ในที่นี้เงื่อนไขคือ c<n
    fill(225, 225, 170);
    rect(x+60, 60, 20, 40);
    rect(x+50, 100, 40, 80);
    fill(0);
    rect(x+60, 110, 20, 30);
    fill(250, 255, 0);
    rect(x+0, 140, 50, 10);
    fill(255, 0, 0);
    ellipse(x+40, 50, 10, 10);
    fill(0, 255, 0);
    ellipse(x+55, 50, 10, 10);
    x=x+s;                //x=x+s คือ x จะมีค่าเพิ่มขึ้นs(s=100)  ทุกๆครั้งที่มีการวนลูป
    c=c+1;               //c=c+1 คือ c จะมีค่าเพิ่มขึ้น1  ทุกๆครั้งที่มีการวนลูป
  }
}

//เพิ่มเติม  ตรวจสอบเงื่อนไขที่ while ในที่นี้คือ c<n ว่าเป็นจริงหรือไม่ เนื่องจากเริ่มต้น c =0
จะได้ว่าเงื่อนไขเป็นจริง ให้ทำตามคำสั่งข้างใน{ }
และค่าx เพิ่มขึ้น100(จะทำให้ได้ด่านเก็บเงินที่อยู่ทางขวาเพิ่มขึ้นมา)และ
ค่าcเพิ่มขึ้น1 ทุกๆครั้งที่มีการวนลูป และจะทำซ้ำอย่างนี้ไปเรื่อยๆจนเงื่อนไขเป็นเท็จ (c<n) จึงทำการออกจากลูปหรือหยุดการทำงาน


//อ้างอิงคำสั่งพื้นฐานต่างๆจากlab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจากlab2 http://com5630043.blogspot.com/search/label/lab2

=while loop= (medium)

Programming Exercise
Proposition =>Write a code segment that sums the even integers from 16 through 26,inclusive.
Translated into Thailand => ให้เขียนcode เพื่อหาผลรวมของจำนวนคู่ตั้งแต่ 16-26  

Solution=>  int x=16;
                   int y=26;
                   int n=2;
                   int z=x+n;
                   int sum=0;

                   while (x<y) {     //เป็นการสร้างลูปขึ้นมาเพื่อใช้ในการคำนวน
                                              โดยจะวนลูปเมื่อเงื่อนไข x<y เป็นจริง
                      sum=x+z;            //เป็นการหาผลรวมของจำนวนคู่
                      z=sum+n;            
                      x=x+n;
                   }
                   println("sum="+sum);

    

Out put => sum =126

You can run code in http://processingjs.org/tools/processing-helper.html


อธิบายการทำงานของโปรแกรม =>
           เป็นโปรแกรมที่ใช้หาผลรวมของจำนวนคู่ตั้งแต่ค่าxจนถึงค่าy
เริ่มประกาศตัวแปล xและ y โดยให้ x เก็ยค่าน้อยกว่า y เสมอ โดยเราสามารถแก้ไขค่าxและyได้โดยที่xและyต้องเป็นจำนวนคู่เท่านั้น เมื่อเริ่มรันโปรแกรม จะเริ่มพิจารณาเงื่อนไขของwhile(x<y)
เมื่อเงื่อนไขเป็นจริง จำเริ่มทำการคำนวณ จนเงื่อนไขเป็นเท็จ ค่าที่ได้ออกมาคือ
ผลรวมของจำนวนคู่ตั้งแต่ค่าxจนถึงค่าy



text book name :Programming and problem solving with Java – 2nd edition
Author : Nell Dale and Chip Weems
ISBN 978-0-7637-3402-2



วันอังคารที่ 16 กรกฎาคม พ.ศ. 2556

-Mobile carp-



void setup() {
  background(225,225,170);
  size(200, 300);

}
void draw() {
  Treefish();
  BigfishandBeam();
}
void BigfishandBeam() {           //เป็นการสร้างฟังก์ชันขึ้นมาเอง จะตั้งชื่อว่าอะไรก็ได้ 
                                            แต่ต้องมี void  ....(){  }อยู่เสมอ โดยใส่คำสั่งที่ต้องการเข้าไปใน { }
                                           ในที่นี้กำหนดให้เป็นฟังก์ขันที่วาดปลาตัวใหญ่และคาน
  //beam
  fill(0);
  rect(85,0,2,70);
  ellipse(86,20,10,10);
  //bigfish
  fill(250, 15, 180);
  triangle(30, 100, 110, 50, 110, 150);
  triangle(120, 100, 170, 60, 170, 140);
  ellipse(80, 100, 100, 60);
  fill(0);
  ellipse(45, 95, 10, 10);

}
void Treefish() {                    //เป็นการสร้างฟังก์ชันขึ้นมาเอง จะตั้งชื่อว่าอะไรก็ได้ 
                                            แต่ต้องมี void  ....(){  }อยู่เสมอ โดยใส่คำสั่งที่ต้องการเข้าไปใน { }
                                           ในที่นี้กำหนดให้เป็นฟังก์ขันที่วาดปลา3ตัว
  int x=30;
  int y=100;
  int l=110;
  int c=0;
  int n=3;
  while (c<n) {        //while( ){} คือคำสั่งที่ใช่ในการวนลูป หรือทำงานซ้ำๆเมื่อเงื่อนไขเป็นจริง
                                           และเลิกทำเมื่อเงื่อนไขไม่เป็นจริง
                                           โดยกำหนดเงื่อนไขใน ( ) และกำหนดคำสั่งใน { }
                                           ในที่นี้เงื่อนไขคือ c<n
    line(x, y, x, y+l);
    drawFish(x, l+100, 30);
    x=x+50;
    l=l+20;
    c=c+1;
  }
}
void drawFish(int x, int y, int r) {        //เป็นการสร้างฟังก์ชันขึ้นมาเอง จะตั้งชื่อว่าอะไรก็ได้
                                                       แต่ต้องมี void  ....(){  }อยู่เสมอ
                                                       (int x,int y,int,r)ที่เห็นคือการ กำหนดตัวแปลเพื่อให้สามารถ
                                                       ใส่ค่าเข้าไปเองได้ เช่น เรียกใช้ drawFish(30,210,30);
                                                       ค่าต่างๆก็จะถูกส่งไปที่ตัวแปล x,y และ rตามลำดับ
                                                       ในที่นี้คำสั่งในฟังก์ชันนี้
                                                       คือ ellipse(x,y,r,r); จะได้เป็น ellipse(30,310,30,30);
                                                           triangle(x+15, y, x+25, y-20, x+25, y+20);
                                                         จะได้เป็นtriangle(45,210,55,190,55,230);
  fill(250, 15, 180);
  ellipse(x, y, r, r);
  triangle(x+15, y, x+25, y-20, x+25, y+20);
}
//เพิ่มเติม  ตรวจสอบเงื่อนไขที่ while ในที่นี้คือ c<n ว่าเป็นจริงหรือไม่ เนื่องจากเริ่มต้น c =0
จะได้ว่าเงื่อนไขเป็นจริง ให้ทำตามคำสั่งข้างใน คือ วาดเส้น,เรียกใช้drawFish(); ,ค่าx เพิ่มขึ้น50,
ค่า l เพิ่ม20,และค่าcเพิ่มขึ้น1 ทุกๆครั้งที่มีการวนลูป และจะทำซ้ำอย่างนี้ไปเรื่อยๆจนเงื่อนไขเป็นเท็จ (c<n) จึงทำการออกจากลูปหรือหยุดการทำงาน


//อ้างอิงคำสั่งพื้นฐานต่างๆจากlab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจากlab2 http://com5630043.blogspot.com/search/label/lab2

-Railway-



void setup() {
  size(200, 200);
  background(0, 214, 214);
}
void draw() {
  view();
  way();
  railway();
}
void view() {                         //เป็นการสร้างฟังก์ชันขึ้นมาเอง จะตั้งชื่อว่าอะไรก็ได้ 
                                             แต่ต้องมี void  ....(){  }อยู่เสมอ 
                                               โดยใส่คำสั่งที่ต้องการเข้าไปใน { }
                                           ในที่นี้กำหนดให้เป็นฟังก์ขันที่วาด View ทั้งหมดในรูป
  //draw Sun
  fill(255, 0, 0);
  ellipse(100, 20, 25, 25);
  //draw Mountain
  fill(50, 214, 100);
  ellipse(150, 50, 130, 80);
  ellipse(50, 50, 150, 80);
  //draw Land
  fill(240, 193, 113);
  rect(-5, 50, 210, 200);
  //draw tree
  fill(204, 102, 0);
  rect(20, 100, 10, 50);
  rect(150, 60, 5, 30);
  fill(73,255,47);
  ellipse(25,100,40,40);
  ellipse(152,60,20,20);
}
void way() {                              //เป็นการสร้างฟังก์ชันขึ้นมาเอง จะตั้งชื่อว่าอะไรก็ได้ 
                                               แต่ต้องมี void  ....(){  }อยู่เสมอ 
                                               โดยใส่คำสั่งที่ต้องการเข้าไปใน { }
                                               ในทีนี้กำหนดให้เป็นฟังก์ชันที่วาด ทางรถไฟ
  strokeWeight(6);                    //เป็นคำสั่งที่กำหนดความหนาของเส้น กำหนดความหนาใน ( )
  line(95, 50, 30, 200);
  line(105, 50, 170, 200);
  strokeWeight(2);                   //เป็นคำสั่งที่กำหนดความหนาของเส้น กำหนดความหนาใน ( )
                                              //บรรทัดนี้กำหนดความหนาของเส้นเป็นให้เล็กลงเพราะ 
                                              ถ้าหากไม่มีบรรทัดนี้ เส้นของคำสั่งต่อๆไปก็จะมีความหนาเป็น 6
}
void railway() {                        //เป็นการสร้างฟังก์ชันขึ้นมาเอง จะตั้งชื่อว่าอะไรก็ได้ 
                                               แต่ต้องมี void  ....(){  }อยู่เสมอ 
                                               โดยใส่คำสั่งที่ต้องการเข้าไปใน { }
                                               ในทีนี้กำหนดให้เป็นฟังก์ชันที่วาด หมอนรองรางรถไฟ
                                               
  int x=95;
  int y=50;
  int s=10;
  int c=0;
  int n=8;
  fill(100);
  while (c<n) {              //while( ){} คือคำสั่งที่ใช่ในการวนลูป หรือทำงานซ้ำๆเมื่อเงื่อนไขเป็นจริง
                                           และเลิกทำเมื่อเงื่อนไขไม่เป็นจริง
                                           โดยกำหนดเงื่อนไขใน ( ) และกำหนดคำสั่งใน { }
                                           ในที่นี้เงื่อนไขคือ c<n
    rect(x, y, s, 5);
    x=x-9;                           //x=x-9 คือ x จะมีค่าลดลง9  ทุกๆครั้งที่มีการวนลูป
    y=y+20;                       //y=y+20 คือ y จะมีค่าเพิ่มขึ้น20  ทุกๆครั้งที่มีการวนลูป
    s=s+18;                        // s=s+18คือ s จะมีค่าเพิ่มขึ้น18  ทุกๆครั้งที่มีการวนลูป
    c=c+1;                         //c=c+1 คือ x จะมีค่าเพิ่มขึ้น1  ทุกๆครั้งที่มีการวนลูป
  }          
}
//เพิ่มเติม  ตรวจสอบเงื่อนไขที่ while ในที่นี้คือ c<n ว่าเป็นจริงหรือไม่ เนื่องจากเริ่มต้น c =0
จะได้ว่าเงื่อนไขเป็นจริง ให้ทำตามคำสั่งข้างใน คือ วาดสี่เหลี่ยม ,ค่าx ลดลง9,ค่าy เพิ่ม20,
ค่าsเพิ่มขึ้น18 และค่าcเพิ่มขึ้น1 ทุกๆครั้งที่มีการวนลูป และจะทำซ้ำอย่างนี้ไปเรื่อยๆจนเงื่อนไขเป็นเท็จ (c<n) จึงทำการออกจากลูปหรือหยุดการทำงาน
//ค่าxและyมีผลต่อตำแหน่งของสี่เหลี่ยม และค่าsมีผลต่อความกว้างของสี่เหลี่ยม

//อ้างอิงคำสั่งพื้นฐานต่างๆจากlab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจากlab2 http://com5630043.blogspot.com/search/label/lab2

-Scout Bridges.




void setup() {
  size(300, 200);
  background(0, 214, 214);
  strokeWeight(3);                    //เป็นคำสั่งที่กำหนดความหนาของเส้น กำหนดความหนาใน ( )
  fill(204, 102, 0);
  rect(0, 150, 20, 50);
  rect(280, 150, 20, 50);
  noFill();                                 //เป็นคำสั่งที่ทำให้รูปที่วาดไม่มีสี
  stroke(250, 0, 0);                  //stroke(แดง,เขียว,น้ำเงิน) เป็นคำสั่งที่ใช้ในการใส่สีให้กับเส้น
                                                 โดยสีที่ได้ขึ้นอยู่กับค่าที่เราใส่ในแต่ละช่อใน ( )
                                                 ในที่นี้stroke(250,0,0);สีที่ได้คือสีแดง
  quad(50, 100, 250, 100, 290, 150, 10, 150);
  int x=50;
  int y=100;
  int s=25;
  int l=50;
  int n=4;
  int count=0;
  while (count<n) {  //while( ){} คือคำสั่งที่ใช่ในการวนลูป หรือทำงานซ้ำๆเมื่อเงื่อนไขเป็นจริง
                                           และเลิกทำเมื่อเงื่อนไขไม่เป็นจริง
                                           โดยกำหนดเงื่อนไขใน ( ) และกำหนดคำสั่งใน { }
                                           ในที่นี้เงื่อนไขคือ count<n
    line(x, y, x+s, y+l);  
    line(x+50, y, x+s, y+l);
    x=x+50;                     //x=x+50 คือ x จะมีค่าเพิ่มขึ้น50  ทุกๆครั้งที่มีการวนลูป
    count=count+1;         //count=count+1 คือ x จะมีค่าเพิ่มขึ้น1  ทุกๆครั้งที่มีการวนลูป
  }
}

//เพิ่มเติ่ม n คือจำนวนของเส้นสลิงใช้ยึดสะพาน (ลักษณะเป็นตัว "V") (นิยามเองเพื่อให้ง่ายต่อความเข้าใจ)
พิจารณาเงื่อนไข count<n เงื่อนไขเป็นจริงจะทำการวนลูป (ทำงานซ้ำๆ) เมื่อเริ่มวนลูปจะทำการการวาดเส้น2เส้นในลักษณะตัว "V" เมื่อวาดแล้วค่าx และค่า count ก็จะเพิ่มขึ้นตามที่เขียนไว้ในโปรแกรม และกลับไปวนลูปใหม่ เมื่อวนลูปไปเรื่อยๆจนเงื่อนไขเป็นเท็จก็จะทำการออกจากลูป

//อ้างอิงคำสั่งพื้นฐานต่างๆจากlab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจากlab2 http://com5630043.blogspot.com/search/label/lab2


วันอาทิตย์ที่ 14 กรกฎาคม พ.ศ. 2556

-I see you-




void setup() {
  size(200, 200);

}
void draw(){
  int x=5;
  int y=200;
  int e=100;
  int r=110;
  background(255);
   while(y>=0){     //while( ){} คือคำสั่งที่ใช่ในการวนลูป หรือทำงานซ้ำๆ เมื่อเงื่อนไขเป็นจริง
                                           และเลิกทำเมื่อเงื่อนไขไม่เป็นจริง
                                           โดยกำหนดเงื่อนไขใน ( ) และกำหนดคำสั่งใน { }
                                           ในที่นี้เงื่อนไขคือ y>=0
                                           
   line(200,x,y,200);
   line(x,0,0,y);
   ellipse(e,e,r,r);
   r=r-1;                     //r=r-1 คือ r จะมีค่าลดลง1 ทุกๆครั้งที่มีการวนลูป
   y=y-5;                   //y=y-5 คือ y จะมีค่าลดลง5 ทุกๆครั้งที่มีการวนลูป
   x=x+5;                  //x=x+5 คือ x จะมีค่าเพิ่มขึ้น5  ทุกๆครั้งที่มีการวนลูป
   }

}

//เพิ่มเติม  ตรวจสอบเงื่อนไขที่ while ในที่นี้คือ y>=0ว่าเป็นจริงหรือไม่ เนื่องจากเริ่มต้น y =200
จะได้ว่าเงื่อนไขเป็นจริง ให้ทำตามคำสั่งข้างใน คือ การวาดเส้น2เส้น ,วงกลม1วง  ,ค่าr ลดลง1,ค่าy ลดลง5 และค่าxเพิ่มขึ้น5 ทุกๆครั้งที่มีการวนลูป และจะทำซ้ำอย่างนี้ไปเรื่อยๆจนเงื่อนไขเป็นเท็จ (y<=0)
จึงทำการออกจากลูปหรือหยุดการทำงาน

//อ้างอิงคำสั่งพื้นฐานต่างๆจากlab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจากlab2 http://com5630043.blogspot.com/search/label/lab2


วันพุธที่ 10 กรกฎาคม พ.ศ. 2556

-UFO-




void setup(){
 size(300,200); 
}
int x=30;
int c=0;
void draw(){
  background(0);
  drawUFO1(x);
  drawUFO2(x);
  c=c+1;                       //เป็นการกำหนดให้ค่า c เพิ่มขึ้น 1 ทุกๆครั้งที่มีการ
                                    เรียกใช้ฟังก์ชัน void draw( ){ }
  if(c<=250){                //if( ){ }เป็นการกำหนดเงื่อนไข โดยกำหนดเงื่อนไขไว้ใน ( )
                                     ถ้าเงื่อนไขเป็นจริง ให้ทำตามคำสั่งใน { }
    x=x+1;    
  }
  else{                       //else{ } เป็นคำสั่งที่ใช้ต่อจาก if( ){ }  โดยคำสั่งจะเริ่มพิจารณา
                                  เงื่อนไขจาก if ก่อนถ้าไม่เป็นจริง จะทำตามคำสั่งของ else ใน { }
    x=x-1; 
  }
  if(c>=500){
    c=0; 
  }
}
void drawUFO1(int x){
  fill(250,255,0);
  triangle(x,20,x-10,70,x+10,70);
  fill(255);
  ellipse(x,30,30,30);
  ellipse(x,35,50,15);
}
void drawUFO2(int x){
  fill(250,255,0);
  triangle(300-x,50,290-x,100,310-x,100);
  fill(255);
  ellipse(300-x,60,30,30);
  ellipse(300-x,65,50,15);
}

//ตัวแปล x ใช้ในการเก็บค่าเพื่อให้UFOขยับไปซ้ายขวา แต่ที่UFOเคลื่อนที่สวนทางกันเพราะ 
ค่าx ใน UFO1 มีค่าเป็นบวก แต่ค่าx ในUFO2 มีค่าเป็นลบ ทำให้เคลื่อนที่สวนทางกัน
//เพิ่มเติม ค่าcที่เพิ่มขึ้นเปรียบเสมือน เวลาที่เพิ่มขึ้นเรื่อยๆ จากเงื่อนไขถ้าc<=250 ค่าxจะบวก1เรื่อยๆ
ทำให้UFO1 ขยับไปทางขวา UFO2ขยับไปทางซ้าย แต่เมื่อเงื่อนไข c<=250 ไม่เป็นจริง
ค่าxจะลดลงมาเรื่อยๆ ทำให้UFOเคลื่อนที่กลับที่เดิม เมื่อc>=500 จะตรงกับอีกเงื่อนไขนึง
ทำให้ค่า c=0 เป็นการรีเซ็ต ค่าc ให้กลับมาเป็นค่าที่เริ่มต้น

//อ้างอิงคำสั่งพื้นฐานต่างๆจาก lab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจาก lab2 http://com5630043.blogspot.com/search/label/lab2

วันอังคารที่ 9 กรกฎาคม พ.ศ. 2556

-One Piece-




void setup() {          //เป็นฟังก์ชันที่โปรแกรมจะเรียกใช้อัตโนมัติเป็นอันดับแรก 
  size(200, 200);
  background(0);
}
void draw() {                     //เป็นฟังก์ชันที่โปรแกรมจะเรียกใช้อัตโนมัติเป็นอันดับสอง 
                                         และจะเรียกใช้ซ้ำๆเรื่อยๆ เป็นพื้นฐานของการวาดanimation 
  fill(random(255), random(255), random(255));//เป็นการใส่สีแบบซุ่ม โดยใช้คำสั่ง
                                                                              random(กำหนดค่าของสี)เข้าไปในช่องสีต่างๆ
                                                                             ของคำสั่ง fill(แดง,เขียว,น้ำเงิน);
                                                                            การซุ่มของrandomจะเริ่มจาก0ถึงค่าที่เรากำหนด
                                                                            อาจเขียนในรูป random(0,ค่าที่เรากำหนด)
                                                                            โดยค่า 0 เราสามารถเปลี่ยนเปนค่าอื่นได้เช่นกัน 
  drawCrossbones();      //เป็นการเรียกใช้ฟังก์ชัน drawCrossbones();
  fill(255);
  drawHeard();              //เป็นการเรียกใช้ฟังก์ชัน drawHeard();
  frameRate(5);             //frameRate( ); เป็นคำสั้งที่ใช้กำหนดความเร็วในการวาดภาพ 
                                      โดยกำหนดความเร็วใน ( )

}
void drawHeard() {               //เป็นการสร้างฟังก์ชันขึ้นมาเอง จะตั้งชื่อว่าอะไรก็ได้ 
                                                  แต่ต้องมี void  draw......(){  }อยู่เสมอ 
                                                       โดยใส่คำสั่งที่ต้องการเข้าไปใน { }
  ellipse(100, 150, 50, 50);
  ellipse(100, 140, 50, 40);
  ellipse(100, 100, 100, 100);
  rect(30, 70, 140, 10);
  fill(0);
  ellipse(80, 110, 30, 30);
  ellipse(120, 110, 30, 30);
  ellipse(100, 130, 10, 10);
}
void drawCrossbones() {               //เป็นการสร้างฟังก์ชันขึ้นมาเอง จะตั้งชื่อว่าอะไรก็ได้ 
                                                  แต่ต้องมี void  draw......(){  }อยู่เสมอ 
                                                       โดยใส่คำสั่งที่ต้องการเข้าไปใน { }
  quad(30, 20, 170, 180, 150, 180, 30, 40);                                                                    
  quad(170, 20, 170, 40, 50, 180, 30, 180);
}
//quad(x1 ,y1 ,x2 ,y2 ,x3 ,y3 ,x4 ,y4 );  เป็นคำสั่งวาด4เหลี่ยมโดยเราสามารถ
                                                             กำหนดตำแหน่งได้ทุกจุดเพื่อรูปทรงที่แตกต่าง
//อ้างอิงคำสั่งพื้นฐานต่างๆจาก lab1 http://com5630043.blogspot.com/search/label/lab1

วันจันทร์ที่ 8 กรกฎาคม พ.ศ. 2556

-What do a boy do-




void setup(){
  size(200,200);
}
int c=0;
float x=55;
void draw(){
  background(250,200,0);
  drawFace();
  drawEye(x);
  c=c+1;                            //เป็นการกำหนดให้ค่า c เพิ่มขึ้น 1 ทุกๆครั้งที่มีการ
                                         เรียกใช้ฟังก์ชัน void draw( ){ }
  if(c<=60){                   //if( ){ }เป็นการกำหนดเงื่อนไข โดยกำหนดเงื่อนไขไว้ใน ( )
                                     ถ้าเงื่อนไขเป็นจริง ให้ทำตามคำสั่งใน { }
    x=x+0.5;  
  }
  else{                           //else{ } เป็นคำสั่งที่ใช้ต่อจาก if( ){ }  โดยคำสั่งจะเริ่มพิจารณา
                                  เงื่อนไขจาก if ก่อนถ้าไม่เป็นจริง จะทำตามคำสั่งของ else ใน { }
    x=x-0.5;
  }
  if(c==120){
    c=0;
    x=55;
  }

}

void drawEye(float x ){
  fill(0);
  ellipse(x,100,15,15);
  ellipse(x+60,100,15,15);
}

void drawFace(){
  int s=0;
  int e=200;
  fill(250,0,0);
  rect(s,s,e,50);
  line(s,100,e,100);
  fill(255);
  ellipse(70,100,50,50);
  ellipse(130,100,50,50);
  fill(0);
  ellipse(100,140,20,20);
  line(70,180,140,160);
  line(130,150,150,170);
  line(40,30,40,50);
  line(80,30,80,50);
  line(120,30,120,50);
  line(160,30,160,50);
  ellipse(155,160,2,2);
  ellipse(165,160,2,2);
  ellipse(155,150,3,3);
  ellipse(165,150,2,2);
}
//ตัวแปล x ใช้ในการเก็บค่าเพื่อให้ตาขยับไปซ้ายขวา 
//เพิ่มเติม ค่าcที่เพิ่มขึ้นเปรียบเสมือน เวลาที่เพิ่มขึ้นเรื่อยๆ จากเงื่อนไขถ้าc<=60 ค่าxจะบวก0.5เรื่อยๆ
ทำให้ตา ขยับไปทางขวา  แต่เมื่อเงื่อนไข c<=60 ไม่เป็นจริง
ค่าxจะลดลงมาเรื่อยๆ ทำให้ตาเคลื่อนที่กลับที่เดิม เมื่อc==120 จะตรงกับอีกเงื่อนไขนึง
ทำให้ค่า c=0 ,x=55 เป็นการรีเซ็ต ค่าc และ x ให้กลับมาเป็นค่าเริ่มต้น

//อ้างอิงคำสั่งพื้นฐานต่างๆจาก lab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจาก lab2 http://com5630043.blogspot.com/search/label/lab2

-Boat-




void setup(){
 size(300,200);
}
int count=0;
int x=0;
int y=0;
void draw(){
  background(220);
  drawSky();
  drawSea();
  drawBoats();
  count=count+1;                   //เป็นการกำหนดให้ค่า c เพิ่มขึ้น 1 ทุกๆครั้งที่มีการ
                                               เรียกใช้ฟังก์ชัน void draw( ){ }
  if(count<=170){                   //if( ){ }เป็นการกำหนดเงื่อนไข โดยกำหนดเงื่อนไขไว้ใน ( )
                                              ถ้าเงื่อนไขเป็นจริง ให้ทำตามคำสั่งใน { }
    x=x+1;
  }
  if(count<=200){
    y=y+1;
  }
 
  else{                                     //else{ } เป็นคำสั่งที่ใช้ต่อจาก if( ){ }  โดยคำสั่งจะเริ่มพิจารณา
                                               เงื่อนไขจาก if ก่อนถ้าไม่เป็นจริง จะทำตามคำสั่งของ else ใน { }
    x=x-1;
    y=y-1;
  }
  if(count==400){
    count=0;
    x=0;
    y=0;
  }

}
void drawSea(){
  fill(0,69,215);
  rect(0,150,300,100);
}
void drawBoats(){
  fill(200);
  quad(y+20,130,y+80,130,y+70,150,y+30,150);
  noStroke();
  fill(255,0,0);
  triangle(y+50,95,y+80,120,y+50,120);
  stroke(1);
  fill(100);
  rect(y+45,95,5,35);

  quad(x+40,130,x+100,130,x+90,150,x+50,150);
  noStroke();
  fill(0,255,0);
  triangle(x+70,95,x+100,120,x+70,120);
  fill(100);
  rect(x+65,95,5,35);
}
void drawSky(){
  fill(255,50,10);
  ellipse(50,150,80,80);
  fill(250,255,0);
  strokeWeight(10);
  stroke(250,255,0);
  line(-30,10,10,110);
  line(10,10,30,100);
  line(50,10,50,90);
  line(90,10,70,100);
  line(160,10,80,110);
  line(230,20,90,120);
  line(300,30,100,130);
  line(300,90,110,140);
  strokeWeight(1);
  stroke(0);
}

//ตัวแปล x ใช้ในการเก็บค่าเพื่อให้เรือธงสีเขียวขยับไปซ้ายขวา
//ตัวแปล y ใช้ในการเก็บค่าเพื่อให้เรือธงสีแดงขยับไปซ้ายขวา
ที่กำหนด2ตัวแปลเพราะ จะทำให้เรือรับค่าที่ต่างกัน เพิ่มทำให้เหมือนเรือแซงกัน
//เพิ่มเติม ค่า count ที่เพิ่มขึ้นเปรียบเสมือน เวลาที่เพิ่มขึ้นเรื่อยๆ 
  จากเงื่อนไขถ้าcount<=170 ค่าxจะบวก 1 เรื่อยๆ ทำให้เรือธงสีเขียวขยับไปทางขวา  
  จากเงื่อนไขถ้าcount<=200 ค่าyจะบวก 1 เรื่อยๆ ทำให้เรือธงสีแดงขยับไปทางขวา
แต่เมื่อเงื่อนไข count<=170 และ เงื่อนไข count<=200 ไม่เป็นจริง
ค่าx และ y จะลดลงมาเรื่อยๆ ทำให้เรือทั้ง2เคลื่อนที่ไปทางซ้าย
จากข้างต้นเรือธงสีเขียวจะหยุดก่อนเรือธงสีแดงทำให้เวลากลับเรือธงสีเขียวจะนำหน้าเรือธงสีแดง
 เมื่อcount==400 จะตรงกับอีกเงื่อนไขนึง
ทำให้ค่า count=0 , x=0, y=0 เป็นการรีเซ็ต ค่าc ,x และ y ให้กลับมาเป็นค่าเริ่มต้น

//อ้างอิงคำสั่งพื้นฐานต่างๆจาก lab1 http://com5630043.blogspot.com/search/label/lab1
//อ้างอิงอธิบายฟังก์ชันจาก lab2 http://com5630043.blogspot.com/search/label/lab2