[음악 재생] 데이비드 마란 : 안녕하세요, 여러분. 이 CS50의 supersection입니다. 할당 된 섹션은하지 않습니다 다른 주 시작합니다. 그리고 오늘, 난 여기 있어요 일 해요 마리아 : 마리아. 데이비드 마란 : 실제로 --to 문제를 살펴 하나 코스의 설정 재료의 첫 주, 당신이 CS50의 IDE와 지향 얻을, 비트 리눅스의 운영체제 IDE 실행뿐만 아니라 전환의 일부를 보면 C 선도에 처음부터 문제까지 하나를 설정합니다. 그래서 속히, 문제에서 하나를 설정 당신이 될거야 CS50 IDE에 도입하는 이 웹 기반의 프로그램이다 우리는 순서대로 사용 환경 프로그램을 작성합니다. 그것은 매우 보이도록 설계되어있어 일반적인 컴퓨터의 연상 운영을 실행중인 시스템 리눅스라는 시스템. 그러나 소위 구름에있어, 어느 클래스에있는 모든 사람을 의미한다 실제로 할 수 있습니다 자신의 자신의 계정뿐만 아니라, 그것을 사용합니다. 그래서 당신의 대부분은 아마 사용한 적이 전에 혹은 리눅스 환경 심지어 명령 줄 환경을 제공합니다. 및 커맨드 라인 환경이 다릅니다. 그것은 모든 텍스트입니다. 그것은 모든 키보드 명령을합니다. 그리고 그것은 어떤 마우스 조작없이 아이콘 없다, 어떤 대화 창, 아니 메뉴. 그것은 순수하게 텍스트입니다. 그래서 처음에는 종류 의 단계 같은 느낌 이전 버전과 세련의 관점에서. 그러나 많은 것을 끝 더 강력한, 확실히, 컴퓨터 과학자를위한, 궁극적으로. 그럼 살펴 보자. 여기에서 나는 CS50.io에서 나는 어떤을 통해 당신은 CS50의 IDE에 로그인 할 수 있습니다. 그리고 많은 스크래치처럼, 거기에 이 화면에 세 가지 주요 영역. 따라서 좌측에, 우리가 무슨 파일 브라우저 될 것입니다. 그리고이 폴더에있다 지금 비어있는 최고, 나는 모든 없애있어 이후 내 supersection 전에 파일. 그리고 그 곳에 우리가 정액의 우리가 쓰기 C 파일을 저장합니다. 오른쪽 상단에, 우리는 장소 어디를가 우리의 모든 코드가 기록 얻을 것입니다. 그리고 사실, 나는이 플러스를 클릭하면,이 내가 새 파일을 선택할 수 있도록하는 것입니다. 그리고 나는 여기 또는 C 코드를 작성을 시작할 수 있습니다, 정말, 다른 언어의 수. 그리고 어디를 하단에 말한다 jharvard @ ide50--과 당신은 것입니다 조금 뭔가 말 different--이 무엇을 불렀다? 터미널 창을여십시오. 네. 그래서 터미널 창이다 소위 명령 행 당신이 상호 작용할 수있는 인터페이스를 통해 기본 운영 체제와 함께. 그리고 지금, 우리는 갈거야 이 항아리의 거의 활용 단지를보고, 컴파일 우리가 볼 오류 메시지, 우리의 프로그램을 실행합니다. 그러나 궁극적으로, 우리는거야 뿐만 아니라, 훨씬 더 많은 일을 할 수 있습니다. 그리고 당신은 소프트웨어를 설치할 수 있습니다 당신의 작업 공간을 관리 CS50 IDE 내뿐만. 그러나 다른 시간에 대한 자세한. 그럼 가서 작성할 수 아주 간단한 프로그램 단지 의 예열을 통해 이동합니다 아마도에서는 hello.c, 우리가 쓸 수있는 간단한 프로그램입니다. 이미 새 탭을 열었습니다. 나는 앞서 갈거야 및 표준 io.h.을 포함 말 그런 다음 주 (무효) int로. 그리고 다음의 printf ( "안녕, 세계" 백 슬래시 N, 가까운 인용, 가까운 괄호, 세미콜론. 괜찮아. 그래서 지금 내 창 제목입니다 알 수 있습니다. 그래서 매우 빠르게 갈거야 저장 파일까지 이동합니다. 그리고 그것은 것이 중요합니다 나는 "안녕하세요."이되지를 호출 그래서 아주 일반적인 실수, 특히 문제의 하나는, 설정 실수로 바로 전화를하는 것입니다 프로그램 "물"또는 "욕심"또는 "마리오" "신용"등 나. 그러나 당신은 실제로 만들려면 확실히 당신은 파일 확장자가 이는 유일한 방법은 그 때문에 컴파일러와도 코드 편집기 당신이있어 것을 알고있다 실제로 C 코드를 작성. 그래서 내가 가서 저장을 클릭 할 수 있습니다. 그리고 지금, 너무, 무엇 CS50 IDE 또한입니다되어 우리를 위해 행하신 구문은 모든 것을 강조했다. 그래서 모든 것이 매우 다채로운 만들어졌다. 그리고 전체적인 목적 그것은 작동하지 않습니다. 그것은 내 눈을 끌기 위해 단지 개념적으로 다른 조각 이 프로그램의. 그럼 가서이 컴파일 할 수 있습니다. 그리고 나는이 컴파일 할 수 있습니다 몇 가지 방법입니다. 및 주에서, 구식 방법 우리는했다 이것은 문자 그대로였다 명령 line-- "그 소리의에서는 hello.c." 그리고 나는 Enter 키를 누르십시오. 그리고 아무 일이 보인다 터미널 창에서. 그러나 IDE에서 변화를 어떻게 했습니까? 여기서, 다시, IDE 그냥 의미 통합 개발 환경. 그것은 말하는 멋진 방법 이 통합 개발 소프트웨어 개발을위한 환경을 제공합니다. 그래서 UI에서 무엇을 변경 했습니까? 당신은 무엇을 알아 차렸다 즉 마리아, 다른입니까? 마리아 : 나는 뭔가를 발견 IDE50에서 여기 폴더. 데이비드 마란 : 그래. 그래서 여기뿐만 아니라, 우리가 할 "에서는 hello.c를." 우리는 또한이다 ", a.out의"가 프로그램의 바보 이름 가지. 그러나 실제로는 기본 이름이다 당신은 당신의 코드를 컴파일 프로그램 컴파일러를 말하지 않는다 출력에 어떤 파일. 그래서 나는 이것을 실행하려면, 내가 compiler-- 말할 필요 또는 오히려, 나는 필요 작업 공간을 말할 것을 나는 라는 프로그램을 실행하려면 "의 a.out을." 들어가다. 그리고, 안녕하세요 "거기 세계. "지금"./ ". 실제로 중요하다. 심지어 일반적으로 우리 만하지만 명령 이름 쓰기 당신이했습니다 프로그램 때 서면, 당신은 "./"를 말하고 싶지 않습니다 즉, 명시 적으로 리눅스를 알려주기 때문에 당신은라는 프로그램을 실행하도록 이에 있어요 "a.out의"점 나는 현재 해요이 디렉토리를 의미합니다 될 일에, "a.out의, 작업 공간이라고합니다. 내가 방금 말한 경우 때문에 "a.out의"입력 나는 명령 a.out으로 "하지 얻을거야 발견 "computer-- 때문에 내가 발명 때문에 "a.out의;" 그것은 computer--와 함께 제공되지 않은 어디서 찾을 지 알 수 없습니다, 심지어 맞아 비록 내 코 아래, 말하자면. 그래. 그래서 우리는이를 변경할 수 있습니다 "안녕하세요 -o 그 소리에서는 hello.c."수 내가 Enter 키를 누르 경우, 어떤 프로그램 이 나를 위해 출력거야? 파일의 이름은 무엇입니까? 그래, 다시. 맞습니다. "안녕하세요." 그래서 "안녕하세요"가 될 것입니다 프로그램 이름 우리가 사용했기 때문에 소위 그냥 명령 줄 인수, 의 동작을 변경하는 방법 실제로 출력 컴파일러 특정 파일 이름. 그리고 사실, 난을 확대하는 경우 밖으로 여기 찾아, 지금은 단지 "의 a.out"을 가지고 뿐만 아니라 "에서는 hello.c"뿐만 아니라 "안​​녕하세요". 그래서 지금 내가 할 "./hello,"입력 할 수 있습니다. 그리고 "안녕하세요, 세계."거기 lastly--이 그러나 이제 대회가 될 것입니다 우리는 전체에 사용 학기, typically-- 당신은 또한 단지 말할 수있다 "인사를합니다." 그리고 사실, 그것이야 말하는 날짜에 이미 존재하기 때문이다. 내가 가서 함께 제거 할 수 rm 명령 "a.out의"모두 - 말하기를 "일반 파일의 a.out을 제거?" 그냥 의미, 당신은 확실히 당신은 그것을 삭제하고 싶어? 나는 네 말을하려고 해요. 그리고 나는 제거하는거야 "안녕하세요"가 아니라 "에서는 hello.c." 나는, 명시 적으로 "예"라고거야 그러나 "Y는"뿐만 아니라, 충분하다. 그리고 지금 경우 통지 나 , ls--하는 리콜을 입력 이 모든 목록 list-- 의미 내 폴더에있는 파일의. 그리고 사실, 난을 확대하는 경우 아웃과 좌측 상단에 보면, 그것은 무슨 일이 있다고 확인 이 폴더에,도 그것은 여기까지 IDE50로 표시 비록 하지 작업 공간, 그냥 "에서는 hello.c."이다 그래서 지금 여기의 아래에서, 나는 경우 입력 "안녕하세요, 확인"않습니다, 지금은 더 이상 명령을 볼 수 있지만 무슨 더 복잡한 명령 앞으로 몇 주에 유용 할 수 있습니다. 그리고 지금은 "./hello."말할 수있다 그럼 둘러 보자 다른 리눅스 명령. 그럼 왜 우리는 조치를 취할하지 않습니다 다시 실제로 더 C를 보면 일반적으로, 처음부터 전환 C로, 다음 표정으로 결론 첫 번째 문제에서 C로 설정 좋아. 그래서 나는 앞으로 그냥 깨끗한 갈거야 제어-L 단지 내 작업 공간까지 깔끔한 화면을 유지합니다. 하지만 그 어떤 기능이 없습니다 그렇지 않으면 영향. 우리가 본 리콜 이제 몇 가지 명령. 그래서 우리는 일반적으로, 그 소리를 본 적이 당신 더 이상 수동으로 실행할 필요가 없습니다. 우리는 대신 화장을 사용합니다. 그러나 우리는 또한을 보여주는, LS를 보았다 내 디렉토리에있는 파일의 목록. 그리고 지금 왜 ... 이렇게 두 가지가 있습니다입니다 지금 파일, "안녕하세요"와 "에서는 hello.c." 왜 스타 또는이있다 "안녕하세요"다음에 별표 (*)? 그 기반, 무엇을 의미 않았다 우리는 일주일에 한에서 본 무엇에? 어떻게 생각해? 별은 무엇을 의미 하는가? 마리아 : "안녕하세요"프로그램 For--? 데이비드 마란 : "안녕하세요 *". 네. 오 예? 아, 실행. 맞습니다. 그래서는 것을 의미 "안녕하세요"실행 파일입니다. 그래서 실제로, 그 이유 나는 "./hello."할 수있는 괜찮아. 그래서 다른 내가 여기에서 할 수 있습니까? 글쎄, 내가 할 수있는 밝혀 또한 디렉토리를 생성합니다. 그래서 내가 가서 만들 수 있습니다, 예를 들어, "PSET1"디렉토리. 그리고 문제 설정 사양 당신이 정확히 할 것입니다, 그래서 당신은 오늘 기억할 필요가 없습니다. 그러나 "에서 mkdir PSET1"는 것 전혀 영향을 미치지한다. 그러나 다시, 오류 메시지가 없습니다 일반적으로 좋은 일이있다. 그래서, 아들을 당장 지금 "LS"를 입력하면 나는라는 실행 파일이 "안녕하세요,"C 파일 "에서는 hello.c를"이라고합니다. 그리고 뒤에 슬래시, 너무 말하고,이 디렉토리는 것을 의미한다. 그래서 사실, 지금은 그것을 열려. 그리고 나는처럼 더블 클릭하지 않는다 GUI, 그래픽 환경에서. 내가 대신 "CD의 PSET1을."라고 들어가다. 흥미로운 아무것도 가질 것 같다 내 작은 프롬프트를 제외하고 무슨 일이 있었 here--이 생각 나게 리눅스의 방법입니다 나 나는 어디, 그럼 폴더가 열려 있습니다. 그것은 단지 명시 적으로 나에게 말하고 같은 그래픽에 반대했다. 내가 입력 한 경우 그리고 "LS를,"내가 왜 다른 보여요 당신이 생각, 즉시 메시지를 표시, 나는 PSET1의 내용을 나열 할 때? 마리아 : 당신은 아마하지 않습니다 거기에 아무것도. 데이비드 마란 : 그래. 그래서 우리는 분명하지 않은 거기에 아무것도 생성 난 그냥 디렉토리를 생성하기 때문이다. 지금, 나는에 대한 file--를 만들고 싶었 경우 예, 나는 새 파일을 만들 수 있습니다. 그리고 난에 갈 수 저장하고 파일로 저장, 같은 "mario.c"당신이하고있는 경우 PSET 하나의 표준 버전. 그리고, 어떤 Mac 또는 PC와 같은, 단지 저장을 폴더 "PSET1을 선택합니다. 이제 파일이 비어 있습니다. 그러나의 두 번째 다시 확대 할 수 있습니다. 의 여기에 LS 해 보자. 이제 우리는 "mario.c"를 참조하십시오. 그래서 몇 가지 다른 명령이 있다고 time-- 동안 염두에두고 가치가있다 분명, 또는 제어-L은 내가했습니다 것입니다 타격이었다; MKDIR 우리는 보았다; RM 우리는 어떤뿐만 아니라, 본 적이 제거하거나 파일을 삭제합니다. 당신이 보면 당신은 also-- 수 조심하고 온라인 자습서에, 당신은 -rf RM은 있습니다 말의 아주 일반적인 방법입니다 거기에 물건이있는 폴더를 삭제합니다. 그냥 슈퍼주의, 슈퍼합니다. -rf 재귀 적 의미 그것이 무엇이든 삭제 당신은 삭제하려는 강제 삭제합니다. 이 폴더에 있다면 수단을 그래서 재귀 폴더와 폴더와 폴더, 그들 모두를 삭제합니다. 그리고 강제로조차 할 의미 그래 나 한테 물어 또는 아니오, 나는 확신? 그래서의 슈퍼 위험한 방법 신속하게 물건을 많이 삭제. 그러나 beware-- 너무 자주 용맹을 수행 학생은 실수로, 말, PSET 삭제 예를 들면 하나. 마리아 : 그리고 그들은 만약 단지 -r 할, 그들은거야 모든 단일 파일에 대한 그들에게 있습니다. 데이비드 마란 :입니다 적당히 성가신. 마리아 : 네. 데이비드 마란 : 그래서 이유 우리의 많은, 자기 포함 -rf를 사용하는 습관입니다. 그러나 그것은 위험하다. 그래서 구매자는 조심. 그리고 MV의 종류입니다 흥미롭게도 이름. 그래서이 이동 명령이다, 어떤 이상한 조금 느낌 당신은 참에 사용할 수 있기 때문에 한 장소에서 다른 장소로 파일을 이동합니다. 예를 들어, 내가 엉망한다고 가정. 내가 만든 가정 PSET에 대한 새로운 파일입니다. 그리고 난으로 저장 "greedy.c." 그러나 실수로 난을 가정 저장 IDE50-- 내 작업 공간 자체가 너무 하지 PSET1에. 당신은 왼쪽 상단에서 많이 볼 수 있습니다. "greedy.c이."있다 그리고 몇 가지 솔루션이있다. 그래서 하나는, 내가 사용할 수 있습니다 슈퍼 사용자 친화적 인 방법 그냥 드래그하고 드롭. 그리고 실제로 것 이 문제를 해결. 그러나 오늘, 우리는 볼려고 더 난해한하지만 강력한 방법 이 일을. 그래서 내가 PSET1에서 "LS"를 보자. 그리고 난 단지 "mario.c"를 참조하십시오. 내가 가서하자 "CD를 ..". 그래서 CD를 다시 변경 디렉토리입니다. ".."하지만, 어떤 의미? 마지막으로 나는 말했다 "CD PSET1 "PSET1로 이동합니다. 내가 "CD .."말할 때, 나는 무엇을하고 있는가? 뒤로. 네. 그래서 소위 부모에게 것입니다. 처럼, 한 단계 위로 이동 폴더에서 종료. 그래서 입력합니다. 그리고 실제로,이 무슨 짓을했는지 봐. 그것은 대신 작업 공간으로 저를 이동 의 작업 공간에 PSET1,에. 그리고 지금은 "LS"를 입력하면, 물건의 전체 무리가있다. 에서 "greedy.c는"이있다. 그래서 지금 내가 문자에 MV를 사용하자 PSET1에 "greedy.c"를 이동합니다. 그리고 리눅스의 많은 명령 정확히 다음과 같이 작동합니다. 그들은 인수를 취하지 또는 그들이 하나를 수행 인수 또는 두 개의 명령 줄을 인수 등. 그리고이 경우의 말 그대로 뭘 그것은 succinctly-- 불구하고, 말한다 PSET1에 greedy.c 이동합니다. 들어가다. 아무것도 일어날 것 같다. 나는 다시 LS 할 경우에, 욕심이 사라 졌어요. 내가 "CD의 PSET1"을 할 경우에, 다음 입력하고 LS 다시, 지금은 바로 이곳에있다. 옆을위한 경우로서, 일부는 특히 reason-- 당신은 간헐적있는 경우 네트워크 연결 또는 당신은 주위를 산책하고 노트북 뚜껑 캠퍼스 폐쇄 한 다음 열어 다시 작업 공간 다소 동기, 더 큰 문제가 밖으로 보인다. 그냥 브라우저를 다시로드 윈도우, 그리고해야 재 동기화되도록 왼쪽 파일 브라우저는 정확하게 보인다 터미널 창 등을들 수있다. 걱정하지 않습니다. 때 의심 때문에, 페이지를 다시로드 긴 이미 파일을 저장 한있다. 그래. 그래서 MV는 파일의 이름을 변경하는 데 사용할 수 있습니다. 그리고 이제 살펴 보자 여기에 마지막 명령. 그래서 suppose--이입니다 슈퍼 일반적인, 너무 일찍. 어떤 학생들은 가끔 파일을 생성 라고의 또 다른 하나의 무엇 say--하자? "WATER.C."좋아요 그래서 난 그냥 들어, 소리 것 모두 대문자 이유 없다. 하지만이 아니다 파일의 정확한 이름 우리의 문제는 설정 때문 경우 사양은 말하지 않았다 모두 대문자로 파일 저장 "WATER.C을." 대신, 우리는 기대 소문자 "water.c". 그리고 사실이다 문제 때문에 check50, 당신은거야 프로그램 문제에서의 만남을 자동으로 테스트 하나를 설정 코드의 정확성 당신을 소리 것입니다 경우는 할 수 없습니다 모든 소문자 "water.c"를 찾을 수 있습니다. 그래서이 문제를 해결해야합니다. 에 따라서 여러 가지 방법 그중 첫번째 이렇게 Ctrl 키를 누른 상태에서 클릭하거나 마우스 오른쪽 단추로 클릭하는 것 파일명은 이름 바꾸기를 변경. 이를 위해 완전히 괜찮아요. 그러나 다시, 오늘,하자 그것은 조금 애호가 않습니다. 의 변경 MV를 사용하자 에 "WATER.C" "water.c." 그래서 당신은 또한 첫 번째 인수를 사용할 수 있습니다 두 번째 인수로 이름을 바꾸려면 두 번째 인수는하지, 경우 사실, 폴더 또는 디렉토리 이름. 괜찮아. 그리고 마지막으로, 조금 trick-- 그래서 나는에있어 순간 내 작업 공간 디렉토리. 내가 PSET 하나에 얻고 싶은 경우에, 난 분명 "CD의 PSET1을."입력 할 수 있습니다 하지만 "PSET1"를 입력하기 때문에 지루한 나 파일 이름이나 디렉토리 이름 이상 아직도. 그래서 매우 자주 리눅스, 무엇을 당신은 "PSE"를 입력 시작된다 할 수있다 다만, 지루 탭을 공격하고 보자 당신의 컴퓨터 그림 그것을 밖으로. 그 습관을 슈퍼 도움. 만약 당신이 유일한 캐치이다 시작하는 여러 개의 파일이나 폴더 문자 "P"또는 "PS,"당신은 할 수 있습니다 전에 몇 가지 더를 입력합니다 컴퓨터가 무엇을 알고있다. 마리아 : 우리는 바로 가기를 좋아한다. 데이비드 마란 :이 뜻 당신에게 너무 많은 시간을 절약 할 수 있습니다. 또한,에게 우리는 강의에서 말했듯이 위, 아래, 역사에서 스크롤 할 수 있습니다, 최근에 실행 찾을 수 명령뿐만. 괜찮아. 그래서 지금, 우리의 관심을 다시 돌려 보자 간단한 프로그램으로, 안녕하세요. 그래서 우리는 정확히 컴파일했습니다. 그리고 지금 우리는 왜하지 않습니다 데이터 유형에 대해 살펴 다음 일부에서 전환 C. 스크래치 블록 대응 마리아 : 신난다. 그래서 지금 당신이 시작했는지 C로 프로그램을 작성, 우리는 대화를 시작하는거야 데이터 유형과 변수에 대한. 그래서 일부 데이터 유형 당신 지금부터 알고 싶은 것 아르 것들 아르 파란색으로 강조. 그래서 우리는 첫 번째 INT가 어떤 정수를 의미합니다. 그리고는 같이 정수를 보유하고 guessed--있을 정도로 1, 2, 3, 어떤 다른 정수 당신은 생각할 수있다. 데이비드 마란 : 그리고 또한 음. 마리아 : 그리고 또한 부정적인 사람, 네. 0. 그럼 우리가 수레를 가지고있는 부동 소수점 수있다. 그래서 모든 실수 있어요 즉, 소수점이있다. 따라서 5.0, 5.2,보다 소수점 후 자리, 뿐만 아니라, 또한 부정적인 것들. 그런 다음 우리는 문자 인 문자가 있습니다. 그래서 나는 우리가 이야기 생각 이 강의에서 오늘. 그러나 우리는,을 example--를 들어, 문자가 문자로 저장 될 수 있습니다 B, C--. 그러나 우리는 더 많은 기호가 즉 숯으로 저장 될 수있다. 그리고 그는 ASCII로 저장됩니다. 그리고 우리는 BOOL을 가지고, 이는 부울입니다. 그리고 그 True로 평가하거나 거짓 또는 각각 1과 0,. 데이비드 마란 : 그리고 리콜 그 BOOL은 CS50 라이브러리에서 제공됩니다. 그래서이 내장 아니에요 C는하지만 슈퍼 유용 진실과 거짓의 개념을 가지고있다. 그리고 심지어하지만 재미있는 사실 주라고 수 있습니다. 부울은 기술적으로 얼마나 많은 비트를 필요로 참, 거짓 대 참 표현하기 위해? 얼마나 많은 비트 당신이 생각합니까 당신은 최대로, 필요? 그래, 한. 그래서 그 C를 밝혀 당신에게 하나의 비트를 제공 할 수 없습니다. 측정의 최소 단위 얻을 수는 8 개입니다. 그래서 그들은 당신이있어 약간의 낭비입니다 전체 바이트 또는 8 비트를 이용하여, 참 또는 거짓 나타냅니다. 하지만 그것은 그냥 방법 CS50 라이브러리에서 C로 구현했습니다. 마리아 : 우리가있어 그리고 사람 광범위하게 이야기하지 않을 바로 더블들을 당장, 즉 큰 수레를 위해입니다. 긴 장기 및 단기 정수에 대한도 있습니다. 데이비드 마란 : 사실. PSET 하나의 해커 판에서, 우리는 실제로 오래 오래 사용합니다. 그러나 Standard Edition의 경우 그것은 필요는 없습니다. 마리아 : 차가운. 그래. 그래서 당신이해야 연산자 인 이들의 대부분에 아마 잘 알고. 또한, +; 빼기, -. 곱셈을 위해, 우리는 * 있습니다. 그래서하지 X 우리는 일반적으로 사용하는. 부문, 우리는 백 슬래시가 있습니다. 그리고 모듈은 우리의 마지막 연산자입니다 우리는 지금 당장에 대해 이야기 할 것입니다. 그것은 우리를 수있는 운영자의 나눗셈의 나머지 부분을. 우리가 4 %가있는 경우 2, 4 분할 그래서 2 0의 나머지 2입니다. 그래서 4 % 2은 0입니다. 4 % 3은 1입니다. 당신이 짐작할 수로 4 % 5, 4입니다. 그리고이 모두를 사용할 때 기억 연산자 PEMDAS 규칙을 사용한다. 데이비드 마란 : 그래서, 명확하게하는 경우 4 % 2을, 정확히 왜, 그 0? 마리아 : 4 있기 때문에 나눈 2 0의 나머지 2입니다. 그래서 모듈로 우리에게로 그 나머지를 제공합니다 나눗셈의 결과에 대향. 데이비드 마란 : 그리고 사실, 우리는이 도움을 확인할 수있는 것들 에 대한 몇 가지 문제에 즉 즉, 반드시 하나 아니에요 당신이하려는 경우 자신을 제한의 효과 숫자의 범위 뭔가를 통해 0과 같은, 당신은 주위에 포장 모듈을 사용할 수 있습니다 이전에 20 억 등보다 또는 40 억 값이 우리는 강의에 대해 이야기했습니다. 마리아 : 네. 심지어 우리가 수도 "욕심"에. 데이비드 마란 : 예,에 문제뿐만 아니라, 하나를 설정합니다. 마리아 : 네, 반갑습니다. 데이비드 마란 : 좋은 힌트. 마리아 : 죄송합니다. 부울 그렇게 expressions-- 부울 연산자를 들면, 우리에 대한 모든 이야기를하려고 이러한 것을 당신은 여기를 참조하십시오. 그래서 지금, 우리는 두 가지를 가지고 등호는 동등한 나열. 그래서 사람들은 비교를위한 것입니다. 지금까지 우리는 본 적이 한 기호와 동일합니다. 우리가 할당 할 때이다 변수에 값. 그래서 우리는 다음 INT N = 5 본 적이있는 경우 우리는 변수 (n) 5를 부여했다. 그러나 우리는에 대해 ==를 사용하려는 경우 비교, 우리는 경우 n 개의 == 5를 확인할 수 있습니다. 그리고 n 개의 == 5 경우, 그 사실이야. 그래서 부울 연산자 기본적으로, 우리를 허용, 부울을 평가하기 참 또는 거짓을 표현. 그래서 우리는이 equals--하지 느낌표와 동일합니다. 그래서 우리는 또한 N 여부를 확인 할 수 하지 동일하지 5-- 그래서 N! = 5. 보다 작거나 같 미만, 보다 크거나 같음,보다 큰, 그리고, 우리는 논리를 AND와 논리 OR. 그리고 그 우리가 평가할 수 함께 여러 부울 식 기본적으로 함께 같이 와서 하나의 전체 부울 식입니다. 우리가 숫자를 찾으려면 그래서, 말 그 이상 5 미만 15 동시에, 우리는을 사용 n이 있는지 확인하기 위해 논리 AND 연산자 이상 5 && 미만 15 명. 데이비드 마란 : 그리고 여기, 너무, 정말 쉽게 초기에 실수 단지 하나의 앰퍼샌드를 사용 또는 단일 수직 막대. 희망 컴파일러는 것 에서 소리 당신 실제로 때문에 매우 다른 의미를 가지고있다. 그 호기심을 위해, 그들은있어 비트 연산에 사용되는, 개별 비트에서 작동. 하지만 당신은 여기에 한 쌍을 원하십니까. 그리고 슈퍼 중요한 것입니다 첫 번째, 등호, 항등 연산자로는이다 할당 연산자에 반대했다. 마리아 : 그리고 수직 막대입니다 삭제 및 반환 사이에 위치. 데이비드 마란 : 예. 전형적인 미국 키보드에서. 마리아 : 그래. 그래서 오른쪽으로 이동하자 조건문. 스크래치, 당신은했습니다 이미 본, 아마, 경우에 당신을 수 있도록 문 무엇인가에 해당하는 경우 그 다음, 확인 다른 일을한다. 그래서 당신은 원 수도 당신의 스프라이트가 있는지 확인합니다 다른 스프라이트를 터치 또는 화면의 테두리입니다. 그리고 당신은 원한 수도 게임을 종료하거나 다른 일을한다. 그 구문 그래서 "만약 (조건)"입니다. 그래서 만약 당신의 스프라이트 뭔가를 만지고, 다음 괄호 안에 않습니다. 그 다음 우리는 경우 - 다른 문이있다. 그밖에 우리가 뭔가를 할 수 있습니다 조건이 경우 우리 처음에 확인하는 것은 사실이 아니다. 스프라이트가 닿는다면 국경 다른, 이렇게 다른 뭔가. 그래서 그렇지 않으면 다른 일을 할. 그리고 우리는이에 대한 간단한 예를 가지고있다. 그렇다면 (military_time <12), 우리 는 printf 할 "좋은 아침!" 그밖에 우리가 갈거야 printf의 "안녕하세요!" 기본 예. 데이비드 마란 : 좋은. 마리아 : 차가운. 그래서 지금 우리는 switch 문이 있습니다. 일반 캔에 문을 전환 우리는 같은 일을 많이 할 수 있도록 우리는 단지 이야기하는 것이 if 문에 대해. 예를 들어, 지금 우리가 가지고있는 스위치 문의 일반적인 형태 즉, 우리가 걸릴 수 있습니다 변수라는 N 그리고 많이와 비교 다른 값, 어떤 여기에 우리가 constant1, constant2라고했다. 우리는 더 많은 것을 할 수 있습니다. 그리고 그 경우라고합니다. 우리는 스위치가 있다면 statement--이 작품 단지 우리가이 integers--에 대한 N의이 경우 변수입니다. 변수 (n)는이면 우리를 constant1 같음 코드의 일부 조각을 실행합니다 또는 우리가해야 할 일. 그리고 우리는 휴식 것입니다. 그래서 휴식을 의미합니다 스위치 문 경우 실행이 중지됩니다 n은 constant1 같음 다음 프로그램은 계속됩니다. 그것은 나갈 것입니다 문을 스위치는거야 다른 뭔가를 계속합니다. 그러나, N은 동일하지 않을 경우 constant2에 대한 constant1, 다음의 경우 확인됩니다. 그래서 n은 다른를 constant2 동일한 경우 코드 조각이 실행됩니다. 그리고 그것을 깰 수있을 거라 즉, 그것은 동일한 경우. 그리고 우리는 also--을하지 않은 수 반드시, 기본 케이스를 though-- n이 동일하지 않을 경우 어떤 일이 발생합니다 당신이 열거 한 각 호의 어느 하나에 해당하는 경우. 그리고 기본 경우에, 우리는 또한 반드시 휴식이 필요하지 않습니다 스위치 문이 알 수 있기 때문에 그것은 기본적 후에 종료해야한다고 경우 그 사건이 있다면. 데이비드 마란 :하지만 문체, 우리는 항상 거기에 넣어. 마리아 : 네. 데이비드 마란 : 그래. 그래서 특히, 밖으로 시작할 때 특히 중 적은 경우 편안하고, 나는 개인적 것 그냥 IFS 고수하는 것이 좋습니다 및 IFS-를 elses 및 IF-다른-IF-를 elses 등등 경우에만 그들은 조금이기 때문에 더 간단합니다. 이는 좋은 최적화, 또는 때로는 예술을 코드를 읽기 수 있습니다. 사실, 아마 중간 학기 우리는 문제를 볼 수 있습니다 그냥 잘 보이는 곳에 설정 쉽게 사람을위한 읽기 switch 문을 사용하여. 하지만 걱정하지 마 너무 일찍 집착. 마리아 : 네. 당신이 진술하는 경우가 많이있는 경우, 그냥 아주 읽을 수 없습니다. 그것은 매우 빠른되지 않을 수 있습니다 에 대한 당신은 그것을 통해 이동합니다. 그래서 문은 수 전환 매우 유용합니다,뿐만 아니라 수. 또한, 꼭 기억해하지 않는다 거기에 휴식을 넣어하는 것을 잊지. 데이비드 마란 :이 기억하지 마십시오. 마리아 : 당신이 떨어질 수 있기 때문에 를 통해 또 다른 하나의 경우에서. 그럼이 경우의 constant1을 가정 해 봅시다 거기에 break 문이 없었다. 그 다음 우리는을 통해 가을 수 내부의 경우 constant2. 그리고 우리는 만약 그렇게하지 ​​않으 우리는 이미 케이스 constant1에 도달했습니다 그리고 N과 동일합니다. 따라서, 예를 들어, 우리는 변수가있는 경우 클래스 번호를 포함, N, 우리는 어떤 것을보고 싶어 n은 (50)와 동일한 경우 클래스는 is-- 우리는 CS50은 "인쇄거야 컴퓨터 과학 I. 소개 " 그럼 우리가 깰 것입니다. 그리고 그것 뿐이다. 그러나 만약, N이 같은지 (51)에, 우리는거야 CS51을 소개합니다 "인쇄 컴퓨터 과학 II에. " 그런 다음 다시, 우리는 휴식 것입니다. 그러나, 그때 우리가 넣어 124, 61, 어떤 당신이 생각할 수있는 다른 번호, 또는 프로그램이 진행되지 않습니다 그 인식합니다. 그래서 미안 해요 "라고 말할 것 그 클래스에 익숙하지. " 그리고 그것은 깰 것입니다. 데이비드 마란 : 그래서 당신은 정말 볼 수 있습니다 , 만약 다른 여기에 다른 생각을하는 경우. 그것은 단지 다른 구문이다 똑같은 생각을 표현. 마리아 : 맞아요. 이제 우리는 우리의 원 사업자가 있습니다. 따라서 원 사업자가 세, 조건을 parts-- 경우에 할 수있는 뭔가 그 조건은 사실이다 다음 뭔가해야 할 일 경우 해당 조건은 false입니다. 그래서 당신은, 기본적으로 참조 여기에 구문. 우리는 물음표를 가지고 있고, 다음 짓이야 우리는이를 호출 할 수 있습니까? 데이비드 마란 : 콜론. 마리아 : 콜론. 고맙습니다. 죄송합니다. 그럼 우리의 예를 살펴 보자 우리는이 항아리의 의미를 할 수 있는지 class_num의 == 50. 그래서 여기에 우리는 == 우리 부울 연산자를 참조 즉, 변수 class_num을 비교 50. 그래서 class_num 저장하는 정수입니다. 그리고 그 정수 경우 우리가있어, 50과 동일 저장 것 "데이비드 마란" 문자열 교수 내부. 클래스 번호가되지 않으면 "하지 데이비드 마란", 50과 동일 교수가 될 것입니다. 데이비드 마란 : 감사합니다. 그리고이하는 것과 같다 먼저 눈에, 무엇을 말할 것인가? 마리아 : 나에게 보인다 좋아하는 경우 - 다른 문. 데이비드 마란 : 그래. 사실, 이것은 일종의 꽤 하나 라이너, 그렇게 구현하기위한, 말하자면 정확히 논리 IF-다른 그러나 한 번에 모든 일을. 마리아 : 맞아요. 네. 그렇다면-다른 문 수도 많은 공간을 차지한다. 그들은 너무 오래있을 수 있습니다 이 같은 간단한. 그래서이 매우 될 수 있습니다 간결하고 아주 좋은. 그래서 지금 우리가보고에거야 또 다시 뭔가를 실행, 그래서 검사 여러번 컨디셔닝 다음 일을 계속 그 조건이 참인 동안. 그래서이 우리를 제공합니다 잘 동안 루프에. 왼쪽에, 우리가 우리의 첫 번째 while 루프. 뭔가에 해당하는 동안 그래서, 또 다시 뭔가. 그래서주의해야합니다 우리의 조건은 여기에 상단에 검증됩니다. 우리가 전화를 두 번째 loop--와 반면 DO-동안 우리가 뭔가를 할 loop-- 것을, 우리는 조건을 확인합니다. 그리고 그 상태 경우 사실 계속, 우리는 되돌아 가서 다시 일을. 그래서 큰 차이점은 어디에 조건이 검사됩니다. 그리고 코드는 결코 수도 조건이 아닌 경우 실행될 while 루프와 진정한. DO-동안을 가진 반면 루프, 우리는 코드를 가지고 그것은 항상 한 번 이상 실행됩니다. 그리고 조건 동안 사실 계속, 우리는 돌아가서 내부 다시 반복 할 수 있습니다. 그럼 왜 우리가 사용하는 것입니다 생각하십니까 while 루프를 통해 루프 할-동안? 권리. 우리는 메시지를 표시 할 경우에 따라서 입력의 어떤 종류의 사용자, 우리는 그들에게하고 싶은 경우 자신의 이름을 입력합니다, 우리는 적어도 한 번을 물어보고 싶은. 그리고 그들은 입력 할 경우 그 이름, 우리는 아니에요 다시 묻겠 우리는 이미 그것을 알고 있기 때문이다. 그러나 그들은 입력하지 않은 경우 자신의 이름, 또는 그들이 경우 뭔가를 입력 분명하지 않은 이름, 우리는 여전히 계속하려면 자신의 이름을에 요청. 데이비드 마란 : 그리고 강의에서 우리는 하나가 있었다 얻을 긍정적 INT이 같은 아무것도가 없다 예를 들어, 당신도하지 않았기 때문에 처음 확인 int를 얻었다. 그래서 우리는이 항아리 수행 할 user--에서 int를 얻을 아마도, 그것을 확인, 다시 다시 다시. 마리아 : 맞아요. loops-- 확인하십시오. 루프를 허용 할 수 있습니다 들어 우리는 거의해야 할 일 똑같은 일뿐만 아니라. 실제로 똑같은 일이. 그래서 아무것도 없다는 것을 당신은 루프로 수행 할 수있는 당신은 할 수 없을 것 동안 루프와 함께 할 수 있습니다. 그러나 루프를 조금 보일 수 있습니다 조금 더 복잡한 구문 그들이 가지고 있기 때문에 세 부분으로 내부에 어떤 바로 전에이었다 동안 루프와 조건. 그래서 첫 번째 부분 당신 바다, 가장 왼쪽, 우리가 "INT 드워프 = 0" 그래서이 어디 우리 우리의 변수를 초기화합니다. 그 다음 우리는 세미콜론이 와 "드워프 7. <" 그래서이 곳을하다 조건은 사실이다. 그래서 우리가 가진 것이 무엇인가 반면에 그냥 넣어 loop-- "드워프는 7 <동안" 여기, 그 간다 우리의 루프의 중간. 그래서 "dwaves 7. <" 그리고 우리의 마지막 부분은 "드워프 ++"입니다 이는 우리가 우리의 변수를 업데이트 곳입니다. 중요한 것은 그래서 실현하는 것은이 때문이다 루프이 통과하는 것입니다 일곱 번과 실행 일곱 번. 그래서 우리는 일곱이 드워프, 그들은 모든 것 내가 여기 "라고 말할 것 당신을 돕기 위해, 백설 공주 " 그들은 준비가되어 있기 때문에 백설 공주를 도와줍니다. 루프는, 우리가했을 때와 초기화 및 업데이트 하지 조건 내부, 다시,하지만 전 또는 while 루프 내부 중 확인하기 위해 그 우우 때문에 우리는 항상 그 부분이 필요합니다. 그래서 우리가 가지고 있는지 확인하기 그들, 우리는 여전히했습니다를 추가 할 에, 그냥 괄호 안에. 데이비드 마란 : 그리고 그래서 그때 엔 보인다 강의에서, 예를 들면, 나는 거의 항상 사용하는 등, i와 N 꽤 지루한 변수. 당신은 더 사용할 수있는 것 같습니다 교묘하게, 너무 변수를 지명했다​​. 마리아 : 네, 실제로 아주 좋다 좀 더 설명 변수를 사용하는 다른 사람이 특히 때문에 당신의 code--를 읽고 아마 당신이있어 학년 또는 당신이 협력하는 경우 somebody--와 당신이 있는지 확인하려면 그들이 당신이 무슨 일을하는지 이해합니다. 그래. 그래서이 일이 매우 funky--입니다 루프 내부 루프. 우리가 전에 본 적이 있을지 모르겠어요. 아마 아닙니다. 그러나 우리는 실제로이 항아리를 가질 수 있습니다 그래서 그 대신 루프의 루프. 그래서 누군가는 아마 진행할 수 않습니다 내가 무엇을 통해 여기 일이야? 데이비드 마란 : 나는 자상 할게요. 마리아 : 차가운. 데이비드 마란 : OK. 그래서, 우리는 물건을 인쇄 할 spoiler-- 그 오른쪽 아래에 있어요 그곳에. 마리아 : 오른쪽. 그래, 그래. 데이비드 마란 : 그래서 우리는했습니다 단지 거기에 그 샘플 출력을했습니다. 그래서에서 추론 할 수있다 당신이있어 맨 위의 루프 행 반복 바깥 쪽 루프, 말하자면. 그리고 당신은 이상 반복하고 가장 안쪽의 루프와 열. 그리고 직관적으로,이 희망 의미가해야 때문에 자연에 의해 우리가 본 모든 프로그램 전에 printf와, 기능을 우리는 궁극적으로 사용하고 재료를 인쇄하는 기능을 갖는다 라인에 의해 본질적으로 선. 마찬가지로, 한 번 당신은 출력했다 새로운 라인은있다 더 다시 두 배로없는 뭔가를 인쇄 적어도, 화면에 더 높은 이런 식의 printf를 사용하지. 그래서 그 점에서, 그것은 수 감각있는 가장 바깥 쪽 루프 행을 참조해야한다 각 행 주어진에 대한 때문에, 당신이 원하는거야 다음 XXXXX를 인쇄하고, 다음 행, XXXXX로 이동합니다. 그래서 행이 먼저 온다. 그리고 내 각 행, 당신은 열을 인쇄 할 수 있습니다. 당신은 그것을 할 시도하는 경우 반대, 아마 않을 것 당신이 의도 한대로 나오지. 마리아 : 네. 우리는 다시 갈 수 없어 printf와 함께 이전 행. 데이비드 마란 : 그리고 흥미 롭군요 범위에 대한 오늘의 채팅 당, 실제로, 행 INT는 점이다 즉 맨 위의 루프에 선언합니다. 하지만 여전히 알 내부에, 말하자면, 중괄호 그 즉시 수행 그것은 기술적으로 비록 그 중괄호 ({}). 따라서 행의 범위에있을 코드 조각의 전체, 두 루프의 외부의 내부 루프에 대한 내부의 내부. 그러나 이와는 대조적으로, 여기서 열은 범위에? 변수 열? 그래, 단지 내부 루프. 우리가 접근하지 않기 때문에 그리고 그 괜찮아요 그것에게 그것의 중괄호의 외부. 우리가 모든 새로운 밖으로 인쇄입니다 이 맨 마지막에 라인. 사실 있도록 확인합니다. 따라서이 효과를 가지고, 그것은 같다 세 개의 행과 네 개의 열을하고. 마리아 : 오른쪽. 그래서 우리는 먼저 우리의 첫 번째 행을 통해 이동합니다. 그리고 우리의 첫 번째 행에서, 우리는 할 첫 번째 행 내부에 네 개의 열. 그래서 우리는 네 X의의를 인쇄 할 수 있습니다. 그리고 우리는 이후, 루프를 종료 할 수 있습니다 우리는 이미 네 X의의를 인쇄했습니다. 그리고 우리는 새로운 라인을 인쇄 할 수 있습니다. 그리고 우리는 통과 두 개 이상의 행에 대해 동일한 프로세스 세 총을 확인합니다. 데이비드 마란 : 그리고 그것의 지적 가치 글꼴의 단지 유물, 사실 샘플 출력이 너무 많은 키가 보인다 더있을 것처럼 열보다 행. 그냥 X가 있기 때문에 그러나 그것은이다 이 넓은 것보다 키가 크다. 즉,이 일어나고 그 전부 선 사이 플러스 공백. 마리아 : 오른쪽. 시원한. 데이비드 마란 : 좋아. 그래서 문제에 잠깐 보면, 하나를 설정 질문을 한 다음 휴회? 괜찮아. 문제가 하나를 설정에서 그래서, 세 거기 차 도전, 궁극적으로. 하지만 먼저, 당신은 찾을 수 있습니다 문제는 설정하는 것이 와 같은 사양, 많은 psets를이 가을, 당신을 걸을 것입니다 몇 워밍업 운동을 통해, 몇 가지 자원을 지적 당신 월 또는 5 월 이미 본 없습니다. 예를 들어, CS50 반바지의 제품군을 가지고 짧은 동영상이있는이다, 아니이 달리하지만 아주 주제 specific--은 아마 5 분 루프에 길이 10 분 조건 또는 알고리즘에 이상 더에 고급 주제뿐만 아니라. 그리고 우리는 일반적으로 포함 문제에 그 세트 그래서 학생들이 와 리소스를 가지고 있을 수 있습니다 자료를 검토 이미 강의 또는 섹션에서 제공됩니다. 그러나 이러한 방법은 더 초점을 맞추고 자신의 손끝에서 더. 우리는 또한 문제에 포함하는 경향이 연습이라는 것을 설정합니다. 그래서 거의 모든 내가 할 예 강의에서, 여기에 무대에, 우리 또한 카메라에 촬영 한 더 느린 진행, 에 내게로 더 친밀한 연습 코드의 내 노트북​​, 라인별로 라인 그래서 클래스에서, 우리는 종종거야 무언가 또는 누군가를 통해 탈지 에 끼어합니다 질문에 대답합니다. 그러나 그것은 반드시 침몰하지 않습니다 관객 모두에게있다. 그래서 당신은 코드 연습을 찾을 수 있습니다 대부분의 예제에 대한 우리는 강의에서 여기에서 수행하는 것이 있도록 자신의 진도에 그것을 통해 걸을 수있다 빨리 감기, 되감기 또는 당신이 원하는 경우, 모두 건너 뜁니다. 종종 몇 가지있다 워밍업 질문에 그 의 정렬을 요청 이 물질을 강화 당신이 전에 편안하고 있는지 확인 당신은 PSET의 나머지를 진행합니다. 다음 물론 PSET 자체가있다. 그리고 것들 중 하나 매우 신중하게 우리 CS50에서 할 거의 모든 재미있다 또는 지적 재미 기계적인 단계 그 당신이해야 할 수도 있습니다 거의 항상 아주 잘 설명되어 있습니다. 용어의 과정을 통해, 우리는거야 더 수사 학적 질문을 시작 같은 이런 저런 작업을 수행하는 방법을 기억 하는가? 그러나 일반적으로, 당신은 찾을 수 있습니다 문제 세트를 얻을 기계를 통해 뭔가 그래서 흥미로운 지적 도전 궁극적으로 학생을 남아 있습니다. 그 말한다면, Zamyla, 누구에게 우리 강의에서 오늘을 참조 보관하고, 우리의 오랜 직원 중 하나입니다 또한 연습을 보유 회원 마리오와 같은 특정 PSET 문제에 과 욕심,하지만 올해 물을 수 없습니다. 그리고 그것은 그에서의 그녀가 자주 연습 에 대한 몇 가지 팁과 트릭을 제공합니다 방법 결코 당신을 말하고 없습니다, 진행합니다 정확히 무엇을해야하는지,하지만 조건처럼 rather--, 당신이주는 will-- 경우 적어도 그래서 아이디어 몇 그것은 당신에게 달려 있습니다 궁극적으로 결정하는 어떻게 그들에게 접근한다. 마리아 : 정렬의 높은 수준을 좋아하지 논리 이해 무엇 우리는 무엇을 당신을 요구하고있다. 데이비드 마란 : 맞아요. 그리고, 사실, Zamyla의 연습은 의미 자주 답변을 의 묻는 질문 나는 특히, 시작 할 롱 사양은 조금 어려운 모든 텍스트를 주어진 그들은 그들에 이미지를 가지고있다. 그래서 water.c, 당신은 찾을 수 있습니다 당신이 그것을 완료 한 후, 실제로 비교적 간단합니다. 절대적으로 무리입니다 당신은 탕에가는 시도 벽에 당신의 머리 이 컴파일되지 왜 알아낼 또는 왜 제대로 실행되지 않는 것. 하지만 당신이 완료되면 그것으로 당신은 일단 어떤 레슬링 약간의 시간을 보내었다 당신이 가진 수있는 버그, 당신은 그것의 것을 찾을 수 있습니다 매우 짧은 프로그램입니다. 그것은 단지 몇에서 할 수 있습니다 코드 라인, 대부분의 우리는 경우, 이미 강의에서 여기에서 본 것 당신은 바로 빌딩 블록을 조립한다. 그리고 우리는 제안으로 여기에, 그것은 물어 것 당신은 얼마나 많은 분을 지정합니다 누군가가 캠퍼스에 샤워를하고있다. 우리는이 문제에 지정 물 흐름의 속도를 설정 같은 낮은 흐름 샤워 머리, 많은 펠트 클립 등 우리가 어제 본 또는 그 반대. 그리고 당신은이 수학의 비트 작업을 수행하려면 말할 C를 사용하여 연산을 really-- 우리가 얼마나 물이 많은, 약, 병 우리가 인 경우에 해당 것과 같습니다 N 분 샤워를하고. 이제 mario.c, 이것은 것입니다 약간 더 이상 프로그램이 될 수 있습니다. 아직 긴이 될 것 아니에요. 그냥 몇 줄 water.c 이상. 그러나 기회가 될 것 옛날 마리오를 다시 슈퍼 마리오에서 피라미드 형제 또는 일부 후속. 이 예뻐로 볼 않을거야 또는이 하나만큼 화려한. 우리는 단지 약간의 해시 태그를 사용하는거야 같은 우리가 화면에 여기에있다 ASCII 텍스트를 사용. 하지만 같은 생각에 근접합니다. 그리고 그것은 될 것 첫눈에 그 운동 단지 예쁜 simple-- 보인다 간단한 피라미드를 인쇄 할 수 있습니다. 그러나 몇 가지 특성이있다 여기에 흥미로운 것을. 의 오른쪽 가장자리를 알 수 있습니다 피라미드는 실제로 폭이 있습니다. 그래서 동일한 두 개의있다 높이 열, 어떤 그것은 조금을 필요로하게 생각의 비트를 만들려면 확실히 당신은, 즉 바로 바로 얻을 단지 완벽하게 각도에 반대 선. 그래서 코너 케이스의 약간의 하지만 실제 게임을 일치합니다. 그리고 그것은 또한 처음에는 비 명백하다 공백을 인쇄하는 방법을 한눈에. 그래서 내가 볼 때 샘플 출력 here-- 그것은 spec--도의 IT 가지, 사각형처럼 보이는 그러나의 대각선 사각형, 오프 다진 된 그리고 그것은 단지 공백은, 말하자면이다. 그래서 자주 질문 질문은 여기에 잘, 항상, 나는 해시 태그를 이동 어떻게 오른쪽 위에? 아니면 내가 어떻게 빈 공간을 인쇄 할 수 있습니까? 그리고 실제로 쉽게 대부분의 학생들이 생각하는 것보다. 권리? 당신은에 의해 시각적으로 근사 할 수 있습니다 한 번 또는 두 번 스페이스 바를 타격 세 번. 그리고 심지어 우리 거의 printf와 함께 생각 항상 문자열이나 int를 인쇄 또는 안녕하세요 "와 같은 단어, 단어의 세계 "또는 시리즈, 당신은 또한 바로 인쇄 할 수 있습니다 인용, 공간, 인용을 끝내십시오. 그리고 실제로 줄 것이다 당신이 공백. 그래서 명심하고 이 overthink하지 않습니다. 당신은 정말에있다 행에 의해 행에 의해 행을 결정, 하지 귀하의 예제와는 달리 그 중 전, 얼마나 많은 순간 열은 공백이어야하며, 해시 태그 어떻게해야 그들 중 많은. 이 약간의 시간이 걸릴 수 있지만이야 종류의 궁극적 논리 퍼즐. 마리아 : 네. 그러나 행에 의해 행을가는 논리 여기에 매우 유용 할 것입니다. 데이비드 마란 : 그래. 나는 샘플 코드는 당신도 gave-- 생각 그것은 완전한 프로그램이 아니었다하지만. 당신은 여전히​​ INT 메인 필요 및 무효 및 사용법 #include STDIO.H, 강의에서 물건을 많이. 그러나 빌딩 블록 이있을 것으로 보인다. 그리고 마지막으로 뭔가 좀 더 알고리즘. 그래서 언제 밝혀 당신 CVS 나 편의점에 가서 누군가는 당신을 손 점원 청구서 또는 변경 등의 동전, 알고 보니 그 사람들, 인간, 그들이 알고 아닌지 여부, 아마 무엇을 사용하는 욕심 알고리즘이라고, 당신이 빚하는 경우, 말을함으로써, $ 21 변화 때문에 몇 가지 이유 당신은 매우 저렴한 것을 구입 CVS에서 매우 큰 법안, 이 경우 정말 짜증나는 것 점원은 21 싱글 또는 악화를 준 아직, 동전의 훨씬. 오히려, 합리적인 사람은 무엇인가 아마하기 위하여려고하는 것은 그들이려고하고있다 $ 20 다음 $ 1 지폐 및 잡아 당신이 경우에 두 지폐를 손. 마리아 : 그래서 그들은 최소화하기 위해 노력하고 있습니다 그들이 당신에게 돌려 줄 변경. 데이비드 마란 : 맞아요. 그리고 같은 거래 동전뿐만 아니라. 당신이 빚을 경우, $ 0.50, 말 희망 당신은 50 페니를 원하지 않는다. 대신이 원하는 예를 들어 분기. 지금,이 가정 않습니다 점원은 가지고 모든 교단 충분히 그 그 또는 그녀는 당신을 제공 할 수 있습니다. 그러나 우리는 당신이 가정 허용합니다 문제의 많은. 상기 목적은, 궁극적이다 C 코드에 욕심 알고리즘을 구현한다. 따라서 사용자는 허용된다 얼마나 많은 입력하기 그는를 변경하거나 그녀는 달러 빚진 및 센트, 부동 소수점의 일종 아마 값. 그리고 당신이 수학을해야하고 또한, 알고리즘 파악, 얼마나 많은 동전 내가 줄 수 당신은 최소한 당신에게주는 변화의 정확히 금액입니다. 그러나이있을거야 여기에 몇 가지 까다로운 부분, 오른쪽? 전체가처럼 부정확성 문제. 마리아 : 맞아요. 그래서 부동 소수점 값은 부정확 있습니다. 우리는 오늘 강의에서 얘기 했습니까? 데이비드 마란 : 우리가했던 강의 마지막 시간입니다. 우리는 부정확성에 대해 이야기했다. 그리고 당신은 사용자를 속이고 싶지 않아 얼마나 많은 변화 그 또는 그녀가 빚지고있다. 그래서 연습에 문제 설정 사양, 에 관해서는, 궁극적으로 어떤 생각을 당신은 사람들을 완화 할 수있는 방법 부정확 오류, 잠재적으로. 그것은을 위해, 확실히 피할 수있다 우리가 이야기하고있는 입력. 그리고, 사실, pennies-- 어쩌면 우리가 Zamyla을 연기 할 것이다, 내가 거기 트릭에 대한 생각. 그래서 궁극적으로, 당신을 찾을 수 있습니다 문제의 진행이 주, 첫 번째는, 꽤 작다 다음 배지 후 조금 크다. 그러나 그들 모두 건물을 사용 지난 주부터 블록, 이 supersection에서, 문제 설정 사양 수많은 자원에서 당신을 저장합니다. 하지만 여전히, 만약에 전혀 어려움을 겪고, 특히 적은 편안한 사람들 사이 아니 이전의 배경, 근무 시간에 와서 월요일과 화요일에 수요일과 목요일. 를 통해 토론 CS50로 이동 물론 웹 사이트, 어떤을 통해 당신은 대화를 나눌 수 있습니다 직원과 친구들과 함께. 그러나 궁극적으로, 나는 생각 최선의 충고는 일찍 시작된다. 이 클래스의 종류 아니다 당신을 수요일에 psets를 시작해야한다 밤, 또는 더 나쁜 목요일 밤. 마리아 : 내 최고의 조언이다 월요일까지 시작합니다. 데이비드 마란 : 월. 그래서 당신은 더 already-- 시작하지 않은 경우. 그러나 경우에도하지 월요일 다음 화요일. 더 이전. 그리고 그 이유 코스는 많은 늦은 일이 당신의 비트를 제공합니다 심리적 압력 이전 시작하지만 여전히 수 있도록 상황이 더 오래 걸릴 경우 상황이 미끄러 당신이 예상 한 것보다. 마리아 : 그리고 당신의 사용을 만들고 싶어 근무 시간도, 당신이 할 수있는만큼. 데이비드 마란 : 질문? 괜찮아. 그럼, 왜 우리가 여기에 휴회하지?