120 likes | 218 Views
Programming Project 1 Truth Table Lecture 03, file P1 Due January 24 before class as a link on your PPP. CS1050: Understanding and Constructing Proofs. Spring 2006. Jarek Rossignac. Truth Tables. Write a program that will display the truth tables for Boolean expressions
E N D
Programming Project 1 Truth TableLecture 03, file P1Due January 24 before class as a link on your PPP CS1050: Understanding and Constructing Proofs Spring 2006 Jarek Rossignac
Truth Tables • Write a program that will display the truth tables for Boolean expressions • A template is provided at http://www.gvu.gatech.edu/~jarek/courses/1050/processing/P1 • Modify it to display the truth tables for • E=(ABC) ¬(AB BC CA) ABC • G=A B C • Export it and post a web page for it • Details to include are described below (online report) • Add a link to it from your PPP • Email the TA by January 24 • Subject: 1050 P1 • Remind the TA of the URL for the PPP
Start with a similar program • Go to my PPP • http://www.gvu.gatech.edu/~jarek/courses/1050/processing/ppp.html • Access the source code for Project 1 • Study it • Modify it to draw the truth table for • (ABC) ¬(AB BC CA) ABC • Run it and capture the image of the truth table • Comment out the above expression and modify it to draw the truth table for • A B C • Run it and capture the image of the truth table • Export the applet
Produce an online report • Modify the resulting index.html to include the usual info • As you did for P0 • Name, P1, title, date completion, link to source code • Insert the images of the two truth tables with the corresponding formulae AND the corresponding Processing expression that you used to implement them • Conclude whether the two expressions are equivalent • Make sure that you have modified the header of the source file (Project no, title, your name, completion date) • Make sure to include a link to this page from your PPP
Global variables PFont fontUsed; // name of font used for writing numbers on the graphic screen int W=16, H=16; // width and height of the table int T[][] = new int[H][W]; // 2D table (array). Will contain integers boolean TF[][] = new boolean[H][W]; // 2D table (array). Will contain booleans color myRed = color(250,100,100); // my colors (R,G,B) in [0,255] int cw, ch; // cell width and height
Setup void setup() { // executed only once as initialization size(500, 500); // opens graphic window of 600x600 pixels. // X axis goes right, Y axis goes DOWN cw=int(0.9*width/W); // computes cell sizes (margin). Cast to integer ch=int(0.9*height/H); // (height and width of window are keywords) fontUsed = loadFont("Times-Roman-25.vlw"); // this font must be loaded (MENU-BAR > TOOLS > CREATE FONTS) textFont(fontUsed, 15); // selects font and assigns size }; // end of setup
Draw void draw() { // will be executed continuously (loop) background(200); // erases the screen and // paints a light grey background (0 is black, 255 is white) strokeWeight(2); // lines will be drawn thicker translate(width*0.05,height*0.05); // move origin, leave margin ShowTruthTable(); // Defined below: does all the work noLoop(); // stops the loop of draw() }; // end of draw
Control // executed when a key is pressed void keyPressed() { if (key=='i') { saveFrame("squares-####.tif");}; // saves a tif image of the graphics window in the folder of this program, replaces #### by a different number each time };
ShowTruthTable void ShowTruthTable() { color cellColor = myGreen; // set cellColor to default green int v=0; // current value, will be incremented as we scan the table byte B; // byte equivalent of v String S; // string used to extract the bits of B boolean P[] = new boolean [8]; // table of Booleans corresponding to these bits for (int h=0; h<H; h++) { // scan the rows using integer h for (int w=0; w<W; w++) { // scan the entries in each row using integer w T[h][w]=v; // store integer value to be displayed in cell B=byte(v % 256); // converts to a byte using modulo S=binary(B); // extracts bits into a string for (int j=0; j<S.length(); j++) { P[j] = S.charAt(j) == '1'; }; // sets T/F values for each bit if (expression(P[0],P[1],P[2],P[3],P[4],P[5],P[6],P[7])) // test expression {cellColor = myGreen;} // to set color else {cellColor = myRed; }; drawCell(w*cw,h*ch,cw,ch,cellColor,T[h][w]); // calls my DrawCell v++; // increment v }; }; // end of double loop };
Draw a cell and print its value // will draw cell (position, size, color, text) void drawCell(int wp, int hp, int cwp, int chp, color cp, int vp) { fill(cp); // set color to be used for filling in regions rect(wp,hp,cwp,chp); // draws and fills a rectangular region fill(0); // to write in black // text(vp,wp+cwp/10,hp+chp*0.8);// writes int vp on the screen text(binary(vp,8),wp+cwp/10,hp+chp*0.8); // writes vp as binary in cell on the screen };
Proposition // Function evaluating the Boolean expression boolean expression (boolean A, boolean B, boolean C, boolean D, boolean E, boolean F, boolean G, boolean H) { boolean res = A==B==C==D==E==F==G==H ; // what does this compute ??? return(res); };