본문 바로가기

오래된 흔적/C#.NET 기초강좌 #1

[HOONS C#.NET 기초강좌 #1] 02. Main() 함수, 변수, 상수

hoons닷넷
[ C#.NET 기초강좌 #1]
02. Main() 함수, 변수, 상수
작성자 : NGong 작성일 : 2011-04-15 오후 4:14:42
E-mail : filmgdh골뱅이gmail.com Homepage : http://blog.daum.net/coolprogramming
Visual Studio 2010(한글)을 이용하여 C#프로젝트를 진행합니다.
2장은 보여주고 따라 하기식으로 진행됩니다.~~!
대상은 아주~ 약간의 C# 맛을 본 분들을 대상으로 합니다.
처음에는 C나 C++을 학습한 분들을 대상으로 할까도 생각했었지만, 대부분의 책들과 MSDN이 C++ 개발자들을 대상으로 기술되다 보니 처음부터 C#을 공부하려는 분들에게 어려움이 있는 것 같습니다. 또 쌩~ 초보자들을 대상으로 하기는 너무 내용이 커질 것 같아. 적어도 프로그래밍 언어 책을 만져 본적이 있다는 분들을 대상으로 합니다.
그래서 앞쪽 장들은 여러분에게 너무 쉬울 수 있습니다. ㅡㅡ;

1, 프로그램의 시작 Main() 함수

vs2010에서
파일> 새로 만들기 > 프로젝트 > Visual C# > 콘솔 응용 프로그램 : 를 선택하고 적당한 이름으로 프로젝트를 생성합니다.

다음은 처음으로 생성한 Program.cs C# 소스파일입니다.
  1. using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;


    namespace NetGong

    {

     class Program

     {

      static void Main(string[] args)

      {

      }

     }

    }



Ctrl-F5을 눌러 빌드, 실행합니다.
결과 없이 빈 화면만 보입니다.

차차 설명하기로 하고 모든 내용을 지우고 아래와 같이 입력, 실행합니다.
  1. class Program

    {

     static void Main( )

     {

      System.Console.WriteLine("Hello!");

     }

    }



Hello!
"Hello!" 문자열을 출력합니다.
C#은 C++과 달리 함수나 데이터 변수를 전역으로 선언 및 정의할 수 없습니다. 모든 함수와 데이터 변수는 형식 내에 포함되어야 합니다.
그래서 Main()함수는 Program 클래스 안에 정의됩니다. 또 Main()함수는 프로그램의 진입점으로 Main()함수에서 프로그램이 시작됩니다.
System.Console.WriteLine() 함수는 데이터 출력 함수입니다.
형식(Type)클래스, 구조체, 열거형, 델리게이트, 인터페이스를 말합니다.

다음은 Main()함수의 다른 형태입니다.
  1. class Program

    {

    static void Main(string []args)

    {

    System.Console.WriteLine("Hello!");

    }

    }



Hello!
string 배열을 이용하여 프로그램 인수를 전달 받습니다. (이건 담에...)

또 다른 형태입니다.
  1. class Program

    {

     static int Main(string[] args)

     {

      System.Console.WriteLine("Hello!");

      return 0;

     }

    }



Hello!
프로그램이 종료할 때 반환하는 int 형을 갖습니다.

다음은 문자, 정수, 실수 등의 출력입니다.
  1. class Program

    {

     static void Main()

     {

      System.Console.WriteLine("Hello!"); //문자열

      System.Console.WriteLine(10); //정수

      System.Console.WriteLine(3.14); //실수

      System.Console.WriteLine('A'); //문자

      System.Console.WriteLine(true); //bool

     }

    }



Hello!
10
3.14
A
True
System.Console.WriteLine() 함수는 여러 형태로 중복되어 있기 때문에 대부분 데이터를 출력할 수 있는 만능 함수입니다.
(함수 중복도 담에...)

2, 변수와 상수

변수란 변경 가능한 수(값), 상수란 변경 불가능한 수(값)를 의미합니다.
일반적으로 프로그래밍 언어에서 변수란 값을 저장하는(할당 연산자 좌 항으로 사용되는) 메모리 공간의 이름입니다.
변수는 메모리 공간의 이름입니다.

다음은 정수를 저장하는 변수입니다.
  1. class Program

    {

     static void Main()

     {

      int n = 10;

      System.Console.WriteLine(n); //변수의 값 10 출력

      System.Console.WriteLine(10); //정수 상수 10 출력

     }

    }



10
10
변수를 출력하라는 의미는 변수에 저장된 값을 출력하라는 의미입니다.
그림은 n 변수가 메모리 공간에 할당된 모습입니다.
메모리_공간_변수_n.PNG


다음은 몇 가지 다른 형태의 변수입니다.
  1. class Program

    {

     static void Main()

     {

      char c = 'A';

      int n = 10;

      double d = 1.1;

      string s = "Hello!";


      System.Console.WriteLine(c);

      System.Console.WriteLine(n);

      System.Console.WriteLine(d);

      System.Console.WriteLine(s);

     }

    }



A
10
1.1
Hello!
char, int, double, string은 변수의 형식(type)이며 변수의 연산(연산 동작과 메모리 크기 등)을 정의합니다.

아래는 간단한 메모리 그림입니다. c는 2byte(문자), n은 4byte(정수), d는 8byte(실수)를 저장하기 위한 메모리 공간이며 s은 문자열 객체를 가리키기 위한 참조형 변수(참조자)입니다. (스택과 관리 힙, 값 형식과 참조 형식은 앞으로 설명합니다.)
중요한 것은 c, n, d, s가 자신만의 연산 정의를 갖는 변수라는 것입니다.
변수와_메모리_공간.PNG

C#의 내장 형식 => http://msdn.microsoft.com/ko-kr/library/ya5y69ds.aspx

C#의 참조는 C++의 포인터와 비슷합니다. 하지만 같지는 않으므로 연관지어서 생각하는 것은 그리 좋은 습관이 아닙니다. 참조자는 실제 포인터가 아니므로...
C#의 세계에 오셨으면 C#의 세계를 사랑(?)하고 C++을 탈피하시기를....

오늘은 여기까지입니다.
수고하셨습니다. ^^