[VIDEO PLAYBACK] -A Chiến thắng của toán học và kỹ năng cơ khí là tuyệt vời tự động mới này máy tính tại Đại học Harvard. Vấn đề phức tạp trong toán học đưa qua máy ở dạng mã hoá trên băng được giải quyết chính xác trong một phút phần của thời gian cần thiết tính con người. Được thiết kế để tiến hành mọi hình thức nghiên cứu toán học và khoa học, não cơ khí khổng lồ sẽ làm việc cho Hải quân Hoa Kỳ cho đến khi chiến tranh kết thúc. [END PLAYBACK] DAVID J. Malan: Đây, là CS50. Quá khứ là một huyền diệu nơi, nhưng nếu bạn đã bao giờ tự hỏi những gì thiết bị đó là tại Trung tâm Khoa học Harvard, nó thực sự là một phần của Harvard Mark I, và nó trên màn hình hiện nay từ nhiều năm qua. Và những gì bạn sẽ thấy nhúng trong vấn đề tập hợp một là một cái nhìn đằng sau hậu trường vào những gì thiết bị đã làm, và không có gì, từ Giáo sư Harry Lewis, người đang ở trong Sở khoa học máy tính ở đây. Vì vậy, thêm vào đó trong chỉ một chút. Nhưng hôm nay chúng ta bắt đầu quá trình chuyển đổi từ tuần trước đến nay, và chúng tôi sẽ mang lại đề cập đến của một bức ảnh ở đây đó là thực tế khá nổi tiếng. Có ai biết cái này ở đây là trên màn hình? Ít nhất là theo huyền thoại. Yeah. Đung Các virus đầu tiên. DAVID J. Malan: Vì vậy, nó được cho là các lỗi thực tế đầu tiên trong một máy tính. Bây giờ trong thực tế các lỗi từ, cho một sai lầm trong một chương trình, đã được với chúng tôi cho một số thời gian trong thế giới vật chất, và điều này là một trong những người đầu tiên lần ghi nơi ai đó thực sự gảy một loài bướm đêm lớn ra của Mark Máy tính II, đặt nó trong các chất kết dính, và sau đó ghi nó như các lỗi được biết đến đầu tiên đã thực sự được tìm thấy thể chất. Vì vậy, do đó đã được nhập đó vào truyền thuyết ngày nay. Tất cả mọi thứ từ cuối cùng tuần là có sẵn trực tuyến. Trong tài nguyên đặc biệt mà có lẽ bạn không nhất thiết phải chú ý, đặc biệt nếu đến đây trong người. Vì vậy, một trong những nghiên cứu sinh giảng dạy mỗi năm làm cho một bộ kinh điển của các ghi chú, vì vậy bạn không cần giữ Cúi đầu xuống, cố gắng để ghi lại bất cứ điều gì nhất mà có thể xảy ra ở lớp. Vì vậy, nhận ra rằng những cái gọi là [? Scribd?] Ghi chú đang trực tuyến, chắc chắn các slide và mã nguồn mà chúng tôi sử dụng trong lớp học. Chúng tôi làm cho bảng điểm toàn văn cũng có sẵn. Vì vậy, nếu bạn mơ hồ nhớ một số hạn, và muốn nhìn nó lên một chút dễ dàng hơn, nhận ra rằng tất cả đó là tìm kiếm trực tuyến. Cũng như walkthroughs là tốt. Thật vậy, hôm nay chúng ta bắt đầu nhìn vào một ngôn ngữ lập trình cấp thấp hơn, sớm được biết đến chúng tôi như C, và nó rất dễ dàng để loại bị mất chỉ sau một vài những khoảnh khắc thời gian, và sau đó sắp xếp của tự hỏi làm thế nào chúng ta thực sự đã để một số chi tiết ví dụ phức tạp từ đơn giản. Và như vậy chúng ta sẽ nhận ra anh đào chọn một số trong lớp học trong những ví dụ đại diện, nhưng nhận ra rằng còn nhiều hơn nữa cũng là có sẵn trực tuyến để bạn có thể làm việc qua nó ở tốc độ của riêng bạn, Tuy nhiên bạn cảm thấy thoải mái nhất. Nhưng chúng ta rời đi với chương trình mà là chỉ này. Vì vậy, tôi nhấp vào lá cờ màu xanh lá cây, và những gì chương trình này làm gì? Nói, hello, thế giới. Nó làm cho con mèo nói xin chào trong thế giới nhỏ bé của mình ở phía trên bên tay trái giao diện người dùng của Scratch. Nhưng chúng tôi bắt đầu giới thiệu một số thuật ngữ trong tuần trước. Và như vậy, những thứ như thế này chúng ta gọi là gì? Những gì có thể là thuật ngữ chung cho điều này? Yeah. Một phương pháp hay một tuyên bố. Chắc chắn, đó là một hành động. Làm cái này. Và chưa có hình dạng khác đến đầu, bên cạnh những cái gọi là tuyên bố, họ cũng là những điều như thế này, mà chúng ta gọi là gì? Yeah. Vì vậy, một vòng lặp. Và trong trường hợp này, điều này lặp đi lặp lại, rõ ràng, 10 lần. Có một khối mãi mãi. Có một vài người khác. Và hôm nay chúng ta sẽ xem làm thế nào để dịch này đến một thế giới hiện đại hơn, nếu bạn sẽ, mặc dù nó sẽ xuất hiện ở cái nhìn đầu tiên được nhiều hơn nữa phức tạp. Nhưng những người đã thực sự vòng. Và sau đó chúng tôi có những thứ như này, trong đó có hình dạng này, và về cơ bản câu hỏi. Và chúng tôi nói đến điều này như những gì? Đung biểu thức Boolean. DAVID J. Malan: Yeah. Biểu thức Boolean. Cái gì đó là đúng hoặc sai, có hay không, một hay không, tuy nhiên bạn muốn xem thế giới. Nhưng chúng ta gọi là những người Boolean biểu thức, và chúng tôi cắm chúng vào điều kiện, hoặc các chi nhánh. Và trong thế giới của Scratch, tất cả mọi thứ độc đáo interlock về hình dạng của nó, nếu nó làm cho tinh thần hợp lý để làm như vậy, nhưng bạn không phải chỉ dừng lại ở làm một điều có điều kiện, bạn có thể có một phương ngôn ngã ba trên đường và làm một trong hai điều này hay đó nếu điều kiện là đúng hay không. Và sau đó, như bạn sẽ thấy, nếu bạn chưa có, bạn có thể ngay cả những tổ khối. Vì vậy, Scratch phát triển để điền vào hình dạng mà bạn có thể muốn chèn vào nó, do đó, bạn thực sự có thể bày tỏ nhất logic nào mà bạn có thể muốn làm. Bây giờ một vài lời thông báo cho cả hai ở đây và New Haven. Vì vậy, cắt- bắt đầu ngày hôm nay. Các URL cho điều này là về các khóa học của trang web, cho những người không quen. Phần sẽ là một cơ hội để có được với nhau trong một môi trường nhiều hơn nữa thân mật hơn [? Sanders?] Cho phép, với 10-20 người bạn cùng lớp với một giảng dạy nghiên cứu tại bản nhạc khác nhau, và bước khác nhau, nếu bạn lựa chọn. Thật vậy khóa học Mời phần khác nhau cho những người kém thoải mái, hơn thoải mái, và một nơi nào đó ở giữa, và vai trò của ngón tay cái ở đây, là không có định nghĩa chính thức, nhưng nếu bạn không thoải mái, bạn loại biết nó. Bạn là một chút dũng cảm về ý tưởng của bước chân, có lẽ, trở lại trong lớp học, hoặc hiển thị lên đến một trong giữa phần. Nếu bạn đã được lập trình từ khi bạn sáu tuổi, thoải mái hơn, có lẽ với bạn. Và nếu đó là loại một toss-up, đó là chính xác những gì ở giữa có nghĩa là phải. Bây giờ, trong khi chờ đợi, cho một lớp học kích thước này, nó đưa chúng ta một thời gian để phần tất cả mọi người, vì vậy chúng tôi đã được gọi là, siêu phần, sắp tới này cuối tuần và đầu tuần tới, vì vậy hãy xem tại trang web của khóa học cho những người đang tất nhiên rộng, và cũng quay cho những người không thể làm cho họ. Và phần mình sẽ bắt đầu trong tuần ba của CS50 chỉ số zero. Vấn đề đặt 0 là đã trên trang web của khóa học. Và nhận ra rằng bạn có chín muộn ngày học kỳ này. Vì vậy, đây là một bản nâng cấp từ cuối cùng năm, khi chúng tôi đã có năm ngày cuối. Vì vậy, nếu bạn đang tự hỏi, chúng ta có chín bộ vấn đề. Bạn có chín ngày cuối năm, mỗi trong số đó bạn chỉ có thể dành một tuần vào các ngày. Điều đó làm cho hiệu quả tất cả vấn đề đặt ra do Thứ sáu, nhưng mục tiêu là để đặt một ít chút áp lực tâm lý trên bạn thử để có được điều trong hôm thứ Năm vì như bạn sẽ sớm khám phá, cho tốt hơn hoặc tồi tệ hơn, nhất tất cả mọi thứ trong thế giới phần mềm kết thúc mất nhiều thời gian hơn bạn dự đoán. Vì vậy, xem xét nó một loại cơ hội để giúp đỡ mình để nhắm mục tiêu thứ năm, nhưng thoải mái trong đó, có, tất cả mọi thứ là do thứ Sáu. Và nếu bạn gửi cho họ trên Thứ năm, đó là tuyệt vời. Không có điểm thưởng hoặc thêm tín dụng để đáp ứng hạn chót. Nó có nghĩa là một chỉ nạng. Và giờ hành chính, cả hai ở đây và ở New Haven, trong người, nếu bạn muốn đáp ứng với bất kỳ của các khóa học của chúng tôi giảng dạy và nghiên cứu sinh CA để được hỗ trợ. Được rồi. Vì vậy, bây giờ, chúng ta hãy làm điều này nhiều hơn thực tế. Và trong một khoảnh khắc nó sẽ bắt đầu để có được nhiều hơn một chút phức tạp, nhưng rất nhanh chóng vào thứ Sáu và tuần tiếp theo chúng ta sẽ có có thể làm được nhiều hơn chúng ta có thể như vậy, đến nay trong Scratch. Vì vậy, chúng tôi giới thiệu mã cuối cùng tuần, mặc dù pictoral. Đó là mảnh ghép. Và chúng tôi chính thức rằng nó là một cái gì đó gọi là mã nguồn, nhưng sẽ không như thế nào? Vâng, nó nhìn một chút một cái gì đó như thế này. Và, trên thực tế, chỉ để loại trêu chọc, nơi chúng tôi có thể đi với điều này. Tôi sẽ đi trước và mở ra một cửa sổ ở đây, và tôi chỉ cần đi để chọn New File. Và tôi sẽ lưu tập tin này như một cái gì đó giống như chào dot c. Thêm vào đó lựa chọn từ chỉ trong một khoảnh khắc. Và đây là cách ai đó có thể đi về cách viết một chương trình. Bao gồm các tiêu chuẩn I / O dot h, int main bãi bỏ, và sau đó mở ngoặc móc, gần ngoặc móc, printf chào dấu phẩy thế giới, backslash n, dấu chấm phẩy, Save, thực hiện. ĐƯỢC. Tôi đã viết đầu tiên của tôi chương trình, nhưng nó sẽ để được vô underwhelmed bởi vì khi tôi thực sự chạy chương trình này, tất nhiên, bằng văn bản trước tiên hãy hello, và sau đó dot giảm hello, và chúng tôi sẽ đi qua này chi tiết hơn trong một thời điểm, đó là tất cả nó. Không bật mở bất kỳ cửa sổ. Nó không làm bất cứ điều gì đặc biệt ưa thích. Tất cả nó là những gì tôi nói với nó để làm, nhưng làm thế nào để chúng ta có được điều đó? Và làm thế nào để chúng ta xây dựng trên đó? Vâng, chúng ta hãy giới thiệu một vài khái niệm khác nhau ở đây. Vì vậy, một, chúng tôi về để bắt đầu bằng cách sử dụng một chương trình được gọi là một trình biên dịch. Một trình biên dịch tồn tại cho Mac OS, Windows, Linux, bất kỳ số lượng các hệ thống điều hành, và chúng tôi sẽ sớm giới thiệu bạn đến môi trường mà chúng ta sẽ sử dụng, nhưng một trình biên dịch chỉ là một vị tướng hạn cho một phần của phần mềm mà mất mã nguồn và sản xuất mã đối tượng từ nó. Nói cách khác, nếu bạn có như nguồn đầu vào của bạn mã, một cái gì đó giống như những gì tôi chỉ cần gõ, cuối cùng nó tạo mã đối tượng. Và mã số đối tượng thực sự là chỉ một cách nói nó ra của zero và một người. Nói cách khác, nguồn mã, mặc dù nó đi để tìm một chút phức tạp, và một chút ít thân thiện Scratch hơn ở cái nhìn đầu tiên, nó ít nhất là một cái gì đó con người chúng ta có thể hiểu được. Nó loại có vẻ giống như Anh mặc dù nó rất gọn gàng. Trong khi lập trình trong số không và của một người, như người tiền nhiệm của chúng tôi đã phải làm, Cách đây vài năm, không phải là một thách thức đặc biệt thú vị. Tuy nhiên, đây là những gì máy tính vẫn hiểu. Vì vậy, trình biên dịch được chúng tôi từ mã nguồn để phản đối mã. Nó giống như việc mở một tập tin với các biên dịch, và khi bạn lưu nó, bạn sẽ có được những số không và những người thân. Vì vậy, chúng tôi sẽ xem làm thế nào để làm mà chỉ trong một khoảnh khắc. Nhưng chúng ta hãy bây giờ cố gắng để cung cấp một cầu nối giữa tuần trước và điều này, do đó ngay cả khi chúng tôi nhận được hung lên về những thứ như dấu ngoặc, và dấu chấm phẩy và dấu ngoặc đơn, và tất cả những tri thức thú vị các khía cạnh của lập trình, mà rất dễ hiểu chuyến đi người dậy sớm vào, nhận ra rằng tất cả các ý tưởng ngày hôm nay, cũng giống như cuối cùng. Vì vậy, cuối cùng, chúng ta đã thấy ví dụ này ở đây, chương trình Hello World. Vâng, bắt đầu từ ngày hôm nay, nếu chúng ta muốn để thực hiện điều đó cùng một chương trình, nó sẽ tìm một chút gì đó như thế này. Và chúng tôi sẽ giải thích trước dài những gì int, và chính, và bãi bỏ, và tất cả điều đó là, nhưng ít nhất tôi thấy ở đây đã quen thuộc Hello World. Trong khi đó, những thứ như chức năng, nói hello, rất đơn giản là có được một tuyên bố rất đơn giản như thế này. Printf hello thế giới, với một số trích dẫn, với một dấu gạch chéo ngược, với một dấu chấm phẩy, nhưng thêm vào đó để đến. Loops, trong khi đó, đây là một vòng lặp, Tất nhiên, nói hello thế giới mãi mãi, và điều này sẽ trông một ít tệ hơn trong cuối cùng, nhưng nếu tôi nói điều gì đó như thế, trong khi sự thật, tôi sau đó có thể in ra Xin chào thế giới một lần nữa và một lần nữa và một lần nữa và một lần nữa. Và sau đó khi bạn có thể loại của bắt đầu để suy ra ở đây, ước này bằng cách sử dụng dấu ngoặc nhọn là loại giống như ôm lấy dòng thụt vào mã ở đó. Các dòng printf của nhiều mã như các mảnh ghép màu vàng lên trên. Vì vậy, chúng tôi sẽ không nói mãi mãi, chúng ta sẽ nói trong khi sự thật, nhưng chúng ta sẽ thấy tại sao đó là chỉ trong một chút. Trong khi đó, nếu chúng ta có một vòng lặp như thế này, nơi bạn lặp lại một cái gì đó hữu hạn lần con số, một trong những quá nó sẽ mất một ít được sử dụng để, nhưng nó sẽ nói cho int i được không, tôi ít hơn 10, i ++, và sau đó printf nữa. Nhưng có sẽ là mô hình. Và đối với những người bạn quen thuộc với AP Khoa học máy tính, hoặc Java, hoặc bất kỳ số lượng các ngôn ngữ khác, hầu như tất cả các cấu trúc vậy, đến nay nên xem xét chủ yếu quen thuộc. Vì vậy biến. Vì vậy, đây là một đoạn trích Scratch đơn giản mà thiết đặt một biến gọi là truy cập đến số không, và sau đó mãi mãi nói quầy, và sau đó nó thay đổi truy cập bởi một. Vì vậy, nó bắt đầu bằng số không, và sau đó một, hai, ba. Vâng, làm thế nào chúng ta có thể giới thiệu rằng trong ngôn ngữ này mới một chút tương tự như vậy? Int truy cập bằng không, trong khi sự thật, mà là ý tưởng tương tự từ trước làm một cái gì đó mãi mãi, và tôi chỉ cần đi để printf. Và bây giờ nó nhận được một chút kỳ lạ, phần trăm tôi, nhưng thêm vào đó để đến, nhưng những ý tưởng này hoàn toàn giống nhau. Chúng tôi bây giờ chỉ cần phải tuân thủ cú pháp mà các máy tính là sẽ yêu cầu của chúng tôi. Biểu thức boolean, một cái gì đó như sx ít hơn y, hoặc x ít hơn y, và y ít hơn z. Nó sẽ tìm một chút gì đó như thế này, với dấu ngoặc đơn chỉ giống như trong toán học cho các biện pháp tốt để chỉ đảm bảo rằng thứ tự của các hoạt động như chúng tôi dự định. Và bây giờ, điều kiện. Vì vậy, nếu x nhỏ hơn y, nói x là ít hơn y, else if x lớn hơn y, nói x lớn hơn y, nếu không một cách hợp lý, x phải bằng y. Vì vậy, bạn có thể thực hiện một cái gì đó như thế này trong Scratch, hoặc bạn có thể thực hiện nó trong cú pháp này. Và một lần nữa, các dấu ngoặc nhọn là loại cho chúng ta những hình dạng giống như các câu đố miếng, nhưng cú pháp, bây giờ, có lẽ bắt đầu làm theo một số mô hình. Vì vậy, điều này cho chúng ta ở đây? Vì vậy, chúng tôi trở lại sau đó vào chương trình chính của chúng tôi. Hãy thực sự, bây giờ, làm điều gì đó với nó. Vì vậy, trong này đầu tiên đường chúng ta thấy rõ nét bao gồm, tiêu chuẩn I / O, dot h, và sau đó một số góc lạ khung dưới đây mà. int main bãi bỏ, và sau đó printf hello thế giới. Vì vậy, chỉ có một bước. Một người không bao giờ được lập trình trước, ít nhất là giải thích một trong những dòng này. Có lẽ sử dụng một số biệt ngữ của tuần trước. Printf là gì, ví dụ? Yeah. Đung [Không nghe thấy] DAVID J. Malan: Yeah. Đó là một chức năng, hoặc một tuyên bố, từ ngữ cuối tuần trước. Và đó là một hành động đó là làm một cái gì đó. Bây giờ chức năng này, hoặc tuyên bố này, không nó xuất hiện để có một số loại đầu vào? Và trong ý nghĩa gì không nó dường như để có đầu vào, nếu như vậy? Đầu vào, những gì tôi có nghĩa là bằng cách đó? Yeah. Đung [Không nghe thấy] DAVID J. Malan: Yeah. Vì vậy, Scratch ra một vài mảnh ghép nơi bạn có thể tham số hóa nó. Bạn có thể nói lặp lại chặn bao nhiêu lần để lặp lại, vì vậy đó là một đầu vào của các loại, và cũng giống như Scratch đã có một placeholder nhỏ màu trắng cho số bạn sẽ gõ vào, vì vậy chúng ta sử dụng trong này ngoặc thế giới văn bản để cung cấp cho chúng ta rằng hình tròn vào đó chúng ta có thể cắm đầu vào của chúng tôi. Sau khi tất cả, hàng chục năm trước khi ngôn ngữ này, được gọi là C, được phát minh không có ai dự đoán nó là một người trong chúng ta, những vài năm sau đó, chúng tôi muốn muốn có một chức năng mà nói xin chào. Phải không? Nó muốn được tốt đẹp nếu có một mảnh ghép, hoặc một từ khóa, đó được gọi là hello, mà nghĩa đen chỉ nói xin chào. Nhưng chúng tôi không cần điều đó. Chúng tôi có thể có một cái gì đó thấp hơn nhiều mức độ, như một bản in generic lệnh, mà mất đầu vào, và in bất cứ điều gì chúng ta muốn. Vì vậy, nhận thấy bây giờ các mô hình mà sẽ bắt đầu xuất hiện. Mở dấu ngoặc, dấu ngoặc đóng cửa dường như ôm lấy đầu vào, và sau đó tôi thấy đôi báo giá trên cả hai đầu. Hiện vẫn còn là dấu gạch chéo ngược lạ n, nhưng hy vọng bây giờ bạn có thể bắt đầu hình dung ít nhất đó printf được dùng trong một số hình thức của đầu vào. Không phải là người dùng thân thiện như Scratch, nhưng nó chỉ là như khi cắm vào một số giá trị đó. Được rồi, giờ chúng ta hãy thực sự làm điều gì đó với điều này. Vì vậy, một số bạn có thể biết từ có đi mua sắm các lớp trước, trò chuyện với bạn bè, rằng trong nhiều năm chúng tôi sử dụng một cái gì đó gọi là các thiết bị CS50. Đây là một thuật ngữ mô tả một công nghệ được gọi là máy ảo, mà là một phần của phần mềm của bạn người tiền nhiệm sẽ tải về off website của khóa học miễn phí. Họ cũng sẽ tải về một mảnh miễn phí mềm được gọi là một hypervisor, một cái gì đó gọi là như VMware, hoặc VirtualBox, hoặc số bất kỳ các công cụ khác, và trên họ Mac hoặc PC hoặc bất cứ máy tính mà họ đã có năm ngoái và trong những năm qua, họ sẽ nhấp đúp chuột vào một biểu tượng chạy phần mềm này gọi là hypervisor. Và sau đó bên trong của chương trình đó họ sẽ mở các thiết bị CS50. Và hiệu quả là cho dù một người tiền nhiệm của bạn đang chạy Mac OS hay Windows, người ấy sau đó sau đó đã có một cửa sổ mới của họ màn hình chạy môi trường CS50 của. Vì vậy, một máy ảo cho phép bạn chạy một hệ điều hành bên trong của người khác, và đó chính xác là những gì chúng tôi đã làm. Ở hầu hết các quá trình chúng tôi sử dụng một hệ điều hành được gọi là Linux, đặc biệt Ubuntu Linux, và điều này là một cách rất tốt đẹp trong những năm vừa qua đảm bảo rằng tất cả mọi người trong khóa học chỉ có cùng một môi trường. Và bạn có thể sử dụng bất kỳ loại máy tính mà bạn thực sự muốn. Trong số những nhược điểm, mặc dù, là nó giống như hai gigabyte để tải về điều này. Nó không nhất thiết phải làm việc siêu tốt trên những người có máy tính mà có lẽ chỉ đã có một buổi biểu diễn hay như vậy về RAM, hoặc không quá nhiều gigahertz tốc độ CPU, và như vậy trong năm nay, cho này và lý do khác, Chúng ta đã được chuyển với môi trường này. Cái gọi là CS50 IDE, đó là dựa trên phần mềm mã nguồn mở, và một nền tảng được hỗ trợ rằng một công ty gọi là Cloud9 hỗ trợ ở châu Âu, mà cho phép chúng ta có cơ bản rằng môi trường y như trong năm qua, nhưng trong cái gọi là đám mây. Vì vậy, những đám mây là gì? Bạn đã có thể nhấp biểu tượng của nó trên máy Mac hoặc máy PC của bạn. Các đám mây là gì? Yeah? A to hơn chút. Yeah. Nó chỉ là một loạt các máy tính ở những nơi khác mà lưu trữ dữ liệu và chạy phần mềm và các loại tương tự. Vì vậy, nó thực sự chỉ đến từ de jure mô tả [? có thể cho thuê?] máy tính mà sống ở nơi khác. Mà bạn, mình, không nhất thiết phải sở hữu. Vì vậy, khi dữ liệu của bạn, hoặc bạn các chương trình, đều ở trong đám mây, nó chỉ có nghĩa là nó về một người nào đó khác của các máy tính ở những nơi khác, và không, rất có thể, trên của bạn máy tính xách tay hoặc máy tính để bàn vật lý. Và đó là những gì CS50 IDE tại là. Từ đó về sau bạn sẽ đi đến một số URL mà sẽ giới thiệu bạn để, trong vấn đề thiết lập 1, sau này tuần, mà sẽ sau đó, khi đăng nhập, cung cấp cho bạn môi trường này. Và nhiều Scratch như có một vài tấm khác nhau có liên quan, do đó, hiện IDE CS50 của có chính xác điều đó. Ở phía bên tay trái trên cùng ở đây, bạn sẽ thấy một trình duyệt tập tin quen thuộc. Vì vậy, bất kỳ các tập tin mà bạn đưa vào môi trường này chỉ cần đi để được liệt kê ở đó. Tập tin và thư mục. Ngày đầu ngay tại đây, bạn sẽ nhìn thấy một nơi mà bạn thực sự có thể viết mã của bạn. Ban đầu trong C, sau này trong hạn trong PHP và JavaScript, và, có lẽ đối với thức dự án, Ruby hay Java hay Python hoặc bất kỳ số nào của ngôn ngữ là hỗ trợ trong môi trường này. Nó không phải ở tất cả các ràng buộc để CS50 cụ thể. Và sau đó ở góc dưới đây, đặc biệt là đối với những người thoải mái hơn, bạn có một cái gì đó được gọi là một cửa sổ terminal. Và cửa sổ thiết bị đầu cuối này cho phép bạn thực hiện bất kỳ lệnh mà bạn muốn trong môi trường điện toán đám mây này. Nó cho phép bạn cài đặt bất kỳ phần mềm bổ sung mà bạn muốn, vì bạn đã được gọi là root, administrator đặc quyền. Vì vậy, nói cách khác, mặc dù điều này cuối cùng được tổ chức trong các đám mây, và mặc dù chúng ta có đơn giản hóa nó đến mức độ nào theo mặc định, nghĩa là giới thiệu, nhờ Dan Armendáriz, và Dino, và Dan Bradley vào đội của CS50 qua qua nhiều tháng, một ít thoải mái chế độ mà giấu đi rất nhiều phiền nhiễu ban đầu khó hiểu. Tất cả mọi thứ tồn tại để đại diện cho một hệ thống máy tính điển hình mà bạn có thể sử dụng trong thế giới thực. Vì vậy, những gì hiện này nghĩa là tất cả, và những gì chúng ta có thể thực sự làm gì với nó? Hãy thực sự mất một peek tại một chương trình. Vì vậy, tôi sẽ mở ra môi trường thực tế ở đây, mà chỉ là chúng ta Chrome trình duyệt, mà có thể là Firefox, có thể là Internet Explorer, hoặc một số trình duyệt khác. Nó đầy đủ chiếu ở đây cho thời điểm này. Và tôi muốn thực sự trêu chọc ngoài những gì chương trình này được. Vì vậy, chúng ta hãy có một cái nhìn, bằng cách phóng to lên đầu, vào những gì tôi đã làm, và làm thế nào tôi đã ở đây. Vì vậy, đây là những chính xác dòng cùng của mã. Vì vậy, đây là tuyên bố, như bạn đã đề cập trước đó. Các chức năng mà nói xin chào. Các dấu ngoặc nhọn, trên dòng bốn dòng sáu, có lẽ là loại phong bì dòng để liên kết nó với bản chất của chương trình của tôi. Vì vậy, trên thực tế, chính từ khoá này, đó là lên có trên dòng ba, bạn có thể nghĩ về nó như tương đương về điều đó khi lá cờ màu xanh lá cây nhấp, chặn tại Scratch. Vì vậy, đó là tất cả chúng ta có ở đây, là khi lá cờ màu xanh lá cây nhấp, in, hoặc nói, Chào thế giới. Nhưng chúng ta hãy đoán, bây giờ, những gì đầu tiên, dòng phức tạp hơn này, là. Sharp bao gồm, mở góc cạnh khung, tiêu chuẩn I / O dot h, đóng khung góc cạnh. Những gì được rằng có lẽ làm, đặc biệt là nếu bạn đã lập trình trước trong một số ngôn ngữ khác. Yeah? Đung [Không nghe thấy] DAVID J. Malan: Yeah. Chính xác. Vì vậy, đây là đem lại cho bạn truy cập vào một thư viện, có thể nói, các chức năng. Và một thư viện hàm là chức năng mà người khác đã viết, hoặc gần đây hoặc lâu trước đây, vì vậy mà bạn không cần phải phát minh lại bánh xe. Ví dụ, chúng ta làm không phải biết, trong năm 2015, làm thế nào để viết code mà puts một ký tự trên màn hình của tôi. Một người nào đó đã tìm thấy ra với các chức năng printf vì vậy mà tôi có thể sắp xếp các trừu tượng đi từ đó, hoặc lớp trên đầu trang của mình mã, và bây giờ chỉ mất cho cấp mà bất kỳ chương trình tôi viết có thể in cái gì đó ra màn hình. Vì vậy, dòng đầu tiên này có trong bước một bao gồm cái gọi là tập tin tiêu đề cho các thư viện chuẩn. Vì vậy, xem, ngôn ngữ trong mà bây giờ chúng tôi đang làm việc có một thư viện chuẩn với nhiều chức năng. Printf là một trong số họ, và mà dòng mã đầu tiên có nghĩa là cung cấp cho tôi quyền truy cập những chức năng, vì vậy mà tôi không cần phải phát minh lại bánh xe đó. Bây giờ chúng ta hãy đi đến cửa sổ phía dưới và làm chính xác những gì tôi đã làm trước đây. Một thời gian trước đây, khi tôi còn lượn chớp nhoáng qua các mã, gõ nó ra lần đầu tiên, Tôi rất nhanh chóng đánh máy, làm hello. Những gì là tất cả về bạn sẽ đoán? Tôi đang làm gì thế? Yeah? Đừng bận tâm. Đó là OK. Yeah. Đung Biên dịch nó. DAVID J. Malan: Yeah. Nó đã được chỉ biên dịch. Phải không? Ngay cả nếu điều này là hoàn toàn xa lạ cho bạn, nó là tiếng Anh khá giống. Đó chắc chắn không phải là số không và những người thân, vì vậy tôi vẫn cần phải chạy nó thông qua cái gọi là chương trình, một trình biên dịch, đó là đi để lấy nó như là đầu vào và sản lượng sản xuất. Và ít nhất, bây giờ, trong môi trường Linux này, nhưng điều này không phải là điều kiện tiên quyết, đây chỉ là nơi chúng ta sẽ bắt đầu, bạn thường tương tác với hệ thống máy tính như thế này bởi một dòng lệnh để gọi là. Vì vậy, với một nhấp nháy kịp thời và bàn phím của bạn, và không quá nhiều chuột, và không quá nhiều cửa sổ và biểu tượng và menu, chứ không phải tất cả mọi thứ là văn bản. Và mặc dù điều này cảm thấy, lúc đầu Trong nháy mắt, có lẽ, như một bước lùi, nó thực sự là một nhiều hơn cách mạnh mẽ và biểu cảm kiểm soát một máy tính đặc biệt là khi bạn, chính mình, trở thành nhiều hơn thoải mái từ ít hơn. Nó sẽ cho phép bạn làm nhiều thứ hơn chỉ là những gì Microsoft hoặc Apple cho phép bạn làm với hệ điều hành đồ họa của họ. Vì vậy, khi tôi nhấn Enter, bây giờ, không có gì xảy ra thời gian này vì rõ ràng các chương trình hello là đến ngày. Và những gì đã được lệnh Tôi chạy sau đó? Dot giảm hello, và hello world. Bây giờ chúng ta hãy bước sao cho chỉ một khoảnh khắc. Nó chỉ ra rằng thực hiện chào chỉ là một cách đơn giản của việc biên soạn một chương trình. Hãy chỉ giới thiệu một phần của thuật ngữ, nhưng sau đó di chuyển đi từ nó, vì nó không tất cả những gì thú vị cho mục đích của ngày hôm nay. Trình biên dịch, chúng ta sẽ bắt đầu sử dụng được gọi là Clang, cho ngôn ngữ C. Và đây là một chương trình đó là chạy chỉ như chúng tôi đã làm tại các dòng lệnh đó. Và vì vậy nếu tôi muốn biên dịch một chương trình mà tôi đã viết trong một tập tin hello dot c, Tôi nghĩa là chỉ cần gõ vang chào c nhập. Điều buồn cười là, vì những lý do lịch sử, nếu tôi không xác định tên của chương trình mà tôi muốn đến đầu ra, nếu tôi không làm chỉ định một tên tập tin cho những số không và những người thân, rất kỳ lạ năm ước đã được thông qua trước nơi mà nó cảm thấy một loại câu trả lời tốt vào thời điểm đó, cũng cho phép chỉ là tùy tiện gọi Chương trình đầu tiên chúng tôi biên dịch một dấu chấm ra. A đến đầu tiên trong bảng chữ cái. Ra, nó là đầu ra. Vì vậy, chúng tôi sẽ gọi chương trình theo mặc định một dấu chấm ra. Và đó là tốt bởi vì nếu tôi muốn chạy chương trình trong văn bản này dựa môi trường, tôi chỉ cần gõ dot chém một dot ra nhập. Và nó sẽ chạy chính xác như trước. Vì vậy, chúng ta hãy xem đó thật nhanh. Vì vậy, nếu tôi quay lại với tôi mã nguồn trong CS50 IDE, và tôi thay vì làm điều này, kêu vang chào cot c nhập, thấy không có gì có thể xảy ra, nhưng hầu như luôn luôn môi trường Linux này, khi không có gì xấu có thể xảy ra, mà có nghĩa là một cái gì đó tốt thực sự xảy ra. Nếu bạn không nhìn thấy một lỗi tin nhắn, tất cả có lẽ là tốt. Và quả thực, nếu bây giờ tôi làm dot chém một dấu chấm ra vào, tôi đã chạy cùng một chương trình của tôi. Tôi vẫn còn có các chương trình hello từ trước đó bởi vì thực sự, nó sẽ đẹp hơn rất nhiều chỉ loại make thay vì ghi nhớ những câu thần chú của lệnh, nhưng chúng ta hãy xem làm thế nào chúng tôi có thể cải tiến này, dù sao. Vì vậy, đây là lệnh để biên dịch mã. Đây là lệnh để chạy các mã biên dịch sau đó. Làm thế nào tôi có thể chỉ định một tên tập tin? Vâng chúng ta hãy chỉ giới thiệu thêm một mảnh của thuật ngữ. Khi bạn đang ở đây văn bản dựa trên môi trường, bạn sẽ muốn chỉ định điều được gọi là đối số dòng lệnh. Mà chỉ là một cách nói, Nói cách khác tại dấu nhắc đó tinh chỉnh các hành vi của bất cứ điều gì chương trình bạn đang chạy. Vì vậy, đặc biệt là chương trình tôi chạy, bằng cách gõ tên kêu vang, là chương trình được gọi là Clang. Vì vậy, đây là hoặc các trường học cũ tương đương với nhấn đôi trên Microsoft Word hay biểu tượng của một số chương trình. Tôi đang thay vì chỉ cần gõ tên của nó, nhưng trong phiên bản này của lệnh, Sau đó tôi có dash o không gian xin chào xin chào dot gian c. Vì vậy, ngay cả khi bạn chưa bao giờ chơi trong thế giới này trước khi, chỉ mất một đoán những gì không dash o xin chào làm gì? Hoặc những gì nó nói vang để làm gì? Yeah. Đung [Không nghe thấy] DAVID J. Malan: Yeah. Nó chỉ đặt đầu ra của tập tin được xin chào thay vì sillier một dấu chấm ra. Và, thực sự, chúng ta hãy cố gắng này. Vì vậy, nếu bây giờ tôi làm, đầu tiên chúng ta hãy làm điều này, r m hello. Đó là loại bỏ. Và nó sẽ nói remove tập tin thường xuyên hello, mà là không cần thiết phức tạp, nhưng nó chỉ phương tiện nào bạn muốn xóa các tập tin, và tôi gõ y cho có. Và hãy chú ý, nếu bạn đã liếc nhìn đầu trái, nó đã biến mất từ ​​trên đó. Bây giờ tôi làm vang dash o, và Tôi sẽ đi trước và làm hello, trong tất cả các mũ, hello dot c. Bây giờ, nếu tôi làm dấu chấm dấu gạch chéo hello, những gì bạn mong đợi? Có lẽ đó là trường hợp nhạy cảm. Có lẽ nó không phải. Hãy xem. Không có tập tin hoặc thư mục. Và chúng ta có thể loại ăn gian bằng cách chỉ cần nhìn vào góc trên bên trái. Điều gì đã làm tôi rõ ràng lưu các chương trình như? Tất cả các mũ chào. Vì vậy, thực sự, đó là đi để làm cho một sự khác biệt. Vì vậy bây giờ hello thế giới đang trở lại. Bây giờ điều này là tất cả tốt và tốt, và tất cả đều rất tâm-tê liệt, để loại get sa lầy trong những chi tiết, nhưng sự hiểu biết họ tốt. Gõ ra những ngày càng câu thần chú dài sẽ không thể đặc biệt vui vẻ, vì vậy mọi người trên thế giới phát minh ra một chương trình khác, Cách đây vài năm, được gọi là thực hiện, đó khá đơn giản cho phép bạn gõ make, tên của chương trình bạn muốn làm, và làm cho là thông minh trong đó nó sẽ tìm trong thư mục hiện hành, hay còn gọi là thư mục, và nếu bạn có một tập tin hello dot c, đó là file nó sẽ biên dịch cho bạn vào một chương trình gọi là hello. Vì vậy, đó là một cách đơn giản hơn nhiều làm các lệnh bí ẩn hơn mà chúng ta đã làm trước đó. Và chúng tôi đã được cấu hình trước CS50 IDE biết mà nó phải làm dash o và một số cờ khác, hoặc đối số dòng lệnh, rằng chúng ta sẽ thấy trước khi dài. Nhưng chúng ta hãy bây giờ thực sự làm một cái gì đó thú vị hơn. Chỉ cần gõ ra thế giới hello tất cả thời gian không phải là tất cả những gì hấp dẫn. Vì vậy, hãy để tôi đi trước và thay đổi chương trình này và nói, xin chào David. Bây giờ tôi sẽ đi xuống đây. Tôi sẽ đi trước và làm làm hello. Và một lần nữa, bây giờ bạn đang thấy làm cho bạn thấy các con chuỗi các lệnh mà nó làm vì chúng ta đã cấu hình sẵn nó theo cách đó, nhưng chúng tôi không cần phải lo lắng cho doanh nghiệp nó đang làm gì khác hơn là dot biên dịch giảm hello, hello thế giới. Có chuyện gì vậy? Yeah. Đung [Không nghe thấy] DAVID J. Malan: Yes. Vì vậy, sai lầm noobie. Tôi nhận thấy điều này là siêu tinh tế, nhưng các dấu hoa thị ở đây, trong các tab, chỉ có nghĩa là bạn không lưu nó, và các trình duyệt và các chương trình khác làm điều này đôi khi. Vì vậy, kiểm soát s hoặc lệnh s nên lưu nó. Bây giờ hãy để tôi đi trước và chạy lại chương trình. Biên dịch lại. Đúng, vì vậy nó là một quá trình gồm nhiều bước. Không ai trong số đó là đặc biệt phức tạp, nhưng bất cứ lúc nào chúng ta thay đổi các tập tin, chúng ta cần phải thay đổi, dẫn tới số không và những người thân, và dấu chấm dấu gạch chéo hello. Wow. Vì vậy, đây là rất underwhelming rằng chúng tôi chỉ in ra này. Hãy làm mọi thứ một ít năng động hơn, bây giờ. Vâng nó quay ra, mà thích Scratch, C hỗ trợ biến. Và hóa ra nếu bạn muốn phải có một biến mà các cửa hàng, không phải là một số mặt hàng như chúng tôi thường đã làm với Scratch, nhưng cũng giống như một từ, hoặc một cụm từ, hoặc một cái tên, bạn có thể chỉ định một biến là kiểu string. Vì vậy, chúng ta sẽ thấy nhiều hơn những chỉ trong một khoảnh khắc, nhưng nó quay ra rằng C, và rất nhiều ngôn ngữ như nó, có loại rất cụ thể của biến. Nó không giống như đại số, nơi bạn có được một x, một y, và z và những người chỉ luôn số, trong một ngôn ngữ lập trình bạn có thể lưu trữ các số, bạn có thể lưu trữ các ký tự riêng lẻ, bạn có thể lưu trữ toàn bộ chữ, bạn có thể lưu trữ toàn bộ hình ảnh, toàn bộ các file âm thanh, và như thế. Vì vậy, chúng ta cần phải xác định những gì kiểu của biến của chúng tôi là. Và theo quy ước tôi sẽ gọi cho tôi s biến chỉ vì nó ngắn gọn, và s là viết tắt của chuỗi. Và sau đó tôi sẽ lưu trữ bên trong của biến này, chỉ thích với Scratch khi tôi sử dụng khối bộ, Tôi sẽ sử dụng Toán tử gán trong C, mà độc đáo đủ là bằng nhau ký, nhưng các dấu bằng thực hiện điều này. Nó di chuyển một cái gì đó từ bên phải vào phía bên tay trái của biểu thức. Vì vậy, những gì tôi đã làm, một điều rõ ràng dòng năm, là tôi đã khai báo một biến. Tôi đã nói với các máy tính, cho tôi bộ nhớ cho một biến, gọi nó là, và biết trước rằng tôi sẽ được đặt một chuỗi trong nó. Và một chuỗi chỉ là một chuỗi các ký tự. Đây là một từ hoặc một cụm từ, hoặc đoạn văn, nhưng đó là một chuỗi các ký tự. Nó không phải con số. Chuỗi những gì tôi có được đưa vào biến đó? Vâng, rõ ràng trích dẫn unquote, "Hannah". Bây giờ nhận thấy mô hình đó là mới nổi. Có một biểu hiện bên tay trái. Có một biểu hiện tay phải, ngăn cách bởi dấu bằng. Và chỉ mất một đoán, nếu dù sao cũng không quen thuộc, với những gì các dấu chấm phẩy là làm. Có gì đó có lẽ làm cho chúng ta? Yeah? Đung [Không nghe thấy] DAVID J. Malan: Yeah. Nó chỉ chấm dứt dòng. Phải không? Các máy tính muốn được thẳng thừng nói, theo nghĩa đen, phải làm gì. Cũng giống như bơ đậu phộng và thạch bánh sandwich dụ, nếu bạn không xác định chính xác những gì bạn có ý định, nó có thể được để lại bản án hoặc báo lỗi. Dấu chấm phẩy có nghĩa là, đó là nó cho lệnh này. Nó là siêu chính xác, và nó một điều rất dễ để lại tắt. Vì vậy, hiện nay chương trình này dường như không được hành xử khác đi cho đến khi tôi làm cho nó năng động hơn. Vì vậy, thay vì khó có thể của riêng tôi tên, hãy để tôi đặt một giá trị giữ chỗ. Và nó chỉ ra rằng, và tôi biết điều này từ khi đọc các tài liệu hướng dẫn, và sử dụng các chức năng trong nhiều năm qua, mà printf được thiết kế năng động. Bạn không cần phải biết trước những từ bạn muốn để đặt vào nó. Thay vào đó bạn có thể có một giữ chỗ, giống như trăm s, mà sẽ nói với các máy tính, đặt một chuỗi ở đây. Những chuỗi chúng ta muốn đặt ở đó? Will chỉ ra rằng giữa các ngoặc đơn, mà nhớ, phân chia ranh giới đầu vào cho một hàm, nếu bạn có dấu phẩy tách ra danh sách những thứ ở đây, chúng tôi thực sự vượt qua trong nhiều đầu vào cho một chức năng. Vì vậy, giống như một số Scratch khối, bạn có thể không đã chơi với họ cho dự án của bạn chưa hoặc ở tất cả, một số khối Scratch có hai đầu vào. Hai hộp màu trắng bạn có thể gõ số hoặc chữ vào. Vì vậy, để không C có chức năng như printf rằng có thể mất hai yếu tố đầu vào. Và một lần nữa, dấu phẩy này được phân loại chúng. Vì vậy, trong tiếng Anh, một lần nữa ngay cả khi bạn đã bao giờ được lập trình trước, bởi rằng logic printf là một chức năng, có hai đầu vào, một trong số đó là một giữ chỗ, những gì bạn sẽ hy vọng printf sẽ làm gì với nhập này? Nó sẽ nói lời chào Hannah, hy vọng. Vì vậy, để làm được điều này chúng ta cần phải lưu nó. Tôi sẽ để thu nhỏ. Tôi sẽ quay trở lại xuống đây và nói, làm cho chào nhập. Oh. Một cái gì đó sai, và thực sự này là khá áp đảo. Tôi có sáu dòng code và giống như 12 dòng lỗi. Vì vậy, mong muốn này. Vì vậy, những gì đang xảy ra ở đây? Vì vậy, các quy tắc tốt nhất của ngón tay cái ở đây, đặc biệt là khi bạn đang bắt đầu, không bị phân tâm bởi các công cụ ở phía dưới. Trong thực tế, tôi rất cố tình chỉ cuộn lên vì rất thường xuyên, một máy tính không phải tất cả mà tươi sáng của một thiết bị. Nó sẽ bị lẫn lộn. Nếu nó thấy một điều rằng nó không hiểu, nó có thể nhầm lẫn khác dòng mã là không chính xác, mặc dù họ hoàn toàn tốt đẹp. Vì vậy, bạn luôn muốn làm việc từ trên xuống thông qua các lỗi. Và phải thừa nhận rằng đây là siêu phức tạp tại thời điểm này. Lỗi, sử dụng không khai báo nhận dạng chuỗi. Tôi đã có nghĩa là tiêu chuẩn trong? Không, tôi có nghĩa là chuỗi. Và nó chỉ tay vào, có lẽ đó là một lỗi đánh máy. Loại giống như, kiểm tra chính tả trong một cách rất geeky, nhưng lý do ở đây, và bạn sẽ biết điều này chỉ bằng cách thực hành, là mà nó chỉ ra rằng chuỗi không tồn tại trong C. Trong thực tế, C là một ngôn ngữ đặc biệt cũ, và đó là mức rất thấp, và nó không nhiều tính năng mà bạn có thể đã trưởng thành với nếu bạn có, trên thực tế, lập trình trong Java, như một số bạn có, nhưng bạn có thể dạy cho nó những điều mới. Và quả thực, chúng tôi đã thực hiện CS50 này, mặc dù vào cuối học kỳ, tất cả các bánh xe đào tạo sẽ được đưa ra, những gì chúng ta làm trong những cặp vợ chồng đầu tiên của tuần ban đầu là chúng tôi cũng có bạn bao gồm CS50 dot h. Mà là một tập tin tiêu đề. Thêm vào đó trong tương lai. Đó là một tập tin có chứa các chức năng mà chúng tôi đã viết cho bạn. Và trong số những chức năng là chức năng để nhận được đầu vào từ người sử dụng, giống như dây đàn, và số, và số thực, và nhiều hơn nữa. Nhưng nó cũng có một vài phím tắt. Nó định nghĩa một Boolean như một kiểu dữ liệu. C không có đúng hay sai. Nhưng chúng tôi có thể cung cấp cho nó những khái niệm đúng hay sai theo cách của thư viện này. Và nó cũng không có một chuỗi xây dựng cho đến khi chúng tôi bao gồm các dòng này. Vì vậy, dòng mã này nói trình biên dịch, hey, Clang, nhìn trong tập tin này cho toàn bộ bó mã mà CS50 đã viết như vậy mà bất cứ ai sử dụng tập tin này có thể đưa cho các cấp các tính năng mà họ đã thêm. Vì vậy, bây giờ để tôi đi trước và xóa màn hình, và nếu tò mò Tôi chỉ nói rằng kiểm soát l mỗi lần để xóa màn hình, hoặc bạn có thể gõ rõ ràng. Tôi chỉ sẽ đi trước và bây giờ loại làm hello, và tất cả là tốt. Vẫn còn một đầu ra phức tạp, nhưng nó không phải là một thông điệp sai lầm. Bây giờ nếu tôi làm dot giảm hello, và như là một sang một bên, dấu chấm dấu gạch chéo là không quen thuộc với hầu hết. Nó chỉ có nghĩa là, dot phương tiện thư mục hiện hành. Vì vậy, nếu bạn đã từng sử dụng DOS, hoặc Linux hoặc Unix bạn có thể làm điều gì đó như cd dot dot, nơi dot dot nghĩa là đi ngược trong thời gian, hoặc đi thụt lùi, hoặc cao hơn trong thư mục của bạn. Dot chỉ có nghĩa là nhìn vào thư mục hiện hành. Tôi muốn xin chào, đó là quyền ở đây. Và quả thực, bây giờ nó nói xin chào Hannah. Và nếu tôi thay đổi nó một lần nữa Maria, biên tập lại nó sẽ làm cho hello, dot slash hello, chương trình tiếp tục thay đổi. Nhưng điều này vẫn còn một chương trình khá ngu ngốc. Nếu tôi muốn gửi chương trình này, hoặc đưa nó cho một người bạn, hay đưa cho Maria hay Hannah cho rằng vấn đề, đó là tốt. Tôi có thể tùy chỉnh nó cho cả hai người, nhưng nó sẽ không bao giờ phải năng động. Họ không thể thay đổi nó khi nó đã biên soạn xuống những số không và những người thân. Vì vậy, những gì chúng tôi đã làm một cái gì đó thông minh hơn? Nếu như, thay vì cứng mã hóa vào chương trình tên của người này, nếu chúng ta chỉ nhận được chuỗi theo nhu cầu? Vì vậy, nói cách khác, hãy để tôi làm điều này. Tôi sẽ phải biên dịch lại chương trình này. Và hãy để tôi phóng to ở phía dưới bây giờ. Hãy chào dot slash hello. Bây giờ không có gì đang xảy ra. Chúng ta có thể có được một tình nguyện viên nhanh chóng để làm một cái gì đó xảy ra? Nào lên. Tên bạn là gì? Pancho: Pancho. DAVID J. Malan: Pacho? Nào lên. Một khi bạn nhận được lên đây, đây là sẽ rất tượng, nhưng nó thú vị hơn hơn tôi gõ nó. Nếu bạn muốn đi trước và gõ của bạn tên, tôi đã thực hiện chương trình này chỉ dành cho bạn. Chỉ cần gõ tên của bạn. Nhập. Wonderful. Được rồi, cảm ơn bạn rất nhiều. Pancho: Cảm ơn bạn rất nhiều. DAVID J. Malan: OK. [Vỗ tay] Điều đó rất tốt bụng. Ở đây bạn đi. Chúng ta đã làm gì? Vì vậy, cuối cùng chúng ta, ít nhất, thực hiện chương trình này năng động. Bây giờ nó vẫn còn chắc chắn bởi thiết kế tượng, nhưng cuối cùng chúng tôi có khả năng bây giờ để viết mã trước, nhiều như các tác giả của printf, và sau đó tự động thích ứng dựa trên đầu vào chúng tôi trao, hoặc bởi các lập trình viên, hoặc bởi những con người thực sự tương tác với chương trình. Vì vậy, hãy cố gắng thực sự bây giờ để làm một số cấu trúc khác và xem nếu chúng ta không có thể làm cho các chương trình mình phức tạp hơn. Vì vậy, chúng ta hãy đi trước và thay vì một văn bản này từ đầu, Tôi sẽ đi vào ngày hôm nay mã nguồn, và tất cả điều này có sẵn trên các khóa học của trang web, và bạn có thể kéo và thả nó vào môi trường của riêng bạn đến thứ sáu một khi vấn đề tập 1 cho bạn hướng dẫn, hoặc bạn có thể làm điều đó tại dòng lệnh như tốt, nhưng hơn nữa đến trong p set 1. Hãy xem những gì trong chương trình này đây gọi là, bộ cộng dot c. Bây giờ tôi đã nhận xét nó, nhưng những gì mới? Thoạt nhìn, những dòng mã là hoàn toàn mới? Có lẽ là không cơ bản xa lạ bây giờ. Đung [Không nghe thấy] DAVID J. Malan: Yeah, vì vậy int x bằng được n. Chúng tôi chưa bao giờ thấy bất kỳ này trước đây, nhưng có lẽ là int các biểu tượng cho các loại biến, [? từ?] một số nguyên. Vì vậy, int cho số nguyên. Nó chỉ được nhiều hơn gọn gàng. x chỉ là tùy ý. x và y và z vẫn còn khá hợp lý cho số, nhưng nói chung chúng ta sẽ sử dụng từ một lần chương trình của chúng tôi trở nên phức tạp hơn. Nhận int, tất nhiên, nhiều như get string, có lẽ sẽ có được một int từ người sử dụng, và sau đó chúng ta sẽ làm điều tương tự với y. Và rõ ràng, mặc dù điều này dòng cuối cùng, 24, trông phức tạp hơn, nó sẽ nói số tiền này và đó là điều này khác. Và thông báo phần trăm i có thể biểu thị những gì? Vai trò gì phần trăm i dường như phục vụ? Nó chỉ là placeholders. Phải không? Phần trăm s đã cho chuỗi, phần trăm tôi là cho số nguyên. Có sẽ là phần trăm f cho giá trị điểm, trôi nổi chỉ là một số với một điểm thập phân. Nói cách khác, một số thực. Vì vậy, hãy thực sự biên dịch này chương trình thật nhanh và đừng làm cho bộ cộng. Lỗi chính. Tốt cơ hội. Vì vậy, ý ở đây, tất cả các thời gian này người dùng của tôi đặt tên cho tài khoản này được jharvard. Tôi đang ở trong CS50 IDE, aka IDE50. Và bây giờ trong màu xanh ở đây, là một đề cập đến, nhưng từ môi trường, của nơi tôi. Và trên thực tế, nếu tôi phóng to lên đến đỉnh ở đây, nhận thấy rằng tôi có một IDE50 và tôi thấy từ này, nếu bạn loại quay đầu sang một bên, không gian làm việc. Tóm lại, thực tế là Tôi đang nhìn thấy dấu ngã dấu gạch chéo không gian làm việc có nghĩa là trong văn bản này môi trường lệnh dựa, Tôi đang ở tương đương văn bản của này đồ họa thư mục ở đây. Vì vậy, khi tôi làm dấu chấm dấu gạch chéo bộ cộng, nó nói không có quy tắc để thực hiện mục tiêu cộng stop. Tôi không biết điều đó có nghĩa là, nhưng nó không tốt cho một số lý do. Không có tập tin hoặc thư mục thậm chí còn rõ ràng hơn. Nó ở đâu rồi? Dựa vào nơi tôi nhấp để mở các tập tin trước đó. Nơi nó có thể được? Đây có thể là trong nguồn một w, vào ngày thứ Tư và tôi có thể nhìn thấy nó, thực sự, nếu tôi mở mà lên. Có bộ cộng dot c, nhưng trong môi trường dựa trên văn bản này, một lần nữa, tôi phải siêu rõ ràng. Nếu tôi muốn thay đổi thư mục vào một trong những nguồn thứ tư, tôi cần phải gõ, cd không gian một trong những nguồn Thứ tư nhập và bây giờ thay đổi nhanh chóng của tôi để cho tôi một gợi ý trực quan mà Tôi nhiều nơi khác trong môi trường của tôi, nhưng bây giờ tôi có thể nào làm cho bộ cộng, có vẻ như để làm việc, dot giảm bộ cộng, cung cấp cho tôi một số nguyên. One. Hai. Tổng của một và hai là ba. Nhưng nếu tôi không hợp tác, chúng ta hãy xem những gì có được int nào. Hãy cho tôi một số nguyên. Không. Thử lại. ĐƯỢC. Fine. 50. 50. Được rồi. Vì vậy, cuối cùng nó hợp tác. Và đó là một số trong những chức năng mà các chức năng này có thể đã được xây dựng vào cho bạn. Vì vậy, bên trong việc thực hiện của nhận int, lập trình những gì xây dựng từ cuối tuần trước có lẽ là ở đó để buộc hành vi này của retry, thử lại, thử lại? Ừ, có lẽ một số loại vòng lặp. Nó sẽ trông cú pháp khác nhau từ khối Scratch của, nhưng đó là thực sự những gì bên trong các tập tin. Và trong một thời gian vài tuần chúng tôi sẽ thực sự nhìn vào thư viện CS50 như những gì bên trong, nhưng có một vòng lặp áp đặt chính xác điều đó. Hãy chơi một chút ngớ ngẩn trò chơi ở đây với tập tin này. Điều kiện không điểm c. Chúng tôi chỉ cần đi để thường bắt đầu đếm từ số không. Và tôi tiếp tục di chuyển qua một số công cụ ở đầu trang. Trong màu xanh ở đây, phân ranh giới với tất cả của các ngôi sao và các dấu gạch chéo, những người bạn của những người lập trình trước khi, đó là những gì? Tại sao chúng ta tiếp tục bỏ qua nó? Cái gì? Đung Đó là một nhận xét. DAVID J. Malan: Yeah. Nó chỉ là một nhận xét. Đây là một nhận xét cho con người để đọc, mà trong trường hợp của chúng tôi, cho chúng ta biết những gì tên của tập tin là, ai đã viết nó, và những gì nó làm, do đó bạn không có để đọc thông qua các mã để biết những tập tin này là tất cả về. Nó chỉ là một mô tả, nhưng chức năng đó là không thích hợp. Và tôi thậm chí có thể xóa nó khỏi tập tin của tôi và nó không có ảnh hưởng. Các dòng ngon ngọt là những đầu tiên hai ở đây, bây giờ. int void main là tương đương của chúng tôi khi lá cờ màu xanh lá cây nhấp, vì vậy chúng ta sẽ rời khỏi đó được cho ngày hôm nay, và chúng tôi sẽ trở lại, cuối cùng, như những gì int hiệu đang có, nhưng bây giờ, chú ý những gì tôi đã thực hiện ở đây cũng vậy, bạn cũng có thể, nếu bạn có một trong dòng nhận xét, nếu bạn có một suy nghĩ bạn muốn chia sẻ về một dòng mã cụ thể, ước trong C là để làm dấu gạch chéo gạch chéo, và sau đó một vài từ ngắn gọn, không phải là một câu hoàn chỉnh, nói chung không phải là một đoạn văn, mà chỉ giải thích cho bạn, hoặc bạn TF, hoặc độc giả khác hoặc đồng nghiệp, mã những gì bạn đang làm. Vì vậy, thay vì phải tìm kiếm tại đây và suy ra từ đường dây chín và 10, là những gì này làm, phù tám Tôi chỉ đưa ra một lời nhận xét để yêu cầu người dùng cho một số nguyên, sau đó tôi không phải suy nghĩ quá khó về những dòng chín và 10. Tôi chỉ biết rằng đó là những gì chung họ đang làm. Làm thế nào? Vâng, đây là dấu nhắc. Dưới đây là những nhận của int. Và dựa trên trước hành vi, nó có vẻ như get int là đủ thông minh để đảm bảo rằng những con người hợp tác và cung cấp cho nó một số nguyên. Nhưng bây giờ chúng ta thấy điều này. Và đây là gợi nhớ của Scratch. Tôi khẳng định rằng tôi là phân tích đầu vào của người dùng, nhưng hơi thiếu chính xác. Và điều này dường như trong C là như thế nào chúng ta bày tỏ một nếu người nào khác, một chi nhánh, một ngã ba đường, nhưng tôi nói hơi không chính xác. Các lỗi trong chương trình này là gì? Về tiếp tục trở lại? Yeah. Đung [Không nghe thấy] zero. DAVID J. Malan: Yeah. Vì vậy, nếu tôi gõ bằng không, chúng ta hãy xem xét chính xác là trường hợp trường hợp, hoặc góc, nếu bạn sẽ. Vì vậy, nếu tôi gõ trong số không, mà của khối là sẽ rõ ràng lấy nó? Nếu hoặc những gì khác? Các khác, và nó sẽ nói, bạn đã chọn một số âm. Và quả thực, bằng không không phải là nghĩa là tích cực hay tiêu cực, và do đó sẽ là sai lầm. Đó sẽ là một lỗi. Vậy làm thế nào chúng ta có thể khắc phục điều này? Một người nào đó đã không bao giờ được lập trình trước? Bạn có muốn-- Đung [Không nghe thấy] DAVID J. Malan: rút lại? Đung [Không nghe thấy] DAVID J. Malan: Oh, bạn có? Một người nào đó đã không bao giờ được lập trình trước. Muốn thử tay của bạn tại này, trong màu áo đỏ? Nào lên. Oh yeah, đi trên lên, nếu bạn không nhớ. Vì vậy, chưa bao giờ được lập trình trước, tên của bạn là gì? Lauren: Lauren. DAVID J. Malan: Lauren, tất cả các quyền. Vì vậy, khắc phục lỗi này cho chúng tôi. Bạn đã không nhìn thấy C, có lẽ, và có lẽ không có ngôn ngữ khác. Vì vậy, sửa chữa chương trình này cho chúng ta. Nice to meet ya. Không áp lực. Lauren: Yeah. DAVID J. Malan: Nhưng một lần nữa, nếu điều này canh bạc diễn ra theo đúng kế hoạch, takeaway đây sẽ được, chỉ một lần nữa, để bắt đầu để nhận mẫu và suy ra từ cú pháp hiện có làm thế nào khác bạn có thể thể hiện chính mình, không có ý định chơi chữ, để để nắm bắt một số kịch bản bổ sung. Vì vậy, chúng tôi đang nói gì khác nếu. printf, tốt. Và thông báo với CS50 IDE, và IDE frankly-- là viết tắt của Integrated Môi trường phát triển. Nó chỉ là một cách nói một chương trình giúp chương trình bạn. Nó không thân thiện với người sử dụng những thứ như khi bạn gõ một dấu ngoặc đơn, nó tự động cho bạn khác. Các giả định được rằng bạn đang cuối cùng sẽ muốn gõ đó, và nó cũng không nó với dấu ngoặc kép. Vì vậy, tôi thích dòng 23. 99% số đường có. Một người nào đó muốn kêu vang trong với một tip? Tôi nghe thấy dấu chấm phẩy từ khán giả. Tốt. Vì vậy, để hoàn thành đó. Và bây giờ, tôi chỉ có một ít sửng sốt với dòng 21. Làm thế nào để chúng tôi muốn bày tỏ điều này? Câu hỏi những gì chúng ta muốn để hỏi, bạn nghĩ sao? Vì vậy, trước đây, chúng tôi hỏi những câu hỏi, nếu n là lớn hơn không, làm được điều này. Khác, làm điều đó. Vì vậy, chúng ta cần phải chọn một câu hỏi để hỏi ở đây. Đung [Không nghe thấy] DAVID J. Malan: Tốt. Vì vậy, nếu n bằng số không. Tuyệt vời. Vì vậy, chúng ta hãy tạm dừng ở đây. Cảm ơn bạn rất nhiều vì đã bất chấp này. Hãy để tôi cung cấp cho bạn một chút cũng xứng đáng bóng căng thẳng, có lẽ có. Vì vậy, chúng tôi hầu như ở đó. Trong thực tế, Lauren, nếu bạn không tâm, hãy để tôi làm một tinh chỉnh ở đây, chỉ để phù hợp ngay cả với những gì chúng ta đã thấy trong Scratch, những gì Tôi muốn làm gì với dòng 21 và 24, chỉ một lần nữa dựa về cách chúng tôi đã làm điều này trong Scratch, có lẽ? Đung Di chuyển nó lên. DAVID J. Malan: Yeah, di chuyển nó lên. Vì vậy, các điều kiện khác, thứ ba, hoặc thứ tư, hay thứ năm, hoặc chi nhánh cuối cùng, thực sự nên đến sau, và đó chỉ là theo quy ước, chỉ bởi vì nếu bạn sẽ. Vì vậy, tôi cần phải thực hiện việc điều chỉnh này. Và tôi cần phải đặt của tôi ngoặc móc trở lại đây. Và bây giờ, chương trình này sẽ được biên dịch. Chúng tôi rất gần, nhưng có một lỗi rất, rất tinh tế. Hãy xem những gì sẽ xảy ra. Đầu tiên, hãy để tôi đi trước và thu nhỏ. Tôi sẽ đi trước và gõ làm cho tình trạng zero. Oh, tôi nói dối. Bây giờ các trình biên dịch là thực sự là khá thông minh. Và tôi thực sự không hiểu nó thông báo lỗi. Sử dụng các kết quả của một bài tập như một điều kiện không có dấu ngoặc, rõ ràng là xấu. Nhưng điều đó có nghĩa gì? Vâng một lần nữa, tìm kiếm mô hình trong code mà chúng ta đã thấy trước đây, là những gì dòng 17 thực sự làm, mặc dù Lauren dành hơi nếu không? Yeah. Đung [Không nghe thấy] DAVID J. Malan: Yeah. Vì vậy, hãy nhớ các dấu bằng, rõ ràng như chúng ta đã sử dụng nó trước, là không công bằng. Phân công của nó, từ phải sang trái. Vì vậy, dòng 17 tại thời điểm này là một điều kiện, và nó thực thi mã bên trong dấu ngoặc đơn, nhưng khi mã thực thi, những gì đang xảy ra với giá trị của số không? Điều gì đang xảy ra với các giá trị của n? Trở thành zero. Vì vậy, nếu n đang trở thành số không, và một lần nữa, như mỗi cuối tuần, chúng ta thường nói không mà là sai lầm và một là sự thật, hoặc có chỉ là một và không là số không. Vì vậy, đúng và sai, một và 0. Nếu n là số dòng 17 đã được cho giá trị 0, là số không đúng? Không. Theo định nghĩa, không sai. Đó là ước chúng tôi sẽ bám vào di chuyển về phía trước. Vì vậy, sẽ dòng 18, 19, và 20 bao giờ áp dụng với doanh nghiệp, hợp lý? Họ có thể không. Vì vậy, chúng tôi hỏi những câu hỏi nhưng không hoàn toàn chính xác, và bạn sẽ không biết điều này trừ khi bạn đã nhìn thấy nó, các giải pháp trong C là khi bạn muốn bày tỏ bình đẳng, bạn nói equals bằng. Vì vậy, dấu bằng đã được sử dụng hết bằng cách chuyển nhượng, từ phải sang trái. Bằng bằng phương tiện bằng. Và nếu bạn thực sự muốn tâm trí của bạn bị bẻ cong, trong JavaScript và PHP, có bằng tương đương với bằng, mà có nghĩa là một cái gì đó khác hoàn toàn, nhưng chúng tôi sẽ nhận được để mà chẳng bao lâu. Vì vậy, đây là một sửa chữa đơn giản, nhưng nhận ra siêu dễ dàng để làm cho sai lầm này, và sau đó tự hỏi và đấu tranh phút, nếu không phải là một giờ, tại sao là mã của tôi không thực hiện như tôi mong muốn? Đó là bởi vì bạn không biết nó chính xác những gì bạn muốn nói. Vì vậy, đó là gần như hoàn hảo, và nó là tuyệt vời mà chúng tôi tình cờ gặp hai ít những điều bởi vì bây giờ nếu chúng ta sửa chữa chúng, và tôi làm cho tình trạng không dot giảm tình trạng không, Tôi muốn xin một số nguyên. Hãy xem. Không. Nó sẽ buộc tôi phải làm điều đó. Vì vậy, 42. Tôi đã chọn một số dương. Vì vậy, bây giờ làm thế nào để tôi chứng minh Chương trình này có đúng không? Nếu bạn là một nhà toán học, bạn có thể không thực sự chứng minh điều này bằng cách thử và sai, phải không? Bạn có thể không chỉ chứng minh bằng Ví dụ, nhưng ít nhất như một lập trình chúng tôi không sẽ cố gắng để chứng minh cho doanh nghiệp rằng đây thực sự chính xác, nhưng tôi nên có lẽ kiểm tra một số trường hợp người đại diện. Tôi đã thử nghiệm 42. Tôi có thể kiểm tra 43. Tôi có thể kiểm tra 44. Kiểm tra 45. Phải không? Nhưng tôi có thể làm điều này trong một thời gian rất dài. Điều gì sẽ là một số chi tiết trường hợp thú vị để thử? Đung [Không nghe thấy] zero. DAVID J. Malan: Vì vậy, bằng không. Chắc chắn. Và tốt, chúng tôi đã có thời gian này, nhờ mã mới của Lauren. Một trường hợp tốt để thử là gì? Đung một tiêu cực. DAVID J. Malan: một Negative, và có lẽ một cái gì đó lớn hơn một chút, như vậy có lẽ tiêu cực 42, nhưng nói chung, khi thử nghiệm các chương trình của bạn di chuyển về phía trước, bạn sẽ muốn suy nghĩ cho chính mình, giống như những gì là những trường hợp khác nhau cơ bản. Và tôi dám nói một trường hợp tiêu cực, một trường hợp dương tính, và một trường hợp không khá nhiều đạn này ra ngoài. Chúng ta hãy nhìn vào một biến thể của mặc dù điều này. Điều kiện một. Đây là một giải pháp chính xác ở đây, do đó bạn sẽ thấy hai và trực tuyến, nếu bạn đi bộ qua walkthrough, sẽ thường tăng các bậc thang cho đến khi chúng tôi có được chính xác cách tiếp cận đúng. Điều gì nếu chúng tôi muốn hỏi hai câu hỏi cùng một lúc? Hãy để tôi mở ra để thay thế. Non-switch, vì những lý do chúng ta sẽ thấy một thời điểm khác. Có gì mới cú pháp ở đây? Tôi hiện đang chơi một trò chơi nơi mà máy tính là nói tôi, cho tôi một số nguyên từ một đến 10, và sau đó tôi đánh giá đầu vào của người dùng. Trong tiếng Anh, dựa trên mã bạn nhìn thấy ở đây trong xanh, những gì được chương trình này đang làm gì? Đung [Không nghe thấy] chọn một số lớn hay nhỏ. DAVID J. Malan: Yeah. Nó chỉ xét xử xem Tôi chọn một lớn, hoặc trung bình, hoặc số lượng nhỏ dựa trên rất định nghĩa độc đoán của nhỏ, trung bình, và lớn ở đây, nhưng thông báo cú pháp đó mới là điều này. Có không ít hơn int hoặc bằng đăng nhập, hoặc lớn hơn hay bằng, đang ở đâu trong khác, mà bạn có thể diễn tả trong như Microsoft Word. Vì vậy, trong một ngôn ngữ lập trình bạn thường chỉ cần làm hai nhân vật, một sau khi khác. Và những gì hiện này có lẽ đại diện, dấu và ký hiệu. Đung [Không nghe thấy] DAVID J. Malan: Yeah. Nó chỉ có nghĩa và bởi vì nó chỉ ra rằng các tác giả của C sử dụng một ký hiệu duy nhất, mà bạn có thể nghĩ sẽ là hoàn hảo cho các khái niệm của và, đã được sử dụng hết, dấu và ký hiệu như vậy thực sự nắm bắt được những trường hợp chúng tôi thực sự muốn. Vì vậy, bây giờ chúng ta vấp ngã trên hai điều. Hãy để tôi đi trước và mở một. Cái gì mà là một chút đáng lo ngại. Thiếu chính xác dot c. Hãy để tôi giới thiệu hai điều ở đây. Một, thông báo rằng chúng tôi có thể làm toán học, như chỉ là trước khi chúng tôi đã làm cộng của hai số, x và y. Được chương trình này dường như đang làm gì? Tôi đã không nhận xét được chưa, và tôi đã giới thiệu phần trăm f, nhưng tôi nhanh chóng nói trước đó phần trăm f có nghĩa là dấu chấm động giá trị, đó là số thực. Một cái gì đó với một số thập phân điểm, đó không phải là một số nguyên. Bạn nghĩ gì về chương trình này là cố gắng cho tôi thấy trên màn hình? Yeah? Đung Kết quả của một trong hơn 10. DAVID J. Malan: Yeah. Kết quả của một chia cho 10 là gì. Đúng, bởi vì tất cả các bạn có thể lớn lên và biết rằng một trong hơn 10 là gì? Yeah, nó chỉ là 1/10 hoặc 0.1. Phải không? Vì vậy, chúng ta hãy xem những gì là thực sự. Vì vậy, hãy để tôi đi trước và lưu này. Hãy để tôi đi xuống đây. Hãy thiếu chính xác dấu chấm dấu gạch chéo không chính xác, và thông báo, quá, trong một môi trường Linux, bạn không phải loại ra thiếu chính xác và mất tất cả các ngày dài. Đó là nói chung, nếu bạn nhấn Tab, nó sẽ kết thúc suy nghĩ của bạn cho bạn, dựa trên các từ được có sẵn trong thư mục hiện hành. ĐƯỢC. Vì vậy, bạn đã đúng. Một chia cho 10, trong thực tế, 0.1. Nhưng tôi là một chút tò mò. Và hóa ra printf hỗ trợ một số tính năng nhờ đó mà bạn có thể chỉ định nhiều hơn số mặc định của điểm thập phân. Vì vậy, nếu tôi muốn nhìn thấy 10 chữ số thập phân điểm tôi có thể làm phần trăm, cho biểu tượng giữ chỗ, chấm 10 cho, cho tôi 10 điểm thập phân, và sau đó vẫn còn dấu chấm động giá trị, và, như một sang một bên, backslash n này là gì dường như chúng tôi tiếp tục sử dụng? Hóa ra đó là một biểu tượng cho một dòng mới. Đó là cách rất rõ ràng nói đến máy tính, di chuyển con trỏ đến tiếp theo dòng sau khi bạn đã hoàn tất. Và chúng ta sẽ thấy những gì xảy ra khi chúng ta không làm điều đó. Hãy để tôi làm biên dịch lại thiếu chính xác. Bây giờ chấm giảm sự thiếu chính xác. ĐƯỢC. Vẫn đúng. Một chia cho 10. Bây giờ tôi nhận được một chút tò mò, mặc dù. Điều gì nếu tôi nhìn 20 chữ số thập phân chỉ ra, biên dịch lại, chạy lại, và như là một dành cho tốc độ, bạn cũng có thể sử dụng lên và xuống mũi tên để di chuyển qua lịch sử của bạn, vì vậy bạn không cần phải giữ gõ lại các lệnh này, nhập. Huh. Tôi đã không biết rằng ở trường lớp. Được rồi, vậy cho tôi xem như 29 địa điểm ra ngoài. Có lẽ nó chỉ là một sự may mắn. Có thể máy tính của tôi là hành động kỳ lạ. Đó không phải là một điều, phải không? Nó đang làm một cái gì đó deterministically. Vì vậy, làm cho sự thiếu chính xác. OK, đó là điều sai lầm. Vì vậy, những gì đang xảy ra? Vì vậy, rõ ràng của bạn giáo viên đã được nói dối cho bạn tất cả các thời gian này cho lý do mà chúng ta sẽ thấy trước khi dài. Nhưng chúng ta hãy kết thúc bằng một chương trình khác. Đây là một chương trình nhỏ ai đó đã viết một số năm trước đây, và nó thực sự là một phần của một cuộc thi. Không ai thực sự viết code như thế này, và nếu bạn làm thế, đây là phong cách là một vấn đề. Nhưng người làm điều này cho quyền khoe khoang. Để viết khó hiểu nhất tìm chương trình đó dù sao cũng làm một cái gì đó thú vị. Và lưu ý tôi nghĩ chúng ta sẽ để lại trên ngày hôm nay, trước khi Colton lượt chúng ta ra khỏi đây, là để chạy chương trình này, trong đó, thậm chí chỉ trong sử dụng C trong này dựa text- môi trường, cho chúng ta này. Chết tiệt. [Cười] Stand by. [Không nghe thấy] c dash l m. Bạn sẽ nhìn thấy những phép thuật câu thần chú mà chúng ta sẽ thấy trước khi dài. [Không nghe thấy] Tất cả các quyền. Và bây giờ bạn có thể thậm chí làm những việc như thế này. Đó là nó. Đối với CS50 chúng tôi, sẽ nhìn thấy bạn vào thứ sáu. [MUSIC CHƠI] [Vỗ tay]