PPT - 앱 인벤터 2
Download
Report
Transcript PPT - 앱 인벤터 2
PART 1
앱 인벤터 프로젝트
10 퀴즈 만들기와 퀴즈 풀기
데이터를 공유하는 앱
사용자가 문제를 생산
예) 선생님이 <퀴즈 만들기> 앱으로 문제를 만들어두면,
학생은 <퀴즈 풀기> 앱으로 문제를 풀어봄
예) 엄마가 <퀴즈 만들기> 앱으로 가족과 관련된 문제를
만들어두면, 자녀는 <퀴즈 풀기> 앱으로 문제를 풀어봄
이 장에서는 이처럼 서로 연동되는 두 개의 앱을 제작
데이터 공유를 위해 웹 데이터베이스에 데이터를 저장하는
TinyWebDB 사용
무엇을 만드는가?
<퀴즈 만들기> 앱의 기능
사용자는 입력 양식에 문제와 정답을 입력
문제-정답 쌍을 화면에 표시
문제와 정답을 웹 데이터베이스에 저장
<퀴즈 풀기> 앱의 기능
8장의 <대통령 알아맞히기> 앱과 비슷
다른 점은 문제를 웹 데이터베이스에서 가져
온다는 사실
무엇을 배우는가?
정적 데이터와 동적 데이터
8장의 <대통령 알아맞히기>는 정적 데이터를 다룸
• 문제와 정답이 블록에 고정되어있음 이런 방식을 하드코딩이라 함
• 앱을 여러 번 사용해도 문제 집합이 같음
뉴스, 블로그, 페이스북, 트위터 앱은 시간에 따라 데이터가 변하는 동적 데이터
• 사용자가 데이터를 생산해냄
• 앱은 사용자에게 정보 입력, 수정, 공유 기능을 제공함
• 동적 데이터를 처리하려면 list를 사용해야 함 (예, 9장의 <실로폰> 앱)
무엇을 배우는가?
<퀴즈 만들기>와 <퀴즈 풀기> 앱을 만들면서 배우는 것들
사용자가 데이터를 입력하는 입력 양식
for each 블록과 색인 변수를 사용하여 여러 리스트의 항목에 접근
데이터 영구 저장
• <퀴즈 만들기>는 문제와 정답을 웹 데이터베이스에 저장하고
• <퀴즈 풀기>는 데이터베이스에서 문제와 정답을 가져옴
데이터 공유
• TinyWebDB 컴포넌트를 이용하여 데이터를 웹 데이터베이스에 저장
컴포넌트 설계
컴포넌트 설계
TinyWebDB의 ServiceURL 속성 설정
http://appinvtinywebdb.appspot.com
MIT 앱 인벤터 팀이 제공하는 기본 웹 데이터베이스 서비스
• 전 세계 앱 인벤터 프로그래머가 같이 사용하기 때문에 다른 사람이 검색해 볼 수 있고
덧씌워질 수도 있음 테스트 단계까지만 사용해야 함
앱을 공개할 시점에는 자신만의 웹 데이터베이스를 구축
• 특별한 프로그래밍 지식이 없어도 쉽게 구축 가능하고 무료임
• http://appinventor.chonbuk.ac.kr “웹데이터베이스구축.pdf” 문서 참조 또는 22장 참조
문제와 정답을 저장할 빈 리스트 만들기
문제와 정답을 저장할 두 개의 리스트
미리 내용을 지정하지 않기 때문에 make a list 대신 create empty list 블록을 사용
나중에 사용자가 문제와 정답을 만들어 주면 그때 add items to list 블록을 이용하여
항목 추가
사용자가 입력한 문제와 정답 추가하기
프로그램은 어떻게 작동하는가?
사용자가 텍스트 박스에 문제와 정답을 입력하고 [제출] 버튼을 누르면
SubmitButton.Click 이벤트 발생
• 먼저 add items to list 블록으로 텍스트 박스에 있는 내용을 list에 추가함
• QuestionList와 AnswerList 내용을 join으로 결합하여 레이블에 표시해줌
텍스트 박스를 깔끔하게 비우기
문제와 정답 쌍을 한 줄씩 표시하기
for each in list 블록을 이용한 처리 과정
문제와 정답 쌍을 한 줄씩 표시하기
for each from to by 블록을 이용한 또 다른 코드
문제와 정답을 웹에 영구 저장하기
앱을 껐다 켜면
만들어두었던 데이터가 모두 사라짐 리스트 변수는 단기 메모리
4장과 7장에서 사용했던 TinyDB를 사용하면
TinyDB는 데이터를 폰 메모리에 저장함
<퀴즈 만들기> 앱과 <퀴즈 풀기> 앱이 데이터를 공유하지 못함
TinyWebDB
데이터를 웹에 저장함
서로 다른 사용자 간에 데이터 공유가 가능
클라우드 방식
문제와 정답을 웹에 영구 저장하기
프로그램은 어떻게 작동하는가?
사용자가 문제와 정답을 입력하고 [제출] 버튼을 누를 때마다 웹데이터베이스에 저장
태그와 값 쌍으로 저장
문제와 정답을 웹에 영구 저장하기
데이터베이스에서 데이터 검색
프로그램은 어떻게 작동하는가?
TinyWebDB: GetValue로 데이터를 요청해 놓은 다음 GotValue로 받는 두 단계 방식
실제 리스트 데이터가 온 경우와 빈 데이터가 온 경우를 if-then으로 처리
데이터를 받았다면 도착한 데이터가 문제인지 정답인지를 if-then-else로 처리
두 리스트가 모두 도착한 다음에야 displayQAs를 호출하여 화면에 표시해줌
<퀴즈 만들기>의 전체 앱 프로그램
<퀴즈 만들기>의 전체 앱 프로그램
<퀴즈 풀기> 앱
사용자 인터페이스 화면 (8장의 <대통령 알아맞히기>와 비슷)
<퀴즈 풀기> 앱
빈 리스트 만들기
앱이 시작할 때, 데이터베이스에 데이터 요청하기
<퀴즈 풀기> 앱
GotValue 이벤트 처리기 코딩
데이터베이스에서 데이터를 받았을 때
• 문제 (questions 태그)이면 첫 번째 문제를 화면에 표시해줌
• 정답 (answers 태그)이면 두 버튼의 Enabled 속성을 true로 설정하여 사용자가 정답을 입력할 수
있게 함
<퀴즈 풀기> 앱
나머지 프로그램
다음 문제로 넘어가는 NextButton.Click
사용자 입력이 정답인지 확인해주는 AnswerButton.Click
8장의 <대통령 알아맞히기>와 똑같으므로 코드를 복사해다 사용
<퀴즈 풀기> 전체 앱 프로그램
<퀴즈 풀기> 전체 앱 프로그램
확장해 보기
감사합니다.