[소프트웨어교육] 알고리즘 교사 연수 자료
DESCRIPTION
광주_전남 지역 초/중/고 교사분들을 대상으로 한 소프트웨어 교사 연수중 알고리즘 파트 부분입니다. Computational Thinking의 핵심인 알고리즘을 다양한 예를 들어 쉽게 설명하고자 애썼습니다. SW교육을 하시는 분들께 도움이 되길^^;TRANSCRIPT
1) govote.at 접속
2) 79 26 93입력
3) 설문 문항 ‘2문항’ 응답하기
목차
02 알고리즘 살펴보기 2-1 알고리즘 살펴보기
03 알고리즘 표현하기 3-1 다양한 알고리즘 표현법
3-2 순서도로 표현하기
01 SW교육 단계와 도구 소개 1-1 SW교육 이란?
1-2 SW교육 단계와 도구 소개
04 알고리즘 만들고 실행하기 4-1 알고리즘 만들어 보기
4-2 엔트리를 통한 알고리즘 시뮬레이션
05 도구를 이용한 알고리즘 학습 5-1 Code.org를 통한 알고리즘 학습
5-2 보드게임을 통한 알고리즘 학습
SW교육 단계와 도구 소개 01
SW교육 이란? 1-1
SW교육 이란? 1-1
SW교육 이란? 1-1
SW교육에 대한 오해들
왜 SW교육을 하는가?
상상력 창의력
논리적사고 문제해결능력
Computational Thinking
=
1) 생각한 것을 표현하는 도구 2) 문제를 해결하는 도구 3) 고등 사고력 향상 4) SW중심 사회로의 변화
SW교육 단계와 도구 소개 1-2
• CS 놀이 활동 • 보드게임
• Light-Bot • Kodable • CODE.org • 엔트리학습모드
• 스크래치 • 엔트리 • 앱인벤터 • Kodu • Alice
• MakeyMakey • 아두이노 (S4A/엔트리) • 레고 마인드스톰
SW교육 단계와 도구 소개 1-2
팀별 전략수립(토론)
연습과 수정
발표와 피드백
컴퓨터과학,
실생활 적용
보드 게임으로 배우는 프로그래밍
- sw교육 기관/학교에서 사용
- 입문 단계에서 많이 사용
기초과정
•프로그래밍 기초
•인터페이스 익히기
예제 익히기
•게임
•애니메이션
•미디어아트
•응용프로그램
문제 해결 과정
•기능 추가하기
•기능 수정하기
•오류 수정
프로젝트형 수업
•프로젝트 계획하기
•프로젝트 만들기
•프로젝트 평가하기
기초 기능 학습 단계
블록 탐색과 간단한 예제
다양한 영역 예제 만들기
예제를 통한 알고리즘 학습
주어진 상황의 문제 해결하기
문제 해결 능력 향상
스스로 문제를 정의하고 해결
협업과 피드백 경험
자유로운 질문4
1) govote.at 접속
2) 59 86 83입력
CODE.ORG
알고리즘 살펴보기
02
알고리즘 살펴보기 2-1
알고리즘 하면 떠오르는 단어, 생각
1. 알고리즘 이란?
튜링 (Alan Turing) 1912-1954
알고리즘 살펴보기 2-1
주어진 문제를 해결하기 위한 일련의 방법 및 절차
일/문제 - 해결법을 순서대로 잘 나열해 놓은 것
1. 알고리즘 이란?
알고리즘 살펴보기 2-1
컴퓨터 알고리즘
컴퓨터를 사용하여 (프로그래밍)
문제를 해결하는 방법을 순서대로 잘 나열해 놓은 것
1. 알고리즘 이란?
알고리즘 살펴보기 2-1
2. 컴퓨터와 알고리즘
알고리즘 살펴보기 2-1
알고리즘 = 설계도
알고리즘 살펴보기 2-1
하나의 문제
여러가지 해결 방법
3. 알고리즘의 성능
알고리즘 살펴보기 2-1
3. 알고리즘 이건 기억하자
효율적인 알고리즘을 찾고, 사용하기
- 빠르게(시간복잡도) - 값싸게(공간복잡도)
알고리즘 살펴보기 2-1
조건 순차적 실행 반복 함수 재귀
4. 어디까지 다룰 것인가?
• 알고리즘 기본 개념
• 컴퓨터과학 기본 개념
배열 변수 자료구조 (스택/힙)
트리 그래프
• 알고리즘 응용
정렬 (버블/삽입/선택)
검색 (선형/이진)
자료구조 (스택/힙)
트리 그래프
알고리즘 표현하기
03
알고리즘 표현하기 3-1
알고리즘의 특성 1) 입력(Input) - 자료가 외부에서 제공될 수 있다. 2) 출력(Output) - 적어도 하나 이상의 결과를 내야 한다. 3) 명확성(Definiteness) - 각 명령어들은 명확하고 모호하지 않아야 한다. 4) 유한성(Finiteness) - 알고리즘의 명령어대로 수행했을 때 유한번의 수행 후에 마쳐야 한다. 5) 효과성(Effectiveness) - 알고리즘의 모든 연산들은 사람이 종이와 연필을 이용하여 유한한 시간 안에 정확하게 수행할 수 있을 정도로 충분히 단순해야 함.
알고리즘 표현하기 3-1
입력
출력
일련의 절차
알고리즘 표현하기 3-1
<워밍업 문제>
똑같이 생긴 당구공 7개가 있다. 6개는 무게가 같은데, 하나는 무게가 적게 나간다. 당구공을 얼마든지 올릴 수 있는 양팔 저울이 있다. 이 저울을 이용하여 무게가 적게 나가는 당구공을 찾아내야 한다. 단, 저울을 가장 적게 사용해야 한다. 저울을 몇 번 이용해야 하는가?
알고리즘 표현하기 3-1
1번 비교
2번 비교
알고리즘 표현하기 3-1
추상화 시키기(일반화 시키기)
똑같이 생긴 당구공 N개가 있다. N-1개는 무게가 같은데, 하나는 무게가 적게 나간다. 당구공을 얼마든지 올릴 수 있는 양팔 저울이 있다. 이 저울을 이용하여 무게가 적게 나가는 당구공을 찾아내야 한다. 단, 저울을 가장 적게 사용해야 한다. 저울을 몇 번 이용해야 하는가?
알고리즘 표현하기 3-1
공의 개수
최소 횟수
일련의 절차
알고리즘 표현하기 3-1
표로 나타내기
2개 3개 4개 5개 6개 7개 8개 9개 10개
1번 1번 2번 2번 2번 2번 2번 2번 3번
알고리즘 표현하기 3-1
수식으로 추론하기
2개 3개 4개 5개 6개 7개 8개 9개 10개
1번 1번 2번 2번 2번 2번 2번 2번 3번
𝐥𝐨𝐠𝟐 𝒏 ? ? 𝐥𝐨𝐠𝟑 𝒏 ? ?
𝐥𝐨𝐠𝟑 𝒏 의 올림
3-1
1. 공의 개수를 입력 받아 N에 저장한다. 2. 𝐥𝐨𝐠𝟑 𝒏 을 해서 𝑆에 저장한다. 3. S를 올림한다. 4. S를 출력한다.
숫자 공간 N,S 준비 N = 키보드 입력값 S = 𝐥𝐨𝐠𝟑 𝒏 S = 올림(S) 출력(S) Int n = 0;
Int s = 0; N = Consol.read(); S = math.log(3,n); S = math.ceiling(S); Consol.writeline(S);
자연어로 표현
순서도로 표현 의사코드로
표현
프로그래밍 언어로 표현
알고리즘 표현하기 3-1
1. 어떻게 표현할 것인가?
1. 어떻게 표현할 것인가?
순서도로 표현하기
자연어로 표현하기
의사코드로 표현하기
프로그래밍 언어로 표현하기
알고리즘 표현하기 3-1
자연어로 표현하기
1. 한글이나 영어를 사용하여 알고리즘을 표현
2. 쉽게 표현 할 수 있지만
3. 모호해서 명확성 유지의 어려움이 있다.
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
자연어로 표현하기
라면 끓이는 방법 알고리즘 ① 냄비에 물을 넣는다. ② 냄비를 불에 올려놓는다. ③ 물이 끓으면 라면과 수프를 넣는다. ④ 맛있게 먹는다.
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
순차
자연어로 표현하기
이 닦는 알고리즘 ① 칫솔을 든다 ② 치약을 든다 ③ 치약 뚜껑을 연다 ④ 치약을 짠다
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
순차
자연어로 표현하기
이 닦는 알고리즘 ① 칫솔을 든다 ② 치약을 든다
③ (만약에 뚜껑이 닫혀 있으면) 치약 뚜껑을 연다 ④ 치약을 짠다
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
조건
자연어로 표현하기
이 닦는 알고리즘 ① 칫솔을 든다 ② 치약을 든다 ③ (만약에 뚜껑이 닫혀 있으면) 치약 뚜껑을 연다 ④ 치약을 짠다 ⑤ 치약이 묻은 칫솔을 입 속에 넣는다 ⑥ 칫솔을 치아에 대고 2초동안 위아래로 한번 칫솔질 한다.
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
순차, 조건
자연어로 표현하기
이 닦는 알고리즘 1~5… ⑥ 칫솔을 치아에 대고 2초동안 위아래로 한번 칫솔질 한다. ⑦ 칫솔을 치아에 대고 2초동안 위아래로 한번 칫솔질 한다. ⑧ 칫솔을 치아에 대고 2초동안 위아래로 한번 칫솔질 한다. ⑨ 칫솔을 치아에 대고 2초동안 위아래로 한번 칫솔질 한다. … … …
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
순차, 조건
자연어로 표현하기
이 닦는 알고리즘 ① 칫솔을 든다 ② 치약을 든다 ③ (만약에 뚜껑이 닫혀 있으면) 치약 뚜껑을 연다 ④ 치약을 짠다 ⑤ 치약이 묻은 칫솔을 입 속에 넣는다
⑥ (1분이 될 때 까지) 칫솔을 치아에 대고 2초동안 위아래로 한번 칫솔질 한다.
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
반복
자연어로 표현하기
이 닦는 알고리즘 1~5
⑥ (1분이 될 때 까지) 칫솔을 치아에 대고 2초동안 위아래로 한번 칫솔질 한다.
⑥ (30번 반복) 칫솔을 치아에 대고 2초동안 위아래로 한번 칫솔질 한다.
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
반복
자연어로 표현하기
이 닦는 알고리즘 ① 칫솔을 든다 ② 치약을 든다 ③ (만약에 뚜껑이 닫혀 있으면) 치약 뚜껑을 연다 ④ 치약을 짠다 ⑤ 치약이 묻은 칫솔을 입 속에 넣는다 ⑥ (1분이 될 때 까지) 칫솔을 치아에 대고 2초 동안 위아래로 한번 칫솔질 한다.
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
순차, 조건, 반복
자연어로 표현하기
전화를 걸어 친구와 통화하는 알고리즘 ① 친구의 전화번호를 확인한다. ② 전화기를 든다. ③ 번호를 입력한다. ④ (통화 중이면) 끊고 잠시 기다린 후 ② 부터 다시 시작한다. ⑤ 통화 중이 아니면 통화한다. ⑥ 통화가 끝나면 수화기를 놓는다.
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
자연어로 표현하기
1과 2를 더해서 그 결과를 출력하는 알고리즘 ① 변수 A,B,C를 만든다. ② 정수값 1을 A 변수에 대입한다. ③ 정수값 2를 B 변수에 대입한다. ④ A 변수의 값과 B 변수의 값을 더해서 C 변수에 대입한다. ⑤ C 변수의 값을 출력한다.
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
변수
1 + 2 = ?
메모리 = 실행중인 프로그램,
정보(숫자,문자)를 저장하는 곳
40억
비교 횟수
당구공 개수
더한 값 철수
몸무게
변수 = 정보(숫자,문자)를 컴퓨터에서 저장, 수정, 사용하기 위해 이
름 붙인 공간 1) 한 변수에는 하나의 값만 들어간다.
2) 변수 안에 들어간 값은 수정 할 수 있다.
1과 2를 더해서 그 결과를 출력하는 알고리즘
① 변수 A,B,C를 만든다. ② 정수값 1을 A 변수에 대입한다. ③ 정수값 2를 B 변수에 대입한다. ④ A 변수의 값과 B 변수의 값을 더해서 C 변수에 대입한다. ⑤ C 변수의 값을 출력한다.
A B C
1과 2를 더해서 그 결과를 출력하는 알고리즘 ① 변수 A,B,C를 만든다.
② 정수값 1을 A 변수에 대입한다. ③ 정수값 2를 B 변수에 대입한다. ④ A 변수의 값과 B 변수의 값을 더해서 C 변수에 대입한다. ⑤ C 변수의 값을 출력한다.
A B C
A B C
1
1과 2를 더해서 그 결과를 출력하는 알고리즘 ① 변수 A,B,C를 만든다. ② 정수값 1을 A 변수에 대입한다.
③ 정수값 2를 B 변수에 대입한다. ④ A 변수의 값과 B 변수의 값을 더해서 C 변수에 대입한다. ⑤ C 변수의 값을 출력한다.
A B C
A B C
1
2 1
1과 2를 더해서 그 결과를 출력하는 알고리즘 ① 변수 A,B,C를 만든다. ② 정수값 1을 A 변수에 대입한다. ③ 정수값 2를 B 변수에 대입한다.
④ A 변수의 값과 B 변수의 값을 더해서 C 변수에 대입한다. ⑤ C 변수의 값을 출력한다.
A B C
A B C
1 2
1 2 1 2
3
1과 2를 더해서 그 결과를 출력하는 알고리즘 ① 변수 A,B,C를 만든다. ② 정수값 1을 A 변수에 대입한다. ③ 정수값 2를 B 변수에 대입한다. ④ A 변수의 값과 B 변수의 값을 더해서 C 변수에 대입한다.
⑤ C 변수의 값을 출력한다.
A B C
A B C
1 2 3
1 2 3 3
자연어로 표현하기
자연어로 알고리즘 만들기 활동
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
http://tinyurl.com/swteacher
https://www.lucidchart.com
자연어로 알고리즘 만들기 활동
문제1) 1. 자신이 제일 잘 할 수 있는 요리 알고리즘을 만드세요. 2. 50과 60을 더해서 평균을 구하는 알고리즘을 만드세요.
1. 어떻게 표현할 것인가?
순서도로 표현하기
자연어로 표현하기
의사코드로 표현하기
프로그래밍 언어로 표현하기
알고리즘 표현하기 3-1
순서도로 표현하기
1. 정해진 기호로 알고리즘을 표현
2. 명확하게 표현 할 수 있지만
3. 규모가 큰 알고리즘은 그리기 어렵다.
1. 어떻게 표현할 것인가?
알고리즘 표현하기 3-1
순서도 기호
단말(Terminal) - 작업의 시작과 끝을 나타내는 기호
알고리즘 표현하기 3-1
흐름선 - 작업의 흐름을 명시함
순서도 기호
알고리즘 표현하기 3-1
준비(Preparation) - 작업을 하기 위한 준비로 필요한 기억장소의 확보 및 배열확보 또는 초기값 을 정해 주는데 사용.
순서도 기호
알고리즘 표현하기 3-1
K L
0 0
입출력(I/O symbol) - 일반적인 데이터의 입력 또는 결과의 출력
순서도 기호
알고리즘 표현하기 3-1
K
5 5
5
처리(Process) - 자료의 이동 이나 연산내용, 행동을 기호내에 서술.
순서도 기호
알고리즘 표현하기 3-1
A B
3
3
판단(Decision) - 조건에 따라 흐름선을 선택함
순서도 기호
알고리즘 표현하기 3-1
프린트 - 프린터를 이용한 출력(서류 등의 지면에 출력)
순서도 기호
알고리즘 표현하기 3-1
순서도의 유형 – 순차적 개념
처리 1
처리 2
처리 3
START
A = 10
B = 20
T = AxB
Write T
END
알고리즘 표현하기 3-1
순서도의 유형 – 조건 개념
알고리즘 표현하기 3-1
순서도의 유형 – 반복 개념
알고리즘 표현하기 3-1
1. 어떻게 표현할 것인가?
순서도로 표현하기
자연어로 표현하기
의사코드로 표현하기
프로그래밍 언어로 표현하기
알고리즘 표현하기 3-1
의사코드로 표현하기
1. 프로그래밍 언어와 비슷하게 자연어로 표현 2. 실제 프로그래밍에서 다시 코딩을 해야함
1. 어떻게 표현할 것인가?
알고리즘 만들기 2-2
의사코드로 표현하기
1. 어떻게 표현할 것인가?
알고리즘 만들기 2-2
의사코드로 표현하기
1부터 10까지 숫자를 더하도록 하는 의사코드 sum ← 0 i ← 1 begin sum ← sum + i i = i + 1 if i is not 11 goto begin print sum
1. 어떻게 표현할 것인가?
알고리즘 만들기 2-2
프로그래밍언어로 표현하기
1부터 10까지 숫자를 더하도록 하는 C코드 #include <stdio.h> Int main(void) { int I, sum; sum = 0; for( I = 1; I < 11; I++); { sum = sum + i; } printf(“1부터 10까지의 합 : %d \n”, sum); retrun 0; }
1. 어떻게 표현할 것인가?
알고리즘 만들기 2-2
1. 어떻게 표현할 것인가?
순서도로 표현하기
순서도로 알고리즘 만들기 활동
순서도로 알고리즘 표현하기 3-2
문제2) A라는 공간에 1을 넣고 B라는 공간에 2를 넣고 C라는 공간에 A와 B를 더해서 출력하는 알고리즘 (보통은 1과 2를 더해서 출력하는 알고리즘을 순서도로 표현하시오)
순서도로 알고리즘 표현하기 3-2
문제3) ‘한 변의 길이’와 ‘넓이’라는 공간을 만들고 사람들이 한 변의 길이를 입력하면 넓이(정사각형)를 출력해주는 알고리즘
순서도로 알고리즘 표현하기 3-2
문제4) ‘점수’라는 공간을 만들고 사람들이 점수를 입력하면 100점이면 ‘대단합니다!’ 60점 이상이면 ‘훌륭해요!’ 60점 미만이면 ‘좋습니다!’라고 출력해주는 알고리즘
순서도로 알고리즘 표현하기 3-2
문제5) 1에서 부터 n까지의 자연수를 순차적으로 출력(인쇄)하는 알고리즘 만들기
순서도로 알고리즘 표현하기 3-2
문제6) 정사각형 / 마름모 / 평행사변형 / 사다리꼴을 구분해 주는 알고리즘 (프린트와 판단기호만을 이용하여 작성)
순서도로 알고리즘 표현하기 3-2
예비문제) - 자연수 1에서 100까지의 짝수의 합계를 구하여 출
력하는 알고리즘 만들기
- n!(1×…n-3×n-2×n-1…×n)의 결과를 구하는 알고리즘 만들기
순서도로 알고리즘 표현하기 3-2
알고리즘 만들고 실행하기
04
실제로 작동하는 것을 보고 알고리즘을 만들고 시뮬레이션 해보기
문제7) 로봇청소기 알고리즘 만들기
알고리즘 만들고 실행하기 4-1
자판기
문제8) 자판기 알고리즘 만들기 (링크주소 – 구글닥스) (시뮬레이션 주소 이따가 닥스) - 실행 시켜보기 - 입력 / 출력 값 찾기 (시작과 끝) - 모든 경우의 수 찾아보기 - 알고리즘 만들기 (어떤 변수, 입력/출력값, 흐름,
동작) - 실제로 만들어 보기
알고리즘 만들고 실행하기 4-1
문제9) 암호 풀기 알고리즘 (도어락/자물쇠) (링크주소 – 구글닥스) (시뮬레이션 주소 이따가 닥스) - 실행 시켜보기 - 입력 / 출력 값 찾기 (시작과 끝) - 모든 경우의 수 찾아보기 - 알고리즘 만들기 (어떤 변수, 입력/출력값, 흐름,
동작) - 실제로 만들어 보기
알고리즘 만들고 실행하기 4-1
우와 어떻게 이게 가능하지?
문제10) 지니 알고리즘 사람들에게 ‘김태희, MC몽, 신해철, 유재석, 짱구’ 중에서 한 명을 생각하게 하고 질문 몇 개를 통해서 답을 찾아내는 알고리즘 (최소한의 질문 으로)
알고리즘 만들고 실행하기 4-1
업 다운 게임
문제11) 업 다운 게임 (링크주소 – 구글닥스) (시뮬레이션 주소 이따가 닥스) - 실행 시켜보기 - 입력 / 출력 값 찾기 (시작과 끝) - 모든 경우의 수 찾아보기 - 알고리즘 만들기 (어떤 변수, 입력/출력값, 흐름,
동작) - 실제로 만들어 보기
알고리즘 만들고 실행하기 4-1
앞에서 만들었던 알고리즘 구현해 보기
도구를 이용한 알고리즘 학습
05
1. CODE.ORG
CODE.ORG를 이용한 알고리즘 학습 5-1
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 5-1
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 5-1
보드게임으로 배우는 알고리즘 기본 원리 5-2
• 프로그래밍 교육용 보드게임
• ‘순차’ , ‘함수’, ‘반복’ 학습 가능
3
1 2
4 5
6 7
3
1 2
4 5
6 7 8 9
10 11 12
13 14
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 4-2
로봇청소기 알고리즘
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 4-2
문제를 분해 / 추상화 (행동을 추상화)
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 4-2
여러가지 문제 해결 알고리즘 생각하기
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 4-2
설계하기
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 4-2
시뮬레이션 해보기
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 4-2
자동문 알고리즘
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 4-2
문제를 분해 / 추상화 (행동을 추상화)
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 4-2
여러가지 문제 해결 알고리즘 생각하기
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 4-2
설계하기
2. 네이버 SW야 놀자
엔트리를 이용한 알고리즘 학습 4-2
시뮬레이션 해보기
감사합니다.
http://www.exploringcs.org/ http://scratched.gse.harvard.ed
u/