앞서 데이터형, 데이터를 다루기위한 연산자를 배웠는데 이런 데이터를 처리하기 위한 부분을 제어문이라고 이해 할 수 있다. 제어문에는 if, switch, for 문 같은 구문을 배워 데이터를 어떤식으로 처리해 원하는 결과를 얻을것인지를 다룬다고 한다. 연산자 부분을 열심히 정리했는데..실수로 지운걸 에버노트가 무료 사용자라고 복원해 주지 않는다.
연산자 부분을 간단하게 타이틀만 다시 정리한다. 다시 정리하느라 타이틀만 보고 있는데 왜 때문에 다 모르는거 같은건지 모르겠다.
단항 연산자 : +,-,!,~ ++, -- 등
산술 연산자 : *, /, %, -, + (스트링에서 + 문자열 연결)
시프트(shift) 연산자와 관계 연산자 : <<, >>, >=, <=, >, <, ==, != (관계 연산자의 결과는 true, flase만 사용)
is 연산자 : 형식 호환을 조사
as 연산자 : 형변환과 변환 조사
비트 연산자(&, ^, | )와 논리 연산자(&&, ||, ?:)
null 병합 연산자 : ? ? (null 조사) C = A ? ? B (a 가 null 이 아니면 A를 C에 대입 A가 null 이면 B를 C에 대입)
목차
- 제어문
- 반복문
- 점프문
- 예외처리문
제어문
# if ~ else (if 조건문)
int nNum = 10;
if (true)
Console.WriteLine("Hello World");
else
Console.WriteLine("C# Programming");
// 결과는 true 이기 때문에 무조건 Hello World 가 나올 수 밖에 없음
// 비주얼 스튜디오에서는 if을 쓰니까 해당하지 않는 값의 택스트를 톤다운 해주는 기능도 있네.
# switch, case (조건문)
조건값이 여러 값을 가질 경우 case 별 다른 문장을 실행 할 때 사용
정수, 문자 상수, 문자열 사용 가능
모든 case와 default에는 break가 반드시 있어야함
int nNum = 1;
switch (nNum)
{
case 1:
Console.WriteLine("1 입니다.");
//break; 가 없으면 진행이 안됨
case 2:
Console.WriteLine("2 입니다.");
break;
}
// 1이거나, a, 이거나
string category = "사과";
// 카테고리가 사과이기 때문에 결과는 1000 이 나옴
int price = 0;
switch (category)
{
case "사과":
price = 1000;
Console.WriteLine(price);
break;
case "딸기":
price = 1100;
Console.WriteLine(price);
break;
case "포도":
price = 900;
Console.WriteLine(price);
break;
default:
price = 0;
Console.WriteLine(price);
break;
}
반복문
# for, for(;;), while, do~while, while(true)
;; 는 for 문 무한 반복
true는 while 문의 무한 반복
# foreach
처음부터 끝까지 순차적으로 값을 반복하여 읽는 역할 (읽기전용)
foreach (데이터형 변수 in 배열명(컬렉션명)){}
int[] Array1 = { 1, 2, 3, 4 };
foreach(int nValue in Array1)
{
Console.WriteLine(nValue);
}
// 배열에서 읽기 (무조건 처음부터 끝까지 읽음)
ArrayList List = new ArrayList();
List.Add(1);
List.Add(2);
List.Add(3);
foreach (int m in List)
{
Console.WriteLine(m);
}
// 컬랙션에서 읽기
점프문
#goto, continue, return, break
처리도중 빠져나가거나 멈추거나
예외처리문
CLR에서 Runtime 으로 돌아갈때 발생하는 예외(오류)들을 처리해서 프로그램이 종료되지 않고 돌아 갈 수 있도록 하는 것
에러에 대한 대처
# 예외처리 방법
if ~ else, try ~ catch 문 사용
try { // 예외가 발생할 수 있는 코드 } catch(예외처리객체 e) { // 예외처리}
System.Exception 파생 객체만 사용
OverFlowException, FormatException,DivideByZeroException, FileNotFoundException
& IndexOutOfRangeExection (배열이나 컬랙션에서 Index 정보가 잘못 들어오거나 넘었을 때)
static void Main(string[] args)
{
int[] array = { 1, 2, 3 };
try
{
array[3] = 10;
//여기가 오류
}
catch (IndexOutOfRangeException e)
{
Console.WriteLine("배열 인덱스 에러 발생");
Console.WriteLine(e.ToString());
array[2] = 10;
}
for (int i = 0; i<array.Length; i++)
{
Console.Write("{0}", array[i]);
}
}
# try문 안에서 초기화한 변수를 try 문 밖에서 사용할 수 없다
= Try Catch 문 안에서는 초기화를 하지 말으라는 뜻
static void Main(string[] args)
{
int m = 0 ;
try
{
m = 12;
Console.WriteLine("try 문 출력 : {0}", m);
}
catch
{
Console.WriteLine("예외 발생");
}
Console.WriteLine("Try 문 밖에서 변수 출력: {0}", m); //m 에 에러표시 나옴
}
기본 문법이라지만 퇴근 후 운동도 하고 회사 업무도 조금 하다보니 진도가 느리고 지나간 것을에 대한 기억이 지속되지 않는다. 우선은 이번 강의까지는 계속 볼건데 앞으로 어떻게 끊어서 진행해야될지 고민해야 할듯 하다. 조건문과 반복문이 잴 많이 쓰인다던데..
# Try ~ finally
예외 발생과 상관없이 항상 실행되는 구문
# 예외 상황이 발생했을 때 finally 처리
네트워크 상황에서 에러가 나거나 강제로 종료된 경우에도 반드시 실행되어야 하는 경우(파일을 닫거나... 강제종료되면 실행되나?) finally 에 넣어서 활용 > finally 이후 실행 안됨
static void Main(string[] args)
{
int[] array = { 1, 2, 3 };
try
{
Console.WriteLine("try 문에서 예외 발생시킴");
array[3] = 10;
}
finally
{
Console.WriteLine("finally");
}
foreach (var m in array)
Console.WriteLine("{0}", m);
}
# 예외 상황이 발생하지 않았을 때 finally 처리
예외가 발생하지 않았으니 자연스럽게 실행 > finally 이후것도 실행 됨
static void Main(string[] args)
{
int i = 0;
try
{
i = 12;
}
finally
{
i = 100;
Console.WriteLine("finally 문 i 값 : {0}", i);
}
i = 200;
Console.WriteLine("try finally 문 밖에서 실행 i 값 : {0}", i);
}
# 다중 예외 처리
try {} catch {} catch {} 이렇게 여러가지 catch를 나열
# throw 처리
예외 상황을 임으로 발생시키는 역할
System.Execption 파생 객체만 사용
try 문과 그 외에서 사용 가능
class Program
{
static int GetNumber(int index)
{
int[] nums = { 300, 600, 900 };
if(index >= nums.Length)
{
throw new IndexOutOfRangeException();
// 객체를 생서애서 throw
}
return nums[index];
}
static void Main (string[] args)
{
int result = GetNumber(3);
}
}
정리
# 대부분의 연산자는 c, c++ 언어와 같음
# C#에서 새롭게 등장한 연산자
is연산자, as 연산자, null 병합연산자(? ?)
# for, while, do ~ while, foreach
반복처리
# 예외 처리문
try ~ catch ~ finally
throw
'공부 하기' 카테고리의 다른 글
Library 와 framework의 차이점 5가지 (0) | 2024.04.14 |
---|---|
C#프로그래밍 강좌 따라가기 | C# 배열 (1) (0) | 2018.09.18 |
C#프로그래밍 강좌 따라가기 | 데이터형 (5) - 값 형식과 참조 형식 & 데이터형 정리 (0) | 2018.09.02 |
C#프로그래밍 강좌 따라가기 | 데이터형 (4) - 사용자 지정형 (0) | 2018.08.30 |
C#프로그래밍 강좌 따라가기 | 데이터형 (2) - 데이터 변환 (0) | 2018.08.28 |