지금까지 비주얼 스튜디오 닷넷을 사용해서 간단한 C# 프로그램을 작성 실행하고 기본 구조를 공부해 보았다. 그러나 이해만 하고 넘어간 부분들에 대해 무언가 부족한 점이 많다고 느껴졌을 것이다. 이러한 점들은 기본이 되는 C# 문법을 배워가면서 차근차근 풀어보자.

일반적으로 프로그램을 작성할 때에는 C#이나 C, C++등의 언어를 사용한다. 언어는 언어를 구현하기 위한 나름대로의 체계적인 문법이 있다. C#언어도 자체적인 문법 체계가 있으며, 개발자나 문법에 따라 프로그램을 작성한다. 먼저 C# 문법에서 기본적으로 살펴봐야 할 것이 무엇인지 알아보자.


네임스페이스를 정의할 때 사용하는 namespace, 그리고 클래스 정의를 위해서 클래스 이름앞에 써주는 class는 그 나름의 의미가 있으며

특별한 기능을 수행한다. 따라서 namespace, class, using, public 등은 C#에서 이미 정의한 키워드(keyword)라고 부른다. 이런 키워드들은 C#에서 정의한 방법대로 사용해야 한다.그리고 클래스인 Hello와 Greeting은 프로그램 개발자가 각각의 클래스를 식별하기 위해 각각의 이름을 직접 붙인 것이다. 이렇게 식별을 위해 붙여진 이름을 Identifier (식별자)라고 한다. MyApplication도 네임스페이스를 식별하기 위한 이름 , 즉 식별자가 되는 것이다. 이제부터 C# 프로그램을 구성하는 기본적인 구성 요소인 키워드, 식별자, 상속, 연산자, 구분자에 대하여 자세히 알아보자.


▣ 키워드 


키워드(keyword)는 앞서 알아봤듯이 C#에서 특별한 의미가 있는 예약어이다. 따라서 C#에서 정의한 방법대로 사용해야 된다. 그리고 C#을 배운다는 것을 달리 표현한다면 이런 키워드의 용법을 배우는 것이라고 생각할 수도 있다. C#에서 정의된 키워드에는 어떤것이 있는지를 익혀보자.


 abstract

 as 

base 

bool 

break 

byte 

case 

catch 

char  

checked 

class 

const 

continue 

decimal 

default 

delegate 

 do

double 

else 

enum 

event 

explicit 

extem 

false 

 finally

fixed 

float 

for 

foreach 

goto 

if 

implicit 

in 

int 

interface 

internal 

is 

lock 

long 

namespace 

new 

null 

object 

operator 

out 

override 

params 

private 

protected 

public 

readonly 

ref 

return 

sbyte 

sealed 

short 

sizeof 

stackalloc 

static 

string 

struct 

switch 

this 

throw 

true 

try 

typeof 

uint 

ulong 

unchecked 

unsafe 

ushort 

using 

virtual 

void 

volatile 

while 

 

 

 


식별자 

식별자는 메소드, 클래스, 네임스페이스 등에 직접 붙인 식별이 가능한 이름을 말한다. 식별자를 만들때 아래와 같은 규칙을 기켜야 한다.

-식별자의 첫 글자는 영문자와 밑줄 _ 을 사용한다.

-숫자는 식별자에 포함될 수 있다. 하지만  첫 글자로는 사용할수 없다.

-키워드는 식별자로 사용을 할 수 없다.

-대문자와 소문자를 구분해서 사용해야 한다.


다음은 코드의 가독성을 높일 수 있도록 식별자의 이름을 정할 때 권장하는 사항이다.

-모든 문자를 대문자로 작성하는 것은 피해야 한다.

-밑줄 _ 을 첫 글자붙 사용하지 않는다.

-약자는 되도록 사용하지 않는다.

-특수문자의 사용을 피한다.


상수 ▣ 

잠시 저장하기 위한 공간인 변수와 대비되는 것이 상수로서, 변하지 않는 문자나 숫자 값 등을 의미한다. 상수는 정수, 실수 , 불리언 , 문자, 문자열 , 널로 분류할 수 있다.


▶ 정수형 상수 - 10진수,16진수,8진수 3가지 방법으로 표현이 가능하다. 10진수는 우리가 보통 사용하는 표현 방법이며, 16진수는 숫자앞에 OX, ox를 붙여서 16진수 표기임을 나타낸다. 그리고 8진수는 0을 앞에 붙여 8진수 표기임을 나타낸다.

▶실수형상수 - 정수 부분과 소수 부분으로 구성이 되어 있다. C#에서 실수형을 나타내는 데이터형은 double과 float이다. '12.34'를 표현할 때 '12.34'로 쓰게되면 double형 상수이고, '12.34F'로 'f' 나 'F'를 숫자 뒤에 표기하면 float형의 상수가 된다.

▶불리언형 상수 - 참,거짓을 나타내는 상수다. C,C++에서는 '0' 과 '0이 아닌수' 로 표현할 수 있지만, C#에서는 'ture' 와 'false'의 키워드를 사용해서 표현한다.

▶문자형 상수 - 유니코드 문자 하나를 작은따옴표(' ') 안에 써서 표현한다. 유니코드는 2바이트로 문자 하나를 표현하기 때문에 한글문자 '가'도 문자 상수 하나가 될수 있다.

▶문자열형 상수 - 문자들의 연속을 나타내고 큰따옴표(" ") 안에 써서 표현한다.

▶널(null)형 상수 - 한번도 사용하지 않은 객체를 나타낼때 사용하고 null이라는 키워드를 사용해서 표현한다.



데이터형과 변수 


여기에서는 데이터를 저장하기 위한 변수와 변수의 데이터형을 알아보도록 한다. 여러 프로그램 언어들은 각각의 데이터 형이 있지만,크기의 범위는 각 언어마다 다르다. 그리고 같은 언어로 int형 을 표현했다 하더라도 컴파일하는 시스템에 따라 int형의 크기가 다를 수 있다. 만약 2바이트의 int형을 쓰는 시스템에서 컴파일된 프로그램을 1바이트의 int형을 정의한 시스템에서 실행시키면 나머지 1바이트에 대한 손실로 오률가 발생할 것이다. 따라서 닷넷 프라임워크는 여러 다른 언어가 동일한 데이터형을 사용하도록 유도하기 위해서 cts를 정의하고 있다. CTS의 모든 데이터형은 객체로 정의되어 있는데 각 언어마다 자신의 데이터형을 따로 사용하지 않고 CTS에 정의된 형식의 데이터형을 사용하게 되므로 언어나 시스템 환경에 관계없이 동일한 데이터형이 유지될 수 있다.


▶숫자형 데이터 - 숫자형 데이터는 숫자 형태의 데이터를 다루기 위한 것이다. 숫자 형태의 데이터는 정수일수도 있고 실수일 수도 있다.숫자형의 변수를 선언하면서 값을 직접 할당했다. 그리고 각각 변수에 저장딘 데이터를 출력하고 있다. 실수형의 상수 데이터를 변수에 대입할 경우 각각의 형식에 따른 문자를 붙여 넣어준다. float형의 상수 데이터를 변수에 대입시킬 때는 상수 데이터 값 뒤에 f 나 F , decimal형은 m 또는 M , double형은 d 혹은 D를 붙여 넣어준다.

그리고 long형은 l 이나 L 을 붙여서 각각의 형식을 명확히 나타내줘야 한다. 상수 데이터뒤에 실수형을 표현하는 문자 (f, F, m, M, d, D)를 명기하지 않으면 자동으로 double형으로 인식학 된다.


*u로 시작하는 형식들은 unsigned라는 의미로서 음수 값은 표현하지 않고 0 이상의 값만을 다룬다. 그리고 decimal은 float과 비교할 때 범위는 작지만 유효 숫자 자릿수가 28~29로 float보다 크기 때문에 재무 및 통화 계산에 적합 하다고 할 수 있다.


▶문자형 데이터 - 문자형 데이터는 일반적인 문자를 다루는 데이터형이다. C#의 문자형은 유니코드를 사용한다. 기존의 문자형이 1바이트를 사용한데 반해 유니코드는 2바이트를 사용하기 때문에 한글이나 한자도 문자형으로 다룰수 있다.

문자들의 나열인 문자열은 값형식이 아닌 참조형식이다.그러나 사용이 빈번하므로 문자형과 같이 다루기로 한다. 문자열형은 string 키워드를 사용해서 변수를 선언한다. 기본적인 특수 문자를 사용하려면 역슬래시를 사용해야 한다. 이에대한 설명은 앞에서 간단히 언급했다.


▶불리언형 데이터 - 불리언형 데이터는 논리값이 참과 거짓의 두 가지 값을 다루는 형식이다. 불리언형에서는 키워드인 ture 와 false 두가지 값만을 인정한다.




'정보 > IT' 카테고리의 다른 글

코드 블록과 제어문의 종류  (0) 2018.03.10
코드 블록과 제어문  (0) 2018.03.10
C#  (0) 2018.03.09
프로그래밍 언어  (0) 2018.03.08

+ Recent posts