.......................................................................................................................
안녕하세요, 저는 길당(홍길한)이라 합니다.
이어서 내용을 올립니다.
콘솔의 입출력
콘솔의 대표적인 기기로는 화면과 키보드가 있습니다. 프로그램을 작성하다 보면 사용자
(키보드)로부터 데이터를 입력 받아 원하는 계산을 하고 화면에 출력하게 되는
필연적인 과정을 거칩니다.
그럼 키보드의 입력은 어떻게 하며 처리된 결과는 어떠한 형식으로 화면에 출력하는지에
대해서 알아보기로 합니다.
키보드 입력
사용자의 키보드로부터 데이터를 읽어 들이기 위하여 함수 Read()와 ReadLine() 을 사용합니다.
ReadLine()의 경우 줄 단위로 문자열을 읽어 들이고, Read()의 경우는 한 개의 문자를
읽어들입니다. 그러면 문자, 문자열 상수, 실수를 입력받았을 경우를 보기로 합니다.
gildang@gildang:~/charp$ vim keyboard.cs
gildang@gildang:~/charp$ gmcs keyboard.cs
gildang@gildang:~/charp$ mono keyboard.exe
문자를 입력하시오. : K입력된 문자 : K
gildang@gildang:~/charp$
gildang@gildang:~/charp$ cat keyboard.cs
using System;
class Class1
{
static void Main(String[] args)
{
int i;
char ch;
Console.Write("문자를 입력하시오. : ");
i = Console.Read();
ch = (char)i;
Console.WriteLine("입력된 문자 : " + ch);
}
}
gildang@gildang:~/charp$
i = Console.Read();
Console.Read()는 문자가 입력될 경우 문자를 입력받아 ASCII의 정수 값을 반환
합니다.
여기서 ASCII 값 i는 사용자가 대문자 K를 입력하였다고 가정하면 75라는 값이 됩니다.
i = Console.Read() <=문자
i는 ASCII 정수값
ch = 9char) i;
읽어 들인 문자는 ASCII 형식의 정수 값으로 i에 저장되어있으므로 출력하려면
int를 char로 형을 변환시켜야 합니다.
문자 -> ch = (char) i ; <= 정수
↑______________________|
ASCII 암호의 정수 값
을 문자로 변환합니다.
문자열을 입력 받았을 경우
gildang@gildang:~/charp$ vim string.cs
gildang@gildang:~/charp$ gmcs string.cs
gildang@gildang:~/charp$ mono string.exe
성명을 입력하세요. hong gildang
hong gildang님 안녕하세요?
gildang@gildang:~/charp$ cat string.cs
using System;
class Class1
{
static void Main(String[] args)
{
String s;
Console.Write("성명을 입력하세요. ");
s = Console.ReadLine();
Console.WriteLine(s + "님 안녕하세요?");
}
}
gildang@gildang:~/charp$
s 는 s = Console.readLine()이 String s;에서 문자열로 선언되어 있으므로
문자열을 받습니다.
만일 String s;를 생략한다면 String s = console.ReadLine(); 이라 해야 합니다.
정수를 입력 받을 경우
gildang@gildang:~/charp$ vim sumstring.cs
gildang@gildang:~/charp$ gmcs sumstring.cs
gildang@gildang:~/charp$ mono sumstring.exe
첫 번째 정수를 입력하세요. :12
두 번째 정수를입력하세요. : 13
두 수의 합 : 25
gildang@gildang:~/charp$ cat sumstring.cs
using System;
class Class1
{
static void Main() {
String s1, s2;
int a, b, sum;
Console.Write("첫 번째 정수를 입력하세요. :");
s1 = Console.ReadLine();
Console.Write("두 번째 정수를입력하세요. : ");
s2 = Console.ReadLine();
a = Convert.ToInt32(s1);
b = Convert.ToInt32(s2);
sum = a + b;
Console.WriteLine("두 수의 합 : " + sum);
}
}
gildang@gildang:~/charp$
Console.Write("첫 번재 정수를 입력하세요. : ");
메소드 console.Write()는 괄호 안의 내용물을 모두 모니터에 기록하는 명령어입니다.
그런데 WriteLine 대신 Wrire를 사용하여 현재 커서의 위치는 다음 줄로
내려가지 않습니다.
s1 = Console.ReadLine();
키보드에서 문자열 "12"을 입력하고 [enter]를 누르는 순간 변수 s1에는 "12"라는
문자열 값이 임시로 저장됩니다.
a = Convert.ToInt32(s1);
변수 s1은 현재 문자열인 상태이므로 이를 Convert.ToInt32()라는 함수를 사용하여
32비트형의 정수로 변환합니다. 따라서 변수 a는 정수 12라는 값을 가집니다.
sum = a + b
앞에서 정수형을 취하는 변수 a,b는 각각 12와 13을 가지고 있으므로
sum = 25라는 값을 가집니다.
주의 할 점은 등식이 잇을 경우 좌변의 자료형과 우변의 자료형이 같아야 문제가
발생하지 않습니다.
실수를 입력 받을 경우
gildang@gildang:~/charp$ vim doublestrig.cs
gildang@gildang:~/charp$ gmcs doublestrig.cs
gildang@gildang:~/charp$ mono doublestrig.exe
첫 번째 실수를 입력하세요.: 10.5
두 번재 실수를 입력하세요.: 5.7
두 수의 합 : 16.2
gildang@gildang:~/charp$ cat doublestrig.cs
using System;
class Class1
{
static void Main(String[] args)
{
String s1, s2;
double a, b, sum;
Console.Write("첫 번째 실수를 입력하세요.: ");
s1 = Console.ReadLine();
Console.Write("두 번재 실수를 입력하세요.: ");
s2 = Console.ReadLine();
a = Convert.ToDouble(s1);
b = Convert.ToDouble(s2);
sum = a + b;
Console.WriteLine(" 두 수의 합 : " + sum);
}
}
gildang@gildang:~/charp$
화면 출력
키보드 입력 메소드 Read(), ReadLine(0 과 같은 유형으로 화면 출력 메소드는
Write()와 WriteLine() 명령어를 사용합니다.
출력시 화면 출력의 위치와 형식(format)을 지원하기 위하여 다음과 같은 { } 형식을
사용합니다.
두 번째 매개변수
Console.WriteLine("s1{0:d} {1:n}", n1, n2)
--------------
첫 번째 매개변수
s1은 출력할 문자열을 의미하고 {0:d}와 n1, {1:n)과 n2는 서로 대응 관계를 이룹니다.
즉, 변수 n1의 값은 {0:d}의 위ㅊ와 형식에 맞게 출력되고, 변수 n2의 값을 {1:n}
의 위치와 형식에 맞게 출력됩니다.
{} 안의 ":" 다음 형식 문자가 사용된다는 의미로 해석하면 되고, 형식 문자는 다음과 같은
것들이 있습니다.
형식 문자 설명
C 혹은 c 화폐형으로 표시합니다.
D 혹은 d 10진수로 표시합니다.
E 혹은 e 실수 값을 지수 형식으로 표시합니다.
F 혹은 f 부동 소수점으로 표시합니다.
G 혹은 g 소수점 혹은 정수로 표시합니다.
N 혹은 n 숫자 안에 콤마를 표시합니다.
X 혹은 x 16진수로 표시, X는 16진수가 대문자, x는 소문자로 표시됩니다.
gildang@gildang:~/charp$ vim doublex.cs
gildang@gildang:~/charp$ gmcs doublex.cs
gildang@gildang:~/charp$ mono doublex.exe
1000단위에 콤마 표시 : 12,346
소수점 2째자리까지 표시 : 12345.79
형식 조건없이 표시 : 12345.785
gildang@gildang:~/charp$ cat doublex.cs
using System;
class Class1
{
static void Main() {
double x;
x = 12345.785;
Console.WriteLine("1000단위에 콤마 표시 : {0:N0}", x);
Console.WriteLine("소수점 2째자리까지 표시 : {0:F2}", x);
Console.WriteLine("형식 조건없이 표시 : {0}", x);
}
}
gildang@gildang:~/charp$
Console.WriteLine("1000단위에 콤마 표시 : {0:N0}", x);
화면 출력시 형식은 {}에서 다음과 같이 잡습니다.
N은 천 단위의 콤마를 숫자에 표시합니다.
첫 번재 매개 변수를 가리킵니다.{0:N0} 나머지 0은 소수점 자리 수가 없습니다.
그리고 {0:F2}에서 F는 부동소수점을 의미합니다. 그 뒤에 나타나는 2는 소수점 2째 자리까지 표시함을
의미합니다.
따라서 현재 x의 값은 12345.785인데 쑤점 2째 자리까지 표기하려면 소수점 3째 자리에서
반올림한 수 (12345.79)를 화면에 출력합니다.
{0}에서 형식조건 표시 (:)가 없으므로 형식에 구애 없이 잇는 그대로를 화면에 출력합니다.
이상 여기까지입니다.
감사합니다.
=====================================================================
최근 덧글