쉬는 기간동안 여러 대회를 나가서 수상도 하고 상금도 받으며, 회사에서 인턴마냥 일을 하면서 느꼈던 것이 있다
너무 기초가 안되어 있는 것 같다....
대회에서는 크게 느끼지 못했는데, 회사에서 굴러다니다 보니, 내 코드가 얼마나 쓰레기 같은지 다시 끔 느끼고 있다
가장 큰 문제는, 이때까지 공부한 유니티 스크립트 코딩이 전체적으로 C#에 근거해서 짜야 하는데, 나는 C#을 배운적이 없다.....!
이 무슨 덧셈 뺄셈도 모르면서 곱하기 나누기를 하고 있는 판국인가 싶어서 C# 기초를 파보기로 했다.
책은 강벽익님의
"초보자를 위한 C#200제"를 사용했다
part1 ~ 5 까지 나누어져 있는데, 약 100제까지 해보면 대충 감이 올 것 같다.
이 카테고리에서는 예제를 전체적으로 정리하는 부분이 될 것 같다.
1. 간단한 C# 프로그램을 명령줄에서 컴파일하기
--------------------------------------------------------------------------------------------------------------
using System;
class Hello
{
static void Main()
{
Console.WriteLine("Hello, World");
}
}
--------------------------------------------------------------------------------------------------------------
가장 먼저 보는 안녕, 세상! 코드
가장 무서운 사실 나는 지금 console. 코드를 처음 보는것이다.
이 무슨.......
2. 비주얼 스튜디오 설치하고 출력
--------------------------------------------------------------------------------------------------------------
using System;
namespace A002_HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Test");
}
}
}
--------------------------------------------------------------------------------------------------------------
전체적인 틀을 보여준다. C#에서는 네임 스페이스 -> 클레스 -> 메인
순으로 틀을 잡고 시작한다.
3. 콘솔에서 읽고 쓰기
--------------------------------------------------------------------------------------------------------------
using System;
namespace Part1
{
class Program
{
static void Main(string[] args)
{
Console.Write("Hello ");
Console.WriteLine("World!");
Console.Write("이름을 입력하세요: ");
string name = Console.ReadLine();
Console.Write("안녕하세요, ");
Console.Write(name);
Console.WriteLine("님");
}
}
}
--------------------------------------------------------------------------------------------------------------
cpp에서 쉽게 보든 cin cout의 C#버전이다
아쉽게도 유니티에서 쓸일은 없으니 지식적으로만 알고있으면 될 것 같다.
혹시나 유니티에서 프롬포트를 쓸일이 있으면? 쓸?수도
4. 변수 선언 및 자료형
--------------------------------------------------------------------------------------------------------------
using System;
namespace Part1
{
class Program
{
static void Main(string[] args)
{
Console.Write("이름을 입력하세요 : ");
string name = Console.ReadLine();
Console.Write("나이를 입력하세요 : ");
int age = int.Parse(Console.ReadLine());
Console.Write("안녕하세요, ");
Console.Write(name + "님!");
Console.WriteLine("나이는 " + age + "세 입니다.");
}
}
}
--------------------------------------------------------------------------------------------------------------
C#에서 사용되는 변수형을 알려주는 코드인데, 그냥 cpp랑 동일하다
int, short, double 등등, 그냥 다른 c언어 코드를 알고 있으면 굳이굳이?
다만, C#에는 뜬금없이 decimal이라는 자료형도 존제하는데, 128bit짜리 자료형이다.
금융계에서 큰 자리수를 사용할때 쓴다는데.......
그렇다 지식적으로만 알고 있으면 될 것 같다.
5. 문자와 문자열
--------------------------------------------------------------------------------------------------------------
using System;
// 5. 문자와 문자열
namespace Part1
{
class Program
{
static void Main(string[] args)
{
string a = "hello";
string b = "h";
b = b + "ello";
Console.WriteLine(a == b);
Console.WriteLine("b = " + b);
int x = 10;
string c = b + '!' + " " + x;
Console.WriteLine("c = " + c);
}
}
}
--------------------------------------------------------------------------------------------------------------
그냥 string에 +로 문자열을 붙이는걸 보여주는 것이다
6. 대입 연산자와 대입문
--------------------------------------------------------------------------------------------------------------
using System;
namespace Part1
{
class Program
{
static void Main(string[] args)
{
int i;
double x;
i = 5;
x = 3.141592;
Console.WriteLine("i = " + i + ", x = " + x);
x = i;
i = (int)x;
Console.WriteLine("i = " + i + ", x = " + x);
}
}
}
--------------------------------------------------------------------------------------------------------------
코딩의 기초인 =에 대해서 알려주는 코드이다
x = i;
i = (int)x;
흔히 볼 수 있는 형변환 예시도 보여준다
7. Console.WriteLine 메소드
--------------------------------------------------------------------------------------------------------------
using System;
namespace Part1
{
class Progaram
{
static void Main(string[] args)
{
bool b = true;
char c = 'A';
decimal d = 1.234m;
double e = 1.23456789;
float f = 1.23456789f;
int i = 1234;
string s = "Hello";
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
Console.WriteLine(e);
Console.WriteLine(f);
Console.WriteLine(i);
Console.WriteLine(s);
}
}
}
--------------------------------------------------------------------------------------------------------------
각 자료형들을 출력하면 어떻게 나오는지 보여주는 코드이다.
8. Console.WriteLine 메소드로 여러개의 값을 출력
--------------------------------------------------------------------------------------------------------------
using System;
namespace Part1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("10 이하의 소수: {0}, {1}, {2}, {3}", 2, 3, 5, 7);
string primes;
primes = String.Format("10 이하의 소수: {0}, {1}, {2}, {3}", 2, 3, 5, 7);
Console.WriteLine(primes);
}
}
}
--------------------------------------------------------------------------------------------------------------
Console.WriteLine(A, B, C, D ....)
이런식으로 여러개를 동시에 출력하는 방법에 대한 이야기이다.
c에서는 %d를 사용했던것을 {0}. {1} 이렇게 출력하는 방식으로 되는 것 같다.
특이한것은 String.Format()이라는 것인데, 출력에서 사용하는 문법을 string 자료형에 적용할 수 있는 것 이다.
유니티에서 유용하게 사용할 수 있을 것 같다.
9. 두 변수를 출력하는 방법
--------------------------------------------------------------------------------------------------------------
using System;
namespace Part1
{
class Program
{
static void Main(string[] args)
{
int v1 = 100;
double v2 = 1.234;
Console.WriteLine(v1.ToString() + ", " + v2.ToString());
Console.WriteLine("v1 = {0}, v2 = {1}", v1, v2);
Console.WriteLine($"v1 = {v1}, v2 = {v2}");
string test = String.Format($"v1 = {v1}, v2 = {v2}");
Console.WriteLine(test);
}
}
}
--------------------------------------------------------------------------------------------------------------
8번에서 사용한 방식의 연장선으로 앞에 $를 붙이게 되면 {}사이에 직접적으로 변수명을 입력하는 것이 허용된다.
10. 형식지정자를 사용한 Console.WriteLine메소드
--------------------------------------------------------------------------------------------------------------
using System;
namespace Part1
{
class Program
{
static void Main(string[] args)
{
Console.Clear();
Console.WriteLine(
"(C) Currency : {0:C}\n" +
"(D) Decimal : {0:D}\n" +
"(E) Scientific : {1:E}\n" +
"(F) Fixed point : {1:F}\n" +
"(G) General : {0:G}\n" +
"(N) Number : {0:N}\n" +
"(P) Percent : {1:P}\n" +
"(R) Rount-trip: {1:R}\n" +
"(X) Hexadecimal: {0:X}\n",
-12345678, -1234.5678f);
}
}
}
--------------------------------------------------------------------------------------------------------------
C#에서 사용되는 형식 지정자에 대한 코드
C 통화단위가 붙음
D 정수(십진수)가 됨
E E+003처럼 10의 3제곱 표현을 해줌
F 소수점을 고정해줌
G 위와 비슷하게 작동하지만, 소수점보다 더 큰 단위로 처리함
EX - 1234.5678을 G5로 정리하면 1234.6이 됨
N 천의 자리로, 를 붙여줌
P 퍼센트단위로 변경해줌
R 라운드....트림....? 몰?루
GPT왈
C#에서 형식 지정자 R(또는 Round-trip)은 숫자 값을 문자열로 변환할 때, 가능한 한 정확하게 원래 값을 복원할 수 있도록 형식을 지정하는 방식입니다. R 형식 지정자는 숫자의 정확도를 유지하면서도, 문자열로 변환된 값을 다시 숫자로 변환했을 때 원래의 값과 같도록 합니다.
R 형식 지정자는 주로 부동 소수점 숫자에 사용되며, 수치 데이터가 손실되지 않고 변환될 수 있도록 하는 것이 목적입니다. 이 형식 지정자는 유용할 때가 있지만, 문자열의 길이와 형식이 원래 값의 정확도를 보장하지 않을 수도 있습니다.
예제
다음은 R 형식 지정자를 사용하는 예제입니다:
이 코드에서 formatted 문자열은 R 형식 지정자를 사용하여 부동 소수점 숫자를 문자열로 변환합니다. 결과는 대개 다음과 같은 형태일 것입니다:
이 문자열을 다시 숫자로 변환하면 원래 숫자와 동일한 값을 얻을 수 있습니다.
주요 사항
- R 형식 지정자는 숫자의 정밀도를 유지하기 위해 최대한 정확하게 표현합니다.
- 이 형식 지정자는 Double 또는 Single(float) 타입에서 주로 사용됩니다.
- 변환된 문자열이 매우 길어질 수 있으며, 출력의 길이가 일정하지 않을 수 있습니다.
R과 F의 차이점
- R(Round-trip)은 정확한 원래 값을 복원할 수 있도록 표현합니다.
- F(Fixed-point)는 소수점 이하의 자릿수를 지정하여 고정된 소수점 형태로 표현합니다. 예를 들어, F2는 소수점 이하 2자리까지 표시합니다.
이처럼 R 형식 지정자는 정확성을 유지하면서도, 숫자를 문자열로 변환하고 다시 숫자로 변환할 때 원래 값을 그대로 복원할 수 있는 유용한 방식입니다.
진짜 모름
X 16진수로 바꿔줌
'공부 > C#' 카테고리의 다른 글
C# 공부(5) 51~56 (Part 1 End) (0) | 2024.08.24 |
---|---|
C# 공부(4) 41~50 (0) | 2024.08.24 |
C# 공부(3) 31~40 (0) | 2024.08.23 |
C# 공부(2) 21~30 (0) | 2024.08.22 |
C# 공부(2) 11~20 (0) | 2024.08.21 |