DAVID J. Malan: Vì vậy, đây là CS50. Và đây là của riêng Colton Ogden CS50 của, cho nhiều người là âm nhạc, bạn có thể tải về tại soundcloud.com/cs50. Vì vậy, hôm nay chúng tôi tập trung tất cả các chi tiết về nghệ thuật của chương trình. Và chúng ta, nơi chúng tôi rời vào tuần trước, tập trung trên Scratch, mà là này ngôn ngữ lập trình đồ họa. Và có những điều xuống đến một mức độ thấp hơn, sử dụng một chương trình truyền thống ngôn ngữ được gọi là C. Nhưng trên đường đi, thực hiện rằng những ý tưởng cùng chúng tôi nói về thứ sáu tuần trước sẽ tái diễn không chỉ ở đây ngôn ngữ C, nhưng trong hầu hết mỗi khác mà chúng ta nhìn vào học kỳ này. Vì vậy, chúng tôi gọi điều này ở đây những gì thời gian qua? Đây là đại diện của một tuyên bố. Vì vậy, chúng tôi gọi đó là một tuyên bố. Và nó có một cái gì đó. Đây là một hướng dẫn rằng một máy tính hoặc cào có thể thực hiện. Và từ đó trở đi, chúng ta cũng bắt đầu gọi một cái gì đó như thế này một chức năng, vì những lý do chúng ta sẽ sớm thấy. Trong khi đó, chúng tôi nhìn thấy những thứ như thế này. Và đây là những thường được biết đến như những gì xây dựng? TƯỢNG: Loop. DAVID J. Malan: Vì vậy, một vòng lặp. Vì vậy, khá đơn giản. Nó nghĩa là những gì nó nói. Và trong Scratch, nếu bạn muốn nhồi nhét mảnh ghép ở đó, mảnh sẽ phát triển để phù hợp với nó. Và chúng ta sẽ thấy rằng trong C chúng ta có thể làm điều tương tự. Một loại vòng lặp, mặc dù, trong Scratch có thể là mãi mãi, hoặc có bất kỳ số các cách tiếp cận khác. Nhưng chúng ta hãy hơn nhìn chung chung, với một khuôn mặt đó là khả năng khá quen thuộc, tại vòng chung hơn. Mark Zuckerberg: Một điều mà máy tính đang thực sự tốt là lặp đi lặp lại lệnh. Là một người, bạn sẽ nhận được thực sự buồn chán nếu bạn phải làm điều tương tự rất nhiều lần liên tiếp. Tuy nhiên, một máy tính có thể làm điều tương tự hàng triệu hoặc thậm chí hàng tỉ lần, và không cảm thấy buồn chán, và có thể thực ra đó thực sự tốt. Ví dụ, nếu tôi muốn chúc tất cả mọi người trên Facebook mừng sinh nhật bằng cách gửi cho họ một email, nó có thể mất tôi nhiều hơn một thế kỷ để thực sự viết ra tất cả những email cho tất cả mọi người. Nhưng chỉ với một vài dòng mã, tôi có thể có một hệ thống gửi email đến tất cả mọi người trên Facebook có nhu cầu chúng một sinh nhật hạnh phúc. Vì vậy, đó là những gì đang có và tại sao vòng họ có giá trị và một cái gì đó mà máy tính có thể làm rất tốt. DAVID J. Malan: Vì vậy, nếu bạn đã được người nhận của một số CS50 và Không gian Dropbox của cuối năm, đó là thực sự chính xác những gì chúng tôi làm, sử dụng mã giống như vậy. Chúng tôi về cơ bản có một lớn bảng tính vào đó folks đã được nhập của họ tên và địa chỉ email. Và chúng tôi đã viết một chút nhỏ bé của mã có thể duyệt qua các địa chỉ và nhổ ra địa chỉ duy nhất tại bất cứ trường hợp nộp nhiều lần. Và sau đó, chúng tôi gửi một tự động email từ bot CS50 của, bao gồm các phiếu mua hàng. Bây giờ chúng ta cũng xem xét này xây dựng thời gian qua. Và đây là một đặc biệt ví dụ về những gì? Vì vậy, yeah, một biểu thức Boolean. Và hình dạng có nghĩa là để nắm bắt đó là tốt. Tất cả câu hỏi đó của tạo đúng hay sai trong Scratch sẽ xem xét một chút gì đó như thế này. Và chúng tôi gọi đây là một biểu thức Boolean. Đó là thực sự đúng hay sai, có hoặc không. Đó là một cách trả lời một câu hỏi. Và khi đó bạn có thể sử dụng các Boolean biểu thức bên trong cấu trúc như thế này, trong đó Tất nhiên là điều kiện hoặc các chi nhánh, ngôn ngã ba trên đường. Và họ có thể nhìn không chỉ như thế này, nhưng họ cũng có thể elses đã liên kết với chúng. Và bạn thực sự có thể có một cách ba ngã ba đường hoặc bốn cách ngã ba trên đường, chỉ đơn giản bằng làm tổ những điều này, như bạn sẽ thấy trong Scratch nếu bạn chưa có. Và như bạn có thể làm trong C là tốt. Chúng ta hãy chung chung khác nhìn vào một alumnist, là tốt, người có thể trình bày một cách tiếp cận khác nhau những điều được gọi là điều kiện. Bill Gates: người làm quyết định mỗi ngày. Ví dụ, trước khi bạn đi ra ngoài bạn loại có một tuyên bố nếu nói rằng, nếu trời mưa thì tôi cần để có được chiếc áo khoác của tôi. Và máy tính là tuyệt vời khi bạn quyết định những loại báo cáo, rằng họ đáng tin cậy có thể thực hiện những điều đó với tốc độ không thể tin được. Và do đó, một chương trình máy tính thực sự là một chút toán học và một số nếu báo cáo nơi các quyết định được thực hiện. DAVID J. Malan: Vì vậy, bạn có thể biết, đó là những người như Bill Gates, Paul Allen, và những người khác mà thực sự đã khởi đầu cái gọi là máy tính cá nhân cuộc cách mạng cách đây vài năm. Tôi nghĩ rằng, trước khi chúng ta đi sâu vào một số quản trị, chúng tôi liên quan một câu chuyện từ Albuquerque, New Mexico bảo tàng Lịch sử Tự nhiên và khoa học, nơi một số Bill Gates và những câu chuyện đầu tiên của Paul Allen được kể lại như thế nào chúng ta có bây giờ máy tính ngày nay và Mac và nhiều hơn nữa. Đối với điều này, tuy nhiên, chúng ta cần hai tình nguyện viên những người có tiếng nói tường thuật rất tốt đọc một kịch bản to. Được rồi, làm thế nào về ở phía sau đó. Nào lên. Và làm thế nào về trước đây. Thôi nào xuống. Có địa điểm của bạn ở đây. Như các bạn đưa ra, một cặp vợ chồng các thông báo hành chính. khi cắt, quá trình này lựa chọn một phần, sẽ bắt đầu này Thứ Tư đến thứ Sáu. Nhiều hơn về điều này sắp tới Thứ Tư trong bài giảng. Phần siêu, trong khi đó, là cái gì mà chúng tôi cung cấp vào tuần tới theo đó cả lớp được mời để tham gia vào quy mô khá lớn phần, một phần thoải mái hơn, một ít thoải mái. Và chúng tôi sẽ thông báo cụ thể trong đó, cũng như, cuối tuần này. Phần Trong khi đó, bản thân, sẽ bắt đầu trong tuần ba của khóa học, chỉ số không, có nghĩa là những người đang có một vài tuần ra. Vì vậy, không phải lo lắng. Bạn chưa bỏ lỡ bất cứ điều gì theo con đường này. Trong khi đó trong khi chờ đợi, nếu bạn có bất kỳ câu hỏi hành chính, gửi email cho bản thân mình và Devon và Gabe và Rob tại địa chỉ này ở đây. Cuối cùng, vấn đề đặt 0 là, tất nhiên, ra ngoài. Bạn có thể nhận thấy nó trên trang web của khóa học. Nó sẽ cung cấp cho bạn tất cả câu trả lời cho câu hỏi bạn có thể có cùng đường cho bắt đầu với bộ vấn đề. Tuy nhiên, nếu bạn thấy mình cần một bàn tay giúp đỡ, bởi tất cả các phương tiện tham gia giờ làm việc, Thứ hai, thứ ba, thứ tư, thứ năm trong tuần này vào buổi tối trong bốn nhà ăn. Xem URL có cho các nội nơi giờ làm việc được. Bây giờ Hãy cùng gặp gỡ của chúng tôi hai vị khách ở đây hôm nay. Tên của bạn là gì? JAY PAUL: Jay Paul. DAVID J. Malan: Jay Paul, rất vui được gặp bạn. Hikari: Hikari. DAVID J. Malan: Hikari? Hikari: Hikari. DAVID J. Malan: Hikari. Rất vui được gặp bạn là tốt. Jay Paul và Hikari có trong trước mặt họ các nhạc đứng hai kịch bản mà tôi in Sáng nay từ New Mexico Bảo tàng Lịch sử và Khoa học Tự nhiên. Và những gì tôi nghĩ Tôi muốn làm trên trên được đi cùng tụng của bạn của kịch bản và lịch sử này với một số hình ảnh trực quan, không có bất ngờ. Và những gì tôi đã thực hiện trước được prehighlight trên kịch bản của bạn những gì bạn nên đọc, và những gì bạn nên đọc. Và chúng ta sẽ cơ bản đoạn văn chỉ thay thế. Vì vậy, nó giống như có lẽ bạn đã thực hiện trong lớp học tiếng Anh. Đó là thực sự buộc khán giả tin vào câu chuyện của bạn ở đây. Thì chúng tôi? Vì vậy, câu chuyện ở đây là, chúng ta có một BASIC, và nó bắt đầu ở Cambridge. JAY PAUL: Đó là mùa đông, năm 1974, ở Cambridge, Massachusetts nơi mùa đông có thể lạnh. Một râu, tóc dài bỏ học giữa chừng tên Paul Allen đã được drudging trên Harvard Square, hấp thụ trong suy nghĩ của mình. Mối bận tâm chính của ông trong những ngày là làm thế nào để có được người bạn của mình, Bill Gates, bỏ học và đi vào kinh doanh với anh ta. Hikari: Hai đã đi thông qua một số dự án kinh doanh cùng nhau, bắt đầu từ Lakeside trường học ở Seattle nơi họ được trả trong thời gian máy tính miễn phí để kiểm tra một máy tính PDP-10 tại một thời điểm địa phương Công ty chia sẻ. Kế hoạch gần đây nhất đã từ bỏ trường và hình thành một công ty phần mềm. Allen đã rời Washington Đại học Quốc gia. Nhưng vào phút cuối cùng, Gates quyết định gắn bó với Harvard. JAY PAUL: Ngày hôm đó, qua Harvard Quảng trường, Allen phát hiện ra tháng giêng, 1975 vấn đề Popular Electronics với tiêu đề đất dừng lại, Thế giới đầu tiên của máy tính mini Kit để Rival mô hình thương mại. Bên dưới tiêu đề là một hình ảnh của một hộp nhỏ trang trí bằng đèn chiếu sáng và thiết bị chuyển mạch. Nó được gọi là MITS Altair 8800. Và Allen biết đây là những gì ông đã được tìm kiếm. Hikari: Days of thảo luận. Allen và Gates đã hiểu được tầm quan trọng của Altair. Họ đã nói chuyện thường về bộ vi xử lý và đang chờ đợi để xem những gì sẽ được thực hiện với họ. Bây giờ đã có một bộ máy tính mini trên trang bìa của Popular Electronics. Nó dường như không có phần mềm được nêu ra. Họ tưởng tượng một quốc gia lập trình viên giảm dần về MITS. Và do đó, họ được gọi là Ed Roberts, người đứng đầu của công ty, đòi phải có một phiên bản của Ngôn ngữ lập trình BASIC gần như đã sẵn sàng cho Altair. Họ không. Và Roberts phải biết họ không. Ông đã nhận được 10 cuộc gọi mỗi ngày từ người đã có một BASIC gần như đã sẵn sàng. Và phản ứng cổ phần của mình là: "Người đầu tiên những người cho thấy có một làm việc BASIC được hợp đồng. " JAY PAUL: Gates và Allen chưa bao giờ thấy một Altair. Họ chưa bao giờ thấy các Intel bộ vi xử lý 8080 ở trung tâm của Altair. Tuy nhiên, một vài năm trước đó Allen đã viết một chương trình trên một máy tính mà máy tính lớn mô phỏng hoạt động của Intel trước đó bộ vi xử lý. Và khoảng thời gian này họ sẽ làm điều tương tự. Hikari: Với bộ xử lý Intel 8080 của nhãn hiệu ở bên cạnh, Allen ngồi xuống một Máy tính Harvard PDP-10 và viết giả lập và phần mềm các công cụ cần thiết để làm chương trình này. Trong khi đó Gates dừng lại đi đến các lớp học và cống hiến để thiết kế BASIC, sử dụng mọi thủ đoạn ông biết để có được kích thước xuống dưới 4 kilobyte. JAY PAUL: Out ở Albuquerque, Ed Roberts nhận được điện thoại từ Gates hỏi để biết chi tiết về cách thức Altair thói quen xử lý cụ thể. Không ai hỏi rằng trước đây. Và Roberts bắt đầu được quan tâm. Hikari: Với sự phát triển các công cụ và thiết kế sẵn sàng, Gates và Allen đã viết các mã trên PDP-10, tranh thủ một sinh viên Harvard, Monte Davidoff, để viết thói quen toán. Sau một đêm chung kết lập trình, Allen đã lên máy bay để cung cấp BASIC để MITS. Ông đã trải qua máy bay đi ra đáng lo ngại. Và trở lại ở Cambridge Gates đã lo lắng. Họ đã thử nghiệm của họ và BASIC nó đã làm việc trên giả lập. Nhưng nếu giả lập đã sai? JAY PAUL: Khi máy bay gần Albuquerque, Allen nhận ra rằng họ BASIC, giờ đã được sắp chứa trên một cuộn nhỏ đấm băng giấy, sẽ là vô ích mà không có một riêng biệt chương trình, được gọi là bộ nạp, mà sẽ nói với Altair như thế nào để đọc các băng giấy phúc đưa vào máy điện tín. Ông lấy ra máy tính xách tay của mình và nhanh chóng viết vội xuống một chương trình tải bằng ngôn ngữ hội, sau đó tự dịch đó vào 1 và 0 Altair sẽ hiểu. Hikari: Allen đã mong một sạch sẽ, nhỏ, công ty công nghệ cao được điều hành bởi những người đàn ông trong bộ quần áo kinh doanh. Vì vậy, ông đã rất ngạc nhiên khi Roberts gặp ông tại sân bay trông giống như một trang trại tay. Roberts cũng đã rất ngạc nhiên. Khi ông ta đã bỏ Harvard lập trình viên tại một khách sạn đắt tiền, Allen đã phải thú nhận rằng ông không thể đủ khả năng phòng. JAY PAUL: MITS, tự nó, là nằm trong một trung tâm dải bụi. Bên trên lộn xộn bàn làm việc là một Altair tải lên với 5 KB bộ nhớ và kết nối bằng cáp đến một máy điện báo. Roberts và kỹ sư trưởng, Bill Yates, chờ đợi chờ đợi như Allen bật loader của mình chương trình vào Altair. Các điện tín bắt đầu chugging vì nó kéo băng giấy thông qua việc đọc băng. Phải mất có lẽ 15 phút để tải chương trình. Sau đó, điện tín đột ngột in một bộ nhớ nhanh chóng, sau đó một dấu nhắc đã sẵn sàng, và Allen bắt đầu gõ một vài thử nghiệm lệnh. Trước sự ngạc nhiên của mọi người, phần mềm làm việc. Đã có lỗi, tất nhiên. Nhưng điều chính là nó làm việc. Hikari: Sau đó, trên đường đến một $ 3,00 ăn trưa tại nhà hàng Pancho, một con ong bay trong cửa sổ của xe bán tải xe tải và Allen cắn vào cánh tay. Nhưng ở thời điểm đó không có gì có thể làm hỏng tâm trạng. Altair BASIC bây giờ đã có của nó, phần mềm thương mại đầu tiên cho một ngôi nhà máy tính, được thực hiện bởi Paul Allen và Bill Gates, kinh doanh như Microsoft. DAVID J. Malan: Nhiều nhờ hai độc giả của chúng tôi. [Vỗ tay] DAVID J. Malan: Bây giờ bạn có sự lựa chọn của bạn, trước khi đi, một lấp lánh hoặc ánh sáng trong dark-- oh, chờ đợi một giây, wait-- lấp lánh và phát sáng trong bóng tối con voi từ của Cheng Gong CS50 của. Hikari: Aw, cảm ơn bạn. DAVID J. Malan: Tất cả Được rồi, cảm ơn bạn rất nhiều. [Vỗ tay] DAVID J. Malan: Vì vậy, câu chuyện thực sự. Điều này là để nói rằng tất cả các máy móc và dễ dàng mà chúng tôi sử dụng chúng ngay bây giờ và mất cho các cấp, thực sự bắt đầu ở đây, chỉ cần một vài bước từ nhà hát thực tế này. Và bây giờ ngày hôm nay, nếu bạn đã không được, đây là Maxwell Dworkin, máy tính xây dựng khoa học, cũng quanh góc. Và trên tầng hai này xây dựng không treo ba trang từ mã nguồn gốc Bill Gates và Paul Allen đã viết. Trong thực tế, nếu sử dụng bạn phóng to trong bạn có thể thấy không chỉ tên của họ trong loại ban đầu, mà còn chữ ký của họ rằng họ trang trí một vài năm trở lại khi họ cuối cùng đã đến thăm. Nhưng điều đặc biệt hấp dẫn về việc này là những gì họ đặt ra để làm đã viết một chương trình mà có thể cho phép người khác để viết chương trình riêng của họ. Vào thời điểm đó tất cả những gì đã có máy tính này được thực hiện bởi MITS Altair. Và tất cả họ cần là một số cách làm cho nó dễ dàng cho người có sở thích và con người muốn chúng tôi trong căn phòng này để thực sự chương trình mà không nhất thiết phải hiểu biết Mã lắp ráp, hoặc máy mã, hoặc Thiên Chúa cấm, 0 và số 1. Chúng tôi lập trình, như những người trong căn phòng này, chúng tôi muốn có thể thể hiện mình nhiều hơn nữa như mã giả thậm chí nếu đó là một nit hơn chút cầu kỳ hơn chúng tôi nói chuyện tuần trước. Chúng tôi không muốn viết mã như thế này, mà Paul Allen và Bill Gates đã làm. Chúng tôi, thay vào đó, muốn viết mã có vẻ nhiều hơn một chút thân thiện. Bây giờ đây là một ngôn ngữ được gọi là BASIC. Và số dòng có là những gì bạn sử dụng chỉ đơn giản là đánh số các dòng mã rằng bạn đang viết. Chúng tôi thậm chí không phải làm điều đó trong những ngày này. Nhưng bạn có thể thấy ở đây cách IN "hello, thế giới" sẽ thực sự có lẽ chỉ in đó. Và vì vậy những gì Bill và Paul đã làm được trao quyền cho mọi người để viết mã như thế này thay vì of-- nếu bạn có một cái nhìn tại khoa học máy tính wall-- mã như thế này. Trong thực tế, thời gian gần đây CS50 có cơ hội ngồi xuống với Giáo sư Harry Lewis trong các bộ phận khoa học máy tính, người thực sự dạy Bill Gates cách đây vài năm, và đang đứng ở đây trước ba trang của đoạn trích. Chúng ta hãy có một cái nhìn. Harry LEWIS: Những gì bạn có ở đây là một danh sách của một tác phẩm đầu tiên của phần mềm được viết bởi Bill Gates và Paul Allen, người sáng lập của Microsoft. Vì vậy, mã này là thú vị vì hai lý do. Trước hết, nó đã trở thành Sản phẩm đầu tiên của Microsoft, đó là một thông dịch viên cho ngôn ngữ lập trình BASIC. Và thứ hai, đây là một trong những nỗ lực đầu tiên để tạo ra một thông dịch viên quá bình thường mọi người có thể sử dụng máy tính cá nhân. Vì vậy, Bill Gates là một đại học tại Đại học Harvard. Tôi bắt đầu giảng dạy tại Đại học Harvard năm 1974. Điều này đã được thực hiện vào năm 1975. Vì vậy, nó đã sớm trong sự nghiệp của mình và bắt đầu sự nghiệp của tôi. Tôi thực sự dạy Bill trong một khóa học khoảng thời gian này. Paul Allen không phải là một Harvard sinh viên, nhưng anh đã được một trường trung học bạn cùng lớp của Bill Gates. Nếu bạn đến xem vào danh sách, bạn sẽ thực sự tìm thấy một phần ba tên, Monte Davidoff, là người bạn cùng lớp của Gates đây tại Đại học Harvard. OK, vì vậy đây là một bình luận thú vị ở đây. Nó nói "Trong 4K có thể xóa căn bậc hai nhưng đối với vòng vẫn phải làm việc. " OK, vậy điều đó có nghĩa là có là hai cách để biên dịch chương trình này. Một là để chạy trên một phiên bản máy tính Altair này mà chỉ có 4K lời bộ nhớ, 4096 từ bộ nhớ. Tuy nhiên, phiên bản lớn có 8K. Và vì thế cái này nói là mà trong phiên bản 4K bạn phải xóa một số code để làm cho nó phù hợp. Và một trong những điều đó sẽ bị xóa sẽ là thói quen căn bậc hai. Nhưng dường như các cho vòng nên vẫn làm việc ngay cả khi bạn đang biên soạn lại cho chỉ là phiên bản 4K của máy tính. DAVID J. Malan: Vì vậy, một trong những chủ đề, như chúng ta sẽ thấy trong khoa học máy tính, là khái niệm về lớp và trừu tượng, và thực sự đứng trên vai folks người đã đi trước chúng ta, không không giống như một số Bill Gates và Paul Allen câu chuyện ở đây. Và điều này có nghĩa là mà ngày nay chúng ta có thể cho cấp rằng điều này là thực sự dễ dàng hơn cho chúng tôi để viết mã. Thật vậy mã, như chúng tôi đã nói hôm thứ Sáu, là kỹ thuật được gọi là mã nguồn. Và đó là tiếng Anh này giống như cú pháp đó là thích hợp hơn và tốt hơn quy định hơn một cái gì đó giống như mã giả, cho mà không có định nghĩa chính thức. Và hôm nay những gì chúng ta đang đi tập trung vào là mã nguồn trông như thế này, mà phải thừa nhận là ở cái nhìn đầu tiên trông hoàn toàn khó hiểu. Và thẳng thắn mà nói, đó là cách thẩm mỹ hơn phức tạp hơn so với các chương trình cơ bản là. Tất cả các chương trình này không có gì, thu hồi, là chúng ta đã nói gì? Nó chỉ in "hello thế giới." Và nhìn vào tất cả những thứ chúng ta cần để quấn quanh cụm từ rất đơn giản. Nhưng chẳng bao lâu tất cả những dòng này và nhiều hơn nữa sẽ làm cho cảm giác tốt hơn nhiều cho bạn. Và dòng chảy như sau. Điều chúng ta cần lúc xử lý của chúng tôi là để có mã, như mã nguồn mã mà chúng tôi chỉ thấy. Và chúng ta cần một chương trình mới để chạy nó thông qua. Chúng ta cần thuật toán có thể chuyển đổi mã nguồn, như thế này, vào mã đối tượng, 0 và số 1. Nói cách khác, những gì chúng ta sẽ tìm hiểu hôm nay là làm thế nào để làm điều này, viết mã nguồn lên hàng đầu, vượt qua nó như là đầu vào đặc biệt chương trình được biết đến như một trình biên dịch, và chúng ta sẽ sản xuất mã đối tượng. Mà chỉ là một cách ưa thích của nói rằng chúng tôi sẽ có một cái gì đó trông như thế này, vượt qua nó vào một chương trình được gọi là một trình biên dịch, sản xuất mã đối tượng trông như thế này. Vì vậy, đây là nghĩa đen các mô hình 0 và số 1 được hiểu một Máy tính Intel những ngày này, rằng nếu giải thích bởi CPU, bộ não bên trong của một máy tính, nghĩa là sẽ in ra, khá đơn giản, "hello thế giới." Bây giờ có cách nào hơn 0 và số 1 hơn bạn hy vọng có thể là cần thiết cho điều đó. Nhưng đó là bởi vì chúng tôi đang xây dựng về một việc tốt phức tạp rằng chúng ta từ nay về sau có thể đưa cho các cấp. Nói cách khác, có rất nhiều người thông minh đã cho chúng ta rất nhiều công cụ mát mẻ và phần mềm mạnh mẽ mà chúng ta bây giờ có thể làm cho các dự án của riêng của chúng tôi. Vì vậy, chúng ta hãy bắt đầu. Trong khi đó, cuối tuần trước, và Vấn đề cho Set 0 trong tuần này, bạn sẽ được chơi trong một thế giới trông như thế này. Bắt đầu từ hôm nay và vấn đề Set 1 tuần tới, các mã sẽ xem xét nhiều hơn một chút khó hiểu, nhưng chức năng là sẽ được như vậy. Vì vậy, thông báo, hàng đầu là Scratch, phía dưới là C. Thành thật mà nói Scratch rất nhiều người dùng hơn thân thiện và dễ tiếp cận. Nhưng nếu bây giờ bạn so sánh trực quan trên xuống phía dưới, có loại một 00:59 tương ứng giữa các mảnh ghép và ngôn ngữ chúng tôi về để chơi với. Đặc biệt, nói, màu xanh mảnh ghép lên hàng đầu, rõ ràng là tương đương với những gì từ khóa hoặc cụm từ đặc biệt trong ngôn ngữ này được gọi là C? TƯỢNG: printf. DAVID J. Malan: printf. Điều đó có nghĩa là định dạng in ấn. Và đó chỉ là một ưa thích cách nói printf trong C là có được một tuyên bố hoặc một chức năng mà in một cái gì đó ra màn hình. Nó làm gì in trên màn hình? Bất cứ điều gì bạn yêu cầu bên trong trong dấu ngoặc kép, bên trong dấu ngoặc đơn. Vì vậy, một lần nữa, thừa nhận, có rất nhiều thứ mà bạn phải ghi nhớ, ngoặc đơn, dấu ngoặc kép, dấu chấm phẩy, và tất cả điều này. Nhưng tất cả điều đó là loại của bên cạnh điểm. Các takeaway thú vị cho bây giờ là khối nói trong Scratch là khá nhiều tương đương với lệnh printf trong C. Trong khi đó, các mảnh ghép vàng lên hàng đầu, khi lá cờ màu xanh lá cây nhấp, có lẽ là tương đương những gì từ khóa ở đây? TƯỢNG: Main. DAVID J. Malan: Vậy chính. Có lẽ int, có thể có hiệu lực. Nhưng chính loại âm thanh như điều quan trọng, và thực sự nó là. Vì vậy, khi lá cờ màu xanh lá cây nhấp là, một lần nữa, các mảnh ghép mà đá ra một toàn bộ chương trình cào. Nhưng chúng ta sẽ bây giờ bắt đầu gọi rằng chính, chức năng này được gọi là chính. Bây giờ trong khi đó chúng tôi sẽ khái quát này như sau. Chúng ta có thể gọi nói một chức năng. Và nó có thể trông đặc biệt như thế này. Vâng, những gì về các vòng lặp? Nếu chúng ta muốn bắt đầu chuyển đổi hoặc dịch ở Scratch C, điều này ở đây dường như chỉ nói "hello world" mãi mãi. Vì vậy, nếu bạn kết hợp các kịch bản với một con mèo trong Scratch, nó chỉ là sẽ tiếp tục nói trong một số loại phim hoạt hình bong bóng, "Hello world, hello thế giới, xin chào thế giới ", quảng cáo nauseum, mãi mãi. Nếu chúng tôi muốn làm một cái gì đó tương tự trong C, nó sẽ tìm một chút khó hiểu. Nhưng chúng ta có thể đạt được cùng một kết quả, như chúng ta sẽ thấy cuối cùng tìm hiểu, với cú pháp như thế này. Tôi sẽ sử dụng printf một lần nữa, bởi vì vào cuối ngày Tôi muốn in "hello thế giới." Và tôi dường như sử dụng một từ khóa đó không phải là mãi mãi. Đó là thay vì từ thời gian. Nhưng chỉ trong ngữ nghĩa Tiếng Anh, trong khi loại cho thấy một số loại vòng lặp hoặc chu kỳ. Vì vậy, đó sẽ xảy ra là các từ khóa C sử dụng. Và trong khi sự thật, tại sao trong khi thực sự hiệu quả có nghĩa là mãi mãi? Vâng, trong khi, như chúng ta sẽ sớm đánh giá cao tất cả các chi tiết, có ngoặc này bên cạnh nó nơi bạn có thể đặt một biểu thức Boolean. Và chừng nào mà biểu thức là đúng, mã này, như ký hiệu giữa hai dấu ngoặc nhọn như chúng tôi sẽ gọi cho họ, chỉ sẽ tiếp tục chạy một lần nữa và một lần nữa. Vì vậy, sự thật là sự thật. Vì vậy, trong khi phương tiện đúng chỉ làm điều này mãi mãi. Nó gần như một ngu ngốc xây dựng để thể hiện chính mình. Nhưng không có mãi mãi từ khóa trong C. Có thời gian. Và có một rất đơn giản Biểu thức Boolean như thật. Và như vậy, chúng ta sẽ thấy, đạt được kết quả tương tự. Làm thế nào khác bạn có thể thực hiện một vòng lặp? Vâng, có lẽ bạn sẽ Scratch cứng mã một số cụ thể lặp đi lặp lại trong vòng lặp ở đây. Và đó là chính xác những gì chúng tôi có thể làm trong phiên bản này của C, nhờ đó chúng ta có một cái gọi là vòng lặp for. Và cho vòng lặp ở đây sẽ để lặp lại, hơi khó hiểu, từ giá trị 0 lên trên đến dưới 10. Bây giờ biến trong Scratch. Bạn có thể không có Nhân dịp sử dụng các. Nhưng thời điểm này, những gì nói chung, của một biến, chúng tôi đã nói tuần trước? Đó là những gì? TƯỢNG: điểm. DAVID J. Malan: Để điểm? Oh, chỉ. OK, theo dõi các điểm, Ví dụ, trong một trò chơi. Hay rộng hơn làm những gì với các biến? Các tiện ích của chúng là gì? TƯỢNG: bộ nhớ. DAVID J. Malan: Vâng, vì vậy bộ nhớ. Đó là một cái gì đó để lưu trữ. Và các loại ngớ ngẩn hình ảnh tôi sử dụng Lần cuối cùng giống như bát thủy tinh này. Và nếu chúng ta muốn lưu trữ một cái gì đó bên trong của một biến, Ví dụ ngay bây giờ giá trị là sáu bởi vì có sáu quả bóng ping pong ở đây. Nó chỉ là một số loại lưu trữ thùng chứa bên dưới mui xe được thực hiện với các bit, 0 và số 1, Tuy nhiên một máy tính sẽ xảy ra để làm điều đó. Vì vậy, trong Scratch, nếu chúng ta muốn có một biến, chúng ta có thể sử dụng một khối màu cam như thế này. Chúng tôi sẽ gọi truy cập đó trong trường hợp đặc biệt này. Tôi khởi tạo nó là 0. Và những gì sau đó tôi làm gì? Mãi mãi, nói truy cập, mà nếu bạn chơi với năm Scratch, bạn chỉ thấy cào. Con mèo hay bất cứ điều gì bạn đưa vào trang phục anh sẽ nói số trong câu hỏi. Thay đổi sắc bén của 1 là như incrementing bởi 1. Và vì vậy đây sẽ đếm từ những gì vì vậy những gì? Từ 0 đến tận vô cùng, hoặc cho đến khi nghỉ Scratch, hoặc cho đến khi bạn loại mất quan tâm đến xem cao như thế nào anh ta thực sự có thể tin tưởng. Vậy làm thế nào chúng ta có thể chuyển đổi này vào C? Nó sẽ tìm một chút khó hiểu. Nhưng một lần nữa, nếu bạn nhìn vào mỗi của những dòng cá nhân họ loại dòng sản phẩm nói chung. Vì vậy, dường như int sẽ có một số ý nghĩa đặc biệt trong C. Chúng ta sẽ thấy rằng một lần nữa. Là một dành nó có nghĩa là số nguyên. Vì vậy, nó chỉ có nghĩa là số lượng. Vì vậy, đó là loại bát thủy tinh tôi muốn, một có thể lưu trữ số, không ping pong bóng. Và tôi sẽ sử dụng dấu bằng đó để gán cho nó một giá trị 0. Vì vậy, đó là khá giống như bộ truy cập đến 0, nhưng trong C. Trong khi đó, trong khi sự thật, đó là tương đương, tất nhiên, để mãi mãi, mặc dù đó là một chút khó hiểu, và sau đó bên trong dấu ngoặc nhọn. Và bạn có thể nghĩ về những dấu ngoặc nhọn, mà bạn có thể gõ trên bàn phím, như thực sự là như độ cong trong các khối màu vàng trong vòng Scratch. Nó bao gồm nhiều dòng mã. Printf là nhận được một chút đáng sợ tại vì tôi thấy không chỉ trích trong ngoặc đơn. Nhưng những gì khác là mới cú pháp trong ví dụ này? Có một phần trăm d. Và sau đó là có dấu gạch chéo ngược n. Chúng tôi thấy rằng trước đây, thậm chí mặc dù tôi không đề cập đến nó. Sau đó, có một dấu phẩy. Và sau đó có một truy cập. Nhưng chúng ta sẽ thấy chỉ trong một thời điểm rằng đây chỉ là một cách tiêu chuẩn nói in một "Số thập phân", trích dẫn, unquote, một số số thập phân. Nhưng tôi sẽ cho biết sau những gì mà số thập phân là. Vì vậy, thực tế là có một dấu phẩy phù nói printf này, có nghĩa là đi trước và in ấn một số số thập phân. Oh, và bằng cách này, con số này bất cứ điều gì giá trị của biến này. Và như vậy để kiếm thêm này rõ ràng, chúng ta sẽ thấy một ví dụ chẳng bao lâu liên quan đến chính xác printf trong bối cảnh của chương trình thực tế C. Bây giờ chỉ cần để quấn lên một số các cấu trúc. Biểu thức Boolean, bạn có thể không có Nhân dịp sử dụng các chương trình của bạn nhưng bạn có thể rất tốt, đặc biệt là nếu điều kiện sử dụng. Và thế là hai ví dụ từ Scratch có nghĩa là nếu x nhỏ hơn y, hoặc nếu x nhỏ hơn y và y là ít hơn z, làm thế nào chúng ta có thể dịch đó? Vâng, trong C nó chỉ sẽ trông như thế này. Một chút khó hiểu, nhiều dấu ngoặc đơn, một số dấu và kỳ lạ, nhưng về cơ bản ý tưởng là đơn giản như họ trong các mảnh ghép trên thế giới. Chúng tôi chỉ đơn giản là kiểm tra nếu một cái gì đó ít hơn cái gì khác. Làm thế nào về điều kiện? Tóm lại bằng tiếng Anh, những gì thực hiện điều này đoạn mã Scratch bạn sẽ nói gì? TƯỢNG: So sánh hai con số. DAVID J. Malan: So sánh hai số, và nếu x nhỏ hơn y nó nói càng nhiều. Nếu x lớn hơn y nó nói càng nhiều, khác nếu x bằng y nó nói càng nhiều. Bây giờ, nơi đã x và y đến từ đâu? Ai mà biết được. Đoạn này Scratch đang ra khỏi bối cảnh. Nhưng những gì chúng tôi muốn làm bây giờ là dịch này chỉ là một chút thời gian để xem. Vì vậy, khi bạn cảm thấy thoải mái tuần này Vấn đề Set 0 chơi trong thế giới này bên trái, nhận ra rằng những ý tưởng không thay đổi tuần này hoặc tới hoặc xa hơn nữa. Chúng tôi chỉ đơn giản là sẽ bắt đầu viết những điều theo một cách khác với chúng tôi bàn phím thay vì chuột của chúng tôi. Vì vậy, nếu x nhỏ hơn y, và có một số dấu ngoặc đơn ở đó, sau đó có một số dấu ngoặc nhọn một lần nữa để loại đóng gói nó giống như những mảnh ghép màu vàng làm. Và tôi sẽ printf x nhỏ hơn y và vv. Những gì là tốt đẹp về C, như bạn có thể thấy ở đây, là bạn không được làm tổ này, làm tổ, làm tổ đó là cần thiết sẽ đẩy mã của bạn ở bên phải. Thay vào đó bạn có thể có tất cả mọi thứ Đội hình gọn gàng như thế này. Nhưng đó chỉ là một thẩm mỹ chi tiết chúng ta sẽ thấy một lần nữa trước khi dài. Tất cả các quyền. Vì vậy, đưa chúng ta trở lại chương trình tìm kiếm khó hiểu này. Hãy thực sự viết một số mã. Bây giờ làm thế nào để bạn đi về cách viết mã? Tất cả những năm mà bạn đã sở hữu một máy Mac hoặc máy PC, máy tính để bàn hoặc máy tính xách tay, bạn đã thực sự có khả năng để bắt đầu viết mã lập trình. Nhưng có lẽ bạn đang bị mất tích một loại đặc biệt của chương trình. Bạn chắc chắn có thể viết mã. Nhưng bạn có thể không nhất thiết, ra khỏi hộp, chuyển đổi mã nguồn vào mã đối tượng, 0 và số 1 không có gì trên máy tính của bạn? TƯỢNG: biên dịch. DAVID J. Malan: Vì vậy, một trình biên dịch, phải. Bây giờ hầu hết các bạn có thể không sở hữu một trình biên dịch, chưa bao giờ tải về một trình biên dịch. Nhưng bạn sẽ thấy bạn có thể tải nó giống như hầu hết bất kỳ phần mềm khác. Trong thế giới của Mac OS, có lẽ bạn tải về hoặc đã tải về đã một cái gì đó gọi là Xcode hay GCC hoặc kêu vang. Nếu bạn đến từ Windows trên thế giới có lẽ bạn đã tải về Visual Studio, Visual Basic, môi trường như thế. Có hàng tá các trình biên dịch những ngày mà bạn có thể sử dụng. Nhưng ngắn của nó ở đây là nó sẽ là một nỗi đau và, thẳng thắn, một công nghệ cơn ác mộng cho hàng trăm của những người khác nhau cấu hình máy tính cho tất cả cấu hình máy của họ trong cách chính xác cùng để tất cả chúng ta có thể trên cùng một trang. Vì vậy, những gì chúng ta, thay vào đó, làm trong CS50 được chúng tôi cung cấp cho bạn một môi trường tiêu chuẩn, một Môi trường Linux đó là sẽ xem xét một chút một cái gì đó như thế này. Bạn sẽ thấy nhiều hơn về điều này trong các Vấn đề Set 1 đặc điểm kỹ thuật mà sẽ đi trực tuyến tối thứ sáu này. Và điều này có nghĩa là bạn từ nay về sau sẽ có thể tải về và cài đặt một chương trình gọi là CS50 gia dụng. Và bạn sẽ phải tải về và cài đặt một chương trình gọi là một hypervisor, đó chỉ là một là cách ưa thích đạt được điều này. Cho dù bạn sở hữu một máy Mac hoặc PC hoặc một Máy tính Linux hoặc một máy tính Solaris, hoặc bất cứ hoạt động điên hệ thống bạn đang chạy, bạn sẽ tải về một chương trình gọi là hypervisor đó là sẽ chạy CS50 Thiết bị trên máy tính của bạn không có vấn đề gì hệ điều hành của bạn. Một hypervisor nói cách khác là chuyển đổi các công cụ của chúng tôi để bất cứ ngôn ngữ, bất cứ hướng dẫn của bạn máy tính của riêng hiểu. Vì vậy, đây là một giới hạn. Và một lần nữa, đây là loại các chuyên đề trong máy tính khoa học, xây dựng trên đầu trang của sự vật. Bạn có thể có Windows. Bạn có thể có hệ điều hành Mac. Nhưng bắt đầu từ tuần tới bạn sẽ đã tải về một mảnh miễn phí của phần mềm gọi là hypervisor. Bạn sẽ đã tải về một mảnh phần mềm được gọi là CS50 gia dụng. Điều đó sẽ chạy trong hypervisor, đó là sẽ chạy trên máy tính của bạn. Và kết quả cuối cùng là rằng tất cả chúng ta sẽ có một cửa sổ đơn giản như này trên máy Mac hoặc máy PC của bạn cung cấp cho chúng ta những ảo ảnh của tất cả các chạy hệ điều hành tương tự, mà không có bất kỳ khác ảnh hưởng đến máy tính của bạn. Và bạn có thể toàn màn hình và về cơ bản nó cư xử như thể bạn đang chạy một hệ điều hành được gọi là Linux, đó là những gì CS50 Thiết bị dựa trên. Vì vậy, hãy thực sự sử dụng này bây giờ viết một chương trình. Bạn có thể viết một chương trình sử dụng Microsoft Word. Bạn có thể viết một chương trình sử dụng TextEdit, hoặc Notepad, hoặc WordPad, hoặc khá nhiều bất kỳ từ chương trình xử lý bạn đã từng sử dụng. Nhưng thực tế là bạn không nên sử dụng thực sự của những chương trình. Bạn chắc chắn không nên sử dụng một cái gì đó giống như Microsoft Word, mà có phải đối mặt với đậm và in nghiêng, và phông chữ lớn hơn và phông chữ nhỏ hơn, bởi vì máy tính không quan tâm đến bất kỳ điều đó. Tất cả các máy tính sẽ quan tâm là Tiếng Anh như hướng dẫn được viết bằng C. Vì vậy, những gì chúng tôi sẽ làm bên trong của gia dụng CS50 được sử dụng một chương trình tự do có sẵn, và nó cài đặt sẵn trong này thiết bị, được gọi là Gedit. Và Gedit chỉ là một siêu đơn giản soạn thảo văn bản như hệ điều hành Mac của TextEdit, như Notepad của Windows đó là sẽ tìm kiếm một chút gì đó như thế này. Vì vậy, hãy thực sự không nhìn vào slide này. Nhưng chúng ta hãy thực sự đi vào môi trường riêng của mình. Tôi sẽ đi trước và đăng nhập, trong cửa sổ khác này, để CS50 gia dụng của tôi, mà tôi đã cài đặt sẵn trên máy tính xách tay của tôi ở đây. Chú ý rằng, giống như Windows và Mac OS, nó có một số đơn. Giống như Windows nó đặt nó xuống đó thay vì Mac OS, trong đó đặt nó xuống đó. Nhưng thực tế là nó tất cả các loại giống nhau. Và đây là một toàn bộ loạt các phần mềm. Có Dropbox. Có một bó toàn bộ các phụ kiện, các chương trình đồ họa mà chúng ta sẽ sử dụng sau này trong thời gian cho bài tập. Có một trình duyệt web được xây dựng trong quá rằng đây là một máy tính đầy đủ chính thức bên trong máy tính. Nhưng tôi sẽ bấm vào đây tận cùng bên trái biểu tượng màu trắng ở đây, đó là biểu tượng cho Gedit. Và nó sẽ mở một cửa sổ có ba tấm với nó, một bên trái, một đầu, và một phía dưới. Bây giờ là trong một này ngay hàng đầu mà Tôi sẽ thực sự viết một số mã. Vì vậy, hãy làm điều này ,. Tôi sẽ đi vào File, Save. Và bạn có thể không bao giờ đã thấy cửa sổ đặc biệt này trước đây. Nhưng điều này cũng giống như hệ điều hành Mac hoặc Windows. Nó chỉ là một cửa sổ với tất cả các thư mục mà tôi có bên trong của máy tính này. Và tôi sẽ tiết kiệm nội dung tập tin hello.c. Và tôi sẽ đi phía trước và nhấn Save. Và bây giờ thấy tôi có một tab ở phía trên bên trái được gọi là hello.c. Vì vậy, có lẽ là khá quen thuộc ngay cả khi bạn đã không sử dụng chương trình đặc biệt này trước đây. Và bây giờ tôi sẽ đánh vào những trình tự khá khó hiểu của các lệnh mà chúng ta đã thấy một thời điểm trước đây. Bao gồm, tiêu chuẩn I / O.h. Thêm chi tiết về sớm đó. Int void main, mở xoăn cú đúp, đóng ngoặc móc. Và sau đó bên trong có tôi nghĩ là nơi mà chúng tôi đã có "hello world", dấu chấm phẩy. Và bây giờ tiết kiệm. Vì vậy, đây là một chương trình viết bằng C, bằng văn bản, do đó, trong mã nguồn. Nhưng tôi không thể chỉ cần chạy chương trình này. Tôi gần như muốn tăng gấp đôi nhấp chuột vào một biểu tượng nào đó, nhưng không có biểu tượng tồn tại khác hơn các tập tin mã nguồn. Gì, một lần nữa, là quá trình bây giờ mà Tôi cần phải chạy tập tin này thông qua? TƯỢNG: biên dịch. DAVID J. Malan: Vì vậy, một trình biên dịch. Vì vậy, trong các máy tính khác nhau mà bạn làm điều này trong nhiều cách khác nhau. Nhưng những gì chúng tôi đã thực hiện ở đây trong các gia dụng CS50 đó là đại diện như thế nào có lẽ bạn làm điều này trên nhiều hệ thống khác nhau, Tôi chỉ đơn giản là sẽ chạy một lệnh gọi thực hiện. Và làm là nghĩa đen sẽ làm điều đó. Hãy cho tôi một chương trình. Vì vậy, chắc là sẽ chạy một trình biên dịch cho tôi. Và tên của chương trình Tôi muốn làm là xin chào. Bây giờ làm là một chương trình. Và chắc là đủ để thông minh nhận ra rằng nếu tôi nói làm hello, nó sẽ tự động tìm kiếm cho một tập tin gọi là hello.c chỉ vì đó là cách nó được cấu hình. Vì vậy, khi bây giờ tôi nhấn Enter ở đây, điều này điên dòng khó hiểu chỉ đã thực hiện. Và tôi tin tưởng, trước khi dài, trong vòng chỉ vài ngày, bạn sẽ hiểu những gì tất cả điều đó có nghĩa là vô nghĩa. Nhưng bây giờ, chỉ biết rằng làm thực hiện nguyên nhân gây ra một trình biên dịch. Nói cách khác, nó được tìm thấy một trình biên dịch trên máy tính của tôi đó là cài đặt sẵn trên gia dụng CS50 rằng chúng tôi sẽ giao cho bạn trong vấn đề Set 1. Và sau đó đã hello.c như đầu vào, và sản xuất rõ ràng 0 và số 1 là đầu ra. Và theo mặc định những gì nó làm là nó tiết kiệm những số 0 và số 1 trong một tập tin hello. Và mặc dù cú pháp này quá might được mới cho bạn, chỉ đơn giản bằng cách nói rằng dấu chấm giảm chào là có được các phương tiện mà tôi chạy chương trình này. Cho bây giờ và cho ít nhất một vài tuần, gần như tất cả các chương trình chúng tôi viết được sẽ được cửa sổ văn bản màu đen và trắng. Không có chuột, không nhấp vào, không có cửa sổ, không có biểu tượng. Chúng tôi sẽ giữ nó đơn giản và tập trung vào những ý tưởng cơ bản ban đầu trước khi chúng ta có được một cái gì đó mức độ cao hơn, ví dụ, như thoát ra khỏi trò chơi mà chúng tôi nói chuyện về trong bài giảng đầu tiên vào tuần trước. Vì vậy, khi tôi nhấn Enter ở đây, đó là tương đương trong một văn bản chỉ môi trường tăng gấp đôi nhấp vào một biểu tượng gọi là hello. Những gì bạn mong đợi sẽ xảy ra khi tôi nhấn Enter sau đó? TƯỢNG: Nó sẽ in "hello thế giới." DAVID J. Malan: Hy vọng nó sẽ in "hello thế giới." Và thực sự nó đã làm. Bây giờ có được một số cú pháp khó hiểu ở đây. Chúng ta hãy quay lại chỉ một thời điểm và xem chúng ta không thể suy luận ra chỉ bằng cách mày mò, cố gắng và thất bại, như những gì đang xảy ra ở đây. Nếu tôi thoát khỏi những dấu gạch chéo ngược n? Bây giờ một số bạn của những người đã lập trình trước khi có thể biết ngay lập tức điều đó có nghĩa. Nhưng đối với những người bạn của những người đã không bao giờ được lập trình trước, ít nhất là nghĩ đến bản thân những gì đang xảy ra thay đổi khi tôi chạy chương trình này? Vì vậy, tôi sẽ quay trở lại xuống của tôi màu đen và trắng cửa sổ, là cửa sổ trong đó Tôi có thể biên dịch này. Tôi sẽ phải biên dịch lại hello. Chúng ta sẽ xem cùng trình tự khó hiểu của các lệnh. Và tôi sẽ làm dấu chấm dấu gạch chéo hello. Và bây giờ một người nào đó, nếu bạn muốn, người không bao giờ được lập trình trước, những gì có thể khác nhau thời gian này? Yeah. TƯỢNG: Nó sẽ không dừng lại in "hello thế giới." DAVID J. Malan: Nó sẽ xin lỗi đối với:? TƯỢNG: Nó sẽ không dừng lại in nó? DAVID J. Malan: Nó sẽ không ngừng in "hello thế giới." Vì vậy, không phải là một ý tưởng tồi. Ý kiến ​​khác? Yeah. TƯỢNG: Thông báo lỗi? DAVID J. Malan: Lỗi tin nhắn, OK, có thể được. Còn gì nữa? TƯỢNG: Nó có thể in khung với các dấu chấm phẩy là tốt? DAVID J. Malan: Có thể in khung với các dấu chấm phẩy là tốt. Vì vậy, có lẽ dấu gạch chéo ngược mà sau đó là một số loại terminous đó là quan trọng. Bất kỳ suy nghĩ khác? Vì vậy, tất cả những ý tưởng tốt. Và trên thực tế, nó sẽ được một thông báo lỗi. Đó có thể là có khả năng nhất là câu trả lời nói chung trong vài tuần tới khi chúng tôi tìm hiểu mã ở đây. Nhưng bây giờ nhớ rằng máy tính chỉ làm những gì bạn nói cho họ biết phải làm gì. Giống như đậu phộng vô lý ví dụ bơ và mứt. Máy tính con người của chúng tôi đã được chỉ phải làm những gì bạn nói với họ làm. Vì vậy, trong trường hợp này, nếu bạn không cho máy tính để di chuyển mà con trỏ nhấp nháy đến dòng tiếp theo, nó sẽ không làm điều đó. Vì vậy, khi tôi chạy chương trình này bây giờ, nhận thấy sự khác biệt. Trông giống như một lỗi. Đây là một lỗi thẩm mỹ, có lẽ. Nhưng những gì là khác nhau về vấn đề này sản lượng so với tác phẩm mới nhất rõ ràng? Yeah. TƯỢNG: Nó đã không làm một dòng mới. DAVID J. Malan: Nó đã không làm một dòng mới. Bây giờ những người bạn của những người có các trang web có thể được thực hiện trước đây, bạn có thể biết của BR thẻ hoặc các thẻ đoạn, Rất tinh thần tương tự. Một trình duyệt web sẽ bỏ qua cho đến khi bạn bạn nói nó chính xác phải làm gì. Tương tự như vậy, là một ngôn ngữ như C chỉ sẽ làm những gì bạn nói với nó để làm. Vì vậy, lý do mà tất cả các ví dụ, vậy, đến nay, có loại tình cờ có dấu gạch chéo ngược này trong đó, đó là phương tiện mà bạn thể hiện bản thân như là một ký tự dòng mới, vậy để nói chuyện. Và bạn có thể loại đánh giá cao, có lẽ, rằng điều này sẽ xem xét ngu ngốc nếu không có gì khác. Nếu tôi muốn một dòng mới, chỉ nhấn Enter và sau đó loại giết mổ của các mã như thế nên không thực sự chà bạn đúng cách. Và thậm chí nếu bạn không thực sự quan tâm vào thời điểm này, bạn sẽ nhận ra rằng đây không phải là đặc biệt phần tìm kiếm tốt mã. Và vì vậy những gì thế giới năm quyết định trước đây là rằng khi bạn muốn đặt con trỏ vào một dòng mới một cách rõ ràng, bạn phải nói một cách rõ ràng dòng mới, dấu gạch chéo ngược n. Và có một số khác biểu tượng như thế. Nhưng bây giờ chúng tôi sẽ chỉ tập trung vào các dấu gạch chéo ngược n. Bây giờ chúng ta hãy làm cho chương trình một chút thú vị hơn. Tôi sẽ đi trước và thời gian này mở ra một tập tin mới. Tôi sẽ tiết kiệm này là hello-1.c. Và chỉ cần cho đá, tôi sẽ đi đặt nó vào thư mục Dropbox của tôi. Như bạn sẽ thấy trong CS50 tài liệu cho các thiết bị, cuối tuần này cho Vấn đề Set 1, chúng tôi sẽ khuyến khích bạn sử dụng Dropbox hoặc một số dịch vụ tương đương, bởi vì sau đó tất cả các mã của bạn sẽ được sao lưu tự động. Và đó là lý do tại sao tôi đã đi vào thư mục này ở đây. Và bây giờ tôi sẽ viết chương trình hơi khác nhau. Bao gồm, tiêu chuẩn I / O.h, int void main. Và sau đó ở đây printf, hello thế giới, đó là chính xác giống như trước đây. Nhưng bây giờ tôi muốn in một cái gì đó đó là một chút khác nhau. Tôi muốn in ra, nói: "Xin chào, David." Được rồi, như vậy rõ ràng, nó phải hy vọng là trường hợp đó nếu tôi biên dịch lại chương trình này, chạy nó, nó sẽ nói "xin chào, David." Nhưng nếu tôi muốn giới thiệu loại này biến, khái niệm về một container đó sẽ để lưu trữ D-một-v-i-d và mã nó không khó vào chương trình của tôi. Vâng những gì nếu tôi bắt đầu làm một cái gì đó như thế này? String, vì vậy đây là một biến. Nếu bạn muốn có một chuỗi, còn gọi là một từ hoặc một cụm từ. Một chuỗi các ký tự là những gì chúng tôi trong chương trình gọi là một chuỗi. Chúng tôi chỉ cần đi để quát gọi nó s, bởi vì nó là một cái tên đơn giản, tốt đẹp. Nhưng tôi có thể gọi nó là bất cứ điều gì. Tôi sẽ nói string s bình đẳng quote unquote, "David", dấu chấm phẩy. Và bây giờ tôi muốn chèn D-một-v-i-d vào những gì tôi đang in. Và trước khi chúng tôi nhìn thấy một lời trêu ghẹo trên màn hình của một số cú pháp đặc biệt cho phép chúng tôi thay thế trong một giá trị. Điều gì là đặc biệt biểu tượng một vài slide trước? Vì vậy, phần trăm. Vào thời điểm đó là phần trăm d cho số thập phân. Điều đó không thực sự có vẻ liên quan ở đây. Hóa ra có của một biểu tượng phần trăm, đó là phần trăm, mà đứng cho một giữ chỗ cho một chuỗi. Vì vậy, bây giờ, rất đơn giản, tôi là sẽ đi làm hello-1, bởi vì tập tin này được gọi là hello-1.c, và nhấn Enter. Và tôi hơi say lên. Có chuyện gì vậy? Vâng, đây là nơi chúng ta phải bắt đầu đánh giá cao rằng chúng ta đang ở trong lệnh này môi trường dòng, điều này văn bản chỉ môi trường. Không có cách kích chuột vào biểu tượng như các thư mục ngay bây giờ. Và nghĩ lại một chút thời gian trước đây. Trong những thư mục đã làm tôi nói Tôi đã tiết kiệm mã của tôi? Vì vậy, các thư mục Dropbox. Có thể được gọi là bất cứ điều gì. Nhưng nó sẽ xảy ra được gọi là Dropbox. Vì vậy, tôi bằng cách nào đó cần nhấp đúp chuột vào thư mục Dropbox để có được vào nó và nhận được ở tôi mã được gọi là hello-1.c. Trong thực tế, hãy để tôi đi trước và giảm thiểu cửa sổ này cho một thời điểm. Cũng giống như Windows và Mac OS, có các thư mục trong Linux. Có các thư mục trong CS50 gia dụng. Nó chỉ là ngay bây giờ chúng ta đang nhốt mình với môi trường văn bản này. Nhưng nếu tôi tăng gấp đôi nhấp chuột trên Dropbox, nhận thấy có là các tập tin mà tôi muốn biên dịch. Nhưng tôi cần điều này màu đen và trắng cửa sổ thiết bị đầu cuối, vậy để nói chuyện. Nhưng tôi cần, do đó, để di chuyển vào các thư mục và thư mục. Vì vậy, một chút phức tạp, nhưng bạn sẽ nhận được sử dụng làm điều này. Trong thế giới của Linux, mà lại là các hoạt động Hệ thống chúng tôi đang chạy bên trong CS50 Thiết bị, có một lệnh gọi là đĩa CD. Có nghĩa là tôi có thể làm đĩa CD, không gian, Dropbox. CD, thay đổi thư mục. Đúng. Quay trở lại những ngày khi mọi người phát minh ra máy tính và hoạt động hệ thống như thế này, họ muốn gõ các tổ hợp phím ít nhất có thể. Vì vậy, cách đơn giản nhất để nói thay đổi thư mục là đĩa CD. Vì vậy, nếu tôi nhấn CD, không gian Dropbox, thông báo những gì đã thay đổi ở đây. Bên trong dấu ngoặc đơn thiết bị này là loại humoring của tôi và nhắc nhở tôi đang ở đâu. Vì vậy, các thư mục mở là Dropbox. Nếu bây giờ tôi gõ ls danh sách, một lần nữa cô đọng, bởi vì mọi người không muốn nhập trở lại trong ngày l-i-s-t. Vì vậy, thay vào đó họ đã làm cho nó ls. Enter. Thông báo tôi thấy hai điều, hello-1.c, và sau đó điều khó hiểu này, nguồn 1m. Đó chỉ là cách của tôi nói mã nguồn cho tuần 1 thứ Hai. Đó là một thư mục tải về từ CS50 trang web của tôi được thực hiện trước ngày hôm nay và chỉ cần đặt nó vào trong thiết bị trước. Nhưng bây giờ điều duy nhất chúng tôi quan tâm là làm cho chương trình này. Vì vậy, khi tôi gõ làm hello-1, Enter. Chết tiệt. Một cái gì đó đã đi sai. Vì vậy, hãy trêu chọc này ngoài. Và không may này là nơi mà mọi thứ có được một chút căng thẳng lúc đầu, ít nhất là nếu bạn đã không bao giờ được lập trình trước. My god. Tôi đã viết một chương trình hai dòng và Tôi có bốn dòng lỗi. Vì vậy, những gì đang xảy ra ở đây. Đầu tiên và quan trọng nhất luôn luôn di chuyển trở lại lên và tìm thấy những thông báo lỗi đầu tiên, bởi vì đôi khi các trình biên dịch chỉ bị lẫn lộn bởi những gì bạn và tôi. Trình biên dịch là khá ngớ ngẩn. Họ sẽ chỉ làm những gì bạn nói với họ làm gì. Và nếu bạn nhầm lẫn giữa chúng, họ chỉ sẽ loại ném lên bàn tay của họ và có thể ném thông báo lỗi hơn hơn là thực sự có liên quan. Vì vậy, chúng ta hãy nhìn vào đầu tiên. Siêu khó hiểu lúc đầu tiên. Tuy nhiên, thông báo, đây là tên của tập tin trong đó tôi hơi say lên rõ ràng. Colon 5, đại tràng 5 chỉ có nghĩa là trên dòng 5 ở nhân vật thứ năm. Vì vậy, cột thứ năm của nhân vật, nếu bạn sẽ, lỗi. Sử dụng chuỗi định không khai báo. Ý của bạn là n tiêu chuẩn? Không, tôi có nghĩa là chuỗi. Và sau đó nó loại sao chép và dán những gì tôi đánh máy để thực sự thu hút của tôi chú ý đến nơi mà tôi hơi say lên. Vì vậy, đối với một số lý do C, hoặc ít nhất là trình biên dịch không hiểu chuỗi từ. Và đó là bởi vì chúng tôi đã làm cho nó lên. Vì vậy, chuỗi không tồn tại trong C. CS50 không, trong vài tuần đầu tiên duy nhất của lớp, được chúng tôi cung cấp một số đào tạo bánh xe, vậy để nói chuyện. Và chúng tôi đặt những bánh xe đào tạo bên trong một file đặc biệt gọi CS50.h. Vì vậy, đây là lần thứ hai trong hai tập tin tên mà dường như kết thúc trong dot h. Chúng ta hãy quay lại. Printf là một tuyên bố hoặc chức năng mà dường như in cái gì đó ra màn hình. Nhưng bạn không nhìn thấy tôi thực hiện printf, phải. Một người nào đó trước năm thực hiện printf. Trong những tập tin bạn sẽ đặt ông hoặc cô ấy để thực hiện cho printf, mã cho printf? Trong một tập tin gọi là tiêu chuẩn I / O.h. Trong thực tế, nó có thể là trong hai tập tin, tiêu chuẩn I / O.h, viết tắt của tiêu đề tập tin, và tiêu chuẩn I / O.c, viết tắt của mã nguồn C. Vì vậy, anh ta hoặc cô cách đây vài năm ngồi phịch mã mà họ viết vào tập tin đó để những người như chúng tôi năm sau đó có thể bao gồm nó, có thể nói, trong các chương trình của chúng ta. Và quả thực, đó là những gì các dấu thăng theo sau là từ bao gồm không. Có vẻ trên ổ đĩa cứng địa phương, tìm thấy các tập tin được gọi là tiêu chuẩn I / O.h, và sau đó có hiệu quả và bản sao dán nó bên trong các tập tin riêng của tôi. Vì vậy, bây giờ chương trình của tôi biết làm thế nào để in ra màn hình. Vì vậy, theo đó logic, nơi là chuỗi được xác định? TƯỢNG: CS50.h. DAVID J. Malan: CS50.h. Và quả thực, đó là những gì chúng tôi, các cán bộ nòng cốt, đã làm. Chúng tôi đã phát minh ra một vài loại dữ liệu, có thể nói, giống như một chuỗi, ngoài những người bạn nhận được miễn phí, giống như một int. Và chúng ta sẽ thấy những người khác giống như một char cho một nhân vật và một vài chi tiết. Bên trong CS50.h rõ ràng là ít nhất một số đề cập đến chuỗi. Vì vậy, bây giờ hãy để tôi đi trước và chạy lại làm hello-1. Tôi sẽ phóng to một lần nữa và qua các ngón tay của tôi. Bây giờ đã được thực hiện bởi một Tôi cố định thay đổi hầu hết mọi thứ. Nhưng chết tiệt. Nhiều phần trăm so với đối số dữ liệu. Tôi đã làm gì sai đây? Vì vậy, nó vẫn còn khá khó hiểu. Tuy nhiên, lỗi này là dòng 7 và 21 nhân vật. Vì vậy, chúng ta hãy đi tìm ở đây. Đó là một chút tinh tế. Nhưng nếu bạn nghĩ về những gì những ý tưởng cơ bản ở đây là, có lẽ chúng ta có thể trêu chọc này ngoài. Vì vậy, printf là tên của hàm. Ngoặc đơn, cho đến nay, là giống như những gì chúng tôi đặt xung quanh những thứ chúng tôi đang đi qua là đầu vào cho một chức năng. Được rồi, chỉ là một Công ước nhân tùy ý. Sử dụng dấu ngoặc đơn. Bên trong những dấu ngoặc đơn chúng tôi đã đặt dấu ngoặc kép, và sau đó một chuỗi như "hello thế giới." Nhưng trong ví dụ trước đó rất một thời gian ngắn đã làm chúng ta nhìn vào với Scratch. Và chúng tôi đã có phần trăm d, những gì khác là bên trong những dấu ngoặc đơn mà tôi gọi bằng lời nói? Yeah. TƯỢNG: Vì vậy, đó là những gì bạn đang dùng [Không nghe được] từ bên trong [không nghe được] những gì các [không nghe được]? DAVID J. Malan: Chính xác. Vì vậy, chúng tôi đã có phần trăm d. Nhưng sau đó chúng tôi đã có gần báo giá, dấu phẩy, truy cập. Đúng. Chúng tôi xác định những gì chúng ta muốn làm như giữ chỗ. Vì vậy, những gì tôi sẽ làm ở đây là dấu phẩy, những gì bạn muốn tôi để đặt? TƯỢNG: S. DAVID J. Malan: S, vì s trong trường hợp này là tên của kho nổi chứa. Đó là tên của bát thủy tinh. Trong khi đó, trước khi nó được truy cập trong đó Ví dụ đơn giản Scratch chúng tôi xem xét. Vì vậy, bây giờ đã thực hiện hai thay đổi, hãy để tôi phóng to và cố gắng một lần nữa để biên dịch chương trình này. Bây giờ tôi thấy rằng dòng khó hiểu. Nhưng đó thực sự là tên của trình biên dịch. Kêu vang là tên của trình biên dịch. Hãy chỉ là tiết kiệm cho tôi đau đầu của từng cách gõ lệnh dài điên ra. Vì vậy, bây giờ nếu tôi chấm giảm hello-1, Tôi sẽ thấy "hello, David." Khá tượng, mặc dù, phải không? Chúng tôi đã có thể làm này đơn giản hơn rất nhiều mà không nói về các biến và CS50.h và tất cả điều đó. Vì vậy, hãy làm cho nó một ít thú vị hơn. Ngoài CS50.h, có những thứ như chuỗi tuyên bố, thư viện CS50 cũng có một vài chức năng. Vì vậy, cũng giống như năm trước, ai đó đã viết printf và đặt nó trong tiêu chuẩn I / O.h và một số tập tin khác. Chúng tôi, các nhân viên CS50, đã viết một chức năng gọi là getchar, GetDouble, GetFloat, GetInt, GetLongLong, GetString, và chúng tôi đưa những người bên trong một file gọi là CS50.h và CS50.c. Và chúng tôi đặt chúng bên trong của CS50 gia dụng. Và mọi người cũng có thể tải chúng trực tuyến nếu họ muốn đặt chúng vào họ máy tính riêng là tốt. Đó là để nói rằng chúng tôi đã tạo ra chức năng mà có được đầu vào từ người sử dụng. Tôi không biết những gì tất cả của các kiểu dữ liệu đang có. GetInt là loại đơn giản, giống như có một số nguyên bằng cách nào đó từ người sử dụng. Và GetString có lẽ là như get một từ hoặc một câu từ người sử dụng. Vì vậy, hãy tập trung vào đó. Và tôi sẽ quay trở lại vào thiết bị và tôi sẽ đi trước và lưu tập tin này là, chúng ta hãy gọi nó hello-2.c như là phiên bản thứ hai của tôi. Và chúng ta hãy thực hiện một vài thay đổi. Lần này thay vì David cứng mã hóa, mà làm cho một vô cùng phù hợp nhưng chương trình tượng, nếu tôi thay vì làm GetString? Bây giờ thấy GetString có dấu ngoặc mở, ngoặc đóng, bởi vì nó không cần bất kỳ đầu vào. Nó chỉ đi được một chuỗi từ người sử dụng. Và bây giờ là một từ về cú pháp khác. Dấu chấm phẩy chỉ kết thúc một dòng mã. Bạn không cần phải cho họ ở khắp mọi nơi. Nhưng điều đó chỉ có nghĩa là tôi thực hiện với dòng mã này. Hãy để tôi chuyển sang một tuyên bố hoặc chức năng. Chuỗi khai báo một biến. Chuỗi là giống như nói cho tôi một bát, xin vui lòng. Và hãy để tôi đặt một chuỗi trong đó. Và bây giờ dấu bằng. Dấu bằng là gì về cơ bản tương đương? TƯỢNG: Chỉ định. DAVID J. Malan: Vâng, gán một giá trị. Vì vậy, nếu tôi, ví dụ, cuộc gọi chức năng này GetString, và chúng ta sẽ thấy trong một thời điểm đó là sẽ nhắc nhở người dùng cho một chuỗi. Điều này giống như cho phép sau đó tôi viết D-một-v-i-d trên một mảnh giấy. Và khi tôi nói chuỗi s bằng GetString, bằng không thực sự có ý nghĩa bình đẳng trong lập trình C. Nó có nghĩa là phân công từ cánh phải phía bên tay phải phía bên tay trái. Vì vậy, tôi đã nhận được một chuỗi. Và dấu bằng có nghĩa là đặt nó trong lưu container gọi là s. Và sau đó vượt qua được điều này để printf để thực sự làm điều này. Vì vậy, kết quả cuối cùng sau đó sẽ để tìm một chút khác nhau. Chúng ta hãy làm cho hello-2. Hoặc có thể làm việc. Bạn sau cùng. Hãy hello-2 làm việc. Dot giảm hello-2, Enter. Tôi dường như có vô hạn vòng lặp hoặc một cái gì đó. Không có gì đang xảy ra. Tại sao? TƯỢNG: Nó làm cho một vòng lặp vô hạn. DAVID J. Malan: Đây là một vòng lặp vô hạn. Đó là loại chờ tôi thực sự cung cấp nó với một số đầu vào. Vì vậy, hãy để tôi đi trước và gõ David, và nhấn Enter. Và bây giờ nó nói "xin chào, David." Nếu tôi chạy nó một lần nữa. Hãy gõ Rob, "hello, Rob." Bây giờ điều này là tồi tệ nhất giao diện người dùng bao giờ hết. Người sử dụng là rõ ràng phải biết phải làm gì. Nhưng không có vấn đề. Sử dụng những cùng xây dựng khối giống như trong Scratch, chúng ta có thể giải quyết vấn đề và nói một cái gì đó giống như tên của bạn xin vui lòng, ruột kết, không gian, đóng cửa giá, gần ngoặc đơn, dấu chấm phẩy. Vì vậy, rất nhiều lần nữa dại với cú pháp. Tuy nhiên, thông báo tôi đã chỉ cần thêm một mảnh ghép trên này và ở trên này. Vì vậy, bây giờ nếu tôi chạy lại này, xin chào-2, Enter. Chờ một phút. Có chuyện gì vậy? Nó không có hành vi nào khác. Yeah. TƯỢNG: Bạn đã không làm cho chạy một lần nữa. DAVID J. Malan: Tôi không chạy làm lại, phải. Vì vậy, tôi đã thay đổi mã nguồn của tôi. Nhưng một lần nữa, có dòng chảy đó. Mã nguồn thông qua các trình biên dịch cho bạn mã đối tượng mới, hoặc 0 và số 1. Vì vậy, tôi cần phải thực sự chạy lại làm hello-2 Nhập. OK, một cái gì đó dường như đã xảy ra. Dot giảm hello-2. Tên của bạn xin vui lòng. Để cho rõ ràng bây giờ, tại sao con trỏ trên cùng một dòng? Chính xác. Tôi không đặt dấu gạch chéo ngược n ở đây trong mã của tôi. Vì vậy, bây giờ tôi có thể viết một cái gì đó giống như Daven, Enter. Tôi có thể chạy nó một lần nữa và gõ một cái gì đó giống như Gabe, Enter, và chúng tôi có được một chương trình khác một lần nữa và một lần nữa và một lần nữa. Bây giờ cuối cùng chúng ta sẽ cần sử dụng một số khả năng khác nhau. Chúng tôi cần phải giới thiệu một số cuối cùng điều kiện để làm những việc có điều kiện. Có lẽ vòng vì vậy chúng tôi có thể làm điều một lần nữa và một lần nữa. Có lẽ nó sẽ được tốt đẹp nếu chúng ta có thể thực hiện chức năng của chúng ta, như chúng ta có thể thực hiện của chúng ta printf hoặc phiên bản riêng của chúng tôi GetString và GetFlow, bởi vì cuối cùng thậm chí sử dụng này môi trường dòng lệnh chúng ta có thể làm nhiều nhất thị giác thú vị của sự vật. Thật vậy, trong kết luận hãy để tôi làm điều này. Tôi sẽ đi trước và đóng các cửa sổ và mở biểu tượng này ở đây, mà chỉ là một lớn hơn phiên bản mà nhúng cửa sổ terminal. Vì vậy, không chỉ có Gedit nơi dành cho mã của tôi, mà còn được xây dựng trong cửa sổ thiết bị đầu cuối, các cửa sổ màu đen và trắng, nơi tôi có thể chạy lệnh. Tôi chỉ tình cờ mở một phiên bản lớn hơn về điều này. Và bây giờ tôi sẽ đi vào thư mục mà tôi đã đã đặt trước trên trang web của khóa học. Và tôi sẽ đi trước và mở một tập tin gọi là thadgavin.c, được viết bởi một người khác. Và nếu chúng ta nhìn vào điều này, đây không phải là các loại mã chúng tôi sẽ có văn bản từ mục tiêu của mã này là viết đẹp nhất tìm mã mà mình có thể, không phân biệt có hay không một người khác có thể bao giờ hiểu mã này. Thật vậy, mỗi năm có những gì được gọi là một cuộc thi C làm rắc rối, mà là dành cho chuyên viên máy tính thực tế, những người viết mã mà không ai có thể đọc, nhưng điều đó làm điều gì đó, hoặc thực sự đơn giản, thực sự tuyệt vời. Và chúng tôi nghĩ rằng chúng tôi muốn kết thúc với cái nhìn này vào vật gì đó khá tuyệt vời bạn có thể đã nhìn thấy một lần trước. Nhưng chúng tôi sẽ kết thúc vào ngày này Đáng chú ý, dấu chấm dấu gạch chéo, thadgavin. Điều này sau đó là những gì đang chờ đợi. Đó là nó cho CS50. Chúng ta sẽ thấy bạn vào ngày thứ Tư. [MUSIC CHƠI]