안녕하세요, 어서 오세요
또 도전할 준비 됐어요?
나도 그래요
반복문을 살펴봤으니 적용해 보도록 하죠
문제를 해결할 방법을 찾아보죠
이번 과제에서는 C라는 숫자를 맞혀 보세요
정말 멋질 거예요
간단한 게임이 될 거예요
프로그래밍은 0부터 20까지
무작위로 숫자를 생성할 거예요
란섬 숫자를 생성하고 나면 사용자에게
그게 뭔지 맞혀보라고 하세요
0부터 20까지의 숫자만 입력할 수 있어야 하죠
네 네 추측하려고 하면 숫자 50처럼요 오류가 표시될
거예요 이봐요 0부터 20까지 숫자만 입력할 수 있어요
그게 조건 중 하나예요
네 하지만 일단 사용자가 추측을 하면 타당한 추측인
거죠 그럼 사용자에게 너무 높은지 낮은지 알려주게 돼요
그들이 옳다면 그들이 옳다고 시인하는 척해야 하고
그들이 게임에서 이기죠
정확한 숫자를 맞힐 수 있는 시간은 정해져
있어요
5번만 맞힐 수 있어요
5번이나 지고 말았죠
이 게임은 정확한 숫자를 맞히는 게 관건이에요
0부터 20까지 아무 숫자나 괜찮아요 사용자의 입력을 검사해서 0부터 20까지
입력했는지 확인합니다
네 뭔가를 입력했는데 5번 시도도 못 하면 이렇게 말하세요
이봐요 이건 너무 높아요 이봐요 추측해야 할 숫자보다
너무 낮아요
이게 이 프로그램의 기본 수칙이에요 숫자
맞히기 형식 게임이죠
출력은 어떤가요?
어떻게 배열됐는지 알려드리려면 잘 따라오세요
이거요 처음 프로그래밍을 시작할 때 작은 메시지를 보여줬어요
무슨 상황인지 맞히기 게임이라고 했잖아요
그리고 0부터 20까지의 숫자인 하초센이라고 했어요
맞혀 보셔야 해요
기회는 다섯 번 남았어요
그래서 제가 맞혀보라고 했죠
정답을 맞혀야 해요
그들이 12를 입력했고 제가 출력했죠 12가 틀렸네요 제 숫자는
그것보다 작아요
기회가 네 번 남았다는 걸 보여줬어요
그러고는 8이라고 하길래 8도 틀렸고 제 숫자도
그보단 낮다고 했죠
그리고 3번을 입력했는데 3번 남았다고 했더니 4번을 입력했어요
4는 틀렸다고 했잖아요
그리고 두 개의 트라이어프트가 제 번호를
맞혔는데 그게 2였어요
네 네 정답을 맞혔을 때 축하한다고 했어요
맞혔다고요 기회가 두 번 남았기 때문에 이긴 거예요
네 간단한 게임의 기본 유형으로 if문을 사용해야
하죠 while 루프를 사용해야 할 겁니다
네 그래서 루프를 사용해야 합니다
사용자가 정답을 추측하거나 TRY 횟수가 5를 넘을 때까지
계속 입력을 요청해야 하니까요
네 이런 프로그램을 시작하는 가장 좋은 방법 중 하나는 프로그램을
만드는 방법을 종이에 적어두는 겁니다
네 그렇게 하는 게 좋아요 문제를 어떻게 공격할 건지 종이에
적어두면 더 쉽게 해결할 수 있거든요
네 슈도코드로 작성할 수도 있어요 영어일
뿐이니까요 하지만 루프를 어디에 둘지 확인해야죠
조건을 확인하기 위해 if문을 어디에 둘지도요
thisoutput을 보면 확인해야 할 조건이
아주 많거든요
네 네 while 루프는 조건을 확인합니다 for
루프는 루프 종료 여부를 확인합니다 정답을 추측했거나 트라이스가
5보다 높으면요
그들이 제출한 서류가 유효한지 확인할 수 있는 조건이 있어요
그래서 aif 문을 갖게 되는 거죠 방금 숫자를
입력했다고 말해주는 문이요
0과 0과 20 사이가 아니라면 그 경우 중첩된 루프를
갖는 것도 좋죠
다른 번호를 입력하라고 계속 요청할 테니까요 여러분이
추측한 정확한 숫자가 아니라 유효한 숫자를 입력할 때까지요 유효한
숫자죠
외부 루프 프로그래밍을 볼 수 있어요
네 네 외부 루프는 사용자가 정확한 숫자를 추측하거나 트라이를
반복할 때까지 숫자를 입력하도록 요청하는
루프입니다
내부 루프를 볼 수 있어요 0에서 20 사이 숫자가 유효하지 않다면
사용자에게 계속 유효한 숫자를 입력하라고 하죠
그런 다음 if문을 볼 수 있어요 숫자가 너무 낮은지,
너무 높거나 같은지 확인하기 위해서요
네 외부 루프에 대한 다중 출구 조건이 있기
때문이죠 정답을 맞혔든 틀렸든 숫자가 같든 아니든요
브레이크 문 사용하기에 좋은 사례가 될 수 있습니다
왜냐하면 출구가 여러 개일 땐 브레이크 문을 사용한다는
걸 기억하세요
네 그래서 외부 루프 안에 이렇게 쓰여 있을 수 있어요 그들이
제대로 추측하면 튀어나오라고요
네 그리고 외부 루프의 조건은 while 루프나 for
루프 자체에서 조건 x는 try의 수가 5보다
크냐 아니냐죠
그것도 하나의 디자인 접근법이죠
많은 얘기를 했죠
이제 남은 건 모든 걸 마음대로 할 수 있는 것뿐이죠
다 외우셨다면 이 난수 생성기를 참고할게요
새롭네요
네 네 if문도 할 줄 알고 루프도 할 줄 알고
변수 선언도 할 줄 알죠 좋은 건 다 아시네요
네 디스플레이에 출력하는 법은 아는데 임의 숫자
생성기는 모르네요
그에 대한 코드를 드릴게요
난수를 생성해야 해요
프로그래밍을 실행할 때마다 예상할 수 있는 새
숫자를 얻어야 하니까요
0부터 20까지의 난수를 생성하려면 이 단계를
거쳐야 해요
먼저 두 가지 추가 요청을 포함해야 합니다, 시작이죠 h, 시간요 H요
파일 상단에 이런 포함 명령법을 추가하세요
Sdtlib요 h는 스랜드 기능을 써서 난수를 생성할
수 있어요
시간 됐어요 h는 임의의 숫자를 제공합니다 현재
시간을 이용해서요
네 우리 프로그램 외부의 추가 라이브러리를 포함하는 건 추가 기능을
수행하길 원한다는 뜻이에요
네 네 좋은 게 2개 있어요 현재 시간을
알 수 있고 우리가 사용할 난수를 생성하기 위해서요
? 네, 맞아요
그래서 첫 2개 지령을 상단에 포함시키죠
네 그리고 나서 메인 함수 내에 time_t이라는
변수를 생성하겠습니다 이름을 t라고 지어주세요 그걸 더하는 거죠
네 네 시간 변수를 추가하면 sand 함수를 이용해 난수
생성기를 초기화할 수 있어요
스랜드라고 하면 돼요
이게 무작위 발생기에 씨앗을 공급해 초기화에만
사용하죠
네 여기에 이 코드를 복사하면 돼 그리고 시간을
입력하면
이 코드가 뭔지 이해하실 필요도 없어요 그냥
복사해서 붙여넣기 하세요
하지만 아란돔을 생성하고 있고 난수 발생기를
초기화하고 있어요
아란돔 숫자 생성기를 초기화한 후 그 숫자를
생성해야 해요
네 그 숫자를 생성하려면 랜드라고 하고
랜드라는 함수를 호출해서 %21이라고 하면 돼요 모듈이죠 0과 21 사이여야
하니까요 하드코드 21개를 사용하죠
네 정수에 난수 저장할 수 있고 루프를 종료할
때 그 수와 비교할 수 있어요 정답이든 아니든
간에요
네 또한 이 숫자와 비교해서 너무 낮게 출력했는지
혹은 높게 출력했는지 판단할 수 있습니다
아주 재미있을 거예요
네 네 다시 말하지만 많은 개념을 보게 될 거예요
if문 루프 구문 브레이크 문 내부와 외부 루프 중첩된
루프 멋진 게 많죠
그러니 행운을 빌고 즐기세요 다음 강의에서 해결책을
알려 드릴게요 고마워요