컴퓨터야 말 좀 해봐

루비 코딩 초보자를 위한 프로그래밍 학습 가이드. '컴퓨터야 말 좀 해봐', '별 찍기', '루비 온라인 실행기' 등 다양한 주제를 다룸.

밤치 72

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

  1. 위 3줄을 본인 문장으로 바꿔보기

  2. 최소 5줄 이상 출력해보기

  3. “올해 안에 이루고 싶은 것” 목록을 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

  1. 10.times3.times, 7.times로 바꿔 실행해보기

  2. 문장을 바꿔서,

- “나는 포기 안 한다”

- “조금씩이라도 매일 한다”  
    같은 문장을 최소 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. 1.upto(5)1.upto(10)으로 바꾸면 어떻게 되는지 실행해보기

  2. puts "*" * n 대신

    puts "" * n
    

    로 바꿔보기 (이모지도 된다!)

  3. 아래 형태도 스스로 만들어볼 것:

    #
    ##
    ###
    ####
    #####
    

    → 힌트: "*" 대신 "#" 사용


4단계: 조건문으로 ‘생각’을 코드에 심기

이제 조건(if) 프레임을 뇌에 올려보자.

조건은 “이럴 땐 이렇게, 저럴 땐 저렇게”라는 생각의 구조다.

4-1. 짝수 / 홀수 구분하기

1.upto(10) do |n|
  if n.even?
    puts "#{n}는 짝수입니다"
  else
    puts "#{n}는 홀수입니다"
  end
end
  • n.even? : n이 짝수면 true, 아니면 false

  • if ... 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

  1. study_times운동 시간으로 바꿔보기

    exercise_times = [10, 15, 20]  # 세 번 운동
    
  2. if 조건을 운동 기준으로 바꾸기

- 60분 이상: “오늘 헬린이 탈출 각”

- 30분 이상: “좋은 루틴 유지 중”

- 그 외: “그래도 누웠던 몸은 일어났다. 충분히 의미 있음”
  1. 완전히 새로운 주제로 바꿔보기
- “오늘 유튜브 만든 시간”

- “오늘 책 읽은 시간”

- “아이와 놀아준 시간”

6단계: “이게 다 루비온레일즈의 바닥이다”

지금 해본 것들은

사실 레일즈에서 이렇게 응용된다:

  • 배열 → DB에서 가져온 글 목록 (Post.all)

  • each 반복 → 글 리스트 화면에 제목 반복 출력

  • if 조건 → 로그인 되어 있으면 버튼 노출, 아니면 숨기기

  • 문자열 출력 → HTML 텍스트 렌더링

우리가 방금 만든 이 코드 조각들은

나중에 레일즈에서 이런 식으로 변한다:

@posts.each do |post|
  if post.published?
    puts post.title
  end
end

지금은 콘솔에 출력이지만,

조금만 확장하면 실제 웹서비스 화면이 된다.


마지막: 오늘, 당신은 이미 “코딩의 첫 맛”을 본 것이다

여기까지 따라 했다면,

당신은 이미 뇌 안에 이런 프레임들을 심었다.

  • 명령(출력)

  • 반복(times, upto, each)

  • 패턴(별 찍기)

  • 조건(if)

  • 데이터 구조(배열)

  • 작은 로직(공부 시간 합산기)

이건 그냥 문법 몇 개 익힌 수준이 아니다.

박문호 식으로 말하면,

“당신의 뇌에 새로운 구조적 사고 회로가 생성되었다.”