[C#] Hello, Visual Studio

Lingtea_luv·2025년 3월 11일
0

C#

목록 보기
1/37
post-thumbnail

"Hello, World"

코딩을 모르는 사람도 들어봤을만한 프로그램 "Hello, World" 를 만들어보자.

using? namespace? class?

  using System;

Hello, World 라는 문장을 출력하기 위해서는 Console의 WriteLine 함수를 사용해야한다.
하지만 이 함수는 다른 개발자가 System이라는 공간에서 개발한 함수이기 때문에 System을 참조하겠다고 컴퓨터에게 말할 필요가 있다.

  namespace ConsoleApp2{}

우리는 System에서 불러온 console 함수를 사용해 개발한 공간을 만들어야한다.
이때 namespace는 독자적인 개발 공간을 의미하고 위의 코드는 ConsoleApp2이라는 공간을 새롭게 정의하고 해당 공간에서 개발을 할 것이라고 컴퓨터에게 말해주는 것이다.

  internal class Program{}

namespace에서 새롭게 개발을 진행한다고 했을 때 어떤 것을 개발해야할지 정해야한다.
이때 개발할 주체를 새롭게 정의할 필요가 있고 이 형식을 class라고 한다.
위의 코드는 Program이라는 주체를 정의하고 이에 대해 다룰 것임을 컴퓨터에게 말해주는 것이다.

  static void Main(string[] args)
  • static
    모든 객체에 공유되는 변수나 메서드를 정의하기 위해 사용된다.
    특정 객체를 생성하고 해당 객체에만 적용되는 것이 아닌, 모든 객체에 적용되는 특징을 갖는다.
    따라서 위의 코드는 모든 객체에 사용될 수 있는 Main 메서드(함수)를 의미한다.
  • void
    void가 있는 위치는 메서드의 반환형이 들어갈 위치이다.
  int a = 2;
  int b = 3;
  int add(int a,int b)
  	{
  	int sum = a+b;
  	return sum;
  	}

위의 예시를 보면 add() 메서드의 반환형은 int인 것을 알 수 있다.
마찬가지로 void 또한 반환형이며, 다만 어떠한 값도 반환하지 않을 때 사용한다.
Main 메서드 실행 이후에는 반환할 데이터가 없거나, 반환할 필요가 없기 때문에 void를 사용한다.

  • Main()
    프로그램의 시작점을 표시한다고 생각하면 편하다.
    Main 메서드의 실행이 끝나면 프로그램이 종료되기 때문에 프로그램의 마지막 또한 알 수 있다.
    Main 메서드는 프로그램의 시작과 끝을 정해준다고 볼 수 있다.
  • string[] args
    Main 메서드의 매개변수를 의미한다.
    Main 메서드의 경우 명령 프롬프트 상에 문자열로 표기된 매개변수를 읽어야하므로 매개변수로 string을 사용하는 것이 나름(?) 당연하다고 볼 수 있다.

도움이 된 블로그

해석

결과적으로 작성한 코드를 해석하면 다음과 같다.

나는 개발자들이 System에서 만든 Console 함수를 사용하려고 해
ConsoleApp2이라는 곳에서 Program을 만드는데 사용할거야
우선 Console 함수 중에 Console.WriteLine 이라고 작성된 문장을 출력하는 함수가 있거든?
그걸로 Hello, World 출력하고 프로그램은 종료해줘.

Hello, World는 단순히 문자열을 콘솔창에 출력하는 프로그램이 아닌, using의 의미부터 Console 함수의 사용까지 Visual Studio에서 C#이 구동되는 전반적인 원리를 이해하기 위한 프로그램으로 볼 수 있다.

Visual Studio for C#

기본 규칙

이것만큼은 꼭 지키자!

1. 폴더 경로는 영어로!

2. 참조 구문, 선언은 한 줄에 하나씩

3. 메서드, 속성 정의 사이에 빈 줄 추가할 것

4. 한 줄에 여러 논리식이 결합되어 있는 경우 괄호로 구분

Escape Sequence

\를 사용하면 뒤에 나오는 문구를 특수 처리할 수 있다.

  Console.WriteLine("나는 철수에게 "경고" 했다.")

철수에서 특별한 경고를 하기 위해서 경고 양 옆에 "를 붙인 채로 출력을 하고 싶지만, 위의 코드를 보면 컴퓨터가 제대로 인식하지 못 하는 것을 볼 수 있다.

  Console.WriteLine("나는 철수에게 \"경고\" 했다.")

이때 이런 식으로 출력하고 싶은 " 앞에 \를 작성하면 컴퓨터는 출력해야하는 대상으로 인식을 해주는 것을 알 수 있다. 이렇게 특수처리를 해주는 +char 를 Escape Sequence 라고 한다.

자리 표시자

  Console.WriteLine("오크이(가) 10의 데미지로 공격합니다");
string name;
int attack;

name = "오크";
attack = 10;

Console.WriteLine("{0}이(가) {1}의 데미지로 공격합니다",name,attack);  

위의 두 코드는 동일한 문장을 출력한다. 겉으로 보기에는 아래보다는 위의 코드가 더 간결하므로 위를 사용하는 것이 좋아보이나, 아래 코드의 진가는 정의해야 할 몬스터가 굉장히 많을 때 발휘된다.
자리표시자를 사용함으로써 반복적인 작업을 줄일 수 있고, 실수를 줄일 수 있다.

변수

string argument = "안녕하세요"

  • string
    저장하고자하는 대상의 형태(자료형) : 연산의 용이함을 위해
  • argument
    저장소의 이름 : 헷갈리지 않도록 명확한 이름 사용. 중복은 불가능
  • "안녕하세요"
    실제 저장하고자 하는 값 : 변수를 사용하기 위해서는 값을 지정해야한다.

자료형 선언

  • int : 4byte 정수형 변수. 클라이언트 개발에서 가장 많이 사용. 처리 속도가 빠르다.
  • float : 4byte 실수형 변수. 오차가 있어도 빠른 계산을 위한 게임 개발에서 많이 사용.
  • string : 문자열 변수. 문자열 양 끝에 ""을 사용한다.
  • char : 문자 변수. 문자 양 끝에 ''을 사용한다.
  • bool : 논리값 변수. true/false 값만 존재한다.

변수명

  1. 중복, 띄어쓰기, 특수 문자 불가능
  2. 숫자부터 시작하는 것 불가능
  3. 카멜 표기법 사용 : maxSpeed , carNum
  4. 대문자, 소문자 구분 가능
  5. 유의미한 단어를 사용할 것

값 설정

  int a = 2;
  
  int a;
  a = 2;

위의 코드처럼 변수 선언과 함께 값을 지정할 수 있다. 다만 개체가 많을 경우 변수 선언만 하고 개체 별로 값을 새롭게 설정하는 것이 더 편하고 가시성이 좋다.

vs 상수

  const double Pi = 3.14;

프로그램에서 값을 변경할 수 없도록 하는 데이터로, 변수 선언문 앞에 const를 입력하고 값을 반드시 설정해줘야한다. 보통 게임 개발에서는 값이 바뀌면 안 되는 경우 상수로 설정한다.

개인 과제

위에서 배운 것들을 활용해서 나의 소개를 하자면 다음과 같다. 막상 다 하고나니까 진짜로 다 들어가있어서 신기하네.

profile
뚠뚠뚠뚠

0개의 댓글