My first calculator program... 
	 
	
		| Author | 
		Message | 
	 
		 
		MysticVegeta
 
  
 
    
		 | 
		
		
			
				  Posted: Mon Nov 08, 2004 6:13 pm    Post subject: My first calculator program...  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				My first calculator program. Please dont laugh...
 
 
	  | code: | 	 		  
 
View.Set ("graphics:300;400,position:middle;middle,nobuttonbar")
 
Window.Set (1, "Calculator Program")
 
put "Calculator program"
 
put "Made by Tanmaya. Grade 9 Macs student"
 
put "Copyright 2004-05"
 
loop
 
    put ""
 
    put "Enter the first number:"
 
    var a : int
 
    get a
 
    put "Enter the math function (+, -, *, /)"
 
    var s : string
 
    get s
 
    put "Enter the second number"
 
    var d : int
 
    get d
 
    put ""
 
    if s = "+" or s = "+"
 
            then
 
        put "=", a + d
 
    end if
 
    if s = "-" or s = "-"
 
            then
 
        put "=", a - d
 
    end if
 
    if s = "*" or s = "*"
 
            then
 
        put "=", a * d
 
    end if
 
    if s = "/" or s = "/"
 
            then
 
        put "=", a div d
 
    end if
 
end loop
 
  | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		cool dude
 
  
 
    
		 | 
		
		
			
				  Posted: Mon Nov 08, 2004 6:27 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| this is the wrong place to post something you did. this section is only for help. you should post  in the turing submissions or source code. anyways nice calculator. a suggestion would be by error proofing it so if the user enters a letter instead of a number the calcuator could say error or say numbers only. good job! | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Tony
 
  
 
    
		 | 
		
		
			
				  Posted: Mon Nov 08, 2004 6:33 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				why do you repeat conditions?
 
	  | code: | 	 		  
 
if s = "+" or s = "+" 
 
  | 	  
 
? | 
			 
			
				 
Tony's programming blog. DWITE - a programming contest. | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Paul
 
  
 
    
		 | 
		
		
			
				  Posted: Mon Nov 08, 2004 6:40 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				lol, no one will laugh at urs after they see my poor first calculator. Rofl, it sux bad. It seemed like ages ago... lol    
 
http://www.compsci.ca/v2/viewtopic.php?t=3452 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		myob
 
 
 
    
		 | 
		
		
			
				  Posted: Mon Nov 08, 2004 9:27 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| would be better if u put in error trap for it. soon you will learn enough about error traps (u gonna be da master of it in grade 12) | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		wtd
 
 
 
    
		 | 
		
		
			
				  Posted: Mon Nov 08, 2004 11:01 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				As has been mentioned, there's no need to repeat conditions.  Additionally, you should be using "elsif" and "else".
 
 
	  | code: | 	 		  if s = "+" then
 
   put "=", a + d
 
elsif s = "-" then
 
   put "=", a - d
 
elsif s = "*" then
 
   put "=", a * d
 
elsif s = "/" then
 
   put "=", a div d
 
else
 
   put "Bad operator."
 
end if   | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		MysticVegeta
 
  
 
    
		 | 
		
		
			
				  Posted: Sun Nov 21, 2004 10:04 pm    Post subject: ---- Version 2 ----  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				thanks for your help people, i edited the program a lil bit and called it Version 2. I LIKE IT!!! 
 
 
	  | code: | 	 		  
 
View.Set ("graphics:300;400,position:middle;middle,nobuttonbar")
 
Window.Set (1, "Calculator Program")
 
put "Calculator program V2"
 
put "Made by Tanmaya. Grade 9 Macs student"
 
put "Copyright 2004-05"
 
loop
 
    put ""
 
    put "Enter the first number:"
 
    var a : int
 
    get a
 
    put ""
 
    put "Enter the math function (+, -, *, /"
 
    put "s for sin, c for cos, t for tan"
 
    var s : string
 
    get s
 
    put ""
 
    put "Enter the second number"
 
    var d : int
 
    get d
 
    put ""
 
    put "....................................."
 
 
    %Basic Functions
 
 
    if s = "+" or s = "+"
 
            then
 
        put "=", a + d
 
    elsif
 
            s = "-" or s = "-"
 
            then
 
        put "=", a - d
 
    elsif
 
            s = "*" or s = "*"
 
            then
 
        put "=", a * d
 
    elsif
 
            s = "/" or s = "/"
 
            then
 
        put "=", a div d
 
    elsif
 
 
        %Trignometric Functions
 
 
            s = "t"
 
            then
 
        put "Tan ", a, " =", (sind (a)) / (cosd (a))
 
        put "Tan ", d, " =", (sind (d)) / (cosd (d))
 
    elsif
 
            s = "s"
 
            then
 
        put "Sin ", a, " =", sind (a)
 
        put "Sin ", d, " =", sind (d)
 
    elsif
 
            s = "c"
 
            then
 
        put "Cos ", a, " =", cosd (a)
 
        put "Cos ", d, " =", cosd (d)
 
    else
 
        put "Bad Operator"
 
    end if
 
    put "....................................."
 
 
    %Notice
 
 
    put ""
 
    put "....................................."
 
    put "Notice: "
 
    put "Arc ->tan, cos, sin are not supported"
 
    put "....................................."
 
 
    %Exit
 
 
    put ""
 
    put "....................................."
 
    put "Do you want to clear the screen? y/n"
 
    var ask : string
 
    get ask
 
    put "....................................."
 
    if ask = "y"
 
            then
 
        cls
 
    elsif ask = "n"
 
            then
 
        put ""
 
    end if
 
 
end loop
 
  | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		MattyGG
 
 
 
    
		 | 
		
		
			
				  Posted: Tue Nov 23, 2004 11:55 am    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| It's better than the first one...but there should also be a way to quit the program when you want to...otherwise great job | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		wtd
 
 
 
    
		 | 
		
		
			
				  Posted: Tue Nov 23, 2004 3:03 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Quote:     put ""
 
    put "Enter the first number:"
 
    var a : int
 
    get a
 
    put ""
 
    put "Enter the math function (+, -, *, /"
 
    put "s for sin, c for cos, t for tan"
 
    var s : string
 
    get s
 
    put ""
 
    put "Enter the second number"
 
    var d : int
 
    get d
 
    put ""
 
    put "....................................." 
 
 
Now, you have this, but how about we box it up in a procedure?
 
 
We're doing output, so it should be a procedure.  We're "getting" an "equation", so we'll call it...
 
 
	  | code: | 	 		  procedure getEquation  | 	  
 
 
We're getting information about "a" and "d", so those are the parameters for the procedure.  We're also getting an "operator".
 
 
	  | code: | 	 		  procedure getEquation (var a, d : int, var op : string)  | 	  
 
 
So, with those as parameters, we no longer need to declare them inside the procedure.  Then of course, we can end the procedure.
 
 
	  | code: | 	 		  procedure getEquation (var a, d : int, var op : string)
 
    put ""
 
    put "Enter the first number:"
 
    get a
 
    put ""
 
    put "Enter the math function (+, -, *, /"
 
    put "s for sin, c for cos, t for tan"
 
    get op
 
    put ""
 
    put "Enter the second number"
 
    get d
 
    put ""
 
    put "....................................."
 
end getEquation  | 	  
 
 
So, we can now rewrite your program slightly.  oh, and we'll simplify your conditionals. 
 
 
 
 
Is redundant.
 
 
	  | code: | 	 		  procedure getEquation (var a, d : int, var op : string)
 
    put ""
 
    put "Enter the first number:"
 
    get a
 
    put ""
 
    put "Enter the math function (+, -, *, /"
 
    put "s for sin, c for cos, t for tan"
 
    get op
 
    put ""
 
    put "Enter the second number"
 
    get d
 
    put ""
 
    put "....................................."
 
end getEquation
 
 
View.Set ("graphics:300;400,position:middle;middle,nobuttonbar")
 
Window.Set (1, "Calculator Program")
 
put "Calculator program V2"
 
put "Made by Tanmaya. Grade 9 Macs student"
 
put "Copyright 2004-05"
 
loop
 
    var a, d : int
 
    var op : string
 
    getEquation (a, d, op)
 
 
    %Basic Functions
 
    if s = "+" then
 
        put "=", a + d
 
    elsif s = "-" then
 
        put "=", a - d
 
    elsif s = "*" then
 
        put "=", a * d
 
    elsif s = "/" then
 
        put "=", a div d
 
    %Trignometric Functions
 
    elsif s = "t" then
 
        put "Tan ", a, " =", (sind (a)) / (cosd (a))
 
        put "Tan ", d, " =", (sind (d)) / (cosd (d))
 
    elsif s = "s" then
 
        put "Sin ", a, " =", sind (a)
 
        put "Sin ", d, " =", sind (d)
 
    elsif s = "c" then
 
        put "Cos ", a, " =", cosd (a)
 
        put "Cos ", d, " =", cosd (d)
 
    else
 
        put "Bad Operator"
 
    end if
 
    put "....................................."
 
 
    %Notice
 
 
    put ""
 
    put "....................................."
 
    put "Notice: "
 
    put "Arc ->tan, cos, sin are not supported"
 
    put "....................................."
 
 
    %Exit
 
 
    put ""
 
    put "....................................."
 
    put "Do you want to clear the screen? y/n"
 
    var ask : string
 
    get ask
 
    put "....................................."
 
    if ask = "y"
 
            then
 
        cls
 
    elsif ask = "n"
 
            then
 
        put ""
 
    end if
 
 
end loop  | 	  
 
    
 
No, let's factor out some more code.
 
 
	  | code: | 	 		  put "Calculator program V2"
 
put "Made by Tanmaya. Grade 9 Macs student"
 
put "Copyright 2004-05"  | 	  
 
 
Can easily be in a separate procedure.
 
 
	  | code: | 	 		  procedure showCredits
 
    put "Calculator program V2"
 
    put "Made by Tanmaya. Grade 9 Macs student"
 
    put "Copyright 2004-05"
 
end showCredits  | 	  
 
 
And we can factor out:
 
 
	  | code: | 	 		      %Basic Functions
 
    if s = "+" then
 
        put "=", a + d
 
    elsif s = "-" then
 
        put "=", a - d
 
    elsif s = "*" then
 
        put "=", a * d
 
    elsif s = "/" then
 
        put "=", a div d
 
    %Trignometric Functions
 
    elsif s = "t" then
 
        put "Tan ", a, " =", (sind (a)) / (cosd (a))
 
        put "Tan ", d, " =", (sind (d)) / (cosd (d))
 
    elsif s = "s" then
 
        put "Sin ", a, " =", sind (a)
 
        put "Sin ", d, " =", sind (d)
 
    elsif s = "c" then
 
        put "Cos ", a, " =", cosd (a)
 
        put "Cos ", d, " =", cosd (d)
 
    else
 
        put "Bad Operator"
 
    end if
 
    put "....................................."  | 	  
 
    
 
Into "evaluateEquation".  Oh, and we can use a case statement.
 
 
	  | code: | 	 		  procedure evaluateEquation (a, d : int, op : string)
 
    case op of
 
        %Basic Functions
 
        label "+":
 
            put "=", a + d
 
        label "-":
 
            put "=", a - d
 
        label "*":
 
            put "=", a * d
 
        label "/":
 
            put "=", a div d
 
        %Trignometric Functions 
 
        label "t":
 
            put "Tan ", a, " =", (sind (a)) / (cosd (a))
 
            put "Tan ", d, " =", (sind (d)) / (cosd (d))
 
        label "s":
 
            put "Sin ", a, " =", sind (a)
 
            put "Sin ", d, " =", sind (d)
 
        label "c":
 
            put "Cos ", a, " =", cosd (a)
 
            put "Cos ", d, " =", cosd (d)
 
        label:
 
            put "Bad Operator"
 
    end case
 
    
 
    put "....................................."
 
end evaluateEquation  | 	  
 
 
So, now the code looks like:
 
 
	  | code: | 	 		  procedure getEquation (var a, d : int, var op : string)
 
    put ""
 
    put "Enter the first number:"
 
    get a
 
    put ""
 
    put "Enter the math function (+, -, *, /"
 
    put "s for sin, c for cos, t for tan"
 
    get op
 
    put ""
 
    put "Enter the second number"
 
    get d
 
    put ""
 
    put "....................................."
 
end getEquation
 
 
procedure evaluateEquation (a, d : int, op : string)
 
    case op of
 
        %Basic Functions
 
        label "+":
 
            put "=", a + d
 
        label "-":
 
            put "=", a - d
 
        label "*":
 
            put "=", a * d
 
        label "/":
 
            put "=", a div d
 
        %Trignometric Functions 
 
        label "t":
 
            put "Tan ", a, " =", (sind (a)) / (cosd (a))
 
            put "Tan ", d, " =", (sind (d)) / (cosd (d))
 
        label "s":
 
            put "Sin ", a, " =", sind (a)
 
            put "Sin ", d, " =", sind (d)
 
        label "c":
 
            put "Cos ", a, " =", cosd (a)
 
            put "Cos ", d, " =", cosd (d)
 
        label:
 
            put "Bad Operator"
 
    end case
 
    
 
    put "....................................."
 
end evaluateEquation
 
 
procedure showCredits
 
    put "Calculator program V2"
 
    put "Made by Tanmaya. Grade 9 Macs student"
 
    put "Copyright 2004-05"
 
end showCredits
 
 
View.Set ("graphics:300;400,position:middle;middle,nobuttonbar")
 
Window.Set (1, "Calculator Program")
 
showCredits
 
loop
 
    var a, d : int
 
    var op : string
 
    
 
    getEquation (a, d, op)
 
 
    evaluateEquation (a, d, op)
 
 
    %Notice
 
 
    put ""
 
    put "....................................."
 
    put "Notice: "
 
    put "Arc ->tan, cos, sin are not supported"
 
    put "....................................."
 
 
    %Exit
 
 
    put ""
 
    put "....................................."
 
    put "Do you want to clear the screen? y/n"
 
    var ask : string
 
    get ask
 
    put "....................................."
 
    if ask = "y"
 
            then
 
        cls
 
    elsif ask = "n"
 
            then
 
        put ""
 
    end if
 
 
end loop  | 	  
 
 
 leave it to your imagination to further factor this code down.    | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Delos
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Nov 23, 2004 4:40 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Quote: 
	  | code: | 	 		   put "....................................." 
 
    put "Notice: " 
 
    put "Arc ->tan, cos, sin are not supported" 
 
    put "....................................." 
 
  | 	  
 
 
 
 
 
Quote: 
 
Syntax   arccos (r : real) : real
 
 
 
Description   The arccos function is used to find the arc cosine of a value. The result is given in radians. For example, arccos (0.5) is p / 3. 
 
 
Syntax   arcsin (r : real) : real
 
 
 
Description   The arcsin function is used to find the arc sine of a value. The result is given in radians. For example, arcsin (0.5) is p / 6. 
 
 
Syntax   arctan (r : real) : real
 
 
 
Description   The arctan function is used to find the arc tangent of a value. The result is given in radians. For example, arctan (1) is p / 4. 
 
 
 
 
 
 
 
MysticVegeta, take wtd's advice, it's good stuff it is. | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		wtd
 
 
 
    
		 | 
		
		
			
				  Posted: Wed Nov 24, 2004 3:59 am    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				A further modification would involve using a record type to hold information about the equation:
 
 
	  | code: | 	 		  type Equation :
 
   record
 
      a, d : integer := 0
 
      op : string := "+"
 
   end record
 
 
procedure getEquation (var eq : Equation) 
 
    put ""
 
    put "Enter the first number:"
 
    get eq.a
 
    put ""
 
    put "Enter the math function (+, -, *, /"
 
    put "s for sin, c for cos, t for tan"
 
    get eq.op
 
    put ""
 
    put "Enter the second number"
 
    get eq.d
 
    put ""
 
    put "....................................."
 
end getEquation
 
 
procedure evaluateEquation (eq : Equation)
 
    case eq.op of
 
        %Basic Functions
 
        label "+":
 
            put "=", eq.a + eq.d
 
        label "-":
 
            put "=", eq.a - eq.d
 
        label "*":
 
            put "=", eq.a * eq.d
 
        label "/":
 
            put "=", eq.a div eq.d
 
        %Trignometric Functions
 
        label "t":
 
            put "Tan ", eq.a, " =", (sind (eq.a)) / (cosd (eq.a))
 
            put "Tan ", eq.d, " =", (sind (eq.d)) / (cosd (eq.d))
 
        label "s":
 
            put "Sin ", eq.a, " =", sind (eq.a)
 
            put "Sin ", eq.d, " =", sind (eq.d)
 
        label "c":
 
            put "Cos ", eq.a, " =", cosd (eq.a)
 
            put "Cos ", eq.d, " =", cosd (eq.d)
 
        label:
 
            put "Bad Operator"
 
    end case
 
   
 
    put "....................................."
 
end evaluateEquation
 
 
var eq : Equation
 
 
getEquation (eq)
 
evaluateEquation (eq)  | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		MysticVegeta
 
  
 
    
		 | 
		
		
			
				  Posted: Fri Nov 26, 2004 7:28 am    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Thanks wtd... i am not upto record yet, i think i will shorten it using the code you posted above. And oh yea, my turing version is the old one, so the arcin and arctan functions are not supported. thanks for your advice.   | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		 | 
	 
 
	
	
	 
	
	 |