Kalkulator prosty. Łączenie ciągu znaków

Przez łączenie ciągu znaków rozumiemy operację łączenia co najmniej dwóch dowolnych ciągów znaków w jeden. Najłatwiej jest połączyć dwa osobne ciągi znaków poprzez dołączenie jednego ciągu na koniec drugiego ciągu. W języku C# służy do tego operator +.

Poniżej prosty przykład łączenia dwóch ciągów

Wskazówka:


private void button1_Click(object sender, EventArgs e)
{
	String t1 = "Ala",
		   t2 = "ma kota",
		   t ="";
	t = t1 + " " + t2;
	this.Text = t;
}

Kalkulator prosty

Na metodzie łączenia ciągów znaków oprzemy sposób wprowadzania danych do aplikacji symulującej działanie prostego kalkulatora. Na nasz kalkulator nakładamy warunek, że dane wprowadzamy poprzez klawisze reprezentujące cyfry, a nie przez wpisanie z klawiatury.

Układ kontrolek

Przygotuj formatkę z poniższym układem kontrolek.

kalkulator prosty Visual studio C#

Zielone pole to kontrolka TextBox, w której blokujemy wprowadzanie danych z klawiatury

kontrolka textBox Visual studio C#

Ustawiamy dużą czcionkę i ewentualny kolor tła

kontrolka textBox w kalkulatorze Visual studio C#

Wprowadzamy wartości liczbowe

Przyjmujemy, że kalkulator będzie działać na liczbach rzeczywistych podanych poprzez klawisze jako osobne cyfry łączone w kodzie programu w łańcuch znaków i konwertowane w wartość liczbową.

W tym celu klawisze z cyframi obsłużymy jedną metodą zdarzenia Click z wykorzystaniem odczytu pola tekstowego jako wartości cyfry. W kodzie programu deklarujemy trzy zmienne a (liczba a), b (liczba b) i w (wynik)

Wskazówka:


public partial class Form1 : Form
{
	float a = 0, b = 0, w = 0;

W projekcie aplikacji zaznaczamy grupę klawiszy reprezentujących cyfry

jak napisac kalkulator w Visual studio C#

Przechodzimy do zakładki Zdarzeń i inicjujemy zdarzenie Click

klawisze kalkulator Visual studio C#

Teraz wykorzystujemy możliwości programowania obiektowego poprzez przechwycenie kontroli wybranego elementu w zdarzeniu Click

Wskazówka:


private void button1_Click(object sender, EventArgs e)
{
	Control c = (Control)sender;
	textBox1.Text+=c.Text;
}

Skompiluj program i sprawdź efekt działania. Powinieneś zobaczyć podobny efekt działania

edycja klawisze kalkulator Visual studio C#

Jak wprowadzić drugą wartość liczbową?

Aby nie komplikować kodu programu można zauważyć, że druga wartość liczbowa zawsze jest wprowadzana po wybraniu na przykład dowolnego klawisza operatora działania matematycznego. W naszym przykładzie to klawisze z symbolami: /, *, -, +. Zaznaczamy tę grupę klawiszy

działania matematyczne kalkulator Visual studio C#

Dla zaznaczonej grupy klawiszy inicjujemy zdarzenie Click

metoda Click działania matematyczne kalkulator Visual studio C#

W metodzie Click dla wskazanej grupy klawiszy obsługujemy zapamiętanie pierwszej wprowadzonej wartości liczbowej oraz czyszczenie ekranu kalkulatora (kontrolki TextBox)

Wskazówka:


private void button16_Click(object sender, EventArgs e)
{
	//wyskocz jak puste
	if (textBox1.Text.Length < 1) return;
	a=(float)Convert.ToDouble(textBox1.Text);
	textBox1.Text = "";
}

Skompiluj program i sprawdź efekt działania

Jaki wybrano operator działania matematycznego?

Ten etap tworzenia aplikacji desktopowej symulacji kalkulatora prostego można rozwiązać na kilka sposobów- krótszych lub dłuższych, łatwiejszych lub trudniejszych. W naszym rozwiązaniu zastosujemy typ wyliczeniowy, który jest zbiorem kolejnych liczb całkowitych reprezentowanych w kodzie programu przez nadane nazwy podczas pisania kodu.

W kodzie programu zdefiniuj typ wyliczeniowy, czyli zbiór działań oraz zmienną, która będzie pamiętać wybrane działanie dopóki użytkownik nie wciśnie klawisza równa się

Wskazówka:


public partial class Form1 : Form
{
	float a = 0, b = 0, w = 0;
	enum Dzialanie {BRAK,
				DODAWANIE,
				ODEJMOWANIE,
				DZIELENIE,
				MNOZENIE};
	Dzialanie dzialanie=Dzialanie.BRAK;

Teraz modyfikujemy metodę Click klawiszy operatorów działań matematycznych. Wprowadź poniższy kod

Wskazówka:


private void button16_Click(object sender, EventArgs e)
{
	//wyskocz jak puste
	if (textBox1.Text.Length < 1) return;
	a=(float)Convert.ToDouble(textBox1.Text);
	textBox1.Text = "";
	//określ wybrane działanie wykorzystujac funkcję switch
	Control c = (Control)sender;
	switch (c.Text)
	{
		case "/":dzialanie = Dzialanie.DZIELENIE; break;
		case "*": dzialanie = Dzialanie.MNOZENIE; break;
		case "-": dzialanie = Dzialanie.ODEJMOWANIE; break;
		case "+": dzialanie = Dzialanie.DODAWANIE; break;
		default:dzialanie=Dzialanie.BRAK; break;
	}
}

Skompiluj program i sprawdź czy nie zawiera błędów

Jak uzyskać wynik wybranego działania matematycznego

Wynik wybranego działania matematycznego wymaga odczytu drugiej wartości liczbowej. Jeżeli użytkownik jej nie wprowadzi to traktujemy, że wynosi zero. Oznacza to, że dla dzielenia trzeba obsłużyć taki wyjątek.

Inicjujemy zdarzenie Click dla klawisza równa się

klawisz równa się kalkulator Visual studio C#

Do zainicjowanej metody wprowadzamy poniższy kod, który obsłuży działanie dodawania

Wskazówka:


private void button17_Click(object sender, EventArgs e)
{
	//konwertuj jak nie jest puste
	if (textBox1.Text.Length > 0) b = (float)Convert.ToDouble(textBox1.Text);
	else b = 0;
	//wykonaj wybrane działanie
	switch (dzialanie)
	{
		case Dzialanie.DODAWANIE: w = a + b;break;
		default:w = a;break;
	}
	//wypisz wynik
	textBox1.Text = w.ToString();
	//zeruj wartości
	a = 0;
	b = 0;
	w = 0;
	dzialanie = Dzialanie.BRAK;
}

Skompiluj program i sprawdź efekt działania. Program na tym etapie potrafi tylko dodawać

Usunięcie ostatniej wprowadzonej cyfry

Usuniecie ostatniej wprowadzonej cyfry będzie polegać na skopiowaniu wprowadzonego łańcucha znaków cyfrowych o jeden mniej. W tym celu wykorzystamy metodę Substring klasy String. Usuwanie wykonamy w metodzie Click klawisza oznaczonego symbolem <

cofnij kalkulator Visual studio C#

Kod zdarzenia Click dla usuwania ostatniej wprowadzonej cyfry

Wskazówka:


private void button18_Click(object sender, EventArgs e)
{
	//usunięcie ostatniej wprowadzonej cyfry
	if (textBox1.Text.Length < 1) return;
	string zrodlo=textBox1.Text;
	textBox1.Text = zrodlo.Substring(0,zrodlo.Length-1);
}

Skompiluj program i sprawdź efekt działania

Zadanie

Na podstawie omówionych metod oprogramuj pozostałe funkcje działania osadzonych w projekcie klawiszy. Klawisz z czerwonym tłem to klawisz kończący działanie aplikacji.

Pełny kod omówionych metod

Poniżej przedstawiam pełny kod aplikacji z do tej pory omówionymi funkcjami

piszemy kalkulator Visual studio C#

Zawartośc pliku Form1.cs

Wskazówka:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace KalkulatorProsty
{
    public partial class Form1 : Form
    {
        float a = 0, b = 0, w = 0;
        enum Dzialanie {BRAK,
                    DODAWANIE,
                    ODEJMOWANIE,
                    DZIELENIE,
                    MNOZENIE};
        Dzialanie dzialanie=Dzialanie.BRAK;

        private void button1_Click(object sender, EventArgs e)
        {
            Control c = (Control)sender;
            textBox1.Text+=c.Text;
        }

        private void button16_Click(object sender, EventArgs e)
        {
            //wyskocz jak puste
            if (textBox1.Text.Length < 1) return;
            a=(float)Convert.ToDouble(textBox1.Text);
            textBox1.Text = "";
            //określ wybrane działanie wykorzystujac funkcję switch
            Control c = (Control)sender;
            switch (c.Text)
            {
                case "/":dzialanie = Dzialanie.DZIELENIE; break;
                case "*": dzialanie = Dzialanie.MNOZENIE; break;
                case "-": dzialanie = Dzialanie.ODEJMOWANIE; break;
                case "+": dzialanie = Dzialanie.DODAWANIE; break;
                default:dzialanie=Dzialanie.BRAK; break;
            }
        }

        private void button17_Click(object sender, EventArgs e)
        {
            //konwertuj jak nie jest puste
            if (textBox1.Text.Length > 0) b = (float)Convert.ToDouble(textBox1.Text);
            else b = 0;
            //wykonaj wybrane działanie
            switch (dzialanie)
            {
                case Dzialanie.DODAWANIE: w = a + b;break;
                default:w = a;break;
            }
            //wypisz wynik
            textBox1.Text = w.ToString();
            //zeruj wartości
            a = 0;
            b = 0;
            w = 0;
            dzialanie = Dzialanie.BRAK;
        }

        private void button18_Click(object sender, EventArgs e)
        {
            //usunięcie ostatniej wprowadzonej cyfry
            if (textBox1.Text.Length < 1) return;
            string zrodlo=textBox1.Text;
            textBox1.Text = zrodlo.Substring(0,zrodlo.Length-1);
        }

        public Form1()
        {
            InitializeComponent();
        }

    }
}
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz