일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 유니티상호작용
- 스파르타
- C#문법
- 티스토리챌린지
- unity3d
- Console.WriteLine
- c#코테
- 유니티게임만들기
- 유니티공부
- unity3dservival
- 시샵문법
- c# c#프로그래머스
- 스파르타코딩클럽
- 유니티3dui
- c#
- c#기초문법
- unity게임
- c#문제
- c# 백준
- unity3d게임만들기
- 유니티서바이벌게임만들기
- c#코딩기초트레이닝
- 오블완
- 시샵
- Unity
- c#프로그래머스기초문법
- unity공부
- 유니티
- unity게임만들기
- c#기본문법
- Today
- Total
나 개발자 진짜 되냐?
[ C# 기본 문법 9 ] 반복문 본문
반복문을 함께 공부해 보자!!
반복문이란
명령문을 반복해서 실행하는 제어문
🌟 for문 🌟
초기식, 조건식, 증감식을 사용하여 반복문을 작성
for (초기식; 조건식; 증감식)
{
// 조건식이 참인 경우 실행되는 코드
}
초기식은 반복문이 시작될 때 단 한 번 실행되고,
조건식은 반복문이 실행될 때마다 평가되며,
참(true)인 경우 반복문이 계속 실행됩니다.
증감식은 반복문이 실행될 때마다 실행되는 식입니다.
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
순서가
초기식 > 조건식 > 밑으로 들어와서
writeline > 증감식 > 조건식 밑으로 내려와서
writeline > 증감식 > 조건식...
이다.
안에다가 초기식 안에는
int = 0으로 변수를 선언할 수 있다.
int i = 0;
for (i = 0 ; i < 10 ; i++)
{
Console.WriteLine(i);
}
대신! for문안에 변수를 선언한 경우
i는 for문안에서밖에 못쓰기 때문에,
밖에서도 쓰고 싶다면
미리 i를 선언해 주고 for문에 넣어주어야 한다.
for문은
for ( int i = 0; i < 10; i++ )
이 구조만 알아도 많이 사용할 수 있다.
여기서는 0-9까지 10번이라는 뜻이지만
2부터 하고 싶으면
초기식 값을 2부터, i = 2;
만약에 20번이면
조건식 값을 20으로, i < 20;
3씩 증가하고 싶으면
증감식 i+=3으로 해주면 된다.
큰 틀을 외운다면
그 뒤로는 사용할 수 있는 범위가 늘어난다.
🌟 while문 🌟
조건식이 참(true)인 동안 코드 블록을 반복적으로 실행
while (조건식)
{
// 조건식이 참인 경우 실행되는 코드
}
for문과 차이가 있다면
for문은 횟수를 정해두고
while은 목표달성까지 횟수제한 없이 돌린다는 의미로
차이가 있다.
int i = 0;
while (i < 10)
{
Console.WriteLine(i);
i++;
}
for문과 나오는 값은 같다.
while은 초기 조건 증감이 없는가?
그것도 아니다.
int i = 0;
while (i < 10)
Console.WriteLine(i);
i++;
while문에도
초기 조건 증감 다 있다.
for 문은 반복 횟수를 직관적으로 알 수 있고,
반복 조건을 한눈에 확인할 수 있어 가독성이 좋다.
while 문은 반복 조건에 따라 조건문의 실행 횟수가 유동적이며,
이에 따라 코드가 더 간결할 수 있다.
🌟 do - while문 🌟
while문과 비슷하지만,
조건식을 검사하기 전에 먼저 코드 블록을 한 번 실행하는 점이 다르다.
쉽게 말해서
일단 한번 검사해 보고
그다음에 조건문을 판단하겠다.라고 해석할 수 있다.
do 안에 있는 값은 최초로 한번 실행될 것이다.
int sum = 0;
int num;
do
{
Console.Write("숫자를 입력하세요 (0 입력 시 종료): ");
num = int.Parse(Console.ReadLine());
sum += num;
} while (num != 0);
Console.WriteLine("합계: " + sum);
이 식도
먼저 무조건 한 번은
do안에 있는 문장이 실행되고
while을 통해 검사하고 나서
그 값이 참이면
다시 올라가서 do문이 실행되고
아닐 경우 탈출하게 된다.
🌟 foreach 문 🌟
포이치문은
배열이나 컬렉션
뭉탱이들에 대한 반목문을 쓸 때 사용한다.
foreach (자료형 변수 in 배열 또는 컬렉션)
{
// 배열 또는 컬렉션의 모든 요소에 대해 반복적으로 실행되는 코드
}
뭉탱이를 넣어놓고 하나씩 사용하는 것이다.
어려우니 예시를 들어보자
string[] inventory = { "빨강","주황","노랑","파랑","검정" };
foreach (string color in inventory)
{
Console.WriteLine(color);
}
여러 색들이 인벤토리라는 배열에 들어가 있고 있고
foreach문으로
인벤토리 안에 있는 컬러들을 순차적으로 출력한다.
🌟 중첩 반복문 🌟
반복문을 두 번씩 쓰는 것!
보통 구구단에 많이 쓴다!
for (int i = 2; i <= 9; i++)
{
for (int j = 1; j <= 9; j++)
{
Console.WriteLine(i + " x " + j + " = " + (i * j));
}
}
🌟 기타 🌟
Break & Continue
break는 반복문 중지!
continue는 현재 반복을 중지하고
다음 반복을 진행하세요!
간단하게
break는 반복문 조건문 바로 탈출!
continue는 skip 하고 다음 조건문 실행!
int sum = 0;
while (true)
{
Console.Write("숫자를 입력하세요: ");
int input = int.Parse(Console.ReadLine());
if (input == 0)
{
Console.WriteLine("프로그램을 종료합니다.");
break;
}
if (input < 0)
{
Console.WriteLine("음수는 무시합니다.");
continue;
}
sum += input;
Console.WriteLine("현재까지의 합: " + sum);
}
Console.WriteLine("합계: " + sum);
예시를 가져왔다
숫자를 입력받았을 때
0이면 break이기 때문에
반목문 if문
그리고 while문까지 나와서
합계가 출력될 것이다.
물론 0이겠지만...
continue의 경우
음수를 받으면 그 if문만 띄어 넘고
while을 다시 돌아 숫자를 입력하세요가 뜨게 된다.
while문 옆에 true는 무엇인가?
무한참!
즉 무한으로 굴러간다.
언제까지? 조건식이 끝날 때까지
그래서 while (true)를 하게 되면
꼭 break가 있어주어야 한다.
안 그러면 컴퓨터가 터진다..
for문도 무한참을 시켜주러면
for(;;) 해주면 무한참이 된다 ㅎㅋ
자! 이제 복습 겸 예습 겸 공부 겸
해봅시다.
1. 가위바위보 하기
// 배열 생성
string[] choices = { "가위", "바위", "보" };
//string 변수 초기화 ""
string playerChoice = "";
//랜덤으로 값을 낸다. 0부터 2까지만 나온다.
string computerChoice = choices[new Random().Next(0, 3)];
// 값을 안받아왔으니 당연히 이 while문에 들어가진다.
while (playerChoice != computerChoice)
{
Console.Write("가위, 바위, 보 중 하나를 선택하세요: ");
playerChoice = Console.ReadLine();
Console.WriteLine("컴퓨터: " + computerChoice);
//비겼을때 종료, 왜냐면 위에 while문이 거짓으로 나온다. 내값과 컴퓨터 값이 같아서.
if (playerChoice == computerChoice)
{
Console.WriteLine("비겼습니다!");
}
//내가 이기는 조건 가위(&&)이고 보 이거나(||)
else if ((playerChoice == "가위" && computerChoice == "보") ||
(playerChoice == "바위" && computerChoice == "가위") ||
(playerChoice == "보" && computerChoice == "바위"))
{
Console.WriteLine("플레이어 승리!");
}
// 기타 모든것 = 내가 지는것
else
{
Console.WriteLine("컴퓨터 승리!");
}
}
주석을 다 달아놓았다.
컴퓨터는 값을 랜덤 하게 뽑아냈지만
한번 내면 바꾸지 않기 때문에
아마도
최대
3판째에 비겨서 게임이 종료될 것이다. 걱정 마쇼
2. 숫자 맞추기
//랜덤하게 숫자 넣기 101까지라 1 - 100까지 나온다.
int targetNumber = new Random().Next(1, 101);
//맞추려는 숫자, 내가 맞추는 숫자. 받아내는 숫자.
int guess = 0;
//추측한 횟수
int count = 0;
Console.WriteLine("1부터 100 사이의 숫자를 맞춰보세요.");
//
while (guess != targetNumber)
{
Console.Write("추측한 숫자를 입력하세요: ");
guess = int.Parse(Console.ReadLine());
//맞출때까지 카운트 되어야하니까 while문에 넣는다.
count++;
if (guess < targetNumber) // 컴퓨터 숫자가 더 클때
{
Console.WriteLine("좀 더 큰 숫자를 입력하세요.");
}
else if (guess > targetNumber) // 내가 추측한 값이 더 클때
{
Console.WriteLine("좀 더 작은 숫자를 입력하세요.");
}
else // 정답인 경우
{
Console.WriteLine("축하합니다! 숫자를 맞추셨습니다.");
Console.WriteLine("시도한 횟수: " + count);
}
}
위의 문제와 굉장히 비슷하다.
여기서 for문을 쓸 수 있을까?
되긴 된다.
근데 우리는 조건을 맞출 때까지 기 때문에
while문이 더 사용하기가 편리하다.
더 클 때,
더 작을 때를
if문으로 구하고
값을 맞추면!
탈출하는 방식으로 작성한다.
반복문과 조건문은 계속 봐줘야 하는 부분이라고 생각한다.
앞으로도 자주 찾아보고 자주 익혀봐야겠다.
'C# 을 맛보았어요! > 문법정리를 해보았어요!' 카테고리의 다른 글
[ C# 기본 문법 11 ] 컬렉션 (0) | 2024.09.22 |
---|---|
[ C# 기본 문법 10 ] 배열 (1) | 2024.09.21 |
[ C# 기본 문법 8 ] 조건문 (0) | 2024.09.20 |
[ C# 기본 문법 7 ] 문자열 처리 (0) | 2024.09.19 |
[ C# 기본 문법 6 ] 연산자 종류와 연산자 우선순위 (0) | 2024.09.19 |