C# 강좌 5편. 조건문(if, else, switch) [최근 수정 2017.11.10]
1. if~else문 (만약에~, 그렇지 않으면~)
오늘은 조건문에 대해서 알아보도록 하겠습니다. 여기서 조건이란 사전적 의미 그대로 '어떤 일을 이루게 하거나 이루지 못하게 하기 위하여 갖추어야 할 상태나 요소'라는 뜻을 지니고 있습니다. 프로그래밍에서 프로그램 흐름을 조건에 따라 실행시키는 게 바로 우리가 배울 '조건문'입니다. 우선 if문 부터 배워보도록 하겠습니다. 아래는 if문의 기본 구성입니다.
if (조건식) { // 조건이 참일 경우 실행될 문장 }
이 예제의 조건식에서 true 또는 false를 반환하는 논리 연산자나 관계 연산자가 자주 등장합니다. 조건식에 올 수 있는 건 true 또는 false의 값을 가지는 bool 형식이어야 합니다. 예를 들어, 아래의 조건을 한번 살펴봅시다.
if (a > b) { Console.WriteLine("a가 b보다 큽니다."); }
a가 b보다 클 경우에 조건식은 참(true)이 되고, 그 영역의 문장을 실행시킵니다. 만약에 b가 a보다 크다면 거짓(false)이 되어 이 조건문은 무시해버리고 넘어가 버리겠죠.
무엇보다 이렇게 설명을 듣는 것보다 직접 보는 것이 빠릅니다. 아래는 if문을 사용하여 a와 b 중 무엇이 더 큰지 가려내는 예제입니다. 직접 작성하시고 다른 방법으로도 응용해보시는 것을 권장합니다.
using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int a = 50; int b = 51; if (a < b) // 참고: 실행될 문장이 한줄이라면 괄호가 없어도 됨. Console.WriteLine("b가 a보다 큽니다."); if (a > b) Console.WriteLine("a가 b보다 큽니다."); } } }
결과:
b가 a보다 큽니다.
계속하려면 아무 키나 누르십시오 . . .
코드를 간단히 살펴보자면, 정수형 변수 a와 b라는 변수가 선언되고 그와 동시에 50과 51이란 값으로 각각 초기화 되었습니다. 그 다음에 if문이 등장하여 a와 b의 크기를 비교하는 연산자가 조건식 내에 등장합니다. b(51)이 a(50)보다 크므로 결과에서 "b가 a보다 큽니다."라고 출력된 것입니다.
위의 코드를 대충 보기엔 코드에 아무런 문제가 없습니다. 그런데 12행과 14행에 쓰인 2개의 if문은 사실상 올바르지 못한 조건문의 사용이라 볼 수 있습니다. b가 a보다 크다면 a가 b보다 작다는 말이 됩니다. 즉, b가 a보다 크다면 a가 b보다 큰지 아닌지 가려내는 14행의 if문은 쓸모가 없습니다. (CLR이 두 개의 조건 검사를 수행하는 것과 같음)
그럼 어떻게 해야 할까요? 바로 else문을 이용하시면 이를 쉽게 해결하실 수 있습니다. else문은 '그렇지 않으면~' 발생하는 영역입니다. 만약에 a < b가 거짓이라면 else문 내의 문장이 실행되겠죠? else문의 기본적인 사용 형태는 아래와 같습니다.
if (조건식) { // 참일 경우에 실행될 문장 } else { // 위의 조건식에 아무것도 해당하지 않을때 실행될 문장 }
아래는 17행의 if문을 else문으로 변경하여 작성한 예제입니다.
using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int a = 50; int b = 51; if (a < b) Console.WriteLine("b가 a보다 큽니다."); else Console.WriteLine("a가 b보다 큽니다."); } } }
if (조건식) { // 참일 경우에 실행될 문장 } else if (조건식) { // 참일 경우에 실행될 문장 } else { // 위의 조건식에 아무것도 해당하지 않을때 실행될 문장 }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int a = 50; int b = 50; if (a < b) // a가 b보다 작을 경우! Console.WriteLine("b가 a보다 큽니다."); else if (a == b) // a와 b가 같을 경우! Console.WriteLine("a와 b는 서로 같습니다."); else // 그 외의 경우! Console.WriteLine("a가 b보다 큽니다."); } } }
using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int a = 50; if (a > 0) { Console.WriteLine("a는 양수입니다."); if (a > 30) Console.WriteLine("a는 30보다 큽니다."); } else Console.WriteLine("a는 양수가 아닙니다."); } } }
switch (조건식) { case 상수: // 만약 조건식의 결과가 이 상수와 같다면! // 실행될 코드 break; // 탈출! case 상수: // 실행될 코드 break; ... }
switch (a % 2) { case 0: Console.WriteLine("짝수입니다!"); break; case 1: Console.WriteLine("홀수입니다!"); break; }
using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { String day = "수"; switch (day) { case "일": Console.WriteLine("일요일"); break; case "월": Console.WriteLine("월요일"); break; case "화": Console.WriteLine("화요일"); break; case "수": Console.WriteLine("수요일"); break; case "목": Console.WriteLine("목요일"); break; case "금": Console.WriteLine("금요일"); break; case "토": Console.WriteLine("토요일"); break; default: Console.WriteLine("아무 요일에도 해당하지 않습니다."); break; } } } }
'프로그래밍 관련 > C#' 카테고리의 다른 글
C# 강좌 7편. 무한 루프, 제어문(continue, break, goto) [최근 수정 2017.11.06] (26) | 2018.01.12 |
---|---|
C# 강좌 6편. 반복문(while, do, for, foreach) [최근 수정 2017.11.10] (15) | 2018.01.12 |
C# 강좌 4편. 연산자(Operators) [최근 수정 2017.10.29] (30) | 2018.01.12 |
C# 강좌 3편. 변수, 데이터 형식, 상수 [최근 수정 2017.10.29] (52) | 2018.01.12 |
C# 강좌 2편. Hello, world! [최근 수정 2017.11.27] (38) | 2018.01.12 |