Yhtälön ratkaisua for-silmukan avulla
Yhtälön ratkaisua for-silmukan avulla

Tämä simulaatio havainnollistaa yhtälön ratkaisua for-silmukan avulla. Jos yhtälön vasemman puolen arvo on sama kuin oikean puolen arvo, niin silloin asetetaan punainen väri, muutoin musta väri. Yhtälön ratkaisun näkee punaisella. Kopioi alla oleva koodi ja aja ohjelma. Älä tee koodiin muutoksia.
// Ohjelman tehnyt: e-Oppi Oy
// 28.2.2018
int a = 600; // Laskurin alkuarvo
int b = 305; // Laskurin alkuarvo
int c = 705; // Laskurin alkuarvo
int d = 375; // Laskurin alkuarvo
int laskuri = 0;
void setup () {
size(1000,700); // ikkunan koko
stroke(0); // Musta viivan väri
textSize(30); // Tekstin koko
}
void draw() {
background(255); // Tyhjennä tausta
int a2 = round(map(a,0,950,-10,10));
int b2 = round(map(b,0,950,-10,10));
int c2 = round(map(c,0,950,-10,10));
int d2 = round(map(d,0,950,-10,10));
fill(0,200,255);
fill(255);
rect(500,200,500,500);
stroke(200);
pushMatrix();
translate(500,200);
for (int t=-10; t <= 10; t++) {
line(t*50,-500,t*50,500);
line(-500,t*50,500,t*50);
}
strokeWeight(3);
line(0,-500,0,500);
line(-500,0,500,0);
strokeWeight(1);
stroke(0);
fill(0);
textSize(20);
for (int h = -10; h<= 10; h++) {
int y1 = a2*h+b2;
int y2 = c2*h+d2;
if (y1 == y2) { fill(255,0,0); } else { fill(0); }
text("f("+h+") = "+y1,10,250+h*20);
text("f("+h+") = "+y2,260,250+h*20);
}
popMatrix();
fill(240);
noStroke();
rect(0,200,500,500);
rect(0,0,1000,200);
stroke(0);
strokeWeight(1);
fill(255,255,0); // Keltainen täyttöväri
rect(0,0,999,50); // Piirrä keltainen suorakulmio
rect(0,50,999,50); // Piirrä keltainen suorakulmio
rect(0,100,999,50); // Piirrä keltainen suorakulmio
rect(0,150,999,50); // Piirrä keltainen suorakulmio
fill(255,100,100); // Punainen täyttöväri
rect(a,0,60,50); // Piirrä punainen neliö
rect(b,50,60,50); // Piirrä punainen neliö
rect(c,100,60,50); // Piirrä punainen neliö
rect(d,150,60,50); // Piirrä punainen neliö
int x1 = mouseX; // Selvitä hiiren vaakakoordinaatti
int y1 = mouseY;
if (mousePressed == true) {
if ((y1 > 0) && (y1 < 50)) {
if ((x1>a) && (a < 950)) { // Jos hiiri on oikealla puolen
a++; // niin kasvata laskuria
}
if ((x1<a) && (a >= 0)) { // Jos hiiri on vasemmalla puolen
a--; // niin pienennä laskuria
}
}
if ((y1 > 50) && (y1 < 100)) {
if ((x1>b) && (b < 950)) { // Jos hiiri on oikealla puolen
b++; // niin kasvata laskuria
}
if ((x1<b) && (b >= 0)) { // Jos hiiri on vasemmalla puolen
b--; // niin pienennä laskuria
}
}
if ((y1 > 100) && (y1 < 150)) {
if ((x1>c) && (c < 950)) { // Jos hiiri on oikealla puolen
c++; // niin kasvata laskuria
}
if ((x1<c) && (c > 0)){ // Jos hiiri on vasemmalla puolen
c--; // niin pienennä laskuria
}
}
if ((y1 > 150) && (y1 < 200)) {
if ((x1>d) && (d < 950)) { // Jos hiiri on oikealla puolen
d++; // niin kasvata laskuria
}
if ((x1<d) && (d > 0)){ // Jos hiiri on vasemmalla puolen
d--; // niin pienennä laskuria
}
}
}
fill(0); // Musta tekstin väri
textSize(25); // Tekstin koko
text(a2,a+5,45);
text(b2,b+5,95);
text(c2,c+5,145);
text(d2,d+5,195);
textSize(24); // Tekstin koko
text("void setup () {",10,240);
text("size(500,500); ",30,270);
text("background(255);",30,300);
text("textSize(20);",30,330);
text("}",10,360);
text("void draw () {",10,420);
text("for (int x = -10; x <= 10; x++) {",30,450);
if (b2 >= 0) {
text("int y1 = "+a2+"*x+"+b2+";",50,480);
} else {
text("int y1 = "+a2+"*x"+b2+";",50,480);
}
if (d2 >= 0) {
text("int y2 = "+c2+"*x+"+d2+";",50,510);
} else {
text("int y2 = "+c2+"*x"+d2+";",50,510);
}
text("if (y1==y2) { fill(255,0,0); }",50,540);
text("else { fill(0); }",50,570);
text("text(\"f(\"+x+\") = \"+y1,10,250+x*20);",50,600);
text("text(\"f(\"+x+\") = \"+y2,260,250+x*20);",50,630);
text("}",30,660);
text("}",10,690);
}