제이슨 허쉬 호른 :에 오신 것을 환영합니다 주 3, 여러분. 우리는 바쁜하지만 흥분이 우리 앞에 절을 참조하십시오. 그래서 첫 번째, 우리는 몇 가지를 만들었습니다 때문에 코스 전진 만, 여전히 학습이 많이 난, 할 떠났다 너희들 일부 자원을 보여 주겠다 그 믿을 수 없을 것으로 증명한다 당신은 접근뿐만 아니라 도움이로 문제는 설정뿐만 아니라, 모든 다이제스트 우리는 당신의 사람을주는 물질 강의와 반바지와 섹션. 그 다음 우리는 처음 20을 보낼거야 섹션에가는 25 분 당신이 나있을 수도 있고 없을 수도 있습니다 GDB, 이 시점에서 사용되고 있지만이며 매우 유용한 도구가 그 것이다 당신은 당신의 프로그램을 디버깅하는 데 도움이됩니다. 여러분의 많은에서의 printf를 사용하고 있습니다 파악하는 프로그램의 중간 변수가 같게 무엇인지. GDB는 심지어 printf의보다 나은입니다 코드를 망치지 않는 당신 때문에 실행 파일을 실행합니다. 그래서 우리는 10 개의 가장 도움에 갈거야 당신이 GDB에 필요한 명령 및 우린 함께하므로 운동에 갈 문제에서 당신은 세 이후를 설정 디버깅을 돕기 위해 GDB를 사용할 수 있습니다 프로그램. 그리고 마지막으로, 우리는 몇 가지를 통해 갈거야 알고리즘을 정렬 및 검색 당신은 강의에서 본, 우리는 것을 실제로 코드, 단지에가는 의사,하지만 코드 이진 검색, 버블 정렬, 선택 및 정렬. 그래서 일단, 내가 가고 싶어 자원에. 이는 광범위한 목록이며,이야 I가 많이 있었기 때문에 작은 글꼴 여기에 적합하다. 그러나 이것들은, 당신을 도울 것뿐만 아니라 다시, 문제의 세트로와 당신이 배운 소화 정보 만 확실히, 퀴즈 시간은 이러한 것이다 올 매우 도움이 될 수. 그래서 일단, 강의 노트. 당신은 cs50.net/lectures로 이동하는 경우 특정 주 및 일에 스크롤, 당신은 각각의 메모가 있음을 볼 수 있습니다 간단하지 않은, 강의 성적 증명서 만의 편집 된 버전 코드 강의에 덮여 있었는지 미리보기 및 기타 도움이 안주. 내가보기 엔 그 이상가는 것이 좋습니다. 그리고뿐만 아니라, 소스 코드가있다 각 강의에서 사용할 수 있습니다. 그리고 또,이 슬라이드는 것입니다 cs50.net/sections에서 온라인으로 제공 저녁. 그래서 두 번째 단락은 매주됩니다 커버 주제, 일반적으로는 5 ~ 15 길이 분. 그리고 그 희망을 당신에게 줄 것이다 다른 주제에 대한 훌륭한 입문서. 셋째 - 이것은 아주 새로운이 있습니다 년 - study.cs50.net입니다. 당신이 그것을 체크 아웃하지 않은 경우, I 매우 당신이 이렇게하는 것이 좋습니다. 당신은 항목을 선택하세요. 우리는 거기에 주제에 수십 있습니다. 그래서 예를 들어, 기능을 선택합니다. 그것은 당신에게 약간의 슬라이드를 제공합니다 및 기능에주의. 사람들은 실제로 슬라이드되는 TF가 동안 사용하는 것이 좋습니다 우리의 섹션에서 프레 젠 테이션. 처리를위한 팁과 트릭도 있습니다 기능, 그리고 거기에와 도움이 연습 문제 당신은 기능과 함께 작동합니다. 우리는 또한 짧은에 당신에게 링크를 제공합니다 기능 및 배 기능 강의에 올라와있다. 이 때문에 study.cs50.net, 새로운 년, 환상적인 자원. 다음으로, 수동입니다 ​​사람을 가지고 당신이 실행할 수있는 명령 명령 행. 그래서 당신에 관한 질문이있는 경우 명령, 예를 들어, 랜드, 그것은 우리 섹션 중 지난 주에 발생 당신은 가능성이 만난 를 통과 할 때 문제가 설정 코드를 생성,하지만 당신은 사람을 입력하면 랜드, 페이지를 얻을 수 있습니다 그 랜드에 대해 모두 알려줍니다. 그것은, 그것은 무엇이 당신을 제공하는 걸리는 파라미터뿐만 아니라 반환 분류 및 간단한 설명 그 기능의. 그래서 랜드를 확인하세요. 그것은 작은 말의 혼란이 될 수 있습니다 그래서 때때로 나는 것을 발견 단순히 내가 알고 싶은 무엇인가 인터넷 검색 답을 찾을 수있는 가장 좋은 방법입니다. 그래서 구글과 연습. 구글을 잘보세요. 그것은 당신의 가장 친한 친구가 될 것입니다. 뿐만 아니라 구글, 당신은 그것을 찾을 수없는 경우 구글에 cs50.net/discuss, 그건 토론 포럼. 당신은 질문이있는 경우에는 기회가, 하나 당신의 700 + 동료의도가 그 질문하라는 메시지가 표시 될 수 있 습니 그것은 이미 논의에 포럼하고 대답했다. 그래서 당신은 일반적인 질문이나이있는 경우 당신은 당신이 생각하는 질문이 어쩌면 다른 사람에 실행했을 수 있습니다, cs50.net/discuss를 확인하세요. 마지막으로, 마지막으로 두 사람은, 당신이 원하는 경우 진짜 인간 사무실 이야기 금요일 시간 월. 온라인 근무 시간도 있습니다 연장 학생. , 그리고 마지막으로 확실히 적어도 나, 느낌표. 당신은 모든 내 연락처 정보가 있습니다. 당신이 무엇이든을 필요로하는 경우에, 결코 없습니다 저에게 연락하는 것을 망설 인다. 항상 이렇게 주시기 바랍니다. 당신의 거의가 Gchat에 저를 추가했습니다, 그래서 실망하고있다 바라건대 그 사이에서 변경됩니다 이것과 다음 절을 참조하십시오. 지금까지 자원에 대한 질문? 좋아요. 마지막으로, 다른 플러그 피드백 sayat.me/cs50. 당신은 나에게 익명의 피드백을 제공 할 수 있습니다 내가하는 방법에 대한. 즉, 지난 주에 정말 도움이되었습니다. 난 너희들의 의견을 몇 가지있어 오른쪽 섹션 플러스에서 후 그것을 본 다른 학생들 주 동안, 그리고 매우 도움이되었다. 나는 시도하고 내 사용을 제한 할 예정 단어 "달콤한"만 표시됩니다 내 열정과 흥분 다른 방법. 그러나 다른 추가가 있었다 실질적인 조언, 흑자와 델타 양. 그래서 나는 너희들에게 의견을주십시오 문제 세트에. 저에게 의견을주고 자유롭게 나의 가르침에. 난 너희들을 위해 여기 있어요. 좋아요. 즉, 내가 가지고있는 모든 것입니다 첫 번째 섹션. 사람은이 있는가 질문 지금까지? 그리고 난에 대한 메모가 제어 센터. 확장 학생들은 나에게 쪽지 한 그들은 어떤 오디오를 얻을 수는 없을 겁니다 말, 하지만 해결하기 위해 내 능력의 부족합니다. 그래서 바라건대, 그 가져 곧 해결. 당신이 온라인으로 시청하는 경우, 안녕, 그러나 당신은 저를들을 수 없습니다. 그래서 첫 번째, 우리는거야 GDB를 통해 이동합니다. GDB, 앞서 암시로, 디버깅 도구입니다 printf의보다 훨씬 더. 그렇다면, GDB, 너희들을 시작하려면 당신은 당신의 제품을 열려 내가 당신에게 이메일로 파일을 이전 -이 파일은 될 것입니다 비트에서 사용할 수있는 온라인 - 와 GDB를 실행합니다. / 파일의 이름을. 첫째, 물론, 당신은 컴파일 할 필요가 GDB는에서만 작동하기 때문에 파일 실행 파일. 그러나 당신은 시작하려면 GDB, 당신이 할 첫 번째 것은, 당신은 GDB. / 시저를 실행합니다. 그래서 우리가하고있는 프로그램의 이름입니다 지금 함께 갈 예정. 그래서 나는 시저를 만들 쓸거야하는 나에게 실행 파일을 제공합니다 여기에 녹색으로 강조. 그리고 나는 GDB. / 세자르를 실행하는거야. 그리고 거기 당신은 간다. 당신은 우리가 일부 텍스트가 나에게 말하고있다 참조 저를주는 GDB의 버전에 대한 다음 몇 가지 보증 정보, 그리고 우리 정렬 보이는 GDP 프롬프트를 가지고 우리의 명령 프롬프트와 같은, 하지만 당신은 열려 참조 괄호, GDB, 가까운 괄호. 우리는이 파일을 계속하고 디버깅하기 전에 나는 여러분 모두에게 보낸, 이제 살펴 보자 몇 가지 유용한 명령은 그래서 우리는 감각이 무엇 우리가 다루려고하고있다. 이 명령은 여기에 나열되어 있습니다 내가 일반적으로 그들을 사용하는 순서. 그래서 실행하여 내 프로그램을 시작 프로그램의 GBD. / 이름, 이 경우, 시저. 그리고 제일 먼저 나는 99.9 %을 시간의 형 휴식을 의미합니다. 즉, 메인에 브레이크 포인트를 설정합니다. 기본적으로, 당신이 무슨 일을하는지 프로그램에서 멈출 것입니다 주요 그래서 당신은 그것을 선 검사 시작할 수 있습니다 라인으로, 오히려 모든 실행하는 것보다 방법을 통해. 당신은 서로 다른 지점에서 손상 될 수 있습니다 코드는하지만, 주는 일반적으로 시작하기 좋은 장소. I 실행 다음 명령이 실행됩니다. 즉, 프로그램의 실행을 시작하고, 당신은 명령 줄을 입력해야하는 경우 인수는, 당신은 그것을 그 명령을 실행합니다. 인수와 함께 실행합니다. 우리는 버전을 통해가는 그래서 이후 프로그램 너희들이다 C의 PSET 두 쓴 - 이 것은 물론, 몇 가지 버그가 있습니다 희망을 우리가 찾을 수있는 것이있는 - 우리는 몇 가지 명령을 실행을 실행하는거야 행 인수로 인해 시저, 너희들은 문제별로 알고 사양을 설정을합니다 명령 줄 인수. 명령의 다음 커플, 다음 하나는 실제로 다음이라고합니다. 즉, 하나의 선으로 당신 라인 소요 프로그램을 통해. 그래서 입력 후 N 치는 것은 당신에게 소요 다음 라인으로, 실행 이전 행. 단계로 이동합니다뿐만 아니라 다음 라인이지만 당신 내부의 기능을합니다. 그래서 당신은 함수를 작성한 경우 코드 또는 탐구하려는 경우 내가, 예를 들어, 당신은의를 명중하고, 수 오히려 다음 라인에가는 것보다 당신이 바로를 통과하고있는 파일 지금, 당신은 실제로 한 단계 것 이 기능의 코드를 참조하십시오. 목록은 매우 친절 사용자, 당신을 보여줍니다 형식, 약 10 정도 선 현재 코드에서 어디에 그래서 당신은 실제로 파일을 볼 수 있습니다 오히려 다시 교환하는 데보다 등 다른보기 사이. 인쇄, printf와 같다 그 이름에서 알 수 있듯이. 즉, 변수가 동일 무엇을 보여줍니다. 정보의 주민들은 정말 도움이됩니다. 이것은 인쇄의 특별 버전입니다. 정보의 주민들은 당신에게 지역 모두 표시 변수는 당신을 위해 모두를 출력 현재 사용할 수있다. 그래서 대신하는 것보다 일반적으로 I, 난 네 개의 변수를 인쇄 내가 루프에 대한에있어 경우에 대한 호기심 예를 들어, 난 그냥 정보를 주민 쓰기 그리고 그것은 나를 어떻게 내 카운터 내가 보여 줄게 난 배열뿐만 아니라, 동일 등호에서 작동합니다. 마지막으로, 계속합니다. 휴식을 입력하면 당신에게 중지 브레이크 포인트에서. 다음과 같은 방법으로 라인을 통해 걸을 수 다음 단계에 맞춰. 다음에 실행되는 프로그램을 계속 지점을 중단 또는 완료하는 경우까지 더 이상 브레이크 포인트가 있습니다. 사용 안 함은 브레이크 포인트를 제거하면 경우 메인에서 휴식을 결정했다 부적절한 내용에 대해, 당신이 원하는 다른 곳을 설정합니다. 그리고 마지막 질문, 종료, GDB의 밖으로 가져옵니다. 그래서이 프로그램은. / 시저, 우리는거야 지금을보고 우리하기 찾기 위해 GDB를 사용하고자하는 이 프로그램의 버그. 나는 이전에이 프로그램을 실행 (50)을 확인하고, 나는 1 눈살을 얻었다. 모든 것은 그것이 컴파일, 존재, 그것 테스트 많이 통과하지만, 대 어떤 이유로, 그것은 제를 통과하지 못한 에 BARFOO, 모두 대문자를, 선회 시험, E-D-U-I-R-R, 모두 대문자, 키로 셋을 사용. 나는 아주 가까이있어. 나는 하나의 문자로 내렸다. 그래서 여기에 몇 가지 작은 실수가있다. 내 코드를 통해 보았다. 나는 그것을 알아낼 수 없습니다. 바라 건데, 너희들이 나를 도울 수 이 버그가 무엇인지. 그래서 우리가하고있는 오류의 에 대한 검색. 의는 GDB로 가자. 다시 말하지만, 나는 GDB. / 시저를 실행했습니다 그래서 지금 우리는 GDB에있어. 그리고 첫 번째 것입니다 내가해야 할 일은? 난 그냥 GDB를 입력 한. 누군가가 나에게 좋은 줄 입력하는 명령입니다. 학생 : 주 휴식. 제이슨 허쉬 호른 : 주 휴식. 환상적인. 씨가 들어 그를 입력하자 너희들은 여기에 시청하거나 볼 수 있습니다 컴퓨터에 따라. 주 휴식, 당신은 볼 것이다 브레이크 포인트를 설정 하였다 - 그것은 좀 이상한 메모리 주소를 제공, 그것은 또한 저에게 줄 번호를 제공합니다. 나는이 파일에서 다시 볼 것, 경우 그 기본을 실현합니다 라인 (21)에 일어났다. 나는 다음에 무엇을 실행해야합니까? 내 프로그램을 실행하고 있습니까? 아니오. 그래서 나는 다음에 무엇을 실행해야합니까? 학생 : 실행합니다. 제이슨 허쉬 호른 : 실행합니다. 난 그냥 실행을 실행하거나해야한다 나는 다른 일을에 추가? 학생 : 인수와 함께 실행합니다. 제이슨 허쉬 호른 :와 실행 명령 인수. 그리고 매우 구체적인 디버깅을 해요 이후 경우, 그 입력해야 명령 줄 인수. 그래서 다시, 인, 세 가지를 실행 할 것이다 나는이 지역의 50에서 얻은 출력. 프로그램 시작. 우리는 몇 라인을 통해 이동합니다. 이제 우리는 21 라인 걸 볼 수 있습니다. 어떻게 우리가 선 21 걸 알 수 있습니까? 때문에 당신은 왼쪽에 보면 내 터미널 창,이 그것은 라인 (21)을 말한다. 그리고 실제로, 저를 준다 라인 21에있는 코드. 그래서 이전에 잘못 말한. 주요 라인 (21)에 실제로 아니다. 주 21 위의 몇 줄입니다. 그러나 라인 (21)에, 그의 여기서 우리는 속보입니다. 이 코드 줄은이 아직 실행되지 않습니다. 그게 중요합니다. 당신이 볼 수있는 선이되지 않았습니다 아직 실행되었습니다. 즉, 다음 코드 줄의 당신은 실행하려합니다. 너희들은 그래서 다음 줄, 와 아마 잘 알고,이는 조건 내가 가지고 있는지 확인 명령 줄 인수를 입력했습니다. 그리고 난에, 두 번째는 무엇인가 그 일의 일부? 내가에 무엇입니까? 학생 : 정수로 변경. 제이슨 허쉬 호른 : 죄송합니다? 학생 : 그것은 변화하고 정수로 인수. 제이슨 허쉬 호른 : 그래서 내가 변경에 인수 문자열을 정수로에서 V1. 그리고 그것은 무엇을 확인하는거야? 학생 : 두 번째가있는 경우 명령 줄 인수, 옆으로 프로그램을 실행하십시오. 제이슨 허쉬 호른 : 그리고 무엇 이 후반 부울 식 검사? 여기이 부분은, 난에? 학생 : 음수의 경우. 제이슨 허쉬 호른 : 물론 무엇을 만들기? 학생 : 물론 그것을 만들기 사실, 긍정적이다. 제이슨 허쉬 호른 : 그렇지. 이것은 그것의 있는지 확인한다 그것은 음 음, 그리고 경우에, 나는 느낌이 다음 줄의 힘이 나 사용자 고함 될 수있다. 그래서이 줄을 실행하기 위해 끝을 공격 할 수 있습니다. 우리는 그 라인을 참조하지 않는 너희들 아마 고함을 볼 것으로 예상 사용자가 다음 반환 때문에 이 라인은 실행되지 않았다. 나는 3 들어갔다. 그래서, 사실, 두 가지 명령을 입력 않았다 행 인수, 3입니다 0보다 크다. 그래서 우리는 그 선을보고, 우리는 실행, 그러나 우리는 단계하지 않았다 만약 조건 내부. 그래서 지금, 다음, 내가 설정하고있어 참조 INT 키는 내가 V1 값임에 동일합니다. 그래서 나를 변수 키를 생성합니다. 그래서 지금 키를 인쇄하는 경우, 때문에 그것은 당신이 볼 수 있습니다 값 변수 안에, 키는 47 같습니다. 즉, 물론 이상한, 그러나 내가하지 않은 때문입니다 아직 그 라인을 실행. I n을 치면 이제, 그 줄을 실행 인쇄 키를 수행 키, 3와 동일합니다 우리가 동일하게 기대하는 것입니다. 그래서 다시, GDB, 라인 당신의 당신이 아직 실행되지 않은 참조하십시오. 당신은 N 또는 S 또는 숫자 쳐야 실제로 다른 명령 그 라인을 실행합니다. 인쇄 키를 누릅니다. 3에서 키의. 지금까지 너무 좋아. 문자열은 일반 텍스트입니다. 의 그 줄을 실행 할 수 있습니다. 나는 사용자로부터 문자열을 받고 있어요. 의 내 지역의 50에 보자, I BARFOO 모두 대문자를 입력, 그래서 그게 내가 입력 이랍니다. 지금은 일반 텍스트를 인쇄 할 경우. 당신은 문자열을 동일 볼 수 있습니다. 그것은 나에게 다른 이상한 진수를 제공 수 있지만에서 수행 사실은 내 캐릭터가 BARFOO 것을 말한다. 나는 키가에 줄선 무엇을보고 싶어하는 경우 이 때, 내가 어떻게 키 확인 할 수? 학생 : 프린트 키. 제이슨 허쉬 호른 : Print 키, 정확하게. 실제로, 바로 가기가 있습니다. 당신은 인쇄를 입력 질리면, 당신은 P를 입력 할 수 있습니다. 그래서 P 키는 똑같은 일을한다. 그리고 또, 내가 3에 해당 참조하십시오. 나는 어떤 키를 모두 찾아 원하는 경우 및 BARFOO 동시에 같게 하지만 각 입력의 피곤했다 한 중 개별적으로 I 정보의 주민들을 입력 할 수 있습니다. 즉, 나에게 키 같음 3를 제공합니다. 일반 텍스트는 BARFOO 같습니다. 또한 나에게이 두 가지 이상한 일을 준다 상단에,이 변수 i와 이 변수 명. 사람들은 실제로 존재하고 내 주요 프로그램. 우리는 그들을 아직 발생하지 않은 하지만 미리보기로, 그 내에서 루프가 존재한다. 그래서 지금, 그들은 몇 가지 이상한 같아 숫자가되지 않았기 때문에 아직 초기화,하지만 그들은 여전히​​ 존재 메모리에, 그래서 그들은 단지 설정하고 일부 쓰레기 값. 그러나 우리는 일반의 키를 보는가 바로 텍스트. 그래서이 줄을 실행하는거야, 라인 (34), 대한 루프. 우리는 뛰어거야 N 타격에 의해 루프. 그리고 우리는 루프의 내부입니다. 우리는 우리의 첫 번째 체크인시입니다. 그리고 또, 이러한 종류의 보일 것 이 때문에 당신에게 익숙한 시저 작성되었습니다 프로그램,하지만 또, 버그의 일종을 가지고 있습니다. 제가 때문에 지금은, 정보의 주민을하는 경우 for 루프 내에서, 당신은 볼 것이다 우리가 예상 한대로 나는, 0 인 것을. 즉, 우리가 설정 및 초기화 무엇 그것은 루프에 있습니다. N은 6 같습니다. 우리는 설정 때문은 의미가 있습니다 일반 텍스트의 strlen 함수에 그것. 그래서 정보를 지역 주민 또는 인쇄를 좋아 변수에 자주 있는지 확인합니다 모든 것은 항상 무엇 나는 그것이 같을 것으로 예상된다. 이 경우, 모든이며 나는 그것이 동일하게 기대하는 것. 그럼 통해 이동 시작하자 이 루프. 지금 제가하고있는 라인은 라인 (36)이며, 경우 일반 텍스트 내가 알기보다 큰 텍스트 나보다 작거나 Z와 동일합니다. 내 문제는 내 첫하지 알고 편지, 그 두 번째 문자로입니다. 우리는 확인 되돌아 보면 50, B는 E의 벌금에 간다. 나는를 복용하고로 떠날거야 A, D. 그래서로 변경하지 뭔가 잘못입니다 두 번째 문자. 그래서 이동하는거야 이 두 번째의. 하지만 어떤 일반을 확인하려는 않은 경우 텍스트 나는이 특히 말았 네 경우, 나는 무엇을해야한다고 생각? 일반 텍스트 나는이 동등해야합니까 루프를 통해 첫 라운드? 학생 : 제로? 제이슨 허쉬 호른 : I의 일반 텍스트? 그래서, 나는, 물론 자본 B.해야 = 0하지만, 일반 텍스트 브래킷 제로 폐쇄 브라켓 B와 동일 때문에 문자열, 우리가 지난 주에 본 것처럼, 배열, 그래서 우리가 있어요 그에서 첫 번째 문자. 그래서 다시, 나는의 일반 텍스트를 인쇄하는 경우 난 사실, 문자를받을 수 있나요 B. 그리고 맞아, 굉장 하죠? 실제로 일반 텍스트 I.이 없습니다 그게 내가 설정 한 변수 중 하나 아니에요 또는 초기화되지만 인쇄 할 수 있습니다 사물의 전체 호스트 중 당신은하고 싶은 경우. 그러나의를 통해 이동하자. 일반 텍스트 나보다 크고 경우 일반 텍스트 나보다 작거나 같다 우리가 가지고 있기 때문에 Z, 그건 분명 사실이다 내가 실행하는거야 자본 B. 거기에 몇 가지 명령을 실행합니다. 우리는 지난 주에 그 수학을했다, 그래서 우리는거야 그것이 작동하는 것을 당연하게 받아 바로 50을 확인하는 방법. 이 중괄호, 첫 번째 나는 경우에 종료 된 것으로 나타났다 조건 번째 나타났다 나는 루프를 종료 걸. 나는 다음을 명중 할 때 그리고 지금, 우리는 볼 수 있습니다 우리는 다시 루프 백에서입니다. 우리는을 통해거야 다시 루프. 의 사실은 두 번째 단계 씩하자 루프와 종류의 반복 정보의 주민. 그래서 우리는 두 번째 반복에있어 우리를위한 루프. 나는 우리가 예상하는 1 같습니다. N은 우리가 기대하는 6 같습니다. 키는 우리가 기대하는 3 같습니다. 일반 텍스트, 당신이 볼 수, 동일 EARFOO는 이제 더 이상 BARFOO 때문이 아니라 우리의 이전의 반복에서, B이었다 자본 E. 변경 그래서 우리는 대략 일 문제가 발생하는,이 때문에 우리가가는 곳입니다 디버깅에 뛰어들. 하지만 아무도 질문이 없습니다 우리가 지금까지 한 일에 대해? 환상적인. 그래서 우리는이 경우를 실행하려합니다 상태, I 폐쇄 일반 텍스트 브래킷 브라켓보다 크고 일반 텍스트 I 이하 Z. 동등하지만 전에 이 때문에는, 그것으로가는 곳 내가 지적하고 싶어요, 내 오류가 알고 I.의 일반 텍스트 밖으로 그래서 의 인쇄를 만들어 보자. 그것은 문자와 동일하지, 그 때문에 지금까지, 모든 것이 잘 좋은 것 같다. 그래서 난 내 논리 당이 선을 기대 이 라인은 진실해야한다. 그것은 자본 편지입니다. I n을 칠 경우에, 우리는 실현 않는이 라인은, 사실, 실행하지 못했습니다. 나는 다른 사람에 경우 아래로 뛰어 올랐다. 왜 이런 일이 가능? 학생 : 당신이 있기 때문에 당신의 상태 일반 텍스트의 큰 A,하지보다 크거나보다. 제이슨 허쉬 호른 : 그래서 내 일반 텍스트를했다 나는 A, 크지 않은보다 큰 거나 같음. 그래서 명확하게, 자본하지 않았다 상태 경우이 트리거, 우리는 한 한 단계 씩, 우리는하지 않았다 필요한 변화를 할 수 없습니다. 그래서, 실제입니다. 내 버그를 알아 냈어. 내 소스 파일에 다시 갈 수있다, 를 변경하고 업데이트 다시 50을 확인 실행합니다. 그러나 우리는 단지 교육학의 들어 볼 수 있습니다 술, 내가 계속합니다. 다른 사람이하는 경우도 실행하지 않지만 무엇을 대신에 해당하는 명령입니다 그는 변경되지 않습니다. 그래서 전혀 변경하고, 아니라면 I 여기에 일반 텍스트를 인쇄, 우리는가는 볼 수 있습니다 그 통해 루프, 실제로하지 않았다 전혀 그 두 번째 문자를 변경합니다. 아직 자본 A.의 그래서 다시, 우리는 우리의 오류를 디버깅. 우리는이 것을 깨달았다 누락 된 일부 논리. 그리고 우리는 전에 미리 그것을 디버깅 실제로 줄을 실행, 하지만 당신은 눈치 챘을 것입니다 있었다 우리 단지 다음을 명중하고있는 경우 그 다른 점프, 그 의미하는 경우 조건 사실이 아니 었습니다. 우리는 실제로하지 않았다 결과 우리가 예상. 그럼 우리는 메시지가 표시 될 수 있었다 있었다 우리가보고, 그래서 기민한하지 즉, 조건 및 사실 여부를 확인하는 경우 우리의 조건을 평가해야 현재 컨텍스트에서 사실. 즉,이 프로그램을 디버깅에 대한 모든입니다. 아무도 질문이 있습니까? 내가 GDB를 종료하기 위해 무엇을 명령 칠 수 있을까? Q. 그리고 내가하라는 메시지가 표시됩니다, 어쨌든 종료? 예 또는 아니오. 나는 예에 맞는다, 나는 GDB를 종료해야합니다. 그래서 GDB에 빠른 뇌관이었다. 사실, 실제 시나리오에서, 나는 근무 시간에 이런 짓을. 나는이 정확한 프로그램에서를 GDBed 학생 사무실 시간. 그리고 우리는 우리가 본 명령에 돌아 가면 하기 전에, 우리는 먼저, 휴식 주를 사용 일 우리는했다. 우리는 명령 행 인수와 함께 실행을 사용, 두 번째 것은 우리가했다. 우리는 이동 옆에 많이 사용 라인을 통해 우리. 그리고 또, 짧은 버전 의 다음 n은. 즉, 괄호의 슬라이드에 회색. 우리는 단계를 사용하지 않은,하지만 우리는하지 않았다 반드시이 경우에 필요. 그러나 우리는 나중에 비트에서 사용할 수 있습니다 오늘에 우리가 디버깅하는 경우에 대한 예를 들어, 이진 검색하면 진 검색은 별도의 호출 기능 만있다 그것은 몇 가지 오류가 발생했습니다. 우리는 한 단계 씩 할거야 이진 검색에 전화 및 실제로 디버깅. 우리가 가지고 있기 때문에 우리가 하나를 사용하지 않은 목록 우리의 코드의 좋은 감각, 그러나 만약에 I 어떤 코드의 I의 감각을 얻을 수 원했는가 정도이고, 난 그냥 목록을 사용할 수 있습니다. 우리는, 우리가 사용하는 정보를 지역 주민을 사용하는 인쇄. 우리가 사용할 필요가 없었다 계속 경우, 어느 쪽도 우리가 사용할 필요가 없습니다 않았다 사용하지,하지만 우리가 한 사용 종료합니다. 다시 말하지만,이 10 명령, 을 연습합니다. 당신은이 (10) 명령을 이해한다면, 당신은 어떤 디버깅을 설정해야 GDB와 함께 실행합니다. 그래서 우리는에 다시 갈 것을 대략 단원의 요점은 오늘 연습 해 이러한 정렬 및 검색 알고리즘. 우리가 그렇게하기 전에, 다시, 질문, GDB에 대한 의견, 우려? 그래서 모든 사람들이 사용하는 것입니다 GDB가 아닌 printf의? 만고의 이익을 위해 그래서 여러분,, 모두가 자신의 머리를 오른쪽으로 고개를 끄덕된다 지금, 그래서 나는 근무 시간에 당신을 볼 수 있습니다 모든 TF가 당신과를 볼 수 있습니다 그들은 방법을 사용하는 저를 보여 말할 것 GDB, 당신은 할 수 있습니다 오른쪽을 표시하는 방법? 종류의? 어쩌면 희망. 쿨. 그래서 우리는로 이동하는 것입니다 정렬 및 검색. 당신은 이미 정렬 된 목록을 볼 수 있습니다 우리, 그러나 그것은하지 않을 것입니다에 대한 항상 사건이 될 수 있습니다. 그래서이 문제에 대한 규격을 설정 문제는 세 가지를 설정, 당신은 반바지를 당신이 실제로보고, 할 수있는 그 팬티를보고하도록 요청합니다. 또한 강의에서 지난 주, 우리는 갔다 이러한 알고리즘의 많은, 그래서 난 가는 클래스에서 시간을 보내고하지 않을 이러한 다시 알고리즘 또는 도면에 어떻게 이들에 대한 사진 알고리즘이 작동합니다. 다시 말하지만, 당신이 다시 볼 수 있다는 정보 강의, 또는 그 정보 반바지에 뛰어나게 포착 이러한 검색, 모두를위한 cs50.net에서 사용할 수있는. 그래서 그 대신, 우리는거야 할이 프로그램을 작성합니다. 우리는 방법의 정신 모델을, 감각이 그들이 작동, 그래서 우리는거야 할 것은 진짜를 코드입니다. 우리는 정신 모델을 설정하는 것입니다, 그 사진, 당신이 경우,에 실제 코드. 그리고 당신은 약간의 혼란 또는 인 경우 정신 모델에 흐릿한, 나는 완전히 이해합니다. 우리는 실제로는 안돼 코드 직선으로 이동합니다. 이 슬라이드에서이 메시지가 요청하는 동안 그래서 당신은 이진 검색을 코딩하고, 수 실제로, 반복 버전 이진 검색, 제일 먼저 I 정말 당신이되고 싶어 일부 의사 코드를 작성합니다. 그래서 당신은이 정신 모델을 얼마나 이진 검색 작품. 만약 당신이 종이 한 장을 꺼내 하나는 쉽게 사용할 수, 또는 열 텍스트 편집기, 그리고 내가 좋아하는 것 쓸 수있는 사람. 쓰기 4 분 타고 이진 검색을위한 의사. 다시 말하지만, 그 정신 모델에 대해 생각합니다. 당신은 질문이있는 경우에는 내가 돌아올거야 우리는 그림을 그릴 수 있습니다. 그러나 첫째로, 우리는 프로그래밍을 시작하기 전에, 내가 쓰고 싶은 이진 검색을위한 의사 그렇게 할 때 우리 다이빙, 우리는 몇 가지 방향이 우리가 머리를해야 곳. 학생 : 우리는 배열을 가정 할 수있다 우리가 얻는 값은 이미 정렬? 제이슨 허쉬 호른 : 그래서 이진 검색을위한 작동하도록 - 우수 질문 - 만약 당신이 정렬에 걸릴해야 값의 배열입니다. 그래서 작동합니다 가정합니다. 우리는 다시이 슬라이드로 이동합니다. 당신은 보라색 함수에서 볼 수 있습니다 선언은 부울 binary_search의 INT입니다 값, INT 값, INT n을. 당신이 나있는 경우에이 익숙 할 것이다 이미 접근 또는 입수하여 문제 세트 더러운 손. 하지만 함수 선언입니다. 또, 걱정 할 필요가 없습니다 이 순간에 그 정도. 내가 정말 원하는 것은 걸릴 것입니다 의사 이진 사분 검색 한 다음 우리가 간다 그룹으로 그 이상. 그리고 주변에 올 것이다. 당신은 질문이있는 경우에는, 느낌 손을 들어 무료. 왜 두 분 이상 소요되지 않는다 의사를 마무리하는? 나는이 그 말도 안되는 것처럼 보일 수 있습니다 알고 우리는 너무 많은 시간을 소비하고 에도 사실이 아니다 뭔가 C하지만, 특히이 더 많은 것을 위해 도전 알고리즘과 문제 우리가 파악해야 세트, 의사는 걱정하지에서 시작 구문에 대해, 단지에 대한 걱정 논리는 매우 도움이됩니다. 그리고 그 방법은 두 가지를 해결하지 않을 한 번에 믿을 수 없을만큼 어려운 문제. 당신은 논리에 집중하고있어 다음 구문으로 이동합니다. OK. 의를 통해가는 시작하자 의사. 나는 진, 여기에 쓴 검색 의사. 우리는에이를 쓸 것이다 함께 탑승. 아니면 내가 쓸거야, 그리고 줄 것이다 나 내가 필요한 지시. 그래서 아무도 나에게 먼저 제공 할 수 있습니다 의사의 라인 입력 이진 검색을 위해 쓴거야? 예, 애니? STUDENT : 동안의 길이 리스트는 0보다 크다. 제이슨 허쉬 호른 : 동안 길이 의 0보다 큰 목록. 그리고 다시, 우리는 몇 가지 C-찾고 참조 여기에 구문 가지. 하지만이 중 대부분은 영어로되어 있습니다. 아무도 그들이 넣어 모든 줄이나요 자신의 의사 코드에서이 전에? 학생 : 배열을보세요 의 숫자를 정렬. 제이슨 허쉬 호른 : 당신이 쓴 "얻을 정렬 된 숫자의 배열입니다. "당 함수 선언, 우리는 전달됩니다 정렬 된 숫자의 배열입니다. 학생 : [청취]. 제이슨 허쉬 호른 : 그래서 우리는 그것을해야합니다. 하지만 그래, 우리는 그것을하지 않은 경우 우리 우리의 배열을 정렬 할 필요가 숫자 때문에 이진 검색 만 분류되어 배열에서 작동합니다. 목록의 길이가 0 인 그래서 동안, 난 일부 괄호에 넣어 것 그것은 조금 더처럼 보이게 C. 그러나 동안은에 매핑하는 것 루프 동안, 그래서이 동안​​ 내부 루프는 우리는 무엇을해야합니까 이진 검색을 위해 할? 나에게 부여하지 않은 다른 사람 아직 답변을하지만 누가 쓴? 학생 : 목록의 중간으로 이동합니다. 제이슨 허쉬 호른 : 톰. 목록의 가운데로 이동합니다. 그리고 후속 질문, 어떤 우리가에있어 일단 우리가해야합니까 목록의 중간? 학생 : 그건 여부를 체크하세요 당신이 찾고있는 번호입니다. 제이슨 허쉬 호른 : 좋음. 목록의 중간에 가서 확인 우리의 가치가있는 경우 - 환상적인. 사람은 무엇을 했습니까 즉,이 다른했다? 그게 바로 그렇습니다. 우리는 이진 검색에 우선 할 일은 목록의 중간으로 이동하고 우리의 값이 있는지 확인합니다. 우리의 값이 있다면 나는 가정 우리는 무엇을이해야합니까? 학생 : 우리는 [청취] 0을 반환. 제이슨 허쉬 호른 : 네, 만약에 우리 값이, 우리는 그것을 발견했다. 그래서 우리는하지만, 어떤 방법을 말할 수있는이 함수가 정의되고, 우리는 사용자를 말한다 우리는 그것을 발견했다. 그것은이없는 경우에, 그러나, 그건 이 까다로운 얻을 곳. 그래서이 아니라면, 다른 사람 누구 이진 검색이나 작업을했다 지금, 우리는 무엇을 생각해야합니까했다? 학생 : 질문. 제이슨 허쉬 호른 : 예? 학생 : 배열이 이미 정렬되어 있습니까? 제이슨 허쉬 호른 : 예, 우리는 가정입니다 배열이 이미 정렬됩니다. 학생 : 그럼 당신은 확인해야 할 경우 당신이 볼 수있는 값보다 큰 당신이 원하는 가치, 당신은 이동할 수 있습니다 나머지 절반의 중간에. 제이슨 허쉬 호른 : 그래서 경우의 중간 목록은 우리가있어 무엇보다 큰 무엇을 위해 우리가 할 찾고? 우리는 위치를 이동? 학생 : 당신은로 이동할 함께리스트 반 보다 낮은 숫자. 제이슨 허쉬 호른 : 그래서 우리는거야 왼쪽이 호출합니다. 중간이 큰 경우에, 우리는 검색 할 수 있습니다 목록의 왼쪽 절반. 다음 검색에 의해, 무엇을 내가 검색을 통해 의미합니까? 학생 : [청취]. 제이슨 허쉬 호른 : 우리는 중앙으로 이동합니다. 우리는 실제로이 일을 반복합니다. 우리는 우리의 while 루프를 통해 다시 이동합니다. 나는 당신에게 마지막 하나를 줄 것이다 - 다른 경우, 중간보다 작 우리는, 우리가 여기서 무엇을해야합니까? 학생 : 오른쪽으로 이동합니다. 제이슨 허쉬 호른 : 오른쪽 검색. 이 좋아 보인다, 그러나 누구가 있는가 우리가 없거나 할 수있다 아무것도 당신은 넣어 그 무엇 당신의 의사 코드에서? 그래서 이것은 우리가 지금까지 것입니다. 리스트의 길이는 큰 반면 0보다, 우리가 갈 예정입니다 목록의 중간에 우리의 값이 있는지 확인합니다. 중간이 큰 경우, 우리는거야 중간 인 경우 검색 다른, 왼쪽 이하, 우리는 권리를 검색 할 것입니다. 그래서 우리는 모두 어느 정도 익숙 했어 우리는 컴퓨터 과학에서 사용하는 용어 그리고 도구는 우리가. 하지만 당신은 이미 우리가 있었던 알 수 있습니다 영어로 말하기, 그러나 우리는 발견 에 매핑하는 듯 많은 것 우리는 우리의 코딩 도구 키트에이 도구를 제공합니다. 그래서 바로 박쥐, 우리는 아니에요 아직 실제로 코딩하는 것. 우리가 영어로 무슨 일을 볼 않는지도 볼거리에에 우리는 C에서 쓸 수 있는가? 학생 :있다. 제이슨 허쉬 호른 : 동안. 그래서 동안이 바로 여기 무엇에 대한지도? 학생 : While 루프. 제이슨 허쉬 호른 : while 루프? 또는 아마도, 더 일반적으로, 루프. 우리는 반복 작업을 수행합니다. 그래서 우리는 루프를 코딩하는 것입니다. 우리가 한 때문에 우리는 이미 알고있다 이 시대의 부부와 우리 , 거기에 많은 예를 실제로 어떻게 작성하는 방법 루프에 대한이 인덱스. 그래서 아주 쉽게해야합니다. 우리는 그것을 얻을 수 있어야합니다 꽤 빨리 시작했다. 또 우리가 여기에서 볼 수 있습니까? 다른 어떤 구조 문법, 일 우리가 C에 익숙한 것으로, 우리가 할 이미 기반의 감각이 우리가 사용하는 단어의 해제? 예, 안나? [청취] 그냥 농담. 안나, 진행. 학생 : 그리고 만약 다른. 제이슨 허쉬 호른 : 경우 다른 - 바로 여기. 그래서 사람들처럼 보이나요? 학생 : 다른 if 문. 제이슨 허쉬 호른 : 네, 조건, 오른쪽? 그래서 우리는 아마해야합니다 몇 가지 조건을 작성합니다. 그리고 다시,하지만 어쩌면에 혼란 첫째, 우리는 일반적으로 지금 감각이 조건을 작성하는 방법 조건 구문. 우리가하지 않으면, 우리는 그냥보고 조건, 잘라 내기 및 붙여 넣기를위한 구문 즉, 우리는 우리가 알고 있기 때문에 여기에 조건이 필요합니다. 우리는에 그지도를 볼 다른 것들 우리는 C에서 수행해야 할 수도 있습니다 것들? 그래, Aleha? 학생 :이 분명있을 수 있습니다 단지 확인했을 경우 값은 무엇인가 같습니다. 제이슨 허쉬 호른 : 그래서 우리가 어떻게 확인합니까 와 - 그래서 목록의 중간으로 이동 우리의 값이 경우 확인? 우리가이 C에서 어떻게해야합니까? 이 구문은 무엇입니까? 학생 : 같음, 같음. 제이슨 허쉬 호른은 : 같음, 같음. 그래서이 검사는 아마 것입니다 등호로, 동일합니다. 그래서 우리는 우리가 그 곳을 필요로 알 수 있습니다. 실제로, 그냥 서면, 우리는 그 무엇을 참조하십시오. 우리는 몇 가지 작업을 수행해야 할 것입니다 비교 연산자가있는 - 환상적인. 그래서 실제로 같은 의해 보인다 큰, 우리가 작성하지 않았습니다 아직 C 코드의 단어입니다. 그러나 우리는 아래로 정신 모델을 가지고 강의와 그 반바지를 통해. 우리는 그룹으로 의사 코드를 썼다. 이미, 우리는 80 %가 아닌 경우,이 우리가해야 할 일의 90 %. 이제, 우리는 단지 코딩해야 그것은 다시하는 것입니다 해결이 아닌 사소한 문제. 그러나 적어도 우리는 논리에 붙어있어. 우리는 근무 시간에 갈 때 지금은 적어도 나는 내가 원하는 것을 알고, 말할 수 할 수 있습니다,하지만 당신은 생각 나게 할 수있다 구문의 날? 아니면 근무 시간은 당신에게, 혼잡 한 경우에도 오히려, 구문 구글 수 논리에 붙어 것보다. 그리고 다시이 아닌 해결하기 위해 노력하고 논리와 문법 문제를 모두 한 번에, 그것은 종종 훨씬 더 로 그 두 개의 하드 문제를 해소 두 더 관리 것들과 할 C.의 의사 코드 먼저 다음 코드 그럼에 대해 내가 무슨 짓 보자 의사 코드를 미리. 리스트의 길이는 큰 반면 0보다, 중간보고 목록. 수 다른, 진정한 반환 발견하는 경우 수 높은 검색 왼쪽 경우. 다른 경우 낮은 번호 검색 오른쪽 false를 반환합니다. 그래서 거의 동일하게 인식하지 않을 경우 우리가 쓴 거의 동일합니다. 사실, 톰, 당신이 먼저 말을, 리스트의 경우와 중간 속보 두 문장으로 찾을 수 내가 무슨 짓을했는지 사실이다. 나는 그들을 거기 결합. 나는 경청해야 당신이 처음. 그래서 우리가 가지고있는 의사 코드입니다. 당신이 지금하고 싶은 경우에, 죄송합니다, 이동 우리의 초기 문제에 백업합니다. 의 코드 binary.c를 보자. 따라서 반복적 인 버전을 구현 다음을 사용하여 이진 탐색 함수 선언. 그리고 당신은 복사 할 필요가 없습니다 그 아래로 아직. 실제로 열거야 최대 여기 binary.c. 그래서 함수 선언이 있습니다 화면의 중앙에. 그리고 당신은 내가 의사 코드를했다 볼 수 있습니다 내 양쪽에서, 그러나 거의 동일 무엇을 우리가 쓰고, 당신을 위해 넣어. 그래서 지금의 5 분 보자 이 기능을 코드에. 그리고 또, 당신은 질문이있는 경우에는, 손을 들어, 난 거 알려 돌아올. 학생 : [청취]. 제이슨 허쉬 호른 : 그래서 진했다 에서 검색 정의 라인 (12)에, 맨. 그게 내가 내 슬라이드있어거야. 그리고이 모든 의사 코드 그냥 복사 및 슬라이드에서 붙여 넣기, 의사 코드 슬라이드. 나는 아직도 들리지] 듣고 있지 않다. 당신이 완료 그래서 경우 구현은, 나는 그것을 확인하고 싶습니다. 나는 당신에게 helpers.h 파일을 이메일로 전송 이전에이 클래스의. 그리고 그것은뿐만 아니라 온라인으로 사용할 수 있습니다 보는 사람들 다운로드 이 섹션의 시간 지연. 그리고 난 그냥 일반적인 분포를 사용 pset3의 코드. 그래서 find.C, 내 helpers.h 파일을 사용했다 오히려 helpers.h 파일보다 즉 분배 코드에 나와 있어요. 그리고 하나의 다른 변경을했다 오히려 단순히 호출하는 것보다 find.C 검색, binary_search 호출합니다. 그래서 당신은 당신의 코드를 테스트하려는 경우, 그 작업을 수행하는 방법 것을 알고 있습니다. 사실, 우리는이 코드를 실행 할 수 있습니다 때 지금, 나는 단지의 사본을 만들어 내 pset3 디렉토리, 다시, 스왑 다음 헬퍼 파일과 만든 그 binary_search를 호출하는 find.C 변화 보다는 간단하게 검색 할 수 있습니다. 제이슨 허쉬 호른 : 예. 당신은 질문이 있다면? 학생 : 걱정하지 마라. 제이슨 허쉬 호른 : 걱정 마. 글쎄, 지금 당장 시작하자. 우리는 그룹으로이 코드를합니다. 또 다른 메모. 다시 말하지만, 이것은 쉽게 교환 할 수있다 문제 3 설정에 대한의. 내 helpers.h 파일이있는, 오히려 helpers.h보다 우리가 제공하고, 이진 검색, 거품을 선언 정렬 및 선택 정렬. 그리고 find.c에 당신은 선에 알 수 있습니다, 무엇이 선 (68)은, 우리가 바이너리를 호출한다는 것입니다 검색보다는 검색. 그래서 다시 사용할 수있는 코드 온라인 또는 당신은 코드 지금 만드는 것은 쉽게 교환 할 수있다 용의 p는 그것을 확인하기 위해 3을 설정합니다. 그러나 먼저, 이진 검색을 코딩 할 수 있습니다. 우리의 함수 선언, 우리는 부울을 반환합니다. 우리는 가치라는 정수를 취할. 우리는라는 정수의 배열을 값, 우리는 할 수 없음이 걸릴 어레이의 크기. 바로 여기에 라인 10에, 나는이 샤프 stdbool.h 있습니다. 그게 왜 거기에 사람이 알고 있나요? 그래서 코드의 라인은 무엇을 하는가? 학생 : 그것은 당신이 할 수 있습니다 부울 반환 형식을 사용합니다. 제이슨 허쉬 호른 : 그렇지. 학생 : 아니면 수있는 도서관 부울 반환 형식을 사용합니다. 제이슨 허쉬 호른 : 그래서 날카로운 포함 stdbool.h 라인은 나에게 약간의를 제공 것들에 대한 정의와 선언 나는에 사용하도록 허용하고 있음 이 라이브러리. 그래서 그 사이에 있다는 것을 말하고있다 이 형식은 BOOL 불리는, 그것은 수있다 참 또는 거짓. 그래서 그 선이 무엇입니다. 나는 그 라인을 가지고 있지 않은 경우, 나는 것 이 글을 쓰는위한 곤경에 바로 여기, 부울, 바로 거기에 단어. 정확히 맞아. 그래서 나는이 코드에서 그 필요합니다. OK. 그래서 이것은, 다시 반복입니다 버전이 아닌 재귀 하나. 그래서 우리가 시작하자. 의이 처음부터 시작하자 의사 코드의 라인. 그리고 바라건대, 우리는 것입니다 - 또는하지 희망. 우리는 방 주위를 이동하는 것입니다. 우리는 줄 단위로 갈거야, 그리고 도움이 될 것입니다 당신은 우리가 필요로하는 라인을 알아낼 최초 작성. 그래서 잠시리스트의 길이 0보다 크다. 의 전면에서 시작하자. 어떤 라인 내가 작성해야 여기에 코드? 학생 : 동안 괄호 n은 0보다 크다. 제이슨 허쉬 호른 : 동안 n은 0보다 크다. 따라서 N은리스트의 사이즈 우리는 경우 확인하고 - [개재 목소리] 제이슨 허쉬 호른 - 네? 학생 : 우리는 어떻게 아십니까 N은리스트의 사이즈? 제이슨 허쉬 호른 : 죄송합니다. PSET 사양에 따라, 검색 및 종류, 당신이 작성해야하는 작용 n은리스트의 크기입니다. 나는 여기에 있다고 설명하는 것을 잊었다. 그러나 예. N은 크기입니다 이 경우의 목록. 그래서 동안 n은 0보다 크다. OK. 즉, 약간의 문제가 될 수있다 하지만, 일을 계속합니다. 우리는 알 것 때문에 이 전역 목록의 크기 기능,하지만 우리가 시작 말 5 정수의 배열. 그리고 우리는 통과하고 우리가했습니다 지금 좁혀 2 정수의 배열. 그 어떤 2​​의 정수이다? 크기는 우리가 원하는 것을 지금 2 봐,하지만 그 어떤 2​​? 즉, 그 질문을 이해합니까? OK. 나는 다시 요청할 것입니다. 그래서 우리는 5이 배열로 시작 정수, n은 바로, 5에 해당? 우리는 여기를 통해 실행할 수 있습니다. 우리는 아마 크기를 변경할 수 있습니다, 오른쪽 것들에 가서. 이는 우리가 우리가하고 싶은 말은 무엇인가. 우리는 검색하지 않으 전체 일 다시. 그래서 우리는 2로 변경 말한다. 우리는 이상한 반 목록을. 그래서 그냥 2를 선택합니다. 그래서 지금 N = 2. 나는 가난한 사과 드라이 지우기 마커. 오른쪽? 그리고 우리는 목록을 검색하는 다시 크기 2의 목록. 글쎄, 우리의 배열은 여전히​​ 5 사이즈입니다. 우리는 우리는하고 싶은 말은 거기에 2 지점을 검색 할 수 있습니다. 그래서 그 어떤 2​​ 점이 있습니까? 그 의미가 있습니까? 그들은 왼쪽 2 점이 있으신가요? 그들은 바로이 점이 있습니까? 그들은 중간 2 점이 있으신가요? 우리는 우리의 문제를 세분화했지만 우리 실제로 모르는 어떤 부분의 우리는 여전히보고있는 문제, 다만이 2 개의 변수를 필요로. 그래서 우리는, 그 후에 조금 필요 n은 0보다 큰 동안. 우리는 알 필요가 어디에 N은 우리의 실제적인 배열이다. 그래서 사람은 있습니까 이 라인으로 변경? 이 라인의 대부분은 아무런 문제. 다른 또 있나요? 우리는에 N 뭔가 아웃 교환 할 수 있습니다 조금 더이 라인을 만들어? 으흠? 학생 : 당신은 변수를 초기화 할 수 있습니다 다음 사용할 수 있습니다 N 길이가 같은 나중에 기능? 제이슨 허쉬 호른 : 그래서 초기화 N에 가변 길이, 우리는 나중에 사용? 하지만 우리는 단지 길이 우리를 업데이트 여전히이 문제로 실행 어디 우리의 문제의 길이를 줄이려고 그러나 우리는 실제로 어디에 있는지 결코 그 길이에 매핑합니다. 학생 :이 발생하지 않을 것입니다 당신이 말을하는지 나중에 때, 왼쪽 검색 바로 검색? 당신은 다른에 가서 귀하의 지역 - 제이슨 허쉬 호른 : 우리는 갈거야 영역에, 우리가 어떻게 알 수 있습니까 에 가서 어떤입니까? 우리는 배열이있는 경우 N, 우리가 어떻게 알 수 있습니까 곳 배열로 이동합니다. 다시, 그래? 학생 : 당신이 있습니까, 같은 낮은 바인딩 및 상한 변수 나 그런 식으로 뭔가? 제이슨 허쉬 호른 : OK. 그래서 이것은 다른 생각입니다. 오히려 단지를 추적하는 것보다 크기, 우리는 낮은 추적 및 상한 변수입니다. 그래서 우리가 어떻게에서 크기를 계산합니까 하한 및 상한값? [개재 목소리] 제이슨 허쉬 호른 : 빼기. 또한 하부의 트랙을 유지 바인딩 상부 저희가 알게하는 바인딩, 우리는이 두 가지를 찾고 있습니까? 우리는 여기에 두 가지를 찾고 있습니까? 우리는 중간에 두 가지를 찾고 있습니까? 아마 중간에 두, 때문에 그러면, 실제로, 이진 검색이다. 하지만 지금 우리는 크기를 얻을 수있을 것이다, 또한 어레이의 한계. 본질적으로, 우리는 우리의 거대한이있는 경우 전화 번호부, 우리는 반으로 찢어. 그 작은 곳에 우리는 지금 알고 전화 번호부입니다. 그러나 우리는 실제로 리핑하지 않을 반 전화 번호부. 우리는 여전히 알 필요가 어디에 우리의 문제의 새로운 범위이다. 아무도 질문이 있습니까 에 대해? 예? 학생 : 그것은을 만들어 일할 것 변수, 나는, 당신은 단지 이동하는 것이 그 행 I의 위치 현재의 위치, 길이, N? 제이슨 허쉬 호른 : 그리고는 무엇인가? 학생 : 나는 일종의처럼되고 마음 - 당신처럼 내가 할 초기화 한 배열의 중간 위치. 그리고, 만일 위치의 값 난에 발견에 배열 중간 당신이 필요로하는 값보다 작아야, 지금 배열의 길이가됩니다, 플러스 I의 값은 2로 나눈 값. 마찬가지로, 볼, 당신은 내가 교대 - 제이슨 허쉬 호른 : 오른쪽. 학생 : - 최대 - 제이슨 허쉬 호른 : 그래서 나는 거의입니다 작동 할 긍정적. 하지만 요점은, 당신은 두 가지가 필요합니다 여기에 정보의 조각. 당신은 시작과 끝 함께 할 수 있습니다 또는 당신은 그 크기와 함께 할, 수 일부 마커. 하지만 당신은 두 가지가 필요합니까 여기에 정보. 당신은 하나에 의해 얻을 수 없습니다. 그 의미가 있습니까? 그래서 우리는을 통해 갈 및입니다 우리가 할거야 [들림] 일부 마커를 만들 수 있습니다. 그래서 당신은 당신의 코드에서 뭘 쓰기? 학생 : 제가 말한 INT 바인딩 하나는 0과 동일하다. 제이슨 허쉬 호른 :의 호출하자 그 중간, 시작. 학생 : OK. 제이슨 허쉬 호른 : 그합니다 나에게 더 의미. 그리고? 학생 : 나는 결말 중간, 내가 추측했다. 제이슨 허쉬 호른 : 종료 값 int. 학생 : 나는 추측, N - 1 또는 그런 일. 마찬가지로, 마지막 요소. 제이슨 허쉬 호른 : 그래서 당신이 쓴, INT 등호 0, 세미콜론, 그리고 INT 시작 결말은 N - 1, 세미콜론 같습니다. 그래서 본질적으로, 우리는 무슨 일을하는지 여기서, 첫 번째 위치를 0. 우리가 배열에 알고, 그들은 가지 마세요 N까지, 그들은 1 N 마이너스까지 이동합니다. 그래서 우리는 우리의 배열의 일부 범위가있다. 그리고 이러한 초기 경계는 될 일이 우리의 문제의 초기 경계입니다. OK. 그래서 좋은 소리. 그런 다음 우리는 다시이 라인에 가면 잠시 리스트의 길이가 0보다 크면 무엇을, N 대신,해야 우리는 여기에 넣어? 학생 : 음의 시작을 종료 쓰기. 제이슨 허쉬 호른 : 마이너스를 종료하는 동안 시작은 0보다 크다? OK. 그리고 우리는 우리가 원하는 경우, 할 수 확인이 조금 더 좋은, 무엇을 그렇지 않으면 우리는 할 수 있습니까? 우리는 청소를 원하는 경우 최대 비트 코드? 우리는 어떻게 0을 제거 할 수 있습니까? 이것은 단지 스타일의 문제이다. 그것은 지금 맞습니다. 학생 : 엔딩은하지 않습니다 동일한 시작? 제이슨 허쉬 호른 : 우리는 무엇을 할 수 있습니까? [개재 목소리] 학생 : 종료가 크다? 제이슨 허쉬 호른 : 네. 종료하는 동안 우리는 단지 할 수있는 처음보다 더 크다. 오른쪽. 우리는 상대방에 시작 첨가 그 중, 우리는 0을 없앴습니다. 그래서 이것은 단지 보인다 조금 청소기. OK. 목록의 길이가 0 인 상태에 따라서, 우리는 썼다 즉, 종료하면서 큰 시작보다. 우리는 우리의 필요에 넣어거야 중괄호 다음 우선 우리가 원하는 것은 볼 수 있습니다 작은 목록에서 그들. 당신은? 당신은 내게 줄 수있는 -에게 학생 : 만약 괄호 값 광장 브래킷 - 제이슨 허쉬 호른 : 괄호 경우 값 광장 브래킷. 학생 : 2로 나눈 기말. 제이슨 허쉬 호른 : 종료? 학생 : 나는 당신의 문제를 참조하십시오 - 제이슨 허쉬 호른 : OK. 음, 중간보고. 우리는 어떻게 중간이 무엇인지 알 수 있습니까? 그래. 그래서 내가 그 코드를 삭제 할 수 있습니다. 우리는 어떻게 중간이 무엇인지 알 수 있습니까? 아무것도, 당신은 시작이있을 때 그리고 말은, 당신은 어떻게 찾을 수 있습니까 중간? 학생 : 당신은 평균. 학생 : 당신이 그들을 추가 함께 다음 - 제이슨 허쉬 호른 :에 추가 함께하고? 학생 : 그리고 당신은 평균. 2로 나눈다. 제이슨 허쉬 호른 :에 추가 함께 2로 나눈다. 그래서 INT 중간 같음? 톰, 당신은 내게 줄 수 있습니까? 학생 : 기초 플러스 끝 - 제이슨 허쉬 호른 : 시작 플러스 끝. 학생 : 모든, 브라켓, 2로 나눈. 제이슨 허쉬 호른 : 모든 괄호에, 2로 나눈 값. 그래서 나에게 중간을 제공합니다 아무것도, 수정? 학생 : 당신은 또한 그것을 반올림해야합니다. 제이슨 허쉬 호른 : 당신이 할 말은 그것을 반올림해야합니까? [개재 목소리] 학생 : 때문에 홀수의 경우 수는 그 때처럼 - 제이슨 허쉬 호른 : 음, OK. 그래서 그것을 반올림 수 있습니다. 이 홀수, 5의 경우, 나는 할 수있다 중앙에서 멀어 촬영 1. 또는 그것을 짝수라면, 오히려 그것은 더 나은 경우입니다. 이 4의 경우, 우리는 4가, 내가 걸릴 수 있습니다 최초의 "중간", 인용, 인용을 끝내 나 두 번째 "중간"한. 하나는 이진 검색을 위해 일 것입니다, 그래서 실제로 반올림 할 필요가 없습니다. 그러나 한 가지의 I가 이 라인에서 볼 필요가있다. 우리는 아직 실현되지 않을 수도 있습니다 그러나 우리는 다시 돌아올 수 있습니다. 이 라인 사실 때문에 여전히 한 가지가 필요합니다. 그러나 지금까지, 우리는 서면으로 작성했습니다 네 줄의 코드. 우리는 우리의 시작을 가지고있어 마커를 종료. 우리는 매핑 우리의 while 루프를 가지고 에 직접적으로 우리의 의사에. 우리는 매핑 중간보고있는 직접 우리의 의사 상. 나는이 중간에 간다 말을 목록의 코드 행. 그리고, 한 번 우리의 중앙으로 이동 목록, 우리가해야 할 다음 일은 우리의 가치는 거기에 있는지 확인한다 의사는 우리가 이전에 썼다. 어떻게 우리가 확인하는 경우에 우리의 가치 목록의 중간에있다? 당신. 왜 당신이하지 않는다? 학생 : 우리의 가치의 인 경우 중간에 동일합니다 우리는 설정대로 - 나는 동일한 동일한 의미 - 제이슨 허쉬 호른 : 그것은 - OK. 학생 : 잘 모르겠어요 무엇 변수 우리가 찾고 에 대한 생각, 때문에 - [개재 목소리] 학생 : [청취]. 제이슨 허쉬 호른 : 그렇지. 함수 선언 당, 우리는 값을 찾고 있습니다. 그래서 우리는 값을 검색하는 값의 배열. 그래서 당신은 정확히 맞아. 당신은 할 것입니다, 만약 열린 괄호 값 브래킷 중간 브라켓 같음 폐쇄 내부가 값과 동일하고, 우리가 어떻게해야합니까? 만약에 우리의 가치의가 무엇 우리는 어떻게해야합니까?에게 [개재 목소리] 학생 : 0을 반환. 제이슨 허쉬 호른 : true를 돌려줍니다. 학생 : true를 돌려줍니다. 제이슨 허쉬 호른 : 마이클, 이 라인은 무엇을 하는가? 학생 : [청취] 프로그램이 실행 된 그 과정은, 그리고 그 이상이며, 당신은 당신이해야 할 일을했습니다? 제이슨 허쉬 호른 : 프로그램 또는 무엇? 이 경우? 학생 : 기능. 제이슨 허쉬 호른 : 기능. 그래서,라고 어떤으로 돌아갑니다 그것과는 사실, 그것을 값을 제공합니다. 정확히 맞아. 메인. 반환 형식은 무엇입니까 주의, 마이클? 학생 : 중간, 정수? 제이슨 허쉬 호른 : INT, 정확하게. 정수입니다. 즉, 확인 그냥 질문했다 너희들은 그 위에 있었다. 보통 경우, 무엇을 반환하지 모든 것이 잘 작동된다? 학생 : 제로. 제이슨 허쉬 호른 : 제로. 정확히 맞아. 학생이 그냥 true를 반환하면, 제공되는 관련 정보가 없습니다 에 대해 무엇을 - 오, 이건 그냥하는 말이되는 그 값은 배열의 내부입니다. 제이슨 허쉬 호른 : 그렇지. 이 프로그램은 정보를 제공하지 않습니다 값이 정확히 어디의. 그것은 단지 예, 우리가 발견 한, 말하는 것 그것은, 또는 아니오, 우리는 그것을 찾을 수 없습니다. 그래서 번호를 발견하는 경우, true를 돌려줍니다. 음, 사실 우리는 단지 않았다 정말 빨리 코드의 한 라인. 그래서 의사의 라인을 이동합니다. 학생 : 우리는 필요로하지 말라 배열을 변경하려면? 그것은 바로, 값이 아닌 값이어야합니다? 제이슨 허쉬 호른 : 죄송합니다. 감사합니다. 학생 : 네. 제이슨 허쉬 호른 :이 줄 값이어야한다. 정확히 맞아. OK. 그래서 우리는 중간 목록을 살펴 보았다. 수 있습니다 반환 true의 경우. 경우에, 우리의 의사와에 계속 중간 큰, 검색 떠났다. 그래서 만약 내가 여기에 있었다 수 높은 검색 떠났다. 콘스탄틴, 당신은 줄 수 나 코드 행? 학생 : 중간의 경우 값 - 제이슨 허쉬 호른 : 그래서 값이있는 경우 - 열린 괄호는 괄호 값 경우 중간 대괄호 - 학생 : 값보다 작은가요? 제이슨 허쉬 호른은 : 이하입니다. 학생 : 값보다 작. 제이슨 허쉬 호른 : 값. 음, 사실, 당신이 원하는 수 있는지 확인 - 미안 해요. 이것은 약간의 혼란이다. 하지만 다른 경우의 수 목록의 중간 크다. 학생 : 아, 그렇군요. 제이슨 허쉬 호른 : 그 변경됩니다. 중간 높은 다른 경우, 우리 OK, 왼쪽 검색 할? 그리고 우리는 안에 무엇을해야합니까 이 조건의 경우? 학생 : 나는에 작은 변화를 만들 수있다 경우 조건은, 다른으로 변경? 제이슨 허쉬 호른 : 만약 그렇지? OK. 따라서이 코드가 실행됩니다 같은 약. 그러나 다른, 경우에 사용하는 방법에 대한 좋은 점 , 경우 경우 또는 다른 다른 경우, 다른, 경우 그 중 하나가에가는 것을 의미한다 확인하지 그 중 세 가지, 잠재적으로. 그리고 그것이 조금 있습니다 의 컴퓨터에 더 좋은 프로그램을 실행. 그래서 [? 콘스탄틴,?] 우리는 값이 다른 경우,이 라인 안쪽에있어 브라켓 중간 대괄호 값보다 더 크다. 우리는 무엇을해야합니까? 우리는 왼쪽을 검색해야합니다. 우리가 어떻게해야합니까? 나는 당신에게 시작을 줄거야. 우리는 호출이 두 가지가 시작과 끝. 그래서 무슨 일이 일어날 필요 처음으로? 당신의 왼쪽을 검색하려면 목록, 우리는 우리의 현재 시작을 얻을. 우리는 무엇을해야합니까? 학생 : 우리는 시작을 설정 중간 플러스 1. 제이슨 허쉬 호른 : 그래서 우리가 야하는 경우 왼쪽을 찾고? 학생 : 죄송합니다, 중간 마이너스 - 그래서 결말은 중간 것 - 1과 시작 - 제이슨 허쉬 호른 : 그리고 무엇 시작됩니까? 학생 : 그것은 동일하게 유지됩니다. 제이슨 허쉬 호른 : 그래서 의미는 동일하게 유지됩니다. 우리는 왼쪽을 검색하는 경우, 우린 같은 시작을 사용하여 - 정확히 맞아. 그리고 끝? 죄송합니다, 어떻게합니까 다시 같은 결말? 학생 : 중동 - 1. 제이슨 허쉬 호른 : 중간 - 1. 자, 왜 - 1, 중간이 아니라? 학생 : 중간 벗어 우리가했기 때문에, 이미 그림 그것이 밖으로되는지 점검? 제이슨 허쉬 호른 : 때문입니다 정확히 맞아. 중간 사진의 부족합니다. 우리는 이미 중간 점검. 그래서 우리는 "중간"견적을 원하지 않는 끝 맺다,에있을 계속 우리가 찾고있는 것을 배열입니다. 그래서이 환상적이다. 다른 값 브라켓 중간 큰 경우 값이 같음을 종료 이상 중간 - 1. 제프, 어떤이 마지막 줄에 대해? 학생 : 그렇지. 값의 중간 값보다 작? 제이슨 허쉬 호른 : 우리는거야 당신은 다른 저를주는거야. 당신이 저를 포기하지 않는 경우에 따라서 - 학생 : 그럼 시작 중간에 1을 더한 것입니다. 제이슨 허쉬 호른 : 시작 같음 중간에 1을 더한, 다시 대한 동일 이유가 콘스탄틴 이전에 우리를했다. 그리고 마지막에 누가하지 않았습니다 아직 저 한 줄의 코드? 거짓, Aleha을 반환 무엇 우리는 여기에 씁니까? 학생 : false를 반환합니다. 제이슨 허쉬 호른 : false를 반환합니다. 그리고 우리는 그렇게 할 필요가 있기 때문에 만약에 우리 그것을 발견하지 않습니다, 우리는 우리가 말을 할 필요가 를 찾을 수 없습니다. 그리고 우리는 우리가 반환하는 것입니다 말했다 부울, 그래서 우리는 확실히 반환해야 부울 곳. 그래서이 코드를 실행 할 수 있습니다. 사실에 갈거야 - 그래서 우리는 터미널에 있어요. 우리는 우리의 창을 취소합니다. 의 모든를 만들자. 우리는 하나의 오류가 거기에 있습니다. 예상 라인 (15)에 오류가 있습니다 끝에 세미콜론 선언. 그래서 내가 무엇을 잊지 않았다? 학생 : 세미콜론. 제이슨 허쉬 호른 : 세미콜론 여기까지. 그 톰의 코드라고 생각. 그래서 톰, [들림]. 농담. 의 모든 다시 확인 해 보자. 학생 : 어떤 보관 용 디렉토리 우리는 이것에해야 하는가? 제이슨 허쉬 호른 : 그래서 당신이 할 수있는 다만이 비트에 대한 감시. 그러나 다시, 당신이 이동하려는 경우 시도하십시오 pset3 디렉토리에 코드 그것을 밖으로, 내가 무슨 짓을했는지. 여기에서 알 수있는 경우 - 죄송합니다, 좋은 질문입니다. [? LS,?] 여기에서있는 find.c 코드 이번 주 배포판 코드에서. 나는 helpers.h있다. 나는 실제로 만들기 파일이 이러한 새를 포함하는 비트를 편집 우리가 작성하는 파일입니다. 그 모든 코드를 사용할 수없는 것입니다 분배 코드 만 새 파일을 새 helpers.h 파일 것 다운로드 온라인으로 사용할 수 있습니다. 다시, 그래서 그것들은이 아르 여분의 코드는 우리가. 그래서 모두 확인이 줄에, 찾을 수 있습니다 이진, 거품 선택 - 만든다 모두 3 개과에 컴파일 이 실행 코드를 찾을 수 있습니다. 그래서 일반적으로, 우리는 원하지 않는 바로 check50에에. 우리는 우리 자신에 대한 몇 가지 테스트를 실행합니다. 그러나 다만 우리가이 비트를 촉진 할 수 있습니다 check50 2013 pset3.find이 전달됩니다 나의 나쁜 - helpers.c에서. 바로 지금이 없습니다. 그래서 우리는 실제로거야 실제의 코드를 실행합니다. Usage.find /, 당신은 그게 무슨 뜻인지 알아? 학생 : 당신은 두 번째 필요 그것에 명령 행. 제이슨 허쉬 호른 : 나는 필요 두 번째 명령 행. 그리고 사양에 따라, 나는 필요 우리가 원하는 정보를 입력합니다. 그래서 42에 대해 살펴 보자. 우리는 순위를 유지하기 때문에 다음 아직 분류 기능을 작성하지 않았습니다 - 42, 43, 44. 및 제어 D는 찾을 수 없습니다 건초 더미에서 바늘. 그게 나쁘다. 그것은 확실히있다. 의 다른 무언가를 시도 할 수 있습니다. 내가 넣어 때문에 아마의 처음에. 의 41, 42, 43를 보자. 거기 우리는 간다. 그것을 발견했다. 그냥, 지금은 말을 넣어 보자 그래서 우리는 철저하게 할 수있다 - 40, 41, 42. 바늘을 찾을 수 없습니다. 그래서이 이전을 언급했다. 불행하게도,이 알고 일어날. 그러나 교육적인 목적을 위해, 그것을 탐구하는 것이 좋다. 그것은 작동하지 않습니다. 어떤 이유로, 그것을 찾을 수 없습니다. 우리는 거기에서 무엇을 알고 있지만, 우리는 그것을 찾을 수 없습니다. 그래서 우리가 할 수있는 한 가지를 통해 이동합니다 GDB는 그것을 찾을 수 있지만 사람을 수행하는 GDB를 사용하지 않고,이 우리가 망쳐 곳의 의미? [? 마두? ?] 학생 : 나는 그것이 종료 될 수 있습니다 때 생각 처음으로 동일하며, 그것의 정보 단지 하나의 요소 목록을 표시합니다. 다음은 대신이를 무시 의 사실을 확인합니다. 제이슨 허쉬 호른 : 때문입니다 정확히 맞아. 결말은 처음과 같을 때, 우리가 할 아직도 우리의 목록에서 요소가? 학생 : 예. 제이슨 허쉬 호른 : 네, 사실, 우리 오직 하나의 요소가있다. 그리고 그 가능성이 가장 높은 때 발생합니다, 우리가 테스트 코드마다, 우리는에있다 건초 더미의 또는 전면 건초 더미의 끝입니다. 여기서 시작과 그의 결말은 동일가는 이진 검색 한. 그래서 그 두 가지의 경우에 작동하지 않았다, 종료하기 때문에이 처음으로 동일했다. 그러나 종료하는 경우는, 시작과 동일 이 while 루프가 실행 하는가? 그것은하지 않습니다. 그리고 우리는 확인할 수 있었다 그 다시 GDB를 통해. 그렇다면 우리는이 코드를 수정할 수 있기 때문에 종료 상태가 동일한 경우 시작, 우리는 또한이 원하는 루프가 실행하는 동안. 그래서 우리는 18 라인 무엇을 수정 할 수 있습니까? 학생 : [청취] 큰 거나 같음. 제이슨 허쉬 호른 : 맞아 맞아. 엔딩보다 큰 반면 또는 시작과 동일. 그래서 지금, 우리는 그것을 얻을 수 있는지 확인 끝 모서리 케이스. 그리고 보자. 의이 한 번 더 실행할 수 있습니다. 의 모두를 만들어 보자. 다시 말하지만, 당신은해야 할 것이다 단지 여기에 함께 따라. 41이 시간을 찾을 수 있습니다. 그냥 일관성 유지. (42)를 찾을 수 있습니다. 의 처음에 그것을 넣어 보자 - 42, 43, 44. 우리는 그것을 발견했다. 그래서 참으로 변화했다 우리는 만들 필요가 있었다. 즉, 우리는 코딩을 많이했다 다만, 이진 검색을했다. 전에 누군가가 질문이 있습니까 나는 우리가 쓴 라인으로 이동 이진 검색 또는 우리가 어떻게 생각 우리가 알아낼 않았다 무엇인지? 우리가 이동하기 전에, 나는 또한 지적하고 싶어요 이 전반적으로 중, 우리는 매핑 우리의 의사 코드 하나 우리의 코드 상에 하나. 우리는 까다로운 일이 있었나요 로 파악하는 시작과 끝. 하지만 당신은 당신이 그것을 눈치 채지 못했다 꽤 많이 쓴 것 동일한 코드를 저장하기 그 위에 두 줄. 그리고 당신은 실현했을 때 당신이 검사하고 경우에 그것을 만든 그 당신은 다른 뭔가가 필요합니다. 당신이 따랐다 그래서도 우리 라인에 의사 코드 라인, 당신은했습니다 것 두 줄 그러나 모든 받고 여러분이 작성하는 데 필요한 코드입니다. 그리고 장담 기꺼이 당신들 모든 것을 알아 낸 것 너무 빨리, 당신은 넣어 필요가 있다고 마커의 일종 거기에 파악하기 당신이 어디에 있는지 알아. 즉, 다시 일의 힘 의사 코드를 미리. 그래서 우리는 먼저 논리를 수행 할 수 있습니다 우리는 구문이 있습니다. 우리는 논리에 대해 혼란스러워했다 반면 C에서이 코드를 작성하려고, 우리는 모두 엉망받은 것입니다. 그리고 우리에 대한 질문을 할 것 논리와 구문 및 메쉬 함께 모두. 그리고 우리는 잃어버린받은 것 신속하게 될 수 있으므로, 매우 어려운 문제. 그래서 지금 이동하자 선택 정렬합니다. 우리는 왼쪽으로 20 분 있습니다. 그래서 우리가 할 수 없습니다 느낌이 선택 정렬의 모든 통과 거품 정렬. 그러나 우리는 적어도 시도하자 선택 정렬을 완료합니다. 그래서 정렬하여 선택을 구현하는 함수 선언을 다음. 다시 말하지만, 이것은에서 가져온 것입니다 문제는 사양을 설정합니다. 중간 값은 괄호입니다 정수의 배열. 그리고 int.n는 해당 배열의 크기입니다. 선택의 종류는 것입니다 이 배열을 정렬합니다. 선택의 우리의 정신 모델 당 그래서 종류, 우리는 풀 - 첫째, 우리는리스트를 통해 제 갈 시간은 가장 작은 번호를 확인, 시작 부분에 넣어, 두 번째를 찾을 수 작은 숫자는에 넣어 우리가 원하는 경우 두 번째 위치 오름차순으로 정렬. 난 당신이 작성하는 강제 아니에요 의사 코드를 지금. 그러나 우리의 클래스로 코드를하기 전에 5 분 우리는 쓸거야 의사 코드 그래서 우리는 어떤 의미를 가지고 의 위치를​​ 우리는 것입니다. 그래서 의사 코드를 작성하려고 시도 자신에. 그리고 그 다음을 설정하려고 시도 코드로 의사 코드. 우리는 그룹으로 그렇게 할 것이다 분 동안. 그리고 물론, 알려 경우 당신은 질문이있는 경우에는. 학생 : 그래? 제이슨 허쉬 호른 : 얼마나 멀리보기 두 분 이상에서 얻을 수 있습니다. 당신이하지 않습니다 이해 완료 할 수 있습니다. 그러나 우리는 그룹으로이 이상 갈 것입니다. 당신은 모든 들리지]를 코딩하고, 그래서 난 당신이 무슨 일을하는지 일시 정지 죄송합니다. 그러나의 그룹으로이 통. 그리고 또, 이진 검색, 당신 모두 제공 나 하나의 코드의 더 많은 라인이 아니라면. 이 주셔서 감사합니다. 우리는 같은 일을 할거야 여기에, 그룹으로 함께 코드입니다. 그래서 선택의 종류 -의 작성하자 빠른 의사 코드. 정신 모델에 대해, 누군가가 나에게 줄 수있는 의사 코드의 첫 번째 줄, 제발? 나는 무엇을 하시겠습니까? 학생 : 동안 목록 순서가 있습니다. 제이슨 허쉬 호른 : OK, 동안 이 목록에는 순서가있다. 그리고 당신은 "순서가있다"는 게 무슨 뜻이야? 학생 : 동안 [청취] 정렬되지 않았습니다. 제이슨 허쉬 호른 : 동안 목록 순서가, 우리는 무엇을해야합니까? 나에게 두 번째 라인을 제공, 제발, 마커스. 학생 : 그래서 다음 찾기 가장 작은 수입니다. 이 들여 쓰기됩니다. 제이슨 허쉬 호른 : 그래서 찾아 다음으로 작은 수입니다. 그리고 다른 사람? 우리는 다음으로 작은를 찾으면 수, 우리는 무엇을해야합니까? 내가 찾을 말을거야 가장 작은 수입니다. 즉, 우리가하려는 것입니다. 따라서 가장 작은 수를 찾을 수 있습니다. 그렇다면 우리는 무엇을해야합니까? 학생 : [청취] 시작합니다. 제이슨 허쉬 호른 : 죄송합니다? 학생 :에 배치 목록의 시작. 제이슨 허쉬 호른 : 그래서에 배치 목록의 시작 부분. 그리고 우리는 일에 무엇을해야합니까 그 시작이었다 목록, 오른쪽? 우리는 뭔가를 덮어입니다. 어디 우리가 넣을까요? 네, 안나? 학생 : 어디 작은 수 있었다? 제이슨 허 시혼 : 그래서 시작을 넣어 목록의 위치를 작은 숫자였다. 목록 순서가 그래서있는 동안, 발견 작은 숫자에 배치 목록의 시작 부분은 넣어 목록의 시작 위치 작은 숫자였다. 마커스,이 라인을 바꿔 수 있습니다 리스트는 순서가있는 동안? 학생 : 동안 번호 분류되지 않은? 제이슨 허 시혼 : OK, 그래서 순서에 숫자가되지 않았 음을 알 분류, 우리는 무엇을해야합니까? 우리는에 얼마나 필요합니까 이 목록을 통해 이동? 학생 : 그래서 루프를 추측, 또는 반면, 숫자를 체크하면서 작 목록의 길이보다? 제이슨 허 시혼 : 좋아, 좋다. 나는 misphrased 생각 내 질문에 제대로. 난 그냥 얻을 것을 시도하고 있었다 우리가 가야 할거야 전체 목록을. 목록 순서가 그래서있는 동안, 저를 위해,에지도하기 어렵다. 그러나 기본적으로, 그건 방법 나는 이것에 대해 생각합니다. 찾기, 전체 목록을 이동 최소 개수에 게재 시작 - 실제로, 당신 말이 맞아. 의는 둘 다 넣어 보자. 리스트는 순서가 그래서있는 동안, 우리 전체 목록을 이동해야 한 번, 작은 숫자, 장소를 찾아 그 목록의 시작 부분에 넣어 리스트의 처음 어디에 작은 수이고, 그 다음 단계 목록은 우리가했습니다, 순서가 여전히 이를 통해 가야 프로세스를 다시, 오른쪽? 그 이유는 선택 정렬, 빅-O 런타임에게의 선택 종류의, 누구? 학생 : N 제곱. 제이슨 허 시혼 : N 제곱. 마커스 난 그냥 실현 좋아하기 때문에 여기에, 우리는해야 할 것입니다 리스트 목록을 통해 이동 횟수. 그래서 뭔가를 거치지 길이 N N 횟수 실제로 N 제곱. 그래서 이것은 우리의 의사입니다. 이것은 매우 좋은 것 같습니다. 아무도 질문이 있습니까 의사에 대한? 실제로 선택의 종류가해야하기 때문에 아마에서 하나의 코드를 올 의사. 에 대한 그래서 질문 의사의 논리? 지금 문의하십시오. 선택 정렬 - 목록이 밖으로있는 동안 위해, 우리는 그것을 통해 갈거야 가장 작은마다 찾아 전면에 넣어. 목록 수, 순서가 그래서있는 동안 누군가가 나에게 코드 줄을주는 사람 나에게 라인을 작성하지 않았습니다 는 아직 코드? 그것은 무엇을 같은 소리? 학생 : 그 루프입니다. 제이슨 허 시혼 : 소리가 난다 루프를 좋아한다. OK, 당신은 저에게 루프를 줄 수 있습니까? 용 - 학생 : 0 같음. 제이슨 허 시혼 : i 또는 - 우리는 무엇을 누락? 어떻게 여기 간다? 학생 :이자. 제이슨 허 시혼 : 그렇지. -;은 (i = 0 int로 학생 : 나는 N <나는 + +). 제이슨 허 시혼 : 제프를 맞았다. 우리는 오른쪽 목록을 거 야? 우리는 그 전에 코드를 본 적이있다. 완벽한. 그래서 여기에 우리의 중괄호를 만들어 보자. 나는 약간을 넣어 갈거야 여기에 중괄호. 그것은 0의 동안 그래서, 우리는 갈 필요가 전체 목록을. 그래서 때마다 우리는 목록을 통해 이동 우리는 무엇을 추적 할 수 있습니까? 학생 : 어떤 스왑이 이루어질 경우. 제이슨 허 시혼 : 찾기 가장 작은 수입니다. 그래서 우리는 아마 트랙을 유지해야 작은 숫자마다. 그래서 라인 전을 추적 할 수있는 가장 적은 수의? Aleha, 어떻게 유지할 수 있습니다 뭔가를 추적? 학생 : 새 변수를 시작합니다. 제이슨 허 시혼 : 새 변수를 시작합니다. 그래서 변수를 만들 수 있습니다. 어떤 종류의? 학생 :이자. 제이슨 허 시혼 :이자. 의 가장 작은 호출 할 수 있습니다. 그리고 어떻게이 같은 경우 수행 우리는 그냥 시작거야? 우리는 아직리스트를 통과하지 않았습니다. 우리의 첫번째 부분에있어 을 통해 우리의 첫 시간을 보여줍니다. 이 같은 무엇, 작은 수? 학생 : 값 나. 제이슨 허 시혼 : 값 나. 그건 바로, 정확히 바로 소리? 처음에 작은 수 우리가있는 곳입니다. 그래서 지금 우리는 우리의 작은이, 우리는 필요 전체 목록을 통해 이동합니다 작은이를 비교 다른 모든 것들에. 그래서 우리는 다시 목록을 가야합니까? 마이클? 학생 : 당신은해야 루프의 또 다른. 제이슨 허 시혼 : 루프의 또 다른. 그것을 해 보자. 나에게 몇 가지 코드를 제공합니다. 학생 : 루프 - 작은 용 - 다만 J를 중간, 당신은 말할 수 있는가? = 0;되도록 - 제이슨 허 시혼 : 글쎄, 우리가 원하는 경우 전체 목록을 이동합니다 - 학생 : J