ݺߣ

ݺߣShare a Scribd company logo
Computer Programming I
알파고 이야기, Programming
이민석
국민대학교 컴퓨터공학부
학습 목표
1. 이세돌 vs. 알파고
2. 프로그램을 배운다는 것
3. 프로그래밍에 의한 절차적 문제 해결
이세돌 vs. AlphaGo
우리 wife의 반응
경기 시작 전 “당연히 컴퓨터가 이기는 거 아냐?”
ß (나) “아직 컴퓨터가 그 정도는 아니야,
바둑은 체스랑 달라서 Blah Blah … ”
알파고 1승 후 “컴퓨터 하는 사람이 그것도 몰라?”
ß (나) “쟤는 집에 있는 그런 컴퓨터가 아니야
CPU가 1,920개 GPU가 280개 …”
알파고 2승 후 “거봐” (그날따라 집의 인터넷 느림)
ß (나) “구글이 바둑 두느라고 인터넷, 전기 다 가져다 써서 그래”
이세돌 vs. AlphaGo, 말들
해설자 송태곤 9단 (2국 중간) “이세돌 9단의 패착을 찾지를 못하겠어요.
인간의 눈으로 볼 때는 실수는 알파고만 하고 있었거든요”
허사비스 딥마인드 CEO (1국 승리 후) "우리는 달에 착륙했다. 팀이 자랑스럽다"
이세돌 (1국 패배 후) “진다고 생각 안 했는데 너무 놀랐다”,
“이세돌이 패한 것일 뿐 인간이 패한 것은 아니다”
이세돌 (첫 기자회견) “3대2정도의 승리가 아니라 한판 질까 말까 정도”
이세돌 (대국하루전 알파고 원리를 듣고) “조금 긴장했다. 5대0승리는 아닐 것 같다”
이세돌 (5국 후) “물론 질 수도 있다. 그러나 바둑의 아름다움, 인간의 아름다움을
컴퓨터가 이해하고 두는 게 아니기에 바둑의 가치는 계속될 것”
이세돌 (4국 승리 후) “그전에도, 앞으로도 그 어떤 것과 값어치를 매길 수 없는 1승”
이세돌 vs. AlphaGo, 그 여파
• 온갖 AI 이슈
ü AI의 의도적 실수 and/or	 버그,
ü 경기 상황 중간 보고
ü AI의 윤리
• AI vs.	인간
ü 명령을 받을 것인가? 내릴 것인가?
ü AI는 우리의 적인가?
• AI	시대에 대응하는 자세
• 최저 생활비 보장
*	AI		(Artificial	Intelligence,	인공지능)
프로그래밍에 의한 문제 해결
비교 예.. 자동차 만들기 vs.	 컴퓨터로 문제 해결하기
자동차
• 자동차는 시키는 대로 간다.
– 자동차 자체는 그냥 껍데기일 뿐
– 자동차는 운전자가 원하는 곳으로 간다.
– ‘자동’차 이지만, 모든 것이 자동으로 되지는 않는다.
• 밟으면 엔진이 돌고, 핸들을 돌려야 방향이 바뀐다.
– 더구나, 자동차는 누군가가 만들었다.
– 정말 처음부터 자동으로 된 것은 아무 것도 없다.
• 그 누군가가 설계하고,
• 또 누군가가 Every Detail을 다 정했다.
컴퓨터
• 컴퓨터도 시키는 것만 한다.
– 컴퓨터 자체는 그냥 껍데기일 뿐
– 컴퓨터는 프로그래머가 시킨 일만 한다.
– ‘컴퓨터’ 이지만, 모든 것을 알아서 하지는 않는다.
• 소프트웨어를 만들어 넣고, 사용자가 정한 기능이 수행된다.
– 더구나, 컴퓨터는 누군가가 만들었다.
– 정말 처음부터 자동으로 된 것은 아무 것도 없다.
• 그 누군가가 설계하고,
• 또 누군가가 Every Detail을 다 정했다.
컴퓨터가 하는 일은 문제 해결
• 문제를 모르면 답도 없다. 문제란 두 종류인데,
– 이전에 있던 것들의 생산성을 높이는 것들
– 전혀 새로운 가치를 사람에게 제공하는 것들
• 문제는 사람이 정의한다.
– 그리고, 대부분의 문제는 복잡하다.
• 그 복잡함의 근원에는 다양한 상황과 데이터가 있다.
– 그래서, 완벽하고 간단한 정답은 보통 없으며
– 상황에 따라, 데이터에 따라 여러 가지 답이 있다.
– 어떤 경우에도, 그 답도 사람이 만들고
– 최종적으로는 소프트웨어라는 도구로 구현된다.
문제해결 도구, 소프트웨어
• 복잡한 문제를 해결하는 절차
1. 문제를 잘 이해하려고 노력한다.
• 문제가 존재하는 상황과 연관된 데이터를 잘 살펴본다.
2. 큰 문제를 조금은 덜 복잡한 작은 문제들로 나눈다.
• 조각 낸 작은 문제들의 답을 예측하고,
• 그 답들을 순서에 맞추어 잘 연결하여,
• 처음 큰 문제의 답이 만들어지는지 검토한다.
• 필요하면 작은 문제를 더 작은 문제들로 다시 나눈다.
3. 작은 문제에 대한 답을 구하는 방법을 찾는다.
• 어떤 때는 간단한 논리와 산수로
• 또 어떤 때는 복잡한 논리와 고도의 수학이 필요하다.
4. 작은 문제의 답들을 엮어 큰 문제의 답을 얻는다.
문제의 예: 자동차, 1 단계
• 큰 문제
– 승객을 목적지에 안전하게 도달하게 하는 것
• 큰 문제를 해결하기 위한 작은 문제들
1. 굴러가게 해야 한다.
2. 원하는 방향으로 가게 해야 한다.
3. 설 수 있어야 한다.
4. 안전하고, 편하게 위 목적을 달성해야 한다.
문제의 예: 자동차, 2 단계
• 작은 문제를 더 작게
1. 굴러가게 해야 한다.
• 엔진이 필요하다.
• 엔진의 동력을 바퀴에 전달해야 한다.
2. 원하는 방향으로 가게 해야 한다.
• 핸들이 필요하다. 바퀴를 움직여야 한다.
3. 설 수 있어야 한다.
• 브레이크 페달이 필요하다. 움직이는 바퀴를 세워야 한다
4. 편하게 위 목적을 달성해야 한다.
• 깜박이가, 전조등이, 미등이, 에어백이,
• 에어컨이, 내비게이션이, 블랙박스가 필요하다.
• …
문제의 예: 자동차, 3단계
• 더 작은 문제를 한층 더 작게
1. 굴러가게 해야 한다.
• 엔진이 필요하다.
A. 연료는? (휘발류? 경유? 전기?)
• 연료통 (배터리) 크기?
• 연료통 (배터리) 위치?
• 남은 량 측정?
• 화재 방지 방법?
B. 엔진 출력은?
C. …
• 엔진의 동력을 바퀴에 전달해야 한다.
• …
여러 가지 답
상황을 고려하여
한 가지를 선택하거나
두 가지를 섞어 쓸 수 있다.
선택은 다른 문제를 만든다
(또는 문제를 바꾼다)
가끔은 문제가 작아질수록 더 고도의 전문성이 요구된다.
소프트웨어 / 프로그램 / 프로그래밍 언어
• 컴퓨터 소프트웨어는
컴퓨터 프로그램들을 모아 놓은 것
• 컴퓨터 프로그램은
프로그래밍 언어의 명령들을 모아 놓은 것
• 프로그래밍 언어는
데이터와,
문제를 해결하는 방법(논리와 수학)을
절차적/구조적으로 표현하여
컴퓨터가 실행할 수 있게 해주는 도구
큰 문제
해결 도구
작은 문제
해결
문제 해결
방법 표현
아직은 사람만 가능 J
그래서 뭘 하자는 건가?
• 코딩(프로그램)으로 문제와, 문제의 해결 방안을 표현하는 것
– 문제 그 자체, 또는 문제와 연관된 데이터
(자료구조)
– 논리적/절차적인 문제 해결 방안
(알고리즘)
문제의 핵심, 세상의 모든 것은 데이터 !!
• 데이터를 어떻게 얻고
• 데이터의 의미를 이해하고
• 데이터를 이용하여
• 다른 의미있는 데이터 만들기
코딩: 문제의 근원인 데이터의 표현
• 데이터의 형태
– 숫자 (정수, 실수, ...), 문자, 문자열
• 예, 0, -6, 3.1415, ‘A’, “국민대학교”
– 조직화된 데이터
• 의미 있는 한 덩어리의 데이터
예, (이름, 생년월일, 전화번호)
• 데이터 사이의 관계
– 데이터 또는 조직화된 데이터의 집합 또는 순서
• 예, 오늘의 검색어 순위
• 예, 금주의 음악 챠트
코딩: 문제 해결 방법의 표현
• 순차적 접근 (Procedural)
– 정말로 낱낱이 풀어서, 이것하고, 다음에 저것하고, 그 다음은 …
• 산수와 논리 (Arithmetic & Logic)
– 뭐하고 뭐를 더하고, 곱하고, …. ( +, -, *, /, …)
– 참과 거짓, 그리고, 또는, 반대의 관계 ( True, False, AND, OR, NOT )
• 조건과 분기 (Conditional Branch)
– If (조건) then 이런 일 else 저런 일
• 반복 (Iteration)
– 여기서부터 저기까지 (몇 번, 언제까지, 무한히) 반복
세상에 많은 언어가 있듯이
프로그래밍 언어도 많다
• 문제에 따라, 컴퓨터에 따라
http://3.bp.blogspot.com/-QZ4yib_WQFk/VOej26zs_NI/AAAAAAAAAXY/DF7R-KmYzk4/s1600/prog-languages.png
1. Java
2. C
3. C++
4. C#
5. Python
6. PHP
7. JavaScript
8. Perl
9. Ruby
2016-04	TIOBE	Index
언어의 첫 걸음: Hello World!
• Java 버전
// Hello World! in Java
class HelloWorld {
static public void main(String args[]) {
System.out.println("Hello World!”);
}
}
언어의 첫 걸음: Hello World!
• C 버전
/* Hello World! in C, Ansi-style */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
puts("Hello World!");
return EXIT_SUCCESS;
}
언어의 첫 걸음: Hello World!
• 엔트리
• Python 버전
# Hello World! in Python 3
print("Hello World!")
• Scratch 버전
Why Entry?
• Entry(엔트리)는 프로그래밍 언어의 일종
– 쉽고, 재미있고,
– 무료, 오픈 소스이고,
– 웹으로 되고, PC, Mac, 안드로이드, 아이폰에서도 되고,
– 문법보다는 문제에 더 신경쓸 수 있게 해주고
– 역시, 다른 모든 프로그래밍 언어처럼 절차적인 문제 해결,
– “~~일이 발생하면 ~~를 해요” 방식의 문제 해결이 가능
• 어떤 이벤트에 대하여 반응
OFF
ON
절차적으로 정리하면
스위치의 위치 확인
만일 스위치가 ON	위치 이면
불을 켠다.
아니면
불이 끈다.
프로그램으로 짜면
if (switch == ON) then
light = ON
else
light = OFF
말로 하면
스위치를 누를 때 불을 켠다.
프로그램의 예 (불 켜기)
*	모든 언어마다 문법은 조금씩 다름
알파고도 풀 수 없는 문제..
시작
(여자가 화가 남)
미안해
뭐가 미안해?
알아몰라
알면서
그래?
모르면서
그래?
잘못했어
뭘 잘못했는데?
남자
여자
: 멘붕에 따른 임의의 선택
(머리속에서 어설픈 동전던지기)
Man Trapped
예제: Man Trapped
여자_화남 =	TRUE;
미안: 남자(“미안해”);
여자(“뭐가 미안해?”);
뭐를: 남자(머릿속 동전 던지기);
if	 (동전=앞면) then
남자(“알아”);
여자(	“알면서그래?”);
else
남자(“몰라”);
여자(“모르면서 그래?”);
남자(머릿속 동전 던지기);
if	 (동전=앞면) then
goto 미안;
남자(“잘못했어”);
여자(“ 뭘 잘못했는데?”);
goto 뭐를;
예제: Man Trapped (Entry code: http://j.mp/man-trapped)
• 사건을 단계로 풀어보면…
1. 시작
2. ‘미안해’ 하고, 이유 추궁 당하고,
3. 아무 대답이나 하고,
4. 제대로 일격을 당하고
나름 작전을 선택하고
5. ‘잘못했어‘ 하고 또 이유 추궁당하고
6. 다시 3번으로
프로그래밍 요소
• 순차 실행
– 아래로 향하는 화살표
– 블록(문장)의 나열
• 반복
– 위로 올라가는 화살표
• 조건에 따른 선택
– 두 방향의 화살표
요약
1. 이세돌 vs. AlphaGo
2. 프로그램을 배운다는 것
ü 자동차 vs. 컴퓨터
3. 프로그래밍에 의한 절차적 문제 해결
ü 데이터 !!
ü 프로그래밍 언어
ü 조건과 절차
ü Man-Trapped
http://j.mp/man-trapped
고맙습니다
https://www.facebook.com/groups/kmu.cs/

More Related Content

프로그램 기초

  • 1. Computer Programming I 알파고 이야기, Programming 이민석 국민대학교 컴퓨터공학부
  • 2. 학습 목표 1. 이세돌 vs. 알파고 2. 프로그램을 배운다는 것 3. 프로그래밍에 의한 절차적 문제 해결
  • 4. 우리 wife의 반응 경기 시작 전 “당연히 컴퓨터가 이기는 거 아냐?” ß (나) “아직 컴퓨터가 그 정도는 아니야, 바둑은 체스랑 달라서 Blah Blah … ” 알파고 1승 후 “컴퓨터 하는 사람이 그것도 몰라?” ß (나) “쟤는 집에 있는 그런 컴퓨터가 아니야 CPU가 1,920개 GPU가 280개 …” 알파고 2승 후 “거봐” (그날따라 집의 인터넷 느림) ß (나) “구글이 바둑 두느라고 인터넷, 전기 다 가져다 써서 그래”
  • 5. 이세돌 vs. AlphaGo, 말들 해설자 송태곤 9단 (2국 중간) “이세돌 9단의 패착을 찾지를 못하겠어요. 인간의 눈으로 볼 때는 실수는 알파고만 하고 있었거든요” 허사비스 딥마인드 CEO (1국 승리 후) "우리는 달에 착륙했다. 팀이 자랑스럽다" 이세돌 (1국 패배 후) “진다고 생각 안 했는데 너무 놀랐다”, “이세돌이 패한 것일 뿐 인간이 패한 것은 아니다” 이세돌 (첫 기자회견) “3대2정도의 승리가 아니라 한판 질까 말까 정도” 이세돌 (대국하루전 알파고 원리를 듣고) “조금 긴장했다. 5대0승리는 아닐 것 같다” 이세돌 (5국 후) “물론 질 수도 있다. 그러나 바둑의 아름다움, 인간의 아름다움을 컴퓨터가 이해하고 두는 게 아니기에 바둑의 가치는 계속될 것” 이세돌 (4국 승리 후) “그전에도, 앞으로도 그 어떤 것과 값어치를 매길 수 없는 1승”
  • 6. 이세돌 vs. AlphaGo, 그 여파 • 온갖 AI 이슈 ü AI의 의도적 실수 and/or 버그, ü 경기 상황 중간 보고 ü AI의 윤리 • AI vs. 인간 ü 명령을 받을 것인가? 내릴 것인가? ü AI는 우리의 적인가? • AI 시대에 대응하는 자세 • 최저 생활비 보장 * AI (Artificial Intelligence, 인공지능)
  • 7. 프로그래밍에 의한 문제 해결 비교 예.. 자동차 만들기 vs. 컴퓨터로 문제 해결하기
  • 8. 자동차 • 자동차는 시키는 대로 간다. – 자동차 자체는 그냥 껍데기일 뿐 – 자동차는 운전자가 원하는 곳으로 간다. – ‘자동’차 이지만, 모든 것이 자동으로 되지는 않는다. • 밟으면 엔진이 돌고, 핸들을 돌려야 방향이 바뀐다. – 더구나, 자동차는 누군가가 만들었다. – 정말 처음부터 자동으로 된 것은 아무 것도 없다. • 그 누군가가 설계하고, • 또 누군가가 Every Detail을 다 정했다.
  • 9. 컴퓨터 • 컴퓨터도 시키는 것만 한다. – 컴퓨터 자체는 그냥 껍데기일 뿐 – 컴퓨터는 프로그래머가 시킨 일만 한다. – ‘컴퓨터’ 이지만, 모든 것을 알아서 하지는 않는다. • 소프트웨어를 만들어 넣고, 사용자가 정한 기능이 수행된다. – 더구나, 컴퓨터는 누군가가 만들었다. – 정말 처음부터 자동으로 된 것은 아무 것도 없다. • 그 누군가가 설계하고, • 또 누군가가 Every Detail을 다 정했다.
  • 10. 컴퓨터가 하는 일은 문제 해결 • 문제를 모르면 답도 없다. 문제란 두 종류인데, – 이전에 있던 것들의 생산성을 높이는 것들 – 전혀 새로운 가치를 사람에게 제공하는 것들 • 문제는 사람이 정의한다. – 그리고, 대부분의 문제는 복잡하다. • 그 복잡함의 근원에는 다양한 상황과 데이터가 있다. – 그래서, 완벽하고 간단한 정답은 보통 없으며 – 상황에 따라, 데이터에 따라 여러 가지 답이 있다. – 어떤 경우에도, 그 답도 사람이 만들고 – 최종적으로는 소프트웨어라는 도구로 구현된다.
  • 11. 문제해결 도구, 소프트웨어 • 복잡한 문제를 해결하는 절차 1. 문제를 잘 이해하려고 노력한다. • 문제가 존재하는 상황과 연관된 데이터를 잘 살펴본다. 2. 큰 문제를 조금은 덜 복잡한 작은 문제들로 나눈다. • 조각 낸 작은 문제들의 답을 예측하고, • 그 답들을 순서에 맞추어 잘 연결하여, • 처음 큰 문제의 답이 만들어지는지 검토한다. • 필요하면 작은 문제를 더 작은 문제들로 다시 나눈다. 3. 작은 문제에 대한 답을 구하는 방법을 찾는다. • 어떤 때는 간단한 논리와 산수로 • 또 어떤 때는 복잡한 논리와 고도의 수학이 필요하다. 4. 작은 문제의 답들을 엮어 큰 문제의 답을 얻는다.
  • 12. 문제의 예: 자동차, 1 단계 • 큰 문제 – 승객을 목적지에 안전하게 도달하게 하는 것 • 큰 문제를 해결하기 위한 작은 문제들 1. 굴러가게 해야 한다. 2. 원하는 방향으로 가게 해야 한다. 3. 설 수 있어야 한다. 4. 안전하고, 편하게 위 목적을 달성해야 한다.
  • 13. 문제의 예: 자동차, 2 단계 • 작은 문제를 더 작게 1. 굴러가게 해야 한다. • 엔진이 필요하다. • 엔진의 동력을 바퀴에 전달해야 한다. 2. 원하는 방향으로 가게 해야 한다. • 핸들이 필요하다. 바퀴를 움직여야 한다. 3. 설 수 있어야 한다. • 브레이크 페달이 필요하다. 움직이는 바퀴를 세워야 한다 4. 편하게 위 목적을 달성해야 한다. • 깜박이가, 전조등이, 미등이, 에어백이, • 에어컨이, 내비게이션이, 블랙박스가 필요하다. • …
  • 14. 문제의 예: 자동차, 3단계 • 더 작은 문제를 한층 더 작게 1. 굴러가게 해야 한다. • 엔진이 필요하다. A. 연료는? (휘발류? 경유? 전기?) • 연료통 (배터리) 크기? • 연료통 (배터리) 위치? • 남은 량 측정? • 화재 방지 방법? B. 엔진 출력은? C. … • 엔진의 동력을 바퀴에 전달해야 한다. • … 여러 가지 답 상황을 고려하여 한 가지를 선택하거나 두 가지를 섞어 쓸 수 있다. 선택은 다른 문제를 만든다 (또는 문제를 바꾼다) 가끔은 문제가 작아질수록 더 고도의 전문성이 요구된다.
  • 15. 소프트웨어 / 프로그램 / 프로그래밍 언어 • 컴퓨터 소프트웨어는 컴퓨터 프로그램들을 모아 놓은 것 • 컴퓨터 프로그램은 프로그래밍 언어의 명령들을 모아 놓은 것 • 프로그래밍 언어는 데이터와, 문제를 해결하는 방법(논리와 수학)을 절차적/구조적으로 표현하여 컴퓨터가 실행할 수 있게 해주는 도구 큰 문제 해결 도구 작은 문제 해결 문제 해결 방법 표현 아직은 사람만 가능 J
  • 16. 그래서 뭘 하자는 건가? • 코딩(프로그램)으로 문제와, 문제의 해결 방안을 표현하는 것 – 문제 그 자체, 또는 문제와 연관된 데이터 (자료구조) – 논리적/절차적인 문제 해결 방안 (알고리즘) 문제의 핵심, 세상의 모든 것은 데이터 !! • 데이터를 어떻게 얻고 • 데이터의 의미를 이해하고 • 데이터를 이용하여 • 다른 의미있는 데이터 만들기
  • 17. 코딩: 문제의 근원인 데이터의 표현 • 데이터의 형태 – 숫자 (정수, 실수, ...), 문자, 문자열 • 예, 0, -6, 3.1415, ‘A’, “국민대학교” – 조직화된 데이터 • 의미 있는 한 덩어리의 데이터 예, (이름, 생년월일, 전화번호) • 데이터 사이의 관계 – 데이터 또는 조직화된 데이터의 집합 또는 순서 • 예, 오늘의 검색어 순위 • 예, 금주의 음악 챠트
  • 18. 코딩: 문제 해결 방법의 표현 • 순차적 접근 (Procedural) – 정말로 낱낱이 풀어서, 이것하고, 다음에 저것하고, 그 다음은 … • 산수와 논리 (Arithmetic & Logic) – 뭐하고 뭐를 더하고, 곱하고, …. ( +, -, *, /, …) – 참과 거짓, 그리고, 또는, 반대의 관계 ( True, False, AND, OR, NOT ) • 조건과 분기 (Conditional Branch) – If (조건) then 이런 일 else 저런 일 • 반복 (Iteration) – 여기서부터 저기까지 (몇 번, 언제까지, 무한히) 반복
  • 20. 프로그래밍 언어도 많다 • 문제에 따라, 컴퓨터에 따라 http://3.bp.blogspot.com/-QZ4yib_WQFk/VOej26zs_NI/AAAAAAAAAXY/DF7R-KmYzk4/s1600/prog-languages.png 1. Java 2. C 3. C++ 4. C# 5. Python 6. PHP 7. JavaScript 8. Perl 9. Ruby 2016-04 TIOBE Index
  • 21. 언어의 첫 걸음: Hello World! • Java 버전 // Hello World! in Java class HelloWorld { static public void main(String args[]) { System.out.println("Hello World!”); } }
  • 22. 언어의 첫 걸음: Hello World! • C 버전 /* Hello World! in C, Ansi-style */ #include <stdio.h> #include <stdlib.h> int main(void) { puts("Hello World!"); return EXIT_SUCCESS; }
  • 23. 언어의 첫 걸음: Hello World! • 엔트리 • Python 버전 # Hello World! in Python 3 print("Hello World!") • Scratch 버전
  • 24. Why Entry? • Entry(엔트리)는 프로그래밍 언어의 일종 – 쉽고, 재미있고, – 무료, 오픈 소스이고, – 웹으로 되고, PC, Mac, 안드로이드, 아이폰에서도 되고, – 문법보다는 문제에 더 신경쓸 수 있게 해주고 – 역시, 다른 모든 프로그래밍 언어처럼 절차적인 문제 해결, – “~~일이 발생하면 ~~를 해요” 방식의 문제 해결이 가능 • 어떤 이벤트에 대하여 반응
  • 25. OFF ON 절차적으로 정리하면 스위치의 위치 확인 만일 스위치가 ON 위치 이면 불을 켠다. 아니면 불이 끈다. 프로그램으로 짜면 if (switch == ON) then light = ON else light = OFF 말로 하면 스위치를 누를 때 불을 켠다. 프로그램의 예 (불 켜기) * 모든 언어마다 문법은 조금씩 다름
  • 26. 알파고도 풀 수 없는 문제.. 시작 (여자가 화가 남) 미안해 뭐가 미안해? 알아몰라 알면서 그래? 모르면서 그래? 잘못했어 뭘 잘못했는데? 남자 여자 : 멘붕에 따른 임의의 선택 (머리속에서 어설픈 동전던지기) Man Trapped
  • 27. 예제: Man Trapped 여자_화남 = TRUE; 미안: 남자(“미안해”); 여자(“뭐가 미안해?”); 뭐를: 남자(머릿속 동전 던지기); if (동전=앞면) then 남자(“알아”); 여자( “알면서그래?”); else 남자(“몰라”); 여자(“모르면서 그래?”); 남자(머릿속 동전 던지기); if (동전=앞면) then goto 미안; 남자(“잘못했어”); 여자(“ 뭘 잘못했는데?”); goto 뭐를;
  • 28. 예제: Man Trapped (Entry code: http://j.mp/man-trapped) • 사건을 단계로 풀어보면… 1. 시작 2. ‘미안해’ 하고, 이유 추궁 당하고, 3. 아무 대답이나 하고, 4. 제대로 일격을 당하고 나름 작전을 선택하고 5. ‘잘못했어‘ 하고 또 이유 추궁당하고 6. 다시 3번으로
  • 29. 프로그래밍 요소 • 순차 실행 – 아래로 향하는 화살표 – 블록(문장)의 나열 • 반복 – 위로 올라가는 화살표 • 조건에 따른 선택 – 두 방향의 화살표
  • 30. 요약 1. 이세돌 vs. AlphaGo 2. 프로그램을 배운다는 것 ü 자동차 vs. 컴퓨터 3. 프로그래밍에 의한 절차적 문제 해결 ü 데이터 !! ü 프로그래밍 언어 ü 조건과 절차 ü Man-Trapped http://j.mp/man-trapped