사실 자바를 배우던 자바스크립트를 배우던 왜 하필이면, Hello World를 출력하는지 궁금했는데,
Hello World 프로그램은 C언어를 만든 데니스 리치가 화면에 “Hello World”를 처음 출력한 것에서 유래 되었다.
라고 한다.
3.1 Hello World 프로그램
Hello World 프로그램은 C언어를 만든 데니스 리치가 화면에 “Hello World”를 처음 출력한 것에서 유래 되었다.
비주얼 스튜디오의 템플릿에 따른 프로그램 방식
콘솔 앱 프로그램 : 명령 프롬프트(명령창, 터미널) 화면에서 실행되는 프로그램을 작성하는 방식으로 C#프로그래밍 언어를 학습하는 데 주로 사용
**원도 응용 프로그램** : 윈도 운영체제에서 실행되는 윈도 기반의 프로그램을 작성할 때 사용
웹 응용 프로그램 : 웹 사이트, 게시판, 쇼핑몰 같은 웹 기반 프로그램을 작성할 때 사용한다.
프로젝트와 솔루션
**프로젝트** : 프로그램 하나를 이루는 가장 작은 단위가 되는 프로그램을 의미 비주얼 스튜디오에서 프로젝트는 확장자가 CSRPOJ(C# 프로젝트를 의미)인 파일로, 관련된 여러 파일을 이름 하나로 묶는 역할이다.
솔루션 : 하나 이상의 프로젝트를 모아서 만든 프로그램 비주얼 스튜디오에서 솔루션은 확장자가 SLN인 파일로 하나 이상의 프로젝트를 묶어서 관리할 때 사용한다.
즉, 솔루션은 하나 이상의 프로젝트로, 프로젝트는 하나 이상의 C# 소스 파일로 구성됩니다. 프로젝트는 비주얼 스튜디오의 솔루션 탐색기에서 표시된다.
솔루션 — 프로젝트 — 소스파일(HelloWorld.cs)
|—프로젝트 |— 소스파일(HelloWorld.cs)
|— 소스파일(HelloWorld.cs)
솔루션탐색기가 보이지 않는 다면
보기 > 솔루션 탐색기 선택 혹은 Ctrl + ; 으로 열 수 있음
코드를 입력할 때 팝업창이 뜬다! ⇒ 인텔리센스 기능
인텔리센스 기능 : 일반적으로 가장 많이 사용하는 명령어 가이드를 제공하므로 익숙해지면 좀 더 빠르고 정확하게 코드를 작성할 수 있다.
소스 코드 컴파일
C# 파일은 HellowWorld.cs처럼 확장자가 CS인데, 컴파일 과정을 거치면 실행 가능한 EXE 파일을 생성한다. (윈도가 아닌 다른 환경이라면 DLL 파일을 생성) 지금 C# 소스 코드가 컴파일 과정을 거친다!
C# 소스 코드 → 실행파일
HelloWorld.cs 컴파일 HelloWorld.exe
비주얼 스튜디오에서 솔루션 빌드
솔루션 탐색기에서도 빌드 가능 ( 오른쪽 마우스 버튼 클릭 후 빌드!)
선택 메뉴로는 빌드와 다시 빌드 정리 등이 있다.
**빌드**는 처음 빌드 이후로는 변경된 내용만 빌드를 진행하고, 다시 빌드는 기존 빌드 내용을 모두 제가한 후 다시 새롭게 전체를 빌드한다.
**정리**는 빌드된 내용을 지운다.
**다시 빌드**는 정리 후 빌드와 역할이 동일하다.
비주얼 스튜디오 IDE
일반적으로 비주얼 스튜디오 통합 개발 환경
- 소스 코드 편집기에서 코드를 작성한다.
- 시작 버튼을 클릭하면 프로그램을 실행한다.
- 솔루션 탐색기를 사용하면 코드 파일을 보고 탐색하고 관리할 수 있다. 또 파일을 솔루션 및 프로젝트로 그룹화하여 코드를 구성할 수 있다.
- 팀 탐색기를 사용하면 Git 같은 버전 관리 기술로 작업 항목을 추적하고 다른 사람과 코드를 공유할 수 있다.
비주얼 스튜디오로 Hello World 출력하기
콘솔 앱 템플릿을 선택하여 프로젝트 생성
.Net Core 와 .Net Framework 두 가지 중 아무거나 상관 없다.
⇒ 집에가서 맥으로 해보기
using System;
namespace helloFrom
{
class HellowWorld
{
static void Main(String[] args)
{
Console.WriteLine("Hellow World");
}
}
}
디버그 > 디버그하지 않고 시작 선택 혹은 Ctrl + F5
콘솔창에 “Hello World!” 가 텍스트로 출력된다.
솔루션 탐색기에서 파일 탐색기에서 폴더 열기를 선택하여 현재 프로젝트가 어디에 만들어졌는지 파일 탐색기에서 확인할 수 있다.
C# 인터렉티브로 Hello World 출력하기
C# 인터렉티브(대화형)는 한 줄씩 코드를 실행하면서 C#의 여러 명령을 학습할 수 있는 도구 이다.
간단한 코드는 C# 인터렉티브를 사용한다.
비주얼 스튜디오 위쪽 (메뉴바) 검색창에서 C# Interactive 를 검색하면 C# 인터렉티브를 실행할 수 있다.(한글에서는 C# 대화형으로 검색!)
Microsoft (R) Visual C# 대화형 컴파일러 버전 4.6.0-3.23259.8 ()
'CSharpInteractive.rsp'에서 컨텍스트를 로드하는 중입니다.
자세한 내용을 보려면 "#help"를 입력하세요.
> Console.WriteLine("Hello World!");
Hello World!
> Console.WriteLine("필요한 소스만 화면에 표시");
필요한 소스만 화면에 표시
**보기 > 다른 창 > C# Interactive(C# 대화형)**을 선택하거나 프로젝트 기반 소스코드에서 특정 코드를 블록으로 선택한 후 Ctrl + E를 두 번 누르면 자동으로 C# 인터렉티브 창에서 소스 코드가 표시된다.
다만 C# 인터렉티브는 한글이 제대로 표시되지 않을 수 있으니 필요한 부분만 입력하면서 실행하는 것이 좋다!
소스 코드 작성 (.cs를 확장자로 갖는 텍스트 파일) ←
⬇️ | 에러 발생 (대소문자 확인,
| 세미콜론 누락 확인, 오타 확인
컴파일(빌드) (.exe 파일 생성) —
⬇️
프로그램 실행 (비주얼 스튜디오 실행 명령 또는 `Ctrl` + `F5`
비주얼 스튜디오 주요 단축키
- F5 : 디버깅 시작
- Ctrl + F5 : 디버깅하지 않고 시작
- Ctrl + Shift + F : 파일 찾기
- Ctrl + S : 현재 파일 저장
- Ctrl + A : 전체 선택
- Ctrl + C : 복사
- Ctrl + V : 붙여넣기
- Ctrl + ; : 솔루션 탐색기 열기
- Ctrl + , : 특정 파일 또는 클래스 찾기
3.2 C#의 기본 코드 구조
C# 프로그램은 class와 Main() 메서드가 반드시 있어야 하고, 하나 이상의 문이 있어야 한다.
//ClassSimple.cs
using System; // 네임스페이스 선언부
class ClassSimple
{
static void Main(string[] args) // Main() 메서드
{
Console.WriteLine("Hello World!"); // 세미콜론; 명령어의 끝
}
}
C#의 기본 코드는 위쪽에 네임스페이스 선언부와 Main() 메서드가 오고, 중괄호 시작과 끝을 사용하여 프로그램 범위를 구분한다.
- 네임스페이스 : 자주 사용하는 네임스페이스를 위쪽에 미리 선언해 둘 수 있다.
- Main() 메서드 : 프로그램의 시작 지점이며, 반드시 있어야한다.
- 중괄호({}) : 프로그램 범위(스코프)를 구분 짓는다.
- 세미콜론(;) : 명령어(문, 문장)의 끝을 나타낸다.
using 키워드와 네임스페이스
C#은 네임스페이스, 클래스, Main() 메서드로 구성된다.
네임스페이스 → 클래스 → Main() 메서드
콘솔 화면에 문자열을 출력하려면 네임스페이스, 클래스, 메서드(); 형태로 사용해야 한다.
매번 네임스페이스를 입력하면 번거롭기 때문에 using 키워드를 사용하여 코드 위쪽에 using System; 처럼 구문을 넣으면 네임스페이스를 생략하고 클래스.메서드(); 형태로 줄여서 쓸 수 있다.
즉, C#의 모든 명령문 체계는 아래를 사용한다.
- 네임스페이스.클래스.메서드();
- 클래스.메서드();
// using을 사용하지 않는 코드 형태
class ClassSimple
{
static void Main()
{
System.Console.WriteLine("Hello World");
}
}
//using을 사용하는 코드 형태
using System;
class ClassSimple
{
static void Main(string[] args) // Main() 메서드
{
Console.WriteLine("Hello World"); // 세미콜론; 명령어의 끝
}
}
using static 구문
C# 6.0 버전 이후부터는 using static System.Console; 구문으로 System.Console을 생략한 WriteLine() 메서드만 사용할 수 있다.
Console 클래스의 WriteLine() 메서드는 C#을 학습할 때 많이 사용할 구문이기에 using static 구문을 위쪽에 System.Console을 정의해두면 WriteLine() 메서드만 호출해도 된다.
// System.Console을 정의
using static System.Console;
class ClassSimpe
{
static void Main()
{
WriteLine("명령 프롬프트를 출력할 내용");
}
}
// 구문 2개를 동시에 위쪽에 둘 수 있다.
using static System.Console;
using static System.Math;
정규화된 이름
- 정규화된 이름은 네임스페이스 이름과 형식 이름까지 전체를 지정하는 방식이다.
- 네임스페이스.클래스.메서드(); 형태로 전체 이름을 다 지정하는 것을 정규화된 이름이다.
- System 네임스페이스에 있는 Console 클래스의 WriteLine() 메서드를 사용하여 콘솔에 한 줄을 출력한다.
System.Console.WriteLine();
네임스페이스.클래스.메서드
Main() 메서드 : 프로그램의 진입점
C# 기본 구조에서 반드시 사용되는 Main() 메서드는 프로그램의 시작점이다.
반드시 Main() 메서드가 있어야하고 Main() 메서드에서 프로그램을 실행하고 종료한다.
- Main() 메서드 앞에 static 키워드가 있어 개체를 생성하지 않고 바로 클래스에 있는 Main() 메서드를 실행할 수 있다.
- Main() 메서드가 2개이면 “프로그램에 진입점이 2개 이상 정의되어 있습니다.” 라는 에러 메세지가 출력되어 프로그램이 컴파일 되지 않는다.
Main() 메서드에 대한 코드 조각
C# 콘솔 앱 프로그램으로 작성하다보면 Main() 메서드를 기본으로 사용하는데, 비주얼 스튜디오에서는 Main() 메서드에 대한 코드 조각을 제공한다.
비주얼 스튜디오에서 svm을 입력한 후 Tab을 두 번 누르면 자동으로 static void Main() { } 코드 블록을 작성한다.
Console.WriteLine() 메서드도 많이 사용하기에 cw를 입력한 후 Tab을 두 번 누르면 자동으로 작성된다.
- svm+ Tab Tab 입력 static void Main(string[] args) {}
- cw+ Tab Tab 입력 Console.WriteLine();
중괄호 위치
클래스와 Main() 메서드처럼 프로그램의 시작과 끝을 나타낼 때는 중괄호 열기({)와 닫기(})를 사용한다.
중괄호의 시작과 끝을 맞추는 형태인 Allman 스타일과 줄의 맨 마지막에 시작 중괄호를 넣는 K&R 스타일을 가장 많이 사용한다.
// Allman 스타일 : 시작과 끝을 맞추는 형태
class ClassSimpe
{
static void Main()
{
}
}
// K&R 스타일 : 줄의 맨 마지막에 시작 중괄호를 넣는 형태
class ClassSimpe
{
static void Main() {
}
}
어느 형태든 상관 없다!
대 소문자 구분하기
C#은 대 소문자를 구분한다.
// 대 소문자를 제대로 쓰지 않으면 에러발생
using system;
class classSimpe
{
static void main()
{
console.writeㅣine("C#은 대소문자 구분 언어!");
}
}
// 컴파일 하면 에러 발생!
- CS0246 ‘system’ 형식 또는 네임스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요. : System의 첫 글자를 소문자로 써서 발생
- CS0103 ‘console’ 이름이 현재 컨텍스트에 없습니다. : Console의 첫 글자를 소문자로 써서 발생
// 대 소문자를 제대로 쓰지 않으면 에러발생
using System;
class classSimpe
{
static void main()
{
Console.writeㅣine("C#은 대소문자 구분 언어!");
}
}
// 컴파일 하면 에러 발생!
- CS5001 프로그램에는 진입점에 적합한 정적 ‘Main’ 메서드가 포함되어 있지 않는다. : Main의 첫 글자를 소문자로 써서 발생!
- CS0117 ‘console’ 이름이 현재 컨텍스트에 없습니다. : WriteLine의 첫 글자를 소문자로 써서 발생
// 대 소문자를 제대로 쓰지 않으면 에러발생
using System;
class ClassSimpe
{
static void Main()
{
Console.WriteLine("C#은 대소문자 구분 언어!");
}
}
//정상적으로 컴파일되고 실행된다.
프로그래밍 개발 주기
1단계. 디자인 타임
- 프로그램을 디자인하고 C#으로 코드를 작성하는 과정
- 비주얼 스튜디오에서 프로젝트를 만들고 코드 작성
2단계. 컴파일 타임
- 비주얼 스튜디오 같은 IDE를 사용하여 컴퓨터가 이해할 수 있도록 컴파일하는 과정
- 비주얼 스튜디오에서 F5 또는 빌드(Ctrl + Shift + B)를 해서 소스 코드 컴파일
3단계. 런타임
- 작성한 프로그램이 잘 실행되는지 기기에서 테스트하는 과정
- 비주얼 스튜디오에서 Ctrl + F5로 실행 테스트