1일1코딩.C# - 초보코딩

CS1014 숫자 나누기

낭만독타 2020. 10. 20. 10:55

1. 이번 시간은

 


2. 폼의 구성

이번 시간은 지난 시간의 폼(CS1013 숫자곱하기)에서부터 출발합니다. textBox1, textBox2, label1, button1(곱하기)가 있었습니다. 

button1을 복사, 붙여넣기로 button2를 만들었고 button2의 속성에서 Text를 나누기로 바꾸었습니다

폼 구성의 방법은 CS1002 ~ CS1010을 참고하시면 되겠습니다.

 

 


3. 코드 작성

3.1 button2의 버튼 클릭 이벤트 생성

폼에서 button2을 두번 클릭(더블 클릭)하면 자동적으로 버튼 클릭 이벤트인 button2_Click() 가 만들어집니다. {} 사이에 코드를 작성합니다.

 

 


3.2 기존의 곱하기 코드 복사, 붙여넣기

3.2.1 정수 곱하기 코드 가져오기

button1_Click() 안에 있는 코드들 중에서 지난 시간 주석처리한 정수 곱하기 부분을 복사합니다.


3.2.2 button1_Click() 안에 붙여넣기

 

 


3.3 나누기 연산자(/)로 수정

hap = su1 * su2;  ==>  hap = su1 / su2; 로 수정하면 됩니다. 나머지의 코드들은 동일합니다.

 

 


4. 정수 나누기 실행 및 확인

4.1 코드 실행


4.2 10 나누기 2

label1의 Text에 5가 출력되었으니 10 / 2 = 5, 제대로 되었네요.


4.3 10 나누기 4

label1의 Text에 2가 출력되었는데 10 / 4 = 2, 이것은 아니네요. 역시 정수의 나누기는 한계가 있습니다. 유리수(Double)를 고려해봐야겠네요.

그런데 더 심각한 것이 있습니다. 그것은 0으로 나누는 것입니다.


4.4 10 나누기 0

 

button2(나누기)를 클릭하면 에러가 발생합니다. 실행에러입니다.

hap = su1 / su2에서 발생했는데 에러메시지를 보면 '0으로 나누려 했습니다.'가 있습니다.

수학에서는 0으로 나누는 것을 불능이라고 하죠. 나누는 수가 0이면 나누기 연산을 하지 못하게 해야 합니다. 코드를 수정해야겠습니다.


4.5 코드를 수정하려고 할 때는 반드시 실행 중지를 해야 합니다.

 

 


5. 코드 재수정

5.1 0으로 나누는 연산 방지

5.1.1 코드 수정

 

5.1.2 IF문

드디어 IF문이 등장했습니다. IF문 유형들 중에서 if else 입니다.

if(조건)
{
    . . . 
}
else
{
    . . .   
}

조건이 맞으면 {} 사이에 있는 코드들을 실행하고 조건이 맞지 않으면 else 다음의 {  } 사이에 있는 코드들을 실행합니다.

나누는 수가 코드에서는 su2이므로

if(su2 == 0) 만약 괄호안이 참(진실, 맞다)이면 즉, su2가 0이면 으로 해석합니다. 여기서 ==는 비교연산자 같다 입니다.

만약(if) su2가 0이면 메시지박스로 "0으로 나누면 안됩니다!!!" 알려주기만 합니다. 다른 행위는 없습니다.

그렇지 않으면(else) 나누기 연산을 해서 hap에 보관하고 hap의 값을 문자화해서 label1에 출력합니다.

 


5.2 유리수 나누기

 

5.2.1 int 에서 Double로 수정

int su1 = 0, su2 = 0, hap = 0;  ==>  Double su1 = 0, su2 = 0, hap = 0;

 


5.2.2 ToInt32()에서 ToDouble()로 수정 

su1 = Convert.ToInt32(textBox1.Text);  ==>  su1 = Convert.ToDouble(textBox1.Text);

su2 = Convert.ToInt32(textBox2.Text);  ==>  su12= Convert.ToDouble(textBox2.Text);

 

 


6. 재실행 및 확인

6.1 코드 실행


6.2 10 나누기 0

 

나누는 값이 0이므로 IF문의 조건에 만족되었기 때문에 메시지박스가 안내문구를 가지고 출력되었습니다.이때, 메시지박스만 출력하지 나누기 연산 등을 하지 않습니다. IF문으로 분리시켰습니다.


6.3 10 나누기 2

 

나누는 값이 0이 아니므로 IF문의 조건에 실패했기 때문에 esle{ ... } 이 실행된겁니다. 나누기 연산을 하여 hap에 보관하고 hap을 문자화하여 label1의 Text에 출력시켰습니다.

 


6.4 10 나누기 4

 

2.5가 출력되었습니다. 제대로 연산이 되었습니다. 여기도 나누는 값이 0이 아니므로 IF문의 조건에 실패했기 때문에 esle{ ... } 이 실행된거죠.

 

 


5. 다음 시간에는

 

 

수고하셨습니다.


** 동영상 **

 

 

'1일1코딩.C# - 초보코딩' 카테고리의 다른 글

CS1016 나누고 나머지는?  (0) 2020.10.24
CS1015 길이가 얼마고?  (0) 2020.10.23
CS1013 숫자 곱하기  (0) 2020.10.17
CS1012 숫자 빼기  (0) 2020.10.16
CS1011 숫자 합치기  (0) 2020.10.14