9/27 C# 반복에 대해 공부
식 자체에 초기화, 조건, 변화가 다 들어있어서 가장 기본적인 반복문
for(초기화;조건;변화)
{
실행 내용
}
for(int i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
조건만 체크하는 반복문이다. 초기화, 변화가 필요하다면 외부에 작성한다.
while(조건)
{
실행 내용
}
int i=1;
while(i <= 10)
{
Console.WriteLine(i);
i++;
}
조건과 상관없이 한 번은 내용을 실행하는 반복문. 이후에는 while
과 같이 반복한다.
do
{
실행 내용
}
int i = 1;
do
{
Console.WriteLine(i);
i++;
}
while(i <= 10)
int i = 11;` // while 조건에 부합하지 않아서 반복은 하지 않지만 `do` 기 때문에 11이 출력 뒤 종료.
do
{
Console.WriteLine(i);
i++;
}
while(i <= 10)
연습 문제에서 배워가는 것이 많다..
입력받은 데이터가 숫자가 아니라면 "숫자가 아닙니다." 출력
Console.WriteLine("출력하고 싶은 구구단 숫자를 입력해 주세요.");
string input=Console.ReadLine();
int num;
bool isInt=int.TryParse(input, out num);
if (isInt)
{
for (int i = 2; i <= 9; i++)
{
`Console.WriteLine(num + " x " + i + " = " + num * i);
}
}
else
{
Console.WriteLine("숫자가 아닙니다.");
}
어제 사용했던 조건문에 오늘 배운 반복문을 둘 다 이용하여 생성하였다. 그리 어렵지 않았다.
int
의 표현 범위를 벗어남문제만 보고 작성한 코드
피보나치 수열은 잘 실행 되었지만 >=47, <=0 이 작동하지 않았다. if
조건문에 대해 좀 더 개념적인 부분들을 공부해야 할 필요성을 느꼈다.
샘플 코드
원인을 분석해 보니 if
와 else if
는 많은 조건들 중에서 부합하는 하나의 조건만 실행이 되고 나머지는 실행되지 않는다. 그렇기 때문에 내가 작성한 코드는 피보나치 수열이 계속 조건이 맞았기 때문에 아래의 나머지 조건들은 실행되지 않았다.
.Length
를 배웠다.Console.WriteLine(" 이름을 입력해 주세요. (3~10글자) ");
string input=Console.ReadLine();
if (input.Length >= 3 && input.Length <= 10)
{
`Console.WriteLine("안녕하세요! 제 이름은 " + input + " 입니다.");
}
else
{
Console.WriteLine("이름을 확인해 주세요.");
}
처음에는 input.Length
를 int
와 bool
을 이용하여 if
에 적용하려고 했으니 조건문에는 사용할 수 없다는 에러가 났다. 원인을 알아보니 그냥 조건문에 input.Length
를 바로 적용하면 되는 것이었다!
위의 코드를 실행시키면 이름 입력에 실패했을 때 "이름을 입력해 주세요."가 출력되고 종료된다. 이것을 조건이 맞을 때까지 시도할 수 있게 만들기
bool inSuccess;
do
{
Console.WriteLine(" 이름을 입력해 주세요. (3~10글자) ");
string input = Console.ReadLine();
if (input.Length >= 3 && input.Length <= 10)
{
Console.WriteLine("안녕하세요! 제 이름은 " + input + " 입니다.");
}
else
{
Console.WriteLine("이름을 확인해 주세요.");
}
inSuccess = input.Length >= 3 && input.Length <= 10;
}
while (!inSuccess);
이건 도저히 감도 오지 않아서 샘플 코드를 따라 적으며 이해하려 했다.
do while
을 사용한 것은 맨처음에 "이름을 입력해 주세요" 문구를 출력하기 위함으로 보인다.
반복은 while
조건문에 bool
을 넣어 true라면 반복 false라면 중단임을 서칭으로 알게 되었다.
하지만 필요한 것은 이름을 정확히 입력한 뒤 프로그램이 종료되는 것인데 이 조건은 true라서 반복이 계속된다. 이 또한 서치로 알아보니 bool
데이터 앞에 !를 입력하면 true와 false가 서로 바뀌게 된다.
그래서 while (!inSuccess);
이런 형식으로 코드를 작성해야 한다.
Console.WriteLine(" 이름을 입력해 주세요. (3~10글자) ");
string input = Console.ReadLine();
Console.Clear();
이렇게 string input = Console.ReadLine();
아래에 Console.Clear();
를 작성하면 된다.
개인적으로 오늘 공부한 내용이 가장 어려웠다. 앞으로 배울 내용들이 조금 두렵긴 하지만 샘플 코드를 보지 않고 성공시켰을 때의 성취감이 달콤하다. 반복 숙달도 중요하겠지만 개념적인 부분들도 시간을 내어서 꼭 공부를 해야겠다.