1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN : 그것은 나, Zamyla입니다. 3 00:00:02,500 --> 00:00:06,910 마리오 오늘, 우리는 할거야 마리오의 절반 피라미드 그리기 4 00:00:06,910 --> 00:00:08,290 올라갈 수 있습니다. 5 00:00:08,290 --> 00:00:11,570 >> 그럼에 대해 이야기하자 우리 이 문제에 대한의를해야 할 일. 6 00:00:11,570 --> 00:00:13,610 우리는 할거야 메시지를 표시하고 검증하는 7 00:00:13,610 --> 00:00:18,290 방법의 올바른 입력을위한 사용자 높은 그들은 마리오의 피라미드가되고 싶어요. 8 00:00:18,290 --> 00:00:20,090 그리고, 우리는 그것을 그릴 것입니다. 9 00:00:20,090 --> 00:00:24,870 그럼 프롬프트를 시작하자 그들의 입력을위한 사용자를 검증. 10 00:00:24,870 --> 00:00:27,640 >> 우리는 사용할 수있다 CS50 라이브러리 함수 11 00:00:27,640 --> 00:00:31,160 을 확인합니다 INT를 얻을 수 사용자는 정수를 입력한다. 12 00:00:31,160 --> 00:00:35,730 모든 양의 정수, 음의 정수, 숫자 0은 모든 공정한 게임이다. 13 00:00:35,730 --> 00:00:41,670 그렇지 않으면, 사용자에게 메시지가 표시됩니다 그들은 입력 유효한 정수 때까지 다시 시도하십시오. 14 00:00:41,670 --> 00:00:44,210 가져 오기 INT는 않습니다 지금은 비록 우리를 위해 많은 일 15 00:00:44,210 --> 00:00:46,730 보장 그 사용자는 우리에게 정수를 제공, 16 00:00:46,730 --> 00:00:50,760 우리는 여전히 일부를 적용해야 그에 대한 추가 제한. 17 00:00:50,760 --> 00:00:56,420 결국, 우리는 마리오 등반을 가질 수 없습니다 12 음의 높이의 반 피라미드. 18 00:00:56,420 --> 00:00:59,040 >> 그 이외에 문제 사양 19 00:00:59,040 --> 00:01:02,490 즉, 우리는 할 수 말한다 마리오가 상승 할 수 있습니다 20 00:01:02,490 --> 00:01:06,940 0에서 23 사이의 높이의 피라미드. 21 00:01:06,940 --> 00:01:11,120 OK, 그래서 우리가해야한다는 것을 의미합니다 지속적으로 사용자에게 메시지를 표시합니다 22 00:01:11,120 --> 00:01:14,320 우리에게 유효를 제공합니다 숫자 만 계속 23 00:01:14,320 --> 00:01:17,120 그들은 우리에게 유효한 높이를 준 후. 24 00:01:17,120 --> 00:01:18,720 우리는 어떻게해야합니까? 25 00:01:18,720 --> 00:01:23,760 >> 음, 연속 공정은 우리에게 loops--하고 무언가의 아이디어 26 00:01:23,760 --> 00:01:24,720 반복. 27 00:01:24,720 --> 00:01:28,220 동안으로 C에서 하나의 루프 루프가 계속 것 28 00:01:28,220 --> 00:01:33,480 만큼 루프의 본체를 실행할 지정된 조건이 true로 평가합니다. 29 00:01:33,480 --> 00:01:36,200 즉시 그 조건으로 false로 평가, 30 00:01:36,200 --> 00:01:39,770 프로그램으로 이동합니다 무엇이든 그 후에 온다. 31 00:01:39,770 --> 00:01:43,180 루프의 한 방법 동안 그래서 지속적으로 우리 것을 보장 32 00:01:43,180 --> 00:01:45,320 유효한 사용자에게 입력하라는 메시지를 표시합니다. 33 00:01:45,320 --> 00:01:50,070 그리고 그들은 우리에게 유효한 입력을 제공하면, 우리는 다음에 오는대로로 진행됩니다. 34 00:01:50,070 --> 00:01:54,380 우리는 우리가 묻는거야 알고 적어도 한번의 입력을 위해 사용자. 35 00:01:54,380 --> 00:01:59,200 그래서 지금 우리는 자매에 와서 계십니까 ​​루프 동안이다 루프 동안. 36 00:01:59,200 --> 00:02:02,650 >> 루프가 실행됩니다 동안 수행 적어도 한 번 루프의 몸. 37 00:02:02,650 --> 00:02:06,150 그래서 조건을 확인하지 않고, 이것은 루프의 본문을 실행할 것이다. 38 00:02:06,150 --> 00:02:09,750 그리고 확인하기 위해 상태를 확인 여부 자체를 반복 할 필요가있다. 39 00:02:09,750 --> 00:02:13,080 이 때 유용 우리는 사용자 입력의 유효성을 검사하고 있습니다. 40 00:02:13,080 --> 00:02:15,830 우리는 우리가 가고 있다는 것을 알고있다 적어도 한 번을 요청합니다. 41 00:02:15,830 --> 00:02:18,780 그래서 할 일이 While 루프는 수도 이 같은 모양. 42 00:02:18,780 --> 00:02:20,090 우리는 정수 n이 있습니다. 43 00:02:20,090 --> 00:02:22,760 그리고 할 일의 내부 루프 동안, 우리는 즉시 44 00:02:22,760 --> 00:02:24,750 정수에 대한 사용자하라는 메시지를 표시합니다. 45 00:02:24,750 --> 00:02:29,740 n이 무효 인 경우에, 우리는 그들을하라는 메시지가 표시됩니다 다시하고 다시하고 다시 그들까지 46 00:02:29,740 --> 00:02:31,820 우리에게 그 유효한 정수를 제공합니다. 47 00:02:31,820 --> 00:02:37,440 n은 유효한 입력이되면 마지막으로, 우리는거야 우리의 프로그램의 나머지를 진행합니다. 48 00:02:37,440 --> 00:02:41,830 >> 그럼 사양 체크로 돌​​아 가자 어떤 유효한 입력을위한 조건 49 00:02:41,830 --> 00:02:43,670 될 것입니다. 50 00:02:43,670 --> 00:02:48,090 유효한 높이는 가고있다 0 ~ 23 사이. 51 00:02:48,090 --> 00:02:53,350 그래서 잘못된 높이는 가고있다 0보다 작거나 이상 23 일. 52 00:02:53,350 --> 00:02:56,420 그래서 디자인하는 기억 당신의 상태 신중하게, 53 00:02:56,420 --> 00:02:58,660 조건 것을 알고 않지만 루프 54 00:02:58,660 --> 00:03:01,470 n은 유효하지 않은 상태에서해야한다. 55 00:03:01,470 --> 00:03:05,080 지금이은을 될 수 없습니다 단순한 하나의 부울 식입니다. 56 00:03:05,080 --> 00:03:07,630 우리는 결합해야 할거야 두 개의 서로 다른 표현 57 00:03:07,630 --> 00:03:09,900 우리의 전체 상태를 확인합니다. 58 00:03:09,900 --> 00:03:13,290 >> 그럼 그냥했습니다 진리표를 살펴 보자 이미 우리가하고있는 힌트를 제공 59 00:03:13,290 --> 00:03:15,200 이 부울 처리 할 것. 60 00:03:15,200 --> 00:03:19,620 그래서 여기 진리표는 어디 I 이 Booleans-- 부울 1과 2가 있습니다. 61 00:03:19,620 --> 00:03:27,050 그래서 우리는 평가 할 수있는 옵션이 있습니다 bool1 및 Bool2를 또는 bool1 또는 Bool2를. 62 00:03:27,050 --> 00:03:31,980 만 두 경우에 해당됩니다 부울 모든 반면, true로 평가 63 00:03:31,980 --> 00:03:37,280 또는 한만큼 사실 일 것입니다 두 부울 true로 평가합니다. 64 00:03:37,280 --> 00:03:41,450 좋아, 그럼 잠시 시간을내어이 일시 중지 동영상이 진실 테이블을 소화하고. 65 00:03:41,450 --> 00:03:42,930 나는 여기 기다리고있을 것입니다. 66 00:03:42,930 --> 00:03:45,760 당신이 돌아올 때, 참조 당신은 조각 같이 할 수있는 경우 67 00:03:45,760 --> 00:03:51,910 대한 부울 식 당신의 (n)의 조건은 유효하지 않은 입력되고. 68 00:03:51,910 --> 00:03:54,420 >> 그래서 지금 우리가 가지고 유효한 사용자 입력하자 69 00:03:54,420 --> 00:03:58,710 가서 우리 방법에 대해 이야기 반 피라미드를 그릴 수 있습니다. 70 00:03:58,710 --> 00:04:03,410 다음은이 간단한 텍스트 편집기에서, 나는 왼쪽 정렬 피라미드를 그려했습니다. 71 00:04:03,410 --> 00:04:07,050 그러나 우리는 우리가해야 할 것을 알고있다 피라미드 오른쪽으로 정렬한다. 72 00:04:07,050 --> 00:04:08,650 그래서 나는 이것을 어떻게 할 수 있는가? 73 00:04:08,650 --> 00:04:11,440 글쎄, 난 밀어 시도 할 수 있습니다 측면에 이르기까지 모든 74 00:04:11,440 --> 00:04:14,880 조금을 넣어 그 사이에 문자. 75 00:04:14,880 --> 00:04:16,779 그리고, 다음을위한 라인은 내가 넣어 갈거야 76 00:04:16,779 --> 00:04:20,970 좀 더 문자, 그것을 따라 밀어 및 further-- 등 등 forth-- 77 00:04:20,970 --> 00:04:23,360 나는 오른쪽 정렬 피라미드를 때까지. 78 00:04:23,360 --> 00:04:27,780 그래서 우리는 오른쪽 정렬 피라미드가, 그러나 이 점과 그렇게 큰 보이지 않는다. 79 00:04:27,780 --> 00:04:30,680 그러나 우리는 아직도 원하는 그 좋은 간격을 유지한다. 80 00:04:30,680 --> 00:04:35,260 그래서 나는 문자 그대로에 갈거야 일부 공백을 삽입합니다. 81 00:04:35,260 --> 00:04:39,420 >> 대신 세 개의 점, 나는거야 하나, 둘, 셋 공간을했습니다. 82 00:04:39,420 --> 00:04:40,370 두 번째 줄에. 83 00:04:40,370 --> 00:04:42,640 나는 하나, 둘 공백을 넣을 수 있습니다. 84 00:04:42,640 --> 00:04:45,370 그리고 끝에서 두 번째에 라인, 하나의 공간. 85 00:04:45,370 --> 00:04:48,290 그리고 여기가 오른쪽 정렬 된 피라미드가있다. 86 00:04:48,290 --> 00:04:52,170 텍스트의 예를 일에서 편집기, 우리는 패턴에 대한 아이디어가 87 00:04:52,170 --> 00:04:54,590 우리는 반 피라미드를 그리는 데 사용할거야. 88 00:04:54,590 --> 00:04:58,080 모든 행을 위해, 우리는 무엇을했다 우리는 약간의 공간을 입력하고, 89 00:04:58,080 --> 00:05:00,170 다음 입력 된 일부 해시 한 다음 입력 90 00:05:00,170 --> 00:05:03,020 Enter 키, 어떤 새로운 라인을 만드는 것입니다. 91 00:05:03,020 --> 00:05:07,770 그래서 지금 우리가이 있는지, 가자 한 걸음 더 나아가와 패턴을 찾을 수 있습니다. 92 00:05:07,770 --> 00:05:10,170 >> 그래서에 대해 말할거야 이 예제의 관심, 93 00:05:10,170 --> 00:05:12,480 우리는 팔의 높이를 처리하고 있습니다. 94 00:05:12,480 --> 00:05:17,100 첫 번째 행이해야 할 것입니다 일곱 공간을 다음과 해시. 95 00:05:17,100 --> 00:05:20,020 두 번째로는 세 해시, 여섯 공간. 96 00:05:20,020 --> 00:05:24,260 셋째 row-- 네 해시, 오 spaces-- 등등 등등 97 00:05:24,260 --> 00:05:26,350 우리는 n 번째 행에 도달 할 때까지. 98 00:05:26,350 --> 00:05:31,540 그럼, 나는 n 번째 행을 요청, 얼마나 많은 해시 우리는해야 할 것 99 00:05:31,540 --> 00:05:33,120 얼마나 많은 공간? 100 00:05:33,120 --> 00:05:37,000 그래서 그것은을 파악하는 당신까지 공식은 얼마나 많은 해시를 대표하는 101 00:05:37,000 --> 00:05:42,020 얼마나 많은 공간은 필요하다 n 번째 행 당신은 어떤 높이가있을 때. 102 00:05:42,020 --> 00:05:46,060 >> 이제 당신이 알아내는 때, 당신이 색인을 생성하는 방법에주의해야합니다. 103 00:05:46,060 --> 00:05:49,170 내가이 뜻하는 것입니다 우리 모두 일상 생활에서 104 00:05:49,170 --> 00:05:51,540 (1)에 의해 일반적으로 계산 시작합니다. 105 00:05:51,540 --> 00:05:55,950 CS50 및 컴퓨터 과학하지만 일반적으로, 우리는 0 인덱스입니다. 106 00:05:55,950 --> 00:06:00,620 그래서 첫 번째 행이 될 것이다 한 반대 0 N. 107 00:06:00,620 --> 00:06:04,550 당신이있을 때이의주의 당신의 패턴을 파악하려고합니다. 108 00:06:04,550 --> 00:06:07,570 그래서 지금의 방법으로 돌아 가자 우리는 우리의 피라미드를 그릴 것입니다. 109 00:06:07,570 --> 00:06:12,300 모든 행에 대해, 우리가 원하는거야 , 공간을 인쇄 해시를 인쇄, 110 00:06:12,300 --> 00:06:14,050 다음 새 줄을 인쇄 할 수 있습니다. 111 00:06:14,050 --> 00:06:19,160 여기서 힌트 인 모든 행 "에 대한"단어. 112 00:06:19,160 --> 00:06:21,470 C에서, 우리는 구조를 가지고 for 루프라고, 113 00:06:21,470 --> 00:06:25,250 구성되어있는 초기화, 조건, 갱신, 114 00:06:25,250 --> 00:06:26,790 루프의 본체. 115 00:06:26,790 --> 00:06:31,360 >> 내가 안녕하세요, 말하고 싶어 말 세계, 50 배, 내 루프 116 00:06:31,360 --> 00:06:32,880 다음과 같을 것이다. 117 00:06:32,880 --> 00:06:35,480 나는 0으로 내 정수를 초기화합니다. 118 00:06:35,480 --> 00:06:38,230 조건 I는 50 미만이라는 것이다. 119 00:06:38,230 --> 00:06:42,350 그리고 내 업데이트는 그냥 하나마다에 의해 I를 증가. 120 00:06:42,350 --> 00:06:45,140 우리는 또한 루프를 사용할 수 있습니다 일을 반복합니다. 121 00:06:45,140 --> 00:06:47,820 우리가하지 않은 방법을 여기에 주목 하드 숫자 코딩 122 00:06:47,820 --> 00:06:51,820 오히려 가변 배치 대신 조건에 높이입니다. 123 00:06:51,820 --> 00:06:56,420 그래서 내가 여기서 뭐하는거야 내가 반복하고있어한다 피라미드의 모든 행 이상. 124 00:06:56,420 --> 00:07:00,160 나는 각각에 대해 뭔가를 할 수 내 루프의 본체 내부에 행. 125 00:07:00,160 --> 00:07:02,350 >> 우리는 내부 뭐하는거야 루프의 본체? 126 00:07:02,350 --> 00:07:07,120 우리는 이미 말한대로 음, 우리는 인쇄하고 공간과 우리는 해시를 인쇄하고 127 00:07:07,120 --> 00:07:09,480 우리는 새로운 라인을 인쇄하고 있습니다. 128 00:07:09,480 --> 00:07:11,950 루프 그래서 내 외부 다음과 같이 표시됩니다. 129 00:07:11,950 --> 00:07:15,070 나는 모든 행을 반복 피라미드의 사용, 130 00:07:15,070 --> 00:07:18,890 가변이 경우, 신장 그 피라미드의 높이를 저장합니다. 131 00:07:18,890 --> 00:07:22,870 그 루프의 본체 내부, 난 반복적으로 공간을 인쇄하려고 인쇄 132 00:07:22,870 --> 00:07:26,730 반복적으로 해시, 다음 새 줄을 인쇄 할 수 있습니다. 133 00:07:26,730 --> 00:07:31,010 >> 이제, 모든 개념을 사용하여 해당 나는이 거리 스루에에 대한 얘기했습니다 134 00:07:31,010 --> 00:07:35,210 당신은 메시지를 표시 할 수 있어야한다 사용자 입력의 경우, 그 입력을 확인 135 00:07:35,210 --> 00:07:37,370 다음 반 피라미드를 그립니다. 136 00:07:37,370 --> 00:07:41,510 >> 내 이름은 Zamyla이며,이 CS50입니다. 137 00:07:41,510 --> 00:07:43,167