본문 바로가기

C#

[C#] 처리의 제어

조건분기

 

상황에 따른 처리를 한다

 

조건의 구조를 안다

C#에서는 여러 상황을 나타내기 위해서 조건(condition)이라는 개념을 이용함

 

참(true) 거짓(false)

둘 중 하나로 나타내는 것 : 조건

올바르다 올바르지 않다

 

조건을 기술한다

 

관계 연산자

연산자 식이 true가 되는 경우
== 우변이 좌변과 같다
!= 우변이 좌변과 같지 않다
> 우변보다 좌변이 크다
>= 우변보다 좌변이 크거나 같다
< 우변보다 좌변이 작다
<= 우변보다 좌변이 작거나 같다

 

★중요

관계 연산자를 사용해서 조건을 기술한다

 

관계 연산자를 사용해서 조건을 기술한다

 

★중요

입력할 때 =(대입 연산자)와 ==(관계 연산자)를 착각하지 말 것

 

if 문의 구조를 안다

상황에 따른 처리를 시행하는 경우

 

조건의 값(true 또는 false)에 따라 처리를 시행한다

 

조건 판단문(conditional statement)

 

if 문

if(조건)
{
	구문;
    ...
}

조건이 true일 때 처리됨

 

★중요

if문을 사용하면 조건에 따른 처리를 할 수 있다

 

if~else if~else의 구조를 안다

if (조건1)
{
	구문1;
    구문2;
    ...
}
else if (조건2)
{
	구문3;
    구문4;
    ...
}
else if (조건3)
{
	...
}
else
{
	...
}

 

switch 문의 구조를 안다

switch(식)
{
	case 상수1;
    	구문1
        ...
    break;
    case 상수2;
    	구문2
        ...
    break;
    default;
    	구문D
        ...
    break;
}

 

논리 연산자를 사용해서 조건을 기술한다

 

왼쪽 끝이 0 이상 그리고 왼쪽 끝이 화면의 폭 이하면...

-> 자동차는 화면 내에 있다고 판단한다

 

이 경우 조건에 해당하는 부분은 지금까지 다른 예보다도 좀 더 복잡한 경우를 나타냄

이처럼 복잡한 조건을 기술할 때 논리 연산자(logical operator)를 사용함

 

논리 연산자는 조건을 더불어 평가해서 true 또는 false 값을 얻음

 

논리 연산자

연산자 true가 되는 경우 평가
&& 좌변 우변 모두 true인 경우만 true 왼쪽true 오른쪽true 전체true
|| 좌변 우변 중 어느 하나가 true인 경우 true 왼쪽false 오른쪽false 전체false
! 우변이 false인 경우 true 오른쪽false 전체 true

 

5>3 && 3==4 -> false

a==6 || a>=12 -> a가 6 또는 12 이상일 때 true

!(a==6) -> a가 6 이외일 때 true

 

★중요

논리 연산자는 조건을 조합해서 복잡한 조건을 만든다

 

중첩(nest)

if문과 switch문의 안에 if문과 switch문을 넣어 중첩으로 할 수도 있음

C#에서는 블록 내에 블록을 기술할 수 있음

다만, 각 블록에 대해서 처음의 {와 마지막의 }가 제대로 대응하고 있는지 주의하기

내부 블록은 쉽게 읽을 수 있는 코드가 되도록 인덴트를 시행해서 기술함

 

반복

 

for문의 구조를 안다

 

자동차 캐릭터가 있는 한 ...

-> 자동차를 표시한다

 

이러한 처리를 반복문(loop statement:루프문)이라는 구문으로 기술할 수 있음

 

for문

for(초기화의 식1; 반복할지 여부를 알아보는 식2; 변화를 위한 식3)
{
	구문;	//블록 내의 구문을 순서대로 반복 처리함
    ...
}

 

for(int i=0; i<5; i++)

{

 lb.Text += i + "호 자동차를 표시합니다.Wn";

}

 

1 식에 따라서 변수 i를 초기화한다

2 식2의 조건이 true면 블록 내를 처리하고 식3을 처리한다

3 식2의 조건이 거짓이 될 때까지 2를 반복한다

 

★중요

for문을 사용하면 반복 처리를 기술할 수 있다

 

문자열의 연결 대입

여기서는 라벨의 텍스트에 문자열을 연결해서 대입을 시행하기 때문에 += 연산자를 사용함

문자열을 연결하는 + 연산자와 함께 기억해 두면 편리함

 

여러 가지 반복문

 

while문

while(조건)
{
	구문;	//블록 내의 구문을 순서대로 반복 처리함
    ...
}

 

do~while문

do
{
	구문1
    ...
} while(조건);	//조건이 true면 반복을 계속합니다

 

do~while문이 while문과 다른점 : 조건을 판단하기 전에 블록 내의 처리를 시행한다

 

★중요

while문 do~while문은 조건이 true인 한 반복한다

do~while문은 최소한 1회 루프 전체를 실행한다

 

여러 가지 반복

break문 - 반복 처리를 강제적으로 종료

continue문 - 반복 처리를 건너뛰고 다음 반복으로 이동

 

<배열>

 

배열의 구조를 안다

 

많은 변수 등장시 코드가 복잡해 읽기 힘든 경우가 있음

이럴 때 반복문과 함께 배열(array)이라는 기능을 이용하면 편리함

 

오브젝트나 값을 여러 개 합쳐서 다룬다

 

★중요

오브젝트나 값을 합쳐서 다루려면 배열을 사용한다

 

오브젝트나 값을 합쳐서 다루는 데는 배열을 사용

 

배열을 준비한다

 

배열을 이용할 때는 먼저 배열의 이름을 선언함

변수와 마찬가지로 식별자로부터 이름을 선택

배열에서는 형명의 다음에 [ ] 를 붙여야함

배열 선언시 배열 작성 가능

 

배열의 선언과 작성

형명 [ ] 배열명;

배열명 = new 형명[요소 수];

 

PictureBox[ ] pb;

pb = new PictureBox[5];

 

형명 배열명 = new 형명[개수];

PictureBox[] pb = new PictureBox[5];

 

배열 요소에 값을 대입한다

 

Form fm = new Form();
fm.Text = "샘플";

PictureBox[] pb = new PictureBox[5];

for(int i = 0; i<pb.Length; i++)
{
	pb[i] = new PictureBox();
    pb[i].Image = Image.FreomFile("c:\\car.bmp");
    pb[i].Top = i * pb[i].Height;
    pb[i].Parent = fm;
}
Application.Run(fm);

 

★중요

배열에 값을 기억하는 데는 철자를 사용해서 요소를 지정한다

배열의 요소 수는 .Length를 사용해서 조사한다

 

★중요

배열과 반복문을 사용하면 많은 데이터를 간결하게 처리할 수 있다

 

배열에 초깃값을 준다

 

string[ ] str = new string[3]("연필","지우개","자");

 

foreach(string s in str)

{

 lb.Text += s + "Wn";

}

 

lb.Parent = fm;

 

Application.Run(fm);

 

값형 배열의 초기화

형명 배열명 = new 형명[요소 수]{값, 값, 값...};

 

참조형에 의한 배열의 초기화

형명 배열명 = new 형명[요소 수]{new 클래스명(), 오브젝트명, ...};

 

간단히 배열 요소를 꺼낸다

 

C#에는 배열 요소를 보다 간단히 꺼내는 반복문인 foreach문(foreach statement) 반복문이 준비되어 있음

 

foreach(string s in str)
{
	lb.Text += s + "Wn";
}

 

★중요

foreach 문을 사용해서 배열 요소를 하나씩 꺼낼 수 있다

 

배열 요소 수를 넘지 않게 한다

[배열명.Length]나 foreach문을 사용하면 배열의 요소 수를 코드 안에 기술할 필요가 없으므로, 코드를 기술할 때 배열의 길이를 변경하기가 쉬워짐

배열 요소를 초과하는 오류의 가능성을 줄일 수 있음

 

<배열의 응용>

 

다차원 배열의 구조를 안다

 

배열 : 1열로 나열한 상자와 같은 형태를 갖고 있음

행 방향과 열 방향으로 나열한 형태로 저장할 수도 있음

행과 열로 나열한 배열 : 2차원 배열

 

2차원 배열의 선언,작성,이용

형명[,] 배열명; //선언

배열명 = new 형명[행의 개수, 열의 개수]; //작성

배열명[0,0] = 값; //이용

 

2차원 배열의 초기화

형명[,] 배열명 = new 형명[행의 개수,열의 개수];

2차원 이상으로 상자를 나열한 형태를 가진 배열 : 다차원 배열

 

2차원 배열의 초기화와 값의 설정

형명[,] 배열명 = new 형명[행의 개수, 열의 개수] {

 {값,값,값...},

 {값,값,값...},

 {값,값,값...}, ...

};

 

string[,] str = new string[4,3]{

 {"서울","Seoul","11"},

 {"대전","Daejeon","22"},

 {"대구","Daegu","33"},

 {"부산","Busan","44"}

};

 

2차원 배열의 이용

배열명[i,j]

 

★중요

다차원 배열을 사용할 수 있다

 

가변 배열의 구조를 안다

 

배열 요소 길이가 4이며, 각 요소에 대해서 배열의 길이가 정해져 있지 않은 배열을 작성

찌그러진 배열 : 가별 배열(jagged array, 재그 배열)

 

가변 배열의 선언과 작성

형명[][] 배열명;
배열명 = new 형명[요소 수][];
배열명[0] = new 형명[0번쨰의 요소 수];
배열명[1] = new 형명[1번째의 요소 수];
...

 

가변 배열의 이용

배열명[i][j]

 

★중요

배열 요소가 가리키는 각각의 배열 요소 수가 다른 가변 배열을 사용할 수 있음

 

레슨의 정리

- 관계 연산자를 사용하여 조건을 작성할 수 있음

- if문을 사용하여 조건에 따른 처리를 시행할 수 있음

- if문의 베리에이션을 사용하여 여러 조건에 따른 처리를 시행할 수 있음

- switch문을 사용하여 식의 값에 따른 처리를 시행할 수 있음

- 논리 연산자를 사용하여 복잡한 조건을 작성할 수 있음

- for문을 사용하면 반복 처리를 할 수 있음

- while문을 사용하면 반복 처리를 할 수 있음

- 배열을 사용하면 값이나 오브젝트를 합쳐서 다룰 수 있음

- foreach 문으로 배열에 접근할 수 있음

- 2차원 배열은 배열명 [i,j]의 형태로 접근함

- 가변 배열은 배열명 [i],[j]의 형태로 접근함

 

조건 분기문이나 반복문을 사용하면 복잡한 처리를 시행하는 코드를 기술할 수 있음

또한 배열에 의해 많은 데이터를 다룰 수 있게됨

많은 데이터를 합쳐서 처리할 때 편리함

 

출처) 그림으로 배우는 C#

'C#' 카테고리의 다른 글

[C#] Task async / await  (0) 2024.05.29
[C#] 클래스의 설계  (0) 2024.05.27
[C#] 형과 연산자  (0) 2024.05.17
[C#] C#의 기본  (0) 2024.05.17
[C#] 첫 걸음  (0) 2024.05.16