Lv1. 데이터와 연산자. ~ Lv2.제어문(조건문, 연산자)
[데이터 다루기 실습]
1. 실습 코드
public static void firstclass()
{
int level = 10;
int count = 0;
float percent = 0.0f;
float speed = 0.0f;
string nickname = "홍길동";
string description = "초인";
int iten = 10;
float ften = (float)iten;
float fFive = 5.5f;
int iFive = (int)fFive;
int n = 10;
float f = 0.5f;
string A = n.ToString();
string B = f.ToString();
string strTen = "10";
string strSix = "6";
string strten = "10";
string strsix = "6";
int nTen = int.Parse(strTen);
int nSix = int.Parse(strSix);
int nten = Convert.ToInt32(strten);
int nsix = Convert.ToInt32(strsix);
/*parse 방식은 기본적으로 null값을 허용하지 않음. 무엇보다 문자열만 지원함.
그에 반해 Convert방식은 null값이나 예외를 허용하며, 다양한 데이터 타입을 지원함.*/
}
2. 고민했던 부분
- parse 방식이 있다는 것도 알고, Convert 방식이 있다는 것은 알고있었지만. 그 차이? 점까지는 알지 못했음.
3. 검색 후 알게 된 사실.
- Convert는 예외값이나 null을 허용하는데다가, 다양한 값을 대상으로 지원하는 변환이고, parse는 예외없이 오로지 문자열-> 다른 타입 으로만 지원한다는 사실을 배우게 됨.
[연산자 실습]
1. 실습코드
public static void Secondclass()
{
int ten = 10;
int result = ten + 7;
int result2 = ten - 3;
int result3 = ten * 2;
double result4 = double.Parse(ten.ToString()) * 1.5;
double result5 = ten / 3.0;
int result6 = ten % 4;
string name = "노을";
int year = 2023;
string introduce = "안녕하세요. 제 이름은 " + name + "입니다.";
string thisYear = "올해는 " + year + "년 입니다.";
Console.WriteLine(introduce);
Console.WriteLine(thisYear);
bool result_1 = ten == 10;
bool result_2 = ten != 11;
bool result_3 = ten < 20;
bool result_4 = ten > 5;
}
2. 고민했던 부분
- 수업에 나오는 내용은 아니기도 하고, 사칙연산을 어려워하진 않지만. 가장 쉬운 Main메서드 진입을 필수적으로 해야한다는 사실을 잊고, 자꾸 매서드 오류가 나서 끙끙거림.
3. 검색 후 알게 된 사실.
- C#스크립트는 Main()매서드에서 시작해야 한다는것!
[본격 프로그래밍 시작해보기]
1. 실습코드
public static void thirdclass()
{
Console.WriteLine("숫자, 불리언, 문자열을 입력하세요.");
string A = Console.ReadLine();
if (int.TryParse(A, out int result1))
{
Console.WriteLine("숫자입니다.");
}
else if (bool.TryParse(A, out bool result2))
{
Console.WriteLine("불리언입니다.");
}
else
{
Console.WriteLine("문자열입니다.");
}
Console.WriteLine("숫자를 입력하세요.");
string B = Console.ReadLine();
if (int.Parse(B) >= 100)
{
Console.WriteLine($"{B} 은(는) 100보다 같거나 큰 수 입니다.");
}
else
{
Console.WriteLine($"{B} 은(는) 100보다 작은 수 입니다.");
}
Console.WriteLine("이전과 다른 숫자를 입력하세요.");
string C = Console.ReadLine();
if (int.Parse(C) % 2 == 0)
{
Console.WriteLine($"{C} 은(는) 짝수입니다.");
}
else
{
Console.WriteLine($"{C} 은(는) 홀수입니다.");
}
}
2. 고민했던 부분
- 고민보단. 과제로 나온 if 와 case의 사용 용례.
3. 해결법
- 간단하게도, case는 단일한 여러가지 경우의 수. 즉, 조건이나 이런것이 아니라. 단일한 여러가지의 선택지가 있을때 switch 함수를 통해 사용해주면 편할것 같고.
- if는 말그대로 조건이 길고, 조건에 따른 결과값을 출력할때 사용할 것으로 보인다.
- 예를들어, 발더스3에서 대화를 할때 대화 선택지에 따라 다른 대화를 출력하게 하는것은 switch 함수를 사용하겠지만
- 기존 진행에서 생긴 빌드로, '특정 맵에' '특정 동료'와 같이 와야 이벤트가 활성하되게 하는 방법등은 if를 쓸듯하다.
[숫자...인가요?]
1. 실습코드
public static void firstclass()
{
Console.WriteLine("첫번째 수를 입력해 주세요.");
string A = Console.ReadLine();
Console.WriteLine("두번째 수를 입력해 주세요.");
string B = Console.ReadLine();
if (int.TryParse(A, out int result1) && int.TryParse(B, out int result2))
{
Console.WriteLine("두 데이터는 모두 숫자입니다.");
}
else
{
Console.WriteLine("숫자가 아닙니다.");
}
Console.WriteLine("또 다른 첫번째 수를 입력해 주세요.");
string C = Console.ReadLine();
Console.WriteLine("또 다른 두번째 수를 입력해 주세요.");
string D = Console.ReadLine();
if (int.TryParse(C, out int result3) && int.TryParse(D, out int result4))
{
Console.WriteLine("두 데이터는 모두 숫자입니다.");
}
else if (int.TryParse(C, out int result5) || int.TryParse(D, out int result6))
{
Console.WriteLine("두 데이터 중 하나는 숫자입니다.");
}
else
{
Console.WriteLine("두 데이터 모두 숫자가 아닙니다.");
}
Console.WriteLine("마지막 첫번째 수를 입력해 주세요.");
string E = Console.ReadLine();
Console.WriteLine("마지막 두번째 수를 입력해 주세요.");
string F = Console.ReadLine();
if (int.TryParse(E, out int result7) && int.TryParse(F, out int result8))
{
if (result7 == result8)
{
Console.WriteLine($"{E}와(과) {F}은(는) 같습니다.");
}
else if (result7 > result8)
{
Console.WriteLine($"{E}은(는) {F}보다 큽니다.");
}
else
{
Console.WriteLine($"{E}은(는) {F}보다 작습니다.");
}
}
else
{
Console.WriteLine("두 개의 숫자를 입력해세요.");
}
}
2. 고민했던 부분
- 확실히 난이도가 확 뛴다. 숫자를 비교해야 하다보니, 어떻게 추출해야 할지등에 대해 고민하게 되고. 이에 대해 비교를 어찌할 것인지도 고민이 됬다.
3. 해결법
- 마지막 문제는 힌트코드를 보니 미리 입력을 받고, 그것을 bool isTnt1 = int TryParse(input1, out num1)
로 해서 환산 받고 했다.
- 확실히 그 방법은 쉽고 효과적이어 보이지만, 나는 다른 방법으로. 트라이펄스로 E와 F를 각각 int로 추출해버리고. 순수하게 비교했다.
- 둘 다 틀린 방법은 아닌듯 하지만, 확실히 힌트의 방법이 더 효과가 있을 듯하다. 앞으로도 효율적인 코드를 찾을 수 있도록 노력할것이다.
[대한민국의 수도는?]
1. 실습코드
public static void Secondclass()
{
Console.WriteLine("Q. 대한민국의 수도는 어디인가요?");
Console.WriteLine("1. 인천 2. 평창 3. 서울 4. 부산");
string A = Console.ReadLine();
switch (A)
{
case "1":
Console.WriteLine("오답입니다!");
break;
case "2":
Console.WriteLine("오답입니다!");
break;
case "3":
Console.WriteLine("정답입니다!");
break;
case "4":
Console.WriteLine("오답입니다!");
break;
default:
Console.WriteLine("1~4 의 숫자를 입력해주세요.");
break;
}
}
내가 생각한 코드. switch 함수를 사용해 A를 규정하려 하였다.
Console.WriteLine("Q. 대한민국의 수도는 어디인가요?");
Console.WriteLine("1.인천 2.평창 3.서울 4.부산");
string input = Console.ReadLine();
int num;
bool isInt = int.TryParse(input, out num);
if (isInt)
{
if (num >= 1 && num <= 4)
{
if (num == 3)
{
Console.WriteLine("정답입니다!");
}
else
{
Console.WriteLine("오답입니다!");
}
}
else
{
Console.WriteLine("1~4 의 숫자를 입력해주세요.");
}
}
else
{
Console.WriteLine("숫자가 아닙니다.");
}
자료에서 준 최종 결론. 이번에도 이전과 같이 입력된 번호를 치환해줌으로서, 숫자값이 맞는지 사전에 검증을 하였다.
역시 뭔가 배운사람들은 다르다. 나의 경우, 이용자가 그 값안에 숫자가 아닌 다른 문자열을 넣을수도있기에 문제가 된다.
2. 고민했던 부분
- 고민했던 부분은 위의 코드와 같다. Switch만 써서 더 간단해보이지만. 결국. 선택지가 많아진다거나, 입력의 경우의 수가 많아질 경우에는 문제가 생길수있다. 따라서, 해당 값이 숫자인지 아닌지를 확인할 문구를 넣어주면 좋을 듯하다.
3. 해결법
public static void Secondclass()
{
Console.WriteLine("Q. 대한민국의 수도는 어디인가요?");
Console.WriteLine("1. 인천 2. 평창 3. 서울 4. 부산");
string A = Console.ReadLine();
if (int.TryParse(A, out int result1))
{
switch (A)
{
case "1":
Console.WriteLine("오답입니다!");
break;
case "2":
Console.WriteLine("오답입니다!");
break;
case "3":
Console.WriteLine("정답입니다!");
break;
case "4":
Console.WriteLine("오답입니다!");
break;
default:
Console.WriteLine("1~4 의 숫자를 입력해주세요.");
break;
}
}
else
{
Console.WriteLine("숫자를 입력해주세요.");
}
}
- if조건문을 활용. 결국 A에 숫자값이 아닌 다른 값이 입력될 경우. 숫자를 입력해달라는 경고를 띄울수있도록 변경하였다.
[여행을 떠나요]
1. 실습코드
public static void thirdclass()
{
Console.WriteLine("어디로 여행을 가고 싶나요?");
Console.WriteLine("1. 제주도 2. 코타키나발루 3. 싱가포르 4. 태국");
string A = Console.ReadLine();
if(int.TryParse(A,out int result1))
{
switch (A)
{
case "1":
Console.WriteLine("제주도는 한국의 섬으로 비교적 방문이 쉽고 다양한 놀거리/먹거리가 준비되어 있습니다.");
break;
case "2":
Console.WriteLine("코타키나발루는 말레이시아 사바주의 주도로, 말레이시아 동부 보르네오섬 최대의 도시입니다.");
break;
case "3":
Console.WriteLine("싱가포르는 동남아시아, 말레이 반도의 끝에 위치한 섬나라이자 항구 도시로 이루어진 도시 국가입니다.");
break;
case "4":
Console.WriteLine("태국은 중국문화, 말레이문화, 불교문화, 힌두문화, 이슬람 문화가 혼재되어 있습니다. 불교적인 모습을 많이 띄지만, 문화 자체는 색다르고 스펙트럼이 넓은 형태를 띄고있어요.");
break;
default:
Console.WriteLine("1~4 의 숫자를 입력해주세요.");
break;
}
}
else
{
Console.WriteLine("숫자가 아닙니다.");
}
}
2. 고민했던 부분
- 이전에 고민했던 부분으로, 해결되어 후련함.
3. 해결법
- if는 조건문이라 부르고. switch는 선택문이라고 해서. 용도가 같은데 왜그럴까 생각했는데 확실히 알수있는 실습이었음.
[이름 찾기!]
1. 실습코드
public static void fourthclass()
{
bool isSuccess;
do
{
Console.WriteLine("이름을 입력해주세요(3~10글자)");
string input = Console.ReadLine();
if (input.Length >= 3 && input.Length <= 10)
{
Console.WriteLine($"안녕하세요! 제 이름은 {input} 입니다.");
}
else
{
Console.WriteLine("이름이 3~10글자가 아닙니다.");
}
isSuccess = input.Length >= 3 && input.Length <= 10;
}
while (!isSuccess);
}
2. 고민했던 부분
- 난이도가 갑자기 확 높아져서 당황했다. if, else를 적용시키는건 쉬웠지만. 반복시키는게 쉽지 않았었고, 이에 대해 고민을 꽤 오래했다.
3. 해결법
- 결국 힌트를 보긴 했지만. do - while을 어쩔때 사용하고 어떻게 해야하는지 확실히 알수있었다!!
'팀스파르타 내일배움캠프' 카테고리의 다른 글
| [사전캠프 6일차] Unity 활용연습 (0) | 2025.03.24 |
|---|---|
| [사전캠프 5일차] Unity 활용해보기 복습 + C# 걷기 복습! (0) | 2025.03.21 |
| [사전캠프 4일차] Unity 활용해보기! 2회차! (1) | 2025.03.20 |
| [사전캠프 2일차] Unity 활용해보기 (0) | 2025.03.18 |
| [사전캠프 1일차] Unity에 대한 조사 (1) | 2025.03.17 |