프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

56. 프로그래밍 문제 (8)


함수를 이해했는지 확인하는 프로그래밍 문제입니다.

⚠ 제공되는 정답은 신중히 열어보세요

정답을 쉽게 확인할수록 문제 해결 능력은 천천히 오릅니다.
반드시 오래 생각한 후, 강좌를 아무리 복습해도 답을 모르겠을 때 정답을 확인해주세요.

프로그래밍 문제

문제 1. 다음 중 함수에 관한 설명으로 옳지 않은 것은?

ㄱ. 정의한 함수를 호출할 수 있다.
ㄴ. 함수는 여러 매개변수를 가질 수 있다.
ㄷ. 함수는 여러 반환 값을 가질 수 있다.
ㄹ. 함수의 반환값이나 매개변수가 필요 없을 경우, 모두 생략할 수 있다.

정답 펼치기/접기 답: ㄷ

- 함수는 하나의 반환 값만 가질 수 있다.

 


문제 2. 다음 중 참조에 관한 설명으로 옳지 않은 것은?

ㄱ. 참조는 어떤 변수의 또다른 별칭과도 같다.
ㄴ. B가 A의 참조일때, B를 사용하여 A값을 바로 출력할 순 있지만, 새 값을 대입하려면 B를 역참조할 필요가 있다.
ㄷ. 참조를 이용하면 인수로서 전달된 변수의 값을 바꿀 수 있다.
ㄹ. A를 참조하는 변수 B가 있을 때, B를 역참조하면 A와 본질적으로 같다.

정답 펼치기/접기 답: ㄴ

- 출력이든 대입이든, 참조된 변수에 접근하려면 역참조가 필요하다.

 


문제 3. 아래와 같은 프로그램을 작성하세요.

누른 핫키 기준으로 구구단을 출력하는 프로그램

[동작]
1. 1~9를 누르면 각각 1단부터 9단까지의 구구단을 출력한다.
2. ESC를 누르면 스크립트를 종료한다.

[조건]
1. 핫키 블록 안의 내용은 한 줄만 쓸 것.
2. 단을 입력받으면 구구단 문자열을 반환해주는 GetGugu함수를 만들어 사용할 것.
3. 함수 호출문은 한 번만 쓸 것.

힌트 펼치기/접기 - 누른 핫키가 담긴 내장 변수가 있었습니다. 지금까지 문제 풀면서도 몇 번 썼었습니다.
- 핫키 블록 안의 한 줄은 당연히 함수 호출문일 것입니다.
정답 펼치기/접기
문제 3 정답
56-3.ahk (0.20KB)

 


문제 4. 아래와 같이 제공된 프로그램을 수정하세요.

두 변수의 값을 바꿔주는 프로그램

[동작]
1. 두 변수의 값을 바꾼다.
2. 바꾼 변수의 값을 출력한다.

[답안 작성]
1. 별개로 제공하는 아래의 '제공 스크립트'를 수정하여 작성한다.

[조건]
1. 표시된 부분 이외의 다른 부분은 수정하지 말 것.
2. 아래의 '출력 결과'를 참고할 것.

1a := 10
2b := 20
3Swap() ;함수의 호출부를 완성하세요.
4MsgBox("a의 값: " a ", b의 값: " b)
5
6Swap() ;함수의 매개변수를 완성하세요.
7{
8 ;함수의 본문을 완성하세요.
9}
제공 스크립트 a의 값: 20, b의 값: 10이라고 적혀있는 알림 상자 사진 1. 출력 결과 - Swap 함수를 거치니 a가 20, b가 10이 되었다.
힌트 펼치기/접기 - 참조에 의한 호출을 이용하여 함수 안에서 a와 b의 값을 교환할 것
- 각각 오렌지 주스, 포도 주스가 담긴 두 컵의 내용물을 서로 교환하려면 일상 생활에선 어떻게 하는가?
정답 펼치기/접기
문제 4 정답
56-4.ahk (0.13KB)
힌트에 있던 음료 문제의 정답은 아래와 같다.
  1. 또다른 컵에 오렌지 주스를 임시로 비워둔다.
  2. 비워진 컵으로 포도 주스를 붓는다.
  3. 포도 주스가 있던 컵으로 아까 임시로 빼둔 오렌지 주스를 넣는다.
이렇게 하면 원래 오렌지 주스가 있던 컵엔 포도 주스가 들어가있고, 포도 주스가 있던 컵엔 오렌지 주스가 들어가있다. 이처럼 값을 교환하는덴 임시 변수가 필요하다.

 


정답은 예시입니다.

조건을 지켜서 프로그래밍 했다고 가정할 때, 제공 정답과 동일한 동작을 한다면 잘 하신 것입니다.
내려받은 정답 코드가 자신의 코드와 다르다고해서 오답인 것은 아닙니다!

질문하러 가기