1. 블록 프로그래밍에서 텍스트 프로그래밍으로 옮겨타기 1

스크래치와 같은 블록(Block) 프로그래밍 언어에서 파이썬과 같은 텍스트(text) 프로그래밍 언어로 옮겨타야 하는 이유는 여러가지가 있다. 스크래치와 같은 블록 프로그래밍 언어가 재미있고 사용하기 간단하고 누구나 접근 용이성이 있는 것은 사실이다. 하지만 새로운 언어를 배우는 것이 매우 고통스럽지만 그럼에도 불구하고 텍스트 프로그래밍을 학습해야 하는 이유는 실제 세상과 의사소통을 하는데 텍스트 프로그래밍 언어가 많이 사용되기 때문이다. 그리고, 블록 프로그래밍에서 불가능한 것이 텍스트 프로그래밍에서는 매우 쉽게 구현될 수 있는 것도 큰 이유가 된다.

따라서, 텍스트 프로그래밍으로 넘어가는 것은 정답인데 너무 빨리 입문하게 되면 프로그래밍 자체를 버려버릴 수도 있고, 너무 늦게 입문하게 되면 새로운 언어를 학습하는 것에 주저할 수 있다. 적절한 시점에 스크래치와 같은 블록 프로그래밍 언어에서 파이썬과 같은 텍스트 프로그래밍을 시작하는 과정이 필수적으로 생각된다.

2. 스크래치 파이썬 구문 비교

2.1. 변수선언

  • 오랜지 색상: 스크립트데이터변수 만들기

변수를 선언하여 값을 저장하여 다시 꺼내서 사용하는 경우 스크래치 블록을 사용하는 경우와 파이썬 코드로 작성한 경우가 다음과 같이 비교된다.

변수 설정

foo = 10
bar = "친구"

2.2. 변수값 증가

  • 오렌지 색상: 스크립트데이터변수 만들기

변수값을 1씩 증가 시키거나 감소시키는 경우 다음과 같이 블록을 사용하였으나 파이썬에서는 변수명에 1을 더하는 방식으로 프로그래밍한다.

값 1만큼 증가

foo = foo + 1 
# 혹은
foo += 1 

2.3. 단순 출력

  • 보라색 색상: 스크립트형태

프로그램 실행결과를 확인하는 가장 기초적인 방법이 화면에 찍어보는 것이다. 이를 위해서 텍스트 원문을 찍기도 하고 변수에 넣었던 값을 화면에 찍기도 한다.

출력

print('안녕!')
print(foo)

2.4. 조건 반복문

  • 겨자색 색상: 스크립트제어

앞서 bar 변수에 값을 설정한 후에 bar값이 10보다 클 때까지 겨자색 내부에 쌓인 블록을 실행하는데 bar 변수값을 초기 1에서 반복이 1회 될때마다 1씩 증가시키고 그 값을 말하기로 출력시키는 프로그램을 파이썬으로 작성한다.

출력

bar = 1
while not bar > 10:
    bar += 1
    print(bar)
2
3
4
5
6
7
8
9
10
11

2.5. 무한 반복문

  • 겨자색 색상: 스크립트제어

무한 반복문을 구현하는 방식은 스크래치에서 무한 반복하기 (forever) 블록을 사용하는 반면 파이썬에서는 while 문에 조건식을 True로 설정하면 된다.

무한반복

while true:
    bar += 1
    print(bar)

2.6. 조건 선택

  • 겨자색 색상: 스크립트제어

스크래치는 조건 선택을 위한 두가지 블록을 가지고 있고, 만약 그 이상의 다중선택이 필요한 경우 블록 내부에 중첩하여 사용한다. 파이썬은 if, elif, else를 조합해서 사용한다.

2.6.1. 단순 조건 선택

조건부 선택 01

bar = 11
if bar > 10:
    print("bar는 10 보다 크다.")
bar는 10 보다 크다.

2.6.2. 둘중 한가지 조건 선택

조건부 선택 01

bar = 5
if bar > 10:
    print("bar는 10 보다 크다.")
else:
    print("bar는 10 보다 작거나 같다")
bar는 10 보다 작거나 같다

2.6.3. 둘가지 이상 조건 선택

조건부 선택 01

bar = 10
if bar > 10:
    print("bar는 10 보다 크다.")
elif bar < 10:
    print("bar는 10 보다 작다")
else:
    print("bar는 10이다")
bar는 10이다

2.7. 동일함 평가

  • 연두색 색상: 스크립트연산

연산 블록에서 =을 동일함 평가를 위해서 사용하는데, 파이썬에서는 =이 변수에 값을 할당하는 연산자로 사용되어서 == 을 동일하다는 것을 평가하는데 사용한다.

동일함 평가

bar = 9
bar == 10
print(bar == 10)
False

2.8. 리스트(list)

  • 오렌지 색상: 스크립트데이터리스트 만들기

스크래치에서는 변수생성하는 방식과 동일하게 리스트를 생성시킬 수 있다.

동일함 평가

movies = ['superman', 'batman', '실미도', '건축학개론', '마법의성']
print(movies)
['superman', 'batman', '실미도', '건축학개론', '마법의성']

2.8.1. 리스트(list) 항목추가

스크래치에서 리스트 항목 추가할 때 리스트 만들기 블록을 사용한다. 파이썬에서 리스트 객체에 append() 메쏘드를 사용해서 리스트 원소를 추가시킨다.

리스트 항목추가

movies.append('바람과 함께 사라지다')
print(movies)
['superman', 'batman', '실미도', '건축학개론', '마법의성', '바람과 함께 사라지다']

2.8.2. 리스트(list) 항목 제거

스크래치에서 리스트 항목 추가할 때 리스트 만들기 블록을 사용한다. 파이썬에서 리스트 객체에 pop() 메쏘드를 사용해서 리스트 원소를 제거한다.

리스트 항목제거

movies.pop(0)
print(movies)
['batman', '실미도', '건축학개론', '마법의성', '바람과 함께 사라지다']

2.9. 랜덤(random) 무작위

  • 연두색 색상: 스크립트연산

난수 블록을 선택하여 랜덤(random) 무작위 난수를 발생시킬 수 있다. 즉, 1부터 10 사이 난수를 무작위로 발생시킬 수 있는데, 파이썬에서는 random 모듈을 사용한다.

난수

from random import randint
bar = randint(1,10)
print(bar)
9

2.9.1. 리스트 목록 중 랜덤(random) 무작위 선택

  • 연두색 색상: 스크립트연산

리스트에 저장된 항목을 동일한 방식으로 무작위 추출을 할 수 있다. 먼저 변수를 지정하고 나고, 지정된 변수에 무작위로 추출할 항목을 movie 리스트에서 뽑아내서 이를 말하기로 출력한다.

파이썬에서는 random 모듈에서 choice 함수로 무작위 영화를 하나 추출시킨다.

난수

from random import choice
movie = choice(movies)
print(movie)
바람과 함께 사라지다

2.10. 문자열 붙이기

  • 연두색 색상: 스크립트연산

연산에서 결합하기 블록을 선정하여 두 문자열을 결합시킨다. 파이썬에서는 + 연산자가 간단히 그 역할을 대신 수행한다.

문자열 붙이기

translate = "Hello World" + "안녕세상"
print(translate)
Hello World안녕세상

2.11. 색인 찾기(indexing)

  • 연두색 색상: 스크립트연산

리스트에 저장된 항목을 색인(index)을 활용하여 추출해낼 수 있다. 먼저 변수를 지정하고 나고, 색인을 지정하여 movie 리스트에서 뽑아내서 이를 말하기로 출력한다.

파이썬에서 -1 으로 색인값을 지정하면 리스트의 가장 마지막 항목이 추출된다.

문자열 붙이기

print(movies[-1])
바람과 함께 사라지다

2.12. 입력값 받기

  • 하늘색 색상: 스크립트감지

감지에서 묻고 기다리기 블록을 선택하여 사용자가 입력한 값을 변수에 저장하고 이를 프로그램에서 사용한다.

입력

movie = input("어떤 영화를 보셨나요?")

2.13. 도전과제

파이썬 프로그램으로 작성된 코드를 스크래치 블록 프로그래밍 언어로 변환시킨다. 이름을 묻고 이름을 입력받아 반갑다는 인사를 건내는 프로그램과 나이를 물어보고 나이를 바탕으로 태어난 연도를 계산해내는 프로그램이다.

입력

name = input("이름이 뭐꼬?")
print("안녕. " + name + "아 만나서 반가워^^;")
age = input("나이가 몇살이남?")
age = int(age)
print("태어난 연도가 "+ str(2017 - age))