แสดงบทความที่มีป้ายกำกับ lab5 แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ lab5 แสดงบทความทั้งหมด

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

binary plus




 boolean[] a= {true,false,true,false};  //เปรียบเสมือน ตัวเลข 1010
boolean[] b = {true,false,true,true}; //เปรียบเสมือน ตัวเลข 0011
boolean[] c = new boolean[5]; //array ของคำตอบ มี 5 ช่อง กรณีบวกแล้ว ทดเกิน 4 ช่อง
boolean[] t = {false,false}; เก็บค่าของตัวทด
int i=0;
void setup(){//เป็น function หนึ่งใน system function เป็น function ที่เรียกใช้อัตโนมัติ และยังเป็นฟังก์ชั่นที่ทำงานเพียงครั้งเดียวและจะทำงานก่อนเป็นสิ่งแรก
i=a.length-1;//กำหนดให้ i คือจำนวนภายใน array -1
 while(i>=0)//เงื่อนไขถ้า i มากกว่า 0 จะทำตาม statement ด้านล่าง
 {
   if(a[i]== true && b[i]== true){//ถ้าค่าใน array a มีค่าเป็น true และ array b มีค่าเป็น true จะทำตาม statement ด้านล่าง คือให้ c[i] ตำแหน่งลำดับที่ i มีค่าเป็น false กำหนดตัวทดเป็นหนึ่ง true ในหลังถัดไปที่จะนำไปคิด
     t[0]=true;
     c[i]=false;
     if(t[1]==true){//ถ้าในขณะนี้มีตัวที่ทดอยู่มีค่าเป็น true ให้c[i]มีค่าเป็น true แต่ถ้าไม่ใช่ให้เป็น false จากนั้น t[1] จะกลับไปมีค่าเป็น false (ตาม statement ด้านล่าง)
       c[i]=true;
     }
     else{
       c[i]=false;
     }
     t[1]=t[0];
   }
   else if(a[i]== false && b[i]== false){//ถ้าค่าใน array a มีค่าเป็น true และ array b มีค่าเป็น true จะทำตาม statement ด้านล่าง คือให้ c[i] ตำแหน่งลำดับที่ i มีค่าเป็น false ไม่มีตัวทดให้ t[0] เป็น false
     t[0]=false;
     c[i]=false;
     if(t[1]==true){//ถ้าในขณะนี้มีตัวที่ทดอยู่มีค่าเป็น true ให้c[i]มีค่าเป็น true แต่ถ้าไม่ใช่ให้เป็น false จากนั้น จากนั้น t[1] จะกลับไปมีค่าเป็น false (ตาม statement ด้านล่าง)
       c[i]=true;
     }
     else{
       c[i]=false;
     }
     t[1]=t[0];
   }
   else{//แต่ถ้าไม่ใช่ให้t[0] ตัวทดมีค่าเป็น false และให้c[i]มีค่าเป็น true
     t[0]=false;
     c[i]=true;
     if(t[1]==true){//ในขณะนี้มีตัวที่ทดอยู่มีค่าเป็น true ให้c[i]มีค่าเป็น false และให้ตัวทดกับตำแหน่งถัดไปเป็น true
       c[i]=false;
       t[0]=true;
     }
     else{//แต่ถ้าไม่เป็นไปตามเงื่อนไขให้ c[i] มีค่าเป็น true และให้ตัวทดกลับไปเป็น false เหมือนเดิม
       c[i]=true;
     }
     t[1]=t[0];
   }
   i=i-1;//ลดค่าเพื่อกลับไปวน loop อีก และจะหยุดลบและออกจาก loop เมื่อไม่เป็นไปตามเงื่อนไข
 }
 if(a[0] == true && b[0] == true){//ถ้าค่าใน array a[0] มีค่าเป็น true และ array b [0]มีค่าเป็น true จะแสดงค่า 1 ออกมาไว้ก่อน
 print (1);}
 i=0;
 while(i<a.length && i<b.length){//เงื่อนไขถ้า i  น้อยกว่าจำนวนภายใน array a และ b จะทำตาม statement ด้านล่าง
   if(c[i]==true){//ถ้าc[i] มีค่าเป็น true ให้แสดงค่าออกมาเป็น 1
     print(1);
   }
   if(c[i]==false){//ถ้าc[i] มีค่าเป็น false ให้แสดงค่าออกมาเป็น 0
     print(0);
   }
   i=i+1;//มีการบวกเพิ่มค่าเพื่อจะได้กลับไปวน loop อีก และจะไม่บวกอีกเมื่อออกจากเงื่อนไข
 }
}

Barchart




void setup() { //เป็น function หนึ่งใน system function เป็น function ที่เรียกใช้อัตโนมัติ และยังเป็นฟังก์ชั่นที่ทำงานเพียงครั้งเดียวและจะทำงานก่อนเป็นสิ่งแรก ก่อน void draw ด้วย
  size (400,400);
  background(25);
}
void draw () {{//เป็น function หนึ่งใน system function เช่นเดียวกับ setup มีการเรียกใช้อัตโนมัติ แต่การทำงานของทั้งสองจะแตกต่างกัน void draw จะทำงานตาม Statement และเงื่อนที่ได้กำหนดให้นั้นซ้ำๆไปเรื่อยๆ
  int x = 50;
  int i = 0;  //ตำแหน่งลำดับใน index
  int y = 50;
  float [] B = {13.51,14.74,12.598,32.65,26.50};
 
while(i < B.length){
   if(i==0){//i=0 หรือ จำนวนแรกใน index
     fill(#F8FC03);
    }
   if(i==1){ //i=1 หรือ จำนวนที่สองใน index
      fill(#FC7C03);
    }
   if(i==2){//i=2 หรือ จำนวนที่สามใน index
      fill(#23FC03);
    }
   if(i==3){//i=3 หรือ จำนวนที่สี่ใน index
      fill(#03A7FC);
    }
   if(i==4){//i=4 หรือ จำนวนที่ห้าใน index
      fill(#7E03FC);
    }
  rect (x,350,40,-B[i]*10); //คำสั่งวาดรูปสี่เหลี่ยมเป็นแผนภูมิแท่ง
  text(B[i]+"%",x, (B[i]+360));//ตัวอักษรใต้กราฟ กำหนดสามสิ่ง คือ สิ่งที่ต้องการแสดง,จุดบนแกน x ,จุดบนแกน y
  i = i + 1;  //บวกเพิ่มเพื่อกลับไปวน loop อีกครั้ง จะบวกจนกว่าจะออกจาก loop
  x = x + 60;//บวกเพิ่มทุกครั้งเมื่อสิ้นสุดการทำ statement นี้ เป็นการบวกเพื่อเก็บค่าใหม่นำไปใช้ในครั้งถัดไป
}

fill (#FC0AA8);
text("No. of marine fishery establishments ",10,70);//ตัวอักษรใต้กราฟ กำหนดสามสิ่ง คือ สิ่งที่ต้องการแสดง,จุดบนแกน x ,จุดบนแกน y

}






References : http://web.nso.go.th/en/census/marfish/fisht1.htm

binary minus





boolean[]a={true,false,true,true};//เก็บค่าของ binary ในรูปของ true,false โดย true แทน 1 และ false แทน 0 
boolean[]b={true,true,false,false};//เก็บค่าของ binary ในรูปของ true,false โดย true แทน 1 และ false แทน 0
boolean[]c=new boolean[4];//เก็บค่าของ binary ใหม่จำนวน 4 จำนวน
int i = 3;//index 3 คือจำนวนที่สี่เพราะ index มีการเก็บค่าตั้งแต่ 0 เป็นต้นไป

void setup(){//เป็น function หนึ่งใน system function เป็น function ที่เรียกใช้อัตโนมัติ และยังเป็นฟังก์ชั่นที่ทำงานเพียงครั้งเดียวและจะทำงานก่อนเป็นสิ่งแรก
 while(i>0){
  if(a[i]==true && b[i] == true){//ถ้าค่าใน array a มีค่าเป็น true และ array b มีค่าเป็น true จะทำตาม statement ด้านล่าง คือให้ c[i] ตำแหน่งลำดับที่ i มีค่าเป็น false
    c[i]=false;
  }
  else if(a[i]==false && b[i]==false){//ถ้าค่าใน array a มีค่าเป็น false และ array b มีค่าเป็น false จะทำตาม statement ด้านล่าง คือให้ c[i] ตำแหน่งลำดับที่ i มีค่าเป็น false
      c[i]=false;
    }
  else if(a[i]==false && b[i]==true){//ถ้าค่าใน array a มีค่าเป็น false และ array b มีค่าเป็น true จะทำตาม statement ด้านล่าง คือให้ c[i] ตำแหน่งลำดับที่ i มีค่าเป็น true
    c[i]=true;
    c[i-1]=!c[i-1];
    if(c[i-1]==true){//c[i-1] มีค่าเป็นจริงให้ทำตาม statement ด้านล่าง
      int j=1;
      while(a[i-j]==true){//ตำแหน่งหรือลำดับด้านหน้าเป็น true
        j++;//บวก j เพิ่มอีก 1
         if(a[0]==true){//ตำแหน่งหรือลำดับด้านหน้าสุด(แรก)เป็น true
          break;//หยุดเงื่อนไข
         }
        c[i-j]=!c[i-j];
      }
    }
   }
   else if(a[i] == true && b[i] == false){//ถ้าค่าใน array a มีค่าเป็น true และ array b มีค่าเป็น false จะทำตาม statement ด้านล่าง คือให้ c[i] ตำแหน่งลำดับที่ i มีค่าเป็น true
        c[i]=true;
      }
   i=i-1;//เพิ่มทุกครั้งเพื่อกลับไปวน loop
 }

 print(""+c[0]+c[1]+c[2]+c[3]);//แสดงผลการคำนวณ
}

Binary display



boolean[] a = {false,false,true,false};//เก็บค่าของ binary ในรูปของ true,false โดย true แทน 1 และ false แทน 0;
boolean[] b = {false,true,true,false};//เก็บค่าของ binary ในรูปของ true,false โดย true แทน 1 และ false แทน 0;

void setup(){//เป็น function หนึ่งใน system function เป็น function ที่เรียกใช้อัตโนมัติ และยังเป็นฟังก์ชั่นที่ทำงานเพียงครั้งเดียวและจะทำงานก่อนเป็นสิ่งแรก ก่อน void draw ด้วย
  size(300,300);
  background(243,240,29);
}

int x=40;
int i=0;
int r=74;

void draw(){{//เป็น function หนึ่งใน system function เช่นเดียวกับ setup มีการเรียกใช้อัตโนมัติ แต่การทำงานของทั้งสองจะแตกต่างกัน void draw จะทำงานตาม Statement และเงื่อนที่ได้กำหนดให้นั้นซ้ำๆไปเรื่อยๆ
  while(i<a.length)
  {
    if(a[i]==true&&b[i]==true) {//ถ้าค่าใน array a มีค่าเป็น true และ array b มีค่าเป็น true จะทำตาม statement ด้านล่าง
   
      fill(0,155,0);
      drawLight(x); //เรียกใช้ฟังก์ชั่นที่เรากำหนดเอง  
      x=x+r;
    }else {
      if(a[i]==false&&b[i]==false) { //ถ้าค่าใน array a มีค่าเป็น false และ array b มีค่าเป็น false จะทำตาม statement ด้านล่าง
   
      fill(0,155,0);
      drawLight(x); //เรียกใช้ฟังก์ชั่นที่เรากำหนดเอง    
      x=x+r;
    }
    if(a[i]==false&&b[i]==true){  //ถ้าค่าใน array a มีค่าเป็น false และ array b มีค่าเป็น true จะทำตาม statement ด้านล่าง
      fill(145,0,0);
      drawLight(x);  //เรียกใช้ฟังก์ชั่นที่เรากำหนดเอง    
      x=x+r;
    }
       
    }
    i=i+1;

  }

}


void drawLight(int x){
  ellipse(x,150,r,r);
}

Some UFO






int x = 0;
int y = 0;
int c= 0;
int d= 0;
//การประกาศและกำหนดข้างต้นเป็นการประกาศตัแปรแบบ global variable ซึ่งก็คือการประกาศและกำหนดตัวแปรภายนอกฟังก์ชั่น ทุกฟังก์ชั่นสามารถเรียกใช้ไ

void setup () {//เป็น function หนึ่งใน system function เป็น function ที่เรียกใช้อัตโนมัติ และยังเป็นฟังก์ชั่นที่ทำงานเพียงครั้งเดียวและจะทำงานก่อนเป็นสิ่งแรก ก่อน void draw ด้วย
  size (500,300);
}

void drawBackg(){//เป็น function ที่เรากำหนดเอง
  background (random(1,5),random(13,15),random(2,85));
}
void draw () {//เป็น function หนึ่งใน system function เช่นเดียวกับ setup มีการเรียกใช้อัตโนมัติ แต่การทำงานของทั้งสองจะแตกต่างกัน void draw จะทำงานตาม Statement และเงื่อนที่ได้กำหนดให้นั้นซ้ำๆไปเรื่อยๆ
  drawBackg();//เรียกใช้ function ที่เรากำหนดเอง
  drawUFO(x,y,60);//เรียกใช้ function ที่เรากำหนดเอง

if (x<440) {
  x=x+3;
}else {
  if(y<-440){
   x=0;
   y=0;
}else{
   y=y-1;
}
}
if ( c<=80) {
c = c+5;
}
else
if (d <=-80) {
d= 0;
c=0;
}
else {
d = d-5;
}
}

void drawUFO(int x,int y,int A) {//เป็น function ที่เรากำหนดเอง
  fill (300,200,30);
 int [ ] posts = {3,2,3,4};//index เก็บค่าจำนวนเอาไว้

 drawRow(x+50,y,posts[0],A);
   A=A+50;
 drawRow(x+100,y,posts[1],A);
   A=A+100;
 drawUFO1(c,d);
 drawRow(x+50,y,posts[2],A);
   A=A+50;
 drawRow(x,y,posts[3],A);
   A=A+50;

}

void drawUFO1(int c,int d){//เป็น function ที่เรากำหนดเอง
strokeWeight(3);
fill(#36648B);
ellipse(250-c-d,230,70,130);
ellipse(250-c-d,250,200,70);
fill(#AFEEEE);
arc(250-c-d,230,120,40,0,PI);
arc(250-c-d,230,110,160,PI,TWO_PI);
arc(250-c-d,230,70,130,PI,TWO_PI);
fill(54,122,234);
ellipse(250-c-d,195,35,35);
fill(0);
ellipse(250-c-d,195,15,15);
arc(250-c-d,225,30,15,0,PI);
fill(254,123,125);
ellipse(190-c-d,230,20,20);
ellipse(225-c-d,250,20,20);
ellipse(275-c-d,250,20,20);
ellipse(310-c-d,230,20,20);
}

void drawRow(int x,int y,int n,int A){//เป็น function ที่เรากำหนดเอง
  int count = 0;
  while(count<n){
  ellipse (30+x+y,A,30,15);
  ellipse (30+x+y,A+10,80,20);
    count = count +1;//เพิ่มจำนวนการวน loop
    x=x+90;//บวก 90 ที่ x ทุกครั้งที่สิ้นสุด statement เพื่อกลับไปวน loop ใหม่หรือออกจาก loop

  }
}

calculator max min and average





float[]Age={18,18.5,19,20,21,25,35,18,19,22};//เป็น index สำหรับเก็บข้อมูลที่มีจำนวนหลายๆค่า
int i=0;//กำหนดตำแหน่งลำดับของข้อมูล
float a;
float max = Age[0];//ค่าสูงสุด
float min = Age[0];//ค่าต่ำสุด
float average = 0;//ค่าเฉลี่ย

void setup() {//เป็น function หนึ่งใน system function เป็น function ที่เรียกใช้อัตโนมัติ และยังเป็นฟังก์ชั่นที่ทำงานเพียงครั้งเดียวที่เราต้องนำเอามาใช้เพราะต้องการให้โปรแกรมแสดงผลเพียงครั้งเดียว หากเราใช้ void setup ในการเรียกจะทำให้เกิดการทำซ้ำสามารถทดลองได้ที่ http://processingjs.org/tools/processing-helper.html โดยให้เปลี่ยนจาก void setup เป็น void draw
  while (i<Age.length) {//เงื่อนไข กำหนดให้ i น้อยกว่า Age.length ซึ่ง Age.length คือ ขนาดของที่เก็บข้อมูลว่ามีกี่ค่าโดยใน index ที่ได้กำหนดข้างต้นจะเก็บค่าตั้งแต่ 0-9 (รวมมีจำนวน ๅจ จำนวน)
      if (Age[i] >max) {//ถ้า Age ในตำแหน่ง i มากกว่า ค่าสูงสุด
      max = Age[i];//จะทำให้ได้ค่า max ใหม่นั่นก็คือ Ageในตำแหน่งที่ i
      a = i+1;//เมื่อเงื่่อนไขเป็นจริงให้เพิ่มตำแหน่งโดยการ+1
     }
    if (Age[i] < min) {//ถ้า Age ในตำแหน่ง i น้อยกว่า ค่าสูงสุด
      min = Age[i];//จะทำให้ได้ค่า min ใหม่นั่นก็คือ Ageในตำแหน่งที่ i
      a = i+1;//เมื่อเงื่่อนไขเป็นจริงให้เพิ่มตำแหน่งโดยการ+1
    }
      average = average+Age[i];//เก็บค่าโดยให้มีการบวกจำนวนต่างๆที่มีอยู่ใน index แล้วนำผลรวมนั้นไปคิดค่าเฉลี่ย
      i=i+1;
         
  }
  println("Max of age is = "+max);//แสดงผลค่า max
  println("Min of  age is= "+min);//แสดงผลค่า min
  println("average of age is= "+average/i);//แสดงผลค่าเฉลี่ย
}

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

E

void setup(){
size (500,500);
int x=50;
int y=30;
int r=60;
int[] posts=new int[5];
posts[0]=5;
posts[1]=4;
posts[2]=2;
posts[3]=3;
posts[4]=3;
posts[5]=2;
posts[6]=4;
posts[7]=5;
drawRow(x,y,posts[0],r);
y=y+r;
drawRow(x,y,posts[1],r);
y=y+r;
drawRow(x,y,posts[2],r);
y=y+r;
drawRow(x,y,posts[3],r);
y=y+r;
drawRow(x,y,posts[4],r);
y=y+r;
drawRow(x,y,posts[5],r);
y=y+r;
drawRow(x,y,posts[6],r);
y=y+r;
drawRow(x,y,posts[7],r);
y=y+r;
}
void drawRow(int x,int y,int n,int r){
while(n>0){
ellipse(x,y,r,r);
n=n-1;
x=x+60;
}
}