1. 강좌 목표


- 기본구조 파악

- 콘솔창 출력


2. 새 프로젝트 만들기


[비주얼 스튜디오를 실행 -> 파일->새로 만들기 ->프로젝트또는 [단축키 Ctrl+Shift+N] 새 프로젝트 창을 엽니다.



새 프로젝트 창에서 Visual C# -> 콘솔 앱(.NET Framework)를 선택하여 확인


이렇게 새로운 프로젝트를 생성을 하면 아래와 같은 창이 보이게 됩니다.

항목들을 간단하게 확인해 보면 Program.cs 는 앞으로 우리가 작성하게될 코드 문서이고

우측 솔루션 탐색기는 작성한 문서들의 폴더 같은 역활을 하게 됩니다.

Visual Studio는 프로그램을 하기위한 도구임으로 강좌 중간중간 기능들을 설명 하도록 하겠습니다.

코드란 : 컴퓨터가 알아볼수 있는 기호 또는 부호


이제 본격적으로 C#의 기본 코드를 보면서 진행하겠습니다.


3. 기본구조 이해

기본 코딩하기 위해서는 문서작성을 하듯이 하면 됩니다.

처음 새 프로젝트를 만들면 아래와 같은 코드로 구성이 되는데 실제 사용하기위한 코드만 남기고 수정을 하겠습니다.

(Program.cs 안에 있는 내용 모두를 삭제하셔도 됩니다.)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

우선 아래와 같이 작성을 하도록 합니다.


using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
           Console.WriteLine("안녕하세요");
        }
    }
}

작성이 끝나셨으면 [Ctrl+Shift+b] 또는 [빌드 -> 솔루션빌드] 를 누릅니다.

정상적으로 빌드가 되었다면 이제 결과를 확인해봅시다.

결과를 확인 하기 위해서는 [Ctrl+F5]를 눌러보면 콘솔창이 뜨면서 확인할수 있습니다.


컴파일 : 위에 작성한 코드들의 문법을 분석해 기계어로 번역

빌드    : 컴파일을 통해 번역된 것과 그외 잡다한걸 모아서 실행 가능한 파일로 만드는것


결과:

안녕하세요
계속하려면 아무 키나 누르십시오...


축하합니다.

위의 내용과 동일한 결과를 보셨다면 프로그래밍의 첫발을 내딛었으며 앞으로 진행할 강좌도 쉽게 진행 하실수 있습니다.

혹시 실패 하셨더라도 아래 내용을 참고하여 다시한번 도전해보세요.


4. 구조 이해


컴파일러

우리가 공부하는 C# 뿐만아니라 C, C++, JAVA 등 많은 프로그래밍 언어들은 각각의 컴파일러가 존재 합니다.

각 컴파일러에 의해 exe, dll 파일 등과 같이 만들어진 출력 파일을 어셈블리(Assembly)_라고 부르는데 이것을 

컴퓨터는 다시 자신이 알수있는 원시 코드로 컴파일하여 우리가 만든 프로그램이 실행되게 만듭니다.


[C# 코드] -> [C# 컴파일]->[빌드]->[exe, dll 실행]->[원시 코드 컴파일]->[프로그램 시작]



디버깅

일반적으로 게임을 하다보면 의도치 않은 종료나 비정상적인 결과가 나왔을때 유저들은 버그라고 부릅니다.

이런 논리적 오류나 잠재적인 오류를 가리켜 통칭 버그(Bug)라 부르는데 이를 근본적인 원인을 찾아내 

해결할수 있는 작업을 디버깅이라 할수 있습니다.


디버깅을 하기 위해서는 F5를 누르면 바로 디버깅이 시작되는데 결과창을 확인 하기도전에 콘솔창이 닫히게

되는데 이는 코딩을 잘못해서가 아니라 컴퓨터가 더이상 행할수 있는 코드가 없어서 자동 종료된 것입니다.

우리가 사용하였던 Ctrl+F5는 디버깅을 하지 않고 실행을 누른것과 마찬가지로 동작하게 됩니다.


이제 우리가 작성한 코드를 보도록 하겠습니다.


using System;은 얼핏 보면 하나 같지만 세 가지 요소로 이루어져 있습니다.

[키워드] + [네임스페이스] + [문장의 끝을 알리는 기호]

쉽게 말해 "System이라는 네임스페이스를 가져다 쓰겠다."라고 컴파일러에게 알리는 알리는 역활을 합니다.

using System;

네임스페이스

네임스페이스란 성격이 비슷한 클래스(Class), 구조체(Struct), 인터페이스(Interface) 등을 그룹화 한것을 말합니다.

여기서 클래스는 정적인 것과 동적인 기능으로 나뉘는데 정적인것은 필드(Field) 동적적인것은 메소드(Method)로

표현됩니다. 이는 프로그램을 구성하는 기본 단위이고 하나의 클래스는 여러 개의 객체(Object)를 만들어 낼수 있습니다.


앞서 작성한 코드에서 보면 System 네임스페이스로 부터 Console 이라는 메소드를 가져다 사용 하였습니다.

실제 코드에서 using System; 이라는 문장을 삭제하고 빌드를 하면 실패와 오류 메세지를 출력합니다.

Console.WriteLine("안녕하세요"); 

메인

static void Main 메소드는 프로그램의 최초 진입점을 나타내며 반드시 있어야 하는 메소드입니다.

프로그램이 시작되면 메인 메소드를 통해 차례차례 동작을하고 마지막에 도달하면 더이상 실행할 코드가 없으므로 

프로그램 또한 종료 됩니다. static은 한정자로 정적인 메소드를 의미하고 void는 반환 형식으로 반환 값이 없다는

것을 의미합니다.


5. 정리

우리가 작성한 코드를 정리하여 책을 읽듯이 읽어보자면


컴파일러야 나는 프로그램을 시작하기전에 System이라는 네임스페이스를 가져다 쓸꺼야 준비해둬

그리고 내가 만들 네임스페이스는 ConsoleApp1이야 여기에는 Program이라는 클래스를 만들거야

Program클래스에는 내가 만든 프로그램을 시작할 진입점이 있어 거기서부터 차례대로 일을 시작하자

System 네임스페이스로 부터 가져온 Console.WriteLine 에 "안녕하세요" 라는 문자열을 전해줘

더이상 할일이 없으면 프로그램을 종료해줘


이 처럼 프로그래밍을 하다보면 컴파일러가 번역하여 컴퓨터가 알수있도록 논리적인 소설을 쓰는듯한 생각이 들기도 합니다.

미리 정의되고 약속되어진 규칙을 지키면서 자신만의 이야기를 써내려 간다는 것입니다. 


using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
           Console.WriteLine("안녕하세요");
        }
    }
}


+ Recent posts