안녕하세요. 이지이지입니다.
이번 포스팅을 시작으로, 앱인벤터 강좌를 하나씩 올리고자 합니다.
저 스스로 앱인벤터로 앱을 만들어가며, 어려웠거나 유용하게 사용했던 부분들을 위주로 최대한 쉽게 설명해보도록 하겠습니다.
그럼 그 첫 번째 시간 리스트(List) 블록에 대해 알아보도록 하겠습니다.
리스트란(List)? |
- 리스트는 유사한 항목의 집합으로 볼 수 있습니다.
- 예를 들어, 과일이라는 리스트를 만들고 그 항목으로 [사과, 바나나, 배, 수박]을 넣을 수 있습니다.
- 각 항목 하나하나를 따로 저장해두면 저장공간도 많이 차지하고, 찾기도 어려워지며 나중에 어떤 내용을 넣어두었는지 알기가 힘이 듭니다. 그래서 리스트에 유사한 항목을 함께 넣어두는 것이고, 다른 컴포넌트나 블록들과 함께 사용하기 위해 리스트를 사용합니다.
- 앱인벤터에서 리스트 항목은 대괄호[ ]안에 저장이 됩니다. ex.) [리스트1, 리스트2, 리스트3]
- 리스트의 항목은 처음에 지정해도 되지만, 나중에 추가, 삭제, 수정 등을 할 수 있습니다.
리스트 블록 |
빈 리스트를 생성하는 블록입니다.
- 빈 리스트는 리스트 안에 몇 개의 항목이 들어갈지 정확히 어떤 값이 들어갈지 모를 때 사용합니다.
리스트를 만드는 블록입니다.
- 보통 리스트에 들어가는 항목을 알고 있을 때 사용합니다.
- 좌측 상단의 톱니바퀴를 눌러 리스트에 들어갈 항목을 더 추가하거나 삭제할 수 있습니다.
- 리스트 안에 하위리스트를 넣을 수도 있습니다.
변수 students에는 ["홍길동","김유신","이순신"]이 저장됩니다.
변수 grade에는 [["홍길동","김유신","이순신"],[70,90,80]]이 저장됩니다.
대괄호의 개수를 잘 보시기 바랍니다.
기존의 리스트에 항목을 추가하는 블록입니다.
- add items to list: 리스트에 항목을 추가하라 (블록의 기능)
- list: 항목을 추가할 리스트 이름
- item: 추가할 항목
위에서 만들어 보았던 변수 students에 "장보고"가 추가되어,
변수 students에는 ["홍길동","김유신","이순신","장보고"]가 저장됩니다.
어떤 항목이 어떤 리스트에 있는지 알아보는 블록입니다.
- is in list?: 어떤 항목이 리스트에 들어있는가? (블록의 기능)
- thing: 검색할 항목
- list: 검색대상이 되는 리스트
- 만약 검색 항목이 리스트에 포함되어 있다면 true를, 포함되어 있지 않으면 false로 결과를 돌려받습니다.
위에서 만들었던 변수 students ["홍길동","김유신","이순신","장보고"]에는
"김유신"이 포함되어 있으므로 true를 결과로 돌려받습니다.
리스트의 항목의 개수(length)를 알아내는 블록입니다.
변수 students에는 현재 4개의 항목이 있으므로 4가 반환됩니다.
변수 grade는 하위리스트 두 개를 포함하고 있으므로 이 경우에는 하위리스트의 개수인 2가 반환됩니다.
grade: [["홍길동","김유신","이순신"],[70,90,80]]
리스트가 빈 리스트인지 알아보는 블록입니다.
- 리스트가 빈 리스트(아무런 항목도 없는 경우)라면 true를 반환하고, 빈 리스트가 아니라면 false를 반환합니다.
리스트 항목 중에서 랜덤으로 항목 중 하나를 가져오는 블록입니다.
어떤 항목이 리스트내에서 몇 번째 위치하고 있는지 알아내는 블록입니다.
- incex in list: 리스트에서 위치를 구하라. (블록의 기능)
- thing: 검색할 항목
- list: 검색 대상이 되는 리스트
변수 students ["홍길동","김유신","이순신","장보고"] 에서,
"김유신"의 위치는 두 번째 이므로, 2를 결과로 받게됩니다.
주어진 리스트에서 주어진 위치에 있는 항목을 가져오는 블록입니다.
- select list item: 리스트의 항목을 가져오라. (블록의 기능)
- list: 항목을 가져 올 대상이 되는 리스트
- index: 가져 올 항목의 리스트내 위치
변수 students ["홍길동","김유신","이순신","장보고"]에서 2번째 항목인 "김유신"을 결과로 돌려받습니다.
리스트에서 주어진 위치에 항목을 삽입합니다.
- insert list item: 리스트에 항목을 삽입하라. (블록의 기능)
- list: 항목을 삽입할 대상이 되는 리스트
- index: 항목을 삽입할 위치
- item: 삽입할 항목
- 항목이 삽입되면, 기존에 있었던 항목부터 그 뒤의 위치의 항목들은 위치가 1씩 밀려납니다.
예를 들어 10번 항목에 새로운 항목이 추가되면, 기존의 10번 항목은 11번으로, 11번 항목은 12번으로 밀려나게 됩니다.
변수 students ["홍길동","김유신","이순신","장보고"]에서 2번째 위치에 "손흥민"이 추가되면,
변수 students는 ["홍길동","손흥민","김유신","이순신","장보고"]이 됩니다.
리스트의 주어진 위치에 있는 항목을 새로운 항목으로 대체하는 블록입니다.
- replace list item: 리스트의 항목을 대체하라. (블록의 기능)
- list: 대체할 항목이 있는 리스트
- index: 대체할 항목의 리스트내 위치
- replacement: 새로 입력될 항목
변수 students ["홍길동","손흥민","김유신","이순신","장보고"]의 두 번째 항목 "손흥민"을 "박지성"으로 대체하게 되어,
변수 students는 ["홍길동","박지성","김유신","이순신","장보고"]가 됩니다.
리스트에서 주어진 위치에 있는 항목을 삭제하는 블록입니다.
- remove list item: 리스트에서 항목을 삭제하라. (블록의 기능)
- list: 삭제할 항목이 있는 리스트 이름
- index: 리스트에서 삭제할 항목의 위치
변수 students ["홍길동","박지성","김유신","이순신","장보고"]의 2번째 항목인 "박지성"을 삭제하므로,
변수 students는 ["홍길동","김유신","이순신","장보고"]가 됩니다.
리스트1에 리스트2의 항목 모두를 덧붙이는 블록입니다.
- append to list: 리스트에 덧붙여라. (블록의 기능)
- list1: 항목이 추가될 리스트
- list2: 추가될 항목이 있는 리스트
- list1에 항목이 덧붙여지며, list2는 그대로 남아있게 됩니다.
list1인 변수 students ["홍길동","김유신","이순신","장보고"]에 list2 ["손흥민","박지성"]을 더하게 되어,
변수 students는 ["홍길동","김유신","이순신","장보고","손흥민","박지성"]이 됩니다.
리스트를 복사하는 블록입니다.
- copy list: 리스트를 복사하라. (블록의 기능)
- list: 복사 대상이 되는 리스트 이름
어떤 항목이 리스트인지 알아보는 블록입니다.
- is a list?: 리스트가 맞는가? (블록의 기능)
- thing: 리스트인지 아닌지 알아볼 내용
- 만약 리스트가 맞다면 "true"를 리스트가 아니라면 "false"를 반환합니다.
변수 students는 리스트가 맞으므로 "true"를 반환받게 됩니다.
리스트를 1행의 csv형식(콤마로 값이 분리)으로 변환시키는 블록입니다.
- list to csv row: 리스트를 csv형식으로 변환시켜라. (블록의 기능)
- list: csv형식으로 바꿀 리스트 이름
변수 students는 리스트 형식으로 ["홍길동","김유신","이순신","장보고","손흥민","박지성"]이 들어있습니다.
변수 csvStudents에는 "홍길동","김유신","이순신","장보고","손흥민","박지성" 처럼 콤마로 분리된 텍스트로 저장됩니다.
리스트를 여러 행의 csv형식(콤마로 값이 분리)으로 된 표로 바꿉니다.
- list to csv table: 리스트를 여러 행을 가진 csv형식의 표로 바꾸어라. (블록의 기능)
- list: csv형식의 표로 바꿀 리스트 이름
- 보통 하위리스트를 포함한 리스트를 사용합니다.
- 각각의 하위리스트는 하나의 행을 이루게 됩니다.
원래 리스트는 [["이순신","장보고"],[90,80]]으로 만들어 질 것입니다.
이것을 다시 csv table로 바꾸게 되면
"이순신","장보고"
90,85
위와 같은 결과를 반환받게 됩니다.
csv(콤마로 값이 분리) 형식으로 된 1행짜리 텍스트를 리스트 형식으로 만드는 블록입니다.
- list from csv row: csv형식으로 된 1행짜리 텍스트를 리스트로 만들어라. (블록의 기능)
- text: list로 만들 텍스트
- 엑셀이나 구글 스프레드시트에서 데이터를 가져올 때 유용하게 사용됩니다.
위 블록과 아래 블록에서 변수 students에는 모두 같은 값이 들어가게 됩니다.
list from csv row 블록을 이용해서 이렇게 좀 더 간편하게 리스트를 만들 수 있습니다.
데이터가 표처럼 여러 행으로 되어 있고, csv형식으로 이루어진 텍스트를 리스트로 만드는 블록입니다.
- list from csv table: csv형식으로 된 텍스트 표를 리스트로 만들어라. (블록의 기능)
- text: 리스트로 만들 텍스트
- 리스트는 텍스트의 줄 개수만큼 하위리스트를 가지게 됩니다.
- 엑셀이나 구글 스프레드시트에서 데이터를 가져올 때 유용합니다.
위 블록에서 텍스트는 \n(줄바꿈 기호)로 연결되어 두 줄로 되어 있습니다.
따라서 하위리스트가 2개인 [["이순신","장보고","홍길동","김유신","을지문덕"],["A","B","C","D","E"]] 리스트가 만들어집니다.
리스트 안에서 키와 쌍을 이루고 있는 값을 찾는 블록입니다.
- look up in pairs: 쌍에서 값을 찾아라. (블록의 기능)
- key: 찾을 값과 쌍을 이루고 있는 키
- pairs: 키가 포함되어 있는 리스트
- notFound: 키가 없을 경우 반환할 텍스트
- pairs는 반드시 하위리스트가 있는 리스트 형식이어야 하며
- 하위리스트는 반드시 두 개의 항목으로 이루어져 있어야 합니다.
- 하위리스트 안에 있는 두 개의 항목에서 첫 번째 항목은 키가, 두 번째 항목은 값이 됩니다.
위 블록의 리스트는 [["a","apple"],["b","banana"],["c","chocolate"],["d","doughnut"]]으로 이루어져 있습니다.
각 하위리스트의 첫 번째 항목인 a, b, c, d, e는 키가 되며,
두 번째 항목인 apple, banana, chocolate, doughnut는 값이 됩니다.
그래서 키를 c로 하면, 값인 chocolate가 결과로 반환되게 됩니다.
구분자를 사용하여 리스트에 있는 항목들을 하나로 연결하고 텍스트로 반환하는 블록입니다.
- join items using separator: 구분자를 사용하여 항목을 연결시켜라. (블록의 기능)
- list: 항목이 있는 리스트
위 블록에서 구분자를 _(언더바)로 하였기 때문에,
이순신_홍길동_강감찬 이라는 텍스트가 반환됩니다.
이상 앱인벤터 리스트 블록에 대한 포스팅을 모두 마치도록 하겠습니다.
리스트는 앱인벤터에서 여러모로 정말 많이 사용되는 블록이니 반드시 확실한 이해가 필요합니다.~~
댓글