lørdag 24. oktober 2009

Bygg en kalkulator

Skrev tidligere at jeg skulle blogge hvordan jeg har laget en kalkulator i C#.

1. Opprett en prosjekt i Visual Studio, det gjøres på denne måten:
File >> New >> Project >> Velg Visual C# på venstre siden, velg deretter Windows og så Console Application.


Program.cs ser da sånn ut:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

////////////////////////////////////////////////////////////
//                  KALKULATOR
////////////////////////////////////////////////////////////


namespace Kalkulator_April09
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // Oppretter en variabel og setter den til 0.
                decimal result = 0;


                ////////////////////////////////////////////////////////////
                // Skriver ut valg til bruker.
                ////////////////////////////////////////////////////////////
                Console.WriteLine("Vennligst velg en regnemåte: ");
                Console.WriteLine("Legge sammen     ");
                Console.WriteLine("Trekke fra       ");
                Console.WriteLine("Multiplisere     ");
                Console.WriteLine("Dividere         ");
                Console.WriteLine("Prosent          ");


                // Skal lese brukers svar.
                string command = Console.ReadLine();
               

                ////////////////////////////////////////////////////////////
                // Bruker blir bedt om å skrive inn number1.
                ////////////////////////////////////////////////////////////
                Console.Write("Tast inn det første tallet: ");

                //Konverterer til decimal fra string.
                decimal number1 = decimal.Parse(Console.ReadLine());


                ////////////////////////////////////////////////////////////
                //Bruker blir bedt om å skrive inn number2.
                ////////////////////////////////////////////////////////////
                Console.Write("Tast inn det andre tallet: ");

                //Konverterer til decimal fra string.
                decimal number2 = decimal.Parse(Console.ReadLine());


                ////////////////////////////////////////////////////////////
                // Her brukes switch til å sjekke hva som skal skje ettersom hva
                // bruker har valgt.
                // Setter også valget til bruker til å gjøres om til store bokstaver
                // uansett hva som blir tastet inn.
                ////////////////////////////////////////////////////////////
                switch (command.ToUpper())
                {
                    case "A":
                        result = Operations.Add(number1, number2);
                        break;
                    case "B":
                        result = Operations.Subtract(number1, number2);
                        break;
                    case "C":
                        result = Operations.Multiply(number1, number2);
                        break;
                    case "D":
                        result = Operations.Divide(number1, number2);
                        break;
                    case "E":
                        result = Operations.Percent(number1, number2);
                        break;
                    default:
                        break;
                }
                Console.WriteLine("Svaret er: {0}", result);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.GetBaseException().Message);
            }


            //Pause til bruker taster en tast.
            Console.ReadKey();
         }
       }
     }

Legg til en ny klasse, kall denne Operations.

For å legge til en ny klasse gå til solutionexplorer og høyreklikk prosjektet, velg Add new item.

Koden ser sånn ut:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Kalkulator_April09
{
    // Setter klassen til å være public.
    public class Operations
    {
        ////////////////////////////////////////////////////////////
        // Metode Add med feilhåndtering.
        ////////////////////////////////////////////////////////////
        public static decimal Add(decimal number1, decimal number2)
        {
            try
            {
                return number1 + number2;
            }
            catch (Exception)
            {
                throw;
            }
        }


        ////////////////////////////////////////////////////////////
        // Metode Subtract med feilhåndtering.
        ////////////////////////////////////////////////////////////
        public static decimal Subtract(decimal number1, decimal number2)
        {
            try
            {
                return number1 - number2;
            }
            catch (Exception)
            {
                throw;
            }
        }


        ////////////////////////////////////////////////////////////
        // Metode Multiply med feilhåndtering.
        ////////////////////////////////////////////////////////////
        public static decimal Multiply(decimal number1, decimal number2)
        {
            ////////////////////////////////////////////////////////////
            // Setter decimal-variablene number1 & number2 til å kunne være max verdi.
            ////////////////////////////////////////////////////////////

            //???????????????????????????????????????????????????????????????????
            // Roy, kan ikke decimal inneholde et høyt tall hvis man ikke setter
            // decimal til å være MaxValue?
            //???????????????????????????????????????????????????????????????????
            number1 = decimal.MaxValue;
            number2 = decimal.MaxValue;

            try
            {
                return number1 * number2;
            }
            catch (Exception)
            {
                throw;
            }
        }


        ////////////////////////////////////////////////////////////
        // Metode Divide med feilhåndtering.
        ////////////////////////////////////////////////////////////
        public static decimal Divide(decimal number1, decimal number2)
        {
            try
            {
                return number1 / number2;
            }
            catch (DivideByZeroException)
            {
                throw;
            }
            catch (Exception)
            {
                throw;
            }
        }


        ////////////////////////////////////////////////////////////
        // Metode Percent med feilhåndtering.
        ////////////////////////////////////////////////////////////
        public static decimal Percent(decimal number1, decimal number2)
        {
            try
            {
                return ((number1 % number2) * 100);
            }
            catch (Exception)
            {
                throw;
            }
        }
    }
}

1 kommentar: