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

O_O Binary Calculation MINUS & Display O_O



ความหมายการแสดงผลคำตอบ : วงกลมสีแดง  => เลขศูนย์ (False)
                          วงกลมสีน้ำเงิน  => เลขหนึ่ง (True)
 
//กำหนด Array ของ Boolean เป็นตัวแปรประเภท Global variables
boolean [] A = {
  true, false, true, true
};//ใส่เลขที่เป็นตัวตั้ง ที่ต้องการคำนวณ โดยใช้ Array ชื่อ A เป็นตัวเก็บค่าของเลขฐานสองในรูปของ Boolean คือ true = 1 และ false = 0 แบบฟอร์มคือ Boolean [] ชื่อของ Boolean = {ค่าของตัวแปรที่เก็บไว้ใน Array แต่ละ index}; เพิ่มเติม index เริ่มนับตั้งแต่ศูนย์ 
boolean [] B = {
  true, false, false, false
}; //ใส่เลขที่เป็นตัวลบ ที่ต้องการคำนวณ โดยใช้ Array ชื่อ B เป็นตัวเก็บค่าของเลขฐานสองในรูป boolean
boolean [] C= new boolean [4]; //เป็น Array ชื่อ C ที่ไว้เก็บค่าของผลลัพธ์ที่คำนวณได้ และกำหนดจำนวนของ Array นี้ให้มีทั้งหมด 4 index โดยใช้คำสั่ง new Boolean [จำนวนช่องของ Array];
int index = 0;
//เป็นบรรทัดที่ประกาศ และกำหนดตัวแปร โดย int คือค่าของตัวแปรที่เป็นจำนวนเต็ม หลักการคือนำค่าทางด้านขวาของเครื่องหมาย = ไปใส่ให้ทางด้านซ้ายเรียกว่า Assingment Operator ในที่นี้หมายถึง นำ 0 ซึ่งเป็นจำนวนเต็ม ทางด้านขวาของเครื่องหมาย = ไปใส่ค่าให้กับตัวแปรทางด้านซ้าย คือตัวแปรชื่อ index นั่นเอง (ใช้เป็นค่าบอกตำแหน่งของช่องแต่ละ index)int slide = 1; //ความหมายคือ นำ 1 ซึ่งเป็นจำนวนเต็ม ทางด้านขวาของเครื่องหมาย = ไปใส่ค่าให้กับตัวแปรทางด้านซ้าย คือตัวแปร slide นั่นเอง (ใช้เป็นตัวเลื่อนตำแหน่งที่ต้องการยืมค่า)
int start = 100; (ใช้เป็นค่าเริ่มต้นในการวาดภาพวงกลมเพื่อแสดงผล)
int r = 100; (ใช้เป็นค่าบอกความกว้างของวงกลมที่วาด)
int d = 15; (ใช้เป็นค่าบอกระยะห่างของวงกลมแต่ละวง)


void setup () { //เป็นการประกาศฟังก์ชั่นชื่อ setup โดย void ที่อยู่ข้างหน้าหมายถึงทำเฉพาะในฟังก์ชั่นไม่มีการเรียกค่ากลับ
  size (550, 250); //เป็นการกำหนดขนาดของcanvas โดย size (ขนาดของแกนx, ขนาดของแกนy);
  background (255, 255, 000); //เป็นการเพิ่มสีให้กับพื้นหลัง โดย background(สีแดง, สีเขียว, สีน้ำเงิน); ค่าของสีแต่ละตัวมีได้สูงสุดไม่เกิน 255 และต่ำสุดที่ 000
  index = A.length-1; //กำหนดให้ index เท่ากับความยาวของ array ลบ 1
  while (index >= 0) { //เป็นคำสั่ง while ซึ่งหลักการคือ ถ้าเงื่อนไขที่กำหนดเป็นจริงจะกระทำตามที่เราสั่งไว้ ไปเรื่อยๆ จนกว่าเงื่อนไขนั้นจะเป็นเท็จ รูปแบบการเขียนคือ while (เงื่อนไข){คำสั่ง} โดยในข้อนี้สามารถอธิบายได้ว่า ขณะที่ iืndex มากกว่าหรือเท่ากับ 0 จะสั่งให้กระทำส่งนั้นๆไปเรื่อยๆ ถ้าอยากให้หยุดเราต้องทำให้สถานะการณ์นี้เป็นเท็จ โดยลดค่าให้กับตัวแปรในกรณีนี้คือ index นั่นเอง
    if (A[index] == false && B[index] == true) {
      A[index-slide] = !A[index-slide];
      C[index] = true;
    }
//เป็นการสร้างเงื่อนไขโดย if คือการตั้งเงื่อนไขที่ว่าถ้าจริงให้ทำ ถ้าเท็จไม่ทำ จะได้ว่า if (กำหนดค่าที่เปลี่ยนแปลงไปภายใต้เงื่อนไข) { กำหนดค่าที่ต้องการให้เปลี่ยนเมื่อเงื่อนไขสมบรูณ์; }โดยในที่นี้หมายถึง ถ้าค่าใน A[index] คือศูนย์ และ B[index] คือหนึ่งจะให้ช่องหน้าหน้า A[index] เป็นอีกตัวหนึ่ง เช่นถ้า A[index] มีค่าเท่ากับ ศูนย์ ก็ให้เป็น หนึ่งแทน จากนั้นให้ C[inex] มีค่าเท่ากับหนึ่ง (ใช้ในกรณี 0-1 = 1 แล้วต้องยืมตัวหน้าตามหลักการลบเลขฐานสอง)
    else if (A[index] == true && B[index] == false) { //โดย else if เป็นการกำหนดเงื่อนไขเป็นจริงได้หลายเงื่อนไขเพื่อเป็นทางเลือกในการตัดสินใจ หลักการใช้คล้ายๆกับเงื่อนไข if  ในกรณีนี้หมายถึง ถ้า A[index] มีค่าเท่ากับหนึ่ง และ B[index] เท่ากับศูนย์ ให้ C[index] เท่ากับหนึ่ง (ใช้ในกรณี 1-0 = 1)      C[index] = true;
      if (A[index] == true && B[index] == true) {
        C[index] = false;
      } (ใช้ในกรณี 1-1 = 0)
      if (A[index] == false && B[index] == false) {
        C[index] = false;
      }(ใช้ในกรณี 0-0 = 0)
    }
    index = index - 1; //ลดค่าของ index ลงเพื่อหยุดการวนลูป

  }
  index = 0; //กำหนด index ใหม่ให้มีค่าเท่ากับศูนย์
  while (index < A.length && index < B.length) { //ถ้า index ไม่เกินความยาวของ Array A และ B ทำตามเงื่อนไขนี้
    if (C[index] == true) { //ถ้า C[index] == true ให้พิมพ์หนึ่ง (เป็นคำสั่งแสดงค่าออกมาเป็นตัวเลข)
      print (1);
    }
    if (C[index] == false) { //ถ้า C[index] == false ให้พิมพ์Lศูนย์
      print (0);
    }
    index = index + 1; //กำหนดค่าของ index ให้มากขึ้นเพื่อหลุด loop
  }
  index = 0; (ใช้ในการวาดรูปวงกลมเพื่อแสดงผล)
  while (index < C.length) {
    if (C[index] ==
true) { (ถ้าคำตอบเป็น true ให้วาดรูปวงกลมสีน้ำเงิน โดยแต่ละวงห่างกัน เท่ากับ
(start + r)+d)
      fill (000, 000, 255);
      stroke (120, 051, 000);
      strokeWeight (5);
      ellipse (start, 125, r, r);
      start = (start + r)+d;
    }
    else {
(ถ้าคำตอบไม่เป็น true ให้วาดรูปวงกลมสีแดง)

      stroke (120, 051, 000);
      strokeWeight (5);
      fill (255, 000, 051);
      ellipse (start, 125, r, r);
      start = (start + r)+d;
    }
    index = index + 1;

  }}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น