소프트웨어코딩

소프트웨어코딩 03 제어

오미자컴 2022. 3. 10. 00:56

복잡한 코딩을 하려면 어떤 방법을 써야 하나요?

논리 연산을 합니다. 조건과 반복에서 이용합니다.

논리 연산?

복수의 조건을 조합해 더욱 복잡한 조건을 나타낼 수 있습니다

그리고(교집합), 또는(합집합), ~가 아니다(조건 빼고 나머지).

키가 120cm 이상이고 몸무게가 90kg 미만인 사람

 

논리 연산의 예

논리 연산 코딩

복잡한 코딩에서 필요에 따라 처리의 흐름을 바꿀 경우 어떤 방법을 써야 하나요?

조건 블록을 사용합니다

 

조건 코딩의 예

 

조건 코딩

 

조건이 성립하지 않는 경우에도 처리를 해주고 싶으면 어떻게 해야 하나요?

만약 이라면 ~ 아니면 ~’ 블록을 사용합니다

처리해 주어야 할 목록이 더 많으면 조건 블록을 중첩하여 사용합니다

) 만약 대답이 60보다 큰 경우, 대답이 100점이면 만점입니다라고 2초 동안 말한다.대답이 100점이 아니면 어떻게 만점이겠어요!”라고 2초 동안 말한다.점수가 60점 이하라면 괜찮아요 다음에 우리 분발해 봐요~”라고 2초 동안 말한다.

 

여러 조건 코딩의 예

 

숫자 맞추기 게임을 만들려면 어떻게 해야 하나요?

사용자가 고양이가 1에서 99 사이에 생각해둔 숫자를 입력하도록 합니다

정답변수를 만들고 1에서 99 사이의 난수로 정합니다. 정답이 생각해둔 숫자입니다.

고양이는 사용자가 입력한 숫자가 생각해둔 숫자보다 큰지 작은지 말해줍니다. 7번 반복합니다.

맞추면 축하하는 말을 하고 프로그램을 멈춥니다

7번 안에 못 맞추면 다음 기회에 다시 해보라는 말을 하고 프로그램을 멈춥니다

 

숫자 맞추기 게임 코딩

 

천자문을 조건에 맞추어 공부하는 코딩을 하려면 어떻게 하나요?

오늘 날짜를 말하게 하고

시작일 변수를 만들고 시작일을 ‘2000년 이후 현재까지 날짜 수로 정합니다

날짜리스트를 만들고, 변수 시작일을 여기에 추가합니다

한자리스트를 만들고, 여기에 천자문 텍스트 문서를 불러옵니다

매일 4개 항목씩(16글자) 공부하고, 어제 학습한 한자를 복습하고, 1주일 전에 익힌 한자를 복습합니다.

 

천자문 공부하는 코딩 개요

처음에 초기화 하려면 영문자 a키를 누르세요.

매일 천자문을 16자씩 새로 공부하고,

어제 공부한 천자문을 복습하고,

1주일 전에 공부한 천자문을 익힙니다. 1주에 5번만 공부합니다.

하루 한 번 130, 3개월이면 다 공부합니다.

이 파일을 컴퓨터에 저장한 것으로 자신만의 진도를 나가면 됩니다.

스페이스바를 누르면 천자문을 다 외웁니다. 30분 걸립니다.

 

오늘 날짜를 어떻게 말하게 하나요?

블록 코딩이 너무 길고 복잡한데 다소 간략하게 하는 방법은 없나요?

변수를 만들고 이를 활용합니다.

변수 시작일을 ‘2000년 이후 현재까지 날짜 수로 정하는 이유는요?

공부를 시작하는 날을 숫자로 날짜 리스트에 추가하고자

천자문 공부 코딩 1

한자 리스트에 천자문을 쉽게 입력하는 방법은 없나요?

인터넷 검색으로 천자문을 찾아 텍스트 파일로 만듭니다

한 줄에 4글자씩 입력합니다

한자 리스트에서 가져옵니다

실습 자료 :

천자문list.txt
0.01MB

 

오늘의 천자문을 공부하려면 어떻게 해야 하나요?

한자 리스트에서 첫번째 항목부터 불러오려면?

날짜 리스트 길이, 순서를 나타내는 숫자, 인덱스 변수를 활용해야 합니다

오늘 공부하는 날짜는 기본적으로 리스트에 하나 추가하므로 그 길이가 무조건 1이고, 오늘 4개를 공부하므로, 한자 리스트에서 첫번째 항목을 가져오러면?

날짜의 길이가 이미 1이므로 첫번째 항목을 가져오려면 0을 더해야 합니다

두번째 항목은?

날짜의 길이인 11을 더해 2가 되어야

 

인덱스 변수는 왜 필요한가요?

어제 공부한 내용을 복습할 때 필요합니다

인덱스 변수를 매일 3씩 증가시켜 주어야 합니다

왜요?

매일 그 날의 날짜 리스트가 하나씩 늘어나므로 기본적으로 날짜 리스트의 길이가 하나 추가되어, 둘쨋날의 날짜 길이는 2가 됩니다. 매일 4개 항목씩 공부하는데 기본적으로 날짜 길이가 하나씩 늘어나므로 인덱스 변수는 3을 증가시켜 주어야 합이 4가 됩니다.

어제 내용, 그리고 1주전 내용을 불러오려면 인덱스 변수를 기준 삼아 필요한 한자 리스트 항목을 뽑아내야 합니다

 

한자 리스트의 첫 번째 항목 말하려면?

천자문 공부 코딩 2

인덱스 변수의 처음 값은 기본적으로 0입니다.

 

어제 공부한 천자문을 복습하려면 어떻게 해야 하나요?

어제 공부한 내용이 있으려면, 최소한 날짜의 길이가 2가 되어야 합니다. 그리고 오늘 공부했기에 인덱스는 6이 되어 있습니다(어제 3 + 오늘 3).

어제 공부한 항목은 오늘 공부한 항목보다 일곱 항목을 앞으로 거슬러 올라가야 합니다.

즉 어제 첫번째로 공부한 항목이 한자 리스트의 1번 항목입니다. 그러니까 답이 1이 나와야 하는데, 지금 날짜의 길이 2, 인덱스 숫자 6이므로 7을 빼야 답이 1이 됩니다.

 

어제 공부한 항목으로 가기

 

어제 공부한 항목으로 가기

천자문 공부 코딩 3

1주일 전에 공부한 내용을 복습하려면 어떻게 해야 하나요?

1주일에 5일만 공부한다고 했을 경우, 1주일 전에 공부한 내용을 복습하려면 최소한 6일째가 되어야 합니다. 논리식으론 날짜의 길이가 5보다 커야 합니다.

날짜의 길이 6 + 인덱스 숫자 18(3*6)24가 됩니다.

6일째의 1주일 전은 1일째이므로 복습할 항목은 1이 되어야 하므로, 23을 빼주어야 합니다.

 

천자문 공부 코딩 4

키보드에서 a 키를 누르면 처음부터 다시 천자문을 공부하도록 하려면 어떻게 해야 하나요?

‘A키를 눌렀을 때이벤트 블록을 사용하여 인덱스 변수를 0으로, 날짜 리스트의 모든 항목을 삭제합니다

천자문 함수 코딩

반복하는 방법은 어떤 것이 있나요?

횟수를 정하기 : 같은 처리를 정해진 횟수만큼

이중 루프 : 반복 처리(루프) 안에서 다시 반복 처리를 추가할 수도 있습니다.

조건이 참이 될 때까지 반복하기 : ‘까지 반복하기제어 블록

선을 그리려면 어떻게 해야 하나요?

확장 기능을 추가합니다.

창 왼쪽 아래에 있는 확장 기능 추가하기단추 클릭 후 여러 확장 기능 중 을 클릭

 

반복 블록을 안 쓴 경우

 

횟수 반복 블록을 사용한 경우

사각형을 40도씩 방향을 바꾸면서 한 바퀴만큼 그리려면 어떻게 해야 하나요?

9번 반복합니다. ?

한 바퀴인 360도 나누기 40도는 9이므로

길이가 100인 직선 그리기를 90도씩 방향을 바꾸면서 4번 반복해 사각형을 그립니다. 이 반복을 다시 9번 합니다. 이중 루프.

 

이중 루프 코딩

조건이 참이 될 때까지 반복하기 천자문 공부 코딩 5

 

테니스 공이 y좌표가 -50이 될 때까지 y좌표를 -10 바꾸고 0.3초 기다리는 처리를 하려면?

이 코딩은 디버깅이 필요합니다. 왜 테니스공이 y좌표 -50에서 멈추지 않을까요?

10 단위로 y좌표를 움직이므로 처음 y좌표가 10단위로 되어야 합니다. ) 110

또는 조건을 바꾸어 -50보다 작아질 때까지로

 

마우스를 클릭하면 테니스 공이 마우스 위치로 오게 하려면 어떻게 해야 하나요?

마우스를 클릭하면 테니스 공이 마우스 위치로 오게 하려고 조건 블록을 사용했는데 왜 제대로 작동하지 않나요?

계속적으로 마우스를 클릭했는지 반복하여 살피고 있어야 제대로 작동하므로, 무한 반복 블록을 써야 합니다.