스티브코딩

반복과 함수

반복 횟수·index·조건 반복과 모래비, 채팅명령어 부르기와 함수 차이

개념2026-10-19 갱신

한눈에 보기

  • 무엇: 같은 일을 여러 번 시키는 반복, 코드를 묶어 불러 쓰는 함수
  • 누구: 채팅명령어 블록을 써 본 초등 고학년~중학생
  • 흐름: 닭 100마리 → 매개변수로 횟수 정하기 → 모래비(반복+랜덤) → index·조건 반복 → 채팅명령어와 함수 비교
  • 결과물: 닭 비, 모래비, 동굴 찾기 코드, ‘명령실행끝’ 순서 실험

반복 첫걸음: 닭 100마리

on chat command "chicken"
    100 번 반복
        spawn animal (닭) at ~0 ~10 ~0
  • 채팅에 chicken 입력 → 내 머리 위 10칸에서 닭 100마리가 떨어짐
  • 먼저 반복 없이 소환 블록만 넣어 1마리가 나오는지 확인 → 반복 블록(기본 4번)으로 감싸고 100으로 바꾸기
  • 위치 ~0 ~10 ~0은 나를 기준으로 한 상대 좌표라 내가 움직이면 닭이 떨어지는 곳도 따라옴
  • 예전 버전(코드 커넥션 베타, 영문 블록) 화면. 한글 블록으로는 ‘다음 채팅명령어를 입력하면’ + ‘반복(repeat) ○회’
① 100번 반복 안에 닭 소환 (06:52)
① 100번 반복 안에 닭 소환 (06:52)
② 머리 위에서 떨어지는 닭 100마리 (07:33)
② 머리 위에서 떨어지는 닭 100마리 (07:33)

반복 ①: 매개변수로 횟수 정하기

  • 채팅명령어 블록의 ⊕를 누르면 변수 num1이 자동으로 생김
  • num1을 반복 횟수에 넣으면 실행할 때마다 횟수를 바꿀 수 있음
  • 채팅창에 이렇게 입력: 4 10 → 채팅명령어 4 + num1 값 10 → 닭 10마리 소환
  • 채팅 매개변수는 정수만 가능
num1번 반복해 닭 소환
num1번 반복해 닭 소환
자동으로 생긴 변수 num1
자동으로 생긴 변수 num1

반복 + 랜덤 위치: 모래비

  • 일반 블록은 공중에 놓으면 그 자리에 고정되지만 모래는 놓으면 아래로 떨어짐 → 높은 곳에 놓기만 하면 비처럼 내림
  • 채팅명령어 ‘모래비’ → 100회 반복 → 모래를 랜덤 위치에 놓기
  • 랜덤 위치 범위: ~10 ~40 ~10 ~ ~-10 ~50 ~-10 (나를 기준으로 x·z ±10칸, 40~50칸 위)
  • y를 높게 잡아야 위에서 떨어지는 비처럼 보임
① 100회 반복 + 랜덤 위치 선택에 모래 놓기 (03:29)
① 100회 반복 + 랜덤 위치 선택에 모래 놓기 (03:29)
② 채팅에 ‘모래비’ → 머리 위에서 떨어지는 모래 (01:38)
② 채팅에 ‘모래비’ → 머리 위에서 떨어지는 모래 (01:38)
③ 바닥에 쌓인 두 가지 색 모래 (01:51)
③ 바닥에 쌓인 두 가지 색 모래 (01:51)

모래비 ②: 랜덤수로 두 가지 모래 섞기

다음 채팅명령어를 입력하면: "모래비"
  반복(repeat): 100 회
    랜덤수 값 랜덤 선택(정수): 0 ~ 1 저장
    만약(if) 랜덤수 = 1 이면(then) 실행
      (흰 모래) 랜덤 위치 선택: ~10 ~40 ~10 ~ ~-10 ~50 ~-10 에 놓기
    아니면(else) 실행
      (빨간 모래) 랜덤 위치 선택: ~10 ~40 ~10 ~ ~-10 ~50 ~-10 에 놓기
  • 변수 ‘랜덤수’는 어떤 모래를 떨어뜨릴지 정하는 역할만 함
  • 빨간 모래를 더 자주: 범위를 1~3으로 바꾸면 1 → 흰 모래, 2·3 → 빨간 모래(1:2)
  • 발문: “범위를 1~3으로 바꾸면 두 모래의 비율은?” → 예측하고 실행해 확인
모래비 전체 코드 (02:57)
모래비 전체 코드 (02:57)

반복 ②: index 반복과 조건 반복

index로 번개 줄 코드
index로 번개 줄 코드

1 index로 번개 줄 철삽을 쓰면 index가 0~10으로 커지며 11번 반복 → 앞으로 이어지는 번개

index로 기둥 쌓기 코드
index로 기둥 쌓기 코드

2 index로 기둥 쌓기 index가 원의 중심 높이 → 쌓여 기둥. 완성까지 움직이지 않기

발아래 물 블록을 찾을 때까지 반복
발아래 물 블록을 찾을 때까지 반복

3 조건을 만족할 때까지 발아래 물 블록을 찾을 때까지 1초마다 시간을 세어 말하기

쌓인 기둥 결과
쌓인 기둥 결과
채팅: 몇 초 지남 → 물을 찾았다!
채팅: 몇 초 지남 → 물을 찾았다!
  • 정리: 정해진 횟수 → ‘○번 반복’, 값이 변하며 → ‘0부터 ○까지 index’, 조건 → ‘~인 동안 반복’

조건이 맞을 때까지 다시 부르기: 동굴 찾기

다음 채팅명령어를 입력하면: "1"
  만약(if) 블록 탐지: (공기 블록) 위치 ~0 ~-10 ~0 이면(then) 실행
    다음 좌표로 텔레포트: ~0 ~-10 ~0
  아니면서 만약(else if) 블록 탐지: (공기 블록) 위치 ~0 ~-20 ~0 이면(then) 실행
    다음 좌표로 텔레포트: ~0 ~-20 ~0
  아니면(else) 실행
    다음 채팅명령어를 실행: "1"
  • 10칸 아래가 빈 공간(공기)이면 동굴로 보고 텔레포트, 없으면 채팅명령어 1이 자기 자신을 다시 실행 → 찾을 때까지 반복
  • 실행하는 동안 걷거나 뛰어야 새 위치를 검사함. 20칸 아래 조건을 더하면 범위가 넓어짐
  • 주의: 높은 동굴로 이동해 떨어질 수 있음
① 아니면에서 자기 자신을 다시 실행 (01:29)
① 아니면에서 자기 자신을 다시 실행 (01:29)
② 20칸 아래 조건 추가 (03:38)
② 20칸 아래 조건 추가 (03:38)

실험: 채팅명령어로 부를까, 함수로 부를까

다음 채팅명령어를 입력하면: "1"
  다음 채팅명령어를 실행: "채팅명령어"   ← 실험 2: 호출 함수실행
  채팅창에 말하기: "명령실행끝"
다음 채팅명령어를 입력하면: "채팅명령어"
  반복(repeat): 10 회 → 채팅창에 말하기: "채팅명령어실행중"
함수 함수실행
  반복(repeat): 10 회 → 채팅창에 말하기: "함수실행중"
  • 실험 1(채팅명령어로 부르기): ‘명령실행끝’이 먼저 나오고 ‘채팅명령어실행중’ 10번
  • 실험 2(함수 호출): ‘함수실행중’ 10번이 다 나온 뒤 ‘명령실행끝’
  • 발문: 실행 전에 채팅 순서를 먼저 예상해 적게 하기
① 다음 채팅명령어를 실행으로 부르기 (00:56)
① 다음 채팅명령어를 실행으로 부르기 (00:56)
② 호출 함수실행으로 바꾸기 (00:30)
② 호출 함수실행으로 바꾸기 (00:30)
③ 실험 2 결과: 함수실행중 10번 뒤 명령실행끝 (02:12)
③ 실험 2 결과: 함수실행중 10번 뒤 명령실행끝 (02:12)

채팅명령어 부르기와 함수: 비슷하지만 다르다

채팅명령어 부르기 함수 호출
블록 플레이어 → 다음 채팅 명령어를 실행 고급 → 함수 → 함수 호출
하는 일 채팅창에 대신 입력해 주는 것 다른 코드 안에서만 불러 실행
순서 기다리지 않고 바로 다음 줄 실행 함수가 다 끝난 뒤 다음 줄 실행
그 밖에 친구도 채팅으로 같은 명령 실행 가능 매개변수 추가 가능
영상 실험(10번 반복 뒤 ‘명령 실행 끝’) ① 명령 실행 끝 ② 실행 중 ×10 ① 실행 중 ×10 ② 명령 실행 끝
- **이렇게 고르기**: 끝난 뒤에 이어서 할 일이 있다 → 함수 / 값을 바꿔 가며 쓰고 싶다 → 함수(매개변수) / 학생이 채팅으로도 직접 실행 → 채팅명령어 - **발문**: “만들고 나서 ‘완성!’이라고 알리려면 어느 쪽으로 불러야 할까?” → 함수
영상: 채팅명령어와 함수는 구별해서 사용해야 해요!
영상: 채팅명령어와 함수는 구별해서 사용해야 해요!
교사용 메모 · 함수 매개변수 예: The Show Must Go On
  • Hour of Code 2024 The Show Must Go On: hoc.note(Note.LA) 매개변수 1개 → hoc.armorstand_dance(ArmorStand.ONE, Dance.DOLPHIN_DISCO) 2개 → hoc.set(Biome.JUNGLE, Time.NIGHT, Climate.RAIN) 3개.
  • 값만 바꿔 같은 함수로 다른 결과를 만드는 경험(가이드는 자료 링크).
교사용 메모 · 채팅명령어와 함수 더 알기
  • 두 블록 모두 다른 코드 안에서 불러 쓸 수 있지만 동작 순서가 다릅니다.
  • ‘다음 채팅 명령어를 실행’은 채팅창에 그 명령어를 대신 써 주는 것뿐이라, 불러 놓고 끝날 때까지 기다리지 않고 바로 다음 줄로 넘어갑니다(영상: ‘명령 실행 끝’이 먼저 출력).
  • ‘함수 호출’은 함수가 끝까지 실행된 뒤에 다음 줄로 넘어갑니다(영상: 10번 반복이 끝난 뒤 ‘명령 실행 끝’).
  • 함수는 매개변수를 추가할 수 있다는 장점도 있습니다(채팅명령어 매개변수는 정수만).
  • 함수는 채팅창에 입력해서 실행할 수 없고, 다른 코드 안에서 ‘함수 호출’ 블록으로만 실행됩니다.
교사용 메모 · 수업 팁
  • 반복은 먼저 1번 실행해 결과를 확인한 뒤 횟수를 늘리게 하면 실수를 줄일 수 있습니다(닭 영상의 순서).
  • 모래비는 한 가지 모래로 시작해 랜덤수와 만약 블록으로 넓혀 가는 순서로, 반복·변수·조건을 한 번에 연습합니다(제안).
  • 동굴 찾기는 탐지할 블록을 물·용암 등으로 바꿔 찾고 싶은 장소로 이동하는 코드로 바꿔 보게 합니다(제안).

관련 영상

관련 공식 자료

함께 보기

출처

  • 스티브코딩 유튜브 「채팅명령어와 함수는 구별해서 사용해야 해요! #코드작성기튜토리얼」(2022-07-20)
  • 유튜브 「코드빌더 #2 치킨루프: 닭들이 떨어진다.」(2017-05-21)
  • 유튜브 「마인크래프트 메이크코드 #35 모래비가 내려와~」(2018-01-28)
  • 유튜브 「동굴로 바로 이동하자! / 메이크코드 #74 동굴 찾기」(2019-04-07)