[음악 재생] 데이비드 J. 마란 : 좋습니다. 이 CS50이있다 주 (2)의 시작이다. 그리고 당신은 그 이상 기억합니다 지난 몇 주, 우리는 컴퓨터를 도입했습니다 과학, 차례로, 프로그래밍. 그리고 우리는의 방법으로 이야기를 시작 스크래치, 그 그래픽 언어 MIT의 미디어 랩에서. 그리고 가장 최근에, 지난 주, 우리했다 higher-- a를 소개합니다 낮은 레벨의 언어 공지 C, 순수하게 텍스트 뭔가있다. 그리고, 참으로, 지난 시간 우리 그 맥락에서 탐구 개념의 수입니다. 이, 리콜은 매우이었다 첫 번째 프로그램 우리는 보았다. 그리고이 프로그램을 아주 간단하게, "안녕하세요, 세상을."출력한다 그러나 너무 많이있다 보이는 마법에 가고. 이 사용법 #include가있다 이러한 꺾쇠 괄호와 함께. INT가있다. (무효)가있다. 괄호, 중괄호가있다, 세미콜론, 그리고 훨씬 더. 그리고, 리콜 우리는 스크래치를 도입 우리는 이상적으로, 과거를 볼 수 있도록 그 구문, 정말 아니에요 물건 모든 지적 흥미로운하지만 초기에 절대적으로, 조금 까다 롭습니다 당신의 마음을 주위에 포장합니다. 그리고, 실제로 가장 일반적인 한 초기에 프로그래밍 클래스의 것, 특히 적은을위한 편안 의해 좌절하는 것입니다 특정 구문에 의해 트립 오류, 논리적 오류를 언급하지 않기 위하여. 그리고 우리의 목표 중 오늘, 실제로 것 일부를 장비하는 방법에 대한 문제 해결 기술 더 문제 자체를 해결하기 위해 디버깅의 형태 일 수있다. 그리고 당신은, 너무, 기억하는거야 우리가 도입 환경 마지막으로는 CS50 IDE 불렀다. 이 웹 기반 소프트웨어 인 것을 클라우드로 프로그래밍 할 수 있습니다, 모두 유지하면서 그렇게 말을하는 방법 우리가 오늘 다시 것, 파일 등. 그리고 우리를 기억 여기에이 주제를 재 방문, 그 (것)들의 사이에서 함수, 루프, 변수 및 부울 식, 조건. 그리고 실제로 몇 스크래치의 세계에서 번역 C.의 세계 그러나 기본적인 빌딩 블록은, 그래서, 말하자면 정말 여전히 같은 지난 주에 있었다. 사실, 우리가 정말 있었던 다른 퍼즐 조각, 당신이됩니다. 그 대신 보라색의 블록을 저장, 우리 대신 인는 printf했다 C에서이 기능이 당신이 뭔가를 인쇄 할 수 있습니다 화면에 포맷. 우리는 CS50 소개 도서관, 어디를 귀하의 처분에 get_char에 지금있다, 및 GET_INT 및에서는 get_string, 그리고 몇 가지 다른 기능으로 물론, 어떤을 통해 당신은 입력을받을 수 있습니다 사용자 고유의 키보드. 그리고 우리는 또한 가지를 살펴했다 these- 부울 및 문자 등, 두 번, 플로트, INT, long_long 문자열입니다. 그리고 C. 심지어 다른 데이터 유형을 거기에 당신이 선언 즉, 변수는 어떤 값을 저장하고, 또는 당신은 기능을 구현할 때 그 어떤 값을 반환 당신은 무엇을 지정할 수 있습니다 인 값의 유형입니다. 이 문자열은 같은가요 문자의 순서? 그것은 정수처럼 수 있습니까? 그것은 부동 소수점입니다 값 등? 그래서 C에서, 스크래치는 달리, 우리는 실제로 데이터의 종류를 지정하기 시작했다 우리는 반환 또는 사용 하였다. 하지만, 물론, 우리는 만났다 컴퓨팅의 근본적인 한계. 특히, 이 언어 C, 리콜 우리는 한 번 봐 걸렸다 정수 오버 플로우, 현실 당신은 단지이있는 경우 그 메모리의 유한 한 양 또는, 특히, 제한된 개수 비트, 당신은 너무 높은 셀 수 있습니다. 그래서 우리는 여기 예를 보았다 이에 비행기에서 카운터, 실제로, 충분히 경우를 것입니다 실행 오버 플로우 및 소프트웨어 결과 실제 물리적 잠재적 인 오류가 발생했습니다. 우리는 또한 떠 보았다 포인트 부정확, 현실 만 유한 한 개수 비트, 그것은 32 또는 64인지, 당신은 너무 많은 숫자를 지정할 수 있습니다 소수점 후 어느 한 후 부정확 얻을 시작합니다. 예를 들어, 1/3 그래서 여기에 세계, 우리 인간 세계에서, 우리는 무한한 알고 소수점 -3의. 그러나 컴퓨터가 필요 없습니다 숫자의 무한한 수를 나타냅니다 만 허용하는 경우 그 일부 정보의 유한 한 양. 그래서뿐만 아니라 우리는 당신을 장비 않았다 측면에서 더 큰 힘을 가진 의 당신은 자신을 표현하는 방법 프로그래밍의 관점에서 키보드 우리는 또한 제한 내용 당신은 실제로 할 수 있습니다. 그리고 실제로, 버그와 실수는 할 수 문제의 그 종류에서 발생한다. 그리고 실제로, 항목 중 오늘 디버깅 같은 주제로 가고있다 실제로 후드 아래에보고 물건이 소개 된 방법을 지난 주에 실제로 구현 당신이 더 잘되도록 이해 양쪽의 기능 및 C.와 같은 언어의 제한 사실, 우리는 계층을 벗겨 것 데이터 구조의 단순한의 배열이라는 것을, 어떤 스크래치는 호출하는 일 "목록을." 그것은 약간의 그 상황에서 다른. 그리고 우리는 또한 중 하나를 소개합니다 우리의 도메인 관련 문제의 첫 번째 CS50에서의 세계 암호화, 스크램블링 기술 분야 또는 그렇게 정보를 암호 처리 당신은 비밀 메시지를 보낼 수 있음 비밀 메시지를 디코딩 두 사람 A와 B 사이 그래서 우리는 전환 전 그 새로운 세계에, 의 일부에 당신을 갖추기 위해 노력하자 기술이있는 당신은 제거 할 수 있습니다 적어도 일부를 감소 좌절감의 당신은 아마 발생했는지 혼자 지난 주에 걸쳐. 사실, 앞서의 일부를 such--된다 C. 그리고 확률의 첫 번째 문제입니다 당신이 나 같은 경우, 처음 당신은 프로그램을 입력하려고, 당신은 논리적으로 생각하는 경우에도 프로그램은 매우 간단하다 당신은 매우 잘 벽에 충돌하고 있습니다 컴파일러는 협조하지 않을. 확인 또는 연타는 않을 것이다 실제로 입찰을 할 수 있습니다. 그리고 그 이유가 될 수 있을까요? 음, 그럼 살펴 보자 아마도 간단한 프로그램. 내가 가서이 저장거야 의도적으로 buggy0.c라는 파일, 나는 그것을 알고 있기 때문에 사전에 결함이 될 수있다. 하지만 그 경우이 실현되지 않을 수도 있습니다 제 1, 제 2 또는 제 3 프로그램은 있다는 사실은 자신을 만들고있어. 그래서 앞서 갈거야 및 , INT 주 (무효)를 밖으로 입력합니다. 그리고 내 중괄호의 내부, 안녕하세요,을 전 세계 ( "매우 잘 알고 백 슬래시, N ") - 그리고 세미콜론. 나는 파일을 저장했습니다. 지금은 내려 갈거야 내 터미널 창에 입력을 확인합니다 buggy0 때문에, 다시, 파일명 오늘날 buggy0.c이다. 그래서 입력 buggy0을 입력합니다. 그리고, 오, 이런, 마지막에서 리콜 오류 메시지 것이 좋은 일이다. 그래서 출력이 좋은 일입니다. 그러나 여기에서 나는 분명히해야 실수의 일부 번호. 출력의 첫 번째 줄 그래서 buggy0을 입력 한 후, 리콜, 연타의 매우 자세한 출력이다. 후드 아래, CS50의 IDE가 구성되어 의 모두를 사용하는 이 컴파일러 옵션 그래서, 당신은하지 않는 것이 그들에 대해 생각합니다. 그리고 그 모든 것을 첫 번째 줄이야 연타로 시작을 의미합니다. 그러나 그 후, 문제 자신의 모습을 시작합니다. 라인 3 자에 Buggy0.c 5, 큰, 빨간색 오류가 있습니다. 그 무엇입니까? 암시 라이브러리 함수를 선언 int 형 (const를 숯불 *로는 printf, ...) [-Werror]. 나는 매우 빨리, 그것을 의미 매우 모호한 가져옵니다. 그리고 확실히, 처음 눈에, 우리는 않을 것 당신은 이해 것으로 예상 해당 메시지의 전체. 교훈 그래서 하나 오늘가는에 대한 통지하려고 할 수 있습니다 패턴 또는 이와 유사한 것들 오류가있을 수 있습니다 과거에 발생했습니다. 그래서 단지 떨어져 애타게하자 익숙 그 단어. 큰, 빨간색 오류는 분명히 무언가의 상징이 잘못되고. 암시 적 선언 라이브러리 함수의 printf. 그래서 나는 아주 이해하지 못하는 경우에도 무엇 암시 적으로 라이브러리 함수를 선언 수단, 확실히 문제 어떻게 든는 printf에 관한 것이다. 그리고 그 문제의 원인 그것을 선언과 관련이있다. 함수가 선언 처음으로 언급. 그리고 우리는 지난 주 용어를 사용 함수의 프로토 타입을 선언, 하나의 상단에 하나의 라인과의 자신의 파일이나 소위 헤더 파일입니다. 그리고 무엇에 파일은 우리가 말을했다 지난 주 printf의가 견적입니다, 인용을 끝내 선언? 어떤 파일에서 프로토 타입은? 그래서 만약 당신이 매우 먼저 I 리콜 입력 된 거의 모든 프로그램 마지막으로 .. 실수로 잠시 전 시작 myself--를 입력하면이 일 here--했다 hash-- 사용법 #include