교수 : 그래서 의제 이번 주, 아니 그 많은 물건. 그러나 희망이 매우, 매우 도움이 그리고 너희들이 주에 대한 관련. 그러나 우리는, 어쩌면 15을 보낼거야 그냥 빨리 얘기 20분 링크 목록에 대한. 링크 목록에 가고있다 퀴즈에 덮여. 그래서 아마도 그것은 매우 도움이 될 것입니다 그게 뭔지에 대해 조금 배울 수 있습니다. 우리는 광대 한을 보낼거야 오늘의 섹션의 대부분 퀴즈 제로 연습 문제를 통해 갈. 그리고 우리는 아마 20, 30 분 절약 할 수 어떤 느린 질문에 대한 말 사람이 있습니다. 그리고, 마지막으로 다음 5 분 나는거야 퀴즈 펌프까지 연설을합니다. 당신은 사람은 모두 여기에 대한되고 싶어요. 그것은 좋은 시간이 될 것 때문에. 좋아요, 일부 링크 목록 자료. 어떻게 그들은 일반적으로 구조화하고있다 당신이 바로, 노드라고 무슨이? 당신은라는 이런 일이 노드 구조체이다. 내가 만드는 방법을 통해 갈거야 다음 슬라이드의 노드. 그러나 본질적으로 연결된 모든 데이터는 목록하다 포인터를 통해 서로 연결된되었습니다. 그리고 이점 우리는이 연결리스트를 통해 사용, 아마도, 배열처럼입니다 사실 그 배열의 당신은 하나의 연속 블록이 필요합니다 모두 같은 장소에서 메모리, 하나 또 다른 한 후, 그것을 가질 수 있습니다. 연결리스트 반면에, 당신은 할 수 메모리의 임의의 작은 비트를 가지고 모든 컴퓨터를 포인터에 의해 함께 중독. 그리고 이러한 방법으로 정보에 액세스 할 수 그 후 하나를 제공 다른 후, 다른 단지 엄청난 양을 필요로하지 않고 어딘가 컴퓨터의 메모리. 그리고이 주요 중 하나입니다 우리가 링크 목록을 사용하는 이유. 둘째, 동적를하는 것은 매우 쉽다 때문에 배열의 링크 목록의 크기를 조정, 당신은 배열을 선언 할 때, 당신이 특정 세트 값을 갖는다. 의 내가 만들고 싶었 가정 해 봅시다 10 정수의 배열. 난 (10)의 배열을 만들 정수, 그리고 그것 뿐이다. 그것은 10입니다. 그 이후에 무엇을 해야할지하지 않습니다. 내가 11을하고 싶다면, 그것을 할 수 없습니다. 내가 9를 확인하려면, 그것을 할 수 없습니다. 링크 목록에있는 반면에, 당신은 추가 할 수 삭제하고 원하는 위치에 삽입합니다. 동적으로 크기를 조정할 수 있습니다 여기에 데이터 구조를 구성. 그리고 그것은 우리에게 많은 것을 제공 더 유연성 우리는 일반적으로하지 않습니다 배열을 가지고있다. 누군가는 기본에 혼동 링크리스트가 얼마나 구조 또는 왜 우리는 배열을 통해 하나를 사용해야? 그래, 우리는 세부 사항에 갈 거예요 어떻게 실제로 하나를 만들 수 있습니다. 그러나 이것은 단지 종류입니다 지금은 일반적인 의미. 시원한. 그래서 배열은 함께 중독된다 이 사랑스러운 작은 것들의 노드라고. 모든 노드는 구조체의 유형입니다. 당신이 원하는 경우 구조체는, 기억 변수의 특정 유형을 만들 수 있습니다 C에서 그 이미하지 않습니다 당신이 프로그래머로, 존재, 실제로 자신의 것을 만들 수 있습니다. 데이터 그래서 이런 종류의 구조는 노드라고, 실제로, 우리에 의해 만들어졌습니다 그 자체로 C 내에 존재하지 않습니다. 그리고 그 방법으로 당신을 당신이 하나 만들 형식 정의 구조체의 헤더, 어떤 난 컴파일러를 알려줍니다 구조체를 만들려고. 우리는 "노드입니다."이름을거야 그리고 내부에 우리는거야 에서 변수를 선언하고, 값을 저장하는 것. 그리고 우리는 또한에가는거야 포인터가 불렀다 "다음" 그 다음을 가리키는 링크 목록에서 노드. 그리고 당신은 그 마무리 바로 그래서 다시 노드를 반복하여 컴파일러는 확인, 알고 그건 내 구조체의 끝입니다. 그리고이 방법으로, 우리는 친절 귀여운 작은 배열을 만드는 와 일 가지 값과 포인터. 그리고 당신은 그들 모두를 연결할 수 있습니다 함께 그 포인터. 그들은 모든 종류 수 있도록 체인에 함께 중독. 시원한. 당신은 조금 더 듣고 할 수 있습니까? 청중 : 네. 교수 : 좋습니다. 그래서 너희들이 볼 수 있듯이, 방법, 일반적인 링크 목록이 구성되어 당신이 머리를 가지고있다. 하지 않은 사용자는 헤드 값을 갖는 다른 포인터가 가리키는된다. 하지만, 가리거야 참조 또는 다른 노드. 노드는 후를 참조하는 것입니다 노드 및 등등 등등 그 후 당신은 결국 히트까지 귀하의 링크 목록의 끝. 그리고 당신은 그냥 포인터를 필요가 없습니다. 그리고, 심지어 체인, 같은 생각, 또는 당신이 만든 사람의, 내가 모르는 경우, 과일 루프와 같은 때 조금 있었다. 당신은 함께 캐릭터들을 것 당신의 목을 착용하십시오. 그것은 똑같은 생각합니다. 이러한 작은 일들이 당신 할 수 있습니다 함께 문자열 하나를 가리키는 그 후, 하나 후 그것은, 및 등등 등등 당신은 체인을 때까지 데이터 구조 당신이 좋아하지만 그것은 당신이 사용할 수 있습니다. 그래서 방법이 있음을 우리는 것 일반적으로 삽입 또는 삭제 링크에서 노드 목록은 매우 다르다 해당 노드가 위치에 따라. 그래서, 예를 들면 때문에 포인터는 항상 특정 값을 가리키는, 삭제하거나 노드를 삽입 할 때, 당신은 포인터가 있는지 확인하려면 모든 권리 사물을 가리키는. 당신이 원하는 경우에 따라서 잠재적으로 삽입 하나의 값을 갖는 새로운 노드 정렬 된 링크 내부 목록, 우리 모두가 여기에 알고 에 무슨 그림에서 오른쪽 머리와 두 사람 사이에서 이동? 하나는 바로 거기에 맞는 때문입니다. 그러나 방법이있는 우리는 할 것 먼저 포인터를 역 참조입니다 머리에서 하나에 해당 나갔습니다. 그러나 우리는 여기에서 문제로되어 있습니다. 사람이 어떤 문제를 볼 수 우리는 첫 번째 역 참조한다면입니다 하나의 머리에서 포인터? 어떤 문제 우리가 시도하는 경우에 실행될 수 있습니다 우리의 배열의 전면에 이것을 추가? 청중 : [들리지] 교수 : 맞아요. 그래서 여기에 우리가했던 포인터를 가지고 한 번 두에 머리에서 가리키는. 하지만 당신은 그 없애 경우 포인터는 사용자가 하나를 가리 우리는 지금 아무 생각이 여기서 두 가지를 찾아 이동합니다. 내가 전에 말했듯이, 당신이 가지고 있기 때문에 컴퓨터에서 메모리의 거대한 덩어리. 이러한 모든 노드 수 무작위로 산재 당신의 컴퓨터에있는 모든 장소에서. 그리고 당신은 방법을 모른다 그것을 찾는 것에 대해 이동합니다. 그래서 당신은 포인터가 필요 마지막에 모든 노드를 가리키는. 아니면 당신이 만약 실수로 한 역 참조 먼저 지정하지 않고 값 첫째, 당신은있어 단지 잃게 될 이후 모든 것을. 그래서 우리가 갈거야 이렇게 먼저 것입니다 포인터를에 만들려면 노드를 삽입하고 싶습니다. 당신이 어디를 가리 에 삽입 할, 다음 나중에 당신에게 하나 다시 머리를 가리킬 수 있습니다. 즉, 여기에 모든 사람에게 의미가 있습니까? 큰. 단지 체인 등이라고 생각. 당신이 체인을 추가 할 경우, 그것은 직관적 가지의 어떻게 당신이를 삽입하는 방법에 대한 갈 것. 좋아, 그럼 그 많은 실제로 내가 생각했던 것보다 짧은, 링크 목록에 5 분 과장되게 떠벌 리다. 그냥 그래서 너희들이 가지고있는 그게 뭔지의 기본 개념. 여기에서 우리는 퀴즈 제로의 의제를 가지고있다. 이 당신을 위협하게하지 마십시오. 나는 정보를 많이 알고있다. 그것은 아주 무서운 보인다. 또한,도 많이있어 I 용어의 CSC의 종류, 생각합니다. 진수 문자열 같은 것들, 포인터, 동적 메모리 할당 아주 무서운 소리 용어이다. 그러나 우리는 그들을 깰거야 아래, 연습 문제를 수행 그래서 너희들 모두 이 시험에 대한 준비가되어 있습니다. 얼마나 많은 남자들이 이미 공부를 시작? 좋아, 너희들은 아마 원하는 시작하기 시작합니다 그에, 퀴즈 내일이기 때문이다. 아니면 일부 (목). 그래, 그래서 우리는 갈거야 연습 문제를 통해. 너희들은 모든 수행하려면 종이, 연필 밖으로. 우리는 단지를 보낼거야 오늘의 섹션의 대부분 그 중 일부를 통해 갈 너희들이 그렇게 퀴즈에 무엇을 기대해야하는지 생각. 그래. 물류의 몇 사람 뿐만이 아니라, 자세한 누가 경우,이 링크에되지 않았습니다 당신은 전면에, cs50.yale.edu로 이동 링크가 페이지 그는 "퀴즈 제로에 관하여."라고 링크가 걸립니다. 당신이 그것을 읽지 않았다면, 그것을 읽어 보시기 바랍니다. 그것은 당신에게 정말 중요한을 알려주기 때문에 퀴즈에 대한 정보를 제공합니다. 나는에서 이것을 빼거야 그 때문 만, 물리적, 너희들은 어디에서 모르는 경우 가고, 우리는 문제가있는 것입니다. 그리고 함께 측면에서 그렇다면 마지막 N으로, 법률 학교 강당으로 이동합니다. 그리고 만약 P와 마지막 시작 Z까지, 데이비스 강당으로 이동합니다. 그리고이 경우에만 적용 수요일 섹션에있는 사람들. 당신은 퀴즈를 복용하는 경우 목요일, 당신은 SSS (114)로 이동 어디 강의가 일반적이다. 청중 : [들리지] 교수 : Z까지 오, 당신은거야 데이비스 강당으로 이동합니다. 난 지금, 그 변경거야? 오, 그래, 당신은 자동으로 실패합니다. 오, 그래, 그 당신은 크리스타입니다. 그래, 내 나쁜. 네, Z에 O, 당신은거야 데이비스 Auditorim로 이동합니다. 나는이 한 번 내가 업로드 해결하겠습니다. 네. 그리고 또한 무엇인가 마음에 중요 당신이 공식적 경우 그 수요일입니다 수요일 섹션에 등록, 당신은 수요일에 퀴즈를 취해야합니다. 그리고 목요일에 등록하는 경우, 당신은 당신의 퀴즈 목요일해야합니다. 그리고 수업 시간 동안입니다. 어디, 나는 그것이 1:00처럼 생각 수요일 2:15과 2시 반부터 3시 45분까지 목요일. 당신은 화해 할 수없는 충돌이있는 경우, 딘의 변명은 유일한 있습니다, 불행하게도, 우리가 걸릴 수 있습니다. 우리가 있었다 때문에 요청의 대부분 목요일 수요일에서 전환합니다. 어떤 우리가하지 않는 한 명예 없습니다 우리는 딘의 요청을해야합니다. 그래. 우리가에 시작하기 전에 그래서 연습 문제의 커플, 난 그냥 갈거야 성공을위한 앤디의 유용한 정보. 너희들, 때 당신은 정말 공부 손으로 코드를 작성하는 연습을 할 수 있습니다. 처음으로 이제까지 내가 CS 퀴즈를했다, 난 안했다 손으로 연습 코드를 작성 이전과는 매우했다 그것이 얼마나 어려운에서 충격. 너희들로하지 않는 경우 모든 것을 입력하는 습관, 아주 자연스럽게되는 온다 수는 자동 완성 것으로 이 브래킷과 세미콜론. 당신은 그것을 쓸 때 손으로, 때로는이다 아주, 아주 쉽게 세미콜론을 잊지, 또는 브래킷을 종료하는 것을 잊지, 또는 콜론을 닫으 것을 잊지, 또는 그런 일. 그래서 당신은 손으로 코드를 작성할 때, 그것은 매우 다른 느낌이다. 그래서 너희들, 당신이 최선을 다하고 있습니다 연습 문제들을 통해, 그것은 좋은 정말 오늘 연습하는 것입니다. 당신이 인 경우에 또는 내일, 나는 가정 목요일에 퀴즈를 복용. 둘째, 같은, 마지막 가지고 연습의 팔년의 가치 온라인 퀴즈. 올해의 퀴즈 아마 될 것입니다 매우 그들 모두 매우 유사. 그들은 모두 매우 유사입니다. 당신은 가지에 들어가 질문 유형의 스타일 우리는 물어, 유형의 우리가 그것을에서 쓸 것이다 기능, 등등, 등등. 그래서 연습 퀴즈를 특히 시간 제약에 따라. 75 분 퀴즈가해야 할 일 시간의 양을 많이하지. 그것은 매우, 매우 긴합니다. 그래서 너희들은 정말로 원하는 너희들이 있는지 확인합니다 글을 쓰는 습관 빨리 손으로 코드. 첫 번째를하지 않기 때문에 시간은 그 길이의 퀴즈를 볼 수 있습니다 퀴즈에있을. 너희들은 정말 있는지 확인하려면 당신은 사전에 연습 있음. 넷째, 당신을 검토 할 강의 및 섹션 슬라이드. 당신은 일을 기억할 필요가 없습니다. 사실, 모두가 허용된다 흰색 종이 메모 한 장, 앞면과 뒷면. 너희들은 입력하거나 쓸 수 있습니다. 당신은 자신이 암기 할 필요 발견하면 아무것도, 그 시트에 내려 놔. 나는 당신을 보장, 당신은하고 싶지 않아 그 퀴즈의 중간에 붙어 같이있는 오, 그래, 무슨 일이야 그와 같은 대 이런 종류의 런타임. 그냥 내려 놓고 복사 바로 메모 시트에서. 그럼 당신은 실제로 바로 사용할 수 있습니다 뇌는 문제에 대해 생각하는 오히려 사실을 기억하는 것보다. 그래서 정말 활용할 어떤 틈새 세부 사항 당신은 당신이 기억해야 할 생각, 검토 시트에 아래로 풍덩. 확인, 질문 물류 퀴즈에 대한 우리가 시작하기 전에 몇 가지 퀴즈 문제 연습? 네? 청중 : 나는 기회가 없었어요 퀴즈를보고 [들림] 그러나이 될 것입니다 응용 프로그램 대부분은, 나 또한 될 것 거기 같은, 지식 질문? 교수 : 그것은 많은입니다. 그래서, 방법이 내가 것 퀴즈를 설명 is-- 내가 함께 넣어 연습 문제 나는 모든 퀴즈에서 가져온 것이다. 하지만 당신은 두 가지가 있다는 것을 볼 수 있습니다 질문의 유형은 우리가 당신을 요청할 것입니다. 하나는 물건의 매우 낮은 수준의 세부 사항입니다. 우리는 당신에게 코드의 작은 덩어​​리를 줄 것이다 오류가 여기에있다,라고? 여기에 무엇을 인쇄 할 것인가? 이 코드를 생성 할 것이다 무슨, 등등. 그래서 매우 낮은 수준 정보 세부 사항. 그리고 다른 측면에서, 우리는 매우해야 높은 수준의 지식 기반 질문. 당신은 무엇을 설명 할 수 이진 검색 차이 선형 검색은? 왜 우리가 원하는 것 다른 통해 하나를 사용? 아마도, GDB는 무엇인가? 왜 우리는 GDB를 사용 하시겠습니까? 높은 수준의, 더 근본적인 이해 질문. 그래서 당신의 혼합물을 볼 수 있습니다 퀴즈에 그들의 두. 다른 건 우리 전에 바로 그것으로 머리? 그래. 청중 : 하나 더. 교수 : 아, 하나 더. 죄송합니다. 청중 : 네, 모든 권리입니다. 그래서 당신은 75 분입니다 말을하는지 그것은 가능성이처럼, 너무 짧은 있음을 우리는 완료됩니다? 또는, 같은 75 분 정확하게 많은 시간이다 우리가 인 경우에 우리가 필요로 적절하게 준비? 교수 : OK, 그래서 퀴즈 도전이다. 확실히 도전이다. 당신은 시간에 자신이 짧은 찾을 수 있습니다. 당신은 아마, 10처럼 칠거야 15 분 가서 똥처럼 존재합니다. 나는 그렇게 할 떠났다. 그리고 완전히 괜찮아요. 모두가 같은 느낌거야. 그냥 매우주의 얼마나 많은 시간을 당신은. 내가 당신에게 왜 그리고 그건 사람은 연습 퀴즈을한다. 정말 감각을 제공하기 때문에 무엇 퀴즈처럼 될 것입니다. 그래서 당신은 자신이되는 찾아내는 경우 연습을 완료 할 수 의 좋은 양 퀴즈 시간은 당신이 아니라 자신의 페이스 수 당신은 문제가되지 않습니다 수요일 또는 목요일에. 시원한. 그래서 나는 모든 사람을 생각 wants-- 경우 대부분의 사람들은 종이의 시트를 가지고 이미. 나는 본질적으로을에 갈거야 당신에게 샘플 질문을주고, 같은 당신을 사람을, 제공 몇 분을 할 수 있습니다. 그리고 우리는 클래스로 갈 거예요 그들에 대한 답은 무엇인지. 따라서 이것은 매우 전형적인 우리는거야 초기 질문 다만 변환, 당신에게 다른 기지 사이의 숫자입니다. 이진, 같은 너희들 수 리콜은, 기본이입니다. 진수베이스 (10), 또는 우리가있다 인간은 일반적 해석으로. 16 진수 제로베이스 (16),이다 구뿐만 아니라 같은 F. 통해 통해 그래서 난 네 개의 숫자있다 너희들을 요구하는 것은 여기에 변환합니다. 난 당신이 세 가지에, 좋아하는 줄 것이다 방법을 통해 생각하는 사분 우리는이 문제를 해결하는 갈 것입니다. 청중 : 우리가 계산기를 사용할 수 있습니까? 교수 : 당신은하지 않습니다 그래, 계산기가 필요합니다. 나는 기본 첨가, 생각, 생각 모든 너희들은 어떻게하라는 메시지가 표시됩니다. 그리고 그냥 그렇게 나는 종류의 감각을 가지고 모든 작업이 완료 될 때의, 조회 파, 나는 미소를 몰라 당신이 수행하는 경우 행복해 보인다. 네. 아마 몇 분 더. 좋아, 이제 그것을 가져 보자. 나는 의도적으로 갈거야 사람 당신에게 적은 시간을 줄 당신은 아마에 필요한 것보다 이러한 문제 중 일부를 수행 나는이 있는지 확인하려면 간단하기 때문에 우리는 문제의 무리를 통해 얻을. 그래서 걱정하지, 당신은하지 않았다 경우 완료 할 수있는 기회가있다. 당신이 가지고있는만큼 완전히 확인 이것에 대해 이동하는 방법에 대한 생각. 그럼 가서 첫 번째 작업을 수행 할 수 있습니다. 그래서 일단, 사람이 말해 싶어 않습니다 이진, 어떤 이들 숫자의 각을 그 값의 관점에서 표현? 네? 청중 : 두에 전력 제로, 2-1. 교수 : 맞아요. 그래서. 오른쪽, 그래서 일반적으로 우리는베이스 (10)에있을 때 모든 이들은 같은입니다 나타냅니다 제로베이스 (10), 오른쪽? 그건 당신이 하나의 장소입니다. 당신의 10의 장소는 모두이다 하나의 힘 (10). 당신 (100)의 장소 10 두 가지의 힘. 무엇이든 기본이 가고에있어 똑같은 일이 함께 할 수있는, 단지 다른베이스. 그래서 진이라고 모두가 기본이된다. 당신은 모든 변환거야 두 어떤 권력으로 자리 그 자리의. 그리고 이러한 의미에서, 우리 쉬운 방법을 가질 수있다 최대 추가 할 수있는 또는 위해 모든 숫자의 합계를 베이스 (10)에 변환합니다. 그래서 사람이 나에게 원하는 게 무엇 처음에 대답은베이스 십에? 청중 : 두, [들림] 교수 : 그래. 청중 : 42. 교수 : 42, 거기 당신은 간다. 그래서 우리는이 대답을 얻었다 방법은 옆에 있었다 두 인, 처음 두 하. 게다가 2 ~ 8 제 3,. 게다가 두, 다섯 번째에있는 남은 무엇이든지이다. 당신이 그들을 정리해과 42입니다. 누군가는 우리가 가지고 방법에 대한 혼란인가? , 같은 기본 추가 나는 당신이 확인을해야했다. 그렇지 않으면, 잘, 우리는 너무 그 연습을 할 수 있습니다. 하지만 그 모든 권리입니다. 시원한. 사람이 나에게주고 싶어합니까 뿐만 아니라 두번째 대답? 50? 좋다. 방법에 대한 혼란 사람 우리는 그 중 하나있어? 나는 쿨해야 다음 슬라이드에 대한 답변. 그래서 걱정 당신 경우 그것을 아래로 복사해야합니다. 좋아, 그럼 16 진수 조금 까다 롭습니다. 하지만 난 너희들을 보여거야 그것을 수행하는 방법에 대한 바로 가기. 진수 그래서, 당신 같은 모든 것이 16 일이다, 기억. 그리고 우리 때문에 인간은 실제로하지 않는 그를 대표하는 16 번호가, 우리는 어떤 우리의 첫 9로 0에서 이동 (10) 값은 다음 우리는, (F)를 통해 할 이는 향후 6 값은. 그리고 가장 쉬운 방법은 이동 진수에 대한 진수 반으로 그들을 파괴하는 것입니다. 그래서 어떤 진수는 우리가주지 당신은 아마 8 자리가됩니다. 당신은 끊을 수있다 중간에 그들입니다. 그래서 첫 번째 one-- 하나 하나, 하나, 하나 하나, 하나 하나. 종류의 당신은 알고있다, 그릴, 그것을 생각 슬래시 또는 그들 사이에 쉼표. 그리고 당신은 변환 할 수 있습니다 직접 어떤 이것은 제이고 진수의 수, 여기에 무엇이든은이다 진수의 두 번째. 그래서 일반적인 표기법에서 기억 어떤 16 진수 값은 시작합니까? 청중 : 제로. 교수 : 0X. 그래서 우리는 언제 우리가 당신에게 것을 알고있다 16 진수 숫자를 변환하는, 언제든지 당신은 어떤 참조 0x로 시작하는 숫자, 당신은 16 진수 값입니다 것을 알고있다. 그리고 당신은에 묻는거야 이 두 자리 숫자가 무엇인지를 결정합니다. 그리고 방법 당신은 최대 집계 그렇게 절반과 절반을 집계. 이 예에서, 그래서 하나는, 하나 하나가 될 것인가? 그게 무슨 값을 것입니까? 그건 바로, F 것? 즉, 15이 될 것입니다. 그래서이 F. 한 것, 여기서, 하나, 하나이기도 F. 따라서, 하나 하나, 하나 하나, 하나 하나, 16 진수로 하나, 그것이 모두 0XFF입니다. 끊임없는 표현 때문에 F, 15의 값, 이 반은 표현 F 값 (15). 기억 때문에, 우리는있어 0에서 9 세. A는 F는 15, B는 11처럼, 10과 같다. 모두 방법에 그 말이됩니까 우리는 16 진수 바이너리에서있어? 청중 : 그래서 우리는 어떻게 얻었 는가 하나, 하나, 하나, 하나에서 15? 교수 : 그래, 바로, 이진? 이 단지 이진수입니다 상상해보십시오. 그래서 당신은 두 가지에있다 하나 영차. 청중 : OK, 오. 그래서 당신은 그것을 밖으로 총. 교수 : 그래, 다음 당신은 단지를 총. 즉, 모든이다. 청중 : OK. 교수 : OK. 청중 : 그래서 당신은 바이너리로 이동 16 진수 진수로? 교수 : 그것은이다 가장 쉬운 방법은 그래, 그렇게 할 수 있습니다. 당신은 때문에 진수 않을거야 진수는 겨우 아홉 제로가있다. 우리는 종류의 단지 것 두에이를 분할. 청중 : [들리지] 소수를 사용하여 찾을 수 있습니다 무엇을 16 진수로까지 일치합니다. 교수 : 내 말은, 당신이있어 기본적인 수학을 사용하여 집계. 청중 : 네. 교수 : 그래, 꽤 많이. 그것은 조금 혼란 스럽다. 그러나 단지 알고 당신이 나눌 수있는 어떤 이 값은 반으로합니다. 봐,이 진 무엇인가? 무슨 수를? 그것은 될 것 0에서 F. 뭔가 다음은이 될 것입니다 0에서 F. 뭔가 그리고 당신은 넣을 수 있습니다 바로 그 두. 청중 : OK. 교수 : 그래. 그래. 그래서 너희들이 원하는 그 다음 하나를 시도? 0, 1, 제로 한 하나, 0, 1 제로. 나는 30 초처럼 너희들을 줄 것이다, 당신은 아마 몰랐 때문에 이 이전 작업을 수행하는 방법에 대한 트릭. 좋아, 사람이 하나에게 기회를 얻을 싶어? 0X5A. 교수 : 0X5A. 5A. 좋다. 그래서 여기 당신이 원하는 이따가 것 당신이있어 어떻게 우리에게 얘기를? 첫째, 당신은 어떻게 다섯거야? 청중 : 제로 때문에, 하나, 제로, 하나는 다섯이다. 교수 : 모두가 이해 하는가 다섯 가지 이유를 0, 1, 0, 1인가? 당신은 여기에있어. 당신은 첫 번째와 두에 아무것도 없다. 두 번째로, 당신을 네 하나를 가지고있다. 그래서 당신은 네 플러스를 추가 하나, 다섯이있다. 모두 좋은? 그래. 그리고 무엇이 될 그 이유는 무엇입니까? 무엇 번호에 해당합니까? 청중 : 10. 교수 : 그리고이 기본이에? 청중 : [들리지] 교수 : 맞아요. 그래서 여기이 두 번째 값은 0X5A 것입니다. 모두 변환하는 방법에 대한 좋은? 그것은 당신이 생각하는 것보다 훨씬 간단합니다. 난 그냥 있는지 확인하려면 당신은 유용한 정보를 알고 그 작업을 수행하는 방법과 트릭. 청중 : 왜 당신은 그냥 분할 할 수 있습니다 그것은 그런 중간에? 그냥 확인, 난 단지에 갈거야,처럼 이 첫 번째 [들림] 걱정? 교수 : 그 사실이기 때문에 방법 진수 값이 표시됩니다. 실제로 의미 0X, 말하고 이외의 아무것도 그것은 16 진수가 있다고. 그리고이 항상 나타냅니다 처음 네 자리 숫자. 그리고이 항상 나타냅니다 마지막 네 자리. 그리고이 두 자릿수 단지 다른 비트에 해당합니다. 청중 : 그래서 우리는 always-- 것 교수 : 당신은 항상있어 여덟 값 비트를 얻을 것. 청중 : 그냥 일을 좋아하는가요 여기에 또는 온통 일이? 교수 : 그건 그냥이다 컴퓨터에있는 것, 네. 청중 : OK. 신난다. PROFESSOR : 또한, 본 예에서는 그렇게 우리는 진수 바이너리로 변환 이진의 진수이다. 너희들은 또한 당신이 있는지 확인하려면 주위에 다른 길을 갈 연습. 내가 당신에게 0XFF을 준 그렇다면, 당신은 할 수 바로, 진 것을 끌어? 당신은 바이너리로 F를 변환 어느 한 번, 한 번, 이진로 (F)로 변환하는 한 번, 한 번이다. 그래서 우리는 무엇을 요청할 수 있습니다 다른 방법으로 주위. 그래서 이진에 진수, 또는 바이너리 16 진수. 그래서 당신은 만들고 싶어 반드시 두 가지 방법을 알고있다. 우리는 아마 당신에게 물어 볼게요 2 종. 그래, 당신은 질문이? 난 당신이 좋은 것 see-- 수 있습니까? 청중 : 네. 교수 : OK. 나는이를 지울 좋은 건가요? 큰. 좋아, 그래서 대답은 누구 경우 현재 위치 나중에 호기심과 혼란에 빠진다. 그래. 청중 : 우리가 넣을 경우 중요합니까 국회 의사당 또는 소문자로 우리의 문자? 교수 : 그것은 않습니다, 때문에 16 진수, 규칙에 따라, 모든 문자를 대문자로한다. 그래서 F를 통해입니다 대문자 될 것이다. 당신이 소문자를 넣으면, 나도 몰라 우리는 반드시 잘못 표시한다면. 그러나 이론적으로, 그 기술적 아니다 당신은 어떻게 그것을 가지고 하잖아요. 그래서 그들은 모두 대문자이어야한다. 그래, 좋은 질문입니다. 그래. 두 번째 질문입니다. 여기에이 사랑스러운 프로그램을 생각해 보자. 나는 질문을 할 것이다, 나는 이것을 다시 올 것이다. 그래서, 우선, 표준 내부에 무슨 그 io.h 프로그램에 관심있어? 둘째, 무엇은 무효 않습니다 라인 세에 의미? 셋째, 무엇에서 제로를 반환 않습니다 메인 라인 여섯으로, 일반적으로 의미? 너희들은 사람들을 작성하려면 내가 다시 전환 할 필요가 있기 때문에, 아래로 슬라이드에 너무 당신은 코드를 볼 수 있습니다. 이 같은, 어쩌면의 예입니다 우리는 당신에게 높은 수준의 질문 무슨 일이 프로그램에서 의미한다. 나를 위해 좋은 모두 다시 슬라이드로 이동? 그래 좋아. 그래서 나는 당신에게 아마 세 같은 사람을 줄 것이다 분은이 하나의 진짜 빨리 볼 수 있습니다. 그래서이 하나의 같은 확인 아주 쉬운 개념. 무슨 사람이 말해 원합니까 포함 해시로 내부 처음 우리의 표준 io.h 라이브러리 파일? 왜 우리는이 라이브러리를 필요로 하는가 이 프로그램에 포함? 여기에서 우리는 무엇을 위해 그것을 필요합니까? 네? 청중 : 그 때 당신은의 printf를 넣어? 교수 : 맞아요. 그래서 printf와, 언제 당신에게 사용자로부터 입력을 받아 인쇄 무엇인가 화면에, 그건 표준 입력, 출력 라이브러리. 출력을 입력 way-- 그것이 생각하십시오. 나는 출력이 있습니까? 예, 할. 그래서 나는 항상 갈거야 알고 표준화의 i.o 라이브러리가 필요합니다. 그래서 printf의 함수이다 하는 우리가 접근 할 필요가 과 해시 태그는 포함 표준 i.o 라이브러리. 그래. 둘째, 무효는 무엇을 의미 하는가? 우리는 무엇을 수행 INT 주 (무효)가 여기 무효화 라인 세 여기에 의미? 그래, 다시. 청중 : [들리지] 교수 : 맞아요. 그래서 우리는 배운 기억 우리의 PSET로 시작 당신이 실제로 수 명령 줄을 지정 인수하는 프로그램, 당신이 주요 기능, 당신을 취한다, 사용자, 를 호출합니다. 우리가 무효가 있다면, 그건 당신을 의미 다만 직접 프로그램을 실행할 수 있습니다 어떤 명령 줄 인수없이. 모든 사람이에 명확한? 그래. 그리고 마지막으로 우리는 왜 일을 귀찮게합니까 여기 반환 제로 일이? 왜 우리는 심지어 INT 메인을해야합니까? 왜 우리는 무효 메인 무효를 가질 수 없습니다? 네? 청중 : 그냥 우리가 할 수 있도록 프로그램이 있는지 확인합니다 로 성공적으로 종료 이 번호 경우에 반대했다. 그리고 우리는 그건 것을 알게 될 것입니다 에러의 다른 종류. 교수 : 그래, 정확하게. 이것은 그냥 아주이다 우리가 기존의 것, 그것은 단지의 끝에 프로그램 바로 확인하기 주요 기능이 제대로 실행되고, 우리는 항상 리턴 제로 작업을 수행 할 수 있습니다. 심지어 우리가 반드시 수 있지만 그 어디서든 인쇄 볼 수 없습니다. 때문에 프로그래머로, 당신도 알다시피, 경우 당신은 코드의 다양한 라인을 가지고 당신은 어디에서 모르는 이러한 잘못 가고있다 오류가 발생하는 경우 당신이 원하는 당신이 오류가 있는지 확인합니다. 그래서 일반적으로 일이 진행하는 경우 잘못된 우리는 하나의 반환을해야합니다 단지 우리가 있음을 알고 있어야합니다. 당신이 반환을 참조한다면 제로, 그 일반적으로 프로그램이 의미 성공적으로 실행. 좋다? 시원한. 좋아, 여기에 두 번째 프로그램. 그렇게 생각해. 그리고 너희들을 볼 경우 플로트, 너희들은 아마 수 좋은 아이디어를 가지고있는 난 당신을 물어 약 해요. 그래서 때이 프로그램 당신이 볼 수 있듯이, 실행, 나는 float를 선언하고 내 주요 기능 내부. 나는 "대답"이 이름 그리고 난하고 있어요 그 (10)에 의해 하나의 동일한 분할. 나는 하나에, 밖으로 인쇄하고 있습니다 소수점 자리, 그 플로트. 그리고 나는 제로를 반환하고 있습니다. 그래서 프로그램을 실행할 때, 지금 다시 욕심에 생각, 이 프로그램은 0.0 인쇄합니다. 우리 모두가 알다시피, 희망을 우리 모두 10으로 나눈 하나는 0.00 아닙니다, 알고, 그것은 0.1입니다. 이 프로그램은 생각하지만 왜 설명 (1) 기타 0.1 (10) 인쇄로 나눈 것을 0.1? 나는 30처럼 너희들에게 어쩌면주지 초는 신속하게 생각하는 나는 다시 프로그램에 갈거야. 그래. 누군가는 그에게 기회를주고 싶어? 세 문장 이하에서, 일반적으로 우리가 있기 때문에 모든 대답을 제한하는 것 세 문장 이하 그래서 당신은 역류하지 않는다 퀴즈 상에 임의의 물건. 그래, 총을 쏘면. 청중 : 그래서이 있다고 생각 같은라는 것은, [들림] 그래서이있을 수 있습니다, 예를 들어, 0.09, 등이있을 수 있습니다, 첫 번째 인쇄 곳 자리, 그것은 0.0 것입니까? 교수 닫기, 확실히. Christabell? 청중 : 당신은 하나를 분할하고 있고 10, 그들은 모두 정수입니다. 그래서 방법은 가고 있다고 이 정수로입니다 저장합니다. 그래서 가장 가까운 정수는 0.0을 것입니다. 그리고 그는 0.1이다. 교수 : 그래, 정말 좋다. 즉, 정답입니다. 그래서 이것은 매우 혼란 많은 아이들을위한 개념. 그리고 정말 있는지 확인하려면 이 모두의 머리에 강화된다. 우리는 부동 전화 그래서 포인트 부정확, 여기서 이유는 많은 욕심에서 프로그램의 처음에 작동하지 않았다을하기 때문에이었다 당신은 당신의 변수를 캐스팅하는 것을 잊었다. 그래서 Christabell는 말 완전히 정확했다. 플로트는 본질적으로 부정확하다. 컴퓨터, 오른쪽, 우리가 가지고 있기 때문에 메모리의 비트 한정된 양 우리는 숫자를 표현하는 데 사용할 수 있습니다. 따라서, 예를 들어,이 CS50의 ID is-- 나는 64 비트 컴퓨터 생각합니다. 플로트 만 표현 될 수있다 이러한 비트의 한정된 양만큼. 그리고 0.1 무한 제로와, 그의 0.1 오른쪽입니다입니까? 그러나 우리는 실제로 저장할 수 없습니다 우리의 컴퓨터에서 해당 번호. 우리는 단지이 없습니다 메모리가 부족하여이 작업을 수행하는. 그래서 가장 가까운 근사치의 어떤 메모리에 저장된 것은 실제로 0.000 뭔가 같은, 뭔가, 뭔가, 뭔가. 어느, 당신이 절단되면 그것은 0.0 아래로 반올림합니다. 그래서이 예제는 하나입니다 그 문제를 많이 보여줍니다 우린 할 때마다 우리는이 잘못 수학을하려고 다른 정수로 캐스팅없이. 그러니 이런 일이 조심. 퀴즈에, 우리는 당신에게 제공하는 경우 코드 블록과 같은이다, 무슨 일이 마지막에 출력한다? 그리고 그것은 어떤 임의의 값의 경우 그 일이 왜 사람은 알고 있어야합니다. 네? 청중 : 자르기는 제거한다 특정 시점 이후의 모든? [알아들을 수 없는] 교수 : 네, 실제로 그렇게 이것은 정말 나쁜 예입니다, 실제로 0.100 무엇 때문에 0.1 아래로 절단한다. 하지만 당신이 있다면 그건 ...를 실행하는 데 내가하지 기억 지난해 때문에 다른 프로그램에 달렸다. 그들은 무언가에라는 실행 CS50 어플라이언스, 어떤 ID와 상이하다. 즉, 32 비트 시스템이고, 나는 생각한다. 그리고 다른 수 있었다. 그러나 본질적으로, 바로 알고 절단의 전체 개념 그리고 그냥 물건을 차단하는 방법. 그리고 그것은 경우 rounds-- 청중 : 반올림없이. 교수 : 맞아요. 네. 시원한. 안녕, 다시. 우리는 단지 약간의 이상거야 퀴즈 검토 질문. 괜찮아. 그래서 여기에 다른 프로그램을 고려합니다. 나는 너희들을 줄거야 몇 분은이를 통해 읽을 수 있습니다. 이것은 매우를 위해 무언가이다 최근에 내가 당신을 많이 불었다 생각 사람의 마음. 그러나 우리는 말할거야 이를 통해 다시 단지 당신에게 확인하십시오 완전히 이해합니다. 그래. 그래. 사람은 더 많은 시간이 필요합니다 이 코드를 읽어? 그래. 그래서 나에게 보인다 이 프로그램에 내가 해요 하여 GetString을 사용하여 두 개의 문자열을 생성. 하나라고들과 하나 T했다. 그리고 그들은 동일한 있다면 서로 같 그것은 "당신을 인쇄한다 같은 일을 입력합니다. " 그러나 elsewise, 그것은 "당신을 인쇄 할 것이다 바로 "다른 일을 입력? 아주, 아주 간단 보인다. 그러나, 그러나, 나는 경우 실제로 이 프로그램을 작성하려고, 것 같다 경우에도 그 나는 입력 동일한 문자열, 그것은 여전히​​ "당신을 출력 다른 일을 입력! " 사람이 먹고 싶어합니까 왜이 프로그램을 항상 샷 응답 입력은 그 심지어, 다른 단어 자체가 동일한 경우? 그래서 만약 내가 다윗의 사랑을 input--했다 바로, 엄마와 같은 예를 사용 하는가? 소문자 M-O-M S, T에 대한 소문자 M-O-M과 같다. 나는 통해이를 실행 한 경우 코드, 왜 것 "당신이 다른 것을 입력?"인쇄 사람이 더 필요합니까 시간이 생각하는? 확인, 나는 우리가 좋은 것 같아요. 네? 청중 : OK, 그래서 그것에 대해 뭔가 그것은 바로, 메모리에 저장된 어디? 교수 : 그래. 청중 :이 경우처럼, 문자열의 메모리에 저장된다 spot-- 나는이 항아리가 제로 발명하고 있습니다. 교수 : 물론. 청중 : 그리고 문자열 T 메모리 장소에 저장된다, (167), 다음과 같은 제로는 167과 동일하지 않습니다. 교수 : 맞아요. 좋아, 그럼이 놀라운 기억 계시를 우리는 당신들에게 설명 지난 주, 그 문자열은 실제로 존재하지 않는다? 우리가 뭔가를 만들 때 호출 문자열 우리가있어, 현실에서, 문자 스타라는 것을 만들기. 어느 모두는 것은 포인터이다 문자열이나 문자의 배열. 그래서이 예에서, 나는 경우 입력 M-O-M 방식이었다 내 컴퓨터는 그것이 저장할 것 메모리 백 슬래시 제로 내에서, 오른쪽? 그 네 문자, 문자, 어딘가에 저장됩니다. 그리고이 네 자, 백 슬래시 제로, 바로, 다른 곳에 저장됩니까? 나는 아무 생각이 곳이 없다 주소 그들이 내 컴퓨터 어딘가에 것입니다. 그들이 어디에하지만 정확히 모른다. 나는 문자열을 만들 때 S, 모두가 정말 포인터이다 이 캐릭터 라인의 시작합니다. 그리고 나는이 T 값을 만들 때, 모든 것을 여기에 대한 포인터입니다. 그래서 당신은 시도 할 때 동일시 및 확인 s는 등호 있는지 T로 동일 컴퓨터 정말로 단지에 반환 당신이 M의 주소 그 M의 주소. 그리고 그들은 두 가지이기 때문에 데이터의 분리 된 조각 즉, 두 개의 서로 다른 저장됩니다 컴퓨터의 주소, 컴퓨터는 결코 않을 것 동일하게 되로 인식. 사람이 원하는 않는다 의 기회를주고 우리 우리가 해결하기를 원한다면해야 할 것 이것과 올바른 실행중인 프로그램을 대신? 몇 초 동안 그것에 대해 생각하십시오. 우리는로 변경해야하는 일 이 프로그램의 기능을 얻을 우리는 그것이 작동 할 방법은? 그래,에 자상을 먹고 싶어? 청중 : 우리는 역 참조 시도 할 수 있습니다 포인터와 배열을 통해 확인? 교수 : 그 작업을 수행하는 하나의 방법입니다. 그래서, 당신의 이름은 또 무엇인가? 미안 해요, 저를 생각 나게. 지 : 지. 교수 : 그래, 그래서 뭐 지 절대적으로 작동합니다 제안했다. 권리? 우리는 포인터 반 참조 할 수 실제로 이동 및 액세스 여기서 내부 물성치. 그리고 우리는 단지 비교할 수 있습니다 전체 화면. 우리는 포인터, 확인, 말할 수있다, 여기 안에 무엇이 저를 제공합니다. 그것은 M을 반환합니다. 그리고 내가 말할 것이다, 포인터, 여기 안에 무엇이 저를 제공합니다. M을 돌려줍니다. 그 일치합니까? 네. 그럼 우리가 이동합니다. 우리는 전체 두를 계속 확인 이 끝날 때까지 문자열은 모든 길 그가 동일한 경우, 참조 모든 값이 동일한 경우. 모든 값이 동일한 경우, 우리는 문자열에 해당하는 것을 알고있다. 물론, 그것은 우리가 그것을 할 것입니다 방법은? 사람이 어떤에 혼동 하는가? 어떻게 문자열의 전체 개념 정말 그냥 포인터가, 어떻게 그들은 실제로 존재하지? 그리고 왜 우리는 오류를 얻을 우리가 그것을 얻을 방법 등? 나는 너희들, 포인터를 보장하기 때문에 문자열 할당 및 메모리 올 것입니다. 네? 청중 : [들리지] 역 참조 그것은, 당신은 단지 스타를 넣어 [들림] 교수 : 네. 그래서 포인터 수단 derererence 할 포인터의 주소로 이동합니다 거기에서, 데이터 값을 얻었다. 그리고 그렇게 할 수있는 방법은 스타 포인터이다. 그 혼동하지 마십시오. 청중 : [들림]. 교수 : 그래. 청중 : 그래서 당신은 그냥 쓸 수 있습니다 스타의 동일 동등한 스타 T 경우. 교수 : 음, 아니. 아니. 청중 : 그건 바로, 충분히 좋지 않다? 교수 : 당신은 때문에, 아니다 첫 번째 글자를 검사. 당신은 아마 갈거야 루프의 일종을 필요로하는 매일을 반복 두 문자열의 문자. 네. 그래서 만약 당신은 단지 확인하고 싶었다 그들은 같은 일을 시작하면, 당신은 스타 경우에 할 수있다 의 스타 T와 같다. 그럼 당신은 알고 적어도 그들은 같은 문자로 시작했다. 네? 청중 : 그래서 방법 당신이 그 것이다 않는다 루프 또는 포인터 내장처럼? 교수 : 그래. 꽤 많은 단지 루프. 클래스의 데이비드 언급, 기억 무료 문법 설탕? 그리고 그는 바로이 있었다 스타 T의 혼란 것 더하기 하나, 그것은 통합 할 관통하며 포인터를 이동? 수행하는 쉬운 방법 이 그냥의 톤입니다. 그래서 그냥 배열입니다. 당신이이 것이 방법 나는 제로에서 실행 루프, 어디 난의 길이 문자열, 당신은 할 수 그 대신 일을 쓰기 전체 포인터, 참조 것. 그래서 이런 일이 정확히 컴퓨터에 해당하는. 너희들 아마하지 않습니다 알 필요, 하지만 그냥 가지에 좋다 뒤쪽에 당신의 마음을 가지고있다. 그냥 컴퓨터가 알고 코드의 다른 블록을 인식 같은 일이있다. 이것은 단지 훨씬 더 많은 사용자이기 때문에 친절이처럼 우리는 그것을 제시하는 배열. 그냥 쉽다. 청중 : 그래서 좋아하는 나 strlen을 사용,이거나 먹어 교수 : 그래. 청중 : OK. 교수 : 당신은 할 수 이 경우, strlen을 사용하거나 당신은 그냥 할 수있는 나 strlen하지 않았다 당신은 모두 백 슬래시 제로를 칠 때까지. 하나는 작동합니다. 네. 청중 : 그래서 모든 역 참조에의 하나의 문자 우리가 실제로 있다면 이 코드를 작성, 우리 다만 T 브래킷 난을 할 수 그것의 앞에 스타와 함께 좋아? 교수 : 그래, 등호의 S와 동일 내가하고 내가 움직이는 유지 브래킷 아래는 끝을 칠 때까지. 그래, 당신이 무엇을 할 것이라고합니다. 그리고 실제로 다음이있을 것이다 때의 예를 실제로 나 strlen 쓰기 그래서 너희들은 어떤 것 의 그것과 조금 주위에 플레이를 할 수. 그래서, 그냥 메모리에 모두 분명하다 문자열, 포인터, 품질 어드레스? 일부 높은 수준의 개념 당신 퀴즈에 알고 있는지 필요성에 대한 의지 내일. 괜찮아. 좋다. 네. 좋아, 그럼 한 가지 우리는 또한 요청할 것 그 우리는 퀴즈에 매년처럼 당신은,이다 (당신이 잊어 버린 것을 생각하는 우리는 매년 수행하는 것을 잊지 것 같다) 있는 헤더 파일의 strlen이 선언된다. 그래서 우리는 그것을 자신을 다시 작성해야합니다. 다음은 가이드 라인의 목록은 우리는 당신을 제공 할 수 당신이 가정에 도착들 문자열은 null 일 수 없습니다 s의. 당신의가 될 것이라고 가정 할 수있다 백 슬래시 0으로 종료되었습니다. 그래서 당신은 무엇을 알고 그것으로 끝나는거야. 그리고, 예를 들면, 그 안녕하세요의 길이는 다섯이 될 것이다. 그래서 당신은 인사를 가정 할 수있다 다섯, H-E-L-L-O 될 것입니다. 당신은 것을 가정 할 필요가 없습니다 길이 제로 계정을 뒷면. 여기에이 마지막 일,하지 정수 오버 플로우에 대해 우려하고있다. 사람이 기억 하는가 어떤 정수 오버 플로우는? 청중 : 넘어 [들림]의 길이. 교수 : 그래, 당신이 설명 할 수 비트, 그게 무슨 뜻 이죠? 청중 : 그래서, 나는 그것이 다시가는 것 같아요 절단 예를 들어 이전에. 하지만 당신은 너무 많은 숫자가있는 경우 즉, 비트의 수를 넘어 당신은 실제로 할당 할 수있는 그냥 가지 차단됩니다. 교수 : 그래, 일반에 이렇게 컴퓨터, 우리는 얼마나 많은 비트를해야합니까? 청중 : 32? 교수 : 그래, 32, 맞아. 그래서 그게 무슨 네, 있어요 억, 억? 사십억 최대 40 억, 양의 정수, 오른쪽? 두 억 음, 억 긍정적 인, 당신이 그것을 원하는 방법에 따라 달라집니다. 그래서 기본적으로 우리는 할 수 있습니다 올라갈 수있는만큼의 정수 31 일에 2 - 1, 오른쪽? 우리는 두 명중 한 번 때문에 32에, 우리는하지 않습니다 우리의 컴퓨터에 그 많은 메모리를 가지고있다. 그래서, 이론적으로, 나는 숫자로 올 수 즉, 같은 46 두이다. 그것은, 큰 엉덩이 번호입니다 만 이론적으로 당신은 할 수있다. 당신이하려고하면 그래서 정수 오버 플로우입니다 무엇 넘어 정수를 만들 컴퓨터에 저장할 수있다. 대한 그래서 너희들 이 예는없는 우리가 당신에게 거대한주는 걱정할 32 문자 두 가지이다 문자열 긴. 그건 정말 의미 할 것입니다. 좋아, 그래서 난 그냥주는거야 너희들이의 기본 구조. 당신은을 만들거야 기능 INT 나 strlen 곳이라고 에 통과, 문자 스타, 또는 문자열, 문자열에 대한 포인터의 불렀다. 좋아, 모두가 그 아래로 복사합니다. 시원한. Oops-- 다른 방법. 그래서이 같은 종류의 것입니다 문제의 열심히 조각, 그래서 나는 당신에게 아마 다섯 사람을 줄 것이다 브레인 스토밍 가지에 육분 이 기능을 쓰기. 청중 : 우리는하지 않습니다 [들림]에 대한 계정, 우리는 정수를 사용할 필요가 없습니다? 교수 : 아니, 당신은하지 않습니다. 나는 사람들에게 당신에게 힌트를 줄 것이다. while 루프는 여기에 매우 유용 할 수 있습니다. 네. 여기 사탕. 사탕도 사용할 수 있습니다 퀴즈, 나는 생각한다. 그래서 너희들은 모든 것입니다 내일 설탕. 당신이있어 난 - 수 있습니다. 청중 : OK. 교수 : 그래. 아마도 30 초 이상 정도. 좋아, 당신이 있다면 하지, 걱정. 우리는 함께이 이동할 것이다. 그래. 그래서 난 그냥 레이아웃에 갈거야 여기에이 기능에 대한 기본 구조. 나 strlen 지능. 첫째, 사람이 말하고 싶은 않습니다 내가 그 INT는 의미 무엇? 우리는이 기능에 있어야합니다. 청중 : STRLEN [들림]. 교수 : 맞아요. 그래서 여기에 무슨 일이 생기면, 우리는 정수를 반환해야합니다. 상기에 명시된 사양, 우리는 return-- 할 다만 계속, 그것은 사람에 대한 이동합니다. 전부다 괜찮아. 그것을 먹고 모든 그래서 나는이 없습니다 실제로, 그것을 다시 촬영합니다. INT는 당신이 걸 의미 가는 정수를 반환합니다. 이 문자 스타들 무엇입니까? 그게 무슨 뜻 이죠? 청중 :에 입력되는 무슨처럼. 교수 : 맞아요. 그리고 거의을 것입니다 문자 스타 같은 일? 청중 : 문자열? 교수 : 맞아요. 그래서 우리가하고있는 모든주고있다 문자열이 포인터. 그래. 시원한. 우리가 잊어 버린 경우 또한, 잊지 마세요 당신이 브래킷을주고, 그들에게 직접 작성하는 것을 잊지 마세요. 이론적으로하기 때문에, 당신의 코드는 당신이 그 (것)을 작성하는 것을 잊지 경우 잘못된. 그냥 항상주의를 기울입니다. 마찬가지로, 작은 것들 당신은 통지를하지 않는 것이 당신이 당신의 노트북에 프로그래밍 할 때, 당신의 휴대용 퍼스널 컴퓨터는 당신을 위해 그것을 않기 때문에? 때 잊지 마세요 당신은 손으로 작성하고 있습니다. 네? 하지만 어떻게 잘못된 : 청중? 마찬가지로, 우리는 잘못 전체 문제를 어떻게해야합니까? 교수 : 아니, 아니. 걱정하지 마십시오. 사실은 이론적으로 가능 당신은 질문에 전체 포인트를 획득하는 당신의 코드가됩니다 실제 생활에서 실행되지 않습니다. 나는 당신이 시도하지 않는 것이 좋습니다 그렇게 확인합니다. 예를 들어, 같은 경우 모든 즉, 여기에 적합한, 하지만 당신은 콜론 또는 브래킷을 잊고, 코드가 실제로 실행되지 않습니다. 그러나 우리는 자비를 할 수있다. 네? 청중 : 당신이해야합니까 우리의 필기에 대한 의견? 교수 : 아니, 아니, 아니 그것에 대해 걱정. 어떤 주석이 없습니다. 스타일이 잘되어야합니다. 마찬가지로, smush하지 않습니다 한 줄에 모든 것을. 우리는 행복하지 않을 것이다 당신과 당신은 그렇게 할 경우. 사람이 원하는 않는다 나에게 첫 번째 라인을 제공? 힌트는 아주 간단합니다. 네? 청중 : 지능이, n은 제로 같습니다. 그냥 카운터를 설정합니다. 교수 : 그래서 우리는 몇 가지를 원한다 카운터의 종류, 오른쪽? 난 그냥 이름을 "계산"갈거야 가독성을 위해서. 우리는 동등한로 설정 하시겠습니까? 청중 : 제로. 교수 : 그래. 세미콜론. 그것은 또한 매우 이상한 그리기 세미콜론입니다. 그냥 그 일을 연습합니다. 그래서 우리는 먼저 갖고 싶어 int 형의 카운터. 우리는 어떻게 카운트 할 때문에 많은 문자 또는 문자입니다 이 문자열에, 오른쪽? 아주 쉽게 첫 번째 단계. 좋아, 어쩌면 좀 더 복잡한 지금, 우리는 어떻게 그렇게 할거야? 사람이 원하는 않는다 나에게 코드의 라인을 제공 그 루프를 도울 수있다 어떤을 통해이 무엇입니까? 다시 네, 용감한 영혼? 청중 : 좋아, 그럼 동안 포인트 별표, S의 그래, 스타, 하지가 0, 다음 뭔가? 교수 : 그건 정말, 정말 가깝다. 정말 가깝습니다. 그래서 해결하기 위해거야 그 두 가지. 우선, 정확히 제로 아니다. 그것은 무엇인가? 그것은, 널 터미네이터의 이는 백 슬래시 제로입니다. 그래서 그들은 다른있어 그들은 저장하는 방법의 측면. 그래서 당신은 정말 가까이있어. 그리고 둘째로, 우리는 원하지 않는다 그냥 포인터를 이동합니다. 우리는 실제로 원하는 오른쪽 값에 액세스? 그래서 우리가 어떻게 그렇게 할 수 있습니까? 아주 쉽게. 포인터에 대해 생각하지 말고, 기억에 대해 생각하지 않습니다. 이 과정의 주 두로 이동. 청중 : [들림]. 교수 : 현재, 기억 나? 문자열은 무엇입니까? 그들은 어떻게 메모리에 저장됩니다? 청중 : 그들은 제기하고있다. 교수 : 그들은 발생합니다. 그래서 우리가 어떻게 접근 할 내부의 각 문자? 청중 : [들림]. 교수 : 맞아요. 그래서 내부 여기에 무엇을 간다 while--? 의 S - 청중 : I. 교수 : 아, 내가 존재하지 않는, 그것은 무엇입니까? 청중 : 아, 계산? 교수 : 우리는 할 수 있습니다 우리는 할 수없는, 수를 사용할 수 있습니까? 청중 : 죄송합니다, 나는 그것을 내가 불렀다. 교수 : 그래, 모두 좋다. 우리는 그건 여기에 변수를 가지고 이미 우리의 카운터로 선언되었다. 그런데 왜 우리는 단지 그것을 사용하지 않는 while 루프를 통해 이동? 말이 돼? count--의의 사람이 원하는 않지만 그래서 여기 발생 후 저를주는? 청중 : 그것은 동일하지 않습니다. 교수 : 동일하지, 바로합니까? 그것은 강타는, 동일있어 느낌표, 동일 너희들이 원하는대로 equal--하지 않는 호출 청중 : [들림]. 교수 : 그래. , 문자위한 작은 따옴표를 기억 큰 따옴표는 문자열에 대한 것입니다. 를 사용할 때주의해야합니다. 그럼 언제 우리를 통해 찾고 배열, 마지막 문자, 우리는 우리가 원하지 않는 알고 그것은 백 슬래시 제로한다. 반면 그래서. 우리는 문자열의 끝이 아니다. 우리는 내부할까요? 청중 : 우리는에 추가 할 카운터는 카운트 플러스 플러스 그래서? 교수 : 맞아요. 그래서 여기에 우리가 할거야 계산 플러스 플러스, 계산합니다. 하나 더 라인을 누락되었습니다. 우리는 거의 다 왔어. 우리는 무엇을 잊고있다? 청중 : 제로 갈까요? 교수 : 당신은 0을 반환하고 싶어? 청중 : 아니, 나 strlen로 돌아. 기다림. 교수 :에 저장됩니다? 청중 : 계산합니다. 카운트. 교수 : 맞아요. 그래서 여기에 우리가 수를 반환 할 것입니다. 우리가있어 무엇 때문에 여기서 뭐 ultimately-- 우리의 카운터 변수가 우리의 문자열을 통해 증가하는 것. 우리는 계속거야, 유지 이 루프에서 주변과 주위에가는. 그리고 우리는이 말에 있지있는 동안 널 (NULL) 종료 문자열입니다. 그리고 우리가 통과 할 때마다 그것은, 우리는 우리의 카운터에 추가하고 있습니다. 그리고 우리는 더거야 이 배열에 따라. 그리고 마지막에, 우리 한번 null 종결 충돌, 우리는 오, 우리가 할 수있는, 알고 휴식, 수를 반환합니다. 우리는 우리의 나 strlen 있습니다. 모두가 어떻게 얻을 수 있는가 이것은 구현? 내가 아는 loops-- 동안 우리는하지 않은 그들과 함께 너무 많이 수행 하지만 그들은 일반적으로있어 아주, 아주 유용하게 경우 당신이 중지하는지 모르겠 조건은 반드시 있어야한다. 문제? 청중 : 우리는 널 쓸 수 동안의 조건? 교수 : 동안? 네, 그래서이 문제에서 당신을했다 사람은 S가 null이 아니한다고 가정합니다. 기억 때문에 이론적으로, 경우에 당신을 준 메모리가 너무 커서 포인터, 그것은 바로, 당신을 돌려 줄 것이다? 그건 무엇 운영 시스템은 할 것이다. 내가 생각하는 방법을 알려 작성하지 않은 경우 S가 널이 될 것입니다, 당신은 확인해야합니다. 그래서 여기까지, 당신이 할 것,의 경우 널 (null)과 동일과 동일 하나를 반환합니다. 뭐 그런. 청중 : [들리지] 제로. 교수 : 좋아, 내가 말해주지 당신은 우리는 그렇게 할 수없는 이유. 바로 여기, 메모리에 기억 때문에. 우리는 여기 있습니다. 당신은 거대한 블록을 가지고 모든 그리드와 메모리 를 저장하는 다른 값, 오른쪽? 그래서 모든 문자열에 대한 is-- 예를 들어, 우리가 안녕 입력하는 경우, 이는 H-E-L-L-O 것 백 슬래시 제로, 오른쪽? 그리고 누가 무작위처럼, 알고 그 후 여기에있는 것. 우리는 실제로 존재 모르겠어요. 그리고 당신이 할 것 인 경우 대신 백 슬래시 제로, null의 경우, null를하지 않을 수 있습니다. 그냥 의미 할 수 있기 때문에 어떤 임의의 다른 것들 그것은 당신의 문자열에 속하지 않습니다. 그리고 방법 우리는 항상 알고 그 끝나는 문자열은 백 슬래시 0으로합니다. 그리고 그것은 항상 어떻게 우리를이다 문자열의 끝을 확인하십시오. 당신이 가지고있는 경우는 null, 모든 수단이다 우선 포인터가 존재하지 않는, 또는 당신의 기억은 너무 큰 경우 당신이 그것을 반환 할 수 없습니다, 그것은 null이 될 것입니다. 차별화 그래서 매우 조심 널 차이점 그리고 백 슬래시 제로. 네. 이와 확인을 모두? 그래. 그래서 너희들이 나 strlen 써 있었다. 실행 가능하게 우리는 또한 당신이 쓰는 질문을 할 수 나는에 밖으로 기억이 "Atwoa" 또는 어떤 너희들은 그것을 호출 할? 그 기능에 Vigenere와 시저, 그 정수에 대한 ASCII 값을 변환? 그것은 또한 지난 퀴즈에 도달했습니다 기능의 우리가 작성하는 당신을 요청했습니다. 거의 모든 기능 당신이 사용하고있다했는지 직접 작성하는 것은 매우 쉽습니다, 센서는 낮은처럼, 상단에, 낮추려면 위입니다. 변환 할 기능 소문자에서 문자열을 대문자로. 우리 모두는 바로 그 작업을 수행하는 방법을 알아? 그것은 꽤 간단합니다. 그냥 있는지 확인하려면 당신 주는거 동일한 사고 과정이다. 당신은 반복 당신은 일을 켭니다. 당신이 중 하나를 계산하거나 당신은 사물을 다르게 설정합니다. 난을 suggest-- 것 우리가 거​​라면 모르는 어떤 자본을 암기하도록 요구하거나 자본 Z, 또는 소문자 또는 소문자 Z ASCII로,하지만 난 제안 아마도 경우에 그 아래로 작성 우리는하다. 그냥 그래서 너희들은 참조를 가지고있다. 대문자 A는, 무엇을, 197처럼? 그리고 소문자는 50 일 같습니다. 65, 그래, 거기 당신은 간다. 그러니 그냥 꽤 많이 알고 그들 사이의 차이는 32입니다. 그것은 매우 중요합니다. 네. 나는이 좋은 건가요? 그래. 청중 : 우리는 할 수 이론적으로 일부를 쓰기 뿐만 아니라이 아래로 우리의 little--에의 교수 : 당신은 이론적으로 단지 기능을 복사 할 수 있습니다. 그건 사실입니다. 청중 : 없음 [들림]. 교수 : 너희들은 시트가 있습니다. 너희들은 메모 시트가 있습니다. 당신은 그것을 입력 할 수 있습니다. 당신은 그것을 쓸 수 있습니다. 당신은 당신이 그것으로 원하는 건 뭐든지 할 수 있습니다. 네. 그래서 이론적으로, 경우 당신이 가고 싶어요. 청중 : [들리지] 그러나 우리는 정말하지 않습니다 반드시 기억해야 값, 우리는 할 수 상단 또는로를 사용 낮은 기능, 오른쪽? 교수 : 그래. 그러나 우리는 당신에게 질문을했다 경우 즉, 상위에 기록 말한다 당신은 그것을 작성해야합니다. 그래서 너희들은 있다고 가정 할 수 있습니다 사람은, 모든 기능에 액세스 할 수 있습니다 하지만 당신은 상단 또는에 사용하려는 경우 낮은, 당신은 어떻게해야합니까? 청중 : [들리지] 사용 CS50 [들림] 교수 : 그것은 CS50.h인가? 이주의해야합니다. 상단에 그래서, 낮추려면 ,, 위입니다 낮은 포함 기능 문자열 조작은 모든 중 하나 아스키 내 또는 수학 라이브러리 내 또는 문자열 라이브러리 내. 너희들이 그를 사용한다면 기능은 기억하기주의 그 헤더를 포함합니다. 그래서 아마 또한 뭔가를 당신의 시트에 포함 할, 헤더는 무엇인가? 라이브러리는 무엇입니까 당신이 사용했던? 어떤 함수입니다 이러한 라이브러리 내부에? 그것은 중요합니다. 네? 청중 : 우리 수 단지 경찰 아웃과 해시 태그를 할 절대적으로 통해 우리가 이제까지했습니다 모든 편지 모든 질문에 같은 봤어? 교수 : 당신은 할 수있다. 나는 얼마나 행복 모르는 우리는 학년이 될거야 그 퀴즈 때 코드의 모든 부분 배 그것이 될 필요로합니다. 나는 우리가 수도 몰라 스타일에 포인트를 벗어. 그러나 이론적으로 당신을 코드가 잘 될 것입니다. 너희들은 경찰을 할 수 있었던 그냥 모든 것을 포함한다. 즉, 그래, 너무 괜찮아요. 청중 : [들림]. 교수 : 그래. 그래도 난 그 일을하지 제안했다. 네. 청중 : 쿨. 교수 : 좋은 질문입니다. 청중 : 그래서, 최악의 시나리오. 교수 : 최악의 경우. 당신은 완전히 잊어 버린 경우, 당신은 그렇게 할 수 있습니다. 네. 네, 코드는 바로 거기에있다. 나는 N 대신, 당신을 카운트 만 사용 보트 뭐든 수레, 알고있다. 청중 : 잠깐, 그래서 우리 해시 태그가 없습니다 것 우리가이기 때문에 포함 INT에서 시작? 교수 : 그래, 난 그냥 가정 우리는 함수를 작성했다. 당신은 안전하고 싶었다면, 당신을 아마 거기에 넣어 수 있습니다. 하지만 난 그냥 그래, 걱정하지 않았다. 내가 알지도 못하는 당신 경우 이에 대한 라이브러리가 필요합니다. 당신이 정말로 인쇄하지 않을 때문에 아무것도 또는 아무것도 밖으로, 오른쪽? 그래, 난 알고하지 않습니다 당신은 라이브러리가 필요합니다. 그래. 이 함께 또한 조금 더 메모리 조작의 라인. 까다로운 비트의이 종류. 이것에 대해 생각하십시오. 당신은 FUNC라는 기능이 있습니다. 나는 그것을 이름을 수 있었다 무엇 이건, 하지만 난 FUNC 그것의 이름을 선택합니다. 내 주 이상을 가지고있다. 당신이 갖고 싶어, 기억 주 후 기능, 당신은 당신이 있는지 확인하려면 상단의 프로토 타입을 포함한다. 그러나이 경우에는 매우 짧았다 내가 느낀 그 난 그냥 수 주요 꼭대기를 포함한다. 나는 프로토 타입이 필요하지 않았다, 이미 위의 ​​기록이기 때문. 그래서 모든 내 주요 기능으로하고 있어요 정수 X를 만드는 것은 10와 같습니다. 나는 나의 FUNC 함수를 호출하고있어 다음 뭔가를 인쇄. 그리고 그 사실이다 무엇 FUNC 것은하고있다. 너희들은이를 생각하고 싶다. 그것은 조금 까다로운 때문입니다. 실제로, 매우, 매우 까다로운. 어떤이를 생각 프로그램은 출력 될 것이다. 나는 사람들에게 당신에게 2 분 줄 것이다. 좋은 토론? 청중 : 네. 교수 : 그래. 좋아, 그래서 이것은이다 이유 까다로운. 내가 불어 넣고 싶었 이유입니다 모두의 관심이. 사람이 나를주고 싶어합니까 제안, 시도? 이것은 무엇을 인쇄 할 것인가? 당신이 잘못이 있다면 모두 괜찮아요. 네? 청중 : 나는 100이다 생각하고 다음 10 두에 별도의 행. 교수 : 그리고 10? 사람이 어떤 다른 추측이 있습니까? 네? 청중 : 아마 10 때문에 FUNC 아무것도 반환되지 않는 이유는 무엇입니까? 교수 : OK, 우리 때문에 추측 번호 하나가 추측 두 번째는 것입니다 10를 인쇄하는 것. 사람이 어떤 다른 추측이 있습니까? 그래. 그럼, 오른쪽이를 통해 살펴 보겠습니다? 당신이 코드의 조각을 얻을 때마다, 그냥보고처럼하지 말고, 아, 너무 많은 물건입니다! 난 너무 혼란 스러워요! 마찬가지로, 자신을 진정. 그냥 알고 당신은 할 수 선으로 코드 라인을 통해 본다. 즉, 모든이다. 이 책을 읽고 같다. 어떤 기능 그래서, 우리는 항상 주에서 시작합니다. 그래서 우리는 갈거야 INT 주요 공간에서 시작, 심지어 프로그램의 이미 오른쪽 아래로 실행? 주요 무효시 시작합니다. 지능 X 10과 같다. 그래서 나는이를 지울거야. 내가 메모리를 그릴거야 그냥 그렇게 사람의 종류 무슨 일이 일어나고 있는지 볼 수 있습니다. 우리는 우리의 스택이 여기로 기억 하는가? 여기에 우리는 우리가 여기 어딘가에 북돋워. 스택, 오른쪽, 위쪽 성장? 그리고 스택 내에서, 당신은 메인뿐만 아니라 기능 전원 지역 변수의 모든. 그래서 여기, INT X 10과 동일. 우리의 주요 기능 내에서 우리는있어 X라는 변수를 생성. 우리는 10 그와 동일한 설정하고 있습니다. 여기에 일부 X있어, 당신은있어 바로, 10 그와 동일한 설정, 주요 내. 모두 좋은? 기능. 그래서 지금, 우리의 주요 내 기능, 우리가 전화하는거야 우리가 위에서 작성한 기능. 그래서 우리는 지금 두 번째 함수를 입력하고 있습니다. 우리는 서로를 만들거야 int 변수 X 100 같습니다. 무엇 스택 여기 일이야? 당신을 호출 할 때 어떤 일이 발생 새로운 변수를 생성 기능? 무엇 스택 여기됩니까? 청중 : 상단에 [들림] 더미? 교수 : 그래. 그래서 실제로 복사본을 만듭니다. 위에 더미 그리고 종류. 스택 stack-- 생각 책, 아무것도의 스택. 마지막에 처음 상단에 말뚝, 아웃, 첫 번째, 아웃 지속됩니다. 그래서 여기에 X를 만들 것입니다. 즉,이 것 모든 funcs 변수. 큰. 그래서 지금 우리는 두 가지의 X의 그이 두 개의 매우 다른 것을 나타냅니다. 그 다음 우리는 인쇄 할거야 x의 정수 아웃. 그래서 바로 100를 인쇄 할 수? 여기에 있기 때문에 100입니다. 그래서 우선이다 그것은 인쇄 것있다. 이 함수가 반환 아무것도로서, 이제 기능, 주에서 그 라인 수행. 지금까지 나와 함께 좋은 모두? 그래서 우리는 중 2 개를 통해 지금이야 우리의 주요 기능의 세 가지 라인. 이제 우리는 세 번째 줄 것입니다. 우리는 printf 것입니다. 주 내에서이 X는 무엇입니까? 그 무엇을 상징 하는가? 무엇 값은 지금 X는? 청중 : 100. 교수 : 그것은 100인가? 청중 : 아직 10. 교수 : 아직도 10. 네. , 내 기억 때문에 우리의 FUNC은 X 100 같습니다. 그러나 우리는 다시 반환하는 경우 우리의 주요 기능, 해당 변수에 저장된 우리의 스택에 다른 장소. 그래서 지금 우리는 다시 갈 필요 주요 스택은 지역 변수를 주전원. 그리고 여기 X 10과 동일하다. 그래서 우리는 10를 인쇄하는 것입니다. 그래서 그녀는 절대적으로 옳았다. 우리는이 겁니다 (100) 및 (10)의 출력. 네? 청중 : 그것은 당신의 malloc입니다 힙 또는 [들림]입니다 스택? 교수 : 때 malloc에​​, 당신은 힙에서 메모리를 가지고있어 그것은 할당. 당신이하지 않도록 이 모든 엉망이다. 그래서 더 큰 테이크 아웃을 추측 여기 범위라는 것이있다. 에 있었던 사람들을 위해 리뷰 세션 지난 밤, 우리는 이것에 대해 간략하게 이야기했다. 범위를 정의하는 방법과 당신의 변수가 존재하는 경우. 또는 프레임 어떤 내 당신의 변수가 존재하지. 일반적으로 엄지 손가락의 거의 규칙 당신이 그들을 만들 경우, 당신의 variables--입니다 곱슬 braces-- 내부에 그들은 존재 만 중괄호. 그래서 우리의 기능 예를 들면 FUNC, 당신은 그 두 괄호를 참조하십시오. 당신이 만드는 경우 그 안에 아무것도, 기회는 당신이하고있는 모든이있다 스택을 만들고 거기에 그 저장. 메인에 같은 일이. 즉, 단지 주 안에 저장된. 또한 당신이되고 싶어 여기에 매우, 매우 조심. 범위도 빌려 준다 때문에 다른 예를 자체. 예를 들어 A에 대한 그래서 루프는, 인터넷 용 난 0 같습니다. 나는, 10 나도 몰라,보다 작습니다. 나는 플러스 플러스. 그리고 당신은, 바로 그것의 내부 코드를 가지고있어? 어디이 변수가 않습니다, 난 사실 만 존재 하는가? 만 루프의 내부. 그래서 난 너희들의 대부분은이 내기 아마이 오류 경우가 발생 당신은 당신의 Pset에서 프로그램을하고 있어요. 어떻게 사람의 많은 내가 사용하려고했습니다 for 루프의 외부에 오류가 있었습니까? 참조되지 않은 정수처럼 또는 그런 일? 그렇게하는 이유 여기에 당신이이기 때문이다 무언가를 만들기 만 당신의 루프 내에 존재. 당신이 그것을 사용하려고하면, 나는하지 않습니다 실제로 외부에 존재한다. 그래서 기본적으로 컴퓨터는 내가 말 당신이 무슨 말을하는지 모르겠어요. 내가 아는 건 내가했다입니다 여기에,하지만 지금은 더 이상. 그래서 만약 내가를 만들 수 있었다 내부 루프, 오른쪽? 그리고 나는 또 다른를 만들려고하고, INT의 J처럼, 그것은 무엇을 가지고. 그리고 당신의 내부 코드를 그 루프는, J는 여기에 존재한다. 하지만 그 또한 내가 내 존재합니다. 그래서 J는 존재 루프이 내, 나는 모든 일에 존재하는 반면. 모두 명확한? 조건문과 같은 것 당신은 아무것도를 만들려면. 동안 루프의 경우와 같은 일이 당신은 아무것도를 만들려고합니다. 즉이 될 뭔가 매우, 매우 조심. 그래서 이것은 정말 좋은 문제가 있었다 이 두 가지를 보여 것을 감지. 그것은 최초의 범위를 보여 주었다. 그리고 그것은 입증 또한, 메모리 할당. 너희들은 알고 있어야하기 때문에 함수는 스택의 위쪽으로 성장한다. 그리고 그에게 당신이 호출 할 때 기능, 당신이 만드는 메모리 본질적으로 새로운 스택. 즉 매우 다르다 당신의 메인 메모리는 무엇인지. 네. 아휴! 그에서 확인을 모두? 즉 혼란이었다. 아주 좋은 주제, 이상 이동 당신은 아마 있기 때문에 일부 까다로운을 얻을 것 퀴즈에 그런 것. 네. 시원한. 난 당신이 하나에 100를 얻을 수 놓을 게요 라인 (10) 다음에 다른. 네, 아주 좋아. 좋아, 이제 너희들 얻을 것이다 기회는 조교합니다. 당신은 모든 사랑스러운 답변을 얻을 가끔 얻을 이메일. 그래서, 친애하는 앤디는, 내가 뭔가 생각 참조 내 컴파일러와 함께 잘못된 것. 나는, 내 코드가 올바른지 확신 하지만 세그먼트 오류가 계속 내가 실행할 때마다. 무슨 일이야? 도움이 많은 사랑 바랍니다. 너희들은 뭔가를 가지고있는 경우 당신이 응답하는 방법이? 이 사실은 매우 일반적인 질문은 우리가 당신을 요청할 것입니다. 우리는 당신을 줄 것이다, 경우인가 시나리오, 우리는 우리에게 줄 것이다 무슨 일이 일어나고 있는지에 최선의 추측. 사람은 무슨 일이 일어나고 있는지에 자상을 가지고? 네? 청중 : 아마 역 참조 포인터처럼 널, 뭔가 널 뭔가 가리키는된다. 교수 : 그래, 그 것 그 일이 일어날 때의 예. 그러나 큰 그림 무엇 어떤 여기 일이야? 청중 : 당신은 노력하고 있나요 당신이하지 않은 것을 메모리에 액세스 할 수 에 액세스하는데? 교수 : 맞아요. 그래서, SEG 오류의 오프를 생각 메모리 제한, 제한 지역 것을 당신은 감동이어야한다. 그래서 꽤 많은 당신이 시도 할 때 예를 들어 같은 index--합니다, 당신이 선언 한 0에서 아홉에 배열. 하지만 당신은 그 10 일을 대지 값은 해당 액세스하지 않는다. 당신이 그것을 선언하지 않았기 때문에. 그래서 컴퓨터는 것입니다 그 같은 일을보고, 어 오, 당신은 이동하려는 인덱스의 경계 밖에. 나는 당신에게 줄거야 세그먼트 오류. 오른쪽 세그먼트로 생각? 추가 세그먼트, 고장입니다 당신이 뭔가를 위반하려고 할 때 당신은 없을 것이다. 분할 오류가 언제입니다 당신은 일을 대지 것을 당신은 감동이어야한다. 그래서 일반적인 예는 인덱스이다. 물론, 당신이하려고하는 경우 즉 null의 터치, 그 또한 잘 작동합니다. 포인터가하려고 한 경우 터치 안 물건을 만지지 그 또한 잘 작동 할 수있다. 가장 일반적으로는거야 배열이를 참조하십시오. 모두 좋은? 청중 : 당신이 원하는 경우에 따라서 10 점에 액세스 할 수 유일한 한계가있어 구 또는 무엇인가. 교수 : 그래, 정확하게. 꽤 많이. 시원한. 친애하는 앤디. 그래서 우리는이 멋진있어 가지 종류라고합니다. 경우 것은 우리로 sort-- 병합 예 경우에서 본 다윗은 전체를했다 그 수업에 가지 이유 그것보다 훨씬 더 빠른 경우 다른 종류의 어느 왜 우리는 심지어 알고 귀찮게합니까 다른 종류의? 정말 당신을 묻는이 질문은 무엇인가? 세 word--은 무엇인가 청중 : 트레이드 오프는 무엇입니까? 교수 : 맞아요. 즉, 문제가 요구하는 무슨이다. 사이의 트레이드 오프 기능 다른 종류의 절 일종의 병합? 청중 : 오른쪽, 메모리를 간다? 교수 : 당신을 수행 좀 더 있다고 설명? 최초의 병합 저장소를 설명 할 수 있습니다. 어떻게 작동 일종의 병합합니까? 청중 :이 방식으로 작동합니다 그래서 절반에 모든 것을 나누어 다음 그것을 함께 넣어 순서에 재 할당, 언제나처럼 당신은 세트를 병합합니다. 교수 : 꽤 많이. 그래서 나는이를 그릴 수 있지만, 그것은 것 그것을 밖으로 끌어 내게 5 분 소요. 섹션 슬라이드에 다시 봐 여기서 우리가 병합 정렬 덮여. 정확하게. 그래서 방법은 정렬 작업을 병합 그것은 반 사물을 나눈다 그리고, 그것은 단지 본다 그들 모두의 첫 번째 값 및 해당 정렬됩니다. 지속적으로 새로운 배열을 생성하고 순서대로 일을 더 둔다. 그리고 그건 정말, 정말 동안 빨리 당신이 알고 그게 ... 때문에, 이진 검색은 N의 N 로그입니다. 당신은 너무 많은 만드는 당신이있어 다른 배열 메모리의 엄청난 금액을 사용. 그래서 더 빨리, 무역 꺼져있는 동안 당신이 더 많은 메모리를 사용하고 있는지 여기에있다. 그리고, 힌트, 정렬 및 검색 더 올해 많이 포함되었다 그들은 작년에왔다보다. 너희들이를 볼 수 따라서 퀴즈에 반영. 나는 확실히가는 시간을 보낼 것입니다 이상의 어떤 다른 종류의 모든 있다, 어떻게 이진 검색, 어떻게 선형 탐색 작업. 어떻게 아마도 의사에 사람들을 코드입니다. 실행 시간은 무엇입니까? 실행 시간과 같은 뭔가 아주이다 메모 시트에 아래로 복사하기 쉽고, 권리? 당신이있을 때 정말 어렵다 중간 시험 당신은 그것을 파악해야한다. 그것을 아래로 복사합니다. 난 당신이있어 당신을 보장 알 필요 것. 장단점은 무엇입니까? 최악의 경우, 최선의 시나리오 그들 모두에 대해, 매우 알게. 네? 청중 : 우리가해야합니까 병합 정렬을 코딩하는 방법을 알아? 마찬가지로, 우리가해야합니까 재귀를 기억 하는가? 교수 : 내가보기 엔 그냥 그것을 의심 그것은 매우 복잡한처럼 때문이다. 그러나 그것은 불가능하지 않을 수 있습니다 우리의 경우 의사에게 그것을 사용하도록 요청합니다. 네. 그래, 좋아, 한 번 더. 이에서 온 수 비트에 당신은 마지막 조각. 네? 모든 사람들이 듣고나요? 우선 확인, 그래서 꽤 많은 프로그램의 모든 종류 당신에게이 같은 출력을 제공하는 것입니까? 우리가 배울 물었다 기억 도구를 디버깅의 새로운 유형? 그것의 이름은 무엇입니까? Valgrind의 오른쪽 어디 프로그램이었다 당신이 수를 부를 수 당신이있어 모든 메모리를 추적 프로그램에서 사용하고 무슨 일이 있었. 그래서 당신은, 같은 뭔가를 가지고 있다면 확실히 하나의 블록에 40 바이트를 잃었다. 아마 당신은 아니에요 그것을 무료로 기억. 당신의 메모리 바이트를 사용하는 경우 때문에, 즉, 해당 메모리를 액세스 한 의미 하지만 당신은 무료로 할 수 없었다. 그래서 당신은 만들고 싶어 당신은 또한있어 있는지 그있어 free-- 사용 모두 무료로 function-- malloc에​​ 의해 재 할당 메모리. 시원한. 이 슬라이드 그래서, 나는 그것을해야합니다. 그것은을 많이 어디에나 섹션 슬라이드의 많은 강의. 당신은 정말 있는지 확인하려면 당신은이 모든 것을 알고있다. 어느 노트 시트 또는 경우 그것을 기억하려는 주시기 바랍니다. 그건 정말, 정말, 정말 중요합니다. 또한 아주 좋은 우리가 요청할 수 있습니다 질문입니다. 왜 선택 sort-- 모습에있다 선택 런타임을 모두 sort-- N 제곱된다. 에 관계없이 목록에 오는 방법 당신 왜 선택 sort--이며, 같은 나는 사람들에게 30 줄거야 두 번째 이것에 대해 생각합니다. 이 종류의 혼란 때문에. 그것은 몇 가지 개념적인 생각을 포함한다. 왜 실행 시간은 동일한 것 모두 최악과 최선의 시나리오? 네? 청중 : 때문에 선택 정렬 각 이 작은 배열의 위치 나 공간 일이든. 그래서 심지어 최선의 시나리오에서, 그것은 완벽하게 분류되어있어 경우에도, 그것은 여전히​​ 하나, 확인,처럼해야 할 것입니다. 내 첫 번째 장소에서 나는 하나를 가지고있다. 그리고 그들 모두를 통해 이동합니다. OK, 하나는 작다. 그리고는 다시 간다 그리고, 두 확인 등이다 모든 일의 가장 작은입니다. 하지만 여전히에있다 각자를 확인합니다. 교수 : 그래. 그래서 예를 들어, 그냥 가정 해 봅시다 우리는 목록, 이미 분류 한 배열 1-5. 선택의 종류가되는 방법 그것은 두 가지 검사를 통해 진행한다. 그런 다음 두 검사합니다. 그리고, 그것은 검사하고, 그것을 확인한다. 또한, 이들 모두를 검사 계속 관계없이 여부 그것은 실제로 분류입니다. 즉 단순히입니다 때문에 정렬이 작동하는 방식. 그리고이 질문의 종류처럼 우리가 물어 볼게요 개념 질문입니다. 어디 먼저, 당신에게 어떤 선택의 종류를 알고 바로, 할 수있다 질문에 대답합니다. 당신은 이해 할 수 있어야 개념적으로 무슨 일이 일어나고 있는지. 그리고 당신은 확인, 적용하고 생각할 수 그냥 최악의 시나리오를 가정 해 봅시다. 그들은 모두 내림차순입니다. 어떻게 그게 영향을 미칠까요? 무엇을 위해 상승하는 거라면? 그것은 이미 정렬 있다면? 어떻게 즉, 런타임에 영향을 미칠까요? 그리고 선택 정렬, 당신은 알 수 실제로 문제가되지 않습니다. 당신이 확인하고 있기 때문에 모든 값에 관계없이 무슨 일이 일어나고 있는지의. 그리고 좋은 일들이 기억. 어떤 종류의 다른 사람과 다를 이유 그리고 최선의 방법과 최악의 시나리오 이들 모두에 영향을 미칠 것이다. 정말 종류의 칠거야 그 퀴즈에있을 것 때문에. 네. 그래. 왼쪽 육분이있다. 나는 질문의 3 분 걸릴 수 있습니다. 또한 주변에 중단 될 수 있습니다 섹션 후 20분 같은 당신은뿐만 아니라 질문을합니다. 사람이 정말 간단한 있습니까 질문이나 개념 문제 그들은 지금에 대해 명확하지 그래? 네? 청중 : 당신은 조금 얘기 할 수 비트 연산자에 대한 비트? 교수 : 그래. 그래서 비트 연산자는 뭔가 당신 아마 당신의 시트에 넣어 할 수 있습니다. 그래서 원하지 않는 quickly-- 깊이 너무 많이 이동 자신의 리뷰에서 하버드 때문에 세션이 꽤 잘 덮여. 비트 연산자는있다 그 중 다섯, 오른쪽? , X 또는 함수 인이있다 및 인, 앰퍼샌드있다. 또는이다 파이프,. 그리고 당신은 두가 변화의 다른 유형. 나는 당신에게 두 개의 값, 경우를주는 경우에 나는 하나 하나처럼, 당신을 제공합니다. 그게 무슨으로 평가까요? 경우에 나는 당신이 진정한 사실과 진실주는? 무엇 참 또는 거짓에 대한? 그럼에도 불구하고 사실, 오른쪽? 또는 거기 때문에. 우리는 가장 가능성이 당신에게 번호를 줄 것이다. 그래서 하나에 해당, 기억 사실, 0이 거짓 같습니다. 그리고 우리는 당신이 일을 줄 수도 무슨 일이 일어나는지 우리에게 요청합니다. 하버드 제 이내에 포함 그들의 연구 세션 10 분 정말, 정말 잘. 그래서 너희들은 만들고 싶어 반드시 다시 그 볼. 청중 : pisa5인가 퀴즈에있을거야? 교수 : 아니요 심지어 지금 pisa5 보지 마십시오. 그것은 어렵다. 그냥도 pisa5보고 귀찮게하지 않습니다. 그러나, 몇 가지 힌트로 및 제안, 나는 당신이 pisa5을 시작 제안 빨리 퀴즈를 통해 때문이다. 이 가장 어려운 것입니다 주, 그러나 너희들 언덕에 전달됩니다 녹색, 강아지 롤링, 그것은 괜찮아요. 이 클래스는 상당한 도착 다섯 번째 PSET 후 쉽게. 청중 : 근무 시간 일요일 월요일인가? 교수 : 그래, 근무 시간 있도록 PSET 월요일에 일요일. 영업 시간 오늘 밤 본질적으로 단지 퀴즈를 검토 할 것이다. 사람이 와서 물어하고자하는 경우 질문 조교, 우리는 거기에있을 것이다. 나는 아마 한 번 더 질문 할게요 사람은 질문이있는 경우? 네? 청중 : 때 당신이있어 정의 노드, [들림] 다음에 다음 노드 스타를 말한다면, 컴퓨터가 자동으로 수행 당신이있어 이해 다른 포인터를 참조? 교수 : 아니요 청중 : 당신은해야 그것은 [들리지] 다시 연결? 교수 : 그래서 기본적으로 노드의 구조체는, 기억하고, 노드를 만드는 것처럼 그리고 당신은 다음라는 포인터를 가지고있다. 당신이하고있는 모든 갖는 이 구조. 당신은 할당해야 그 곳의 포인터. 그래서 컴퓨터는하지 않습니다 아직 무엇을하고 있는지 알고있다. 당신은 실제로 때를 할당해야 당신은 당신의 연결 목록을 작성하고 있습니다. 그리고 무엇 주로있어 PSET 5에있을 것입니다. 대한 그래서 걱정 없다 지금 그 권리의. 청중 : 그래서 우리가 필요하지 않습니다 다만, 링크 목록에 너무 많은 초점 일반적인 개념? 교수 : 그냥 꽤 많이 스택, 큐, 연결리스트, 트리, 해시 테이블. 단지 그들이 무엇인지 알 수. 우리는 요구하지 않을거야 당신은 특정 것도 좋아 우리가 정말하지 않았기 때문에 아직 그 중 하나를 포함 PSET. 전에 마지막 2 분 그래서 난 당신이 무료로이 퀴즈를 죽일 설정합니다. 거의 같은, 방법에 대해 생각 지금까지 너희들은이 클래스에서 왔습니다. 나는 때 주 두 기억 이 클래스, 당신의 일부 물을 쓰는 세 시간 보낸다. 그것은 당신을 데려 갈 것이다 얼마나 사람은 지금 물을 쓰기? 30 초 아마? 얼마나 많은 생각 해봐 너희들은 배웠습니다. CS는 정말, 정말 열심히 될 수 있습니다. 그 의심의 여지가있다. 그것은 아무도 그것을 연구하지 이유입니다, 어렵다. 그냥 어렵다. 그리고 그것은 완전히 괜찮아요. 그리고 나는 정말 자랑 스럽다 모든 사람이 멀리이했다. 의 Pset 쉽지 않다. 그들은 많은 시간이 걸릴. 너희들, 내가 쓰기하라고 요구하지 않을 것입니다 PSET에 15 Vigenere의 게임. 필요는 그것에 대해 흥분 없습니다. 우리가 여기에 테스트하고 모든 평가하는 것입니다 당신의 개념 지식뿐만 아니라, 코딩의 기본적인 기술의 일부로서. 시험에 설계 정말 도전합니다. 마찬가지로, 그것은 설계 에 대한 100을 얻을 수 있습니다. 또한 아마에 당신을 위해 설계 75분에 완료 할 수 없습니다. 그리고 완전히 괜찮아요. 나는 학생 자신입니다. 내가 걸을 때 나는 알고있다, 나는 그것을 싫어 퀴즈에서 똥처럼. 그건 정말 열심히했다. 아마 무슨 일이 것 happen--하고 완전히 괜찮습니다, 지금은 너희들을 말하고있다. 이 일에 수단 전혀 높지 않다. 그리고 당신의 사람들을 위해 사람 같은 받고있다, 문제 세트에 열로, 그건 당신이있어 의미하지 않는다 이 클래스의 60 %를 얻을 것. 당신은에 60 %를 얻는 경우 하지 않습니다 퀴즈, 당신이거야 의미 이 클래스에서 D를 얻을. 우리는 특히 나에 대한 참조 내 섹션에 당신의 그, 너희들이 모든 작업하는 방법을 열심히 참조하십시오. 그리고 그 추적합니다. 너희들은 잘 될 것입니다. 어떠한 제도적 메모리가 없습니다 학기의 끝에서 행복. 모든 하버드 아이들이 말 때문에 그들의 친구들, 오, 당신은 괜찮을거야. 아무도는 여기 너희들을 이야기하지 않습니다. 그래서 나는 여기 너희들에게 있습니다. 너희들은 잘 될 것입니다. 너희들 모두의 자랑입니다. 이 테스트는 힘들 것입니다. 그것을 위해 공부하고, 나중에 그냥 던져. 새로운 것을 배울 준비. 그리고 사탕을 먹는다. 우리는 사탕을 많이해야했습니다. 편안한 잠자리를 느끼실 수 있습니다. 잠을 잘하지 마십시오 때문에 그건 정말 나쁜 것. CS는 논리가 많이있다. 당신이 잠을하지 않을 경우 작동하지 않을 수 있습니다, 당신의 뇌가 작동하지 않을 수 있습니다. 그리고 난 다음 20 여기있을거야 분은 사람이 배회하고 싶어합니다. 너희들을 죽일 것입니다. 행운을 빕니다.