일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- C언어
- 글이_점점_짧아지고_있습니다.
- matlab
- Inkscape
- 수학
- 프로그래밍
- 리브레위키
- LaTeX
- css3
- 선형대수학
- python
- 오늘의 문제
- Nemeth Braille
- html
- CSS
- HTML5.
- Java
- 프로그래밍 언어
- 확률
- javascript
- IT
- 자바스크립트
- 나무위키
- 점자
- html5
- C
- ┌─┐
- 물리학
- 위키
- C++
- Today
- Total
SturdyCobble's Study Note
[프로그래밍] 2.5 기본 입출력(2) 본문
NOTICE : 독학인 만큼, 잘못된 내용이 있을 수 있습니다. 내용 지적은 언제나 환영합니다.
더 이상 이 블로그에는 글을 올리지는 않을 예정입니다. 그렇지만 댓글을 달아주시면 최대한 답변드리고자 노력하겠습니다.
※이 글은 프로그래밍 언어에 대한 기초적인 이해를 가정하고 있습니다. 최소 프로그래밍 언어 하나 정도를 약간이라도 접해보시는 것을 추천합니다. 또한, 이 글은 심화 내용은 되도록 피하여 서술했습니다.
이번 글에서는 입력 방법에 대해 알아보겠습니다.
먼저, C언어의 경우 scanf함수로 입력을 받을 수 있으며, 그 외 gets, getchar등의 함수들이 있습니다. 일단 scanf함수부터 그 사용법을 알아보겠습니다. (아래에서 int a=0, b=0;과 같이 쓰는 것은 문법적으로 전혀 문제가 없으나 조금 불편하시다면 따로 초기화하셔도 좋습니다.)
int a = 0, b = 0;
scanf("%d %d",&a,&b);
printf("%d %d",a,b)
printf를 다룰 때 보았던 서식 문자를 똑같이 사용할 수 있습니다. 위 예시의 경우 실행 후 어떤 숫자를 입력한 뒤, 뛰어쓰기를 하거나 엔터를 누른 뒤 새로운 숫자를 입력하고 엔터를 누르면 입력한 두 값을 출력하게 됩니다. 아래는 위 예시의 출력 결과로 처음 두 숫자는 입력 값입니다.
--------------------------------------------
3
4
3 4
---------------------OR---------------------
3 4
3 4
--------------------------------------------
여기서 printf와는 다르게 변수이름에 &을 붙이는 데, 이는 변수의 주소를 함수에 전달해줘서 값을 변수의 주소에 보내준다고 생각하면 됩니다. 문자열을 입력하는 경우는 약간 다릅니다.
char str1[20];
scanf("%s",str1);
printf("%s",str1);
이 경우 str1이라는 20자의 문자를 담을 수 있는 변수를 만들어 주었습니다. 입력을 받을 때, str1에 &기호가 없는 것을 보실 수 있는데요, 이는 str1자체가 그 변수의 주소를 담고 있기 때문입니다. 이에 대해 나중에 다시 언급하겠습니다. 이 예제를 실행하고, Hello Everyone을 입력하고 엔터를 누르면 아래의 결과를 얻을 수 있습니다.
-----------------------------------------
Hello Everyone
Hello
-----------------------------------------
공백을 기준으로도 구분하기 때문에, Hello만 입력되었습니다. 만약 문장을 입력받고 싶다면, gets함수를 쓰면 됩니다.
char str1[20];
gets(str1);
printf("%s",str1);
결과는 다음과 같습니다.
-----------------------------------------
Hello Everyone
Hello Everyone
-----------------------------------------
문자만을 입력받는 getchar는 다음과 같이 이용합니다.
char ch1 = 'a';
ch1 = getchar();
변수 이름을 앞에 써주는 것이 위의 두 함수와 다릅니다. 그러나 역시 입력하고 엔터를 누르는 점은 동일합니다.
그 외, wchar_t형과 관련된 wscanf, _getws등의 함수도 존재합니다.
C++은 좀 단순한 입력 방법을 제공합니다.
int a = 0, b = 0;
cin >> a >> b;
cout << a << b;
두 함수의 <<방향이 다름에만 주의한다면, 서식에 관계없이 쉽게 입력받을 수 있습니다.
일반적인 순서라면 Java를 먼저 다뤘겠지만, Python먼저 입력 방식을 소개하겠습니다. 매우 간단하며, 직관적이고, Python 3기준으로 문자열형으로 입력을 받습니다.(숫자든 문자열이든)
str1 = input()
입력한 값으로 문자열 변수를 초기화하는 코드입니다. 만약 숫자등 다른 형태로 입력을 받고 싶다면, 아래와 같이 하시면 됩니다. 이렇게 형태를 바꾸는 연산자에 대해서도 나중에 한번에 다루도록 하겠습니다.
num1 = int(input())
realNum1 = float(input())
Java는 별도의 간편한 입력 함수가 있지 않습니다. 당연할 수도 있는 것이, 콘솔 환경에서 입력을 받을 일이 많이 없고, 받더라도 문법을 익히기 위한 용도이기 때문입니다.(다른 언어도 마찬가지 일 것입니다.) 그렇기에 대부분의 Java 강의를 온라인에서 찾아보면 입력은 나중에 소개하는 경우가 많습니다. 하지만, 여러 언어를 함께 소개하는 이 글의 특성상 간략하게 소개하겠습니다.
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num1 = scan.nextInt();
String str1 = scan.next();
String str2 = scan.nextLine();
System.out.println("출력 결과:"+num1+"/"+str1+"/"+str2);
}
}
일단 첫 줄에 import로 시작하는 문장이 삽입되었는데요, C언어의 #include와 같이 파일을 포함한다는 정도만 알아두면 될 것같습니다.(실제론 여러 면에서 다르지만, 일단 추후 다시 설명하겠습니다.)
Scanner로 시작하는 문장은 입력을 받을 Scanne 클래스의 객체를 만드는 것인데, 우리는 이 내용을 이용만 할 것이므로, 일단 생략하겠습니다. 그 다음, scan.next()와 같이 값을 입력받는 데요, 각 문장의 의미를 해석하면 아래와 같습니다.
int num1 = scan.nextInt(); | Int형으로 한 단어만큼을 저장(다른 자료형도 가능) |
String str1 = scan.next(); | 한 단어 만큼을 추가로 가져옴 |
String str2 = scan.nextLine(); | 한 문장을 통째로 가져옴 |
위 프로그램의 실제 실행결과는 아래와 같습니다.
----------------실행 1----------------
1 2 3 4 5 6 7 8
출력 결과:1/2/ 3 4 5 6 7 8
----------------실행 2----------------
1 2
출력 결과:1/2/
----------------실행 3----------------
1
2 3 4 5 6 7 8
출력 결과:1/2/ 3 4 5 6 7 8
--------------------------------------
실행1의 결과는 이해하기 쉬운데요, 실행 2는 약간 의문이 드실지도 모르겠습니다. 정확히는 실행 2에서는 문자열 ""가 대입되어 대입이 이루어지지 않은 것처럼 보일 뿐입니다. 두 개 변수에 값을 대입하고 문장을 받을 차례인데, 엔터키가 입력되어 " "도 아닌 ""가 입력된 것입니다.
더 심화된 내용은 개략적으로 설명하는 이 글의 특성상 생략하겠지만, 인터넷에 찾아보면 다양한 자료가 나오니 참고하시길 바랍니다.
참고로 위 코드에서 경고가 뜰 수 있지만,(Scanner가 close되어야 한다는 내용입니다.) scan.close();를 마지막에 넣으셔도 되고, 아니면 굳이 하지 않아도 현재 입출력 수준에서는 큰 문제는 되지 않을 것으로 보입니다.
'휴지통 > ['19.06-'20.07]프로그래밍101' 카테고리의 다른 글
[프로그래밍] 2.7 자료형[4] - 배열과 리스트(2) (0) | 2019.07.29 |
---|---|
[프로그래밍] 2.6 자료형[3] - 배열과 리스트(1) (0) | 2019.07.28 |
[프로그래밍] 참고 자료 목록 (0) | 2019.07.14 |
[프로그래밍] 2.4 기본 입출력(1) (0) | 2019.07.14 |
[프로그래밍] 2.3 자료형[2] (0) | 2019.07.08 |