แสดงบทความที่มีป้ายกำกับ 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;
}
}
สมัครสมาชิก:
บทความ (Atom)