[ C#.NET 기초강좌 #1] |
03. 함수(function) |
작성자 : NGong | 작성일 : 2011-04-15 오후 4:16:04 |
E-mail : filmgdh골뱅이gmail.com | Homepage : http://blog.daum.net/coolprogramming |
우리가 지금까지 사용한 System.Console.WriteLine() 함수입니다.
-
class Program
{
static void Main()
{
System.Console.WriteLine(10);
}
}
System.Console.WriteLine()은 정수를 출력하는 기능을 합니다.
1, 함수 정의
다음은 함수의 구조입니다.( 기존에 작성한 C 예제를 캡쳐했다는...)성의없이 복사만 했다는...
위 코드를 C#으로 반복하면.
-
class Program
{
static void Func()
{
System.Console.WriteLine("Hello!");
System.Console.WriteLine("안녕!");
}
static void Main()
{
Func();
Func();
Func();
}
}
안녕!
Hello!
안녕!
Hello!
안녕!
출력결과는 위와 같습니다. Func()함수가 세 번 호출(call)되고 세 번 반환(return)되므로 Hello!와 안녕!이 세 번 출력됩니다.
여기서 System.Console.WriteLine() 함수는 어디에 있는 것일까요? 네! 이 함수는 .Net 이 제공하는 기본 클래스 라이브러리(BCL)에서 제공되며 mscorlib.dll 어셈블리 참조를 통해 사용할 수 있습니다. 또 모든 응용프로그램은 mscorlib.dll을 참조합니다.
다음은 정수를 출력하는 코드입니다.
-
class Program
{
static void Main()
{
System.Console.WriteLine(1);
System.Console.WriteLine(2);
System.Console.WriteLine(3);
System.Console.WriteLine(4);
System.Console.WriteLine(5);
}
}
2
3
4
5
위 예제를 사용자 함수로 구현하면..
-
class Program
{
static void Print(int n)
{
System.Console.WriteLine(n);
}
static void Main()
{
Print(1);
Print(2);
Print(3);
Print(4);
Print(5);
}
}
2
3
4
5
Print()함수는 서버로 Main()함수는 클라이언트로 동작하며 클라이언트에서 서버로 보내는 값들을 함수의 인자, 인수라 하며 이 인자 인수(1,2,3,4,5)를 받는 서버 측의 변수(n)를 매개변수라 합니다.
여러 인수를 갖는 함수
-
class Program
{
static void Print(int n1, int n2, int n3)
{
System.Console.WriteLine("{0} {1} {2}", n1,n2,n3);
}
static void Main()
{
Print(10, 20, 30);
}
}
만약 서버에서 클라이언트로 값을 가져와야 하는 경우라면 반환 값을 사용해야 합니다.(out 매개 변수를 사용할 수 있습니다. 담에...)
아래는 매개 변수와 리턴 값을 갖는 함수 예제입니다.
-
class Program
{
static int Add(int a, int b)
{
return a + b;
}
static int Sub(int a, int b)
{
return a - b;
}
static void Main()
{
int num;
num = Add(10, 20);
System.Console.WriteLine(num);
System.Console.WriteLine(Add(30, 50)); //인라인 형태로 호출
num = Sub(10, 20);
System.Console.WriteLine(num);
System.Console.WriteLine(Sub(30, 50));
}
}
80
-10
-20
Add(), Sub()함수는 서버로 Main()함수는 클라이언트로 동작합니다. 클라이언트에서 서버로 보내는 값들을 함수의 인자, 인수라 하며 이 인자 인수(10,20)을 받는 서버 쪽의 변수들(a, b)을 매개변수라 합니다. Add(), Sub()함수는 호출받는 측이라고 해서 Callee라고도 하며 Main()함수 측은 호출하는 측이라고 해서 Caller라고도 합니다.
아래는 Add() 함수의 구조입니다.
아래는 Add()함수와 Main()함수의 관계입니다.
이렇게 클라이언트는 서버에게 특징 기능을 요구하며 서버는 클라이언트에게 기능을 서비스합니다.
2, 함수 중복(function overloading)
C#도 C++처럼 함수 중복을 지원합니다.함수 중복이란 함수의 이름은 같고 함수의 매개변수 리스트가 다른(매개 변수 개수나 매개 변수 형) 함수를 말합니다 .
다음은 간단한 함수 중복의 예입니다.
-
class Program
{
static void Main()
{
System.Console.WriteLine(10);
System.Console.WriteLine(5.5);
System.Console.WriteLine('A');
}
}
10
5.5
A
직접 구현한 '함수 중복'입니다.
-
class Program
{
static void Print(int n)
{
System.Console.WriteLine(n);
}
static void Print(double d)
{
System.Console.WriteLine(d);
}
static void Print(char c)
{
System.Console.WriteLine(c);
}
static void Main()
{
Print(10);
Print(5.5);
Print('A');
}
}
5.5
A
세 함수 모두 Print라는 이름을 사용하지만 매개 변수의 형식이 다르므로 모두 다른 함수입니다. 또 컴파일러는 인자의 형식을 보고 정확한 함수를 호출하도록 코드를 결정합니다.
3, 출력 함수(System.Console.WriteLine())
System.Console.WriteLine() 함수는 많은 형태로 중복돼 있으므로 아래처럼 사용할 수 있지만, 인자의 개수와 형식이 다양하다면 문자열 형식(format) 지정을 사용해야 합니다.-
class Program
{
static void Main()
{
System.Console.WriteLine('A');
System.Console.WriteLine(20);
System.Console.WriteLine("Hello!");
}
}
20
Hello!
다음은 간단한 형식(format) 지정을 이용한 WriteLine()함수입니다.
-
class Program
{
static void Main()
{
char c = 'A';
int n = 10;
double d = 3.14;
string s = "Hello!";
System.Console.WriteLine("{0} {1} {2} {3}", c, n, d, s);
System.Console.WriteLine("{0}:{1}:{2}:{3}", c, n, d, s);
System.Console.WriteLine("{0} {1} {2} ", 10,20,30);
System.Console.WriteLine("{0} {0} {0} {0}", c);
System.Console.WriteLine("{0} {0} {1} {1}", c, n, n);
}
}
A:10:3.14:Hello!
10 20 30
A A A A
A A 10 10
첫 번째 인자는 문자열로 {숫자}를 사용하여 다음 인자의 출력 위치를 결정합니다.
더 막강한 기능을 지원하지만, 나머지는 차차 알아도 좋습니다.
위 함수는 자동 개행 문자를 출력합니다.
개행 문자를 출력하지 않는 System.Console.Write() 함수도 있습니다.
-
class Program
{
static void Main()
{
char c = 'A';
int n = 10;
double d = 1.1;
string s = "Hello!";
System.Console.Write(c);
System.Console.Write(n);
System.Console.Write(d);
System.Console.Write(s);
}
}
자동 개행 문자를 출력하지 않아 위처럼 출력됩니다.
또 형식 지정을 사용하면...
-
class Program
{
static void Main()
{
char c = 'A';
int n = 10;
double d = 3.14;
string s = "Hello!";
System.Console.Write("{0} {1} {2} {3}", c, n, d, s);
System.Console.Write("{0}:{1}:{2}:{3}", c, n, d, s);
System.Console.Write("{0} {1} {2} ", 10, 20, 30);
System.Console.Write("{0} {0} {0} {0}", c);
System.Console.Write("{0} {0} {1} {1}", c, n, n);
}
}
위처럼 출력됩니다.
확장 문자를 사용하여 이렇게 출력할 수 있어요.
-
class Program
{
static void Main()
{
char c = 'A';
int n = 10;
double d = 3.14;
string s = "Hello!";
System.Console.Write("{0} {1} {2} {3}\n", c, n, d, s);
System.Console.Write("{0}:{1}:{2}:{3}\n", c, n, d, s);
System.Console.Write("{0} {1} {2}\n", 10, 20, 30);
System.Console.Write("{0} {0} {0} {0}\n", c);
System.Console.Write("{0} {0} {1} {1}\n", c, n, n);
}
}
A:10:3.14:Hello!
10 20 30
A A A A
A A 10 10
결과는 간단합니다.
WriteLine() 함수 정보 => http://msdn.microsoft.com/ko-kr/library/zba0x2tx(v=VS.100).aspx
수고하셨습니다. ^^
'오래된 흔적 > C#.NET 기초강좌 #1' 카테고리의 다른 글
[HOONS C#.NET 기초강좌 #1] 06. 네임스페이스(namespace) (0) | 2012.03.05 |
---|---|
[HOONS C#.NET 기초강좌 #1] 05. C# 클래스 (0) | 2012.03.05 |
[HOONS C#.NET 기초강좌 #1] 04. 객체지향 (0) | 2012.03.05 |
[HOONS C#.NET 기초강좌 #1] 02. Main() 함수, 변수, 상수 (0) | 2012.03.05 |
[HOONS C#.NET 기초강좌 #1] 01. C#의 시작 (1) | 2012.03.05 |