조건분기
상황에 따른 처리를 한다
조건의 구조를 안다
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 |