터미널 입력

터미널 입력 (Terminal Input)

스크립트를 실행하다 보면 사용자에게 입력을 받아야 할 때가 있어요. Octave는 사용자에게 입력을 요청하기 쉽게 해 주는 함수 세 개를 제공해요. inputmenu는 보통 사용자와 대화형 대화를 주고받는 데 쓰고, keyboard는 주로 간단한 디버깅에 사용하죠.

출처: Terminal Input

본문

input

ans = input (prompt)
ans = input (prompt, "s")

prompt를 출력하고 사용자 입력을 기다립니다. 예를 들어:

input ("Pick a number, any number! ")

는 프롬프트

Pick a number, any number!

를 출력하고 사용자가 값을 입력하길 기다려요. 사용자가 입력한 문자열은 표현식으로 평가되므로, 리터럴 상수일 수도, 변수 이름일 수도, 다른 유효한 Octave 코드일 수도 있습니다. 반환 인자의 개수, 크기, 클래스는 입력한 표현식에 따라 달라져요.

리터럴 문자열 값만 얻고 싶다면 input을 두 번째 인자로 문자열 "s"를 주고 호출하면 돼요. 그러면 Octave는 사용자가 입력한 문자열을 평가하지 않고 그대로 돌려줍니다.

페이저(pager)가 표시할 대기 중인 출력이 있을 수 있으므로, input을 호출하기 전에 항상 fflush (stdout)을 호출하는 게 좋아요. 그러면 프롬프트가 뜨기 전에 보류 중인 출력이 모두 화면에 쓰입니다.

See also: yes_or_no, kbhit, pause, menu, listdlg.

choice = menu (title, opt1, …)
choice = menu (title, {opt1, …})

제목 title과 옵션 opt1, …을 가진 메뉴를 표시하고 사용자 입력을 기다립니다.

GUI가 실행 중이면 listdlg를 써서 메뉴가 그래픽으로 표시돼요. 그렇지 않으면 제목과 메뉴 옵션을 콘솔에 출력합니다. title은 문자열이고, 옵션은 개별 문자열로 넘기거나 문자열 셀 배열로 넘길 수 있어요.

반환값 choice는 사용자가 선택한 옵션의 번호(1부터 세기 시작)예요. 사용자가 대화 상자를 취소하거나 잘못된 선택을 하면 0이 돌아옵니다.

이 함수는 대화형 프로그램에 유용해요. 넘길 수 있는 옵션 개수에 제한은 없지만, 한 화면에 다 안 들어갈 만큼 많은 옵션을 보여주면 헷갈릴 수 있으니 주의하세요.

See also: input, listdlg.

yes_or_no

ans = yes_or_no ("prompt")

사용자에게 예/아니오 질문을 합니다. 답이 예면 논리 참(true), 아니면 거짓(false)을 돌려줍니다. 인자는 하나, prompt로, 질문할 때 표시할 문자열이에요. prompt는 공백으로 끝나야 하고, yes_or_no가 그 뒤에 문자열 (yes or no)를 덧붙여요. 사용자는 RET로 답을 확정해야 하고, 확정하기 전까지는 답을 편집할 수 있습니다.

See also: input.

input의 경우 프롬프트에서 일반적인 명령줄 히스토리와 편집 기능을 사용할 수 있어요.

Octave에는 캐리지 리턴(Enter)을 입력하지 않아도 키보드에서 한 글자를 받아오는 함수도 있어요.

kbhit

c = kbhit ()
c = kbhit (1)

키보드에서 한 번의 키 입력을 읽습니다. 인자(보통 1)를 주고 호출하면 키 입력을 기다리지 않고, 키보드 입력 버퍼에 있는 다음 키 입력을 즉시 돌려주거나, 키 입력이 없으면 빈 문자열("")을 돌려줍니다.

예를 들어:

c = kbhit ();

c를 키보드에서 입력되는 즉시 다음 문자로 설정해요.

c = kbhit (1);

는 위 예와 동일하지만 키 입력을 기다리지 않고, 키가 없으면 빈 문자열을 돌려줍니다.

See also: input, pause.

더 알아보기

  • octave-terminal-output — 터미널 출력
  • octave-simple-file-io — 간단한 파일 입출력