[음악 연주] DAVID J 마란 : 모든 권리, CS50에 다시 오신 것을 환영합니다. 이 2 주일의 시작입니다. 우리 중 하나 단어 캠퍼스에 친구 - 당신이 관심이 있다면, 아마도 하나 지금 또는 미래의 어느 기간에 심지어 한 번 더 편안하고, 교육 중학생 조금 컴퓨터 과학에 대해 뭔가, 이 URL에 머리를 않습니다. 그들은 지금 특히 필요로하는 선생님, 당신이 경우 특히 컴퓨터 과학에 일부 노출했다. 그래서 지난 시간을 기억, 우리는 도입 몇 가지 데이터 C의 유형, 당신이 얻을하기 시작했습니다 수의 이러한 지금까지 더러운 손 문제의 한을 설정합니다. 그리고 우리는 문자를했다. 그래서 다소 기술적 인 측면에서, 어떤 당신이 그것을 오늘 알고있는 문자인가? 그래서 캐릭터,하지만하자 지금은 더 정확합니다. 우리는 문자로 무엇을 의미합니까 또는 문자 개별? 숫자가 아닌 문자 - 그래서 반드시. 심지어, 심지어 숫자를 밝혀 구두점 문자이다 이 데이터로 표시 문자로 알려진 입력합니다. 그래서 반드시 알파벳 아니다. 그래? 따라서 ASCII 문자입니다. 당신이 때, 주 제로 다시 생각 그래서 만약 우리는 자원 봉사자의 우리의 바이트를했다 와서 두 손을 잡고 또는 모든, 그들은 비트를 나타낸다. 그러나 총체적으로 여덟 그룹으로, 그들은 바이트를 나타낸다. 그리고 우리는 ASCII의 개념을 도입 그 강의에서, 이는 단순히 숫자와 문자 사이의 매핑. 그리고 ASCII 용도로 그 사람 묵시적, 8 비트 문자를 나타냅니다. 그래서 따라, 만약 8 비트 수 각각 두 값 중 하나를 수행 - 제로 또는 하나 - 두 가지 가능성이 있다고 의미 이 사람 - 제로 또는 하나 - 이이 사람이 두 사람이 하나 둘. 그래서 두 번 총 두 번 두 번 두 번 두 - 총하므로 두 여덟 번째. 그래서 문자의 총 수있다 가능한 256 당신이 할 수있는 8 비트와 함께 나타냅니다. 자, 당신의 사람들은 아시아 말하는 사람 언어 이상이 있다는 것을 알 수 있습니다 단순한 세계의 문자 A와 B 등의 고사와 DS에. 그리고 실제로, ASCII가 충분하지 않습니다 세계의 많은 언어. 그 다른 시간에하지만 더. 지금은 C에서 당신이 원하는 경우에 알고 편지의 조각을 대표하는 구두점, 또는 뭔가 문자 자연에서, 우리는 문자를 사용합니다. 그리고 그것은 하나의 바이트 또는 8 비트입니다. 방법 INT 어떻습니까? 음, INT는 정수입니다. 얼마나 많은 비트, 당신이 기억하는 경우, 일반적으로 정수인가? 누구나 리콜? 그래서 일반적으로 32이다. 실제로 컴퓨터에 따라 달라집니다 당신이 사용중인. 그러나 기기에서, 그리고 주차장에 컴퓨터는 32 비트 또는 네의 바이트 - 여덟 4 배. 그리고 정수는 그대로 저장하는 데 사용됩니다 하나 음수, 긍정적 인, 또는 0. 그리고 당신은 32 비트를 가지고있는 경우에만 양수에 대한 치료, 수 누구 야구장 얼마나 많은 수 컴퓨터에서 나타낼 수있는 정수 업에 제로? 따라서, 32 개의 것 어떤 약 억 개의이다. 두 이러한 힘이 될 것되도록 컴퓨터 과학에서 반복되는 테마. 우리가 볼 수 있듯이, 그들은 매우 편리이야 그것은 확실히의 경우에도 작동합니다 하나의 머리에 수학을 쉽게. 그래서 우리는 약 억 개의 말할 수 있습니다. 지금, 오래 오래 - 당신은 추측의 종류의 수 있습니다. 그것은 INT 이상입니다. 얼마나 많은 비트? 64 비트 또는 8 바이트 그래서. 이것은 단지 당신도 나타낼 수 있다는 것을 의미합니다 큰 수, 더 큰 양수 또는 더 큰 음수. 그리고 방법에 대해 떠? 즉, 부동 소수점의 32 비트의 값입니다. 이것은 뭔가, 그냥 실수입니다 소수점. 하지만 대신 더 많은 장소를 필요로하는 경우 소수점 또는 당신이 원하는 일부와 함께 더 큰 숫자를 나타냅니다 그 이후 분수, 당신은을 사용할 수 있습니다 이중, 이는 64 비트입니다. 하지만 흥미가있다 여기 테이크 아웃. 정수는 32 비트에 의해 제한되는 경우에 긴 시간 걷고 64에 의해 제한됩니다 비트, 그런 종류의 문제는 남죠 당신은 무엇을 실제로 계산하려면 INT에 대한 40 억 이상? 글쎄, 당신은 오래 오래 사용합니다. 하지만 높은 계산 무엇을하려는 경우 64 두 이상, 포기하거나 걸릴? 지금, 그 엄청난 숫자입니다. 결국, 당신은 실제로 수도 , 값의 이러한 종류의 신경 당신은 데이터베이스를 사용하는 경우 특히 그리고 많이하고 많이 수집하기 시작 데이터의 많은 독특한 지정 해당 데이터의 각 부분까지의 숫자. 의 우리 종류의 문제가있다. 유사하게, 부동 소수점 값 - 수레 또는 복식 - 당신은 단지 한정된 수의 가지고있는 경우 비트 얼마나 많은 총 숫자는 수 아마도 표현? 때 음, 덜 분명 소수점을 포함하고 있습니다. 그러나 그것은 확실히 유한이다. 당신은 비트의 한정된 수가있는 경우 인간의 유한 수, 유한 전구의 수는 확실히 할 수 있습니다 전용의 유한 수를 나타냅니다 부동 소수점 값. 그러나 얼마나 많은 실수 자신이 세계에서입니까? 무한이있다. 그래서 문제가 일종의 때문에 우리 무한한 금액이 없습니다 메모리 또는 우리의 컴퓨터의 내부 RAM. 그래서 몇 가지 어려운 일들이 발생할 수 있습니다. 그러니 가서 봅시다 여기를 표현한다. 내가 가서 gedit를 열어 보자. 내가 가서 파일을 저장하려고 해요 "floats0.c"다만 수라고 이다 예와 일치 당신이 좋아 한 경우에 온라인으로. 그리고 앞서 갈 건데 다음과 같이 정의 - 나는 중간, 가서 말할거야 주요 무효, 우리는 종종처럼. 그리고이 프로그램에, 내가 갈거야 자신에게 떠 선언, 32 비트 때문에 변수 임의로 F했다. 그리고 나는 그것을에 저장거야 나는 십분 때문에 0.1 모르겠어요. 그래서 내가 표현하려고 해요 그 하나 10로 나눈하는 완벽하다 C. 정당한 그리고 두 번째 줄에, 나는 단순히 그 값을 출력하고 싶습니다. 그래서 우리가 사용할 수있는 기억 printf를 알고. 우리는 int i에 %를 사용하지 않습니다. 우리는 플로트를 위해 % f를 사용하고 싶습니다. 그리고 나서, 백 슬래시 N을 할거야 닫기 따옴표, 쉼표, F, 세미콜론. 그래서 여기 내 프로그램이다. 하나의 버그가 이미 있습니다. 수행이 클릭 누구를위한 사람 이미 적어도 지적 할 버그 하나 내가 만든거야? 그래? 그래. 나는에 "# 포함"잊고 내가하려고하면 그 중 최고, 그들은 증상 이 컴파일이 될 것을 컴파일러는 나에게 호통 것입니다 정의되지 않은 기호 또는 말 그 효과가 뭔가. 무언가를 이해하지 않습니다 printf를 좋아한다. 그래서 나는 # 포함 "할거야 "파일을 저장합니다. 지금은 더 나은 모양이다. 그러나 나는 또한 지적거야 중 하나의 새로운 세부 오늘. 장소를 지정하는 것 외에도 % f를 % I % s이 같은 홀더, 당신은 할 수 있습니다 때로는 행동에 영향을 그 자리의. 예를 들어, 부동의 경우 포인트 값, I만을 원하신다면 후 소수 자릿수를 표시합니다 기간, 사실은 0.1F 할 수 있습니다. 그래서 다른 말로하면, 내가 F를 분리하고 단지 0.1와 백분율 기호, printf를 말하고, 당신은 전체가있을 수 있습니다 소수점 이후 숫자의 무리 나를 가리 킵니다. 하지만 그 중 하나를보고 싶어요. 그래서 지금 가서 저장하겠습니다 이 프로그램은 내 터미널로 이동 창, 내가 먼저 갈거야 및 유형을 입력, 플로트 0을합니다. 그 약간 이상한 라인을 볼 수 우리는 같은 더 이해하기 시작합니다 이번 주 옆에 떨어져 애타게. 지금 앞서 갈거야 그리고 플로트 제로를 실행합니다. 그리고 빌어 먹을. 그래서 또 다른 버그가있다 여기에 몇 가지 이유. 그 십분의 확신, 또는 10으로 나눈 하나 0.0하지 않습니다. 어쩌면 난 그냥 찾고 있어요 충분한 숫자에서. 왜 저는 두 .2 두 볼 말을하지 않습니다 소수점 대신 중 하나입니다. 내 터미널 창으로 돌아 가자 여기에 몇 번을 누르 내 기록을 참조하십시오. 다시 제로 부동해야합니까, 그리고 위로 다시. 지금 입력합니다. 지금은이 잘못된 것입니다 확신 해요. 그리고 셋, 넷을 할 수 있고, 난 아마 제로를보고 유지하는 것. 그래서 버그는 어디? 10으로 나눈 하나는 0.1이어야한다. 누군가가 무엇 자상을 할 근본적인 문제는? 그래? 그들은 모두 정수입니다. 그래서 뭐? 그래서의 10으로 나눈 하나와 나는 산수 무엇. 그리고 0.1을 얻는다. 그래. 그리고 그것은 참으로 그 문제입니다. 당신은 컴퓨터의 정수를 취할 때 그리고 당신은 다른 정수로 나누면 기본적으로 컴퓨터가가는 정수를 원하는 가정합니다. 하지만 문제는 물론, 0.1 정수입니다. 그것은 실수입니다. 그리고 컴퓨터로 무엇을 이렇게한다 기본값은 그냥 멀리 throw되는 경우 소수점 다. 그것은 그 자체를 원형 또는 최대되지 않습니다. 그것은 단지 모든 것을 멀리 던졌습니다 소수점. 그리고 지금 말이. 지금 우리는 분명히이기 때문에 제로로 떠났다. 그러나 분을 기다립니다. 내가 INT 제로 표시되지 않습니다. 실제로 0.00를보고 있어요. 그렇다면 지금이 조정합니까? 10으로 나눈 하나는 0입니다,하지만 난 경우 0.00를보고, 어디서 받고있다 실수로 변환? 그래. 정확히. 그래서 여기까지 라인 다섯, 나는 사실에 0.1, 그 어떤 것을 저장 내부 부동의 0으로 절단, 그에게 효과적으로 상당의 INT로하지 저장하지만, 실제로, float로서. 또한, 그 다음에 printf를 사용하고 있습니다 명시 적으로 두 가지에 해당 번호를 인쇄 소수점 비록이 실제로되지 않을 수 있습니다. 짜증 그래서 이런 종류의, 오른쪽? 분명히 당신은 수학을 할 수 없습니다 최소한이 수준에서 컴퓨터 정밀. 그러나 확실하게 해결책이있다. 우리는 어쩌면 수 간단한 수정은 무엇입니까 에 그냥 직관적으로 여기에서도 수행 이 문제를 해결? 그래? 에 정수를 돌려 - 그래. 나는 무엇을 아주 확실하지 않다하더라도 경우 정말 여기에 가고 그 근본적으로이 모두를 할 수있다 정수되고, 음, 왜하지 10.0 본을 만드는 것을 만들 1.0 파일을 다시 저장. 내게로 내려 가자 바닥 컴파일합니다. 내가 지금 다시 실행하자. 그리고 거기 - 지금, 나는 십분 있어요 0.10로 표현. 좋아. 그래서 나쁜 아니다. 나 하나의 다른 방법을 지적하자 우리는이 문제를 해결할 수 있었다. 내가 실제로 시간을 롤백하자 우리는 하나이 있었을 때에 열 번째 순간 전. 그리고 내가 가서이 파일을 다시 저장하자 단지에 다른 파일 이름으로 작은 체크 포인트가있다. 그래서 버전이었다. 그리고 지금 저를 진행시켜 하나 이상의 버전을 수행하십시오. 우리는이 버전을 호출합니다 2 0은 인덱스. 그리고 내가 대신 할거야 이 - 당신이 뭘 알아? 점 제로를 추가하면이 경우에 작동합니다. 그러나 하나의 변수가 있었다 가정합니다. 가정 10 변수 하였다. 즉, 내가 할 수없는 가정 말 그대로 하드 코드 .0 이 연산 식의. 글쎄, 나는 실제로 뭔가를 할 수 괄호로 주조했다. 나는 float로 그 정수를 10 캐스팅 할 수 있습니다 그리고 난에 그 정수를 변환 할 수 있습니다 플로트,뿐만 아니라. 그런 다음 할 것 수학 효과적으로 10.0로 나눈 1.0는, 가는 결과 이전과 F한다. 나는이 같은 수레을 다시 컴파일 그렇다면 2, 지금 2 수레, 같은을 뿐만 아니라, 대답합니다. 그래서 이것은 매우 인위적인 예입니다 이 문제를 해결하려면 캐스팅을 도입하여. 그러나 일반적으로 캐스팅 될 것 특히위한 강력한 것, 문제는 때, 일주일의 시간에 두 설정 당신은 하나의 데이터 형식을 변환 할 또 그 하루의 끝에 같은 방식으로 표현됩니다. 일, 하나 하나의 끝 우리가 지금까지 이야기 한 것입니다 후드 아래에 바로 정수. 아니면 너무 낮은 수준의 경우 당신은, 그들은 단지 숫자입니다 후드 아래에. 심지어 문자가 다시 호출 주 0부터 숫자는 후드 아래에. 말되는, 우리 사이의 변환을 할 수 있습니다 숫자의 다양한 유형의 경우 그들은 단지 비트입니다. 우리는 숫자 사이의 변환을 할 수 있습니다 와 문자 그들은 단지 있다면 비트, 그 반대의 경우도 마찬가지입니다. 이 방법으로 주조하는 기계입니다 프로그래밍이 강제를 할 수 있습니다 다른 하나의 데이터 형식을 변경합니다. 불행하게도,이되지 않습니다로 내가 좋아하는 수도로 간단. 나는 수레에 다시 갈거야 1, 이는 더 간단했다 와 간단 하나 0.0 각에 추가됩니다. 그리고 그냥 빨리 원기를 회복시키는 등, 내가 가서 다시 컴파일하자 이것은 수레 2 - 2 - 죄송합니다,이 수레 1 - 1입니다. 그리고 지금의 수레 1을 실행하자. 그리고 하단에 통지 난 정말 0.1을 얻을. 그럼, 문제는 해결했습니다. 하지만 아직 없음. 지금, 약간의 호기심받을거야 그리고 내가 다시 갈거야 printf의 문 말, 당신은 무엇을 알고 있습니까? 그이를 확인하고 싶습니다 십분 정말이다. 그리고이보고 싶은거야 로, 다섯 개의 소수 자릿수를 말한다. 그것은 문제가되지 않습니다. 나는 다섯 개의 변경 내가 만들기로 컴파일합니다. 나는 1을 떠 다시 실행하십시오. 꽤 좋은 찾고 있습니다. 내 전성 검사가 끝날 수도 있겠지만 좀 더 많은 모험을 얻고있다. 나는 0.10-0.5을 변경하는거야. 나는 후 10 자리를보고 싶어 소수점 자리. 내가 가서 다시 컴파일 할거야 이 다시 실행 1 수레. 후회의 I 종류이 테스트 한 내 수학 그렇지 않다 더 때문에 더 이상 수정, 그것은 보인다. 하지만 어쩌면, 잠깐만 그건 그냥 우연이다. 아마 컴퓨터 역할 조금 이상한. 내가 가서 20 소수점하자 내가 알고있는 나 자신을 안심 수학을 수행하는 방법에 대해 설명합니다. 내가 프로그래밍하는 방법을 알고있다. 수레 1, 컴파일을하고, 젠장. 정말 즉, 정말 점점 멀리 마크에서. 그래서 여기거야? 직관적으로, 우리의 가정을 기반으로 데이터 유형의 크기에 대한 이전, 여기에 무슨 일해야합니다 후드 아래? 그래? 정확히. 당신이 더 정밀도를 원하는 경우 그 정밀도가 많아서이다 - 소수점 20 숫자. 당신은 가능성을 나타낼 수 없습니다 당신이 없으면 임의의 숫자 비트의 임의의 숫자. 그러나 우리는하지 않습니다. 플로트, 우리는 32 비트가 있습니다. 32 비트는로 치환되는 할 수 있도록하는 경우 방법 - 단지 우리 인간처럼의 무대 손을 위로 또는 아래로 - 유한 한 수의 방법, 유한 수는있다 실제 숫자는 표현할 수 이러한 비트. 그리고 컴퓨터의 최후 에해야 할 것입니다 모서리를 절단 시작합니다. 컴퓨터는 이러한 세부 정보를 숨길 수 있습니다 약간의 시간에 대한 우리의. 그러나 우리는 숫자에 파고 시작하면 그리고 멀리 그리고 멀리에서 찾고 전체 숫자의 번호를 후행, 그리고 우리는 그것이 있다고보고 시작 실제로 근사치 십분의 아이디어. 그리고 그것은 밝혀, 비극적있다 숫자의 무한한 수 우리는에 정확하게 나타낼 수 없습니다 적어도 유한과 컴퓨터 비트 수, 유한 RAM의 양입니다. 지금 불행히도,이 때로는 실제 결과가 있습니다. 사람들은 확실히이 감사하지 않은 경우 사실 부여 또는 정렬의 수행 자신의 컴퓨터가 그냥 할 것이다 무엇 그들이 수행하고 안 할 말 이러한 기본을 이해 표현 세부 사항 - 솔직히, 어떤 언어에있는 C는 달리, 사용자에게 표시 - 나쁜 일이 발생할 수 있습니다. 그리고 나는 우리가 뭘 해야할지 생각 단계를 다시 수행합니다. 그리고 이것은 약 8 분 동영상. 그것은 몇 년 전 방영하고 있습니다 갈 수 실제로 무엇에 대한 통찰력 문제는 이러한 과소 평가할 때 아주 모든도에있는 세부 사항의 종류 현실 세계. 등 우리가 할 수 희미한 경우 몇 분 동안. 스피커 1 : 우리는 지금 기술로 복귀 현대 놀라운 일에 재해. 컴퓨터 - 우리는을 받​​아 왔어요 자주 좌절 문제 그들과 함께 그 이동합니다. 버그, 바이러스, 소프트웨어 고장 을 지불 할 작은 가격입니다 편리. 그러나 첨단 기술과 높은 속도 군용 및 스페이스 프로그램 응용 프로그램, 작은 문제 재해로 확대 할 수 있습니다. 1996년 6월 4일에, 과학자들은 준비를 무인 아리안 5 로켓을 시작합니다. 그것은 과학 위성을 운반했다 방법을 정확하게 설정할 수 있도록 설계 지구 자기장의 상호 작용 태양 바람과 함께. 로켓은 유럽을 위해 만들어진 우주국과에서 떠낸 해안 시설 프랑스어 기아나. JACK GANSSLE : 약 37 초에 비행, 그들은 먼저 발견 뭔가 잘못 가고 있었다. 노즐의 선회했다 방법은 정말 안됩니다. 비행에 40초 정도, 분명히 자동차 문제에 있었다. 그들은 한 때 그건 그것을 파괴하는 결정. 와 범위 안전 책임자, 엄청난 용기가, 버튼을 누르면 그것은 수 있기 전에 로켓을 날려 공공 안전에 위험이된다. 스피커 : 1이 처녀 항해했다 아리안 5, 그것의 파괴 때문에 임베디드 결함으로 일어났다 로켓의 소프트웨어합니다. JACK GANSSLE : 아리안의 문제 수 있다는 것을습니다 이 필요한 64 비트 표현. 그리고 그들은 변환 할 싶어 16 비트 숫자. 그들은 수는 없었던 것으로 간주 매우 큰 될 것을 대부분의 64 비트의 그 자리 수는 제로이었다. 그들은 잘못되었습니다. 스피커 1 : 하나의 소프트웨어의 무능력 종류의를 수락 프로그램 다른에 의해 생성 된 숫자였다 실패의 루트에. 소프트웨어 개발은​​ 매우되었다 새로운 기술의 비용이 많이 드는 부분입니다. 아리안 4 로켓은 매우 있었다 소프트웨어를 성공적으로, 너무 많은 또한이었습니다 위해 만든 아리안 5에 사용됩니다. 필립 코일 : 기본 문제가 발생했습니다 아리안 5, 빨리했다 빠른 가속. 그리고 소프트웨어는 않았다 그를 차지했다. 스피커 : 1 로켓의 파괴 , 거대한 금융 재앙이었다 분 소프트웨어 오류 때문에 모든. 그러나 처음 데이터 아니었다 변환 문제는 현대 괴롭혀했다 로켓 기술입니다. JACK GANSSLE : 1991 년, 시작과 첫 번째 걸프 전쟁, 애국의 미사일은 비슷한 종류의 경험 숫자 변환 문제. 그 결과로, 28 미국의 군인이었다 사망하고 약 100 기타 부상 시했는데 애국자, 수신 스커드에 대하여 보호하기 위하여, 미사일을 발사하지 못했습니다. 스피커 1 : 이라크는 쿠웨이트를 침공 때 미국은 사막의 폭풍 시작 초기 1991 패트리어트 미사일 배터리 사우디 아라비아를 보호하기 위해 배포 된 이라크 스커드에서 이스라엘 미사일 공격. 패트리어트는 미국의 중간 범위 에 의해 제조 지대공 시스템 레이 시온 회사입니다. THEODORE POSTOL : 애국자의 크기 인터셉터 자체가 약이다 20 피트. 그리고 그것은 대략 2000의 파운드의 무게. 그리고 그것은 정도의 탄두를 운반 - 나는 대략 1백50파운드 생각합니다. 그리고 탄두 자체는 이 고성능 폭약 주위 조각. 탄두의 케이싱 설계 사슴 사냥 용 총알처럼 행동합니다. 스피커 1 : 미사일 네 수행됩니다 컨테이너 당과 수송된다 세미 트레일러 있습니다. 필립 코일 : 패트리어트 미사일 방어 시스템에서 돌아 간다 적어도 지금 이십년. 그것은 원래로 설계되었습니다 에 방공 미사일 적의 비행기를 격추. 첫 번째 걸프 전쟁 때, 그 전쟁 함께 온 군대가 사용하고 싶어 스커드 미사일이 아니라 비행기를 격추한다. 이라크 공군이 아니었다 문제가 너무 많은. 그러나 육군은 스커드에 대해 걱정했다. 그래서 그들은 업그레이드하려 애국자. 스피커 1 : 적의 미사일을 가로 채기 마하 5시에 여행하는 것은이었다 충분히 도전 할 것. 그러나 패트리어트으로 돌진 할 때 서비스,​​ 육군의 인식되지 않았습니다 자신을 만들어 이라크 수정 칠 거의 불가능 스커드. THEODORE POSTOL : 무슨 일이 했다 스커드입니다 에오고 불안정했다. 그들은 흔들되었다. 그 이유는에 이라크했다 의 600km를 얻기 위해 300 킬로미터의 미사일은 갔다 전면 탄두 밖으로 무게. 그들은 탄두를 경량화했다. 그래서 지금 애국자하려고 스커드에 올 수 있습니다. 그리고 대부분의 시간, 압도적 시간의 대부분은, 그냥 것 스커드에 의해 비행. 스피커 1 : 일단 패트리어트 시스템 연산자는 애국자가 놓친 실현 목표, 그들은 애국자 폭발 가능한 한 피하기 위해 탄두 이 허용 된 경우 사상자 땅에 떨어지지합니다. THEODORE POSTOL : 무엇을 가장했다 사람들은 하늘에서 큰 불 덩어리로 보았다 및 차단 오해 스커드 탄두의. 스피커 1 : 밤 하늘에 있지만 애국자가 성공적 것으로 나타났다 거기 다란에서 스커드 미사일을 파괴 의에 대한 실수가 될 수 없었다 성능을 제공합니다. , 애국의 레이더 시스템이 손실 수신 스커드의 추적 결코 소프트웨어 결함으로 인해 시작했다. 먼저 발견 한 이스라엘이었다 이 시스템 이상 , 큰 시간 차이에 있었다 시계로 인해되었다 시스템의 컴퓨터에 내장. JACK GANSSLE : 약 2 주 전에 다란, 이스라엘의 비극 국방부에보고 시스템 시간을 잃고되었다. 실행중인 약 8 시간 후, 그들은 시스템이 나타났습니다 눈에 띄게 덜 정확 해지고. 국방부에 의해 응답 애국 건전지를 모두 이야기 시스템을 남기지하기 오랜 시간에. 그들은 오랜 시간이 있었는지 말하지 마십시오. 여덟 시간? 10시간? 1천시간? 아무도 알지 못했다. 스피커 1 : 애국 배터리가 주둔 다란의 병영에서 그 결함 내부 시계가 있었다 의 밤에 100 시간 이상에 2 월 월 25 일. JACK GANSSLE : 그것은 시간을 추적 두 번째의 10 분의 1에 대한 정확성. 이제, 두 번째의 10 분의 1이다 그것은 수 없기 때문에 흥미 번호 이진수로 정확하게 표현하는 수단 그것은 정확하게 표현 할 수 없습니다 현대의 디지털 컴퓨터. 믿기​​ 어렵지만, 예를 들어이 기능을 사용. 의이 수를 한 세번째 보자. 삼분의이 표현 할 수 없습니다 정확히 진수있다. 한 세 번째는 0.333 것입니다 무한대합니다. 로 그 작업을 수행하는 방법은 없습니다 소수의 절대 정확도. 그게 바로 문제의 동일한 종류의 그 애국자에 일어났다. 더 이상 시스템이 실행 최악의 타임 오류가되었다. 스피커 1 : 100 시간 작동 후, 시간 오류는 있었다 두 번째 중 하나에 대한 세번째. 그러나 측면에서 미사일을 대상으로 마하 5시에 여행, 그것은 결과 600 미터의 추적 오류가 발생했습니다. 그것은에 대한 치명적인 오류가 될 것이다 다란의 군인. THEODORE POSTOL : 무슨 일이있다 스커드 발사 초기에 발견되었습니다 경고 위성. 그리고 그들은 스커드가 온다는 것을 알고 자신의 일반적인 방향으로. 그것이 어디서 비롯된 그들은 몰랐다. 스피커 1 : 그것은 최대 레이더 지금이었다 패트리어트 시스템의 구성 요소 위치를 유지하기 위해 다란 방어 들어오는 적의 미사일 추적 할 수 있습니다. JACK GANSSLE : 레이더 매우 영리했다. 실제로의 위치를​​ 추적 할 다음 스커드과 예측 곳에 아마 다음 시간이 될 것입니다 레이더 펄스를 보냈습니다. 즉,이 범위 문이라고 하였다. THEODORE POSTOL : 그런 애국 회 충분한 시간을 가야 통과 결정 백업 및의 다음 위치를 확인 이 발견 객체는, 그것은 돌아갑니다. 그것은 잘못된으로 돌아갔습니다 할 때 장소는 그 다음에 어떤 객체를 볼 수 없습니다. 그리고 그것은 어떤 개체가 없다고 결정 그것은 거짓 발견했고, 트랙을 삭제합니다. 스피커 1 : 수신 스커드가 사라졌다 레이더 화면에서, 그리고 초 후에는 난리 막사에. 스커드는 28 사망하고 마지막 하나 첫 번째 걸프 전쟁 냈습니다. 안타깝게도, 업데이트 된 소프트웨어가 도착 다란에서 다음 날. 소프트웨어 결함을 수정했다, 고생의 한 장을 마감 패트리어트 미사일의 역사. 애국자 실제로 약자입니다 위상 배열 추적 대상 가로. DAVID J 마란 : 좋아, 그래서 확실하게, 예를 들어 냉정한. 그리고 다행히도, 이러한 낮은 수준의 버그는 우리가 거​​ 뭔가되지 않습니다 일반적으로 확실히 감사해야 없는 우리의 일부 프로그램의 초기. 오히려, 버그의 대부분은 당신거야 만남은 자연의 논리 될 것이다 자연 구문 약자 코드는 바로 작동하지 않습니다. 그리고 당신은 꽤 빨리 알고 있습니다. 그러나 특히 우리가에 도착할 때 학기의 끝, 그것은에 갈거야 에 대한 가능성을 더하게 정말 디자인에 대해 열심히 생각 프로그램과 기본의 대표 이 역시 데이터의. 예를 들어, 우리는 MySQL을 소개합니다 이는 인기있는 데이터베이스 엔진 당신에게 웹 사이트에서 사용할 수있는 백 엔드에 데이터를 저장합니다. 그리고 당신은에 결정하기 시작해야합니다 학기말 무엇을뿐만 아니라, 사용하려면 다음 라인을 따라 데이터의 유형 그러나 정확히 얼마나 많은 비트를 사용하려면, 당신은 날짜를 저장할지 여부 날짜와 시간과 같은 시간, 또한 당신이 얼마나 큰 싶어 같은 것들 ,하실 말씀에 고유 ID, 사용자 데이터베이스있다. 사실, 당신의 일부가있는 경우에 있었다 페이스 북은 꽤 많은 시간을 차지 그리고 당신은 액세스 권한을 얻는 방법을 알고 - 사용자 ID에 이는 가끔에 표시 당신을 선택하지 않는 한 프로파일의 URL URL에 대한 별명, 또는 당신이 한 경우 사용되는 페이스 북의 그래프 API, 공개 API되는 당신 원시 데이터에 대한 페이스 북을 요청할 수 있습니다 - 당신은 당신의 숫자 ID가 무엇인지 볼 수 있습니다. 그리고 몇 년 전, 페이스 북 기본적으로 사용하는 변경했다 오래 사용하는 정수의 동등 오랜 시간 동안 사용자가 와서 때문에 그리고 가서 계정을 많이 만들 가짜 계정, 심지어 그들이 쉽게 4 뭔가를 배출 할 수 있었다 INT와 같은 억원 수있는 값. 이러한 종류의 문제에 너무 많은 길뿐만 아니라. 좋아, 주조가되도록. 그것은 부정확했다. 빠른 공지 몇 가지. 그래서 절에서는 공식적으로이오고 시작 일요일, 월요일, 화요일. 당신은 이번 주 이메일을 통해들을 수 있습니다 귀하의 섹션 지정에 관해서. 당신은 또한 여기에서 그 시점에서 거하는 방법 귀하의 섹션을 변경 한 경우 고객님의 이제 일람표 변경되었거나 사용자 안락 수준은 이제 바뀌 었습니다. 하나되어 한편 P-설정 한 해커 할 수있는 옵션이 목요일 인해 당이 마감 연장 금요일 사양 일반적인 방법으로합니다. 문제를 포함 것을 깨닫게 세트 사양에 대한 지침입니다 CS50 제품을 사용하는 방법 확인 뿐만 아니라 일부 CS50 특정 도구 당신에게 제공 할 수 있습니다 스타일 50와 같은 에 동적 피드백 코드 스타일의 질과도 당신이 제공 할 수있는, 50 체크 당신에게 같은 동적 피드백 코드의 정확성. 우리는 여전히 다림질 걸 용서 체크 50를 가진 몇 가지 단점을 보완 중. 시작 했나요 급우의 몇 네 주변에 금요일 밤에 오전 때 간 스펙 업 이후 발견했습니다 우리가 작업하는 몇 가지 버그 누구나 통해, 그리고 사과 사람 과도한 좌절감을 경험했다. 내 잘못이야. 그러나 우리는 CS50에 후속 있습니다 해결되는 경우에 대해 설명합니다. 점수 자체에 단어 때문에. 그래서 전에 일주일에 두있을거야 문제 세트에 대한 피드백을 얻기 시작 당신은 아직 가지고 있지 않기 때문에 교육 동료. 그리고 그렇다하더라도, 우리는 평가하기 시작합니다 C 문제는 우리가 전에 설정 되돌아 가서 처음 그렇게 평가 당신은 더 많은 관련 얻을 더 빠르게 반응. 그러나 교과​​ 당 일반적으로, CS50 문제 세트에 따라 평가됩니다 네 개의 축에 따라 - 범위, 정확성, 디자인 및 스타일. 범위는 일반적으로 숫자가 될 것입니다 하는 0에서 5 캡처 방법에 많은 당신은 잘릴 뻔 조각합니다. 일반적으로,이 다섯 싶어요. 당신은 적어도 모든 것을 시도했다. 그리고 그것은 곱셈의 발견 그래서의 일부를 수행 문제 세트는 최선의 전략이 아니다. 한편, 더 명백하다 정확성의 중요성 - 당신의 프로그램에 올바른 사양에 대해? 이것은 의도적으로 더 많은 가중치를 크게하여 다른 두 축 이상 세 가지 요소가 우리가 인식하기 때문에 일반적으로 당신을 보낼 거라고 많은 시간이 몇 가지 버그를 추격, 당신 다음, 코드가 작동을 받고 그것을 들여 쓰기 및 선택하는 적절한 변수 이름 및 좋아, 이는 다른 쪽 끝을에 스타일의 스펙트럼. 그 스타일이 아닌 것은 아니다 중요한, 우리는 그것을 통해 전파됩니다 강의 및 섹션 모두 시간입니다. 스타일 미학을 의미 코드의. 당신은뿐만 명명 된 변수를 선택했다 짧지 만 약간하는 설명? 당신이에서 본 것처럼 코드는 들여 쓰기 강의하고 일관된 방식으로 스타일 50가 있나요? 마지막으로 디자인 권리입니다 거기에 중간에. 디자인을 넣어 열심히 하나입니다 훨씬 더이기 때문에 손가락 주관적. 그러나 아마의 가장 중요 교육학의 관점에서 세 가지 축 시간이 지남에 따라 그 값이 될 것입니다 교육 동료의 기회 당신은 질적 인 피드백을 제공합니다. 실제로, CS50에 우리가 없더라도 끝이 공식 및 점수 오늘의 이들은 매우 신중하다 아주 작은 버킷 - 소수점 값 제로 세 사이의 제로 다섯. 우리는 매우 거친 선을 그리는하려고하지 않습니다 문제 세트 사이 사이 또는 학생들은 오히려만큼 집중하지만, 우리는 품질에, 필기법 수 의 의견 하나를 입력하거나 구두 특정 교육 위원 당신은 아주 잘 알고 있습니다. 그러나 일반적으로, 사람들은 가중치는 여러 축이됩니다. 한편,도, 그것은에두고 가치 당신이 생각하지 않도록 마음이 다섯 중 세 개는 60 %이며, 따라서 대략 실패. 세 의도적으로하기위한 것입니다 좋은 도로의 중간에 정렬. 당신의 열로 받고 있다면 학기의 시작, 그게 참 좋은 의미 시작 놓습니다. 당신은 조로, 박람회를 받고 있다면, 거기에 조금을 지불 확실히 몇 가지 작업 더 많은 관심을 활용하려면 섹션 및 근무 시간 중. 당신은 발로을 받고 있다면 그리고 마구 마구, 좋아. 하지만 정말, 우리는 궤도를 볼 수 있도록 노력하겠습니다 학생들 사이에서 - 매우 학생마다 개별적인하지만 시작 일종의 여기에 학기 세 가지 범위의 두하지만 종료 여기까지 4-5 레인지. 즉, 우리가 정말 찾고있는 무슨이다. 그리고 우리는 염두에 델타가 계속합니까 당신은 주 제로 주 사이에 전시 12 내가 성적을하고있을 때. 그것은 절대적으로 얼마나 우리에게 중요하지 않습니다 당신이 처음에 정당한 경우의 궤적은 참으로 위로 강한. 학문적 정직 - 그래서 내에 넣어 보자 단지 순간을 위해 더 심각한 음성. 그래서이 과정의 차이가 어떤 다른 사람보다는 더 많은 학생들을 보내는 광고 보드 역사, 저는 믿습니다. 우리는이에 손실 계수의 종류가 이러한 상황이 발생하는 빈도의 포인트입니다. 그리고 그 50 년 때문에 학생들이 아니에요 어떤은보다 더 정직하다 다른 급우. 그러나 우리가 아주 좋다는 것을,도 실현 이런 종류의 감지에. 그리고 그 장점입니다 컴퓨터 과학 클래스를 가지고있는 우리 우리는 모든 학생들을 비교 할 수 있습니다 문제는 모든에 대해 쌍 단위 설정 다른 올해뿐만 아니라 그러나 이전의 모든 년. 우리는 학생들과 같은 능력을 가지고 구글하고 코드를 찾으려면 클래스 github의 같은 사이트 및에 토론 포럼. CS50의 절대적 해결책이 있습니다 거기에 주위에 떠있는 P는 - 설정합니다. 하지만 당신은 그들을 찾을 수 있다면, 우리가 그들을 찾을 수 있습니다. 그리고이 모든 매우 자동화 쉽게 슬픈 우리를 찾을 수 있습니다. 하지만 난 너무 강조 할 물론 학업 정직 정책은 매우 매우를 의미 그 정신의 반대. 사실, 올해 우리는 물건을 고쳐했습니다 이 될 수있는 강의에서, 점 더 많은 세부 점 점, 강의한다. 그러나 과정에서 무엇보다 중요한 테마 정말 합리적인 것입니다. 우리는 의미가 있다는 것을 인식 교육학의 양 어느 정도 협조의 가치, 친구들과 함께, 그것에 의하여 당신 두 개 또는 세 또는 더 많은 것 화이트 보드에 서 서 이렇게하는 화이트 보드, 당신의 아이디어를 말하는 - 그림에서 의사를 서면, 마리오 경우 어떻게해야 다이어그램 당신은 그것을 먼저 작성했다 의사합니다. 어떤 욕심 알고리즘을해야한다 - 어떻게 당 행동해야 문제는 하나를 설정? 그리고 그 동작을 실현 우리는 격려는 매우이다 그 라인을 따라 많은. 그리고 강의에서, 당신은 볼 것이다 아래 글 머리 기호의 전체 무리 적절한 카테고리와 합리적인 없습니다 우리가하는 데 도움이 도움 범주 어디 주위에 당신의 마음을 바꿈 우리는 선을 그리 않습니다. 엄지 손가락의 및 일반의, 괜찮은 규칙 즉 당신이 해결하기 위해 고군분투하는 경우 일부 버그 및 당신의 친구 또는 동급생 그것은 당신 옆에 앉아 당신이 그를을 표시하는 합리적인 혹은 그녀 코드와 봐, 당신이 도움이 될 수 있습니다, 말 내가 잘못 여기에 무슨 일인지 알아낼? 우리는 일반적으로 수용하지 않는다 반대편. 그것은 당신을위한 올바른 응답하지 않습니다 친구 나 말을 여기 동급생, 오, 단지 광산과 그림에서 보면 그에서 그것을 밖으로. 그것은 일종의 불합리한 것입니다. 하지만 다른 사람, 다른 뇌를 가지고 눈의 또 다른 쌍 보면 코드에서 화면이나 모양 그리고 말, 당신은 당신이 원하는 확신 여기에 루프를 가지고? 또는 당신은 당신이 원하는 확신 여기에 그 세미콜론? 아니면 오, 오류 메시지는 것을 의미합니다. 사람들은 매우 합리적이고 있습니다 격려 행동. 내가 암시했다하는 경우 학생 때 이전에 아래로 비등 늦은 밤에 판단력을 만들기 의사 결정에 자신의 코드를 이메일로 전송 아니면 다른 누군가가 말 여기에, 그것을 보관에있어 또는 밤 늦게 봤어. 그래서 나는 격려하고 당신을 구걸 것이다 당신은 그 피할 수있을 경우 긴장의 순간, 당신은 최대 부딪 치는거야 마감에, 당신은 늦게가 없습니다 그것은 그에서 이미 금요일 날 이후 점 과정의 머리를 이메일을 보내거나 직접 자신. 들어 말하자면, 나는에있어 여기에 포인트를 깨는. 하자 대화를 그리고 그것을 알아낼. 웹에 의지하거나 다른하지 합리적인 행동은 결코 귀하의 솔루션, 너무 많은 친구들은 더 이상 여기에 없습니다 그 때문에 판단력의 캠퍼스. 그러나 그 라인 스커트하는 것은 매우 쉽습니다. 여기 응원하기 위해 약간의 사진입니다 당신이 레딧에서 해당 그래서 지금 모든 확인 될 것입니다. 빠른 요점을 되풀이 그렇다면, 우리가 출발했던 곳으로. 그래서 지난 주에 우리가 소개하는 기억 조건없는 스크래치 하지만 C이 시간입니다. 그리고 몇 가지 새로운 구문 만이 있었다 본질적으로 정말 어떤 새로운 아이디어가 없습니다. 우리는 부울 식을 가지고 우리가 할 수있는 또는 함께 수직 두 막대 또는 함께 두와 앰퍼샌드, 말의 왼쪽 두가 , 오른쪽이 충족되어야합니다 이 실행하기위한. 그 다음 우리는 우리가보고있는 스위치를했다 간단히에,하지만 난 제안은 정말 달성을위한 단지 다른 구문 당신은 목표를 같은 종류의 알고있는 경우 사전에 무엇 사례 가 될 수 있습니다. 우리는 루프를 바라 보았다. 루프는, 어쩌면 가장 일반적입니다 적어도 한 사람들 본능적 위해 일반적으로 도달합니다. 조금 이상한 보이지만, 이 많은, 많은 예제를 볼 수 있습니다 당신처럼 오래 전에 이미 지난 주에. 루프와 유사 할 수 있지만 같은 일을 얻을 수 있습니다. 하지만 당신은 점진을 수행하려는 경우 또는 업데이트 변수의 값은 그럴 필요 더 많은 수동보다 할 루프 전에 허용합니다. 그리고 DO-whil​​e 루프가있다 이는 우리가에 무언가를 수행 할 수 있습니다 한 번 이상 동안 뭔가 다른 사실이다. 그리고 이것은 특히 좋다 당신이 원하는 프로그램이나 게임에 대한 뭔가 사용자에게 메시지를 표시하는 적어도 한 번. 그리고 그 또는 그녀가 협조하지 않는 경우 당신은 그것을 수행 할 수 있습니다 또 다시. 변수 사이에, 우리는 선을했다 다음과 같은 코드의, 어떤 수 두 개의 선합니다. 당신이라는 int를 선언 할 수 있습니다 카운터 세미콜론. 아니면 그냥 선언 할 수 있습니다 말하자면, 그것은 정의합니다. 그것을 동시에 값을 제공합니다. 그리고 마지막으로, 우리는 이야기 기능에 대한. 그리고 이것은 좋은 예였습니다 그것이 설명하는 의미 두 가지 유형의 함수. 하나는하는 GetString ()이며, 또 한, 사용자로부터 문자열을 가져옵니다. 그러나하는 GetString ()는, 재미의 종류 지금까지 우리가 사용했던대로, 우리는 항상 그것을 함께 사용했기 때문에 의 왼쪽에 뭔가 등호. 즉, 해당하는 GetString ()를 말씀하는 것입니다 값을 반환합니다. 그것은 물론, 문자열을 반환합니다. 그리고 왼쪽에, 우리는거야 단순히 내부 문자열을 저장 변수 이름을 불렀다. 이에서, 의미에서, 다른 printf의 printf를, 적어도 우리에 있기 때문에 여기에 사용이 아무것도 반환하지 않습니다. 옆으로, 그것은 반환 뭔가를 않습니다. 우리는 단지 그것이 무엇인지 상관하지 않습니다. 그러나 그것은 무엇을해야합니까 부작용을했다. 그리고 각에 그 부작용은 무엇인가 경우 우리가 지금까지 본 적이? printf의 기능은 무엇입니까? 그것은 화면에 뭔가를 출력 표시 텍스트 나 숫자 또는 뭔가 화면에. 그리고 단지 부작용 간주 정말 나눠 아니니까 그것은 나에 백업합니다. 그것은 내부의 답이 아니다 블랙 박스 그럼 내가 할 수있는 에 도달하고 잡아. 그것은 단지 자신의 많은에 그것을 짓 콜턴이 마음에 드에 연결되었습니다 블랙 박스 지난 주, 그는 어떻게 든 마술 보드에 그리기되었다 나없이 실제로있었습니다. 그 부작용 될 것이다. 그러나 사실에 다시 도달해야하는 경우 여기 말, 오, 여기에 문자열입니다 사용자로부터, 그 것 반환 값합니다. 그리고 지금까지 우리는 단지 함수를 사용했습니다 다른 사람이 작성했는지 확인합니다. 그러나 우리는 실제로 이러한 작업을 수행 할 수 있습니다 스스로 물건의 종류. 그래서 나는에 갈거야 CS50 제품을 다시. 나 탭을 닫을 수 있도록하는 우리 순간 전 열고 있었다. 그리고 내가 가서 보자 새 파일을 만듭니다. 그리고 앞서 갈 건데 이 하나의 positive.c를 호출합니다. 그래서 내가 뭔가를하고 싶어 여기에 양수. 그래서 내가 가서 INT 할거야 - 죄송합니다 - # 있습니다. 의는 그 같은 확인하지 말자 이전과 실수. 주요 int (무효), 오픈 곱슬 중괄호는 중괄호를 마감했다. 지금은 다음을 수행합니다. 내가 프로그램을 작성하고자하는 사용자가 제공하는 주장 나 양의 정수입니다. 그래서 아무 GetPositiveInt 기능은 없습니다 CS50 라이브러리한다. 만 getInt는 ()가있다. 나는이 있기 때문에하지만 그건 괜찮아요 난을 부과 할 수있는 구조 해당 값에 대해 좀 더 제한. 나는 이런 식으로 뭔가를 할 수 있습니다. 그래서 INT N - 당신이 따라 입력하는 경우에, 다만 실현 내가 다시 갈 건데 순간에 몇 가지 변화 - 그래서 INT n을 getInt는 ()를 같습니다. 그리고 그 둘 것 N의 INT 내부. 그리고 나를 더 자세한 설명하자. 나는 것을 요구 나를 뭔가 말을하자 당신은 저에게 긍정적 인 정수를 제공합니다. 좋아. 그래서 명령어 단지 조금. 그리고 지금 나는 무엇을 할 수 있습니까? 글쎄, 난 이미 내 간단한에서 알 수 그냥 같은 조건이나 나뭇 가지, 스크래치에 있던, 내가 뭔가를 말할 수 N보다 작거나 같으면 좋아 제로, 나는 뭔가를 할 좋아, 그 양이 아닙니다. 그리고 내가 할 수있는 - OK,하지만 난 정말 INT를 얻으려면. 그래서 여기까지 갈 수 있고 나는 종류의 수 복사의 이것이 들여 쓰기. 그리고, 확인을 클릭합니다. N보다 작거나 그래서 경우 0이이 작업을 수행. 지금, 어떤 경우에는 사용자 협조하지 않는 이유는 무엇입니까? 그럼, 내가 갈거야 여기를 빌려. 그리고 여기에 이​​동 그리고 여기와 여기에. 그래서이 명확하지 않습니다 솔루션, 오른쪽? 시야에 끝이 없기 때문. 나는 사용자가 제공하는 요구하려는 경우 나 양의 정수, 내가 할 수 실제로 INT를 얻을. 나는 그 다음 INT를 확인할 수 있습니다. 하지만 그때 난 다시 그것을 확인하려는 다시 확인하고 다시 확인합니다. 그래서 분명히, 더 나은 무엇입니까 여기에 사용되는 구성? 좋아요, 루프 때문에 어떤 종류의. 그래서 없애려고 거의 모든이의의. 그리고이를 얻으려면 적어도 한 번 int로. 그래서 내가 할 말거야 - 내가 다시 올 것이다 다만 잠시 동안 - 지금 무엇을합니까? 내가 INT N 가져 getInt는 ()를 할거야. 확인을 클릭합니다. 그래서 꽤 좋은. 그리고 지금 얼마나 자주 수행 나는이 작업을 수행하려면? 내가 루프의 printf의 내부를 두게 그래서 나는 또 다시 요구할 수있다 필요가있을 경우. 그리고이 무엇을 원하는 조건은 어떻게하는 동안? 나는이 일을 계속 할 반면 사건은 무엇인가? 그래. N이 0보다 작거나 같습니다. 아직, 우리는 크게했습니다 이 코드를 정리. 우리는 매우 간단한 구성 빌린 것 - DO-whil​​e 루프. 난 그냥 중요한 선을 도난당한 적이 내가 복사 시작하는 코드 붙여 넣기, 이는 현명하지 않았다. 그리고 지금은 실제로 붙여 넣기거야 그것은 여기 그냥 한 번 해. 지금은에 무엇을할까요 이 프로그램의 끝? 난 그냥 뭔가 간단한 말 것 좋아 주셔서 감사합니다 - 및 내가 INT i에 %을 다하겠습니다 - 백 슬래시 N, 쉼표 다음 N, 세미콜론 연결합니다. 좋아. 그래서 지금 무슨 보자 나는이 프로그램을 실행할 때. 나는 앞서 갈 건데 긍정적 어떻게해야합니까. 젠장. 몇 가지 오류가 발생합니다. 그럼 내가가 처음에 뒤로 스크롤 할 수 있습니다. 거꾸로 그들을 통해 작동하지 않습니다. 위에서 아래에서 그들을 통해 작동 하지 않도록 그들이 폭포 만 한 가지 잘못. 암시 적으로 선언 함수의 getInt (). 그래. 그래서 충분하지 않았다. 나는 어떤 종류의 같은 실수를하지만, 조금 다른이 시간. 난 단지 stdio.h에 포함되지해야하지만 를 포함도 cs50.h, 의 소위 선언하는 INT를 얻을 제품을 가르치거나 가르친다 C 어떤 getInt는은 ()입니다. 그래서 나는 다시 저장 할 수 있습니다. 나는 다른 오류를 무시하는거야 나는 그들이다는 것을 희망 위하여려고하고 있기 때문에 어떻게 든 오류와 관련하여 난 이미 수정되었습니다. 그럼 내가 가서 다시 컴파일하자 긍정적 인 확인으로 입력합니다. 젠장. 세 가지 오류를 여전히. 내가 먼저 스크롤 할 수 있습니다. 사용하지 않는 변수 명. 우리는 전에 본 적이 없다. 이 역시 조금 이상한 것입니다. 이 컴파일러의 출력입니다. 그리고 무슨 강조 라인 이 - positive.c :9:13 - 말, 그것은 라인 아홉에 말하는 것 positive.c, 1​​3 문자에서, 13 열, 당신이 실수를했다. 특히, 그것은 말하고 나 사용하지 않는 변수 명. 그럼 보자 - 행 구. 나는 의미에서 N을 사용하고 그 나는 그것을 값을주고있다. 그러나 컴파일러가 좋아하지 않는 것은 나는 겉으로를 사용하지 해요. 하지만 난 그것을 사용하고, 분을 기다립니다. 라인 11에서, 난 여기 사용하고 있습니다. 하지만 난 더 아래로 스크롤하면 positive.c : 11시 - 이렇게 라인 11 문자 12시 컴파일러의 사용을 내게 말하고 선언되지 않은 식별자 명. 내가 가지고 그래서 선언되지 않은 수단 그것으로 지정하지 데이터 형식의 변수입니다. 그러나 분을 기다립니다. 내가 바로 그 한 줄 구인치 그래서 누군가는 정말 여기에서 혼동된다. 그것은 어느 날 나 때문에 컴파일러의 라인 9 일만에 다시, 나는 선언 해요 INT N, 나는 그것을 할당 해요 getInt는 ()의 값을 반환합니다. 그럼 난 줄이 변수 N을 사용하고 있습니다 11 값이 작 으면 확인 제로 또는 그것보다. 그러나 이것은 분명히 있습니다 나쁜 이유는 깨진? 다시 말? 아, 내가 전에 N을 선언해야 루프를 입력. 왜? 내 말은, 우리는 단지 조금 그 전에 제안 그것은 변수를 선언 괜찮아요 모두 한 줄에 다음 그들에게 어떤 값을 할당합니다. 전역 변수 -하자 다시 올 잠시 후에 그 생각에. 왜 당신은 나를두고 싶어 그 루프 셨나요? 그것은이다. 정확히. 그래서, 다소 직관적,이기는하지만, 저를 요약 할 수 있습니다. 당신은 내부에 N을 선언 할 때 거기 DO 블록 - 특히 내부 그 중괄호 - 그 변수 N은 무엇을 가지고 범위라고 - 우리의 채점 시스템에 관련 물론 -하지만의 범위가 그 중괄호로 제한됩니다. 즉, 일반적으로 당신이 선언하는 경우 일련의 내부 변수 중괄호, 그 변수는 존재한다 그 중괄호 내부. 그래서 혼자 논리에 의해, 비록 I 라인 9 일만에 N을 선언했다, 그것은 기본적으로, 범위에서 사라 말하자면, 메모리에서 사라 시간에 I 라인 11 명중했다. 라인 11, 불행히도이기 때문에, 그 중괄호 밖에. 그래서 불행히도으로이 문제를 해결할 수 없다 내가 전에했던 돌아갈. 당신은 처음에이 작업을 수행 할 수 있습니다. 하지만 당신은 이제 어떻게하지 주기적거야? 당신은 분명히 점점 없어 주기적 INT. 그래서 우리는 getInt는 ()를 떠나, 우리 수 내부의 getInt ()를 남겨 두어야한다 그것은 우리가 원하는 무엇 루프 때문에 또 다시를 사용자에게 훼방. 그러나 이동 충분하지 라인 업에, 여섯 말한다. INT N, 세미콜론. 아직 그것을 값을 제공하지 않기 때문에 당신은 아직 필요하지 않습니다. 하지만 지금 여기의 아래, 공지 사항 -이 아주 쉬운 실수가 될 것입니다. 나는 내 이전을 섀도우 싶지 않아 N의 선언. 나는 N을 사용하도록 실제로 존재합니다. 그리고 지금은 10 행에서, 내가 값을 n을 지정합니다. 하지만 선 여섯, 내가 여기서 n을 선언합니다. 그래서 내가 할 수있는 또는 내가 할 수 없습니다 지금 12 라인에서 사용할 수 있습니까? 나는 수 있기 때문에 어느 사이 곱슬 중괄호는 이제 선언 n입니다? 여기까지 라인 다섯에 하나. 여기에 14 라인에 하나. 지금은 축소 그렇다면, 이동,이 파일을 저장 로 백업하고, 긍정적하게 그것을 실행 이 시간을 컴파일. 그래서 이미 진행이다. 슬래시. . / 긍정적 입력합니다. 난 당신이 날 줄 것을 요구 양의 정수입니다. 1 음. 2 음. 3 음. 제로. 하나. 그리고 하나 감사합니다 지금 무엇을 프린트. 나, 다른 무언가를 시도하자 호기심에서. I는 입력의 정수를 들려 주겠다는거야. 하지만 내가 대신 양고기에 무엇을 입력하면? 그래서 당신은 이제 다른 메시지를 참조하십시오 - 다시 시도하십시오. 그러나 어디에도 없습니다 내 코드 나는 시도를 기록했다. 어디, 아마도이 다시 시도 에서 오는 프롬프트, 당신은 말할 것? 그래, getInt를 () 자체에서. 그래서 CS50의 직원이하는 것들 중 하나 당신을 위해, 적어도이 처음 몇에 주, 우리는 어느 정도를 작성했습니다된다 확인하려면 오류의 경우 당신이 getInt는 ()를 호출, 적어도됩니다 사용자의 int를 다시. 당신은 문자열을받지 않습니다. 당신은 숯불을받지 않습니다. 당신이 뭔가를 얻을 수 없습니다 다른 모두. 당신은 int를 얻을 것이다. 지금, 그것은 긍정적하지 않을 수 있습니다. 그것은 부정하지 않을 수 있습니다. 우리는 그 주위에 보장을하지 않습니다. 그러나 우리는, 사용자가 다시 시도 훼방합니다 다시 시도 그 때까지 다시 시도하거나 그녀가 실제로 협력한다. 마찬가지로, 나는 1.23를 할 경우, 그 INT 없습니다. 하지만 50 말에서 입력 한 경우, 그 내게 원했던 값을 제공합니다. 좋아. 그렇게 나쁘지 않다. 우리가 무슨 짓을했는지에 대한 질문? 키 테이크 아웃은, 명확하게,없는 것 우리가 본 적이 너무 많은 루프 전에 우리는 정말이 비록 그것을 사용하지만, 범위의 문제, 여기서 변수에만 사용할 수 수 있습니다 일부 지정된 범위 내에서. 좋아, 내가 제안을 해결하자 당신의 앞에서 만든 전역 변수. 옆으로, 그 다른 밝혀 이 문제를 해결하지만, 일반적으로 잘못된 솔루션 또는 잘못 설계된 솔루션에 있습니다 무엇과 같이 변수를 선언 전역 변수라고합니다. 지금 나는 나의 정의를 위반 한 종류 해요 범위가 있기 때문에 맨 전혀 중괄호가 없습니다 그리고 파일의 맨 아래. 그러나 그 의미 즉, 지금은 네 번째 줄에 있습니다 n은 전역 변수입니다. 이름에서 알 수 있듯이, 그것은의 도처 액세스 할 수 있습니다. 스크래치 실제로이 있습니다. 당신이 변수를 사용하는 경우, 당신은 기억 할 수 당신은 그것을 위해 인 경우에 선택했다 이 스프라이트 또는 모든 스프라이트합니다. 물론, 모든 스프라이트은 명확하다 글로벌 말하는 방법입니다. 그래? 아, 정말 좋은 질문입니다. 그래서 첫 번째 버전에서 그 리콜 내 코드의, 때 잘못 라인 9 일만에 선언 된 정의 N - 나는 변수로 선언 그리고 나는 그것을 사용하여 값을 준 대입 연산자 - 이 날 두 가지 오류를 주었다. 하나 N를 사용하지 않은 사실, 두, 그 라인 인 11 그것은 단지 선언되지 않았습니다. 나는하지 않았다 그래서 첫 번째 시간에 주소를 입력합니다. 그것은 엄격하게 선언하면 오류가 발생하지 않습니다 변수는 사용하지 그러나. 우리가했던 일들 그러나 한 의도적으로 CS50 기기, 교육적, 우리를 마약 적이있다 컴파일러의 기대를 만들려면 확실히 당신이 일을하고있는 것이 아니라 올바르게하지만 정말 제대로. 때문에 당신은 변수를 선언하는 경우 n과 그것을 사용하지 않거나 그것을 사용하여 결코 같은 정확하게 그 무엇 거기 뭐하는거야? 그것은 진정으로 어떤 목적을 제공하지 않습니다. 경우 그리고 그것은 시간이 지남에 따라 매우 쉽게 당신 당신의 자신의 컴퓨터를 구성하지 이 방법은, 그냥이 코드를 가지고 여기에 약간의 잔해가 남아있는. 다음 달 나중에 다시보고 당신은 같은거야, 왜이 줄은 이 코드? 그리고 더 좋은 이유가없는 경우에, 당신이나 당신의 동료에 도움이되지 않습니다 길을해야 할 다음에 넘어. 옆으로, 어디에로 그에서 오는? 잘 기억 우리가 컴파일 때마다 프로그램은이 물건의입니다 인쇄되는. 그래서 우리는이에 돌아올 것이다. 그러나 다시 만들어는 유틸리티입니다 로 컴파일하는 과정을 자동화 실제 컴파일러를 실행 연타했다. 이 물건은 결국 우리가 볼 수있다 특수와 함께 디버깅 할 수 있습니다 프로그램은 디버거를했다. 이것은 최적화로 할 수있다 코드 - 더 미래에서 해당합니다. STD = C99 - 이 단지의 1999 버전을 사용하는 것을 의미합니다 C. C는보다 더 긴 정도 됐어요 하지만 그들은 몇 가지 좋은했다, 그 변경 년전 10 플러스. 그리고 여기에 관련된 것들이다. 우리는 무엇을 말하는 것 이전에 경고했을 학생을 방지 오류 컴파일에서. 그리고 벽 수단을 위해 그것을 물건의 전체 무리하지 단지 변수와 관련. 그리고 그 때 저에게로 스크롤하자 이 행의 끝. 그리고도, 우리는 결국거야 로 돌아옵니다. 이것은 분명히의 이름입니다 내가 컴파일하고있어 파일입니다. 이 파일의 이름을 리콜 나는 이름으로 출력 해요 내 실행 가능한 프로그램. 이 - lcs50은 CS50 사용을 의미 라이브러리 및 0과 1 그 직원이 쓴 이전의 컴파일 올해 통합 내 프로그램에 그들을. 누구나-LM 뭔지 알아? 그것은 수학 라이브러리의 당신이있어 그냥 있어도 어떤 수학을하지. 그것은 그냥 자동으로 제공거야 우리에게 확인하여. 글쎄, 내가 다른 하나의 예를 들어하자 여기에 새 파일을 열어. 그리고 저 string.c 본을 저장할 수 있습니다. 그것은 밝혀 그 우리는 데이터에 대한 이야기​​로 유형 오늘 더있다 후드 아래에가는 우리는 지금까지 본 것보다. 그래서 나는 빨리 빨리 프로그램을 수행 할 수 있습니다. stdio.h에 포함. 그리고 그 내용을 저장합니다. 그리고 당신이 알고, 내가하지 보자 같은 실수를 또 다시. cs50.h. 포함 그리고 지금 나 앞서 가자 및 주요 int를 (무효) 할. 지금은 단순히 프로그램을 수행 할 이 작업을 수행하는 - 문자열을 선언 의 전화와 문자열을 사용자의. 그리고 제가 좀하자 여기에 지침 - - 이렇게 나에게 문자열을주세요 사용자가 무엇을 알고있다. 그리고 아래로 여기 아래 나는 다음과 같은 작업을 수행 할 - INT 위해 나는 제로옵니다. 다시 컴퓨터 과학자들은 일반적으로 제로 카운트 시작하지만, 우리는 수 우리가 정말 원하는 경우 하나를합니다. 이제 내가 할거야 내가 작 의의 문자열 길이보다. 그래서 나 strlen - S-T-R-L-E-N - 쉽게 때문에 다시는 간결의 그것은, 비록 입력하십시오 작은 비밀. 그것은 우리가 사용하지 않는 한 기능입니다 전에 그러나 문자 그대로는 않습니다 - 나에게 나타내는 숫자를 반환 문자열의 길이 사용자가 입력 한. 그들은 인사에 입력하면 반환 다섯 다섯이 때문에 안녕의 문자. 그런 다음, 각 반복에 이 루프, 난 플러스 플러스. 그래서 다시, 표준 경우에도 구성 당신은 확실히 너무 편안하지 않은 또는 아직 익숙. 하지만 지금은이 루프의 각 반복에, 내가 할거야 알 수 있습니다. 내가 가서 인쇄 할 하나의 문자 중 1 - 새 줄에 이렇게 % C 백 슬래시 없음. 그리고, 당신은 내가 뭘 원하는지 알아? 단어는 어떤 것을 사용자 유형 에, 안녕하세요 같이, 나는 인쇄 할 H-E-L-L-O, 라인 당 하나의 문자. 즉, 나는에 얻으려면 문자열에서 개별 문자, 지금까지 문자열은이 그것에 의하여 위로 문자의 순서이었다. 나는 S, 브래킷을 수행 할 수 있습니다 밖으로 그리고 그것은 회전 나는, 가까운 부류 닫고 괄호, 세미콜론. 그리고 하나 더 일을해야합니까. 그것은 string.h에라는 파일에의 그 strlen 함수가 선언됩니다. 나는이 기능을 사용하려면 그렇게하면 나는 컴파일러에게 필요 그것을 사용하는 기대합니다. 지금 내가 가서 만들어 보자 이 프로그램은 문자열을했다. 점, 슬래시, 문자열입니다. 나에게 문자열을주지하시기 바랍니다. 내가 가서 그것을 입력합니다. 안녕하세요, 모두 대문자로 입력합니다. 그리고 지금이 인쇄 한 발견 문자 하나 다른 후. 그래서 여기에 새로운 디테일은 그 문자열 하루의 끝에서 할 수 있습니다 개별적인 방식으로 접근 사각형을 도입하여 자 대괄호 표기법. 그리고 그건 문자열 아래에 있기 때문에 후드는 참의 순서입니다 자. 하지만 그들에 대한 깔끔한 것은이다 컴퓨터의 RAM에서 - 그것이 무엇이든 맥, PC, - 그들이있어 그대로 다시 다시 다시하는 - H-E-L-L-O - 개인, 옆에서 메모리의 바이트입니다. 당신은 여덟 번째 예에서 얻고 싶은 경우에 바이트, 이는이 루프에있을 것입니다 브래킷 제로 브라켓 하나 브래킷 두, 브라켓 세 부류 네 - 그는 0 5 때까지 인덱스입니다 - 즉, H-E-L-L-O 출력됩니다 자신의 라인. 이제 맛보기로, 당신 날 보여 드리겠습니다 물건의 종류의 당신은 결국있을거야 적어도 이해할 수 몇몇 닫기 찾고. 하나, 우리는 오늘에 무엇이 포함 예, 당신이 좋아 한 경우에, 실제로 처음 jailbreaks 중 하나 아이폰에 대한. 탈옥은 전화를 부수는 방법 그래서 당신은 실제로에 그것을 사용할 수 있습니다 다른 사업자 또는 설치 당신의 자신의 소프트웨어입니다. 그리고 당신이 완전하게 보이는 알 수 있습니다 비밀 가능성이 높습니다. 하지만, 이쪽을 봐주세요. 아이폰은 분명히 금이되었다 루프, 경우, 상태, 다른 조건, 함수의 무리 우리는 본 적이 없다. 그리고 또, 당신은 AT하지 않습니다 아마 언뜻 이 작동하는 방법을 이해합니다. 하지만 우리가 일종의 수행하는 모든 것을 우리의 현대 생활에서 당연 실제로 일부도 감소 경향 이러한 기본의 우리 봤는데 고. 내가 가서 하나를 열어 보자 다른 프로그램 holloway.c. 이 때문에도 무언가이다 당신 정말 알고하지 마십시오. 심지어 직원의 없음 또는 내가 수 아마보고하여이를 알아낼 이 사람의 코드 그것 때문에 그는 무엇에 제출되었습니다 역사적으로 난독 C로 알려진 당신은 프로그램을 작성 콘테스트 컴파일하고 실행하지만 너무 망할입니다 이상한 사람 아니 무엇을 이해할 수 없습니다 할 때까지 할 거예요 그들은 실제로 그것을 실행합니다. 당신은 이것 좀 봐 그래서 실제로 경우, 코드는 내가 스위치를 참조하십시오. 나는 주를 참조하십시오. 나는이 대괄호 의미를 참조하십시오 배열의 일종. 사람이 추측 할 않는 것을 실제로이 프로그램 나는 홀로을 실행하면됩니까? 예. 확인을 클릭합니다. 잘. 그래서 직원 만 나는 알아낼 수 없습니다 이런 것들이 무엇을 밖으로. 그리고 지금 마지막으로, 나 앞서 가자 한 다른 프로그램을 엽니 다. 이 하나 - 다시, 우리는 소스 코드를 만들거야 온라인에 사용 가능 -이 것은 단지 종류는 꽤 볼 수 있습니다. 그들이 한 모든 맞았다 스페이스 바를 꽤. 그러나 실제 코드입니다. 당신은 예쁜,있는 경우라고 생각 그래서 만약 우리 실제로, 프롬프트에서이 실행 결국 당신은 어떻게 우리가 볼 수 있습니다 이 같은 일을 할 수 있습니다. 그래서 우리는 그 주에 당신을 떠날거야 과 수요일에 당신을 참조하십시오. [음악 연주] 스피커 2 : 다음 CS50에서, TFS는 반란을 무대. SPEAKER 3 : 저기있다. 잡아! [음악 연주]