1) if문
가장 기본적인 if문의 문법은
if(조건식)
구문;
//또는
if(조건식) 구문;
if문은 괄호 안에 조건식을 지정하고 그것의 평가 결과가 참이면 괄호가 끝난 다음의 코드를 실행하고, 거짓이면 괄호 다음의 코드를 실행하지 않는다. if문은 조건식의 결과가 참인 경우뿐 아니라 거짓인 경우에도 실행할 수 있는 구문을 else 예약어를 추가해 지정할 수 있다. 조건이 여러 개인 경우 if / else if / else로 표현하는 것도 가능하다. 또한 if문 내에 if문을 중복으로 사용하여 많은 조건을 제어할 수 있다.
ex)
if(true)
{
Console.WriteLine("참입니다.");
}
if (false)
{
Console.WriteLine("거짓입니다.");
}
조건식에 false(거짓)이므로 실행되지 않는다.
int i_Num;
Console.WriteLine("정수를 입력하세요");
i_Num = int.Parse(Console.ReadLine());
if(100 < i_Num)
{
Console.WriteLine("입력하신 정수는 100보다 큽니다.");
}
int i_Num;
Console.WriteLine("정수를 입력하세요");
i_Num = int.Parse(Console.ReadLine());
if(i_Num % 10 == 0)
{
if (i_Num % 3 == 0)
{
Console.WriteLine("입력하신 정수는 10의 배수이면서 3의 배수입니다.");
}
}
//또는
if ((i_Num % 10 == 0 )&&(i_Num % 3 == 0))
{
Console.WriteLine("입력하신 정수는 10의 배수이면서 3의 배수입니다.");
}
ex) 홀수, 짝수 판별
int i_Num;
Console.WriteLine("정수를 입력하세요");
i_Num = int.Parse(Console.ReadLine());
if(i_Num % 2 == 0)
{
Console.WriteLine("해당 정수는 짝수입니다.");
}
else
{
Console.WriteLine("해당 정수는 홀수입니다.");
}
ex) 학점 구하기
int i_score;
Console.Write("점수를 입력하세요 : ");
// i_score에 점수 입력 받는 코드를 아래에 작성
i_score = int.Parse(Console.ReadLine());
Console.Write("당신의 학점은 ");
if (i_score >= 90)
{
Console.Write("A");
}
else if(i_score >= 80)
{
Console.Write("B");
}
else if(i_score >= 70)
{
Console.Write("C");
}
else if(i_score >= 60)
{
Console.Write("D");
}
else
{
Console.Write("F");
}
Console.WriteLine("입니다.");
ex) 윤년
int i_year;
Console.Write("연도를 입력해주세요 : ");
i_year = int.Parse(Console.ReadLine());
if((i_year%4 == 0 && i_year%100 != 0 ) || i_year % 400 == 0)
{
Console.WriteLine("{0}는 윤년입니다.", i_year);
}
else
{
Console.WriteLine("{0}는 윤년이 아닙니다.", i_year);
}
Console.WriteLine("년도를 입력하세요");
int iYear = int.Parse(Console.ReadLine());
//400으로 나누어 떨어지는 해 : 윤년
if (iYear%400 == 0)
{
Console.WriteLine("{0}은 윤년입니다.", iYear);
}
//400으로 나누어 떨어지는 않는 해 : 평년과 윤년이 섞여 있음
else
{
//4로 나누어 떨어지는 해는 윤년 후보(평년과 윤년이 섞여 있음)
if (iYear % 4 == 0)
{
//100으로 나누어 떨어지지 않는 해는 윤년
if (iYear % 100 != 0)
{
Console.WriteLine("{0}은 윤년입니다.", iYear);
}
//100으로 나누어 떨어지는 해는 평년
else
{
Console.WriteLine("{0}은 평년입니다.", iYear);
}
}
//4로 나누어 떨어지지 않는 해 : 평년
else
{
Console.WriteLine("{0}은 평년입니다.", iYear);
}
}
cf. 의사 코드(슈도 코드, pseudocode)
프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어. 프로그래밍 언어의 문법에 따라 쓰인 것이 아니라, 일반적인 언어로 코드를 흉내 내어 알고리즘을 써놓은 코드를 말한다.
2) 연산자
2.1) 수식 연산자
분류 | 기능 | 예제 |
+ | 양쪽 피연산자를 서로 더함 | a+b |
- | 왼쪽 피연산자에서 오른쪽 피연산자를 뺌 | a-b |
* | 양쪽 피연산자를 서로 곱함 | a*b |
/ | 왼쪽 피연산자를 오른쪽 피연산자로 나눔 | a/b |
% | 왼쪽 피연산자를 오른쪽 피연산자로 나눈 뒤의 나머지를 구함 | a%b |
2.2) 논리 연산자(logical operator)
좌측 피연산자 | 우측 피연산자 | AND 연산 결과 | 예제 |
true | true | true | bool result = true && true; |
true | false | false | bool result = true && false; |
false | true | false | bool result = false && true; |
false | false | false | bool result = false && false; |
좌측 피연산자 | 우측 피연산자 | OR 연산 결과 | 예제 |
true | true | true | bool result = true || true; |
true | false | true | bool result = true || false; |
false | true | true | bool result = false || true; |
false | false | false | bool result = false || false; |
좌측 피연산자 | 우측 피연산자 | XOR 연산 결과 | 예제 |
true | true | false | bool result = true ^ true; |
true | false | true | bool result = true ^ false; |
false | true | true | bool result = false ^ true; |
false | false | false | bool result = false ^ fasle; |
우측 피연산자 | NOT 연산 결과 | 예제 |
true | false | bool result = !true; |
false | true | bool result = !false; |
2.3) 증감 연산자
증감연산자 | 평가 방식 | 예제 |
++ | 피연산자의 값을 1 증가시킨다. | int n = 50; n++; // 결괏값 51 |
-- | 피연산자의 값을 1 감소시킨다. | int n = 50; n--; // 결괏값 49 |
증감 연산자(++, --)는 피연산자의 앞에 오느냐 뒤에 오느냐에 따라 동작이 바뀌며 이를 전위(prefix)/후위(postfix) 표기법이라고 한다.
- 후위 표기법 : 피연산자 값이 평가된 후 값을 증가/감소
- 전위 표기법 : 피연산자 값을 증가/감소시킨 후에 식을 평가
ex)
int i_num = 100;
Console.WriteLine(i_num); // 100
++i_num;
Console.WriteLine(i_num); // 101
i_num = i_num + 1;
Console.WriteLine(i_num); // 102
int i_num2;
i_num2 = ++i_num; // i_num = i_num + 1; i_num2 = i_num;
Console.WriteLine("i_num, i_num2 = {0},{1}", i_num, i_num2);
int i_num3;
i_num3 = i_num++; // i_num2 = i_num; i_num = i_num + 1;
Console.WriteLine("i_num, i_num3 = {0},{1}", i_num, i_num3);
2.4) 조건 연산자(삼항 연산자, ternary operator)
(조건식)?표현식1:표현식2;
조건 연산자는 피연산자가 3개이다. 첫 번째 피연산자는 조건식을 나타내고, 두 번째 피연산자는 조건식이 참인 경우에 반환되는 값을, 세 번째 피연산자는 조건식이 거짓인 경우 반환되는 값을 나타낸다.
ex)
int i_num1, i_num2, i_max;
Console.Write("정수를 입력하세요 : ");
i_num1 = int.Parse(Console.ReadLine());
Console.Write("정수를 입력하세요 : ");
i_num2 = int.Parse(Console.ReadLine());
if (i_num1 > i_num2)
{
i_max = i_num1;
}
else
{
i_max = i_num2;
}
Console.WriteLine("큰 값은 {0}입니다.", i_max);
int i_max2;
i_max2 = (i_num1 > i_num2) ? i_num1 : i_num2;
Console.WriteLine("큰 값은 {0}입니다.", i_max2);
2.5) 비트 연산자
분류 | 기능 | 예제 |
& | 두 피연산자의 대응되는 비트에 논리곱(AND)을 수행 | a & b = 0100 1000 |
| | 두 피연산자의 대응되는 비트에 논리합(OR)을 수행 | a | b = 1101 1110 |
^ | 두 피연산자의 대응되는 비트에 배타적 논리합(XOR)을 수행 | a ^ b = 1001 0110 |
~ | 피연산자의 비트에 NOT을 수행 | ~a = 1010 0011 |
<< | 피연산자의 비트를 왼쪽으로 1비트 이동 | a<<3 = 1110 0000 |
>> | 피연산자의 비트를 오른쪽으로 1비트 이동 | a>>3 = 0000 1011 |
a = 0101 1100, b = 1100 1010
ex)
byte b_num = 100;
Console.WriteLine(b_num);
b_num = (byte)(b_num << 2);
Console.WriteLine(b_num);
b_num = 1;
Console.WriteLine(b_num);
b_num = (byte)(b_num << 1);
Console.WriteLine(b_num);
b_num = (byte)(b_num << 1);
Console.WriteLine(b_num);
b_num = (byte)(b_num << 1);
Console.WriteLine(b_num);
b_num = (byte)(b_num << 1);
Console.WriteLine(b_num);
byte bNum_1 = 0xAD; // 0x : 16진수
byte bNum_2 = 0x69;
byte bNum_3 = (byte)(bNum_1 & bNum_2);
Console.WriteLine(bNum_3);
2.6) 문자열 결합 연산자
string을 합치는 경우 문자열 결합 연산자(+)를 이용하여 여러 개의 문자열을 하나의 문자열로 합칠 수 있다.
ex)
string str_1 = "hello";
string str_2 = "world";
Console.WriteLine(str_1 + " " + str_2);
cf. 연산자와 피연산자
- 연산 : 프로그램에서 데이터를 처리하여 결과를 산출
- 연산자 : 연산을 수행하기 위해 사용되는 문자, 계산할 때 사용되는 기호
- 피연산자 : 연산에 참여하는 변수나 상수
- 단항 연산자 : 피연산자가 한 개가 대상 ex) 부호 연산자, 증감 연산자
- 이항 연산자 : 피연산자가 두 개가 대상 ex) 대입 연산자
- 삼항 연산자 : 피연산자가 세 개가 대상 ex) 조건 연산자
cf. 중단점과 디버그 기능
- 중단점(F9) : 브레이크 포인트(Break Point)라고도 불리며 소스 코드의 특정 지점에서 프로그램의 실행을 멈추는 데 사용
- 프로시저 단위 실행(F10)
- 한 단계씩 코드 실행(F11)
3) switch 문
여러 개의 조건을 판단해서 실행할 때 if / else if / else if / ··· / else 구문을 쓸 수도 있지만 조건 판단의 기준이 되는 식이 상수라면 switch 구문을 쓰는 것이 편리할 수 있다. 모든 switch문은 다중 if문으로 변환할 수 있지만 반대로 특정한 경우의 다중 if문만이 switch 문으로 변환될 수 있다.
switch(인스턴스)
{
case 상수식1:
구문;
break;
case 상수식2:
구문;
break;
default:
구문;
break;
}
조건이 많아지면 switch 문을 쓰는 편이 직관적인 코드 해석에 도움이 된다. C#에서는 case 문에 break를 포함하는 것이 강제 사항이라서 break가 없으면 컴파일할 때 오류가 발생한다.
ex)
int i_num;
Console.Write("1~3까지의 숫자를 입력하세요 : ");
i_num = int.Parse(Console.ReadLine());
switch (i_num)
{
case 1:
Console.WriteLine("첫째");
break;
case 2:
Console.WriteLine("둘째");
break;
case 3:
Console.WriteLine("셋째");
break;
default:
Console.WriteLine("해당되는 숫자가 아닙니다.");
break;
}
int i_score;
Console.Write("점수를 입력해주세요 : ");
i_score = int.Parse(Console.ReadLine());
i_score = i_score / 10;
switch (i_score)
{
case 10:
case 9:
Console.WriteLine("A");
break;
case 8:
Console.WriteLine("B");
break;
case 7:
Console.WriteLine("C");
break;
case 6:
Console.WriteLine("D");
break;
default:
Console.WriteLine("F");
break;
}
'스마트팩토리 > C#' 카테고리의 다른 글
6. 객체지향, 구조체, foreach, 배열 (0) | 2020.05.27 |
---|---|
5. 복합 대입 연산자, 반복문, 점프문, 메서드 (0) | 2020.05.26 |
3. 진법, 불린형 기본타입, 형변환, 기본 문법 요소 (0) | 2020.05.23 |
2. 닷넷 프레임워크, 기본 자료형 (0) | 2020.05.21 |
1. Visual Studio 설치 및 실행 (0) | 2020.05.20 |