여행다니는 펭귄

[The beauty and joy of computing] Lists, Loops, and Higher Order Functions 을 배워보자 (by 스크래치, Snap!) 본문

The beauty and joy of computing

[The beauty and joy of computing] Lists, Loops, and Higher Order Functions 을 배워보자 (by 스크래치, Snap!)

핑구힝구 2019. 6. 28. 08:56

저번에 배웠던 데이터의 종류에 대해 다시 기억을 떠올려 보자.

List는 처음 보는 거 같은데?

- 그렇다면 List란 무엇일까?

 

0개 이상의 값들로 이루어 져 있는 순서가 있는 데이터들의 집합이다.

특징:

모든 유형의 데이터를 포함 가능하고 (List 포함) , 위 포함된 데이터들은 순서를 통해서 지정할 수 있다. 

List는 변경할 수 있다. ( 항목 수 , 색인 값 등)

 

 

이게 바로 리스트, 이렇게 생겼다.


 

- Control Flow 란 무엇일까?

 

프로그램이 실행되는 순서를 뜻한다.

특징:

한줄 한줄 쓴다고 한다. 

execution 이 procedure 에 도달한다면 우리는 (procedure 이 실행된다는 의미로 번역) , procedure 안에 있는 코드를 돌려야 한다. 아래 상황이 오기 전까지!

-> procedure에 더이상 돌릴 코드가 없을 때

-> execution이 report 했을 때

-> 블록이 자신이 호출 된 곳으로 돌아 갔을 때? 

Control Flow 중 if 문이다.

만약 If 안의 내용이 True 라면, 내용을 실행하고 False 라면 내용을 실행하지 않고 이 부분을 Skip 하고 다음 줄으로 넘어간다.

 

If else 문

만약 If 안의 내용이 True 라면, if 다음의 내용을 실행하고 False 라면 else 부분의 내용을 실행한다.

 

repeat until ~

안의 내용이 사실이 될 때 까지 코드를 반복한다. 그 후 넘어간다.

for I = 1 to 10

i를 첫번째 번호로 설정하고, 두번째 번호보다 작은 경우 반복해서 1을 더해준다. i 가 두번째 번호보다 크거나, 같아질 경우 이 코드를 넘어간다.

item

List 안의 모든 item에 대해 위 코드를 실행 한 후 더이상 item 이 없으면 다음 코드로 넘어간다.

 

 

문제1.

다음 중 어떤 것이 DATA 의 item 을 말하겠는가?

정답은 바로 E이다. 왜 그런지 모르겠으면, item (n) of DATA가 DATA 라는 List의 n 번째 item 이라는 걸 알았으면 좋겠다.

 


Higher-Order Functions

 

위 함수는 다음 중 둘 이상을 실행하는 함수입니다.

입력 (도메인)으로 함수를 가져옵니다. 함수 (범위)를 출력합니다.

 

Snap에서 사용하는 Higher-Order Functions는

Map,Keep,Combine이 있습니다.

 

Map

기존 List에 있는 모든 항목에 function을 적용합니다. 그렇게 새로운 List를 Report 합니다.

Keep

기존 List에 있는 모든 항목을 다음 조건문을 통해 걸러냅니다. 맞는 것들만 모아서 새로운 List를 Report 합니다.

Combine

안에 함수는 변수 입력의 순서가 바뀌어도 되는 것이 들어가며 아니면 작동을 하지 않는다,  그냥 모든 아이템에 대해 연속으로 함수를 적용하는 것이다. 예를 들어 곱셈을 하게 된다면 리스트 (a,b,c)에 대하여 a 곱 b 곱 c를 출력한다.

문제 2

정답은 D번!

higher function에 대해 더 자세한건 다음 시간에 배우도록 하겠습니다.


Summary

 

  • Lists are a new data type that let us group values in order ( Lists 란 새로운 데이터 타입으로 특정 값들을 순서대로 묶는 것입니다. )

  • Control flow allows for us to manage what parts of a program are executed and in what order ( Control flow는 우리에게 무엇을 실행할지 어떤 순서로 실행할지를 제어하게 해 줍니다. )

  • Map, Keep, and Combine are higher-order functions that work with lists (Map Keep Combine과 같은 higher order functions는 List와 함께 작동합니다. 모든 Higher-order function이 그러는건 아님!)

The actual implementations of Map, Keep, and Combine are below our level of abstraction