0. 준비: 코드를 어디서 실행하지?
루비는 설치해도 좋고, 온라인 실행기(“ruby online repl” 검색)에서 실행해도 된다.
중요한 건 “내가 직접 타이핑해서 실행한다”는 것뿐이다.
규칙 하나만 기억하기
복붙 말고, 반드시 직접 타이핑해보기
에러가 나도 괜찮다. 그게 뇌에 가장 강하게 새겨지는 순간이다.
1단계: “컴퓨터야, 말 좀 해봐” – 가장 작은 프레임 잡기
1-1. 첫 코드: Hello, Ruby
puts "Hello, Ruby"
puts: “print line” 느낌. 콘솔에 한 줄 출력하라는 뜻"Hello, Ruby": 그냥 문자열(글자 덩어리)
이 한 줄은 사실 이런 문장이다.
“컴퓨터야, 이 글자를 화면에 한 줄 찍어줘.”
뇌 프레임(박문호식)
프레임: “코드는 명령문이다” → 한 줄이 하나의 생각.
시각화:
puts를 입처럼 상상해도 좋다. → 컴퓨터의 입.인출: 글자만 바꿔보며 반복 입력.
실습 1-1. 나만의 첫 문장 만들기
아래처럼 원하는 문장을 3줄 출력해봐:
puts "코딩 너무 겁나는데…"
puts "일단 해보자."
puts "생각보다 별 거 아니네?"
과제 A
위 3줄을 본인 문장으로 바꿔보기
최소 5줄 이상 출력해보기
“올해 안에 이루고 싶은 것” 목록을
puts로만 작성해보기
2단계: “5번 말해줄래?” – 반복이라는 마법
이제 반복 패턴이라는 프레임을 뇌에 심어보자.
2-1. 같은 말을 여러 번
5.times do
puts "코딩은 재밌다"
end
5.times: “5번 반복해줘”do ... end: 반복되는 코드의 범위안에 있는
puts는 5번 실행됨
뇌 프레임
프레임: “반복되는 것은 루프(loop)로 표현한다.”
시각화: 동그란 원을 돌며 1,2,3,4,5 숫자가 빙글빙글 도는 그림 상상
인출: 숫자를 3, 10, 100으로 바꿔보며 반복 타이핑
실습 2-1. 나를 세뇌시키기
10.times do
puts "나는 생각보다 훨씬 빨리 배운다"
end
과제 B
10.times를3.times,7.times로 바꿔 실행해보기문장을 바꿔서,
- “나는 포기 안 한다”
- “조금씩이라도 매일 한다”
같은 문장을 최소 3개 만들어서 각각 여러 번 출력해보기
3단계: 패턴이 보이는 순간 – 별 찍기로 ‘시각화 회로’ 켜기
이제 진짜 뇌가 패턴을 시각화하는 순간으로 들어가보자.
바로 별 찍기()다.
3-1. 한 줄짜리 별
puts "*"
이건 별 1개짜리.
3-2. 별 5개를 세로로
5.times do
puts "*"
end
화면에:
*
*
*
*
*
이렇게 나온다.
여기서 뇌는 이런 감각을 얻는다.
“아, 이건 ‘세로로 5개의 별’이라는 패턴이구나.”
3-3. 점점 커지는 계단 만들기
이제 진짜 재미있는 순간이다.
1.upto(5) do |n|
puts "*" * n
end
1.upto(5): 1부터 5까지 순서대로n에 넣어가며 반복|n|: 각 반복에서 사용할 변수 이름"*" * n:"*"문자를n번 반복한 문자열
출력 결과:
*
**
***
****
*****
여기서 뇌는 패턴 인식 폭발이 일어난다.
숫자가 1→2→3→4→5 증가하고
별 개수가 1→2→3→4→5 같이 증가한다
눈 앞에 ‘계단’이 그려진다
뇌 프레임
프레임: “숫자와 모양의 관계”
시각화: 코드가 도형을 그리는 펜이 된 느낌
인출: 숫자 범위만 바꿔보며 여러 번 그려보기(3, 7, 10 등)
실습 3-1. 계단을 커지게, 더 커지게
과제 C
1.upto(5)를1.upto(10)으로 바꾸면 어떻게 되는지 실행해보기puts "*" * n대신puts "" * n로 바꿔보기 (이모지도 된다!)
아래 형태도 스스로 만들어볼 것:
# ## ### #### #####→ 힌트:
"*"대신"#"사용
4단계: 조건문으로 ‘생각’을 코드에 심기
이제 조건(if) 프레임을 뇌에 올려보자.
조건은 “이럴 땐 이렇게, 저럴 땐 저렇게”라는 생각의 구조다.
4-1. 짝수 / 홀수 구분하기
1.upto(10) do |n|
if n.even?
puts "#{n}는 짝수입니다"
else
puts "#{n}는 홀수입니다"
end
end
n.even?: n이 짝수면true, 아니면falseif ... else ... end: 조건에 따라 다른 코드 실행#{n}: 문자열 안에 변수 끼워 넣기
출력 예시:
1는 홀수입니다
2는 짝수입니다
3는 홀수입니다
...
10는 짝수입니다
여기서 뇌는 이런 걸 배운다.
“아, 코드는 판단을 할 수 있구나.”
“모든 상황을 규칙과 조건으로 표현할 수 있겠네?”
뇌 프레임
프레임: “조건에 따라 갈라지는 가지 구조”
시각화: 나무 가지처럼 위에서 아래로 두 갈래로 갈라지는 그림
인출:
even?대신 다른 조건으로 바꾸며 연습
실습 4-1. 기분 분기 처리(?) 하기
과제 D
아래 코드를 직접 만들어보고, 문장을 본인 스타일로 바꿔보자.
1.upto(5) do |score|
if score >= 4
puts "기분 점수 #{score}: 오늘은 기분 최고!"
else
puts "기분 점수 #{score}: 그래도 오늘도 해낸다."
end
end
추가 도전:
점수 범위를
1.upto(10)으로 늘려보기score값에 따라 3단계로 나누기- 8 이상: “인생 날먹 모드”
- 4~7: “평범하지만 의미 있다”
- 3 이하: “커피 한 잔 더 필요함”
5단계: 아주 작은 “미니 프로그램” 만들어보기
이제 앞에서 배운 것들(출력, 반복, 조건)을 합쳐서
작은 프로그램 하나를 만들어보자.
주제:
“내가 매일 공부한 시간을 기록하고,
그날의 총 공부 시간을 알려주는 프로그램”
5-1. 하루 공부 시간 합산기
study_times = [30, 45, 60, 20] # 분 단위: 네 번 공부
total = 0
study_times.each do |minutes|
total = total + minutes
end
puts "오늘 공부한 시간: #{total}분"
if total >= 120
puts "대단하다! 오늘 진짜 많이 했다 "
elsif total >= 60
puts "좋아, 이 페이스면 충분히 성장한다 "
else
puts "조금 아쉽지만, 시작이 어디야. 내일 더해보자 "
end
코드 해석
study_times: 오늘 공부한 시간을 배열로 저장total = 0: 합계를 저장할 변수each do |minutes|: 배열에서 하나씩 꺼내서minutes로 사용total = total + minutes: 합산마지막
if~elsif~else: 총 공부 시간에 따라 다른 메시지 출력
뇌 프레임
프레임: “데이터(배열) + 반복(each) + 조건(if) = 작은 시스템”
시각화: 네 개의 시간값이 파이프를 타고
total상자로 들어가는 느낌인출: 배열 내용 바꾸기, 기준 시간 바꾸기, 메시지 바꾸기
실습 5-1. 나만의 공부·운동·일과 기록기 만들기
과제 E
study_times를 운동 시간으로 바꿔보기exercise_times = [10, 15, 20] # 세 번 운동if조건을 운동 기준으로 바꾸기
- 60분 이상: “오늘 헬린이 탈출 각”
- 30분 이상: “좋은 루틴 유지 중”
- 그 외: “그래도 누웠던 몸은 일어났다. 충분히 의미 있음”
- 완전히 새로운 주제로 바꿔보기
- “오늘 유튜브 만든 시간”
- “오늘 책 읽은 시간”
- “아이와 놀아준 시간”
6단계: “이게 다 루비온레일즈의 바닥이다”
지금 해본 것들은
사실 레일즈에서 이렇게 응용된다:
배열→ DB에서 가져온 글 목록 (Post.all)each반복 → 글 리스트 화면에 제목 반복 출력if조건 → 로그인 되어 있으면 버튼 노출, 아니면 숨기기문자열 출력 → HTML 텍스트 렌더링
우리가 방금 만든 이 코드 조각들은
나중에 레일즈에서 이런 식으로 변한다:
@posts.each do |post|
if post.published?
puts post.title
end
end
지금은 콘솔에 출력이지만,
조금만 확장하면 실제 웹서비스 화면이 된다.
마지막: 오늘, 당신은 이미 “코딩의 첫 맛”을 본 것이다
여기까지 따라 했다면,
당신은 이미 뇌 안에 이런 프레임들을 심었다.
명령(출력)
반복(times, upto, each)
패턴(별 찍기)
조건(if)
데이터 구조(배열)
작은 로직(공부 시간 합산기)
이건 그냥 문법 몇 개 익힌 수준이 아니다.
박문호 식으로 말하면,
“당신의 뇌에 새로운 구조적 사고 회로가 생성되었다.”