새로 습득한 정보를 기록한다.
else if
의 이해
플레이어의 랭크 점수를 입력하면 등급을 알려주는 프로그램을 만들어 보자.
Console.Write("플레이어의 랭크 점수를 입력하세요: ");
int score = int.Parse(Console.ReadLine());
string playerRank = "";
if (score >= 90)
{
playerRank = "Diamond";
}
else
{
if (score >= 80)
{
playerRank = "Platinum";
}
else
{
if (score >= 70)
{
playerRank = "Gold";
}
else
{
if (score >= 60)
{
playerRank = "Silver";
}
else
{
playerRank = "Bromze";
}
}
}
}
Console.WriteLine("플레이어의 등급은 {0} 입니다. ", playerRank);
기능상 문제가 없지만 코드가 지저분하다. 조건문의 코드가 한 줄, 한 묶음이라면 중괄호의 생략이 가능하다.
if (score >= 90)
{
playerRank = "Diamond";
}
else
if (score >= 80)
{
playerRank = "Platinum";
}
else
if (score >= 70)
{
playerRank = "Gold";
}
else
if (score >= 60)
{
playerRank = "Silver";
}
else
{
playerRank = "Bromze";
}
이렇게 else문의 중괄호를 삭제하고
if (score >= 90)
{
playerRank = "Diamond";
}
else if (score >= 80)
{
playerRank = "Platinum";
}
else if (score >= 70)
{
playerRank = "Gold";
}
else if (score >= 60)
{
playerRank = "Silver";
}
else
{
playerRank = "Bromze";
}
ctrl+k+f 로 들여쓰기하여 정리해 준다.
else if 의 개념을 순서대로 정리하며 알려주시니 이해가 쏙쏙 된다 !
Console.Write("번호를 입력하세요: ");
int number = int.Parse(Console.ReadLine());
if (number % 2 == 0)
{
Console.WriteLine("짝수입니다.");
}
else
{
Console.WriteLine("홀수입니다.");
}
int
/ int
의 결과값은 정수이다. 2로 나누었을 때 0으로 딱 떨어지면 늘 짝수, 1이 남으면 늘 홀수이다. 나눗셈과 나머지의 연산자 활용은 C#에서 정말 강력한 기능이라고 생각한다.
int playerScore = 100;
string playerRank = "";
switch (playerScore / 10) // 입력되는 값을 그룹화 시키기 위한 조건
{
case 10: // 100 입력 시 case 9와 같은 값 출력을 위해 중첩 !
case 9:
playerRank = "Diamond";
break;
case 8:
playerRank = "Platinum";
break;
case 7:
playerRank = "Gold";
break;
case 6:
playerRank = "Silver";
break;
default:
playerRank = "Bronze";
break;
}
Console.WriteLine("플레이어의 등급은 " + playerRank + "입니다.");
switch
문을 사용하려면 입력되는 값이 상수여야한다. 하지만 playerScore의 입력 값은 0~100사이의 정수, case를 100개나 만들 순 없으니 공통점을 찾아내서 그룹화시켜야 한다.
90~99, 80~89, 70~79, 60~69, 50~59 의 공통점은 10으로 나누었을 때의 결과값이 같다 !
switch
문의 사용법 중 조건으로 입력값을 조절하는 방법을 배웠다.
입력한 문자가 영어 알파벳인지 판단하는 프로그램을 만들어 보자
Console.Write("문자를 입력해주세요: ");
char input = Console.ReadLine()[0]; // indexing
if ((input >= 'a' && input <= 'z') || (input >= 'A' && input <= 'Z'))
{
Console.WriteLine("알파벳입니다.");
}
else
{
Console.WriteLine("알파벳이 아닙니다.");
}
알파벳에 관계 연산자를 사용할 수 있는 걸 알게 되었다 !
for
문과 while
문은 같은 결과값을 만들어낼 수 있지만 차이점이 있다
for
: 반복 횟수가 정해져 있을 때 사용하면 좋다. 그리고 조건을 명확하게 알아볼 수 있다.while
: 반복 조건에 따라 실행 횟수가 유동적이다. 코드를 더 간결하게 작성할 수 있다.각 상황에 맞는 반복문을 사용할 수 있는 판단력을 길러야한다고 생각한다.
배열이나 컬렉션의 데이터를 반복한다.
string[] inventory = { "검", "방패", "활", "화살", "물약" };
foreach (string item in inventory)
{
Console.WriteLine(item);
}
출력:
검
방패
활
화살
물약
게임에서 활용할 방법이 다양하게 떠오른다.
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 3; j++)
{
Console.WriteLine("i: {0}, j: {1}", i, j);
}
}
i가 들어간 반복문이 한 번 실행이 될 때, j가 들어간 반복문이 완전 반복한다.
즉, (i=0, j=0, 1, 2), (i=1, j=0, 1, 2).... 이렇게 실행이 된다.
braak
반복문을 중지하고 즉시 빠져나온다.continue
조건이 true일 때 결과값을 건너뛰고 다음으로 넘어간다.for (int i = 1; i <= 10; i++)
{
if (i % 3 == 0)
{
continue; // 3의 배수인 경우 다음 숫자로 넘어감
}
Console.WriteLine(i);
if (i == 7)
{
break; // 7이 출력된 이후에는 반복문을 빠져나감
}
}
반복문을 활용하여 구구단을 만들어 보자
Console.Write("숫자를 입력해주세요: ");
int j = int.Parse(Console.ReadLine());
for (int i = 0; i < 10; i++)
{
int x = i + 1;
Console.WriteLine(j + "x" + x + "=" + (j * x));
}
// 출력값
숫자를 입력해주세요: 5
5x1=5
5x2=10
5x3=15
5x4=20
5x5=25
5x6=30
5x7=35
5x8=40
5x9=45
5x10=50
사전캠프 때의 기억을 살려 어렵지 않게 프로그램을 만들 수 있었다. 그러나.....
for (int i = 2; i <= 9; i++)
{
for (int j = 1; j <= 9; j++)
{
Console.WriteLine(i + " x " + j + " = " + (i * j));
}
}
2단부터 9단까지 전체를 출력하라는 말이었다. 민망해졌지만 코드를 살펴보자.
중첩 반복문을 이용하였고 i가 한 번 반복 때 j가 1~9까지 반복된다. i * j를 작성하여 완성 !
// 출력값
2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18
3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 3 x 4 = 12 3 x 5 = 15 3 x 6 = 18 3 x 7 = 21 3 x 8 = 24 3 x 9 = 27
4 x 1 = 4 4 x 2 = 8 4 x 3 = 12 4 x 4 = 16 4 x 5 = 20 4 x 6 = 24 4 x 7 = 28 4 x 8 = 32 4 x 9 = 36
5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25 5 x 6 = 30 5 x 7 = 35 5 x 8 = 40 5 x 9 = 45
6 x 1 = 6 6 x 2 = 12 6 x 3 = 18 6 x 4 = 24 6 x 5 = 30 6 x 6 = 36 6 x 7 = 42 6 x 8 = 48 6 x 9 = 54
7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49 7 x 8 = 56 7 x 9 = 63
8 x 1 = 8 8 x 2 = 16 8 x 3 = 24 8 x 4 = 32 8 x 5 = 40 8 x 6 = 48 8 x 7 = 56 8 x 8 = 64 8 x 9 = 72
9 x 1 = 9 9 x 2 = 18 9 x 3 = 27 9 x 4 = 36 9 x 5 = 45 9 x 6 = 54 9 x 7 = 63 9 x 8 = 72 9 x 9 = 81
여기서 강사님의 피드백이 구구단이 '열'방향으로 출력되고 있는데 '행'방향으로 출력되게 스스로 바꿔보자고 하셨다. 처음에는 출력 콘솔창을 들여쓰기나 뭐 그런 게 가능한가?? 싶어서 시도했다가 코드를 꼼꼼히 읽어보니 답은 간단했다.
for (int i = 1; i <= 9; i++)
{
for (int j = 2; j <= 9; j++)
{
Console.Write(j + " x " + i + " = " + (i * j) + "\t");
}
Console.WriteLine();
// 출력값
2 x 1 = 2 3 x 1 = 3 4 x 1 = 4 5 x 1 = 5 6 x 1 = 6 7 x 1 = 7 8 x 1 = 8 9 x 1 = 9
2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10 6 x 2 = 12 7 x 2 = 14 8 x 2 = 16 9 x 2 = 18
2 x 3 = 6 3 x 3 = 9 4 x 3 = 12 5 x 3 = 15 6 x 3 = 18 7 x 3 = 21 8 x 3 = 24 9 x 3 = 27
2 x 4 = 8 3 x 4 = 12 4 x 4 = 16 5 x 4 = 20 6 x 4 = 24 7 x 4 = 28 8 x 4 = 32 9 x 4 = 36
2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25 6 x 5 = 30 7 x 5 = 35 8 x 5 = 40 9 x 5 = 45
2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36 7 x 6 = 42 8 x 6 = 48 9 x 6 = 54
2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49 8 x 7 = 56 9 x 7 = 63
2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64 9 x 8 = 72
2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81
i값과 j값을 수정하고 순서를 바꿔서 간단하게 해결 ! 되게 뿌듯했다😊
컴퓨터와 가위바위보를 하여서 비길 때까지 반복해 보자.
string[] choices = { "가위", "바위", "보" }; // 변수에 배열 저장
string playerChoice = "";
string computerChoice = choices[new Random().Next(0, 3)]; // 0, 1, 2 중 랜덤한 값을 가진다. 3은 xx
while (playerChoice != computerChoice) // 컴퓨터와 내가 서로 다른 걸 냈다면 계속 반복 !
{
Console.Write("가위, 바위, 보 중 하나를 선택하세요: ");
playerChoice = Console.ReadLine();
if (playerChoice == computerChoice)
{
Console.WriteLine("비겼습니다!");
}
else if ((playerChoice == "가위" && computerChoice == "보") ||
(playerChoice == "바위" && computerChoice == "가위") ||
(playerChoice == "보" && computerChoice == "바위"))
{
Console.WriteLine("플레이어 승리!");
}
else
{
Console.WriteLine("컴퓨터 승리!");
}
}
아쉬운 점은 최초로 컴퓨터에 할당되는 가위바위보 값이 고정이 된다는 것이다. 계속해서 랜덤한 값이 할당되어야 가위바위보라고 말할 수 있는데.. 나중에 배우지 않을까싶지만 기억해뒀다가 튜터님께 여쭤봐야겠다.
컴퓨터에게 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());
count++;
if (guess > targetNumber)
{
Console.WriteLine("정답 보다 큰 숫자를 입력하였습니다.");
}
else if (guess < targetNumber)
{
Console.WriteLine("정답 보다 작은 숫자를 입력하였습니다.");
}
else
{
Console.WriteLine("정답입니다!");
Console.WriteLine("입력한 횟수: " + count);
}
}
// 출력값
1부터 100 사이의 숫자를 맞춰보세요.
추측한 숫자를 입력하세요: 50
정답 보다 큰 숫자를 입력하였습니다.
추측한 숫자를 입력하세요: 25
정답 보다 큰 숫자를 입력하였습니다.
추측한 숫자를 입력하세요: 15
정답 보다 작은 숫자를 입력하였습니다.
추측한 숫자를 입력하세요: 20
정답 보다 큰 숫자를 입력하였습니다.
추측한 숫자를 입력하세요: 18
정답 보다 큰 숫자를 입력하였습니다.
추측한 숫자를 입력하세요: 17
정답입니다!
입력한 횟수: 6
공부한 내용을 떠올리며 그리 어렵지 않게 작성할 수 있었다.
계속해서 말하고 있지만 사전캠프에서 배웠던 내용들의 복습에 추가적으로 강사님의 기본적인 개념과 원리 설명, 개발에서 어떻게 쓰이는지 등의 이야기들을 들을 수 있어서 더 성장하는 기분이 든다. TIL 작성에 시간을 많이 투자하는 편인데 이렇게 학습한 내용을 복습 겸 작성하니 머리속에 잘들어가는 느낌이다 !