2016년 11월 9일 수요일

[C#교육,C#기초교육,닷넷교육추천_탑크리에듀][강좌#6]HelloWorld 작성하기...

6일차인 오늘 부턴 본격적으로 C#을 배워 보도록 하겠습니다. 3일차에서 5일차까지 닷넷 어셈블리는 조금 어려웠죠? 많이 어려우시면 잠시 Skip 한 후 나중에 보시구요, 이제부터 배우는 되는 언어의 특성과 C# 객체 지향 프로그래밍은 잘 배워 두시기 바랍니다.
using System; //BCL(Base Class Library)중 System NameSpace 안에 정의된 클래스를 사용 하겠다는 
class Hello
{
public static int Main()
{
Console.WriteLine(“Hello , world “); return 0;
}
}
? C# 응용 프로그램은 클래스(Class), 스트럭쳐(Strutures), 형(Type)의 집합으로 생각 할 수 있습니다. 여기서 클래스는 데이터와 메소드의 결합으로 보시면 되구요... 그리고 C# 클래스가 여러 파일에 걸쳐서 존재 할 수 없다는 것은 다아실 거구요, 클래스 정의의 기본적인 Syntax는
class 클래스이름
{
}
의 형태 입니다. 자바 처럼 클래스명과 실제 파일명(.cs 파일)이 같을 필요는 없습니다.
가장 기본이 되는 구조로 확장 하면 다음과 같이 되죠...
(C#은 기본적으로 대소문자를 구분 합니다. 기억하세요~)
using System; ...) //해당 네임스페이스(자바로 보면 패키지)를 사용 한다는것, 자바같으면 import java.lang.*; (자바 프로그램 개발시 반드시 사용되는 클래스를 이곳에 위치 시키죠 
namespace 네임스페이스 이름 //자바의 패키지 처럼 비슷한 역할을 하는 클래스를 묶어 놓을때 사용 됩니다. 관련된 클래스를 하나의 폴더에 묶는 개념으로 보셔도 되구요... 

class class_name 

public static void Main(string[] args) //Main의 'M' 이 대문자인것 주의!!!!!!! 

명령들...

}
}
그런 이번엔 간단한 콘솔 응용 프로그램을 만들어 볼까요~
d:\C#Test라는 폴더에 Hello.cs라고 저장 하죠....
using System; //Syste,이라는 네임스페이스가 닷넷 네임스페이스의 최상위에 있으며 C# 개발을 하기 위한 가장 기본적인 클랴스 들이 있습니다.(Console, Sring 등, 자바로 보면 java.lang 정도겠죠^^;) 
namespace first{ //딸랑 파일 하나면 만들때는 네임스페이스를 정의 할 필요가 없으며 파일이 여러개이며 나중에 가져다 쓰기 위해서 분류가 필요한 경우에 이용 하시면 됩니다. 
class HelloWorld //클래스 이름이죠... 

public static void Main(string[] args) //

Console.WriteLine("Hello World!"); 
Console.ReadLine();
}
}
}
콘솔에서 컴파일을 해 보도록 하겠습니다. 콘솔창은 Visual Studio .Net 2003 아래의 Visual Studio .Net 도구안에 있는 Visual Studio .Net 2003 명령프롬프트를 실행 하시기 바랍니다.그런다음 파일을 만드신 폴더인 D:\C#Test로 이동하셔서 csc Hello.cs 라고 입력 하시면 컴파일을 마치고 Hello.exe 파일이 만들어 질겁니다. 실행 할려면 Hello 라고 입력 하시면 되겠죠.
이번에는 Main함수의 형태에 대해 보기로 하죠. 자바와 달리 Main 안의 args는 필요에 따라 사용 할 수가 있습니다. 즉 메인함수가 아규멘트를 받는 경우에 사용하시면 되겠죠.
? static void Main()
? static void Main(string[] args)
? static int Main()
? static int Main(string[] args)
args는 Main 메소드로 인자를 넘겨 줄 때 사용합니다. VS를 사용하는 경우에는 프로젝트 속성의 구성요소, 디버깅, 명령줄 인수에서 작성하며 명령프롬프트를 통해 실행 하는 경 우엔 직접 매개변수를 기술하구요, Main 이 static 인 이유는 … staic인 경우엔 new에 의 해 메모리 공간을 할당 받는 것이 아니라 실행과 동시에 메모리 공간을 할당 받습니다. 결국 Process의 종료 시 까지 존재하는 것 입니다. 그리고 static은 객체와 관련이 있는 것이 아니고 클래스와 관련이 있습니다. 변수인 경우에도 초기화가 하번만 되는 전역변 수인 경우엔 static을 붙입니다.
다음은 Console 클래스와 Write Method에 대한 사용법 입니다.
Console 클래스는 System 네임스페이스에 있으며 출력을 위해 Write 메소드와 WriteLine 메소드를 사용합니다.WriteLine 메소드가 줄을 넘기는 것이 Write 메소드와의 차이점 입니다.. 나머지 기능은 동일하며 Write 메소드의 기본 형태는 WriteLine( 객체 ) --> 객체 하나를 출력할때 , WriteLine( 양식문자열 , 객체 , 객체 , …); --> 여러 개의 객체를 양식에 맞춰 출력 할 때 사용합니다.양식 문자열의 사용은 별도로 공부하지 마시고 나타날때 마다 하나식 사례를 보면서 학습 하도록 하죠...
이번엔 using 지시자에 대해서 알아보기로 하죠, 아래의 예를 먼저 보자구요~
System.Console.WriteLine(“Hello, world”);
using System;
Console.WriteLine(“Hello,World”);
느낌이 오시죠, 거의 자바와 똑같으니까요... 결국 using을 쓰는 것은 해당 네임스페이스의 클래스를 사용하겠다라고 정의하니까 클래스 앞에 점을 찍어 소속을 밝히지 않아도 알아서 System이라는 네임스페이스에 가서 Console이라는 클래스를 찾는 거죠...
이번예제는 메인 함수에 아규먼트를 주는 겁니다.
// Args.cs 
using System; class Hello 
{
public static void Main(string[] args) // Main 함수에서 인자를 받을려면 인자를 넣어야 한다,자바의 경우엔 여부에 관계없이 인자필요 

Console.WriteLine("Hello, ");
for(int arg=0; arg < args.Length; arg++) 
{ // args.length는 메인을 실행시 아큐먼트가 있다면 그 수(길이) 만큼 반복을 하겠다는 의미 입니다. 
Console.WriteLine("Arg{0}: {1}", arg, args[arg]); //중괄호 {} 안의 지정된 번호에 대응하는 인자가 삽입 , 0과 1의 의미는 0번째 인덱스, 1번째 인덱스의 의미죠, 대부분 인덱스는 0부터 시작하죠. 
}
}
}
컴파일 : csc Args.cs
실행 : Args 이종철 김태양 이승환
결과는 상상하세요...
오늘은 여기까지 HelloWorld를 출력하면서 몇가지 기본적인 사항에 대해 알아 보았습니다.
수고하셨습니다.
질문 많이 해 주세요~

댓글 없음:

댓글 쓰기