동구의_C# & Unity_개발일지
2023.12.29 내일배움캠프 6일차 TIL C#_ProGramming(C# 문법) 본문
오늘은 C# 강의의 첫 시작이자 새로운 팀원을 만나는 시간을 가졌다.
4명의 팀원으로 자기소개와 팀 노션을 만드는 것으로 오늘의 하루가 시작되었다!
이번 주차는 개인 학습 시간으로 개인별 학습과 과제를 하면 된다.
이번에 집중적으로 학습할 C#이라는 언어는 Unity 사용에 있어 가장 기초적이고 근간이 되는 언어이기도 하기 때문에 잘 익혀두어야 한다.
C# 문법 종합반 1주차
C# 소개, 개발 환경 설정
프로그래밍 기본 요소
변수와 자료형
연산자와 문자열 처리
01. Visual Studio 2022 설치
02. C# 언어와 .NET 프레임워크에 대해 이해하기
2-1) C# 언어의 특징
- 마이크로소프트에서 만든 객체 지향 프로그래밍 언어이며, 안전하고 형식이 분명하다.
- 강력한 형식 시스템과 가비지 컬렉션 기능을 제공한다.
- “다양한 플랫폼”에서 사용 가능하며, .NET 프레임워크에서 실행된다.
- C, C++, Java 등 다른 언어들과 문법 및 구조적으로 유사하다.
2-2) .NET 프레임워크
- .NET 프레임워크는 Microsoft에서 개발한 프로그래밍 플랫폼으로, 다양한 프로그래밍 언어를 지원하며, 개발자가 손쉽게 애플리케이션을 개발할 수 있도록 도와준다.
03. Hello World 로 기본 코드 구조 확인
using System;
namespace HelloWorld
{
class program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
- using System;은 C#에서 기본적으로 제공하는 네임스페이스(System 네임스페이스)를 사용하기 위한 코드입니다. Console 클래스를 사용하기 위해 필요합니다.
- namespace는 코드를 구성하는 데 사용되며 클래스 및 기타 네임스페이스의 컨테이너입니다.
- class Program는 C# 클래스를 정의하는 키워드입니다. 클래스 이름은 Program로 지정합니다.
- static void Main()은 C#의 진입점(entry point)입니다. Main 메서드는 프로그램이 시작할 때 자동으로 호출되는 메서드입니다. Main 메서드는 프로그램 실행에 필수적입니다.
- Console.WriteLine("Hello World");은 콘솔에 출력할 내용을 지정하는 코드입니다. WriteLine 메서드는 새 줄을 시작하고 출력할 문자열을 인자로 받습니다.
- {}는 코드 블록의 시작과 끝을 나타내는 중괄호입니다.
- 모든 C# 문은 세미콜론으로 끝납니다 ;.
04. Consloe.Write와 Consloe.WriteLine의 차이
- Consloe.Write 메소드는 Consloe.WriteLine 메소드와 유사하지만, 줄 바꿈 문자열을 추가하지 않습니다. 즉, 출력한 후에는 다음 출력이 이어서 출력됩니다.
05. 이스케이프 시퀸스(Escape Sequence)
이스케이 시퀀스 | 설명 |
\' | 작은따옴표(') 삽입 |
\" | 큰따옴표(") 삽입 |
\\ | 역슬래시() 삽입 |
\n | 새 줄(줄바꿈) 삽입 |
\r | 현재 줄 맨 앞으로 이동 |
\t | 탭 삽입 |
\b | 백스페이스 삽입 |
# 이스케이프 시퀸스를 사용한 예시
Console.WriteLine("Hello\nWorld");
// 출력결과
// Hello
// World
Console.WriteLine("Name\tAge");
Console.WriteLine("Kero\t30");
Console.WriteLine("Young\t25");
// 출력결과
// Name Age
// Kero 30
// Young 25
Console.WriteLine("We learn \"C# Programming\"");
// 출력결과
// The book is called "C# Programming"
Console.WriteLine("He said, \'Hello\' to me.");
// 출력결과
// He said, 'Hello' to me.
Console.WriteLine("C:\\MyDocuments\\Project\\");
// 출력결과
// C:\MyDocuments\Project\
06. 가장 많이 사용되는 자료형 (Data Type)
자료형 | 크기 (바이트) | 범위 |
int | 4 | -2,147,483,648 ~ 2,147,483,647 |
long | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
float | 4 | ±1.5 × 10^-45 ~ ±3.4 × 10^38 |
double | 8 | ±5.0 × 10^-324 ~ ±1.7 × 10^308 |
char | 2 | 유니코드 문자 |
string | 유니코드 문자열 | |
bool | 1 | true 또는 false |
07. 변수란?
- 데이터(숫자, 문자 등)를 저장하고 사용하기 위한 할당 받은 공간
- 필요에 따라 데이터를 저장하거나 수정 가능
- 예를 들어 게임을 제작할 때 플레이어의 재화나 공격력, HP 같은 정보를 저장하기 위해 사용
♠ 변수 초기화변수를 선언한 후에는 변수를 초기화하여 값을 저장해야 합니다.♤
int num; // 변수 선언
num = 10; // 변수 초기화
08. Console.ReadLine을 이용한 입력
- C#에서 콘솔 입력을 받을 때는 Console.ReadLine 메소드를 사용합니다. ReadLine 메소드는 사용자가 입력한 값을 문자열로 반환합니다.
string input = Console.ReadLine();
// Console.ReadLine 메소드를 사용하여 값을 입력받기
Console.Write("Enter your name: ");
string name = Console.ReadLine();
Console.WriteLine("Hello, {0}!", name);
[출력]
Enter your name: Kero
Hello, Kero!
09. 산술, 관계, 논리 연산자 사용법
9-1) 산술연산자
연산자 | 설명 |
+ | 덧셈 |
- | 뺼셈 |
* | 곱셈 |
/ | 나눗셈 |
% | 나머지 |
9-2) 관계연산자
연산자 | 설명 |
== | 같음 |
!= | 다름 |
> | 큼 |
< | 작음 |
>= | 크거나 같음 |
<= | 작거나 같음 |
9-3) 논리연산자
연산자 | 설명 |
&& | 논리곱(AND) |
|| | 논리합(OR) |
! | 논리부정(NOT) |
10. 비트 연산자
연산자 | 설명 |
& (AND) | 두 비트 값이 모두 1일 때 1을 반환 |
| (OR) | 두 비트 값 중 하나라도 1일 때 1을 반환 |
^ (XOR) | 두 비트 값이 서로 다를 때 1을 반환 |
~ (NOT) | 비트 값의 보수(complement)를 반환 |
<< (왼쪽 시프트) | 비트를 왼쪽으로 이동 |
>> (오른쪽 시프트) | 비트를 오른쪽으로 이동 |
int a = 0b1100; // 12 (2진수)
int b = 0b1010; // 10 (2진수)
int and = a & b; // 0b1000 (8)
int or = a | b; // 0b1110 (14)
int xor = a ^ b; // 0b0110 (6)
int c = 0b1011; // 11 (2진수)
int leftShift = c << 2; // 0b101100 (44)
int rightShift = c >> 1; // 0b0101 (5)
int d = 0b1100; // 12 (2진수)
int bit3 = (d >> 2) & 0b1; // 1 (3번째 비트)
d |= 0b1000; // 0b1100 | 0b1000 = 0b1100 (12)
Tip) 주석처리 단축키
ctrl + k + c (전체 주석)
ctrl + k + u (전체 주석 삭제)
C#_ProGramming_chapter1: 과제
1-1 사용자로부터 입력 받기
이름과 나이를 입력 받고 출력하는 코드를 작성하세요.
namespace ConsoleApp1
{
internal class Chapter1
{
static void Main(string[] args)
{
Console.Write("이름을 입력하세요: ");
string name = Console.ReadLine();
Console.Write("나이를 입력하세요: ");
string age = Console.ReadLine();
Console.WriteLine("안녕하세요, {0}! 당신은 {1} 세 이군요", name, age);
}
}
}
1-2 간단한 사칙연산 계산기 만들기
두 수를 입력 받고 사칙연산의 결과를 출력하세요.
namespace ConsoleApp1
{
internal class Chapter1
{
static void Main()
{
Console.Write("첫번째 수를 입력하세요: ");
int num1 = int.Parse(Console.ReadLine());
Console.Write("두번째 수를 입력하세요: ");
int num2 = int.Parse(Console.ReadLine());
Console.WriteLine("더하기: " + (num1 + num2));
Console.WriteLine("빼기: " + (num1 - num2));
Console.WriteLine("곱하기: " + (num1 * num2));
Console.WriteLine("나누기: " + ((float)num1 / num2));
}
}
}
int.Parse(...): Parse는 문자열(string)을 특정 데이터 형식으로 변환하는 메서드이다. 여기서는 Console.ReadLine()에서 받아온 문자열을 정수(int)로 변환하고 있다.
1-3 온도 변환기 만들기
사용자로부터 섭씨온도를 입력받아, 화씨온도로 변환하는 프로그램을 만들어봅시다.
공식은 화씨 = (섭씨 * 9/5) + 32 입니다.
// 내가 작성한 코드
namespace ConsoleApp1
{
internal class Chapter1
{
static void Main()
{
Console.Write("섭씨 온도를 입력하세요: ");
float num = int.Parse(Console.ReadLine());
Console.WriteLine("변화된 화씨 온도: " + ((num * 9/5) + 32));
}
}
}
// 풀이 코드
using System;
class Program
{
static void Main()
{
Console.Write("섭씨 온도를 입력하세요: ");
float celsius = float.Parse(Console.ReadLine());
float fahrenheit = (celsius * 9 / 5) + 32;
Console.WriteLine("변환된 화씨 온도: " + fahrenheit);
}
}
두 개의 코드가 다른데 결과 값이 같은 이유는 형변환이 자동으로 이루어졌기 때문이다.
이 코드에서 float num = int.Parse(Console.ReadLine()); 라인에서 형변환이 일어나고 있다.
내가 작성한 코드는 Console.ReadLine()으로 입력받은 문자열을 int로 변환한 후에, 그 값을 float로 다시 형변환하고 있다.
1-4 BMI 계산기 만들기
사용자로부터 키(m)와 체중(kg)를 입력받아, BMI 지수를 계산하는 프로그램을 만들어봅시다. 공식은
BMI = 체중(kg) / 키(m)^2 입니다.
// 내가 작성한 코드
namespace ConsoleApp1
{
internal class Chapter1
{
static void Main()
{
Console.Write("키(m): ");
float height = float.Parse(Console.ReadLine());
Console.Write("체중(kg): ");
float weight = float.Parse(Console.ReadLine());
Console.WriteLine("BMI 지수: " + (float)weight / Math.Pow(height, 2));
}
}
}
// 풀이 코드
using System;
class Program
{
static void Main()
{
Console.Write("체중(kg)를 입력하세요: ");
float weight = float.Parse(Console.ReadLine());
Console.Write("키(m)를 입력하세요: ");
float height = float.Parse(Console.ReadLine());
float bmi = weight / (height * height);
Console.WriteLine("당신의 BMI: " + bmi);
}
}
BMI을 구하는 과정에서 키(m)^2라는 것을 코드에 어떻게 작성할까 고민을 하고 찾아보았다.
첫 번째 방법은 단순이 두번을 곱하는 것이다 > bmi = weight / (height * height)
두 번째 방법은 Math.Pow을 사용하는 것이다 > BMI 지수: " + (float)weight / Math.Pow(height, 2)
조금은 생소할 수 있는 Math.Pow란 C#의 System.Math 클래스에 속한 메서드로, 주어진 숫자를 지정된 지수로 제곱한 값을 반환하는 함수이다!
더 쉬운 예를 들어, Math.Pow(2, 3)은 2의 3제곱을 계산하여 8을 반환한다.
💌 공부를 시작하는 여러분에게 해주고 싶은 말(김영호 튜터님)
무엇(What)일까 고민하는 것보다 중요한것은 왜(Why) 에 집중하는 것입니다.
여기서의 키워드는 “의도” 입니다. 우리는 자동차가 무엇인지? 어떻게 굴러가는지보다 브레이크를 왜 밟아야 하는지를 먼저 학습합니다.
“빠르게 실패하기”
얼마나 좋은 코드를 작성했는가 보다 얼마나 많은 코드를 접해보고 오류를 해결해 보았는지가 진정한 실력으로 이어집니다.
'C#' 카테고리의 다른 글
2024.01.04 내일배움캠프 9일차 TIL C#_ProGramming(C# 문법) (0) | 2024.01.04 |
---|---|
2024.01.03 내일배움캠프 8일차 TIL C#_ProGramming_2(C# 문법) (0) | 2024.01.04 |
2024.01.03 내일배움캠프 8일차 TIL C#_ProGramming(Text_Game) (0) | 2024.01.03 |
2024.01.02 내일배움캠프 7일차 TIL C#_ProGramming_2 (0) | 2024.01.02 |
2024.01.02 내일배움캠프 7일차 TIL C#_ProGramming(C# 문법) (1) | 2024.01.02 |