[MUSIC CHƠI] SPEAKER 1: Đây là CS50 và đây là khởi đầu của tuần thứ hai. Vì vậy, chúng ta hãy nhảy ngay vào một cái gì đó đó là lỗi, vậy để nói chuyện. Vì vậy, ở đây là CS50 IDE và tôi đã kéo lên trước này screen-- chết tiệt nó. Spoiler cảnh báo. Được rồi. Tôi đã kéo lên màn hình này ở đây, trong đó có một chương trình rất đơn giản. Nếu chúng ta di chuyển xuống, nhất điều này chỉ là ý kiến, nhưng ở đây trong dòng 13 thông qua 17 chúng tôi có một chương trình. Đó là cú pháp hợp lệ, có nghĩa là nếu Tôi biên dịch nó, nó sẽ biên dịch và chạy, nhưng đó là lỗi. Chương trình này tuyên bố trong các ý kiến lên hàng đầu mà nó nên in 10 sao, nhưng nó không. Và dựa trên kinh nghiệm của bạn, hoặc sớm để được trải nghiệm với C, có thể bạn một cách logic phân biệt tại sao điều này, trên thực tế, có lỗi? Yeah? Đung Nó đi từ số không đến 10. Đó là 11 lần lặp lại. SPEAKER 1: Yeah. Vì vậy, nó sẽ từ con số không up qua và bằng 10, trong đó tất nhiên là 11 lần lặp lại. Vì vậy, nó sẽ in ấn, thực sự, 11 sao. Vì vậy, quy ước khoa học máy tính trong hầu hết các ngôn ngữ lập trình là, thực sự, chỉ để bắt đầu đếm từ số không, nhưng tính đến nhưng không thông qua giá trị mà bạn thực sự quan tâm. Bây giờ, đây là một điều mà mất một ít được sử dụng để và thậm chí Scratch, được thiết kế như nó là cho người không lập trình hoặc không máy tính các nhà khoa học và cho trẻ em phần lớn, được thiết kế để có bạn bắt đầu đếm thường tại một. Và đó là tốt. Bạn hoàn toàn có thể bắt đầu đếm tại một nếu đó là thoải mái hơn. Và đếm đến và thông qua 10, nhưng bạn sẽ nhận ra đặc biệt trong tuần này và xa hơn nữa mà chỉ cần như vậy nhiều thứ trong lập trình giả định rằng 0 là người đầu tiên chữ số mà bạn đếm, rằng bạn sẽ tìm thấy nó dễ dàng hơn chỉ để có được thành thói quen này của khởi đầu từ số không và đếm lên đến giá trị bạn quan tâm ngay bây giờ từ có được đi. Vì vậy, mà đã cố định đó. Chúng tôi đã thay đổi ít hơn hoặc bằng đến chỉ ít hơn. Chúng ta hãy nhìn vào một ví dụ thứ hai ở đây. Vì vậy, chương trình này quá tuyên bố trong của nó Các bình luận lên hàng đầu mà nó nên in mười sao, nhưng nó không. Lỗi ở đây là gì? Vì vậy, what-- và xin lỗi, hãy làm rõ. 10 ngôi sao. Một trong mỗi dòng, nhưng nó không. Vì vậy, trên thực tế, hãy để tôi đi trước và biên dịch này bởi vì nó là một chút ít rõ ràng dựa trên mô tả đó. Hãy để tôi đi vào thư mục mã nguồn của chúng tôi. Hãy buggy một dấu chấm dấu gạch chéo, một lỗi. OK, tôi thấy 11 ngôi sao mà vẫn còn có vấn đề, nhưng họ cũng tất cả đang ở trong một dòng. Vấn đề ở đây là gì? Yeah. Đung [không nghe được]. SPEAKER 1: Yeah. Vì vậy, đây là một sự tinh tế mà bạn có thể nhớ lại tôi làm đề cập ngắn gọn về. Mặc dù tất cả mọi thứ trông đẹp, và nó độc đáo thụt vào, và nó loại trông giống như Scratch- trong đó dòng 16 và 17 là, thực sự, thụt vào dưới đó cho vòng lặp. Đó là phi vật chất. Các máy tính không biết hoặc nhìn thấy không gian màu trắng. Không gian màu trắng là chỉ cho chúng tôi con người, phong cách. Các máy tính không biết khi nào bạn có dấu ngoặc nhọn, mà thực sự đuối, khắc phục vấn đề này. Vì vậy, nếu chúng ta thực sự đã đi vào và đặt một cách rõ ràng trong các dấu ngoặc nhọn rằng sẽ khắc phục vấn đề này bằng cách làm cho rõ ràng để trình biên dịch mà tôi thực sự muốn thực hiện Hai dòng code một lần nữa, và một lần nữa, và một lần nữa. Nhưng lời giải thích cơ bản là những gì? Phải không? Chúng ta không cần đúng xoăn niềng răng tất cả các thời gian, mặc dù nó có thể là tốt nhất thực hành để có được thành thói quen mà anyway mặc dù nó thêm hai ký tự để mã của bạn. tại sao? Đung [Không nghe thấy]? SPEAKER 1: Yeah vì vậy đó là một giải pháp hoàn toàn. Phải không? Đặc biệt là nếu ở cái nhìn đầu tiên bạn làm không thực sự đánh giá cao những gì đang xảy ra. Vâng, chắc chắn chúng ta có thể chỉ cần làm hai việc cùng một lúc và chỉ cần tránh những vấn đề hoàn toàn. Và đó là tốt, nhưng bây giờ, cho mục đích của ngày hôm nay, những gì là lời giải thích cho những lỗi? Tại sao tất cả những ngôi sao trên một dòng? Yeah? Đung Có vẻ như rằng nếu bạn có một dòng mã, bạn có thể làm điều đó mà không có những người. SPEAKER 1: Chính xác. Đây chỉ là một quy ước của con người. Con người nhận ra rằng đó là một ít gây phiền nhiễu hoặc tẻ nhạt phải đặt dấu ngoặc nhọn tất cả của thời gian, nếu tất cả các bạn muốn làm là thực thi một dòng mã. Vì vậy, con người quyết định số thời gian trước đây rằng đó là tốt. Nếu bạn muốn đặt tất cả các vòng lặp của bạn trên chỉ là một trong những dòng như thế này, đó là tốt với các đơn dấu chấm phẩy ở cuối. Nhưng bạn chỉ có thể làm một ví dụ dòng mà không có dấu ngoặc nhọn. Vì vậy, khi phong cách CS50 dẫn như sẽ chỉ cho bạn, bạn sẽ thấy rằng thường nó là thói quen tốt để có được vào điều này cho đến khi bạn đi lạc khá thoải mái từ các loại ước và làm việc của riêng bạn. Vì vậy, miễn là bạn đang tự phù hợp. Và chúng ta sẽ nói thêm về phong cách một chút sau ngày hôm nay. Vì vậy, hãy để tôi mở ra một chương trình khác. Tất nhiên, chúng ta nên sửa chữa rằng 10 là tốt. Hãy để tôi đi trước và viết một thực Chương trình nhanh chóng mà tôi sẽ gọi, hãy nói, vòng chấm C. Vì vậy, vòng lặp chấm C. Và trong vòng dot C tôi sẽ có, bao gồm các tiêu chuẩn I / O dot H int void main. Và bây giờ chúng ta chỉ cần làm, thực sự, một vòng lặp. Vì vậy, 4 int tôi được không. Tôi là ít hơn, nói, 50. Tôi cộng, cộng. Và sau đó ở đây chúng ta hãy đi trước và làm in F. Và sau đó tôi muốn in Tôi và một dòng mới, dấu chấm phẩy. Và điều này sẽ in tất cả các số từ số không đến 50? Một vài đầu gật đầu. Một vài nos. Các lỗi đã được những gì? Những sai lầm dễ dàng tôi làm gì? Yeah. Đung [không nghe được]. SPEAKER 1: Yeah. Vì vậy, mặc dù có vẻ như thế này là những gì tôi dự định, nhớ lại rằng tôi cũng là chỉ một ký tự ASCII. Vì vậy, nếu tôi nói, print "I." Đó là nghĩa đen đi in I. Vì vậy, nếu tôi muốn cắm trong một placeholder giá trị tôi thực sự cần phải làm điều này và sau đó plug-trong giá trị của tôi tự động. Nếu không, tôi chỉ cần đi để nhận được 50 của tôi trên màn hình. Vì vậy, hãy để tôi đi trước và làm cho vòng lặp này, chạy nó, và, thật ra, chúng tôi có tất cả các con đường lên đến 49. Và nếu tôi di chuyển trở lại trong thời gian tôi thấy số không ở đầu. Vâng, những gì nếu tôi loại vít lên? Nếu tôi làm điều này? Chỉ vì tôi không nghĩ đến. Chương trình này là gì. Sau khi tái biên dịch và chạy, sẽ làm một cách hợp lý? Đung Không có gì. SPEAKER 1: Không có gì. Tại sao vậy? Đung tôi được thiết kế cho không. Vì vậy, điều kiện là sai. SPEAKER 1: Yeah, chính xác. Tất cả các mã này là chính xác, cú pháp. Điều này sẽ biên dịch, điều này mã sẽ chạy, nhưng nó không phải sẽ làm bất cứ điều gì hữu ích vì tôi khởi Tôi về không. Sau đó chúng tôi kiểm tra, là tôi lớn hơn 50? Rõ ràng, không có, nó không phải. Vì vậy, các vòng lặp không bao giờ thực hiện ở tất cả. Nếu chúng ta làm điều gì đó nhiều hơn một chút liều lĩnh? Vì vậy, nếu chúng ta làm như int tôi được không. Và bây giờ hãy để tôi sử dụng trong khi loop, đó là điều kiện khác. Và khi tôi nói, trong khi tôi lớn hơn hoặc bằng số không, và sau đó ở đây tôi đi trước và lưu các tập tin, làm cho vòng lặp. Và tôi về để chạy nó. Tôi sẽ làm gì để thấy điều này thời gian với một vòng lặp trong khi? Yeah. Đung Một vòng lặp vô hạn? SPEAKER 1: Một vòng lặp vô hạn? Có, và tại sao? Đung Bởi vì nó luôn luôn bằng không. SPEAKER 1: Yeah. Vì vậy, tôi được khởi tạo như bằng không. Tất nhiên tôi là luôn luôn lớn hơn hoặc bằng 0 như một kết quả. Vì vậy, tôi chỉ cần đi tới thấy điều này vô cùng. Và bây giờ, điều này đã đưa ra một lần hoặc hai lần để đứng đầu của khóa học. Điều gì xảy ra khi bạn có một vòng lặp vô hạn? Đung kiểm soát C. SPEAKER 1: Yeah. Vì vậy, kiểm soát C cuối cùng sẽ trả lời. Thật không may, chúng tôi đã in ra hàng triệu và hàng triệu zero đã và do đó, các máy tính có loại đã đi trước tôi. Vì vậy, nó sẽ bỏ qua cho tôi một chút. Nhưng nếu bạn chỉ cần nhấn Control C một vài lần trên máy Mac hoặc PC bàn phím của bạn, cuối cùng nó nên, thực sự, chấm dứt. Và nếu không, chúng tôi sẽ cho bạn một số kỹ thuật trước khi dài nơi bạn thực sự có thể buộc phải giết các chương trình, giống như trong Windows và Mac OS, nếu cần thiết. Nhưng chúng ta hãy thử cái gì khác. Hãy thực sự tăng I. Liệu này vẫn sẽ là vô hạn? Hãy để tôi chạy này. Và bây giờ bạn có thể loại xem những gì đang xảy ra. Điều này cũng là một vòng lặp vô hạn. Nhưng đây là một chút của một câu hỏi trick. Điều này sẽ in số mãi mãi? Đung số SPEAKER 1: No. Tại sao? Tôi nghe một số nos ở đây. Someone-- Yeah. Đung Bạn không có đủ bit để thực sự tiếp tục đi. SPEAKER 1: Tất cả các quyền. Vì vậy, tôi không có đủ bit để tiếp tục đi. Vì vậy, những gì sẽ xảy ra? Nó chỉ cần đi để ngăn chặn? Đung Tại một số điểm nó sẽ đóng the-- SPEAKER 1: Nó sẽ đóng xuống vòng lặp, nhưng tại sao? Chuyện gì đang xảy ra ở rất cuối ranh giới của nó? Yeah? Đung Nó sẽ chu kỳ trở về con số âm. SPEAKER 1: Để số âm, hoặc nếu chúng ta chỉ cần điều trị tích cực, bằng không ít nhất. Vì vậy, có, hoàn toàn. Nhớ lại rằng chúng ta đã nhìn thấy lần cuối cùng nếu bạn tăng bit của bạn là quá nhiều lần, và bạn có mũi tràn năng lực của int của bạn hoặc bất cứ kiểu dữ liệu là, bạn đi để bọc xung quanh, có lẽ, hai số âm. Hoặc nếu bạn đã xác định rằng bạn phạm vi chỉ nên được tích cực, mà bạn có thể làm, nhưng chúng tôi đã không nhìn thấy điều đó chưa, bạn có thể kết thúc ít nhất lại không. Mặc dù, thực sự có. Trong trường hợp này, tiêu cực số, trong trường hợp này các vòng lặp là sẽ chấm dứt bởi vì tôi không phải là, trên thực tế, lớn hơn hoặc bằng bằng không, nếu nó là tiêu cực. Vì vậy, thật không may, như thế nào dài, chúng ta sẽ phải chờ đợi? Ngay bây giờ, chúng tôi đang lên đến những gì, 2.000.000-ish? Chúng tôi giống như 2 tỷ, chúng ta sẽ phải chờ đợi cho đến khi chúng ta thực sự có thể nhìn thấy các triệu chứng này. Nhưng chúng ta có thể nhìn thấy nó nhanh hơn một chút, maybe-- hãy xem liệu chúng ta có thể làm gián đoạn. Thôi nào. Ngay cả các trình đơn được xuất hiện từ từ. Được rồi. Vì vậy, chúng tôi sẽ trở lại mà chẳng bao lâu. Đó là một tốt time-- chết tiệt, con chó. Đó là một thời điểm tốt cho một số thông báo. Vì vậy, nếu bạn có thể thích tham gia vào các YHack, mà là một sự kiện được được tài trợ bởi bạn bè của chúng tôi tại Yale. Và, trên thực tế, một số quá trình của TF tại Yale là tham gia với điều này. YHack là một quốc tế hack-a-thon tổ chức bởi tổ chức và tại Yale, quy tụ 1.500 như tin tặc có đầu óc sáng tạo và tất cả trên toàn thế giới. Nếu đây là quan tâm, hãy xem ở đây. Nếu điều này là quá ngắn gọn trên màn hình, hãy nhìn vào slide hiện nay cho các URL cho yhack.org. Vì vậy, cũng có một vài thông báo nhanh chóng. Vì vậy, chính thức phần sẽ bắt đầu tuần tới ở đây và New Haven. Hãy nhớ, bạn sẽ nhận được một email sau cuối tuần này nhiều khả năng nhất. Phải mất một thời gian dài cho CS50 phần, cho tất cả những người trong lớp và tất cả mọi người di chuyển xung quanh. Và tất cả các nghiên cứu sinh giảng dạy ' lịch thi đấu được cũng vẫn củng cố, nhưng hãy chờ đợi cho một email và nếu cần thiết được, bạn có thể lại có phần sau. Study.cs50.net. Vì vậy, ngay cả khi bạn là một người tham dự không đổi ở phần, nhận ra rằng hầu như tất cả các nguồn lực chúng tôi sử dụng trong các phần được công bố công khai tại CS50 Học tại URL này ở đây. Vì vậy, nếu bạn muốn bao giờ muốn tái xét vật liệu từ phần, hoặc đọc trước, hoặc bạn không thể làm cho nó một số tuần, nhận ra rằng slide mẫu, và các vấn đề, và định nghĩa, và hơn nữa là tất cả đó là tốt. Giờ làm việc tiếp tục ngày hôm nay, và ngày mai, và thứ tư, và thứ năm kiểm tra quá trình của website cho lịch trình. Và cũng có thể, doanh nghiệp tung ra hôm nay là CS50 Thảo luận. Vì vậy, nếu và khi bạn có câu hỏi cho nhau hoặc cho nhân viên của khóa học, và nói chung là đang làm việc trên một số bộ vấn đề, nhận ra rằng bạn không nhất thiết phải phải quay sang những người bạn bên cạnh. Nếu không có ai ở đó, bạn có thể tiếp cận với chúng tôi và bạn cùng lớp trực tuyến qua CS50 Thảo luận. Vì vậy, đây là một cuộc thảo luận hội đồng quản trị cho khóa học, và nhận ra rằng đây có lẽ là tốt nhất đặt để bắt đầu khi bạn có câu hỏi khi ra ngoài giờ hành chính nói riêng. Bữa ăn trưa sẽ bắt đầu trong tuần này quá. Tại Fire và Ice [Không nghe thấy] ở New Haven. Hãy nhìn vào các khóa học của website để đặt chỗ. Lần đầu tiên đến, đầu tiên phục vụ cho điều đó. Nếu bạn không nhận được trong tuần này chúng tôi sẽ làm hầu hết mọi những thứ Sáu trong nhiệm kỳ này. OK, và bây giờ một lời về phân loại. Đặc biệt là khi chúng tôi nhập vấn đề thiết lập một, mà là trong tuần này, và vấn đề đặt hai và sau đó. Làm thế nào để chúng tôi đi về đánh giá bộ P và đánh giá chất lượng của chúng? Vì vậy, đó là bốn trục mà chúng tôi sử dụng trong CS50, và họ là bốn ở đây. Phạm vi, mà chụp trên một số cơ sở chỉ có bao nhiêu của tập P bạn đã giải quyết. Nó gần như tương ứng với nỗ lực, và đó là cách chúng tôi chụp Bạn đã thử một nửa P thiết lập, tất cả các thiết lập P. Đây là một điều dễ dàng để có được hoàn hảo điểm số trên nếu bạn làm thế, thực sự, thử mọi khía cạnh của bộ P. Vì vậy, giữ cho rằng trong tâm trí. Đúng đắn là chính xác đó. Liệu công việc mã của bạn như các đặc điểm kỹ thuật và là giải pháp mẫu của đội ngũ nhân viên gợi ý rằng mã của bạn nên, trên thực tế, làm việc. Kiểm tra 50, nếu bạn chưa gặp nó nào, là trong P thiết lập một đặc điểm kỹ thuật và sẽ thường cung cấp cho bạn có / không có câu trả lời để xem liệu mã của bạn là chính xác. Ít nhất cho đến nay như chúng ta đang đi để đánh giá nó dựa trên các bài kiểm tra rằng chúng tôi chạy trong chương trình đó. Thiết kế là nhiều chủ quan. Đây là văn bản như thế nào là mã của bạn. Và đây là cái gì đó bạn sẽ nhận được tốt hơn theo thời gian, và đây là điều mà chúng tôi sẽ cung cấp thông tin phản hồi về chất lượng hơn. Và bởi tôi có thể thiết kế có nghĩa là trước dài bạn có thể bị cám dỗ trong một số P thiết lập để làm một cái gì đó loopingly, nhưng có lẽ ba hoặc bốn, hoặc năm vòng fore lồng nhau hoặc trong khi lồng nhau vòng. Điều đó nói chung nên bắt đầu để làm cho bạn khúm núm và nói chung sẽ là coi thiết kế xấu. Và bạn sẽ bắt đầu nhìn thấy trong lớp và ra cách lớp học tốt làm việc, cách xấu làm những điều mà tất cả có thể là đúng, nhưng không phải nhất thiết phải được thiết kế tốt. Như viết một bài luận. Bạn có thể có thể đặt từ trên trang đó là đúng ngữ pháp, nhưng các bài luận hay luận án họ đang ở chỉ là hoàn toàn không liên tục hoặc có tính thuyết phục. Và đó có thể là tương tự trong thế giới bằng văn bản của thiết kế xấu hay tốt. Và phong cách, quá, là khá chủ quan. Nhưng ít nhất chúng ta mong đợi nhất quán. Đây là cách khá là code của bạn. Các sinh vật độc đáo thụt? Được các biến của bạn cũng có tên / Có phải tất cả của dấu ngoặc đơn và dấu ngoặc nhọn sắp xếp như họ nên được? Chúng tôi không có một hướng dẫn phong cách như CS50 bộ vấn đề sẽ chỉ cho bạn ở. Những thoải mái hơn là chào đón để đi lạc từ đó miễn là bạn đang tự phù hợp. Và điều này cũng là một bài học chúng tôi sẽ củng cố trong phần. Vì vậy, nếu tất cả điều này là một chút nhanh, nhận ra các thiết lập và phần P sẽ đi vào chiều sâu hơn trước khi dài. Nhưng nói chung chúng ta có rất ít xô cho CS50. Điểm thường trên thang điểm của 1-3, hoặc 1-5. Chúng tôi literally-- và tôi không thể nói này đủ trong tuần đầu tiên. Ba là tốt. Vì vậy, mặc dù, có, ba ra năm bình thường, toán học, có thể là một 60 phần trăm hoặc như một trừ D. Ba là, trên thực tế, tốt. Và, trên thực tế, chúng tôi mong đợi hầu hết học sinh trong lớp để bắt đầu hạn xung quanh twos, và ba, và bốn chân. Có lẽ không quá nhiều fives. Không quá nhiều người. Nhưng nói chung, bắt đầu vào chỗ đó ngọt ngào trong đường cong do đó theo thời gian, có thực sự là chỗ cho, và cơ hội cho sự tiến triển trên. Vì vậy, xin đừng đánh đồng ba với 60%. Đó là trừu tượng hơn so với. Các công thức mà chúng tôi tính toán lớp được trọng như sau. Đúng đắn là có giá trị nhất. Thiết kế là giá trị một chút ít. Phong cách là giá trị một chút ít. Và điều này nói chung nắm bắt số lượng thời gian mà đi vào nhận được mỗi các trục vừa phải. Phong cách là siêu dễ dàng, cần được siêu nhanh, nhưng nó là một thói quen dễ dàng để nhận được lười về. Đúng đắn có thể mất bạn hầu hết thời gian. Đuổi xuống một số sức lỗi đi mà thêm giờ hoặc nhiều hơn, và như vậy, việc cho điểm cuối cùng là nắm được. Và như vậy, bây giờ là một lời nghiêm trọng hơn. Kể từ CS50 có phân biệt, cho tốt hơn hoặc tồi tệ hơn, bị có lẽ tốt hơn làm quen với các vấn đề về học tập trung thực hơn so với hầu hết bất kỳ khóa học khác. Và quả thực, nó là kiến ​​thức của tôi mà chúng tôi gửi nhiều học sinh, không may, cho mục đích kỷ luật mỗi năm là một kết quả. Vì vậy, vì lợi ích của toàn tiết lộ, chúng ta hãy nói ngắn gọn về những gì diễn ra trong CS50, và những gì bạn có thể làm, và những gì bạn có thể nghĩ đến. Vì vậy, ở đây từ năm 2007, khi Tôi được thừa kế khóa học, là số trường hợp Hội đồng Quảng cáo. Ban quảng cáo là kỷ luật của Harvard cơ thể, hay bây giờ các sư Danh dự, mà trường hợp này được gọi khi sinh viên làm một cái gì đó quá trình của giáo trình xem xét hợp lý. Không có mô hình thực ở đây, tôi sẽ nói. Nó dao động trên năm nhưng nói chung đây là số lượng trường hợp được đề cập. Số lượng sinh viên được tham gia? Nó quá khác nhau. Điển hình, năm ngoái cho Ví dụ, 29 sinh viên tại Harvard đã rao lên, do đó, để nói chuyện. 29 trong số đó sinh viên hiện nay, hai trong số họ học sinh trước khi, nào hợp tác trong một số cách không thuận tiện. Và sau đó trong các điều khoản của tỷ lệ phần trăm, nó thường là khoảng 3% của lớp đó, không may, làm cho các loại quyết định. Vì vậy, năm ngoái nó là 3,5% của tập thể sinh viên của CS50 đó là rao lên, do đó, để nói chuyện. Vì vậy, những gì hiện tất cả những điều này nghĩa là gì? Và những gì chúng ta thực sự làm gì? Vì vậy, để công bố đầy đủ, chúng tôi hoàn toàn, như các nhà khoa học máy tính, có các công cụ phần mềm mà chúng ta có và nó rất dễ dàng cho chúng ta, trong sự công bằng, bạn cùng lớp rằng nhân khác, những người không phải là qua những dòng này để vượt qua so sánh mọi trình năm nay chống lại mọi nộp cho tám năm qua. Phần mềm thực hiện điều này. Và cuối cùng nó đôi mắt của con người mà quyết định có hay không để tham khảo một số vấn đề xét xử thêm, nhưng phần mềm chắc chắn sẽ giúp. Và điều này, thẳng thắn, là lý do mà tôi nghĩ rằng chúng tôi có số lượng lớn như vậy trong CS50. Nó không phải vì CS50 học sinh hay sinh viên CS hơn nói chung là ít hơn bất kỳ trung thực hơn bất kỳ học sinh khác, nó chỉ là chúng tôi có các công cụ và kỹ thuật mà để mất pass đầu tiên này. Nhưng chúng tôi giữ một mắt trên tất cả những điều này là tốt, một lần nữa, vì lợi ích của công nhận các công việc đó đang được đặt bằng một phần lớn siêu của lớp. Và chính sách của khóa học trên sự trung thực học tập, mặc dù đó là một loạt các đoạn văn lâu dài với một loạt các viên đạn đó là hy vọng khá dễ đọc, nó thực sự sôi xuống mức hợp lý. Và quy luật tốt nhất của ngón tay cái chúng ta dâng lên trong các giáo trình là thế này, bản chất của tất cả các công việc mà bạn trình khóa học này phải là của riêng của bạn. Và quả thật, trong hầu như tất cả những người trường hợp quy cho hành động kỷ luật đó là vì một số vào cuối một sinh viên đêm thường quay mã của ông hay bà qua dẫm, một người bạn cùng lớp, những người sau đó đã nhận nó trong toàn bộ hoặc trong đó đáng kể. Nhưng thực sự, đây là OK. Và quả thực, ở văn phòng giờ, những mảnh giấy bạn đã được trao nếu bạn đi ngang qua văn phòng giờ tuần trước khuyến khích càng nhiều. Bạn hoàn toàn hoan nghênh và khuyến khích để thảo luận về bộ vấn đề với các bạn cùng lớp. Để giúp đỡ lẫn nhau khi vấp ngã. Nhưng nói chung, các quy tắc của ngón tay cái nên được điều này, "khi bạn được yêu cầu giúp đỡ, bạn có thể hiển thị mã của bạn cho người khác, nhưng bạn có thể không xem của họ. " Vì vậy, nói cách khác, nếu tôi đấu tranh với một số thiết lập P và tôi đang ngồi ở đó trong ăn uống hội trường, hoặc trong thư viện, hoặc trong lớp học cố gắng để tìm thấy một số lỗi, Tôi chắc chắn có thể hiển thị code của tôi trên màn hình của tôi để người ngồi bên cạnh với tôi, chắc chắn các nhân viên, mà còn là một người bạn cùng lớp. Nhưng nếu giải pháp đó bạn cùng lớp của tôi là cung cấp, oh, ở đây chỉ có một cái nhìn vào những gì Tôi đã làm, mà đi qua đường. Và tôi dám nói rằng đó là nói chung một điều hợp lý cho hầu hết mọi người đến rất dễ dàng phát hiện ra các dòng. Và như vậy, xem các giáo trình cho cụ thể hơn. Và bây giờ một số chi tiết khía cạnh gây tranh cãi của giáo trình CS50 mà tôi nghĩ tôi sẽ nói chuyện trong kết luận ở đây là cái gọi là khoản hối tiếc. Vì vậy, đây là tất cả các bản in đẹp. Nhưng nói chung, chúng tôi đã thấy qua 8 năm cộng với quá khứ rằng, trên thực tế, hầu như tất cả các CS50 của trường hợp không trung thực học tập là kết quả của chỉ là người nghèo ra quyết định muộn vào ban đêm. Các kết quả của stress, kết quả thiếu ăn, thiếu ngủ, quá nhiều bộ P, quá nhiều thời hạn, quá nhiều cam kết. Căng thẳng xây dựng trong một 02:00, 03:00 AM, 4:00, với thời hạn một lờ mờ. Hầu hết sinh viên trong các trường hợp đã đã thực hiện quyết định sai lầm rằng họ cũng rất có thể hối tiếc Sáng hôm sau nếu không phút sau, nhưng cho đến năm ngoái không có van phát hành mà các sinh viên có thể thực sự mở ra để thực sự giải quyết đầu vấn đề trên mà không sợ bị khởi động từ trường đại học hoàn toàn. Và, quả thật, chúng tôi giới thiệu này khoản hối tiếc năm ngoái, mà nói rằng nếu trong vòng 72 giờ, ba ngày, băng qua một số dòng quy định trong các giáo trình bạn đi về phía trước với một trong các khóa học của Thủ trưởng, chúng ta sẽ có một cuộc trò chuyện về nó. Hiện vẫn còn có một số kết quả, trái với những gì được báo cáo trái ngược. Hiện vẫn còn một số kết quả mà là hành động của khóa học, nói chung là zeroing một tập P hoặc dùng một số hành động khác, nhưng chúng tôi sẽ, thực sự, xử lý nó chính mình và không tham khảo nó cao hơn là kết quả có thể nặng nề hơn nhiều. Và, thực sự, để chia sẻ những gì đã xảy ra năm ngoái, trong tám năm, và bây giờ chín năm, giảng dạy khóa học này và sau khi mày mò với nút bấm khác nhau, quay mặt đồng hồ khác nhau trong quá khứ nhiều năm về sự trung thực học tập, và nhìn thấy theo các dữ liệu không rõ ràng tác động, thậm chí các bài phát biểu như thế này, này là tay xuống là điều tốt nhất chúng tôi đã giới thiệu sư phạm trong tám năm cùng những dòng này trong CS50. 19 sinh viên đã đến phía trước theo điều khoản này năm ngoái. Chúng tôi đã không có hành động cho bảy trong số những sinh viên, xác định rằng họ không cần thiết lo lắng. Họ không có, trên thực tế, vượt qua một dòng, nhưng nó là một cuộc trò chuyện tốt để có dù sao. Chúng tôi tập 11 của các điểm số đã được đệ trình. Và trong một trường hợp, chúng tôi hỏi một sinh viên để làm một vấn đề thiết lập. Nhưng hấp dẫn hơn, trung thực, với những 19 cuộc trò chuyện, đó là cách nhiều hơn tôi dự kiến ​​sẽ có, mỗi người trong số họ 10 phút để có thể một lâu giờ, cũng mang lại để ánh sáng một số vấn đề liên quan các vấn đề gia đình, vấn đề người bạn, các vấn đề sức khỏe tâm thần mà chúng ta đã tham gia, với phép lành, cư trú của học sinh hiệu trưởng, hay bạn bè, hoặc bất kỳ số nào khác các nguồn lực hỗ trợ. Vì vậy, điều này là bởi đến nay một trong những ứng dụng tốt nhất của thời đại chúng ta và một trong những biện pháp can thiệp tốt nhất. Với mà nói, nó không có đầu vào về tỷ lệ phát hiện không trung thực học tập nói chung. Và tôi dám nói, tập hợp con này sinh viên năm cuối là một nhân khẩu học mà chúng tôi trước đây chưa bao giờ được xác định trước và chưa bao giờ kết nối với trước. Và như vậy, đây là những câu chuyện thành công tuyệt vời mặc dù họ đã được đưa ra ánh sáng trong ít hơn hoàn cảnh tối ưu. Vì vậy, hãy nhớ điều này khi bạn thực hiện, có lẽ, một số quyết định sai lầm mình vào đêm khuya, rằng có truy đòi là quá lâu như học sinh trong tình huống đó sở hữu lên và đi về phía trước để chúng tôi có thể có loại trò chuyện và đối phó với nó trong một cách đó là giáo dục, và sau đó chúng ta có thể đặt nó phía sau chúng tôi vào ngày hôm sau. Vì vậy, không có thêm ado, đi cạnh tắt của cuộc trò chuyện này, lý do những con chó đang lên là chỉ để phá vỡ lớp băng cho một thời điểm. Và thật không may, tất cả họ đang ngủ, nhưng những gì được cho là xảy ra ở đây là tất cả mọi người đã được yêu trước sự ngỡ ngàng và loại thư giãn sau đó trò chuyện rất nặng. Nhưng dường như tôi đặt những con chó ngủ. Nhưng nếu bạn đi đến CS50 của puppies website dấu gạch chéo, bạn có thể xem tất cả các ngày dài. Đặc biệt có thể 02:00, hoặc 03:00 hoặc 4:00 vào ban đêm để xem một chút giảm căng thẳng đó. Vì vậy, đó là giảm con chó. Được rồi. Không được vui vẻ mà? ĐƯỢC. Tóm lại, với một số máy tính khoa học, nếu tôi có thể. Vì vậy, nhớ lại rằng thời gian qua, chúng tôi bắt đầu tìm kiếm không chỉ ở chính, là chức năng mặc định, khi lá cờ màu xanh lá cây nhấp tương đương, nhưng chúng tôi cũng bắt đầu một thời gian ngắn viết một số chức năng riêng của chúng tôi. Và cho đến nay không ai trong số các chức năng này đã đặc biệt lớn hoặc thịt. Bạn sẽ nhận được vào những lớn hơn chức năng có thể, P set 2, P tập 3, chắc chắn P thiết lập 4 trở đi. Ngay bây giờ hầu hết các chương trình của bạn, nếu không phải tất cả trong số họ, chắc chắn cho P tập 1 có thể được thực hiện hoàn toàn trong chính. Nếu chương trình của bạn chỉ năm dòng, 10 dây chuyền, dài ngay cả 20 dòng, hoàn hảo hợp lý để viết nó tất cả trong chính và không để quá phức tạp mã của bạn, nhưng những gì chúng ta đang làm hôm nay và trở đi được cố gắng cũng giới thiệu một số kỹ thuật thiết kế tốt vì vậy mà mã của bạn được nhiều hơn phức tạp và như những vấn đề bạn muốn giải quyết được khó khăn hơn và thú vị hơn bạn có, loại, các công cụ trong hộp công cụ của bạn mà để thiết kế các giải pháp tốt cho những người. Vì vậy, chúng ta hãy có một cái nhìn nhanh lại chương trình này từ tuần cuối cùng của tôi, mà là chức năng không điểm C. Và nhận thấy rằng, khá đơn giản, nó trông như thế này với hai chức năng, chính và tên in. Và suy nghĩ lại hoặc có lẽ ngược kỹ thuật ngày hôm nay, những gì đã là động lực để giới thiệu một hàm ở dòng 28 được gọi là, chữ ký? Hay cái gì này một ví dụ về tại về một nguyên tắc hoặc takeaway, nếu bạn muốn. Một số thì thầm. Cái gì? Ừ vậy chức năng phân hủy là loại cách ưa thích của nói, phân hủy chương trình của bạn thành các bộ phận cấu thành của nó và sau đó sử dụng những bộ phận để lắp ráp một toàn thể. Vì vậy, điều đó cũng chỉ là loại một ngụm rồi, nhưng điều này có lẽ ngay cả một ví dụ tốt hơn của một cái gì đó chỉ cần gọi là trừu tượng. Phải không? Trừu tượng là có được một trong những chủ đề định kỳ trong CS50 và khoa học máy tính cũng nói chung vì nó một kỹ thuật mà bạn có thể giải quyết vấn đề hiệu quả hơn bởi vì bạn có thể viết nhiều giải pháp hơn trực giác và trong một cách mà quy mô và là điều dễ hiểu bởi những người khác. Tôi có nghĩa là gì vậy? Vì vậy, cho là nó là nhiều hơn nữa có thể đọc được để xem xét một chương trình như thế này, siêu ngắn mặc dù nó được. Khi bạn nhìn thấy trên dòng 22 mà có một chức năng gọi là, tên in. Cái tên đó một mình nói gì nó. Đó là chức năng dường như mất đầu vào giữa dấu ngoặc đơn của mình, và dường như làm điều gì đó, có lẽ sẽ in tên. Và như vậy, mặc dù chúng tôi hoàn toàn có thể có thực hiện những gì chúng tôi đã làm một tuần trước đây, đó là chỉ mất dòng thực tế mã này, có được thoát khỏi điều này, và nhận được thoát khỏi điều này tất cả cùng nhau, chúng tôi loại trừu tượng đi các khái niệm về in ấn một cái tên. Tôi không quan tâm nếu bạn đang sử dụng in def. Tôi không quan tâm nếu bạn có một phần trăm S và N. Những dấu gạch chéo ngược những chi tiết vô cùng phức tạp. Những gì tôi quan tâm là một lập trình được in ấn một cái tên. Và như vậy, những gì tốt hơn để làm điều đó hơn bằng cách gọi một chức năng, tên in? Và như vậy, đó là một trong những động lực để làm một cái gì đó như thế này. Làm cho mã dễ đọc hơn, nhiều hơn tái sử dụng, và tự cũng mô tả. Bây giờ, chúng ta hãy có một cái nhìn ví dụ khác, đó là chức năng một, mà chúng tôi đã có hơn ở đây. Vì vậy, một trong những điều này có lẽ thậm chí còn nhiều hơn hấp dẫn bởi vì, trong trường hợp này, Tôi không muốn chỉ cần nhận được một int. Tôi muốn có được một int tích cực. Và hóa ra để có được một dương int bạn phải làm một loạt các legwork. Phải không? Nó không phải là một dòng đơn giản gọi tên như in là, đó là phải thừa nhận là kém thuyết phục. Để có được một int tích cực, logically-- hãy để tôi di chuyển xuống để ẩn này. Những gì bạn phải làm gì? Giống như tất cả các công cụ chúng tôi có vào lúc này được những thứ như in def từ Standard Thư viện và cũng từ thư viện CS50 chúng tôi có Nhận Int và Get nổi, Nhận Long Long, nhận String, nhưng chỉ có một, Gecman, ngay bây giờ là Get Int. Vì vậy, nếu công cụ duy nhất bạn có trong hộp công cụ của bạn là Get Int, làm thế nào để chúng tôi đi về việc thực hiện nó để có được tích cực int? Đung Tạo một đăng nhập và kiểm tra về việc liệu đầu vào mà họ đã cho là tích cực hay không. SPEAKER 1: Hoàn hảo. Chính xác. Một công cụ chúng tôi có trong chúng tôi hộp công cụ từ một hoặc hai tuần trước chỉ là cấu trúc lặp. Và như vậy, yeah, nếu chúng ta sử dụng một thời gian vòng lặp, hoặc một làm trong khi vòng lặp, hoặc một fore vòng lặp chúng ta có thể có thể nhận được ngay với bất kỳ của những người trong một số hình thức. Chúng tôi có thể thực hiện các khái niệm get tích cực int bằng cách chỉ sử Nhận Int, và sau đó chỉ cần tiếp tục gọi nó một lần nữa và tiếp tục làm phiền người dùng cho đến khi anh ta hoặc cô ấy thực sự cho chúng ta những gì chúng ta muốn. Và vì vậy bây giờ, điều này trừu tượng của quá trình nhận được một int tích cực vào một chức năng gọi là Nhận Positive Int là nhiều hơn một chút hấp dẫn bởi vì nhìn vào điều này. Đây là những giống như 10 plus dòng code đó được tham gia trong việc một int tích cực, và tôi không thực sự quan tâm như thế nào bạn làm điều đó. Tất cả tôi quan tâm là bạn có thể làm điều đó, và vì vậy tôi đã ẩn tất cả những chi tiết đằng sau một chức năng gọi là Get Positive int rằng, thực sự, có việc phải làm điều này trong khi vòng lặp. Và xem tuần trước cho các cú pháp ở đó, nhưng nó chỉ là tuyên bố N, và nó in ra hướng dẫn cho người sử dụng. Nó gọi Nhận Int và sau đó nó sẽ kiểm tra tình trạng này một lần nữa, và một lần nữa, và một lần nữa cho đến khi người sử dụng hợp tác. Vì vậy, hiện nay, một vài kiểm tra sự tỉnh táo. Đối với những người có lẽ quen thuộc với một số chương trình, tại sao N tuyên bố, tại sao tôi tạo ra N ngoài việc phải làm trong khi vòng lặp? Tại sao là nó trên dòng 29 và không trên như 33, ví dụ. Đung Bởi vì khi bạn khai báo bên ngoài, nó loại nhiều hơn, các scope-- lớn hơn SPEAKER 1: Tốt. Đung --and nếu bạn khai báo nó bên trong vòng lặp, [nghe được] bởi vì nó không biết về nó. SPEAKER 1: Chính xác. Nếu tôi có thể simplify-- nó là một vấn đề về phạm vi. Và phạm vi đề cập đến bối cảnh trong mà một biến tồn tại hoặc là sử dụng được. Và các quy luật tốt đẹp của ngón tay cái ở đây là thường khi bạn khai báo hoặc tạo một biến bạn chỉ có thể sử dụng nó bên trong của gần ôm lấy dấu ngoặc nhọn. Vì vậy, có nghĩa là gì? Nếu tôi, thay vào đó, lùi lại này và đi với một cái gì đó mà cảm thấy một chút đơn giản. Phải không? Dòng 32 chỉ trông sạch hơn cho tôi bây giờ. Tôi đang làm cả hai thứ cùng một lần và sau đó gán Tay phải tay trái. Vấn đề bây giờ dựa trên định nghĩa về phạm vi được rằng N có thể được sử dụng trong dòng 31 và 32 bên trong vòng lặp này, nhưng mà theo định nghĩa đó có thể nó không được sử dụng? Trong dòng gì? Yeah. Đung 35. SPEAKER 1: 35. Chắc chắn không phải 35. Và cũng nơi nào khác? Đung 34. SPEAKER 1: Ngay cả 34 vấn đề bởi vì nó ngoài các dấu ngoặc nhọn. Và do đó, trong thực tế, chúng ta hãy xem những gì sẽ xảy ra. Phải không? Điều này có vẻ một chút trực quan hoặc có thể không, nhưng chúng ta hãy xem những gì biên dịch đã nói khi chúng tôi đi vào thư mục mã nguồn của ngày hôm nay. Thực hiện chức năng một. Ôi trời ơi. Vâng, cuối cùng tôi đã hoàn thành rằng, bằng cách này. Được rồi. Và vấn đề ở đây là gì? Rất phức tạp để nhìn vào. Nhưng đây là những gì tôi typed-- thực hiện chức năng một. Đây là những gì làm cho cảm ứng, mà thực sự là sử dụng các trình biên dịch kêu vang với một số các cờ rằng chúng ta sẽ thấy một lần nữa trước khi dài. Và một lần nữa, luôn luôn tìm tại các lỗi đầu tiên, bởi vì nó chỉ có thể có một tầng hiệu lực vô nghĩa trên các tuyến đường khác. Vì vậy, điều này có nghĩa là các vấn đề là ở chức năng 1.c. Nó là trên đường 32. Và đó là lúc cột, hoặc ký tự, 13. Vì vậy, khi soạn thảo văn bản của bạn mà có thể giúp bạn xác định nơi mà vấn đề là. Vì vậy, nếu tôi di chuyển lên, dòng 32 là gì? Đó thực sự là một này đó là đã được nhấn mạnh đúng here-- chưa sử dụng n biến. Nhưng nó không phải là không sử dụng. Tôi đang sử dụng nó. Nhưng trình biên dịch của bối rối, bởi vì nó chỉ tồn tại trong phạm vi này. Và vì vậy tôi không thể sử dụng nó ở đây. Tôi không thể sử dụng nó ở đây. Và trình biên dịch, do đó, thậm chí không quan tâm rằng tôi đang cố gắng. Nó có vẻ là không sử dụng trong phạm vi thực tế của nó. Vì vậy, chúng ta có thể mở rộng phạm vi bằng cách làm chính xác những gì chúng tôi bắt đầu with-- int n. Và mặc dù nó không nhìn như tao nhã, có lẽ, và chúng tôi đang dùng thêm một dòng ở đây, bây giờ là trong phạm vi ở khắp mọi nơi. Vì vậy, hãy thử lại. Vì vậy, làm cho chức năng một. Nice. Và bây giờ nếu tôi nếu tôi chạy chức năng một, chúng ta hãy cho nó âm 10, tiêu cực 1, 0, 1, và nó thực sự làm việc. Vì vậy, có một giải pháp ở đây. Bạn biết gì? Nếu tôi thực sự đang vật lộn với điều này? Tôi không biết nơi mà các n là nghĩa vụ phải đi. Bạn biết gì? Tôi chỉ cần đi để đưa tất cả các cách ở đầu tập tin của tôi ở đây. Sẽ này làm gì, bạn nghĩ gì? Yeah? Đung [không nghe được]. SPEAKER 1: Yeah. Vì vậy, tôi đã thực hiện nó trên toàn cầu, do đó, để nói chuyện. Nếu bạn có một biến đó là bên ngoài tất cả các chức năng của bạn cũng được cho phép, và mã nên biên dịch, và n bây giờ sẽ có thể truy cập không chỉ ở get int tích cực, nhưng cũng trong main-- mà là một chút đáng lo ngại bởi vì có đã là một trong n chính, vì vậy nhiều trên mà chỉ trong một moment-- nhưng điều này sẽ được coi là thiết kế xấu. Được rồi. Nếu bạn phải dùng đến một cái gì đó như thế, oh, tôi sẽ chỉ cần đặt nó lên đây vì mã dường như biên dịch nói chung là không thực hành tốt nhất. Thay vào đó bạn muốn chọn phạm vi hẹp nhất có thể cho các biến của bạn, điều đó có nghĩa đi với thiết kế ban đầu của chúng tôi, là quyền ở đây. Bây giờ là một sang một bên, nếu bạn đã có một hệt tên biến ở đây, cách c sẽ xử lý this-- mặc dù điều này sẽ không xảy ra quá often-- là điều này vẫn còn hoàn toàn tốt đẹp ở đây. Nhưng định nghĩa này của n trong dòng 22 sẽ bóng khủng hoảng toàn cầu. Vì vậy, điều này sẽ làm việc trong vòng chính, và khủng hoảng toàn cầu sẽ thực sự được áp dụng khi bạn đang ở trong được tích cực int Nhưng thêm vào đó Một lần khác, nhưng chỉ cho những người tò mò. Vì vậy, trong ngắn hạn, chúng tôi sửa lỗi này ở đây. Bây giờ chúng ta hãy trêu chọc nhau hai mảnh khác trước khi chúng ta nhìn vào một trong những dòng cuối cùng của mã trong chương trình này. Nhận dương int. Ở phía bên trái của từ của nó là int từ. Cái đó có nghĩa bạn nghĩ gì? Như vậy đến nay, chúng tôi đã chủ yếu là nhìn thấy void. Yeah? Đung Đó là loại biến mà bạn đang hỏi về. SPEAKER 1: Yeah Đó là loại, cho tôi không nói biến, nhưng các loại giá trị mà tôi yêu cầu quay trở lại. Và quả thực, đó là trực quan ở đây, hy vọng. Phải không? Nếu bạn muốn có được một tích cực int, đó là những gì bạn muốn function-- như của chúng tôi tình nguyện viên từ tuần trước trao lại cho bạn một mảnh giấy với một int vào nó? Và vì vậy chúng tôi đã xác định rằng các cái gọi là trở lại loại chức năng này là chiều hướng tích cực int. Nếu chúng ta không muốn nó trả lại bất cứ điều gì, bạn nói void. Nếu bạn muốn nó trở lại một chuỗi, bạn nói chuỗi. Nếu bạn muốn nó trở lại một phao, bạn nói phao. Nhưng chỉ có một mà áp dụng ở đây một cách hợp lý, vì tôi đang sử dụng get int, mặc dù tôi là hạn chế nó để các giá trị tích cực, là để trả lại một int. Vì vậy, ngược lại, có nghĩa là gì rằng có một khoảng trống trong ngoặc? Làm những gì các dấu ngoặc đơn thường xác định? Yeah? Đung Nó có nghĩa là chức năng của không thực sự nhận được nó. SPEAKER 1: Nó có nghĩa là chức năng của không thực sự nhận được những gì? Đung Một đầu vào. SPEAKER 1: Một đầu vào, gì. Vì vậy, thực sự, nếu ngoặc ở đây bạn chỉ định khoảng trống, mà chỉ có nghĩa là tôi không muốn có bất kỳ đầu vào. Tôi sẽ đối phó với vấn đề này bản thân mình. Và thật vậy, bạn không cần phải nói được bất cứ điều gì tích cực int. Bạn chỉ cần nói, có được tích cực int, và rằng chức năng sẽ đi và làm việc của nó. Nhưng có được một mẹo nhỏ tôi đã được chơi ở đây toàn bộ thời gian này để chắc chắn rằng mã này biên dịch. Chú ý rằng int-- nhận tích cực int void-- là trên dòng 27. Nhưng đối với một số lý do có vẻ kỳ lạ nó cũng lên đây trên dòng 16. Và chỉ cho các biện pháp tốt tôi sẽ lặp lại này nên nó hoàn toàn giống hệt nhau. Và tôi đã nói với nguyên mẫu một chút một dòng bình luận. Điều gì xảy ra nếu tôi xóa, Và Bây giờ chạy lại làm cho chức năng 1, nhập. Lỗi chính. Đợi một lát. Trường hợp của tab của tôi? Huh? Standby. Làm cho chức năng 1. Hiện chúng tôi đi. ĐƯỢC. Đã không lưu nó đúng cách. Vì vậy, tôi nghĩ rằng có một chút lỗi ở đây, nơi tôi không nhìn thấy tên tab vào lúc này. Vì vậy, những gì đang xảy ra ở đây? Khai tiềm ẩn của chức năng được tích cực int là không hợp lệ trong C99. Vì vậy, khó hiểu nữa. Vì vậy, chỉ này là gì? Vâng, nó chỉ ra rằng C là khá ngu ngốc. Vâng, đó là lập trình ngôn ngữ, hay đúng hơn là trình biên dịch là. Nó chỉ biết những gì bạn có dạy nó, và nó chỉ có sẽ biết điều gì đó nếu bạn đã dạy nó trước. Nói cách khác, trong chính vào lúc này, tôi cố gắng để gọi một chức năng gọi là có được tích cực int. Nhưng trình biên dịch sẽ không để thông báo rằng chiều hướng tích cực int tồn tại cho đến dòng 26. Và vì vậy những gì các trình biên dịch không chỉ là lỗi ngay sau khi nó được đến dòng 17, nói tuyên bố ngầm của chiều hướng tích cực int, mà chỉ là một cách nói, tôi không biết những gì có được tích cực int là chưa. Các ngôn ngữ khác như Java và Python và Ruby có thể nhìn về phía trước. C thì không. Và do đó, cách chúng tôi sửa chữa đây là một trong hai cách. Hoặc là một, nếu vấn đề là có được tích cực int đã không được nhìn thấy trước, tốt, hãy để tôi chỉ cần di chuyển nó đến đỉnh. Điều đó sẽ khắc phục vấn đề này. Nhưng nói chung, đó là coi kỹ thuật tốt hơn để đưa chức năng chính của bạn ở rất hàng đầu để một người đọc mã của bạn biết những chương trình nào, bởi vì chính là không được chôn giấu tất cả các con đường ở phía dưới hoặc ở giữa. Nó ở ngay trên đỉnh. Vì vậy mà không cảm thấy lý tưởng. Và bạn thực sự có thể có được vào tình huống mà nếu các cuộc gọi một chức năng khác, trong đó kêu gọi khác, bạn có thể nhận được vào một vấn đề mà không phải có thể đi lên nhau, một cách logic. Đó là điều không thể. Và do đó, cách để làm việc khoảng này là để chỉ đưa chữ ký của chức năng, do đó, để speak-- dòng đầu tiên mà nó declared-- và chỉ cần sao chép, dán nó vào hàng đầu, nhưng không phải với braces-- xoăn chỉ với một dấu chấm phẩy. Nó giống như một chút gợi ý của những gì sắp đến. Và trên thực tế, tất cả các thời gian này khi chúng ta đã thấy những điều như io.h chuẩn và cs50.h, tương tự như vậy, trong những dấu chấm file h là có nguyên mẫu khác. Và chúng ta sẽ thấy rằng chẳng bao lâu. Vì vậy, trong ngắn hạn, khi bạn có một chương trình trong một tập tin với nhiều chức năng bên cạnh việc chính, bạn gần như luôn muốn khai báo chỉ bằng cách đầu tiên của họ dòng, theo sau bởi một dấu chấm phẩy, ở đầu rất của tập tin. Đó là rất nhiều cùng một lúc. Bất kỳ câu hỏi? Bất kỳ câu hỏi? Được rồi. Vì vậy, chúng ta hãy chuyển sau đó một cái gì đó giống như ho. Oh. Làm thế nào phù hợp. Được rồi. Ho. Vì vậy, đây là một c thực hiện chương trình chúng tôi đã làm ngày khác Scratch rằng rất đơn giản chỉ nói ho, ho, ho. Được rồi. Và ai đó nói một vài ngày trước đó có một cách làm sạch mã này lên đã. Được rồi? Ngay sau khi bạn sao chép và dán thiết kế có lẽ xấu. Ít nhất một lần chúng tôi nhận được bốn hoặc năm hoặc 20 ho, nó cảm thấy xấu thực hành. Chúng tôi chỉ cần giữ sao chép, dán. Các giải pháp rõ ràng là những gì để chương trình làm sạch này lên? Đung Loop. SPEAKER 1: Yeah. Vì vậy, sử dụng một vòng lặp. Và chúng ta có thể sử dụng một vòng lặp cho, một khi loop, bất kỳ số phương pháp tiếp cận. Và quả thực, đó là những gì chúng ta làm trong một phiên bản ở đây. Tôi đã viết lại nó thay vì trong phiên bản một trong cough.c được chỉ ho trong vòng một vòng lặp cho. Tất cả các quyền, nhưng có một cơ hội ngay bây giờ để loại đầu để thiết kế như thế này một chút bài học chúng tôi dạy một thời gian trước đây, đó là this-- giả sử rằng tôi muốn để tạo ra một chức năng gọi là ho, chúng ta hãy xem xét một lát những gì nó sẽ giống như thế. Vì vậy, nếu tôi muốn một cái gì đó ho, tôi chỉ cần để sử dụng in f bên trong hàm. Và quả thực tôi. Và trên thực tế, tất cả điều này thời gian, bất cứ lúc nào bạn in ấn một cái gì đó để màn hình, một lập trình viên sẽ gọi đó là một tác dụng phụ. Nó không phải là tôi giao lại một người nào đó một giá trị. Nó cho tôi tham gia một số hoạt động đó có thể là trực quan rõ ràng. Nhưng chức năng ho này, hiện nó trở lại bất cứ điều gì dựa trên dòng đầu tiên của mình? Không, bởi vì kiểu trả về của nó không có hiệu lực, mà chỉ có nghĩa nó không đưa cho tôi bất cứ điều gì trở lại. Nó có thể làm điều gì đó trực quan, nhưng nó không đưa cho tôi lại một mảnh giấy như tuần trước. Liệu nó cần bất kỳ đầu vào? Không. Và do đó, nó là khoảng trống ở đây quá. Vì vậy, đây cũng là loại over-kỹ thuật vấn đề này. Phải không? Tôi đã thực hiện các chương trình nhiều hơn phức tạp, nhiều dòng mã, Tôi đã không làm bất kỳ chức năng hơn, nhưng điều này sẽ là một bước đá, có lẽ, đối với một rộng hơn bối cảnh với mã phức tạp hơn. Nhưng những gì về điều này? Những gì tôi có done-- chỉ liếc nhìn này mà không nhìn vào bình luận ở đầu rất của file-- những gì có Tôi về cơ bản được thực hiện ở đây với ho của tôi thực hiện đó là khác nhau? Yeah, trong trở lại? Đung Làm cho nó để bạn có thể có một nhân vật tắt. SPEAKER 1: Yeah. Vì vậy, điều này cảm thấy loại tốt đẹp. Phải không? Nó giống như thêm một tính năng để bạn chương trình hoặc chức năng của bạn, trong trường hợp này. Nó vẫn trả về không có gì. Nó có thể có một tác dụng phụ trên thị, bởi vì nó đang gọi in f. Nhưng bây giờ tôi đã parametrized chức năng, trong đó có nghĩa là tôi đã lấy độ xác định đầu vào của kiểu int và gọi nó là n, nhưng tôi có thể gọi nó là bất cứ điều gì tôi muốn. Trong thực tế, nó chỉ có thể là lần để được thậm chí còn rõ ràng hơn. Và sau đó tôi chỉ có thể thay đổi điều này ở đây. Nhưng vấn đề là đây là cách tôi tạo ra một chức năng mà có đầu vào. Và nếu bạn nhớ lại lật qua có lẽ trực tuyến trong một của đi bộ thuận, các thứ tư và cuối cùng dụ ho, bạn sẽ nhận thấy ở đây tôi đã khái quát Mã loại further-- của tôi về trừu tượng nó thêm. Giống như ho và hắt hơi, cả hai đều là về giống như nói một cái gì đó hoặc làm một số loại âm thanh. Lưu sẽ là tương ứng với khối Scratch. Và vì vậy những gì tôi đã làm trong phiên bản này, mà chúng ta có thể chỉ cần nhìn lướt qua, là ho chỉ là giống như nói, [HO], ho, và khi đó, hắt hơi là giống như nói, [ACHOO]. Và vì vậy tôi đã khái quát việc thực hiện các bây giờ thực hiện chức năng chung này, nói, là thú vị cho mục đích của ngày hôm nay chỉ vì nó vẫn còn không có kiểu trả về. Nhưng có bao nhiêu đầu vào không nó có? Đung Hai. SPEAKER 1: Hai. Và vì vậy nếu bạn muốn mất trong hai tham số, chỉ ngăn cách chúng bằng dấu phẩy. Và nếu bạn muốn sau đó gọi là chức năng, nhận thấy rằng bạn chỉ gọi nói, trích dẫn, unquote, cho các đối số đầu tiên, phổ biến n, cho số thứ hai. Vì vậy, một lần nữa, chúng ta chỉ có bây giờ khối xây dựng để chúng tôi có thể thực sự thực hiện một số chức năng riêng của chúng tôi. Được rồi. Bất kỳ câu hỏi về những? Vì vậy, bây giờ hãy trở lại bóc một lớp nếu như vậy. Và mục tiêu cuối cùng, là vấn đề thiết lập vào tuần tới là có được trên cryptogrophy-- nghệ thuật xáo trộn thông tin. Và đặc biệt, thông tin sẽ có bạn mã hóa hoặc giải mã là có được văn bản. Và để loại lời mời các câu hỏi ngày hôm nay như tốt, những gì đang xảy ra bên dưới mui xe với văn bản vượt ASCII từ tuần không, và làm thế nào chúng ta có thể thực sự bắt đầu để vận dụng nó? Vì vậy, đây là tên của Zamyla. Và trong văn bản, mà có thể được nhập vào như hàm get string. Và bắt đầu từ bây giờ, khi bạn nhìn thấy một chuỗi như this-- Z-A-M-Y-L-A-- bắt đầu suy nghĩ về nó như là mặc dù mỗi trong những nhân vật đang ở trong một hộp của mình riêng. Và quả thực, trong một tuần hoặc lâu hơn là Hiện, các hộp chọn này sẽ đại diện cho rất cụ thể một khối memory-- một vết cắn của bộ nhớ. Vì vậy, mỗi người trong số các chữ cái, cuối cùng, sẽ đại diện cho 8 bit. Và chúng ta sẽ thực sự nhìn thấy những gì đang xảy ra trên dưới mui xe trong máy tính của tôi. Nhưng không nó cũng đủ chỉ để nhìn vào Zamyla qua ống kính này, theo đó mỗi những lá thư này là trong hộp riêng của mình. Và độc đáo đủ trong C chúng ta có thể truy cập vào các hộp chọn trực tiếp. Vì vậy, nếu bạn muốn nhận được đầu tiên thư của tên của cô, siêu dễ dàng trong C. Nếu bạn muốn để có được cuối cùng thư, siêu cũng dễ dàng với một mảnh của cú pháp mới. Vì vậy, tôi sẽ đi trước vào CS50 IDE và mở ra các chuỗi không điểm C. Và trong ví dụ này ở đây, có một vài điều mới xảy ra. Vì vậy, lần đầu tiên trong dòng 19, chúng tôi đã thấy chuỗi get before-- này. Vì vậy, chỉ là một kiểm tra sự tỉnh táo nhanh chóng, nếu ai đó có thể cung cấp lên bằng lời nói lời giải thích của một giáo dân của những gì đang xảy ra trong dòng 19. Giống như chỉ dịch này vào Anh là một người bạn cùng phòng không trong CS50 có thể hiểu được. Yeah. Đung Yêu cầu người dùng nhập vào một chuỗi và lưu trữ nó trong một s biến. SPEAKER 1: Tốt. Có người dùng nhập vào một chuỗi và lưu trữ nó trong một s biến. Thật tuyệt. Vì vậy, trên cánh tay phải bên, chúng ta gọi là get string. Mà trả về giá trị mà đã không nhận được giao từ phía bên phải sang trái tay mặt vào một biến gọi là s đó được thiết kế để lưu trữ một chuỗi. Chính xác. Vì vậy, bây giờ xếp hàng 22, mỗi những nhận xét trong dòng 21, rõ ràng in chuỗi một ký tự trên mỗi dòng. Nhưng bằng cách nào? Vì vậy, trước hết, chúng ta khởi tạo I 0. Và sau đó làm thế nào để chúng ta có được để cuối tên của Zamyla? Vâng, ở phần cuối của Tên Zamyla, tôi có thể tay gõ ký tự cuối cùng của Tên của cô bằng cách nào đó, hoặc số của nó. Phải không? Nếu chúng ta trở lại here-- Z-A-M-L-- Y-L-A-- vì vậy tôi có thể gõ vào. Các chỉ số là gì Lá thư cuối cùng của Zamyla? Nếu đây là 0-- nói như một programmer-- 0, 1, 2, 3, 4, 5, Tôi heard-- vậy thực sự, lá thư cuối cùng tên Zamyla là thứ sáu, nhưng nếu chúng ta đếm từ 0, nó sẽ là số 5. Vì vậy, giữ cho rằng trong tâm trí ở đây. Hóa ra có một chức năng trong C gọi là strlen, và trở lại trong ngày và cho đến ngày nay vẫn còn, rất nhiều lập trình chọn đồng bộ hóa tên cho họ chức năng nghe như những lời họ đang cố gắng để nói. Vì vậy, strlen là chiều dài chuỗi. Và vì vậy những gì sẽ chiều dài chuỗi S trở lại khi Zamyla là đầu vào? Đung Năm. SPEAKER 1: Z-A-M-Y-L. Sáu. Phải không? Chiều dài của tên Zamyla của là gì? Phải không? Và chỉ trong thực tế, sáu chữ. Phải không? Và như vậy có nghĩa là gì cho vòng lặp của chúng tôi? Chúng ta sẽ đi từ 0 lên đến sáu, sẽ cung cấp cho chúng tôi năm lần lặp lại. Chúng tôi làm gì vào mỗi lần lặp? Vâng, phần trăm C, một người nào đó đoán các ngày khác, có nghĩa là một giữ chỗ cho những gì? Đung Char. SPEAKER 1: Chỉ cần một char. Vì vậy, một character-- duy nhất không nhiều nhân vật như một chuỗi. Và sau đó đây là dòng mới chúng ta đã có in ra. Và sau đó ở đây là cú pháp mới. Nếu bạn muốn in ra các thứ i nhân vật trong chuỗi S, có thể nói, bạn chỉ có thể nói rằng tên của chuỗi S, và sau đó mở một dấu ngoặc vuông, và sau đó đóng khung vuông, với i giữa. Và đó là loại tốt đẹp trong đó nó loại trông giống như một hình vuông giống như các ô vuông trong đó Zamyla của nhân vật tồn tại trên đó hình ảnh đó. Vì vậy, nếu tôi thực sự chạy này bây giờ, chúng ta hãy xem những gì sẽ xảy ra. Hãy chuỗi 0 dot slash chuỗi 0, và sau đó tôi sẽ đánh vào tên của Zamyla. Không có dấu nhắc, bởi vì tôi đã không sử dụng in f, nhưng đó là tốt. Tôi chỉ biết phải làm gì. Và quả thực, nó in ra Tên của Zamyla, mỗi dòng. Bây giờ chúng ta hãy có một chút liều lĩnh. Giả sử rằng tôi không biết về strlen và tôi đã tìm, tất cả các quyền, không ai sẽ có một tên lớn hơn như 50 ký tự. Chúng ta hãy đi trước và biên dịch lại này và chạy lại nó, và sau đó gõ vào Zamyla một lần nữa. Một cách logic, là những gì chương trình sẽ cố gắng để in? Z-A-M-Y-L-A sau đó như 45 byte không rõ của bộ nhớ. Và quả thực, chúng tôi sẽ trở lại ý tưởng này của bộ nhớ. Nhưng chỉ một cách logic, nếu Tên Zamyla là lâu nay, theo hình ảnh ở đây, những gì chúng ta đang nói được giữ in ấn, in ấn giữ, giữ in ấn, in ấn giữ, giữ cho in ấn, tất cả các cách để các nhân vật thứ 50, mà ai biết được điều gì sẽ xảy ra. Vì vậy, hãy thực sự nhìn. Hãy gõ Zamyla. Thú vị. Chúng tôi đã may mắn. Chỉ cần một bó toàn bộ không gian màu trắng. Oh. Có một nhân vật funky. Nó trông giống như một câu hỏi kỳ lạ đánh dấu ở đó, nhưng có tên Zamyla của. Hãy thực sự liều lĩnh. Làm thế nào về chúng tôi in ra 500 khối vào chưa biết? Chúng ta hãy đi trước và thực hiện điều này như là tốt và sau đó chạy lại. Và chúng ta hãy toàn màn hình nó, bởi vì chúng ta cần phải nhìn thấy không gian hơn. Zamyla. Đã may mắn một lần nữa. Chúng tôi dám nhận liều lĩnh hơn? Chúng ta hãy liều lĩnh hơn. 50.000 ký tự. Điều này là chắc chắn nhất không phải là một ý tưởng tốt. Được rồi. Hãy chuỗi 0. Đây sẽ là bản demo mới nhất của chúng tôi. Zamyla. Ugh. Ugh. ĐƯỢC. Vì vậy, bộ nhớ của tôi là thực sự trống rỗng ngay bây giờ, mà thực sự là loại thuận tiện. Những gì tôi đang cố gắng để có được tất cả các quyền đối với:. Và bây giờ tôi chỉ cần đi để có được liều lĩnh. 500.000. Make-- hãy toàn màn hình nó. Nhập. Zamyla. Hiện chúng tôi đi. Tôi không có ý tưởng những gì mà là, nhưng nó có vẻ xấu. Được rồi. Và trên thực tế, ngay sau đó, nếu bạn đang ở trong vài may mắn trong giờ hành chính và trong vấn đề thiết lập một, bạn cũng rất có thể gặp phải điều này. Lỗi phân khúc thực sự làm có một ý nghĩa rõ ràng. Nó có nghĩa là một số loại sai lầm liên quan đến một phân đoạn của bộ nhớ. Và trong điều kiện của giáo dân, nó có nghĩa là chúng tôi cảm động memory-- chúng tôi sử dụng bộ nhớ RAM trong máy tính của tôi rằng tôi không nên có quyền truy cập vào. Và đó là những gì cả hai là mạnh mẽ và cũng nguy hiểm về C là bạn thực sự có quyền truy cập không bị trói buộc đến tính toàn vẹn của bộ nhớ chương trình của bạn hoặc byte hoặc RAM, cụ thể hơn. Vì vậy, mặc dù tên của Zamyla chỉ dài có sáu nhân vật, Tôi vẫn có thể đi bất cứ nơi nào trong bộ nhớ mà tôi muốn. Và như một sang một bên, nếu bạn đã từng đọc một số bài viết trong những năm qua về một số máy chủ hoặc một số chương trình bị nứt hoặc bị hack đó bị lợi dụng một cái gì đó được gọi là một lỗi tràn bộ đệm khai thác mà chúng ta sẽ thực sự nói về trong một vài tuần, đó là thường đề cập đến bằng cách nào đó lừa một máy tính vào tiến triển tốt vượt ra ngoài ranh giới của bộ nhớ mà nó cần phải có, và việc tìm kiếm một cái gì đó ngon ngọt trong đó một memory-- mật khẩu, có lẽ, một cách hàng gian lận có một số số serial kiểm tra, hoặc chỉ nói chung có thể để lừa các máy tính đang thực hiện mã mà không được dự định. Nhưng chúng ta hãy quay trở lại thực tế chỉ một khoảnh khắc nơi chương trình này là thực hiện với strlen, và giới thiệu một điều ở đây. Có gì mới giữa ba dòng đầu? Vì vậy, chuỗi dot h. Hóa ra có thư viện này được gọi là Chuỗi Dot H, hoặc thư viện String, có tập tin tiêu đề, do đó, để nói chuyện, là chuỗi dot h mà mang lại cho tôi truy cập vào chức năng strlen này. Nếu tôi bỏ qua đó, trình biên dịch sẽ hét vào mặt tôi trong một số hình thức. Nhưng bạn biết những gì? Bây giờ chúng ta hãy thực sự mang nhiều sắc thái. Trong dòng 22, có điều gì đó loại của inefficient-- nặng được thiết kế, arguably-- về dòng mã này. Hãy suy nghĩ lại cách cho vòng lặp được thực hiện và những gì xảy ra một lần nữa và bước một lần nữa và again-- khởi tạo, các điều kiện, các mã được thực hiện, sau đó tăng hoặc sự thay đổi, sau đó điều kiện, sau đó các mã, sau đó thay đổi, sau đó điều kiện, sau đó mã, sau đó thay đổi, và vân vân. Vì vậy, những gì có thể là một chút đáng lo ngại hoặc thực hiện kém ở đây? Yeah, trong màu xanh. Đung là strlen gọi là nhiều, rất nhiều lần. SPEAKER 1: Yeah. Vì vậy, strlen được gọi là nhiều lần, nhưng là những gì chiều dài của Zamyla của tên Lần đầu tiên các vòng lặp thực hiện? Đung Sáu. SPEAKER 1: Sáu. Vâng, chiều dài của tên cô ấy là gì lần thứ hai các đoạn mã thực thi? Đung Sáu. SPEAKER 1: Tất cả các quyền. Nó vẫn còn sáu. Phải không? Tên của Zarla có không thay đổi, ngay cả khi tôi đang tìm tại chỉ là một phần của các chữ cái trong tên của cô. Và do đó, một thực tế rằng tôi là một cách hiệu quả hỏi câu hỏi này, có chuyện gì chiều dài của Zamyla, chiều dài là những gì của Zamyla, chiều dài của Zamyla là những gì, sáu lần riêng biệt, hoặc bảy thậm chí, chỉ là ngu ngốc, bởi vì đó là không thay đổi câu trả lời đó. Và vì vậy những gì tôi thực sự có thể làm là this-- trong một chuỗi Tôi có một phiên bản phần nhỉnh hơn ở đây. There-- chuỗi whoops-- hai tôi có một phiên bản tốt hơn trong đó nhẹ Tôi làm this-- thay vì chỉ khởi tạo i 0, tôi cũng có một dấu phẩy khai báo một biến thứ hai gọi là n-- tôi không phải nói int nữa. Tôi không nên, trong thực tế. Nhưng tôi nói n. Và sau đó tôi khởi n để strlen của n, vì vậy mà bây giờ bao nhiêu lần nào strlen được thực thi trong tổng số? Chỉ một lần. Và vì vậy đây là những gì chúng tôi có nghĩa trước đó về thiết kế tốt hơn. Trên thực tế một khi mã của bạn là chính xác, đi lại và suy nghĩ thông qua, tôi dùng rất ít bộ nhớ hoặc là vài giây hoặc mili giây của thời gian máy tính như Có thể thực hiện một số vấn đề? Và tôi sẽ di chuyển lên và chỉ đề cập đến đó có đề cập đến điều này null trong phiên bản này, nhưng chúng tôi sẽ trở lại mà chẳng bao lâu. Bởi vì bây giờ, chúng ta hãy có một cái nhìn tại nơi này sẽ dẫn chúng ta. Vì vậy, một trong, nó chỉ ra rằng Giờ chúng ta có khả năng nhìn vào đặc điểm cá nhân, chúng ta có thể tận dụng một cái gì đó từ tuần 0 đó là rất phức tạp và loại không thú vị vào thời điểm đó. Nhưng bây giờ, và đặc biệt là khi chúng ta có được mật mã học trong một tuần, nó sẽ là khá mạnh mẽ. Nó chỉ ra rằng với một số ints và nổi dữ liệu types-- và ký tự và chuỗi và khác things-- một số trong số họ có thể rất dễ dàng chuyển đổi khác. Ví dụ, khi chúng tôi nói chuyện về ASCII một thời gian ago-- đây các chữ A thông qua M, dấu chấm, dấu chấm, dot-- chúng tôi đã nói rằng có một ánh xạ giữa các chữ cái và số. Và trên thực tế, nó đúng cho chữ thường là tốt. Chữ thường một là 97, vốn là một 65. Và có một số trong ASCII, mà chỉ là lập bản đồ này hệ thống cho tất cả những chữ khác. Vì vậy, có nghĩa là gì? Vâng, tôi sẽ đi trước và mở lên thật nhanh chóng cái gì gọi là ASCII 0, hầu hết trong số đó là ý kiến. Và một lần nữa trực tuyến, bạn có thể luôn luôn lướt qua các ý kiến. Và hãy xem những gì điều này sẽ làm. Vì vậy, nó có một chức năng chính. Tôi đã mã hóa cứng các con số chỉ cho bây giờ, bởi vì tôi biết những gì tôi đang làm. Tôi biết những gì tôi muốn xem tại đây. Và tôi đã khởi tạo I đến 65. Và tôi đếm lên thông qua 26 chữ cái tổng số. Và những gì tôi sẽ in mỗi lần một dòng thời gian nếu bạn có thể giải thích này làm nổi bật dòng? Những gì được in? Yeah. Đung Bạn sẽ để in các bức thư đó tương ứng với bản đồ của các giá trị thư và giá trị số nguyên? SPEAKER 1: Chính xác. Tôi sẽ in thư tương ứng với giá trị số nguyên, và ngược lại, như sau. Vâng điều này, có người nói trước đó, chỉ là một giữ chỗ cho một char. Nó vẫn còn. Điều này, tất nhiên, là một giữ chỗ cho một không int-- một dòng mới. Và bây giờ thông báo, giá trị đầu tiên của tôi mà Tôi đang cắm vào để giữ chỗ mà không chỉ là I. Tôi đang nói, trong dấu ngoặc đơn, char I, mà các char trong ngoặc là nói với các trình biên dịch, điều trị I không như những gì nó có, đó là một con số. Hãy đối xử với nó như là một nhân vật thực tế. Trong khi đó, giá trị thứ hai tôi đang cắm in-- I-- chỉ cần có một số. Vì vậy, nếu tôi lập program-- này vì vậy đây là làm cho ASCII 0, dot slash ASCII 0-- tôi chỉ nhận được biểu đồ này ít tiện dụng mà chỉ cho tôi thấy tất cả các thể ánh xạ mà không cần phải nghĩ thông qua hoặc con nó ra ngày của riêng tôi. Và tôi cũng in ra, nhận thấy các chữ cái viết thường, vì một vài dòng sau, tôi cũng in ra bản đồ này là tốt, mà chỉ là để nói rằng một khi bạn hiểu những gì đang xảy ra bên dưới mui xe, có thể bạn tự động chuyển đổi qua lại. Và trên thực tế, nếu bất kỳ của bạn bao giờ làm điều này ở trường lớp hoặc nghe nói về một người nào đó mythically lấy một lưu ý và đi qua nó để mình hoặc bạn bè của cô trong lớp, nhưng bạn tranh giành sự chữ bằng cách như A trở nên B, và B trở nên C, hoặc một cái gì đó phức tạp hơn thế, tốt, làm thế nào bạn sẽ đi về thực hiện điều đó như một đứa trẻ? Vâng, bạn chỉ cần loại biết A trở nên B, B trở thành C, nhưng về mặt toán học, những gì được đứa trẻ đó đang làm gì? Những gì bạn đã thêm vào mỗi chữ cái? Hiệu quả, 1. Vì vậy, khi bạn thay đổi A đến B, đó là loại giống như thay đổi 65-66, mà toán học có nghĩa là chỉ cần thêm 1. Và vì vậy nếu bạn đã thực hiện mà ít thủ thuật lừa đảo cho giáo viên của bạn trong mã, bạn có thể làm chính xác điều đó chỉ bằng cách thêm vào một chữ cái với nhau. Vì vậy, trước khi dài, chúng tôi sẽ xem cách chúng tôi có thể tận dụng điều đó để thực sự scramble thật và xắp xếp lại thông tin. Trong khi chờ đợi, biết rằng chúng tôi đã bắt đầu để giới thiệu một vài thư viện khác here-- chuỗi một ngày hôm nay. Và một trang web rất hữu ích hy vọng bạn sẽ tìm thấy được gọi là reference.cs50.net, mà đội ngũ giáo viên đã cùng nhau đưa, do đó nếu bạn muốn tìm ra các tác phẩm như thế nào strlen, bạn có thể bắt đầu đánh máy tên của chức năng, nhấp strlen ở đó, và sau đó một lời giải thích ít thoải mái sẽ xuất hiện. Hoặc nếu bạn muốn chính thức Linux dựa trên giải thích, bạn có thể nhấp thoải mái hơn ở góc trên bên phải, và nó sẽ trình bày các thông tin tương tự, nhưng trong điều kiện phức tạp hơn. Đó là một nguồn tài nguyên hữu ích cho thực sự biết những gì tất cả mọi thứ không. Thời gian tiếp theo chúng ta sẽ hãy nhìn vào Ovaltine và nhiều hơn nữa, và giới thiệu bản thân với thế giới của mật mã. Trước đó, chúng ta sẽ thấy sau đó bạn vào tuần này. Và bây giờ, Colton Ogden. Gặp bạn vào thứ tư. [MUSIC CHƠI] [MUSIC CHƠI] SPEAKER 1: Cái [Bleep] bạn đang làm gì? SPEAKER 1: Tôi đang ăn món tráng miệng của tôi? Làm thế nào để bạn ăn nó? Với bàn tay của bạn? [MUSIC CHƠI]