ZAMYLA CHAN : 그것은 나, Zamyla입니다. 마리오 오늘, 우리는 할거야 마리오의 절반 피라미드 그리기 올라갈 수 있습니다. 그럼에 대해 이야기하자 우리 이 문제에 대한의를해야 할 일. 우리는 할거야 메시지를 표시하고 검증하는 방법의 올바른 입력을위한 사용자 높은 그들은 마리오의 피라미드가되고 싶어요. 그리고, 우리는 그것을 그릴 것입니다. 그럼 프롬프트를 시작하자 그들의 입력을위한 사용자를 검증. 우리는 사용할 수있다 CS50 라이브러리 함수 을 확인합니다 INT를 얻을 수 사용자는 정수를 입력한다. 모든 양의 정수, 음의 정수, 숫자 0은 모든 공정한 게임이다. 그렇지 않으면, 사용자에게 메시지가 표시됩니다 그들은 입력 유효한 정수 때까지 다시 시도하십시오. 가져 오기 INT는 않습니다 지금은 비록 우리를 위해 많은 일 보장 그 사용자는 우리에게 정수를 제공, 우리는 여전히 일부를 적용해야 그에 대한 추가 제한. 결국, 우리는 마리오 등반을 가질 수 없습니다 12 음의 높이의 반 피라미드. 그 이외에 문제 사양 즉, 우리는 할 수 말한다 마리오가 상승 할 수 있습니다 0에서 23 사이의 높이의 피라미드. OK, 그래서 우리가해야한다는 것을 의미합니다 지속적으로 사용자에게 메시지를 표시합니다 우리에게 유효를 제공합니다 숫자 만 계속 그들은 우리에게 유효한 높이를 준 후. 우리는 어떻게해야합니까? 음, 연속 공정은 우리에게 loops--하고 무언가의 아이디어 반복. 동안으로 C에서 하나의 루프 루프가 계속 것 만큼 루프의 본체를 실행할 지정된 조건이 true로 평가합니다. 즉시 그 조건으로 false로 평가, 프로그램으로 이동합니다 무엇이든 그 후에 온다. 루프의 한 방법 동안 그래서 지속적으로 우리 것을 보장 유효한 사용자에게 입력하라는 메시지를 표시합니다. 그리고 그들은 우리에게 유효한 입력을 제공하면, 우리는 다음에 오는대로로 진행됩니다. 우리는 우리가 묻는거야 알고 적어도 한번의 입력을 위해 사용자. 그래서 지금 우리는 자매에 와서 계십니까 ​​루프 동안이다 루프 동안. 루프가 실행됩니다 동안 수행 적어도 한 번 루프의 몸. 그래서 조건을 확인하지 않고, 이것은 루프의 본문을 실행할 것이다. 그리고 확인하기 위해 상태를 확인 여부 자체를 반복 할 필요가있다. 이 때 유용 우리는 사용자 입력의 유효성을 검사하고 있습니다. 우리는 우리가 가고 있다는 것을 알고있다 적어도 한 번을 요청합니다. 그래서 할 일이 While 루프는 수도 이 같은 모양. 우리는 정수 n이 있습니다. 그리고 할 일의 내부 루프 동안, 우리는 즉시 정수에 대한 사용자하라는 메시지를 표시합니다. n이 무효 인 경우에, 우리는 그들을하라는 메시지가 표시됩니다 다시하고 다시하고 다시 그들까지 우리에게 그 유효한 정수를 제공합니다. n은 유효한 입력이되면 마지막으로, 우리는거야 우리의 프로그램의 나머지를 진행합니다. 그럼 사양 체크로 돌​​아 가자 어떤 유효한 입력을위한 조건 될 것입니다. 유효한 높이는 가고있다 0 ~ 23 사이. 그래서 잘못된 높이는 가고있다 0보다 작거나 이상 23 일. 그래서 디자인하는 기억 당신의 상태 신중하게, 조건 것을 알고 않지만 루프 n은 유효하지 않은 상태에서해야한다. 지금이은을 될 수 없습니다 단순한 하나의 부울 식입니다. 우리는 결합해야 할거야 두 개의 서로 다른 표현 우리의 전체 상태를 확인합니다. 그럼 그냥했습니다 진리표를 살펴 보자 이미 우리가하고있는 힌트를 제공 이 부울 처리 할 것. 그래서 여기 진리표는 어디 I 이 Booleans-- 부울 1과 2가 있습니다. 그래서 우리는 평가 할 수있는 옵션이 있습니다 bool1 및 Bool2를 또는 bool1 또는 Bool2를. 만 두 경우에 해당됩니다 부울 모든 반면, true로 평가 또는 한만큼 사실 일 것입니다 두 부울 true로 평가합니다. 좋아, 그럼 잠시 시간을내어이 일시 중지 동영상이 진실 테이블을 소화하고. 나는 여기 기다리고있을 것입니다. 당신이 돌아올 때, 참조 당신은 조각 같이 할 수있는 경우 대한 부울 식 당신의 (n)의 조건은 유효하지 않은 입력되고. 그래서 지금 우리가 가지고 유효한 사용자 입력하자 가서 우리 방법에 대해 이야기 반 피라미드를 그릴 수 있습니다. 다음은이 간단한 텍스트 편집기에서, 나는 왼쪽 정렬 피라미드를 그려했습니다. 그러나 우리는 우리가해야 할 것을 알고있다 피라미드 오른쪽으로 정렬한다. 그래서 나는 이것을 어떻게 할 수 있는가? 글쎄, 난 밀어 시도 할 수 있습니다 측면에 이르기까지 모든 조금을 넣어 그 사이에 문자. 그리고, 다음을위한 라인은 내가 넣어 갈거야 좀 더 문자, 그것을 따라 밀어 및 further-- 등 등 forth-- 나는 오른쪽 정렬 피라미드를 때까지. 그래서 우리는 오른쪽 정렬 피라미드가, 그러나 이 점과 그렇게 큰 보이지 않는다. 그러나 우리는 아직도 원하는 그 좋은 간격을 유지한다. 그래서 나는 문자 그대로에 갈거야 일부 공백을 삽입합니다. 대신 세 개의 점, 나는거야 하나, 둘, 셋 공간을했습니다. 두 번째 줄에. 나는 하나, 둘 공백을 넣을 수 있습니다. 그리고 끝에서 두 번째에 라인, 하나의 공간. 그리고 여기가 오른쪽 정렬 된 피라미드가있다. 텍스트의 예를 일에서 편집기, 우리는 패턴에 대한 아이디어가 우리는 반 피라미드를 그리는 데 사용할거야. 모든 행을 위해, 우리는 무엇을했다 우리는 약간의 공간을 입력하고, 다음 입력 된 일부 해시 한 다음 입력 Enter 키, 어떤 새로운 라인을 만드는 것입니다. 그래서 지금 우리가이 있는지, 가자 한 걸음 더 나아가와 패턴을 찾을 수 있습니다. 그래서에 대해 말할거야 이 예제의 관심, 우리는 팔의 높이를 처리하고 있습니다. 첫 번째 행이해야 할 것입니다 일곱 공간을 다음과 해시. 두 번째로는 세 해시, 여섯 공간. 셋째 row-- 네 해시, 오 spaces-- 등등 등등 우리는 n 번째 행에 도달 할 때까지. 그럼, 나는 n 번째 행을 요청, 얼마나 많은 해시 우리는해야 할 것 얼마나 많은 공간? 그래서 그것은을 파악하는 당신까지 공식은 얼마나 많은 해시를 대표하는 얼마나 많은 공간은 필요하다 n 번째 행 당신은 어떤 높이가있을 때. 이제 당신이 알아내는 때, 당신이 색인을 생성하는 방법에주의해야합니다. 내가이 뜻하는 것입니다 우리 모두 일상 생활에서 (1)에 의해 일반적으로 계산 시작합니다. CS50 및 컴퓨터 과학하지만 일반적으로, 우리는 0 인덱스입니다. 그래서 첫 번째 행이 될 것이다 한 반대 0 N. 당신이있을 때이의주의 당신의 패턴을 파악하려고합니다. 그래서 지금의 방법으로 돌아 가자 우리는 우리의 피라미드를 그릴 것입니다. 모든 행에 대해, 우리가 원하는거야 , 공간을 인쇄 해시를 인쇄, 다음 새 줄을 인쇄 할 수 있습니다. 여기서 힌트 인 모든 행 "에 대한"단어. C에서, 우리는 구조를 가지고 for 루프라고, 구성되어있는 초기화, 조건, 갱신, 루프의 본체. 내가 안녕하세요, 말하고 싶어 말 세계, 50 배, 내 루프 다음과 같을 것이다. 나는 0으로 내 정수를 초기화합니다. 조건 I는 50 미만이라는 것이다. 그리고 내 업데이트는 그냥 하나마다에 의해 I를 증가. 우리는 또한 루프를 사용할 수 있습니다 일을 반복합니다. 우리가하지 않은 방법을 여기에 주목 하드 숫자 코딩 오히려 가변 배치 대신 조건에 높이입니다. 그래서 내가 여기서 뭐하는거야 내가 반복하고있어한다 피라미드의 모든 행 이상. 나는 각각에 대해 뭔가를 할 수 내 루프의 본체 내부에 행. 우리는 내부 뭐하는거야 루프의 본체? 우리는 이미 말한대로 음, 우리는 인쇄하고 공간과 우리는 해시를 인쇄하고 우리는 새로운 라인을 인쇄하고 있습니다. 루프 그래서 내 외부 다음과 같이 표시됩니다. 나는 모든 행을 반복 피라미드의 사용, 가변이 경우, 신장 그 피라미드의 높이를 저장합니다. 그 루프의 본체 내부, 난 반복적으로 공간을 인쇄하려고 인쇄 반복적으로 해시, 다음 새 줄을 인쇄 할 수 있습니다. 이제, 모든 개념을 사용하여 해당 나는이 거리 스루에에 대한 얘기했습니다 당신은 메시지를 표시 할 수 있어야한다 사용자 입력의 경우, 그 입력을 확인 다음 반 피라미드를 그립니다. 내 이름은 Zamyla이며,이 CS50입니다.