http://puravidaapps.com/snippets.php#2compass



스마트 폰의 해더 방향에 따라 각도가 달라 진다. 


스마트 폰 방향 북 0

동 90

남 180

서 270도 

1. 기초 코드

 

import random

n = random.randint(1, 30)

while True :
    x = input("맞춰 보세요.")
    g = int(x)

    if n == g :
        print("정답")
        break
    if g < n :
        print("너무 작아요")
    if g > n :
        print("너무 커요")

 

2. 알고리즘 - 찾기

38명이 있는 학급에서 임원을 3명 뽑는다. 3위안에 들기 위해서는 최소 몇표을 득표해야 하나 ? 


38/ 4 = 9 나머지 2


9+1 = 10 표 획득하면 3위안에 들 수 있다. 


당선이 확실히 되는 득표수는 


[모든 투표수 / ( 뽑히는 사람수 + 1 ) ] +1 


http://www.nhtimes.co.kr/news/articleView.html?idxno=24646



1. 완성 화면 




2. 프로그램 블록



참고 파일


소스 파일 


valid_vote.aia


실행 파일


valid_vote.apk


최대 공약수를 구해 봅시다. 


최대공약수란, 0이 아닌 두 정수나 다항식의 공통되는 약수 중에서 가장 큰 수를 말한다.


1. 두 숫자를 입력 받아 최대 공약수를 구해 봅니다. 



2. 최대 공약수 블럭


- 1에서 부터 두개의 값 중 작은 수 까지 나눠 나머지가 0 인경우가 최대 공약 수 입니다.




3. 첨부 파일 


gcm_calculate.aia


gcm_calculate.apk


앱인벤터로 주사위 확률 검증하기


6개의 숫자를 가진 주사위를 굴리면 어떤 특정한 숫자가 나올 확율은 1/6 이다. 


그러면 진짜로 그렇게 나오는지가 궁금해진다. 


사람이 100번을 던지는 건은 어렵다. 그러면 어떻게 해야 할까 ? 


컴퓨터나 핸드폰에 시키면 된다. 


1. 완성 화면 




2. 블럭 구성


- 리스트를 이용해서 결과 값을 저장한다. 


- 랜덤 함수를 이용해서 임의의 값을 찾아 낸다. 






3. 참고


- 1,000번 이상을 주사위를 둘려보면 거의 확율에 유사한 횟수가 나오는 것을 확인 할 수 있다.


4. 첨부 파일


ratio_dice.aia


ratio_dice.apk


5. 추가로 생각해보자


- 제비뽑기는 공정한가 ?



앞에서 살펴본 1에서 정해진 수까지 더하는 프로그램은 정해진 수가 커지는 경우 결과가 느려지는 문제가 있었습니다.


1에서 정해진 수까지 핸드폰이 계산을 했지만 1에서 정해진 수까지 돌면서 계산하는 거라 수가 커지면 느려졌습니다. 


가우스는 1에서 100까지를 쓴것 밑에 100에서 1을 거꾸로 써서 위아래의 수를 모두 더하면 101이 100번 나오므로 모두 더한 후 에 2로 나눠서 구한 방법을 이용해서 어린 나이에 계산을 했다 한다


일반적으로 1에서 100까지 구하는 문제를 푸는 방법은 


1      2     3      4     ..... 50

100    99   98    97    ....   51   


이런식으로 구성해서 계산을 하게 됩니다 


이런식으로 더하는 식을 구성하면 


 정해진 수 * ( 정해진 수 +1 )  / 2  = 값이 됩니다. 


이식을 프로그램해 보도록 하겠습니다. 





1에서 정해진 수까지 더하기 1에서는 30,000까지 더하는 경우도 많이 느려졌습니다. 그런데 이젠 300,000,000 까지 더하더라도 느려지지 않습니다. 


이러한 논리를 배우는 것이 프로그램이라고 할 수 있습니다. 


첨부 파일을 이용해서 테스트 해 볼 수 있습니다.


add_accu_2.aia


add_accu_2.apk


1에서 정해진 수까지 더하기 1


1 + 2 +3  + 4 +  ~~~ 으로 더한 값을 구하는 방법을 알아 보고자 한다. 


가장 간단한 방법은 사람이 더하듯이 핸드폰도 더하는 방식을 이용하면 된다.









치명적인 단점이 있다. 더하는 값이 많아 지는 경우 너무 오래 걸린다. 새로운 논리가 필요하다. 


첨부파일을 이용해서 테스트 해 보자.


add_accu.aia


add_accu.apk





첫번째 강의에서 입력창에 아무런 값을 넣지 않고 약수구하기 버튼을 누르면 에러가 났다.

 


이 문제를 개선해 보도록 하겠습니다.

 

 

 

 

1. 입력창에 숫자가 아닌 문자이거나 입력값이 없으면 메세지 보여주기

 

 is number 와 length 를 이용해서 숫자인지 문자가 입력되었는지 확인 한다.

 

 Notifier를 이용해서 화면에 메세지를 보여준다.

 

 

2. 결과

 

입력창에 입력 하지 않고 약수구하기 버튼을 누르면 숫자를 넣어주세요란 메세지를 보여준다.

 

 

 

3. 첨부 파일 


divisor_2.aia


divisor_2.apk


 

- aia 확장자 파일를 앱인벤터로 import 시켜서 소스 형태로 활용 할 수 있습니다.

 

- apk 확장자 파일은 안드로이디로 다운로드 받아 설치해서 앱을 실행시켜 볼 수 있습니다.

안드로이드에 약수를 구하는 프로그램을 만들어 보자.

 

 

1. 앱인벤터를 이용한 약수 구하기

 

약수란 : 어떤 수를 나누어 떨어지게 하는 수

 

가장 기초적인 약수구하는 방법은 1에서 주어지 수 까지 나눠서 나머지가 나오니 않는 수를 찾는 겁니다.

물론 숫자가 커지면 핸드폰도 계산이 느려집니다. 다음 강좌에서 더 효율적인 방법을 알아보도록 할 예정입니다.

 

30이라는 숫자를 입력 받으면 1부터 30까지 차례로 나눠서 나머지가 있는지 보고 나머지가 없는 숫자를 핸드폰 화면에 나타냅니다.

 

 

 

2. 결과 화면

 

 

3. 첨부 파일 import


divisor_1.aia


divisor_1.apk


- 첨부 파일을 다운 받아 import를 이용하여 소스를 내 프로젝트로 가져와 실행 해 볼 수 있습니다. 




+ Recent posts