tag:blogger.com,1999:blog-18674138028966107622024-03-08T01:17:48.172-08:00AkH!|Na+hAkH!|Na+hhttp://www.blogger.com/profile/11790846569981597851noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-1867413802896610762.post-33916109732183124722011-01-04T09:02:00.001-08:002011-01-18T09:32:01.519-08:00Multiplication In Hack Assembly Language<div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">This is a HACK Assembly language program to multiply two numbers. The numbers reside in the memory location of Register R0 and R1. This numbers are fetched and manipulated and the result is obtained.</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">This project is to be done in chapter 4 of the book "Elements Of Computing System". </span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">The assembly code for Multiplication of two numbers is as shown below:</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="text-align: justify;"><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>@i</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>M=1</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i>(LOOP)</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>@i</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>D=M</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>@R1</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>D=D-M</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>@END</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>D;JGT</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>@R0</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>D=M</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>@mul</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>M=M+D</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>@i</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>M=M+1</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>@LOOP</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>0;JMP</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i>(END)</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>@END</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-tab-span" style="white-space: pre;"> </span>0;JMP</i></b></span></div></div>AkH!|Na+hhttp://www.blogger.com/profile/11790846569981597851noreply@blogger.com1tag:blogger.com,1999:blog-1867413802896610762.post-22188828858959435832011-01-04T08:22:00.001-08:002011-01-18T09:33:26.151-08:00HACK ALU<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span">This is the implementation of Hack Arithmetic And Logic Unit (ALU) of chapter 2. </span><span class="Apple-style-span">ALU is implemented by using the previously built gates of chapter 1 and chapter 2 . ALU consists of 8 inputs and 3 outputs. Depending on the value of zx, nx, zy, ny, f and no all the operations of ALU are performed on input x and y.</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">The HDL code for ALU is as shown below:</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">CHIP ALU{ </span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IN x[16],y[16],zx,nx,zy,ny,f,no;</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> OUT out[16],zr,ng;</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> PARTS:</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span> Mux16(a=x,b[1..15]=false,sel=zx,out=w2);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span> Not16(in=w2,out=w3);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> Mux16(a=w2,b=w3,sel=nx,out=x1);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> Mux16(a=y,b[1..15]=false,sel=zy,out=w5);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> Not16(in=w5,out=w6);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> Mux16(a=w5,b=w6,sel=ny,out=y1);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-tab-span" style="font-family: Verdana, sans-serif; white-space: pre;"><b><i> </i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Add16(a=x1,b=y1,out=add1);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>And16(a=x1,b=y1,out=or1);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-tab-span" style="font-family: Verdana, sans-serif; white-space: pre;"><b><i> </i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Mux16(a=or1,b=add1,sel=f,out=out1);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Not16(in=out1,out=out2);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-tab-span" style="font-family: Verdana, sans-serif; white-space: pre;"><b><i> </i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Mux16(a=out1,b=out2,sel=no,out=out,out=test,out[0..7]=fstout,out[8..15]=sndout);<span class="Apple-tab-span" style="white-space: pre;"> </span></span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>And16(a=test,b[15]=true,b[0..14]=false,out[15]=ng);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-tab-span" style="font-family: Verdana, sans-serif; white-space: pre;"><b><i> </i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Or8Way(in=fstout,out=orout1);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Or8Way(in=sndout,out=orout2);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Or(a=orout1,b=orout2,out=orout3);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Not(in=orout3,out=zr);</span></i></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">}</span></i></b></div><div><b><i><span class="Apple-style-span" style="font-size: large;"><br />
</span></i></b></div>AkH!|Na+hhttp://www.blogger.com/profile/11790846569981597851noreply@blogger.com0tag:blogger.com,1999:blog-1867413802896610762.post-56582036641885562122011-01-03T10:20:00.001-08:002011-01-18T09:33:51.956-08:00AND using NAND only<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Implementation of AND gate using NAND gate only.</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">This is the first Project of the chapter 1.</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><i><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">CHIP And</span></b></i></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><i><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">{<span class="Apple-tab-span" style="white-space: pre;"> </span></span></b></i></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><i><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"></span> IN a, b;</span></b></i></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><i><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>OUT out; </span></b></i></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><i><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></b></i></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><i><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>PARTS:</span></b></i></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><i><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Nand(a=a,b=b,out=x);</span></b></i></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><i><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Not(in=x,out=out);</span></b></i></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><i><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></b></i></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><i><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">}</span></b></i></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span">The above is the Hardware Description Language used to implement AND gate</span>.</span></div><div style="font-family: 'Times New Roman'; font-size: medium;"></div>AkH!|Na+hhttp://www.blogger.com/profile/11790846569981597851noreply@blogger.com0tag:blogger.com,1999:blog-1867413802896610762.post-37675412085612811582011-01-03T09:45:00.001-08:002011-01-18T09:34:28.987-08:00Logic Circuit<div style="font-size: medium; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">The main reason for simulating Logic Circuit in Python is to understand the concept of <b><i>Object Oriented Programming </i></b>and the power of <b><i>Inheritance.</i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">A couple of Python classes is used to simulate the behavior of logic circuits. The program consists of,</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">1) A base class LC (logic circuit) which will be subclassed to actual gates and other circuits.</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">2) A second class, Connector, will be used to provide inputs and outputs to the logic circuits. </span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">3) And an output connectors <em>connect</em> method which will simulate the wiring of LC's to one another.</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">In this, 3 basic logic gates AND , OR , NOT are first build. Then using the 3 basic gates a NAND, XOR, NOR, XNOR gates are build.</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Then later the half adder and full adder circuits are also build using the logic gates. </span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">The entire program is as follows:</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">class Connector :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> </span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def __init__ (self, owner, name, activates=0, monitor=0) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.value = None</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.owner = owner</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> <a href="http://self.name/">self.name</a> = name</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.monitor = monitor</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.connects = []</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b style="font-style: italic;"> self.activates= activates </b># If true change kicks evaluate function</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def connect (self, inputs) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> if type(inputs) != type([]) : inputs = [inputs]</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> for input in inputs : self.connects.append(input)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def set (self, value) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b style="font-style: italic;"> if self.value == value : return </b># Ignore if no change</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.value = value</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> if self.activates : self.owner.evaluate()</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> if self.monitor :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> print "Connector %s-%s set to %s" % (<a href="http://self.owner.name/">self.owner.name</a>,<a href="http://self.name/">self.name</a>,self.value)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> for con in self.connects : con.set(value)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">class LC :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i style="font-weight: bold;"> </i># Logic Circuits have names and an evaluation function defined in child classes</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> # They will also contain a set of inputs and outputs</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def __init__ (self, name) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> <a href="http://self.name/">self.name</a> = name</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def evaluate (self) : return</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> </span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b style="font-style: italic;">class Not (LC) : </b># Inverter. Input A. Output B.</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def __init__ (self, name) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> LC.__init__ (self, name)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A = Connector(self,'A', activates=1)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.B = Connector(self,'B')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def evaluate (self) : self.B.set(not self.A.value)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b style="font-style: italic;">class Gate2 (LC) : </b># two input gates. Inputs A and B. Output C.</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def __init__ (self, name) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> LC.__init__ (self, name)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A = Connector(self,'A', activates=1)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.B = Connector(self,'B', activates=1)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.C = Connector(self,'C')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b style="font-style: italic;">class And (Gate2) : </b># two input AND Gate</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def __init__ (self, name) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> Gate2.__init__ (self, name)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def evaluate (self) : self.C.set(self.A.value and self.B.value)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b style="font-style: italic;">class Or (Gate2) : </b># two input OR gate.</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def __init__ (self, name) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> Gate2.__init__ (self, name)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def evaluate (self) : self.C.set(self.A.value or self.B.value)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">class Xor (Gate2) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def __init__ (self, name) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> Gate2.__init__ (self, name)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b style="font-style: italic;"> self.A1 = And("A1") </b></span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A2 = And("A2")</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.I1 = Not("I1")</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.I2 = Not("I2")</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.O1 = Or ("O1")</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A.connect ([ self.A1.A, self.I2.A])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.B.connect ([ self.I1.A, self.A2.A])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.I1.B.connect ([ self.A1.B ])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.I2.B.connect ([ self.A2.B ])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A1.C.connect ([ self.O1.A ])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A2.C.connect ([ self.O1.B ])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.O1.C.connect ([ self.C ])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b style="font-style: italic;">class HalfAdder (LC) : </b># One bit adder, A,B in. Sum and Carry out</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def __init__ (self, name) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> LC.__init__ (self, name)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A = Connector(self,'A',1)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.B = Connector(self,'B',1)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.S = Connector(self,'S')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.C = Connector(self,'C')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.X1= Xor("X1")</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A1= And("A1")</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A.connect ([ self.X1.A, self.A1.A])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.B.connect ([ self.X1.B, self.A1.B])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.X1.C.connect ([ self.S])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A1.C.connect ([ self.C])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b style="font-style: italic;">class FullAdder (LC) : </b># One bit adder, A,B,Cin in. Sum and Cout out</span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> def __init__ (self, name) :</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> LC.__init__ (self, name)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A = Connector(self,'A',1,monitor=1)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.B = Connector(self,'B',1,monitor=1)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.Cin = Connector(self,'Cin',1,monitor=1)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.S = Connector(self,'S',monitor=1)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.Cout = Connector(self,'Cout',monitor=1)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.H1= HalfAdder("H1")</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.H2= HalfAdder("H2")</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.O1= Or("O1")</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.A.connect ([ self.H1.A ])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.B.connect ([ self.H1.B ])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.Cin.connect ([ self.H2.A ])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.H1.S.connect ([ self.H2.B ])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.H1.C.connect ([ self.O1.B])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.H2.C.connect ([ self.O1.A])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.H2.S.connect ([ self.S])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> self.O1.C.connect ([ self.Cout])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">class Nor(Gate2):</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>def __init__(self,name):</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Gate2.__init__(self,name)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.O1=Or("O1")<span class="Apple-tab-span" style="white-space: pre;"> </span></span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.N1=Not("N1")</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.A.connect([self.O1.A])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.B.connect([self.O1.B])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.O1.C.connect([self.N1.A])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.N1.B.connect([self.C])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> </span></i></b></span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> </span></i></b></span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">class Xnor(Gate2):</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>def __init__(self,name):</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Gate2.__init__(self,name)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.A1=And('A1')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.A2=And('A2')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.O1=Or('O1')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.N1=Not('N1')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.N2=Not('N2')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.A.connect([self.A1.A,self.N2.A])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.B.connect([self.A1.B,self.N1.A])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.N1.B.connect([self.A2.A])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.N2.B.connect([self.A2.B])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.A1.C.connect([self.O1.A])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.A2.C.connect([self.O1.B])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>self.O1.C.connect([self.C])</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> </span></i></b></span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">def main():</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> </span></i></b></span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>gate=input('Enter the Logic Gate( And / Or / Not / Xor / Nor / Xnor ):')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>in1=input('Enter the value for A:')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> in2=input('Enter the value for B:')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>a=gate('A1')</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>a.C.monitor=1 </span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>a.A.set(in1)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>a.B.set(in2)</span></i></b></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> </span></i></b></span></span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">main()</span></i></b></span></div><div><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></i></b></span></div>AkH!|Na+hhttp://www.blogger.com/profile/11790846569981597851noreply@blogger.com0tag:blogger.com,1999:blog-1867413802896610762.post-49456561203416480342011-01-03T09:43:00.001-08:002011-01-03T09:46:49.916-08:00Huffman Coding<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: 'Times New Roman'; font-size: medium; "></p><div style="text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <span class="Apple-style-span" style="font-family: arial; font-size: small; "><br class="Apple-interchange-newline"><br></span></div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <font face="Verdana, sans-serif"><b><i>Huffman coding algorithm</i></b> is a minimal variable-length character coding algorithm based on the frequency of each character.The algorithm was developed by David Huffman. This is called "lossless" compression and is different from "lossy" compression used in audio and video files where the exact original cannot be reproduced. This is used in programs like Winzip, gzip, stuffit etc. The secret of compressing data lies in the fact that not all characters are equally common. For instance, in typical English text the letter 'e' is much more common than the letter 'z'. In fact there are roughly 70 'e's for every 'z'. If we could encode the letter 'e' with less than the usual 8 bits and in exchange let the letter 'z' be take more.</font></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><font face="Verdana, sans-serif"><br></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <font face="Verdana, sans-serif">Huffman Coding program consists of <b>7</b> functions. The functions is explained below:</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <font face="Verdana, sans-serif"><br></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><u><b><font face="Verdana, sans-serif">1. Determining Relative frequencies</font></b></u></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><font face="Verdana, sans-serif"><br></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <font face="Verdana, sans-serif">The function input is a string. A dictionary of letters along with their number of occurrence is created.</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <font face="Verdana, sans-serif"><br></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><i><br> </i></p><div style="font-weight: bold; font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i>def Freq(stri):</i></font></p> </div><div style="font-weight: bold; font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>freq = {}</i></font></p> </div><div style="font-weight: bold; font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>for ch in stri:</i></font></p> </div><div style="font-weight: bold; font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>freq[ch] = freq.get(ch,0)+1</i></font></p> </div><div style="font-weight: bold; font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>print freq</i></font></p> </div><div style="font-weight: bold; font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font style="white-space: pre-wrap; "><font face="Verdana, sans-serif"> </font></font></p> </div><div style="font-weight: bold; font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><u><font face="Verdana, sans-serif">2. Sorting list of tuples</font></u></p> </div><div style="font-weight: bold; font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><u><font face="Verdana, sans-serif"><br> </font></u></p></div><div style="font-weight: bold; font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font style="font-weight: normal; "><font face="Verdana, sans-serif">This function builds and sorts a list of tuples. This list will be the input for the main Huffman algorithm.</font></font></p> </div><div style="font-weight: bold; font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font style="font-weight: normal; "><font face="Verdana, sans-serif"><br> </font></font></p></div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><i><br></i></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <b><font face="Verdana, sans-serif"><i>def SortFreq(freq):</i></font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>tuples=[]</i></font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>for all in freq:</i></font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>tuples.append((freq[all],all))</i></font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>tuples.sort()</i></font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>print tuples</i></font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <b><font face="Verdana, sans-serif"><i><br></i></font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <b><font style="white-space: pre-wrap; "><font face="Verdana, sans-serif"> </font></font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <b><u><font face="Verdana, sans-serif">3. Building a Tree</font></u></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <b><u><font face="Verdana, sans-serif"><br></font></u></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <font face="Verdana, sans-serif"><b><font style="font-weight: normal; ">This function pops two elements from the front of the list and combined into a new element. T</font></b>hese 2 elements will have the least frequencies. The frequency of the new branch point is simply the sum of the frequencies of its two parts. Next we add this new element onto the list and sorted to find it's new position. The process is repeated until the list has a single element which represents the complete tree.</font></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><font face="Verdana, sans-serif"><br></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><b><font face="Verdana, sans-serif"><i>def BuildTree(tuples):</i></font></b></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>global string</i></font></b></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>while len(tuples)>1:</i></font></b></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>leastTwo=tuple(tuples[0:2])</i></font></b></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>rest=tuples[2:]</i></font></b></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>combFreq=leastTwo[0][0]+leastTwo[1][0]</i></font></b></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>tuples=rest+[(combFreq,leastTwo)]</i></font></b></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>tuples.sort()</i></font></b></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>print tuples </i></font></b></p> <div style="font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><br></font></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><br></font></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><u style="font-weight: bold; ">4. Trimming of the frequencies </u></font></p></div> <div style="font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><u><font face="Verdana, sans-serif"><br> </font></u></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><u><font face="Verdana, sans-serif"><br></font></u></b></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif">This function trims the frequencies thus resulting in tuples containing only letters with no corresponding frequencies.</font></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><br></font></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><br></i></font></b></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "> <div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i>def Trim(tuples):</i></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>p=tuples[1];</i></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>if type(p)==type(""):</i></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>return p</i></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>else: </i></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>return (Trim(p[0]),Trim(p[1])) </i></font></b></p></div></div><div style="font-family: 'Times New Roman'; font-size: medium; "> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><br></font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><br></font></b></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "><h2 style="text-align: justify; "><font face="Verdana, sans-serif" size="3"><u>5. Assigning codes to the Characters</u></font></h2> </div><div style="font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif" size="3"><u><br> </u></font></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif">This function assigns codes to the letters in the </font><font face="Verdana, sans-serif">tree keeping track of the left and right turns in the variable "pat". There is a global dictionary "codes" which will be filled in along the way.</font></p> </div><div style="font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><br> </font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><br></font></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "> <div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><br></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><i>def Coding(node,pat=""):</i></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>global code</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>if type(node)==type(""):</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>code[node] = pat</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><br></i></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>else:</i></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font> Coding(node[0],pat+'0')</i></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font> Coding(node[1],pat+'1')</i></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <font style="white-space: pre-wrap; "><b><font face="Verdana, sans-serif"><i> </i></font></b></font></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>return code<font style="white-space: pre-wrap; "> </font></i></font></b></p></div></div><div style="font-family: 'Times New Roman'; font-size: medium; "> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "></p><div style="text-align: justify; "><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-weight: bold; white-space: pre-wrap; "><br> </span></div><b style="font-size: medium; "><div style="text-align: justify; font-family: 'Times New Roman'; "><span class="Apple-style-span" style="font-weight: normal; "><b style="font-family: 'Times New Roman'; font-size: medium; "><font style="white-space: pre-wrap; "><font face="Verdana, sans-serif"> </font></font></b></span></div> </b><p></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><u><font face="Verdana, sans-serif"><font style="white-space: pre-wrap; ">6. E</font>ncoding a Text Stream</font></u></b></p> </div><div style="font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><u><font face="Verdana, sans-serif"><br> </font></u></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><u><font face="Verdana, sans-serif"><br></font></u></b></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif">This function looks up the bit string for each character from the coded dictionary and replace it..</font></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><br></font></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><br></font></b></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "> <div style="font-weight: bold; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i>def encoding(str):</i></font></p></div><div style="font-weight: bold; "> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>global code</i></font></p></div> <div style="font-weight: bold; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>result=""</i></font></p> </div><div style="font-weight: bold; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>for let in str:</i></font></p> </div><div style="font-weight: bold; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>result+=code[let]</i></font></p> </div><div style="font-weight: bold; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>return result </i></font></p> </div><div style="font-weight: bold; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><br></font></p></div><div><h2 style="text-align: justify; "> <u><font face="Verdana, sans-serif" size="3">7. Decoding a Text Stream </font></u></h2></div></div><div style="font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <u><font face="Verdana, sans-serif"><br></font></u></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <font face="Verdana, sans-serif">This function does the reverse process of encodeing. In this each "zero" in the bit stream means a left turn up the tree, each "one" a right turn. When a leaf is reached, its character is sent to the output and we restart at the base of the tree for the next character.</font></p> </div><div style="font-family: 'Times New Roman'; font-size: medium; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><br> </font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><font face="Verdana, sans-serif"><i><br></i></font></p></div><div style="font-family: 'Times New Roman'; font-size: medium; "> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><b><i><font face="Verdana, sans-serif"></font></i></b></p><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "> <b><font face="Verdana, sans-serif"><i>def decoding(tree,str):</i></font></b></p></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>result=""</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>p=tree</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>for num in str:</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>if num=='0':</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>p=p[0]</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>else:</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>p=p[1]</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>if type(p)==type(""):</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>result+=p</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>p=tree</i></font></b></p> </div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; "><b><font face="Verdana, sans-serif"><i><font style="white-space: pre-wrap; "> </font>return result</i></font></b></p> </div></div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><b><font face="Verdana, sans-serif">Output:</font></b></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><b><font face="Verdana, sans-serif"><br></font></b></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><font face="sans-serif">This program turns the original string "<b><i>aaabccdeeeeeffg</i></b>" into 44 bits that we represent with "<b><i>00000010010100101010111111111101101110111000</i></b>". The original text at one byte per character requires 120 bits.</font></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "><font face="sans-serif"><br></font></p><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "><span class="Apple-style-span" style="font-size: small; "><font color="#888888"><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-family: 'Times New Roman'; font-size: medium; "> <font face="sans-serif"><br></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: justify; font-size: medium; "><font class="Apple-style-span" face="sans-serif"><br></font></p> </font></span></span><p style="font-family: 'Times New Roman'; font-size: medium; "></p> AkH!|Na+hhttp://www.blogger.com/profile/11790846569981597851noreply@blogger.com0tag:blogger.com,1999:blog-1867413802896610762.post-79847654401126518132010-12-24T01:51:00.000-08:002011-01-18T09:36:00.431-08:00Tail Program In Python...<pre><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">This program is used to open the file specified and to print the last 10 lines of the file.</span></pre><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Program:</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i>import sys</i></span></b><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i><br />
</i></span><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i>def main(): </i></span></b><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i> line= []</i></span></b><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i> last = []</i></span></b><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i> filein = open(sys.argv[1],"r")</i></span></b><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i> for a in filein:</i></span></b><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i> line.append(a)</i></span></b><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i> last = line[-10:]</i></span></b><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i> for each in last:</i></span></b><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i> print each</i></span></b><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i>main()</i></span></b><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">While running <i>python tail.py sample_file.txt</i> in terminal, the programs prints the last 10 lines of the file "<i>sample_file.txt</i>".</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"><br />
</span>AkH!|Na+hhttp://www.blogger.com/profile/11790846569981597851noreply@blogger.com0tag:blogger.com,1999:blog-1867413802896610762.post-79265354482004254872010-12-20T10:37:00.000-08:002011-01-03T09:56:33.558-08:00Project: Nand To Tetris in 12 Steps...<div style="text-align: center;"><span class="Apple-style-span" style="color: #e69138; font-family: Verdana, sans-serif; font-size: x-large;"><br />
</span></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<a href="http://anubnair.files.wordpress.com/2010/12/cover5.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><img border="0" src="http://anubnair.files.wordpress.com/2010/12/cover5.jpg" /></span></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Cover Page of the book "The Elements of Computing Systems"</span></td></tr>
</tbody></table><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"><br />
</span><br />
<div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">From the name of the project one will find difficult at once to know the concept behind the project. But <i><b>"Nand To Tetris in 12 Steps"</b></i> is the apt name that can be given to the project. This project is the implementation of the book <i style="font-weight: bold;">"The Elements of Computing Systems" </i>by Shimon ( I<span class="Apple-style-span">DB Professor of Information Technologies and founding dean of the Efi Arazi School of Computer Science) together with Noam Nisan in 2005.</span></span></div><div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"><br />
</span></div></div><div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">The Basic criteria for a person implementing this project is mere graduation and some knowledge in basic computer science subjects. With this knowledge one can easily read and understand the concepts explained in the book and complete the project. The main idea is to build an entire computing system from the basic <b>NAND</b> gate. Hearing this one may wonder on how to implement the hardware components of the system. But the authors have taken this as a challenge and built a open source software suit which consists of Hardware Simulators. In this <b>Hardware simulators</b> using a simple <b>Hardware Description Language</b> one can easily build hardware components for building a entire system. In the different phases of the project, the students will practice many Computer Science abstractions studied in typical CS courses. The main advantage using the software suit given along with the book is that , if one finds it difficult at any phase, they can skip to the next phase or can go in any order. </span></div></div><div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"><br />
</span></div></div><div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">The book contains 12 chapters in which each chapter concretes the complete hardware platform and a modern software hierarchy from the ground up, and thus maiking the students discover how computer systems work, and how they are built. The starting of the entire system is from a Nand gate from which we bulid the other gates(since Nand gate is a universal gate). And this is depicted in the 1st chapter. The 2nd chapter teaches on how to create the Combinatorial chips(Half Adder, Full Adder, ALU...) from the previously created logic gates. Then the following chapters thus defines the designing and building of Sequential chips( Bit,Registers,RAM,...) ,Assembler, Virtual Machine and a compiler for a simple object based language all in an bottom up approach. <span class="Apple-style-span" style="color: #000040;"> </span>A mini-OS is also built, using the high-level language designed in the course. And in final phase a game is build above all the abstraction and the game is <b>TETRIS</b>...</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">And thus the final implementation from Nand To Tetris is developed in 12 steps...</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">The book, study plan along with the open source software suit is available <a href="http://www1.idc.ac.il/tecs/">here</a>...</span></div></div>AkH!|Na+hhttp://www.blogger.com/profile/11790846569981597851noreply@blogger.com0tag:blogger.com,1999:blog-1867413802896610762.post-47348572030731744222010-12-17T03:01:00.000-08:002011-01-03T09:58:16.546-08:00A Littile Bit Of Python....<div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"> Of the various popular scripting languages, <b><span class="Apple-style-span" style="color: #3d85c6;">Python</span></b><span class="Apple-style-span" style="color: blue;"> </span>is probably closest in form to traditional system languages . A host of good Python resources can be found on the Internet at <a href="http://www.python.org/"><span class="Apple-style-span" style="color: #3d85c6;">http://www.python.org</span></a>. I will focus on the features of Python that make it a particularly good choice among scripting languages as a first computer programming language.</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; font-weight: bold;"><u>1.Python is simple</u></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"> In general, scripting languages are much simpler than system languages like C++ and Java. Python has a simple, regular syntax.Python programs look like executable pseudo-code. This eliminates a host of troublesome errors for beginning programmers, especially placement of semi-colons, bracketing and indentation. For example, a common error in C++ and Java is the failure to enclose a block in braces as. Python supports the use of functions and classes but does not force it. Simple programs really are simple. </span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">For example, consider the ``Hello World'' program in Python:</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><pre style="text-align: justify;"></pre><pre style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b><i>>>print "Hello World!"</i></b>
</span></pre><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">C++ requires this program to be wrapped in a function and preceded by a preprocessor directive:</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><pre style="text-align: justify;"></pre><pre style="text-align: left;"><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i>#<b>include <iostream.h> </b></i></span></div><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><div style="text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b><i>int main()</i></b></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b><i>{ </i></b></span></div><div style="text-align: justify;"><div style="text-align: left;"><i><span class="Apple-style-span" style="font-weight: normal;"><b></b></span>
</i>
<div style="display: inline !important; text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b><span class="Apple-style-span" style="font-weight: normal;"><b><i> cout<<"Hello World!"; </i></b></span></b></span></div></div><i><span class="Apple-style-span" style="font-weight: normal;"></span>
</i>
<div style="text-align: left;"><i><span class="Apple-style-span" style="font-weight: normal;"><b></b></span>
</i>
<div style="display: inline !important; text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b><span class="Apple-style-span" style="font-weight: normal;"><b><i>}</i></b></span></b></span></div></div></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b> </b></span></div></span></b></pre><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">In Java, the situation is even worse, as all code must be inside of a class:</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><pre style="text-align: justify;"></pre><pre><div style="text-align: justify;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i>public class helloWorld</i></span></b></div><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i><div style="text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b>{ </b></span></div><div style="text-align: justify;"><div style="text-align: left;"><span class="Apple-style-span" style="font-weight: normal;"><b></b></span>
<div style="display: inline !important; text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b><span class="Apple-style-span" style="font-weight: normal;"><b> public static void main(String [] args)</b></span></b></span></div></div><span class="Apple-style-span" style="font-weight: normal;"></span>
<div style="text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b></b></span>
<div style="display: inline !important; text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b><span class="Apple-style-span" style="font-weight: normal;"><b> { </b></span></b></span></div></div></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b> System.out.println("Hello World!");</b></span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b> }</b></span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-weight: normal;"><b>}</b></span></div></i></span></b></pre><pre style="text-align: justify;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">
</span></b></pre><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">Python is dynamically typed, so there is no need for variable declarations. Python's <tt>for</tt> loop is illustrative. It allows a control variable to take on successive values in a sequence. It can be used to iterate through any sequence such as a list (array) or string. For example, the items in a list can be printed as follows:</span></div><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><pre><div style="text-align: justify;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i>for item in List:</i></span></b></div><b><div style="text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-weight: normal;"><b><i> print item </i></b></span></div></b></pre><pre style="text-align: justify;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">
</span></b></pre><pre><div style="font-weight: normal; text-align: justify; white-space: normal;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">The <tt>range</tt> operation produces a sequence of numbers in a given range. For example, <tt>range(5)</tt> produces the list <tt>[0,1,2,3,4]</tt>. This can be used to provide numerically-controlled loops. The previous code could have been written as:</span>
<span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">
</span></div><span class="Apple-style-span"><pre style="font-weight: normal; text-align: justify; white-space: normal;"></pre><pre style="text-align: justify; white-space: normal;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;">
</span></b></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i> for i in range(len(list))</i></span></b></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><i> print List[i]
</i></span></b></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><span class="Apple-style-span" style="white-space: normal;"><b><u><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: pre;">
</span></u></b></span></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><span class="Apple-style-span" style="white-space: normal;"><b><u><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: pre;">
</span></u></b></span></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><b><span class="Apple-style-span" style="font-weight: normal; white-space: normal;"><pre style="display: inline !important; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;"><b><u>2.Python is safe</u></b></span></pre></span></b></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><b><span class="Apple-style-span" style="font-weight: normal; white-space: normal;"><pre style="display: inline !important; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;"><b><u>
</u></b></span></pre></span></b></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><b><span class="Apple-style-span" style="font-weight: normal; white-space: normal;"><pre style="display: inline !important; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;"><b><u>
</u></b></span></pre></span></b></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;">
</span></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;">
</span></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;">Python provides full dynamic run-time type checking and bounds checking on array subscripts. Python employs garbage collection so there is no problem with dangling pointers or memory leaks. It is impossible for user code in Python to produce a segmentation violation.</span></pre><pre style="text-align: justify;"><h4 style="font-weight: normal; white-space: normal;"><span class="Apple-style-span" style="font-weight: normal; white-space: pre;"><b><span class="Apple-style-span" style="font-weight: normal; white-space: normal;"><pre style="display: inline !important; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;"><h4 style="display: inline !important;"><u>
</u></h4></span></pre></span></b></span></h4><h4><span class="Apple-style-span" style="font-weight: normal; white-space: normal;"><span class="Apple-style-span" style="white-space: pre;"><b><span class="Apple-style-span" style="font-weight: normal; white-space: normal;"><pre style="display: inline !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;"><b><u>2.Python supports object oriented programming</u></b></span></pre></span></b></span></span></h4><div><span class="Apple-style-span" style="font-weight: normal; white-space: normal;"><span class="Apple-style-span" style="white-space: pre;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; font-weight: normal; white-space: normal;"></span></b></span></span>
<pre style="display: inline !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="font-weight: normal; white-space: normal;"><span class="Apple-style-span" style="white-space: pre;"><b><span class="Apple-style-span" style="font-weight: normal; white-space: normal;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;"><b><u>
</u></b></span></span></b></span></span></pre></div><h4><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; font-weight: normal; white-space: normal;"><span class="Apple-style-span" style="white-space: pre;"><b><span class="Apple-style-span" style="font-weight: normal; white-space: normal;"><pre style="display: inline !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><span class="Apple-style-span" style="white-space: normal;"><b><u></u></b></span></pre></span></b></span>Although one doesn't have to use classes to write Python programs, Python does support object-oriented programming through a class mechanism similar to that provided by C++ and Java. The class model of Python is a simplification of the C++ model and supports multiple inheritance. Since Python is dynamically typed, there is no need for abstract classes a la C++ or the interface mechanism of Java. </span></h4></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;">
</span></b></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;">
</span></b></pre><pre style="font-weight: normal; text-align: justify; white-space: normal;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large; white-space: normal;"><h4><u>4.Python is fun</u></h4><div><u>
</u></div><div><u>
</u></div><span class="Apple-style-span" style="font-weight: normal;">The simplicity of Python makes it easy to learn. In addition to the list (dynamic array) data structure, Python provides tuples (immutable lists) and dictionaries (hash tables). Together with the class mechanism, these can be used to quickly build sophisticated data structures for interesting projects. The absence of type declarations makes for less code and more flexible programming. There is also a huge library of standard and contributed modules providing components for programming GUIs, client-server applications, html viewers, databases, animations, and much more. The rising popularity of scripting languages is directly attributable to the ease with which sophisticated applications can be built by combining off-the-shelf components. Interesting projects can be developed with only a fraction of the code that would be required in a system language.</span><span class="Apple-style-span" style="font-weight: normal;"> </span></span></b></pre><pre style="font-family: 'Times New Roman'; font-weight: normal; text-align: justify; white-space: normal;"><b><span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal;">
</span></b></pre></span></pre>AkH!|Na+hhttp://www.blogger.com/profile/11790846569981597851noreply@blogger.com