Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Tags
more
Archives
Today
Total
관리 메뉴

동구의_C# & Unity_개발일지

2023.12.29 내일배움캠프 6일차 TIL C#_ProGramming(C# 문법) 본문

C#

2023.12.29 내일배움캠프 6일차 TIL C#_ProGramming(C# 문법)

mongle_0l 2023. 12. 29. 11:01

오늘은 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) 에 집중하는 것입니다.

여기서의 키워드는 “의도” 입니다. 우리는 자동차가 무엇인지? 어떻게 굴러가는지보다 브레이크를 왜 밟아야 하는지를 먼저 학습합니다.

“빠르게 실패하기”

얼마나 좋은 코드를 작성했는가 보다 얼마나 많은 코드를 접해보고 오류를 해결해 보았는지가 진정한 실력으로 이어집니다.