한눈에 보기
- 무엇: 여러 값을 변수 하나에 담는 배열(리스트). 위치 번호로 꺼내고, 잘라내고, 길이를 셈
- 누구: 변수·반복을 써 본 초등 고학년~중학생 (초급)
- 몇 분: 배열 기초 1차시 + 활동(동물 낙하 실험 또는 복불복 소환게임) 1~2차시 (제안)
- 결과물: 색깔 블록 5개 줄 세우기 → 동물을 한꺼번에 떨어뜨리는 실험 → 무작위로 몬스터가 떨어지는 게임
- 영상은 2017~2019년 Code Connection 화면입니다. 지금은 게임 안에서 C키로 코드작성기를 엽니다(코드작성기 열기 참고). 블록 이름도 버전마다 조금씩 다릅니다

배열이란: 여러 값을 변수 하나에
- 변수는 값을 하나만, 배열은 여러 값을 한 변수에 순서대로 저장
- 블록 위치: 고급 → 배열. 숫자 배열과 문자(텍스트) 배열 두 가지
- 숫자 배열 칸에 블록·몹 값을 넣어도 됨(블록·몹 값도 정수). ⊕로 칸을 늘리고 ⊖로 줄임
- 예: 채팅 명령
1→리스트에 [파란색, 주황색, 빨간색, 흰색, 검은색] 블록 5개 저장 - 개념 팍팍: 배열은 많은 자료를 다룰 때 유용!

값 꺼내기: 위치 번호는 0부터
- 블록 놓기에
리스트를 그대로 넣으면 오류 → 값이 5개라 어느 것을 놓을지 모름 - 리스트에서 (0)번째 위치의 값 블록으로 위치를 정해 줌
- 컴퓨터는 0부터 셈: 첫 번째 값 = 0번째
| 위치 번호 | 0 | 1 | 2 | 3 | 4 |
| 값 | 파란색 | 주황색 | 빨간색 | 흰색 | 검은색 |



마지막 값 잘라내기와 리스트 길이
- 리스트에서 마지막 번째 위치의 값 잘라내기: 마지막 값을 꺼내면서 배열에서 지움 → 길이가 1 줄어듦
- 같은 블록을 5번 이어 쓰면 검은색 → 흰색 → 빨간색 → 주황색 → 파란색 순서로 놓임
- 리스트의 길이: 값의 개수. 잘라내기 전
5, 다섯 번 잘라낸 뒤0(채팅창에 말하기로 확인)
채팅 명령 "1"
리스트 에 [파란색, 주황색, 빨간색, 흰색, 검은색] 저장
(리스트에서 마지막 번째 위치의 값 잘라내기) 를 ~5 ~0 ~0 에 놓기
(리스트에서 마지막 번째 위치의 값 잘라내기) 를 ~4 ~0 ~0 에 놓기
… ~3, ~2, ~1 까지 같은 블록 반복
채팅창에 말하기: (리스트의 길이)



배열 탭의 주요 블록
| 하는 일 | 2018~2019 영상의 블록 | 2017 영상의 블록 |
| 배열 만들기 | 리스트 에 [ … ] 저장 | 다음 값을 저장시켜 배열 만들기 |
| n번째 값 꺼내기 | 리스트에서 (0)번째 위치의 값 | list 배열의 (0)번째 위치에 있는 값 |
| 마지막 값 꺼내고 지우기 | 리스트에서 마지막 번째 위치의 값 잘라내기 | 다음 배열의 마지막 값 가져옴(잘라내기) |
| 값의 개수 | 리스트의 길이 | 배열의 길이(크기) |
| 모든 값으로 반복 | 반복(foreach): (변수) 값을 (리스트)의 각 값으로 바꿔가며 | — |

활동 1: 동물 낙하 실험 — 각 값으로 바꿔가며 반복
- 학습 문제: 높은 곳에서 떨어져도 살아남는 동물은?
- **채팅 명령
1+ 변수 ****높이**: 명령과 함께 숫자를 입력받음 (예:1 20) - 배열:
리스트에 닭부터 물고기까지 동물 저장(몬스터·나는 동물 제외) - 반복(foreach):
소환동물값을리스트의 각 값으로 바꿔가며 → 0번째, 1번째… 차례로 변수에 들어감 - 소환:
소환동물을~10 ~높이 ~0에 → 모든 동물이 한꺼번에 떨어짐
- 동물마다 소환 블록을 하나씩 붙이지 않아도 됨 → 동물을 바꾸려면 배열만 고치면 됨



동물 낙하 실험: 정리 명령과 결과
채팅 명령 "2"
다음 치트키 실행: "kill @e"
채팅 명령 "3" (높이)
소환 오셀롯 을 ~10 ~높이 ~0 에
2로 떨어진 동물을 정리한 뒤 높이를 바꿔 다시 실험 (영상:1 20,1 10,1 25,1 30… 5씩 올려 70 무렵까지)- 높이 20부터 죽는 동물이 생기고, 높아질수록 말·노새·라마 등은 살기도 죽기도 함
- 오셀롯은 계속 살아남음 →
3으로 오셀롯만 100·120·150·300 높이에서 실험(자막 기준) → 결론: 오셀롯 - 수업: 먼저 살아남을 동물을 예상해 적고, 높이별 생존 동물을 표로 기록 (제안)




활동 2: 복불복 소환게임 — 배열에서 무작위로 꺼내기
- 채팅에
시작→ 밤이 되고 머리 위에서 몬스터·동물이 무작위로 떨어짐 → 살아남기
채팅 명령 "시작"
난이도 설정: 쉬움 (평화로움이면 좀비가 안 나옴)
시간 설정: 밤 (좀비는 밤에 나옴)
게임 모드 변경: 서바이벌 → 모든 플레이어(@a)
소환선택번호 에 0 저장
소환할 것 에 [좀비 피그맨, 스켈레톤, 좀비, 거미, 닭] 저장
반복 5 회
일시 중지(ms) 5000
소환선택번호 에 랜덤 선택(정수) 0 ~ 4 저장
소환 (소환할 것 배열의 소환선택번호 번째 위치에 있는 값) 을 ~0 ~10 ~0 에
- 값이 5개 → 위치는 0~4 → 랜덤 범위도 0부터 4까지. 4가 뽑히면 다섯 번째 값(닭)
- 숫자가 아닌 값을 넣는 배열 블록 사용, ⊕로 칸을 늘려 다른 몬스터 추가 (다듬은 코드 화면 10:11에서는 네 번째 칸이 크리퍼 알(초록 바탕에 검은 점)로 바뀌어 있음)



복불복 코드 다듬기: 함수와 반복 횟수
- 처음 코드:
시작에서 반복 4회 { 함수 호출 소환명령 }, 함수소환명령안에서 반복 5회 { 5초 쉬고 랜덤 소환 } → 모두 20번 소환 - 함수 호출 = 함수 안의 명령들을 그 자리에 불러오는 것. 함수 없이 명령을 바로 넣어도 됨
- 20번은 너무 많아서 바깥 반복을 빼고, 함수 안의 명령을
시작에 바로 넣어 5번만 소환 - 처음 코드 끝에는 채팅창에 말하기 “당신이 이겼습니다. 축하합니다.”가 있었음
- 확장: 몬스터를 더 넣으면 랜덤 범위도 함께 늘리기 → 디버깅 과제로 (제안)

수업 팁
- 예상 → 실행: 위치 번호를 바꾸기 전에 어떤 색이 놓일지 먼저 말하게 하기 (제안)
- 0부터 세기가 가장 흔한 실수: 값이 N개면 위치는 0
N−1. 랜덤 범위를 15로 하면 첫 값(0번째)은 안 나오고, 없는 위치(5)를 꺼내려 함 - 잘라내기는 배열을 바꿈: 실행할 때마다 길이가 줄어드는 것을 ‘리스트의 길이’로 기록 (제안)
- 변수 이름 맞추기: 배열을 저장한 변수와 꺼내는 블록의 변수가 다르면 다른 배열을 읽음
- 몹 소환 실습은 난이도 쉬움 이상(평화로움이면 몬스터가 안 나옴)
- 변수는 한 칸짜리 상자, 배열은 번호 붙은 칸이 여러 개인 상자로 비유