The Pawn language - CompuPhase

출력

개요

출력(Print)은 콘솔에 출력하는 것을 얘기합니다. 단순히 변수를 그대로 출력하는 것에서부터, 형식(Format)에 맞춰서 이쁘게 출력하는 방법까지를 다룹니다.

문자열(String) 출력

단순히 문자열을 출력하는 것부터 시작해 보겠습니다. 함수는 print() 함수를 사용합니다.

// 문자열을 직접 입력
print("hello, world!");

// 문자열 변수를 출력
new s[20] = "hello, world!";
print(s);

위 코드의 특징은, 입력한 그대로를 출력한다는 것입니다. 문자열을 직접 입력하던, 변수를 입력하던 print() 함수 입장에서는 자기가 받은 것을 그대로 콘솔로 출력해 주기만 하면 됩니다.

Format이란?

포맷(Format)은 '형식'을 의미합니다. 일상 생활을 살다 보면 '정해진 포맷에 맞춰서 서류를 제출하세요' 와 같은 문장을 접할 수 있습니다. 예를 들어 점수를 기입할 때 소수 첫째 자리까지만 작성한다던지 등의 형식이 있을 수 있습니다.

프로그래밍에서 포맷은 출력 형태를 프로그래머가 정해서 출력함을 이야기합니다. 지금까지 우리는 많은 예제를 통해 변수의 값을 콘솔에 출력해 왔습니다. 그러나 아무런 포맷 없이 그저 변수의 값을 그대로 콘솔에 출력하기만 했죠. 이제는 형태를 잡을 수 있습니다.

printf()

이제 포맷에 맞춰 출력을 해보도록 하겠습니다. 함수는 printf() 함수를 사용합니다. print+format의 약자입니다. 간단한 예제를 보겠습니다.

new age = 21;
printf("My age is %d.",age); // "My age is 21."

위 코드는 age 변수의 값을 콘솔에 출력하는데, 그냥 출력하는 것이 아니라 문장에 섞어서 출력하게 됩니다. 여기서는 변수 출력의 위치를 %d로 잡았는데, 자세한 내용은 아래에서 다시 설명합니다. 우선 위 예제를 통해 알 수 있는 사실은 다음과 같습니다.

  • 앞뒤에 내 마음대로 문장을 붙일 수 있다.
  • 변수가 출력되는 위치를 정할 수 있다.

여러 개의 변수를 출력할 수도 있습니다. 바로 다음과 같이 말이죠.

new age = 21;
new Float:height = 183.5;
printf("My age is %d, and height is %f.",age,height); // "My age is 21, and height is 183.500000."

형식 문자

자 그러면 지금까지 알지 못하고 사용했던 %d나 %f와 같은 문자들에 대해 살펴보겠습니다. 이들은 형식 문자라고 합니다. 형식 문자는 변수를 어떤 형태로 출력할 것인지를 정해주며, 위치 또한 정해줍니다.

  • %c: 문자
  • %d: 정수(int)
  • %f: 실수(float)
  • %s: 문자열(string)
  •  
  • %x: 16진수(hex)
  • %b: 2진수(binary)

위와 같은 종류가 있습니다. 이를 숙지한 채로 예제들을 다시 보시면 이해가 될 것입니다.

new a = 'A'; // ASCII code: 65
new b = 15246;
new Float:c = 3.14;

printf("%c",a); // A
printf("%d",a); // 65
printf("%d",b); // 15246
printf("%x",b); // 3B8E
printf("%b",b); // 1110111001110
printf("%f",c); // 3.140000

형식 문자 변형(float)

형식 문자는 단순히 정수나 실수를 정하는 것 뿐만 아니라 자리수를 정하는 데에도 사용됩니다. 대표적으로 소수점 자리수를 정하는 방법을 소개합니다.

다양한 변형 방법들이 있으나 실제로 많이 사용되지 않으므로 여기서는 생략합니다. 공부를 원하시는 분은 타 강좌를 참고하시기 바랍니다.

기본적으로 소수(float)는 아무런 변형을 가하지 않을 경우 소수점 6자리까지 표시됩니다. 이를 다음과 같이 변형할 수 있습니다.

new Float:pi = 3.1415929;
printf("%f",pi); // 3.141592
printf("%.1f",pi); // 3.1
printf("%.2f",pi); // 3.14
printf("%.5f",pi); // 3.14159
printf("%.6f",pi); // 3.141592
printf("%.10f",pi); // 3.1415920257

pi 변수는 소수점 7자리까지 입력되어 있습니다. 그런데 마지막에서 소수점 10자리까지 출력을 강제하면 최대한 가까운 숫자로 임의의 숫자가 표시됩니다.

프로세서의 부동소수점 방식으로 인해 근사치가 표시되는 부분은 설명 범위를 초과하므로 생략합니다.

댓글

댓글 본문
  1. 준영
    1번 읽음.

    이해 완료!