6236 Programmering I Agenda/Functioner

From Teknologisk videncenter
Jump to: navigation, search

Herunder er vist et eksempel på en lille konto applikation.

Programmet oprette en "konto" med saldoen 25000. Derefter er der mulighed for at hæve eller indsætte penge.

static void Main(string[] args)
{
	Double saldo = 25000;
	Double beloeb;
	Double rente;
	Int32 valg;

	do
	{
		System.Console.WriteLine("Hvad ønsker du at gøre?");

		System.Console.WriteLine("1. Oplys saldo");
		System.Console.WriteLine("2. Hæve penge");
		System.Console.WriteLine("3. Sætte penge ind");
		System.Console.WriteLine("4. Tilskriv renter");
		System.Console.WriteLine("0. Exit");
		valg = Convert.ToInt32(System.Console.ReadLine());
		switch (valg)
		{
			case 1:
				System.Console.WriteLine("Din saldo er " + saldo);
				break;
			case 2:
				System.Console.WriteLine("Hvor meget vil du hæve?");
				beloeb = Convert.ToDouble(System.Console.ReadLine());
				saldo = saldo - beloeb;
				break;
			case 3:
				System.Console.WriteLine("Hvor meget vil du sætte ind?");
				beloeb = Convert.ToDouble(System.Console.ReadLine());
				saldo = saldo + beloeb;
				break;
			case 4:
				System.Console.WriteLine("Hvad er renten?");
				rente = Convert.ToDouble(System.Console.ReadLine());
				saldo = saldo + saldo / 100 * rente;
				break;
			default:
				break;
		}
	} while (valg != 0);
	
	System.Console.ReadKey();
}

Methoder eller funktioner som de også kaldes kan bruges hvis der er noget kode vi ønsker at genbruge, eller blot fjerne fra vores Main for overskuelighedens skyld.

I eksemplet herunder har jeg lavet metoden oplysSaldo(). Metoden tager en parameter (en variable) som input af typen Double, og skriver dens indhold i consollen.

Den anden metode er haev() der også tager en parameter, men også returnerer en værdi der er den nye saldo.

namespace ConsoleApplication18
{
	class Program
	{
		//Metoden tager parameteren sal som input og skriver den i consollen
		//Der returneres ikke nogen værdi, derfor står der void der betyder tom.
		static void oplysSaldo(Double sal)
		{
			System.Console.WriteLine("Din saldo er " + sal);
		}

		//Denne metode tager også en input parameter af typen Double og trækker det beløb fra der skal hæves.
		//Metoden returnere den nye saldo som en Double, derfor står der Double inden metode navnet.
		static Double haev(Double sal)
		{
			System.Console.WriteLine("Hvor meget vil du hæve?");
			Double beloeb = Convert.ToDouble(System.Console.ReadLine());
			sal = sal - beloeb;
			//Returner den nye saldo
			return sal;
		}

		static void Main(string[] args)
		{
			Double saldo = 25000;
		....

Nede i vores switch kan vi nu fjerne den oprindelige kode under case 1 og case 2 og istedet kalde metoderne. På den måde bliver vores kode i main lettere at overskue.

	switch (valg)
	{
		case 1:
			oplysSaldo(saldo);
			break;
		case 2:
			saldo = haev(saldo);
			break;
		case 3:
		....

Opgave

Start med at afprøve konto programmet herover uden metoder.

I koden herunder er lavet metoder på oplysSaldo og haev, men der mangler indsæt og rente som også flyttes til metoder.

namespace ConsoleApplication18
{
    class Program
    {
        
        static void oplysSaldo(Double sal)
        {
            System.Console.WriteLine("Din saldo er " + sal);
        }

        static Double haev(Double sal)
        {
            System.Console.WriteLine("Hvor meget vil du hæve?");
            Double beloeb = Convert.ToDouble(System.Console.ReadLine());
            sal = sal - beloeb;
            return sal;
        }

        static Double indSaet(Double sal)
        {
            //Din kode her....
        }

 
        static void Main(string[] args)
        {
            Double saldo = 25000;
            Double beloeb;
            Double rente;
            Int32 valg;


            do
            {
                System.Console.WriteLine("Hvad ønsker du at gøre?");

                System.Console.WriteLine("1. Oplys saldo");
                System.Console.WriteLine("2. Hæve penge");
                System.Console.WriteLine("3. Sætte penge ind");
                System.Console.WriteLine("4. Tilskriv renter");
                System.Console.WriteLine("0. Exit");
                valg = Convert.ToInt32(System.Console.ReadLine());
                switch (valg)
                {
                    case 1:
                        oplysSaldo(saldo);
                        break;
                    case 2:
                        saldo = haev(saldo);
                        break;
                    case 3:
                        saldo = indSaet(saldo);
                        break;
                    case 4:
                        saldo = tilskrivRente(saldo);
                        break;
                    default:
                        break;
                }
            } while (valg != 0);
            
            System.Console.ReadKey();
        }
    }
}

Lav til sidst om i dit program så de første linier med menu valg også foregår via en metode der returnerer en Int32.