[C#] 계산기 만들기 3 - 알고리즘 만들기

류재성's avatar
Dec 28, 2024
[C#] 계산기 만들기 3 - 알고리즘 만들기
 
 
이전 코드는 위의 블로그를 참고한다.
 

1. 계산기 디자인 변경

 
notion image
 
폼의 속성을 모두 삭제한다.
 
using System; using System.Windows.Forms; namespace HelloCsharpWin { public partial class Calculator : Form { public Calculator() { InitializeComponent(); } private int Add(int number1, int number2) { int sum = number1 + number2; return sum; } private float Add(float number1, float number2) { float sum = number1 + number2; return sum; } private int Sub(int number1, int number2) { int sub = number1 - number2; return sub; } } }
 
이벤트 핸들러와 관련된 코드도 제외한다. 단 계산 기능을 담당하는 함수는 그대로 둔다.
💡
위의 Add 함수처럼 같은 이름을 사용하여 메서드나 생성자를 정의하는 것을 오버로딩(Overloading) 이라고 한다. 오버로딩은 객체지향 프로그래밍에서 다형성을 구현하는 한가지 방법으로, 같은 이름을 사용하지만 반드시 매개변수의 타입이나, 개수가 달라야 한다.
 
notion image
 
버튼을 하나 생성한다. name(변수명)은 NumButton1, Text는 ‘1’ 을 입력한다.
 
notion image
 
같은 버튼을 하나 더 생성한다. name은 NumButton2, Text는 ‘2’를 입력한다.
 
notion image
 
Label을 하나 생성한다. Label 의 속성은 AutoSize는 FALSE, BorderStyle은 Fixed3D, BackColor 는 White , TextAlign은 MiddleRight,Text는 0, name 값은 NumScreen 으로 설정한다.
 
notion image
notion image
 
버튼의 속성 중 Click을 더블 클릭하면 버튼의 이벤트 핸들러가 생성된다.
 
private void NumButton1_Click(object sender, EventArgs e) { NumScreen.Text = "1"; }
 
이벤트 핸들러 버튼을 클릭하면 NumScreen 에 ‘1’이 표시되도록 한다.
 
notion image
 
프로그램을 실행 후 버튼 1을 누르면 스크린에 1이 표시된다.
 
private void NumButton1_Click(object sender, EventArgs e) { NumScreen.Text = NumScreen.Text + "1"; }
 
버튼 1을 눌렀을 때 1이 계속 표시가 되려면 위와 같이 NumScreem.Text에 1을 더해주면 된다.
 
notion image
 
버튼 입력시 0에 1이 붙는다. 이걸 if문으로 수정한다.
 
private void NumButton1_Click(object sender, EventArgs e) { if (NumScreen.Text == "0") { NumScreen.Text = "1"; } else { NumScreen.Text = NumScreen.Text + "1"; } }
 
IF문으로 NumScreen 이 0 이면 1, 그 외는 1을 계속 더해주는 방식으로 만든다.
 
notion image
 
이제 버튼 입력 시 숫자가 정상적으로 출력된다.
 

2. 더하기 함수 만들기

 
private void button2_Click(object sender, EventArgs e) { if (NumScreen.Text == "0") { NumScreen.Text = "2"; } else { NumScreen.Text = NumScreen.Text + "2"; } }
 
2번 버튼도 동일하게 만들면 된다.
이렇게 버튼 3,4,5…. 버튼도 동일하게 내부 숫자만 변경될 것이다. 그래서 이걸 하나의 함수로 만든다.
 
 
private void setNum(String num) { if (NumScreen.Text == "0") { NumScreen.Text = num; } else { NumScreen.Text = NumScreen.Text + num; } }
 
위와 같이 setNum 함수를 만들었다. 매개변수 num을 받아서 스크린에 num을 표시하는 함수이다.
 
private void button2_Click(object sender, EventArgs e) { setNum("2"); } private void NumButton1_Click(object sender, EventArgs e) { setNum("1"); }
 
그리고 이벤트 핸들러는 setNum 함수를 호출하면서 매개변수만 넘겨주면 된다.
3,4,5….등등의 버튼도 setNum 함수를 호출하면 된다.
 

3. 더하기 알고리즘

 
notion image
 
더하기 버튼을 생성한다. name 값은 addButton으로 만든다.
 
더하기 버튼을 눌렀을 때 만들 로직은 다음과 같다.
 
  1. 숫자 입력
  1. 더하기 버튼 - 첫 번째 숫자 완성, 첫 번째 변수에 저장
  1. 숫자 입력
  1. 더하기 버튼 - 두 번째 숫자 완성. 두번째 변수에 저장.
  1. 첫 번째 변수와 두 번째 변수를 합산
  1. 그 결과를 첫 번째 변수에 저장
  1. 다시 숫자 입력
  1. 더하기 버튼 입력
  1. 반복
 
위와 같이 만들 예정이다.
저 과정을 정리해보자.
 
  1. 변수 = 0
  1. 숫자 입력
  1. 더하기 버튼 - 숫자 완성, 변수와 숫자 합, 결과를 변수에 다시 저장
  1. 숫자 입력
  1. 더하기 버튼 - 숫자 완성, 변수와 숫자 합, 결과를 다시 변수에 저장
  1. 숫자 입력
  1. 더하기 버튼 - 숫자 완성, 변수와 숫자 합, 결과를 다시 변수에 저장
 
위와 같이 하나의 변수에 값을 더해서 다시 저장하는 식으로 만들면 동일한 패턴이 생성된다. 이를 알고리즘이라고 한다.
 
notion image
 
위의 사진처럼 전역변수 Result와 isNewNum을 설정한다.
Result는 더하기 값을 저장할 변수이며 초기값은 0이다. isNewNum은 숫자버튼을 누르면 ‘1111’ 이렇게 옆으로 표시가 되는데, 더하기 버튼을 클릭하게 되면 새로운 Result 값으로 대체하기 위한 bool 타입의 변수이다. 처음 입력받는 값은 화면에 새롭게 표시되어야 하기 때문에 초기값을 true로 초기화한다.
 
 
private void setNum(String num) { if (isNewNum) // 새로운 숫자라면 { NumScreen.Text = num; isNewNum = false; // num 을 입력 후 새로운 숫자가 아님 } else if (NumScreen.Text == "0") // 화면 출력값이 0 이라면 { NumScreen.Text = num; // num으로 변경 } else // 새로운 숫자가 아니라면 { NumScreen.Text = NumScreen.Text + num; // num 을 나열 } }
 
setNum 함수를 재정의한다. isNewNum 초기값이 true이기 때문에 처음 시작 시 가장 처음 if 로직을 타게 된다. 입력값을 NumScreen에 넣은 후 isNewNum을 false로 만든다.
그럼 두 번째 버튼을 누르게 되면 else 로직을 타게 되면서 숫자 변수가 나열되게 된다.
 
 
private void button2_Click_1(object sender, EventArgs e) { int num = int.Parse(NumScreen.Text); Result = Result + num; NumScreen.Text = Result.ToString(); isNewNum = true; // 새로운 변수를 입력 받아야 함 }
 
그리고 버튼을 클릭시 입력받은 값을 변수 Result에 저장 후 스크린에 출력한다. 마지막에 isNewNum을 다시 true로 변경하면서 다시 새로운 숫자가 스크린에 표시될 수 있도록 한다.
 
notion image
 
실행 후 버튼 1을 누르면 1이 나열된다.
 
notion image
 
그 다음 버튼 + 를 누르면 입력한 11111 값이 Result 변수에 저장되면서 화면에 출력된다.
 
notion image
 
다시 버튼 2 를 눌러 222를 입력한다.
 
notion image
 
다시 버튼 + 를 누르면 Result 변수에 새로운 값이 더해진 결과로 출력된다.
 
 
Share article

{CODE-RYU};