C#은 위에허 부터 아래로 흐르는데
경우에 따라서 이 흐름을 바꿀 수도 있고 반복이 되도록 하게 가능함.
지금 a는 CLS가 조건문을 두번 비교를 하게됨
-> 성능 저하
그런데 b의 경우 왜 성능이 a를 비교하는 것보다 좋냐고하면은
b % 2 == 0 일 경우만 비교를 하고 조건식이 false라면 비교연산 하지않고
바로 else로 넘어가기 때문이다.
스위치의 조건식에는 "정수 형식", "문자열 형식" 두가지만 지원한다.
(c, c++는 정수형식만 지원함ㅋㅋ)
현재 실행중인 코드의 흐름을 멈추고 현재 실행중인 코드의 바깥으로 실행 위치를 옮기는 역할을 한다.
가령
이런식으로 사용이 가능.
데이터 형식에 따라 분기를 할 경우 case절에서 데이터 형식 앞에 반드시 식별자를 붙여 주어야한다.
이런식으로 구현이 가능함.
Parse() : C# 기본 숫자 형식은 문자열을 숫자로 변환해줌.
TryParse : Parse()와 같은 기능함.
차이점
변환이 실패 할 경우 어떻게 다루는가 이다.
예외가(에러?)가 던져지게 되면 프로그램은 현재 코드의 실행을 멈추고 흐름을 다른 곳으로 이동시킴.
TryParse()가 반환한 데이터는 두번째 매게변수에 저장됨.
현재는 그냥 출력 전용 매개변수임을 나타내는 정도로만 알고 있어라.
switch 문의 when을 사용이 가능함.
when으로 추가 조건 검사를 수행 가능하다.
이런식으로 사용이 가능하다.
에러 뜨는 이유 : 데이터 형식에 따라 분기를 할 경우만 해당됨!
(p158);
이전에는 "switch문" 이번에는 "switch문"
식은 어떤 계산을 해서 결과를 내놓는다.
문은 어떤 일을 한다.
결과를 내든 안 내든
이런식의 switch문을
이런식으로 바꿀 수 있음.
p161 예제
이번 예제에서 건질게 "삼항연산자"이다.
while
do while
for
foreach
조건식에 false값을 가져야 빠져나옴,
for (초기화식; 조건식; 반복식;)
초기화식 : 반복을 실행하기 전 딱 한번만 실행되는 곳
조건식 : 반복문을 계속 수행할지를 결정하는 식.
반복식 : 반복이 끝날 때마다, 실행.
배열이나 컬렉션 개념 알고 있어야한다.
배열 또는 컬렉션을 순회하며 각 데이터 요소에 차례대로 접근하도록 해줌.
foreach (데이터 형식 변수명 in 배열_또는_컬렉션)
for ( ; ; )
while (true)
break
continue
goto
return
throw
흐름을 끊고 프로그램의 실행위치를 원하는 곳으로 도약
현재 실행중인 반복문이나 switch 문의 실행을 중단 하고자 할 때.
이럴경우는
현재 실행중인 반복문이 j의 반복문이라 j == 3일때 break; 헤서 나온다음에
i반복문 실행한다.
이런식으로.
goto 레이블;
레이블 : // 이어질 코드
: 변수와는 조금 다름. 코드안의 위치를 나타내는 표지판 같은 역할.
goto는 저 레이블이 가르키는 위치로 바로 뛰어 넘어간다.
이딴식으로 사용이 가능하다.
프로그래머들이 좋아하지 않음. => 흐름을 자주 끊어서
그럼에도 불구하고 유용하게 쓰이는 경우 => 이중이상의 for문 뚫고 나올 경우
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < i + 1; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
int num = 5;
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < num; ++j)
{
Console.Write("*");
}
--num;
Console.WriteLine();
}
이거 맞니?