GIÁO SƯ: Vì vậy, chương trình nghị sự Tuần này, không có nhiều thứ. Nhưng hy vọng rất, rất hữu ích và thích hợp cho các bạn trong tuần này. Nhưng chúng tôi sẽ chi tiêu có thể 15, 20 phút chỉ nhanh chóng nói chuyện về danh sách liên kết. Danh sách liên kết sẽ được bao phủ trên các bài kiểm tra. Vì vậy, có lẽ nó sẽ rất hữu ích để tìm hiểu một chút về điều đó là gì. Chúng tôi đang đi để chi tiêu lớn Đa số các phần của ngày hôm nay đi qua bài kiểm tra không vấn đề thực tế. Và sau đó chúng ta sẽ tiết kiệm được có thể 20, 30 phút ở cuối cho bất kỳ câu hỏi dai dẳng ai có. Và sau đó, người cuối cùng năm phút, tôi sẽ để cung cấp cho một máy bơm lên tiếng nói cho các bài kiểm tra. Các bạn đều muốn được ở đây cho rằng. Bởi vì nó sẽ là một thời điểm tốt. Được rồi, vì vậy một số tài liệu về danh sách liên kết. Làm thế nào họ thường có cấu trúc là Bạn có những gì được gọi là một nút, phải không? Bạn có những điều được gọi là nút, mà là cấu trúc. Tôi sẽ đi qua như thế nào để tạo ra một nút trong các slide tiếp theo. Nhưng về cơ bản tất cả các liên kết danh sách là là dữ liệu mà đã được xâu thành chuỗi với nhau thông qua con trỏ. Và như vậy, chúng tôi có lợi thế của việc sử dụng một danh sách liên kết trên, có lẽ, như một mảng, là thực tế là trong một mảng bạn cần một khối liền kề của nhớ tất cả trong cùng một vị trí, một sau khi khác, để có thể có được điều đó. Trong khi đó, một danh sách liên kết, bạn có thể có bit ít ngẫu nhiên của bộ nhớ trên tất cả các máy tính của bạn nối với nhau bởi con trỏ. Và bằng cách này bạn có thể truy cập thông tin mà đến sau khi một trong khác, sau khi khác mà không cần chỉ một lượng lớn bộ nhớ trong máy tính của bạn một nơi nào đó. Và vì vậy đây là một trong những chính lý do tại sao chúng tôi sử dụng danh sách liên kết. Thứ hai, nó rất dễ dàng để tự động thay đổi kích thước các danh sách liên kết bởi vì trong mảng, khi bạn khai báo một mảng, bạn có một giá trị bộ nhất định. Hãy nói rằng tôi muốn tạo ra một mảng 10 số nguyên. Tôi tạo ra một mảng của 10 số nguyên, và đó là nó. Đó là 10. Tôi không biết phải làm gì sau đó. Nếu tôi muốn làm cho nó 11, không thể làm điều đó. Nếu tôi muốn làm cho nó 9, không thể làm điều đó. Trong khi đó, trong một danh sách liên kết, bạn có thể thêm và xóa và chèn bất cứ nơi nào bạn muốn. Bạn có thể tự động thay đổi kích cỡ của bạn cấu trúc ở đây, cấu trúc dữ liệu của bạn. Và điều đó mang lại cho chúng tôi rất nhiều linh hoạt hơn thêm rằng chúng ta không thường có với mảng. Bất cứ ai cũng nhầm lẫn về cơ bản cấu trúc như thế nào một danh sách liên kết là hoặc lý do tại sao chúng ta phải sử dụng một trong một mảng? Vâng, chúng ta sẽ đi qua chi tiết làm thế nào để thực sự tạo ra một. Nhưng điều này chỉ là loại nghĩa chung ngay bây giờ. Mát. Và do đó, mảng được kết hợp với nhau của những điều nhỏ đáng yêu gọi là các nút. Tất cả các nút được là một loại cấu trúc. Hãy nhớ rằng, một struct là nếu bạn muốn để tạo ra một loại nhất định của biến trong C đó không đã tồn tại, bạn, như một lập trình viên, thực sự có thể tạo ra điều đó cho mình. Và để loại dữ liệu cấu trúc được gọi là một nút, đã thực sự được tạo ra bởi chúng tôi, rằng không tồn tại trong C ngày của riêng mình. Và cách mà bạn tạo ra một là bạn phải tiêu đề của typedef struct, mà nói với các trình biên dịch tôi về để tạo ra một cấu trúc. Chúng ta sẽ đặt tên nó là "nút". Và bên trong chúng ta đang đi để khai báo một biến trong, đó là sẽ lưu trữ một giá trị. Và sau đó, chúng tôi cũng đang đi tới có một con trỏ được gọi là "bên cạnh" mà điểm đến tiếp theo nút trong danh sách liên kết. Và sau đó bạn hoàn thành off bởi chỉ cần lặp lại nút một lần nữa để trình biên dịch biết, OK đó là sự kết thúc của cấu trúc của tôi. Và vì vậy theo cách này, chúng tôi loại của việc tạo ra một mảng nhỏ dễ thương loại điều với một giá trị và có một con trỏ. Và bạn có thể liên kết tất cả chúng cùng với những con trỏ. Vì vậy, họ có thể được tất cả các loại kết hợp với nhau trong một chuỗi. Mát. Bạn có thể nghe thấy một chút tốt hơn? Đung Yeah. GIÁO SƯ: Tất cả các quyền. Vì vậy, theo cách đó, như các bạn có thể thấy, một danh sách liên kết điển hình được cấu trúc là bạn có một cái đầu. Bạn có giá trị đầu mà không phải là được trỏ bởi con trỏ bất kỳ khác. Nhưng nó sẽ chỉ vào, hoặc tham khảo, một nút khác. Các nút sau khi được đi tham khảo nút sau đó, và vv và vv cho đến khi bạn cuối cùng nhấn cuối danh sách liên kết của bạn. Và bạn sẽ không chỉ có một con trỏ ở đó. Và như vậy, suy nghĩ như thế, trên một chuỗi, hoặc thậm chí nếu bất kỳ của các bạn thực hiện, tôi không biết, như với Fruit Loops khi bạn còn nhỏ. Chuỗi chúng lại với nhau, bạn sẽ và mặc chúng xung quanh cổ của bạn. Nghĩ rằng đó là điều chính xác. Bạn có những điều nhỏ mà bạn có thể nối với nhau thời điểm đó đến một sau đó, để một người sau nó, và vv và vv cho đến khi bạn có một chuỗi của một cấu trúc dữ liệu mà bạn có thể sử dụng tuy nhiên bạn muốn. Vì vậy, cách mà này chúng tôi sẽ thường chèn hoặc xóa nút bất kỳ từ một liên kết danh sách là rất khác nhau tùy thuộc vào nơi nút đó là. Vì vậy, ví dụ, vì con trỏ luôn chỉ vào một giá trị cụ thể, khi bạn xóa hoặc chèn một nút, bạn muốn chắc chắn rằng con trỏ là tất cả chỉ vào những điều đúng đắn. Vì vậy, nếu bạn muốn có khả năng chèn một nút mới với giá trị của một bên trong một liên kết được sắp xếp danh sách, tất cả chúng ta biết ở đây từ hình ảnh đó sẽ đi ở giữa đầu và hai, phải không? Bởi vì một phù hợp ngay ở đó. Nhưng cái cách mà chúng ta sẽ làm điều đó là do đầu tiên dereferencing con trỏ từ đầu và gửi đến một. Nhưng chúng tôi đi vào một vấn đề ở đây. Bất cứ ai có thể xem những gì các vấn đề là nếu chúng ta tới đích đầu tiên con trỏ từ đầu cho con? Vấn đề gì chúng tôi có thể chạy vào nếu chúng tôi cố gắng để thêm video này vào phía trước của mảng của chúng tôi? Đung [Không nghe thấy] GIÁO SƯ: Chính xác. Vì vậy, ở đây chúng tôi có một con trỏ đó là một khi chỉ từ đầu đến hai. Nhưng nếu bạn bỏ nó đi con trỏ, bạn trỏ nó đến một, bây giờ chúng tôi không có ý tưởng đi đâu để tìm thấy hai. Bởi vì như tôi đã nói trước đây, bạn đã có một chunk khổng lồ của bộ nhớ trong máy tính của bạn. Tất cả các nút này có thể được xen kẽ ngẫu nhiên ở bất kỳ nơi nào trong máy tính của bạn. Và bạn không biết làm thế nào để đi về việc tìm kiếm đó. Và do đó, bạn cần phải có con trỏ trỏ đến tất cả các nút ở cuối. Hoặc người nào khác nếu bạn vô tình tới đích của một mà không ấn định đầu tiên một giá trị đầu tiên, bạn chỉ cần đi để mất tất cả mọi thứ sau đó. Vì vậy, những gì chúng ta sẽ làm là, bạn sẽ lần đầu tiên muốn tạo ra một con trỏ trên các nút bạn muốn chèn. Chỉ tới nơi bạn muốn chèn nó vào, và rồi sau đó bạn có thể chỉ quay trở lại một. Điều đó có ý nghĩa với tất cả mọi người ở đây? Thật tuyệt. Hãy nghĩ về nó như là giống như một chuỗi. Nếu bạn thêm một chuỗi, đó là loại trực quan làm thế nào bạn muốn đi về chèn đó. OK, vì vậy đó là thực sự nhiều ngắn hơn so với tôi nghĩ rằng nó sẽ được, một bài diển văn năm phút trên danh sách liên kết. Chỉ cần như vậy các bạn có Ý tưởng cơ bản của những gì được. Ở đây chúng tôi có chương trình nghị sự cho đề thi không. Đừng để điều này đe dọa bạn. Tôi biết đó là rất nhiều thông tin. Nó trông rất đáng sợ. Nó cũng rất nhiều, tôi nghĩ, CSC loại từ ngữ. Những điều như chuỗi thập lục phân, con trỏ, cấp phát bộ nhớ động là những thuật ngữ nghe rất đáng sợ. Nhưng chúng ta sẽ phá vỡ chúng xuống, làm một số vấn đề thực hành vì vậy mà các bạn tất cả đã sẵn sàng cho thử nghiệm này. Bao nhiêu người trong các bạn có đã bắt đầu học? OK, các bạn có thể muốn để bắt đầu bắt đầu trên đó, bởi vì các bài kiểm tra là ngày mai. Hoặc thứ năm cho một số bạn. Yeah, vì vậy chúng ta sẽ đi trên một số vấn đề thực tiễn. Nếu cậu có muốn đi ra một tờ giấy, một cây bút chì. Chúng tôi sẽ chỉ dành Phần lớn các phần của ngày hôm nay đi qua một số trong đó vậy các bạn có một ý tưởng về những gì mong đợi trên các bài kiểm tra. ĐƯỢC. Một vài hậu cần chi tiết là tốt, cho bất cứ ai người đã không được để liên kết mà ở đó, nếu bạn đi đến cs50.yale.edu, trên mặt trước Trang này có một liên kết nói rằng "Về quiz Zero." Liên kết sẽ đưa bạn đến đó. Nếu bạn đã không đọc nó, hãy đọc nó. Bởi vì nó sẽ cho bạn thực sự quan trọng thông tin về các bài kiểm tra. Tôi sẽ kéo này ra từ mà chỉ vì, thể chất, nếu các bạn không biết nơi đi, chúng ta sẽ có vấn đề. Và do đó, nếu cuối cùng của bạn về với A để tồn tại, đi đến giảng đường trường luật. Và nếu bắt đầu cuối cùng với P đến Z, đi đến Davies Auditorium. Và điều này chỉ áp dụng cho người trong phần thứ tư. Nếu bạn đang dùng các bài kiểm tra trên Thứ năm, bạn đi đến SSS 114 nơi bài giảng của bạn thường là. Đung [Không nghe thấy] GIÁO SƯ: O đến Z, bạn sẽ để đi đến thính phòng Davies. Tôi sẽ thay đổi điều đó, phải không? Oh, yeah, bạn chỉ cần không tự động. Oh yeah, đó là bạn Christa. Yeah, tôi xấu. Yep, O đến Z, bạn sẽ để đi đến Davies Auditorim. Tôi sẽ sửa lỗi này khi tôi tải lên. Yeah. Và sau đó cũng có cái gì quan trọng để nhớ là thứ tư, nếu bạn là chính thức ghi danh trong phần thứ tư, bạn phải đi đố bạn vào thứ tư. Và nếu bạn đang theo học thứ năm, bạn phải đi đố bạn hôm thứ Năm. Và đó là trong thời gian học. Ở đâu, tôi nghĩ rằng nó giống như 1:00 đến 02:15 ngày thứ Tư và 2:30-03:45 vào ngày thứ Năm. Nếu bạn có một mâu thuẫn không thể hòa giải, Bào chữa của Dean là điều duy nhất, không may, chúng tôi có thể mất. Bởi vì chúng tôi đã có một Phần lớn các yêu cầu để chuyển đổi từ thứ tư đến thứ năm. Mà chúng ta không thể tôn vinh trừ chúng tôi có yêu cầu của Dean. ĐƯỢC. Vì vậy, trước khi chúng ta bắt đầu trên một cặp vợ chồng trong những vấn đề thực tế, Tôi chỉ sẽ đi qua Lời khuyên hữu ích của Andy cho sự thành công. Các bạn, khi bạn học tập, bạn thực sự muốn thực hành viết code bằng tay. Lần đầu tiên tôi mất một bài trắc nghiệm CS, tôi đã không tập viết code bằng tay trước và nó đã được rất gây sốc tại khó khăn thế nào. Khi các bạn không nhận được vào các thói quen gõ ra tất cả mọi thứ, nói rất tự nhiên là có thể đã autocompleted ngoặc và phẩy ở đó. Khi bạn viết nó ra bằng tay, đôi khi nó rất, rất dễ dàng để quên một dấu chấm phẩy, hoặc quên đóng một khung, hoặc quên đóng dấu hai chấm, hay đại loại thế. Vì vậy, khi bạn viết code bằng tay, đó là một cảm giác rất khác nhau. Vì vậy các bạn, khi bạn đang làm việc thông qua một số các vấn đề thực hành, nó sẽ tốt để thực sự thực hành ngày hôm nay. Hoặc ngày mai, tôi giả sử, nếu bạn tham gia các bài kiểm tra vào hôm thứ Năm. Thứ hai, chúng tôi có người cuối cùng, như, trị giá tám năm thực hành câu đố trực tuyến. Đố của năm nay có thể sẽ là rất, rất giống với tất cả chúng. Tất cả họ đều rất giống nhau. Bạn loại có được vào phong cách của các loại câu hỏi mà chúng tôi yêu cầu, các loại chức năng mà chúng ta sẽ viết nó trong, vân vân, vân vân. Vì vậy, có những bài trắc nghiệm thực hành, đặc biệt là dưới chế về thời gian. 75 phút để làm bài kiểm tra là không có nhiều số lượng thời gian. Nó rất, rất dài. Và như vậy các bạn thực sự muốn để chắc chắn rằng các bạn là có thói quen viết code bằng tay một cách nhanh chóng. Bởi vì bạn không muốn là người đầu tiên thời gian để xem một bài kiểm tra độ dài đó được trên bài kiểm tra của bạn. Các bạn thực sự muốn chắc chắn rằng bạn thực hành trước. Thứ tư, bạn muốn xem lại bài giảng và phần trình bày. Bạn không cần phải ghi nhớ điều này. Trên thực tế, tất cả mọi người được cho phép một một tờ giấy ghi chú màu trắng, trước và sau. Các bạn có thể đánh máy hoặc viết. Nếu bạn thấy mình cần phải học thuộc lòng bất cứ điều gì, để nó xuống trên tấm đó. Tôi đảm bảo với bạn, bạn không muốn bị mắc kẹt ở giữa bài kiểm tra mà được như thế, oh yeah, những gì là thời gian chạy loại này so với loại đó. Chỉ cần đặt nó xuống và sao chép nó thẳng từ tờ ghi chú của bạn. Sau đó, bạn có thể thực sự sử dụng của bạn chỉ não để suy nghĩ về những vấn đề thay vì phải nhớ lại sự kiện. Và như vậy thực sự tận dụng lợi thế của bất kỳ thông tin chi tiết thích hợp mà bạn nghĩ rằng bạn cần phải ghi nhớ, tiếng tom nó xuống trên bảng đánh giá. OK, bất kỳ câu hỏi về hậu cần liên quan đến các bài kiểm tra trước khi chúng tôi bắt đầu một số vấn đề thực hành bài kiểm tra? Yeah? Đung tôi đã không có một cơ hội nhìn vào các bài kiểm tra [Không nghe thấy] nhưng nó sẽ được ứng dụng chủ yếu, hoặc là có cũng có được, như thế, câu hỏi kiến ​​thức? GIÁO SƯ: Đó là rất nhiều. Vì vậy, cách mà tôi sẽ mô tả các bài kiểm tra is-- Tôi đặt cùng một số vấn đề thực hành mà tôi lấy từ tất cả các câu đố. Nhưng bạn sẽ thấy rằng có hai chính loại câu hỏi này, chúng tôi sẽ yêu cầu bạn. Một là một chi tiết mức rất thấp của các công cụ. Chúng tôi sẽ cung cấp cho bạn một đoạn mã nhỏ và nói, là có một lỗi ở đây? Điều gì sẽ được in ra ở đây? Những mã này sẽ sản xuất, vân vân. Vì vậy, thông tin chi tiết về mức rất thấp. Và xét theo khía cạnh, chúng tôi sẽ có rất câu hỏi kiến ​​thức dựa trên mức độ cao. Bạn có thể giải thích những gì Sự khác biệt giữa một tìm kiếm nhị phân và tìm kiếm tuyến tính là? Tại sao chúng tôi muốn sử dụng một trong khác? Có lẽ, GDB là gì? Tại sao chúng ta muốn sử dụng GDB? Mức độ cao hơn, cơ bản hơn câu hỏi hiểu biết. Vì vậy, bạn sẽ thấy một hỗn hợp của hai trong số họ trên bài kiểm tra của bạn. Bất cứ điều gì khác trước khi chúng tôi đi thẳng vào nó? ĐƯỢC. Đung Một chi tiết. GIÁO SƯ: Oh, một nhiều hơn. Lấy làm tiếc. Đung Yeah, đó là tất cả các quyền. Vì vậy, bạn đang nói ở phút 75 được quá ngắn, giống như nó là khó rằng chúng tôi sẽ kết thúc? Hoặc, như thế, 75 phút là chính xác như nhiều thời gian như chúng ta sẽ cần nếu chúng ta chuẩn bị một cách thích hợp? GIÁO SƯ: OK, vì vậy đố là thách thức. Nó chắc chắn là thử thách. Bạn sẽ thấy mình có nhiều thời gian. Bạn có thể sẽ đánh, như 10, 15 phút để đi, và được như thế, shit. Tôi đã quá nhiều điều phải làm. Và đó là hoàn toàn tốt đẹp. Mọi người sẽ cảm thấy như vậy. Chỉ cần rất ý thức về Bạn có bao nhiêu thời gian. Và đó là lý do tại sao tôi nói với bạn kẻ làm những bài trắc nghiệm thực hành. Bởi vì nó thực sự mang đến một cảm giác tuyệt vời về những gì các bài kiểm tra sẽ được như thế. Vì vậy, nếu bạn thấy mình chính là có thể hoàn thành việc thực hành trắc nghiệm trong một số lượng tốt của thời gian, bạn có thể tốc độ cho mình tốt, sau đó bạn sẽ không có một vấn đề vào thứ tư hoặc thứ năm. Mát. Vì vậy, nếu tất cả mọi người wants-- tôi nghĩ hầu hết mọi người có tờ giấy ra rồi. Tôi sẽ thực chất chỉ cung cấp cho bạn những câu hỏi mẫu cung cấp cho các bạn, như, một vài phút để làm cho họ. Và chúng ta sẽ đi qua như là một lớp những câu trả lời cho họ được. Vì vậy, đây là một điển hình Câu hỏi đầu chúng tôi sẽ hỏi bạn, chỉ cần chuyển đổi số giữa các cơ sở khác nhau. Nhị phân, như các bạn có thể thu hồi, là cơ sở hai. Thập phân là 10 cơ sở, hoặc những gì chúng tôi như con người thường giải thích. Hexadecimal là cơ sở 16, đó là số không qua chín cũng như từ A đến F. Vì vậy, có bốn số tôi hỏi các bạn để chuyển đổi ở đây. Tôi sẽ cung cấp cho bạn thích, ba đến bốn phút để nghĩ về cách thức chúng ta sẽ đi về việc giải quyết này. Đung Có phải chúng ta cho phép máy tính? GIÁO SƯ: Bạn sẽ không cần máy tính, yeah. Tôi nghĩ cơ bản Ngoài ra, tôi nghĩ, là tất cả các bạn sẽ được yêu cầu để làm. Và chỉ để tôi loại có một cảm giác của tất cả mọi người khi được thực hiện, nhìn lên, sóng, tôi không biết, nụ cười, tìm hạnh phúc nếu bạn đang thực hiện. Yeah. Có lẽ một vài phút nữa. OK, chúng ta hãy mang nó trong. Tôi đang cố đi cung cấp cho các bạn ít thời gian hơn bạn có thể cần làm một số những vấn đề này, đơn giản chỉ vì tôi muốn chắc chắn rằng chúng tôi có được thông qua một loạt các vấn đề. Vì vậy, không phải lo lắng nếu bạn không có một cơ hội để kết thúc. Hoàn toàn OK miễn là bạn có một ý tưởng về làm thế nào để đi về việc này. Vì vậy, chúng ta hãy đi trước và làm một trong những đầu tiên. Vì vậy, đầu tiên, không ai muốn nói với tôi trong hệ nhị phân, làm những gì mỗi người trong các con số đại diện về mặt giá trị của họ? Yeah? Đung Hai đến điện bằng không, 2-1. GIÁO SƯ: Chính xác. Vì thế. Đúng, vì vậy thường khi chúng ta đang ở trong cơ sở 10 tất cả các đại diện cho là, như, 10 để các cơ sở của số không, phải không? Đó là nơi một của bạn. Tất cả các bạn ra 10 là là 10 với sức mạnh của một. Nơi bạn 100 là 10 với sức mạnh của hai. Dù bạn đang ở cơ sở được đi phải làm gì với những điều chính xác, chỉ với một cơ sở khác nhau. Vì vậy, nhị phân, tất cả những gì là cơ sở hai. Bạn sẽ chuyển đổi tất cả các chữ số thành hai để bất cứ quyền lực các chữ số đó. Và như vậy trong ý nghĩa này, chúng tôi có thể có một cách dễ dàng hơn là có thể gắn lên hoặc tổng hợp tất cả các số theo thứ tự để chuyển đổi thành 10 cơ sở. Vì vậy, không ai muốn nói cho tôi biết Câu trả lời cho một trong những đầu tiên là ở cơ sở mười? Đung Hai, [nghe được] GIÁO SƯ: Yeah. Đung 42. GIÁO SƯ: 42, có bạn đi. Vì vậy, cách chúng tôi đã nhận câu trả lời này là bởi làm hai người đầu tiên, đó là hai. Cộng với hai thứ ba, đó là tám. Cộng với hai đến thứ năm, trong đó là bất cứ điều gì là trái hơn. Bạn tổng hợp và đó là 42. Có ai nhầm lẫn về cách chúng tôi đã nhận điều đó không? Ngoài ra rất cơ bản, như Tôi nói, bạn nên có OK. Nếu không, tốt, chúng ta có thể thực hành điều đó quá. Nhưng đó là tất cả các quyền. Mát. Có ai muốn để cho tôi câu trả lời cho một thứ hai là tốt? 50? Tốt. Bất cứ ai cũng nhầm lẫn về cách chúng tôi đã nhận thấy một trong hai? Cool, tôi sẽ có câu trả lời trên các slide tiếp theo. Vì vậy, không phải lo lắng nếu bạn cần phải sao chép nó xuống. OK, vì vậy hệ thập lục phân là một chút phức tạp hơn. nhưng tôi sẽ cho các bạn thấy một phím tắt để làm thế nào để làm điều đó. Vì vậy, hệ thập lục phân, như bạn nhớ, tất cả nó là được 16. Và bởi vì chúng ta là con người không thực sự có 16 con số để biểu rằng, chúng tôi đi từ số không đến chín, trong đó đầu tiên của chúng tôi 10 giá trị, và sau đó chúng tôi làm từ A đến F, đó là sáu giá trị tiếp theo. Và do đó, cách dễ nhất để đi từ bất kỳ số nhị phân để hệ thập lục phân là để phá vỡ chúng thành hai nửa. Và vì vậy bất kỳ số nhị phân, chúng tôi sẽ cung cấp cho có thể bạn sẽ có tám chữ số. Bạn chỉ có thể phá vỡ chúng lên ở giữa. Vì vậy, đầu tiên one-- một một, một trong một, một, một, một một. Loại nghĩ nó lên, bạn biết đấy, vẽ một dấu gạch chéo hoặc một dấu phẩy ở giữa chúng. Và bạn chỉ có thể chuyển đổi trực tiếp bất cứ điều gì này là người đầu tiên số thập lục phân, và bất cứ điều gì ở đây là để thứ hai của hệ thập lục phân. Vì vậy, hãy nhớ từ ký hiệu thông thường, những gì giá trị thập lục phân bắt đầu với? Đung Zero. GIÁO SƯ: 0X. Vì vậy, chúng ta biết rằng bất cứ lúc nào chúng tôi yêu cầu bạn để chuyển đổi bất kỳ số để hệ thập lục phân, hoặc bất cứ lúc nào bạn thấy bất kỳ số bắt đầu với 0X, Bạn có biết rằng đó là một giá trị thập lục phân. Và sau đó bạn sẽ được yêu cầu xác định những gì hai chữ số đó là. Và cách bạn làm điều đó, kiểm đếm lên rằng một nửa và kiểm đếm lên một nửa. Vì vậy, trong ví dụ này, những gì sẽ một, một, một, một được? Giá trị gì đó sẽ là gì? Điều đó muốn được F, phải không? Điều đó muốn được 15. Vì vậy, đây sẽ là F. Một, một, một, ai ở đây cũng là F. Vì vậy, một, một, một, một, một, một, một, một trong hệ thập lục phân, tất cả đó là là 0xFF. Bởi vì hiệp này, đại diện F, giá trị của 15, và hiệp này, đại diện F, giá trị 15. Bởi vì nhớ, chúng tôi đếm từ số không đến chín. Một là như 10, B là như 11, F là 15. Liệu đó có ý nghĩa với mọi người như thế nào chúng tôi đã nhận từ nhị phân để Hexadecimal? Đung Và vậy làm thế nào chúng ta có được 15 từ một, một, một, một trong những? GIÁO SƯ: Vâng, đây là nhị phân, phải không? Hãy tưởng tượng điều này chỉ là một số nhị phân. Vì vậy, bạn có hai đến 0, mà là một. Đung Oh, OK. Vì vậy, bạn chỉ cần tổng số nó ra. GIÁO SƯ: Vâng, và sau đó bạn chỉ cần tổng số mà ra. Đó là tất cả nó là. Đung OK. GIÁO SƯ: OK. Đung Vì vậy, bạn đi từ nhị phân đến thập phân để hệ thập lục phân? GIÁO SƯ: Đó là Cách dễ nhất để làm như vậy, yeah. Bạn sẽ không vì số thập phân số thập phân chỉ có không đến chín. Chúng tôi chỉ cần loại tách ra thành hai. Đung [Không nghe thấy] sử dụng số thập phân để tìm những gì nó phù hợp với những thập lục phân. GIÁO SƯ: Tôi có nghĩa là, bạn kiểm đếm bằng cách sử dụng thuật toán cơ bản. Đung Yeah. GIÁO SƯ: Yeah, khá nhiều. Nó là một chút bối rối. Nhưng chỉ biết rằng bạn có thể phân chia bất cứ điều gì giá trị này là vào chỉ nửa. Hãy nhìn xem, đây là những gì trong hệ nhị phân? Số gì vậy? Nó sẽ một cái gì đó từ số không đến F. Đây cũng sẽ là một cái gì đó từ số không đến F. Và sau đó bạn chỉ có thể đặt hai bên phải có. Đung OK. GIÁO SƯ: Yep. ĐƯỢC. Vì vậy, các bạn muốn thử kế tiếp sau đó? Zero, một, không một, một, không, một số không. Tôi sẽ cho các bạn cái như 30 giây, vì có thể bạn không biết các mẹo để làm thế nào để làm điều này trước đó. OK, bất cứ ai muốn có được này một shot? 0X5A. GIÁO SƯ: 0X5A. 5a. Tốt. Vì vậy, ở đây sẽ be-- bạn muốn để cho chúng tôi biết làm thế nào bạn có điều đó? Đầu tiên, làm thế nào bạn có được trong năm? Đung Bởi vì bằng không, một, không, một là năm. GIÁO SƯ: Có tất cả mọi người hiểu tại sao không, một, không, một là năm? Bạn đã có một ở đây. Bạn không có gì trong hai đến đầu tiên. Trong hai đến thứ hai, bạn có một, đó là bốn. Vì vậy, bạn thêm bốn cộng một trong những, bạn có năm. Tất cả mọi người tốt? ĐƯỢC. Và sau đó điều này và tại sao? Số gì A tương ứng với? Đung 10. GIÁO SƯ: Và điều này trong cơ sở hai? Đung [Không nghe thấy] GIÁO SƯ: Chính xác. Vì vậy, giá trị thứ hai này ở đây sẽ là 0X5A. Mọi người đều tốt về làm thế nào để chuyển đổi? Sẽ đơn giản hơn nhiều so với bạn nghĩ. Tôi chỉ muốn chắc chắn Bạn có biết lời khuyên hữu ích và thủ thuật để làm thế nào để làm điều đó. Đung Tại sao bạn có thể chỉ cần chia nó ở giữa như thế? Chỉ cần được như thế, OK, tôi chỉ đi quan tâm đến những đầu tiên [Không nghe thấy]? GIÁO SƯ: Bởi vì đó thực sự là cách giá trị thập lục phân được đại diện. 0X, mà thực sự có nghĩa là không có gì khác hơn là nói cho bạn rằng đó là một số thập lục phân. Và điều này luôn luôn đại diện bốn chữ số đầu tiên. Và điều này luôn luôn đại diện bốn chữ số cuối cùng. Và do đó, hai chữ số này chỉ tương ứng với các bit khác nhau. Đung Vì vậy, chúng tôi sẽ always-- GIÁO SƯ: Bạn luôn luôn sẽ nhận được tám bit giá trị. Đung Là chỉ muốn một điều ở đây hoặc là một điều trên tất cả? GIÁO SƯ: Đó chỉ là một điều trong máy tính, yep. Đung OK. Thật tuyệt vời. GIÁO SƯ: Ngoài ra, do đó, trong ví dụ này chúng ta chuyển đổi từ nhị phân sang thập phân, và từ nhị phân để hệ thập lục phân. Các bạn muốn chắc chắn rằng bạn cũng thực hành đi theo cách khác xung quanh. Vì vậy, nếu tôi đưa cho bạn 0xFF, bạn có thể vẽ đó ra trong hệ nhị phân, phải không? Bạn chuyển đổi F thành hệ nhị phân, mà là một, một, một, một, chuyển đổi F sang nhị phân, mà là một, một, một, một. Vì vậy, chúng tôi có thể yêu cầu bạn làm cách khác xung quanh. Vì vậy, số thập phân sang nhị phân, hoặc thập lục phân sang nhị phân. Vì vậy, bạn muốn thực hiện chắc chắn rằng bạn biết cả hai cách. Chúng tôi có thể sẽ hỏi bạn một sự kết hợp của cả hai. Vâng, bạn có một câu hỏi? Tôi có thể see-- bạn tốt? Đung Yeah. GIÁO SƯ: OK. Tôi tốt để xóa này? Thật tuyệt. Tất cả các quyền, vì vậy câu trả lời là ở đây nếu có ai là tò mò sau này và bị lẫn lộn. ĐƯỢC. Đung Có vấn đề gì nếu chúng ta đặt chữ của chúng tôi tại Capitol hoặc chữ thường? GIÁO SƯ: Nó hiện, bởi vì trong hệ thập lục phân, theo quy ước, tất cả các nhân vật được viết hoa. Vì vậy, từ A đến F là sẽ là chữ hoa. Nếu bạn đặt một chữ thường một, tôi không biết nếu chúng ta nhất thiết phải đánh dấu nó sai. Nhưng về mặt lý thuyết, đó không phải là về mặt kỹ thuật làm thế nào bạn đang nghĩ để có nó. Vì vậy, tất cả họ nên được viết hoa. Vâng, câu hỏi hay. ĐƯỢC. Câu hỏi thứ hai. Hãy xem xét chương trình này đáng yêu ở đây. Tôi sẽ hỏi các câu hỏi, Tôi sẽ trở lại này. Vì vậy, trước hết, những gì bên trong các tiêu chuẩn io.h đó là quan tâm đến chương trình? Thứ hai, những gì hiện khoảng trống biểu trong dòng ba? Và thứ ba, những gì không trở về zero từ chính, như dòng sáu, thường biểu hiện? Nếu các bạn muốn viết những xuống, vì tôi phải chuyển về đến slide chỉ để bạn có thể nhìn thấy mã. Đây là một ví dụ về, như thế, có lẽ một Câu hỏi mức độ cao hơn, nơi chúng tôi yêu cầu bạn những điều có nghĩa là trong một chương trình. Mọi người đều tốt cho tôi để quay trở lại slide? OK, mát mẻ. Vì vậy, tôi sẽ cung cấp cho các bạn thích có thể ba phút để nhìn vào một thực tế nhanh chóng này. OK, vì vậy của một người này như khá dễ dàng, khái niệm. Có ai muốn cho tôi biết những gì đầu tiên bên trong bằng cách băm bao gồm tiêu chuẩn tập tin thư viện io.h của chúng tôi? Tại sao chúng ta cần thư viện bao gồm cho chương trình này? Những gì ở đây chúng ta cần nó cho? Yeah? Đung là khi bạn đặt printf đó? GIÁO SƯ: Chính xác. Vì vậy, printf, bất cứ lúc nào bạn lấy dữ liệu từ người dùng và in một cái gì đó vào màn hình, đó là các tiêu chuẩn đầu vào, đầu ra thư viện. Hãy suy nghĩ về nó mà way-- đầu vào, đầu ra. Tôi có một đầu ra? Có, tôi làm. Vì vậy, tôi biết rằng tôi luôn đi cần thư viện Chuẩn i.o. Vì vậy, printf là chức năng nhờ đó chúng ta cần phải truy cập và hashtag bao gồm các thư viện i.o tiêu chuẩn. ĐƯỢC. Thứ hai, nó gì trống biểu? Chúng tôi có int main (void), những gì hiện làm mất hiệu lực ở đây có nghĩa là ở đây trên dòng ba? Yeah, ở phía sau. Đung [Không nghe thấy] GIÁO SƯ: Chính xác. Vì vậy, hãy nhớ rằng, chúng tôi đã học được bắt đầu với pset của chúng tôi mà bạn có thể thực sự xác định dòng lệnh lập luận rằng chương trình của bạn, mà bạn chức năng chính, có như bạn, người sử dụng, gọi nó đi. Nếu chúng tôi có khoảng trống, điều đó có nghĩa rằng bạn chỉ có thể chạy chương trình trực tiếp mà không có bất kỳ đối số dòng lệnh. Mọi người đều rõ ràng về điều đó? ĐƯỢC. Và cuối cùng là tại sao chúng ta bận tâm làm này trở về zero điều ở đây? Tại sao chúng ta thậm chí có một int main? Tại sao chúng ta không thể chỉ cần có khoảng trống void main? Yeah? Đung Để chúng tôi có thể hãy chắc chắn rằng chương trình là thoát thành công, như trái ngược với khi nó đã được đánh số. Và chúng ta sẽ biết rằng đó là một loại khác nhau của lỗi. GIÁO SƯ: Yeah, chính xác. Đây chỉ là một rất điều thông thường mà chúng ta làm, là chỉ ở cuối của chương trình của bạn, chỉ để chắc chắn rằng chức năng chính của bạn đang chạy một cách chính xác, chúng tôi luôn muốn làm trở lại bằng không. Mặc dù chúng tôi có thể thiết không nhìn thấy bất cứ nơi nào mà in. Bởi vì như lập trình viên, bạn biết đấy, nếu bạn có nhiều dòng khác nhau của mã và bạn không biết nơi những đang đi sai, và nếu có một lỗi xảy ra bạn muốn hãy chắc chắn rằng bạn nhận được lỗi đó. Và như vậy thường nếu có điều gì sai chúng tôi sẽ có sự trở lại của một trong những chỉ để chắc chắn rằng chúng ta biết rằng nó được. Vì vậy, nếu bạn thấy một trở bằng không, mà điển hình có nghĩa là chương trình của bạn thực hiện thành công. Tốt? Mát. OK, chương trình thứ hai ở đây. Hãy xem xét rằng. Và nếu các bạn thấy một nổi, các bạn có thể có lẽ có một ý tưởng tốt về những gì Tôi định hỏi cậu. Vì vậy, khi chương trình này thực hiện, như bạn có thể thấy, Tôi tuyên bố một phao bên trong chức năng chính của tôi. Tôi đặt tên nó là "trả lời," và tôi đang thiết mà bằng một chia cho 10. Tôi in ra, để một nơi thập phân, phao. Và sau đó tôi trở về zero. Vì vậy, khi thực hiện các chương trình, nghĩ lại tham lam bây giờ, Chương trình này in 0.0. Như chúng ta đều biết, hy vọng tất cả chúng ta biết, một chia cho 10 không phải là một 0.00, nó là 0,1. Nhưng giải thích tại sao chương trình này nghĩ mà 1 chia cho 10 in đến 0,1 khác hơn 0,1? Tôi sẽ cho các bạn cái có thể như 30 giây để chỉ nghĩ về điều đó một cách nhanh chóng và tôi sẽ trở lại với chương trình. ĐƯỢC. Bất cứ ai cũng muốn để cho nó một shot? Trong vòng ba câu, vì thường chúng tôi sẽ hạn chế tất cả các câu trả lời ba câu hoặc ít hơn do đó bạn không chỉ nôn ra những điều ngẫu nhiên vào bài kiểm tra của bạn. Vâng, có một shot. Đung Vì vậy, tôi nghĩ rằng có này điều được gọi là, như, [nghe được] Vì vậy, có thể có được, ví dụ, có thể có, như, 0.09, rằng nơi bạn in đầu tiên chữ số, nó sẽ là 0.0? GIÁO SƯ: Close, không khá. Christabell? Đung Bạn đang phân chia một và 10, và chúng đều là các số nguyên. Và như vậy theo cách mà nó đang diễn ra để lưu trữ nó là như một số nguyên. Và do đó, các số nguyên gần nhất sẽ là 0.0. Và đó là 0,1. GIÁO SƯ: Yeah, đó là thực sự tốt. Đó là câu trả lời đúng. Vì vậy, đây là một rất khó hiểu Khái niệm cho rất nhiều trẻ em. Và tôi thực sự muốn chắc chắn rằng này được củng cố trong đầu của tất cả mọi người. Vì vậy, những gì chúng ta gọi là nổi điểm thiếu chính xác, nơi mà các lý do tại sao rất nhiều các chương trình của bạn trong tham lam đã không làm việc ban đầu là vì bạn quên đúc biến của bạn. Vì vậy, những gì Christabell nói là hoàn toàn chính xác. Một float là hơi thiếu chính xác. Bởi vì trong một máy tính, phải, chúng ta có một số lượng hữu hạn của bit của bộ nhớ chúng ta có thể sử dụng để đại diện cho số. Vì vậy, ví dụ, ID CS50 này is-- Tôi nghĩ rằng đó là một máy tính 64-bit. Một float chỉ có thể được biểu bởi một số lượng hữu hạn của các bit. Và do đó, 0,1 với số không vô hạn, đó là 0,1 là, phải không? Nhưng chúng ta không thể thực sự lưu trữ rằng số trong máy tính của chúng tôi. Chúng tôi chỉ cần không có đủ bộ nhớ để làm như vậy. Và do đó, xấp xỉ vực gần gì được lưu trữ trong bộ nhớ thực sự là một cái gì đó giống như một cái gì đó 0.000, một cái gì đó, một cái gì đó, một cái gì đó. Trong đó, một khi bạn cắt ngắn nó, làm tròn xuống đến 0.0. Và do đó, ví dụ này chỉ là một trong đó chứng tỏ rất nhiều vấn đề chúng tôi có bất cứ khi nào chúng tôi cố gắng không chính xác làm toán mà không đúc như một số nguyên khác nhau. Vì vậy, chỉ cần được cảnh giác với điều này xảy ra. Về câu đố, nếu chúng ta cung cấp cho bạn một khối mã và nó giống như, những gì in ra ở cuối? Và nếu đó là một số giá trị ngẫu nhiên bạn chàng trai nên biết tại sao điều đó đang xảy ra. Yeah? Đung Truncate được thoát khỏi tất cả mọi thứ sau khi một điểm nhất định? [Không nghe thấy] GIÁO SƯ: Vâng, như vậy thực sự đây là một ví dụ thực sự xấu, vì bất cứ điều gì thực sự 0,100 sẽ cắt ngắn xuống còn 0,1. Nhưng nếu bạn đang chạy it-- tôi không nhớ, bởi vì năm ngoái họ chạy nó trên một chương trình khác nhau. Họ chạy nó trong một cái gì đó gọi là các CS50 gia dụng, trong đó là khác nhau từ các ID. Đó là một hệ thống 32-bit, tôi nghĩ. Và do đó có các số khác nhau. Nhưng về cơ bản, chỉ biết rằng khái niệm toàn bộ cắt ngắn và làm thế nào nó chỉ cắt mọi chuyện. Và vì vậy nếu nó rounds-- Đung Nếu không làm tròn. GIÁO SƯ: Chính xác. Yeah. Mát. Hi, ở phía sau. Chúng tôi chỉ đi qua một số câu hỏi đánh giá bài kiểm tra. Được rồi. Vì vậy, hãy xem xét một chương trình khác nhau ở đây. Tôi sẽ cung cấp cho các bạn một vài phút để đọc qua này. Đây là một cái gì đó mà là cho một rất gần đây tôi mới nghĩ thổi rất nhiều bạn tâm trí của chàng trai. Nhưng chúng ta sẽ nói chuyện thông qua điều này một lần nữa chỉ để chắc chắn bạn hiểu nó hoàn toàn. ĐƯỢC. ĐƯỢC. Bất cứ ai cũng cần thêm thời gian để đọc qua mã này? ĐƯỢC. Vì vậy, có vẻ như với tôi rằng trong chương trình này tôi tạo ra hai chuỗi bằng cách sử dụng GetString. Một gọi là s và một gọi là t. Và nếu chúng bằng nhau tương đương với nhau, nó nên in "Bạn gõ những điều tương tự. " Nhưng elsewise, nó sẽ in, "Bạn gõ những điều khác nhau, "phải không? Có vẻ rất, rất đơn giản. Nhưng, tuy nhiên, nếu tôi thực sự cố gắng để viết chương trình này, có vẻ như rằng ngay cả khi tôi đầu vào các dây cùng chính xác, nó vẫn còn in ra, "Bạn gõ những thứ khác nhau! " Có ai muốn có một bắn vào lý do tại sao chương trình này luôn trả lời rằng các yếu tố đầu vào là khác nhau, thậm chí khi từ chính họ đều giống nhau? Vì vậy, nếu tôi được input-- David tình yêu sử dụng một ví dụ như mẹ, phải không? Chữ thường M-O-M cho S, T bằng chữ thường M-O-M. Nếu tôi chạy này thông qua mã, tại sao nó in ra "bạn gõ việc khác nhau?" Có ai cần biết thêm thời gian để suy nghĩ về điều này? OK, tôi nghĩ rằng chúng tôi đang tốt. Yeah? Đung OK, vì vậy nó là một cái gì đó về nơi nó được lưu trữ trong bộ nhớ, phải không? GIÁO SƯ: Yep. Đung đâu nó giống như, nếu điều này string s được lưu trữ ở bộ nhớ spot-- Tôi phát minh ra this-- là số không. GIÁO SƯ: Chắc chắn rồi. Đung Và chuỗi t được lưu trữ ở bộ nhớ vị trí, như, 167, và sau đó zero không bằng 167. GIÁO SƯ: Chính xác. OK, vì vậy hãy nhớ đáng kinh ngạc này mạc khải chúng ta giải thích cho các bạn Tuần vừa qua, mà dây không thực sự tồn tại? Khi chúng ta tạo ra một cái gì đó gọi là chuỗi chúng tôi, trong thực tế, tạo ra một cái gì đó gọi là char sao. Mà tất cả đó là là một con trỏ trỏ tới một chuỗi hoặc một mảng các ký tự. Và như vậy trong ví dụ này, nếu tôi là đầu vào M-O-M cách rằng máy tính của tôi sẽ lưu trữ nó là trong bộ nhớ dấu gạch chéo ngược bằng không, phải không? Những bốn ký tự, ký tự, sẽ được lưu trữ ở đâu. Và sau đó bốn ký tự, dấu gạch chéo ngược bằng không, được lưu trữ ở một nơi khác, phải không? Tôi không có ý tưởng mà các địa chỉ là, họ đang ở đâu đó trong máy tính của tôi. Nhưng tôi không biết chính xác họ đang ở đâu. Khi tôi tạo ra một chuỗi s, tất cả những gì thực sự là là một con trỏ trỏ tới bắt đầu của chuỗi này. Và khi tôi tạo ra giá trị t này, tất cả đó là một con trỏ để ở đây. Và như vậy khi bạn đang cố gắng đánh đồng và kiểm tra để xem nếu s là equals bằng t, máy tính thực sự chỉ trở lại bạn địa chỉ của m này và địa chỉ của m đó. Và bởi vì họ hai phần riêng biệt của dữ liệu được lưu trữ trong hai khác nhau địa chỉ trong máy tính của bạn, máy tính của bạn sẽ không bao giờ nhận ra chúng như là giống nhau. Có ai muốn cung cấp cho một shot tại những gì chúng tôi sẽ phải làm gì nếu chúng ta muốn sửa này và có một chương trình đang chạy đúng thay cho? Hãy suy nghĩ về điều đó trong một vài giây. Những gì chúng ta cần phải thay đổi để có được chức năng chương trình này cách chúng ta muốn nó hoạt động? Yeah, muốn lấy một đâm vào nó? Đung chúng ta có thể cố gắng để tới đích của các con trỏ và kiểm tra thông qua mảng? GIÁO SƯ: Đó là một cách để làm điều đó. Vì vậy, tên của bạn là gì nữa? Tôi xin lỗi, nhắc nhở tôi. Zee: Zee. GIÁO SƯ: Yeah, vì vậy những gì Zee đề nghị hoàn toàn sẽ làm việc. Bên phải? Chúng tôi có thể tới đích của con trỏ và thực sự đi và truy cập các dữ liệu vật lý bên trong ở đây. Và chúng ta chỉ có thể so sánh toàn bộ màn hình. Chúng tôi có thể nói, OK, con trỏ, cho tôi biết những gì bên trong ở đây. Nó sẽ trả lại một m. Và tôi sẽ nói, con trỏ, cho tôi biết những gì bên trong ở đây. Quay trở lại một m. Do những trận đấu? Vâng. Sau đó chúng tôi di chuyển trên. Chúng tôi tiếp tục kiểm tra toàn bộ hai chuỗi tất cả các con đường lên cho đến khi cuối cùng và xem những người đều bình đẳng, nếu tất cả các giá trị bằng nhau. Và nếu tất cả các giá trị bằng nhau, sau đó chúng ta biết các dây là đúng sự thật. Tuyệt đối, đó là cách chúng tôi sẽ làm điều đó? Có ai nhầm lẫn về những điều này? Toàn bộ khái niệm như thế nào dây thực sự chỉ là con trỏ, và làm thế nào họ không thực sự tồn tại? Và tại sao chúng tôi nhận được lỗi giống như cách chúng ta có được nó? Bởi vì tôi đảm bảo các bạn, con trỏ và phân bổ chuỗi và bộ nhớ sẽ đi lên. Yeah? Đung [Không nghe thấy] dereference nó, bạn chỉ cần đặt một ngôi sao [Không nghe thấy] GIÁO SƯ: Đúng vậy. Vì vậy, để derererence một phương tiện con trỏ để đi đến địa chỉ của con trỏ và có được các dữ liệu, các giá trị đó. Và cách để làm điều đó là con trỏ sao. Đừng nhầm lẫn đó. Đung [không nghe được]. GIÁO SƯ: Yeah. Đung Vì vậy, bạn chỉ có thể viết nếu sao s bằng equals sao t. GIÁO SƯ: Vâng, không có. Không. Đung Đó là không đủ tốt, phải không? GIÁO SƯ: Nó không phải, bởi vì bạn chỉ kiểm tra thư đầu tiên. Bạn có thể sẽ đến cần một số loại vòng mà lặp qua mỗi đơn nhân vật trong cả hai chuỗi. Yeah. Vì vậy, nếu bạn muốn chỉ cần kiểm tra xem nếu họ bắt đầu với cùng một điều, bạn có thể làm gì nếu, ngôi sao s tương đương với sao t. Sau đó, bạn biết rằng ít nhất họ bắt đầu với cùng một nhân vật. Yeah? Đung vậy cách giải quyết bạn đó sẽ là như một nhúng cho vòng lặp hoặc con trỏ? GIÁO SƯ: Yeah. Khá nhiều chỉ là một vòng lặp for. Hãy nhớ rằng, David đã đề cập trong lớp các đường cú pháp miễn phí? Và ông đã có điều này rất Điều khó hiểu của sao t cộng một, nơi nó sẽ tích hợp thông qua và nó di chuyển con trỏ? Cách dễ dàng hơn làm đây chỉ là t i. Vì vậy, nó chỉ là một mảng. Cách mà bạn sẽ có một đối vòng lặp chạy từ số không đến tôi, nơi i là độ dài của chuỗi, bạn có thể chỉ viết rằng thay vì làm toàn bộ con trỏ, điều tham khảo. Vì vậy, những điều này là chính xác tương đương trong máy tính của bạn. Các bạn có lẽ sẽ không cần phải biết rằng, nhưng nó là tốt để chỉ loại có ở phía sau tâm trí của bạn. Chỉ cần biết rằng máy tính công nhận các khối khác nhau của mã như điều tương tự. Bởi vì điều này chỉ là thêm rất nhiều người sử dụng thân thiện cho chúng tôi để trình bày nó như nó một mảng. Nó chỉ là dễ dàng hơn. Đung Vì vậy, sử dụng strlen để như thế, get-- GIÁO SƯ: Yeah. Đung OK. GIÁO SƯ: Bạn có thể sử dụng strlen hoặc, nếu bạn không có strlen bạn chỉ có thể làm lên cho đến khi bạn nhấn dấu chéo ngược zero cho cả hai. Hoặc là sẽ làm việc. Yeah. Đung Vì vậy, nó để tới đích của mỗi nhân vật duy nhất nếu chúng ta thực sự viết mã này, chúng tôi chỉ có thể làm t khung i thích với các ngôi sao ở phía trước của nó? GIÁO SƯ: Yeah, bằng equals s khung i, và sau đó tiếp tục di chuyển i xuống cho đến khi bạn nhấn kết thúc. Vâng, đó là những gì bạn sẽ làm gì. Và tôi thực sự sẽ có một tiếp theo ví dụ khi chúng ta thực sự viết strlen vậy các bạn sẽ loại của nhận được để chơi xung quanh với nó một chút. Vì vậy, tất cả mọi người là rõ ràng về chỉ bộ nhớ, chuỗi, con trỏ, địa chỉ chất lượng? Một số khái niệm cấp độ cao hơn là bạn sẽ chắc chắn cần phải biết về các bài kiểm tra Ngày mai. Được rồi. Tốt. Vâng. OK, vì vậy có một điều mà chúng ta sẽ còn hỏi bạn, như chúng ta làm mỗi năm trên một bài kiểm tra, là, giả sử rằng bạn đã quên (mà chúng ta dường như quên làm hàng năm) trong đó tập tin tiêu đề strlen được khai báo. Và vì vậy chúng tôi phải viết lại nó chính mình. Dưới đây là một danh sách các hướng dẫn chúng tôi có thể giới thiệu bạn kẻ nơi bạn có thể giả định rằng s chuỗi sẽ không được null. Bạn có thể giả định rằng s sẽ được chấm dứt với một dấu gạch chéo ngược zero. Vì vậy, bạn biết đó là những gì nó sẽ kết thúc bằng. Và, ví dụ, rằng chiều dài của hello sẽ là năm. Vì vậy, bạn có thể giả định rằng xin chào sẽ là năm, H-E-L-L-O. Bạn không cần phải giả định rằng Mặt sau không có tài khoản cho chiều dài. Điều cuối cùng này ở đây, không lo lắng về số nguyên tràn. Có ai nhớ tràn số nguyên là gì? Đung Goes ngoài chiều dài của [không nghe được]. GIÁO SƯ: Vâng, bạn có thể giải thích một chút, điều đó có nghĩa là gì? Đung Vì vậy, tôi đoán nó đi lại với ví dụ cắt bỏ trước đó. Nhưng nếu bạn có rất nhiều chỉ số mà vượt qua được số bit mà bạn thực sự có thể gán nó rằng nó sẽ chỉ là loại cắt đứt. GIÁO SƯ: Vâng, như vậy trên một điển hình máy tính, bao nhiêu bit để chúng ta có? Đung 32? GIÁO SƯ: Yeah, 32, phải. Và đó là, những gì, bốn tỷ, hai tỷ? Bốn tỷ đến bốn tỷ nguyên dương, phải không? Hai tỷ tiêu cực, hai tỷ tích cực, phụ thuộc vào cách bạn muốn làm điều đó. Và do đó, về cơ bản chúng ta có thể có đủ số nguyên mà có thể đi lên để hai đến ngày thứ 31 trừ đi 1, phải không? Bởi vì một khi chúng ta đánh hai đến lần thứ 32, chúng ta làm không có nhiều bộ nhớ trong máy tính của chúng tôi. Và như vậy, về mặt lý thuyết, tôi có thể đưa ra một số đó là, như, hai đến thứ 46. Đó là một con số khổng lồ-ass, nhưng về mặt lý thuyết bạn có thể. Và như vậy tràn số nguyên là nếu bạn cố gắng tạo ra một số nguyên mà đi xa hơn những gì máy tính của bạn có khả năng lưu trữ. Và như vậy các bạn đã dành Ví dụ này không có lo lắng về chúng tôi đem lại cho bạn một người khổng lồ chuỗi đó là hai với ký tự thứ 32 Dài. Đó sẽ thực sự có ý nghĩa. Được rồi, vì vậy tôi chỉ cần đi để cung cấp cho các bạn cấu trúc cơ sở của việc này. Bạn sẽ tạo ra một chức năng gọi là int strlen nơi một vượt qua trong, một ngôi sao char, hoặc chuỗi, con trỏ đến chuỗi gọi là s. Được rồi, tất cả mọi người sao chép mà xuống. Mát. Oops-- cách khác. Vì vậy, đây là loại giống như một mảnh khó của vấn đề, vì vậy tôi sẽ cung cấp cho các bạn có thể năm tới sáu phút để loại động não và viết chức năng này ra. Đung Chúng tôi làm không tài khoản cho [Không nghe thấy], chúng ta không cần phải sử dụng số nguyên? GIÁO SƯ: Không, bạn không. Tôi sẽ cung cấp cho các bạn một gợi ý. Một vòng lặp trong khi có thể rất hữu ích ở đây. Yeah. Dưới đây là Cục kẹo. Kẹo cũng sẽ có sẵn cho các bài kiểm tra, tôi nghĩ. Vì vậy, các bạn sẽ được tất cả có đường vào ngày mai. Có thể I-- bạn đã nhận nó. Đung OK. GIÁO SƯ: Yeah. Có lẽ 30 giây nhiều hơn hoặc lâu hơn. Được rồi, nếu bạn không được thực hiện, không phải lo lắng. Chúng tôi sẽ chuyển qua điều này với nhau. ĐƯỢC. Vì vậy, tôi sẽ chỉ bố trí các Cấu trúc cơ bản cho các chức năng này tại đây. Int strlen. Thứ nhất, không ai muốn nói tôi biết rằng int nghĩa? Chúng tôi cần phải có chức năng này. Đung strlen [không nghe được]. GIÁO SƯ: Chính xác. Vì vậy, bất cứ điều gì xảy ra ở đây, chúng ta cần phải trả lại một số nguyên. Và theo quy định tại các spec, chúng tôi muốn return-- Đi cho nó guys, chỉ tiếp tục đi. Tất cả đều tốt. Ăn tất cả vì vậy tôi không có để đưa nó trở lại, thực sự. Các int chỉ có nghĩa rằng bạn đang sẽ được trả lại một số nguyên. Char này sao s là gì? Điều đó có nghĩa là gì? Đung Giống như, những gì là đầu vào trong. GIÁO SƯ: Chính xác. Và những gì là gần như giống như là char sao? Đung String? GIÁO SƯ: Chính xác. Vì vậy, tất cả chúng ta đang làm là cho này một con trỏ đến một chuỗi. ĐƯỢC. Mát. Ngoài ra, đừng quên, nếu chúng ta quên để cung cấp cho bạn những dấu ngoặc, đừng quên để viết chúng mình. Bởi vì về mặt lý thuyết, mã của bạn là không chính xác nếu bạn quên để viết chúng. Chỉ cần luôn luôn chú ý. Giống như, những điều nhỏ mà bạn không để ý khi bạn đang lập trình trên máy tính xách tay của bạn, vì máy tính xách tay của bạn nào đó cho bạn? Đừng quên khi bạn đang viết bằng tay. Yeah? Đung Nhưng làm thế nào không chính xác? Giống như, để chúng ta có được toàn bộ vấn đề sai? GIÁO SƯ: Không, không. Đừng lo lắng. Nó thực sự là lý thuyết có thể cho bạn để có được đầy đủ các điểm trên một câu hỏi thậm chí nếu mã của bạn sẽ không bao giờ chạy trong cuộc sống thực. Tôi đề nghị bạn không thử để làm cho điều đó xảy ra. Ví dụ, như thể mọi thứ mà ở đây là đúng, nhưng bạn quên một tràng hoặc một khung, mã của bạn sẽ không thực sự chạy. Nhưng chúng ta có thể thương xót. Yeah? Đung Bạn phải nhận xét về chữ viết tay của chúng tôi? GIÁO SƯ: Không, không, không lo lắng về điều đó. Không có ý kiến. Phong cách nên được tốt. Như thế, không Smush tất cả mọi thứ trên một dòng. Chúng tôi sẽ không được hạnh phúc với bạn nếu bạn làm điều đó. Có ai muốn cung cấp cho tôi những dòng đầu tiên? Gợi ý, nó rất dễ dàng. Yeah? Đung Int, n bằng số không. Chỉ cần thiết lập truy cập. GIÁO SƯ: Vì vậy, chúng tôi muốn có một số sắp xếp của một quầy, phải không? Tôi chỉ sẽ đặt tên nó là "đếm" vì lợi ích của khả năng đọc. Những gì chúng tôi muốn thiết lập nó bằng? Đung Zero. GIÁO SƯ: Yep. Dấu chấm phẩy. Nó cũng phẩy vẽ rất lạ. Chỉ cần thực hành làm điều đó. Vì vậy, chúng tôi muốn đầu tiên có một quầy của kiểu int. Bởi vì chúng tôi muốn đếm lên như thế nào nhiều ký tự hoặc chữ cái trong chuỗi này, phải không? Bước đầu tiên rất dễ dàng. OK, phức tạp hơn có thể một chút bây giờ, làm sao chúng ta phải làm như vậy? Có ai muốn cung cấp cho tôi những dòng mã mà có thể giúp vòng lặp thông qua bất cứ điều gì đây? Yeah, linh hồn dũng cảm ở phía sau? Đung OK, vì vậy trong khi điểm dấu hoa thị, các yeah, ngôi sao của s, không phải bằng số không, sau đó làm một cái gì đó? GIÁO SƯ: Đó là thực sự, thực sự gần gũi. Thực sự gần gũi. Vì vậy, tôi sẽ giải quyết hai điều đó. Trước hết, nó không chính xác không. Nó là gì? Đó là null terminator, đó là dấu gạch chéo ngược zero. Vì vậy, chúng khác nhau ở về cách thức chúng được lưu trữ. Vì vậy, bạn đang thực sự gần gũi. Và thứ hai, chúng tôi không muốn chỉ cần di chuyển con trỏ. Chúng tôi muốn thực sự truy cập vào các giá trị, phải không? Và do đó, làm thế nào để chúng tôi làm điều đó? Rất dễ. Đừng nghĩ về con trỏ, không nghĩ về những kỷ niệm. Quay trở lại với tuần hai của khóa học này. Đung [không nghe được]. GIÁO SƯ: Tính, nhớ không? Dây là gì? Làm thế nào chúng được lưu trữ trong bộ nhớ? Đung Họ đang lớn lên. GIÁO SƯ: Họ được nêu lên. Vì vậy, làm thế nào để chúng ta truy cập mỗi nhân vật bên trong? Đung [không nghe được]. GIÁO SƯ: Chính xác. Vì vậy, những gì diễn ra bên trong while-- đây? S - Đung I. GIÁO SƯ: Oh, tôi không tồn tại, đúng không? Đung Oh, đếm? GIÁO SƯ: Chúng tôi có thể chỉ sử dụng số đếm, không có thể chúng ta? Đung Xin lỗi, tôi gọi nó là i. GIÁO SƯ: Yeah, đó là tất cả tốt. Chúng tôi có một biến lên ở đây đó là đã được khai báo là truy cập của chúng tôi. Vậy tại sao chúng ta không sử dụng để di chuyển qua các vòng lặp trong khi? Điều đó có ý nghĩa? Vì vậy, trong khi s của count-- không ai muốn để cung cấp cho tôi những gì sẽ xảy ra sau đây? Đung Nó không bằng. GIÁO SƯ: Liệu không bằng nhau, phải không? Nó nổ bằng, dấu chấm than bằng, bất cứ điều gì các bạn muốn gọi nó không equal-- Đung [không nghe được]. GIÁO SƯ: Yeah. Ghi giá duy nhất là cho một char, dấu ngoặc kép là một chuỗi ký tự. Hãy cẩn thận khi sử dụng chúng. Vì vậy, khi chúng tôi đang tìm kiếm thông qua mảng, nhân vật cuối cùng, chúng tôi biết chúng tôi không muốn nó là dấu gạch chéo ngược zero. Vì vậy, trong khi. Chúng tôi không phải là ở phần cuối của chuỗi. Những gì chúng tôi muốn làm bên trong? Đung Chúng tôi muốn thêm vào toa cho nên nó đếm cộng cộng? GIÁO SƯ: Chính xác. Vì vậy, ở đây chúng tôi đang đi làm đếm, đếm cộng cộng. Thiếu một dòng nữa. Chúng tôi gần đó. Chúng ta đang quên để làm gì? Đung Quay trở lại không? GIÁO SƯ: Bạn muốn trở về zero? Đung Không, trở về strlen. Chờ đợi. GIÁO SƯ: nào được lưu giữ trong? Đung Count. Đếm. GIÁO SƯ: Chính xác. Vì vậy, ở đây chúng ta sẽ quay trở lại đếm. Bởi vì những gì chúng tôi làm gì ở đây ultimately-- chúng ta có một biến đếm đó là sẽ tăng thông qua chuỗi của chúng tôi. Chúng tôi sẽ tiếp tục đi, giữ đi, xung quanh và xung quanh trong vòng lặp này. Và trong khi chúng tôi không vào cuối năm nay chuỗi, mà là terminator null. Và mỗi lần chúng tôi đi qua nó, chúng ta đang thêm để truy cập của chúng tôi. Và chúng ta sẽ tiếp tục cùng trong mảng này. Và cuối cùng, một khi chúng ta nhấn terminator null, chúng tôi biết, oh, chúng ta có thể phá vỡ, trả lại đếm. Chúng tôi có strlen của chúng tôi. Liệu mọi người có được như thế nào điều này đã được thực hiện? Trong khi loops-- tôi biết chúng tôi có không thực hiện quá nhiều với họ, nhưng chúng thường rất, rất hữu ích nếu bạn không biết những gì bạn đang dừng điều kiện nhất thiết phải được. Câu hỏi? Đung chúng ta có thể viết rỗng với điều kiện thời gian không? GIÁO SƯ: Trong khi? Vâng, như vậy trong vấn đề này tôi đã có bạn kẻ giả định rằng s sẽ không được null. Bởi vì nhớ, về mặt lý thuyết, nếu tôi đưa cho bạn một con trỏ đó là quá lớn của bộ nhớ, nó sẽ cung cấp cho bạn vô giá trị, phải không? Đó là những gì các hành hệ thống sẽ làm gì. Vì vậy, nếu tôi không nói với bạn giả s sẽ là null, bạn cần phải kiểm tra. Vì vậy, ở đây, bạn sẽ làm gì, nếu s bằng bằng null, trả lại một. Một cái gì đó như thế. Đung [Không nghe thấy] zero. GIÁO SƯ: OK, tôi sẽ nói cho bạn lý do tại sao chúng ta không thể làm điều đó. Vì nhớ trong bộ nhớ, phải, ở đây. Chúng tôi sẽ đi đây. Bạn đã có khối khổng lồ bộ nhớ tất cả với lưới mà cửa hàng giá trị khác nhau, phải không? Và vì vậy tất cả một chuỗi is-- cho Ví dụ, nếu chúng ta muốn đầu vào hello, nó sẽ là H-E-L-L-O dấu gạch chéo ngược bằng không, phải không? Và sau đó những người hiểu biết, như ngẫu nhiên vật ở đây sau khi nó. Chúng tôi không thực sự biết những gì đang có. Và do đó, nếu bạn đã làm thay vì dấu gạch chéo ngược bằng không, null, nó có thể không được null. Bởi vì nó chỉ có thể có nghĩa một số điều ngẫu nhiên khác không thuộc trong chuỗi của bạn. Và do đó, cách mà chúng ta luôn luôn biết rằng một chuỗi kết thúc là với một dấu gạch chéo ngược zero. Và đó là cách chúng tôi luôn kiểm tra để xem kết thúc của một chuỗi. Null, tất cả những phương tiện là nếu bạn có một con trỏ không tồn tại, trước hết, hoặc nếu bộ nhớ của bạn chỉ là quá lớn mà Bạn không thể trả lại nó, sau đó nó sẽ là vô giá trị. Vì vậy, phải rất cẩn thận khi phân biệt sự khác biệt giữa rỗng và các dấu gạch chéo ngược zero. Yeah. Mọi người đều OK với điều này? ĐƯỢC. Vì vậy, tôi đã có các bạn viết ra strlen. Khả thi, chúng tôi cũng có thể yêu cầu bạn viết ra A đến tôi, hãy nhớ rằng "Atwoa" hoặc bất cứ điều gì các bạn muốn gọi nó? Đó là chức năng trong Vigenere và Caesar, mà chuyển đổi một giá trị Ascii để một số nguyên? Điều đó cũng đã đưa ra các câu đố về quá khứ các chức năng chúng tôi yêu cầu bạn viết. Khá nhiều bất kỳ chức năng mà bạn đã sử dụng và là rất dễ dàng để viết cho mình, cảm biến như là thấp, là thượng, hạ, để phía trên. Chức năng mà sẽ chuyển đổi một chuỗi từ chữ thường sang chữ hoa. Chúng ta đều biết làm thế nào để làm điều đó, phải không? Nó khá dễ dàng. Chỉ muốn chắc chắn rằng bạn can-- đó là quá trình suy nghĩ tương tự. Bạn chỉ cần lặp qua và bạn biến những thứ. Bạn có thể đếm hoặc khi bạn biến những thứ khác nhau. Tôi sẽ suggest-- tôi không biết nếu chúng ta đang đi để yêu cầu bạn ghi nhớ những gì vốn A hoặc Z vốn, hoặc chữ thường A hoặc chữ thường z là trong Ascii, nhưng tôi sẽ đề nghị có lẽ bằng văn bản rằng xuống trong trường hợp chúng tôi làm. Chỉ cần như vậy các bạn có một tài liệu tham khảo. Giống như hoa Một là, những gì, 197? Và sau đó là chữ thường như 50 cái gì đó. 65, yeah, có bạn đi. Vì vậy, chỉ cần khá nhiều biết sự khác biệt giữa chúng là 32. Đó là khá quan trọng. Yeah. Tôi tốt về điều này? ĐƯỢC. Đung Chúng ta có thể về mặt lý thuyết viết một số của các xuống cũng trên little-- của chúng tôi GIÁO SƯ: Bạn về mặt lý thuyết chỉ có thể sao chép các chức năng xuống. Đung. Đung Không [không nghe được]. GIÁO SƯ: Các bạn có một tấm. Các bạn có một tờ ghi chú. Bạn có thể gõ nó. Bạn có thể viết nó. Bạn có thể làm bất cứ điều gì bạn muốn với nó. Yeah. Vì vậy, về mặt lý thuyết, nếu bạn muốn, đi cho. Đung [Không nghe thấy] nhưng chúng ta không thực sự nhất thiết cần phải nhớ giá trị, chúng ta có thể chỉ sử dụng để trên hoặc để Chức năng thấp hơn, phải không? GIÁO SƯ: Yeah. Nhưng nếu chúng ta đưa cho bạn một câu hỏi mà nói viết để phía trên, sau đó bạn sẽ cần phải viết nó. Vì vậy, các bạn có thể giả định rằng bạn kẻ có quyền truy cập vào tất cả các chức năng, nhưng nếu bạn muốn sử dụng để trên hoặc để thấp hơn, những gì bạn cũng phải làm gì? Đung [Không nghe thấy] sử dụng CS50 [Không nghe thấy] GIÁO SƯ: Có CS50.h? Hãy cẩn thận đó. Vì vậy, để phía trên, để hạ thấp, là trên, là thấp hơn, chức năng có liên quan đến thao tác chuỗi là tất cả nằm trong vùng Ascii hoặc trong các thư viện toán học hoặc trong thư viện string. Vì vậy, nếu các bạn sử dụng những chức năng, hãy cẩn thận để nhớ bao gồm các tiêu đề đó. Vì vậy, có lẽ còn cái gì bạn muốn bao gồm trong bảng của bạn, tiêu đề là gì? Các thư viện là gì bạn đã sử dụng? Những chức năng là bên trong các thư viện? Nó quan trọng. Yeah? Đung Có thể chúng ta chỉ cop ra ngoài và làm hashtag thông qua việc hoàn toàn mỗi lá thư chúng tôi đã bao giờ thấy như trên tất cả các câu hỏi? GIÁO SƯ: Bạn có thể. Tôi không biết làm thế nào hạnh phúc chúng ta sẽ được đến lớp đố rằng khi mỗi đoạn mã là hai lần miễn là nó cần phải được. Tôi không biết, chúng ta có thể cất cánh một điểm cho phong cách. Nhưng về mặt lý thuyết của bạn code sẽ là đúng. Các bạn có thể cop ra và chỉ cần bao gồm tất cả mọi thứ. Đó là tốt quá, yeah. Đung [không nghe được]. GIÁO SƯ: Yeah. Tôi sẽ đề nghị không làm điều đó mặc dù. Yeah. Đung Cool. GIÁO SƯ: Câu hỏi rất hay. Đung Vì vậy, trường hợp xấu nhất. GIÁO SƯ: Các trường hợp xấu nhất. Nếu bạn hoàn toàn quên đi, bạn có thể làm điều đó. Yeah. Yep, mã là phải có. Tôi đã sử dụng n thay vì đếm nhưng, bạn biết, bất cứ điều gì nổi thuyền của bạn. Đung đợi, vì vậy chúng tôi sẽ không phải hashtag bao gồm vì chúng tôi bắt đầu từ int? GIÁO SƯ: Yeah, tôi chỉ là giả định rằng chúng tôi đã được yêu cầu viết các chức năng. Nếu bạn muốn được an toàn, bạn có lẽ có thể đặt nó ở đó. Nhưng tôi chỉ không bận tâm, yeah. Tôi thậm chí không biết nếu bạn cần bất kỳ thư viện này. Bởi vì bạn không thực sự in ra bất cứ điều gì hay bất cứ điều gì, phải không? Yeah, tôi không biết nếu bạn cần một thư viện. ĐƯỢC. Đây cũng là nhiều hơn một chút cùng các dòng của các thao tác bộ nhớ. Kiểu này chút khéo léo. Nghĩ về điều này. Bạn có một chức năng gọi là func. Tôi có thể đặt tên nó là bất cứ điều gì, nhưng tôi chọn để đặt tên cho nó func. Tôi có nó trên chính mình. Hãy nhớ rằng, bạn muốn có một chức năng sau khi chính bạn, bạn muốn chắc chắn rằng bạn bao gồm các mẫu thử nghiệm đầu trang. Nhưng trong trường hợp này nó quá ngắn mà tôi cảm thấy rằng tôi có thể chỉ bao gồm nó trên đỉnh chính. Tôi không cần phải có các mẫu thử nghiệm, vì nó đã viết ở trên. Vì vậy, tất cả tôi đang làm trong chức năng chính của tôi đang tạo ra số nguyên x bằng 10. Tôi gọi hàm func của tôi, và sau đó in lên một cái gì đó. Và sau đó đó là thực sự những gì func là làm. Các bạn muốn suy nghĩ qua chuyện này. Bởi vì đó là một chút khéo léo. Nó rất, rất khó khăn, thực sự. Hãy suy nghĩ thông qua những gì này chương trình sẽ được xuất ra. Tôi sẽ cung cấp cho các bạn hai phút. Tốt các cuộc thảo luận? Đung Yeah. GIÁO SƯ: Yeah. Được rồi, vì vậy đây là khó khăn cho một lý do. Và đây là lý do tại sao tôi muốn mang đến sự chú ý của mọi người. Có ai muốn để cho tôi một gợi ý, một nỗ lực? Điều này sẽ in ra? Hoàn toàn tốt nếu bạn đã sai. Yeah? Đung Tôi nghĩ rằng đó là 100 và sau đó 10 trên hai dòng riêng biệt. GIÁO SƯ: Và một 10? Có ai có bất kỳ dự đoán nào khác không? Yeah? Đung Có lẽ chỉ vì 10 func lại không trả về bất cứ điều gì? GIÁO SƯ: OK, vì vậy chúng tôi có đoán số một là đoán số hai là chỉ cần đi để in ra 10. Có ai có bất kỳ dự đoán nào khác không? ĐƯỢC. Vì vậy, chúng ta hãy đi bộ qua đây, phải không? Bất cứ khi nào bạn nhận được một đoạn mã, không chỉ nhìn vào nó và như thế nào, ah, đó là rất nhiều thứ! Tôi thấy bối rối! Giống như, bình tĩnh mình xuống. Chỉ cần biết rằng bạn chỉ có thể xem xét thông qua dòng mã của dòng. Đó là tất cả nó là. Nó giống như đọc một cuốn sách. Vì vậy, với bất kỳ chức năng, chúng tôi luôn luôn bắt đầu từ chính. Vì vậy, chúng ta sẽ bắt đầu từ int void main, ngay cả những chương trình của đã chạy xuống, phải không? Bắt đầu ở trong void main. Int x = 10. Vì vậy, tôi sẽ xóa này. Tôi sẽ vẽ các bộ nhớ chỉ để bạn guys có thể loại xem những gì đang xảy ra. Ghi xuống đây chúng tôi có chồng của chúng tôi? Up ở đây chúng tôi có của chúng tôi đống ở một nơi nào ở đây. Đống lớn lên, phải không? Và trong ngăn xếp, bạn có nguồn điện hoạt động tốt như tất cả các biến địa phương nguồn điện. Vì vậy, ở đây, int x bằng 10. Trong chức năng chính của chúng tôi chúng tôi tạo ra một biến gọi là x. Chúng tôi đang thiết rằng bằng 10. Tại đây bạn đã có một số x, và bạn thiết rằng bằng 10, ngay, trong chính. Tất cả mọi người tốt? Chức năng. Vì vậy, bây giờ, trong chính chúng tôi chức năng, chúng tôi đang gọi điện thoại các chức năng chúng tôi đã viết ở trên. Vì vậy, bây giờ chúng tôi đang nhập vào chức năng thứ hai. Chúng ta sẽ tạo ra một biến int x = 100. Điều gì đang xảy ra ở đây vào stack? Điều gì xảy ra khi bạn gọi một chức năng tạo ra các biến mới? Điều gì xảy ra ở đây vào stack? Đung [Không nghe thấy] đống trên đầu trang? GIÁO SƯ: Yeah. Vì vậy, nó thực sự tạo ra một bản sao. Và nó loại cọc trên đầu trang. Hãy suy nghĩ của stack-- một chồng sách, một chồng bất cứ điều gì. Đống trên đầu, đầu tiên ở cuối cùng ra, kéo vào, đầu ra. Vì vậy, nó sẽ tạo ra một x ở đây. Điều đó sẽ có tất cả funcs biến. Thật tuyệt. Vì vậy, bây giờ chúng tôi có hai x khác nhau mà đại diện cho hai việc rất khác nhau. Sau đó chúng ta sẽ in ra các số nguyên x. Vì vậy, hãy in 100, phải không? Bởi vì ở đây đó là 100. Vì vậy, đó là điều đầu tiên rằng nó sẽ in ra. Khi trở về chức năng này không có gì, bây giờ mà chức năng, đó dòng trong chính hoan thanh. Mọi người đều tốt với tôi cho đến nay? Vì vậy, chúng tôi bây giờ thông qua hai trong số ba dòng chức năng chính của chúng tôi. Bây giờ chúng ta đang đi vào dòng thứ ba. Chúng tôi đang đi để printf. X này trong chính là gì? Không đại diện cho những gì? Giá trị gì là x bây giờ? Đung 100. GIÁO SƯ: Đó là 100? Đung Still 10. GIÁO SƯ: Vẫn còn 10. Yeah. Bởi vì nhớ, trong vòng func của chúng tôi, x = 100. Nhưng nếu chúng ta quay trở lại chức năng chính của chúng tôi, biến đó được lưu trữ trong một nơi khác nhau trên stack của chúng tôi. Vì vậy, bây giờ chúng ta cần phải quay trở lại chính stack, nguồn điện biến địa phương. Và đây là x bằng 10. Và như vậy chúng ta sẽ in ra 10. Vì vậy, cô đã hoàn toàn đúng. Chúng ta sẽ có đầu ra của 100 và 10. Yeah? Đung Khi bạn malloc, là nó heap hoặc stack mà là [Không nghe thấy]? GIÁO SƯ: Khi bạn malloc, bạn đang dùng bộ nhớ từ đống và phân bổ nó. Vì vậy mà bạn không có để gây rối với những chuyện này. Vì vậy, tôi đoán takeaway lớn hơn đây là một cái gì đó gọi là phạm vi. Đối với những người bạn của những người đang ở phiên xét đêm qua, chúng tôi nói chuyện ngắn gọn về việc này. Phạm vi xác định như thế nào và khi biến của bạn tồn tại. Hoặc trong cái khung làm biến của bạn tồn tại. Khá nhiều các quy tắc của ngón tay cái thường là, variables-- của bạn nếu bạn tạo ra chúng bên braces-- xoăn chúng tồn tại chỉ bên trong những dấu ngoặc nhọn. Vì vậy, ví dụ như chức năng của chúng tôi func, có thấy hai dấu ngoặc. Nếu bạn đang tạo bất cứ điều gì bên trong của nó, rất có thể là tất cả các bạn đang làm là tạo ra một ngăn xếp và lưu trữ mà có. Cùng một điều trong chính. Đó chỉ được lưu trữ bên trong của chính. Ngoài ra bạn muốn được rất, rất cẩn thận ở đây. Bởi vì phạm vi cũng vay bản thân để ví dụ khác nhau. Vì vậy, ví dụ một cho vòng lặp, cho int i bằng 0. Tôi là ít hơn, tôi không biết, 10. Tôi cộng cộng. Và bạn đã có mã bên trong của nó, phải không? Trường hợp nào thì biến này, i, thực sự chỉ tồn tại? Chỉ có bên trong cho bạn vòng lặp. Vì vậy, tôi đặt cược nhiều bạn guys có thể gặp phải lỗi này khi bạn đang làm chương trình ở psets của bạn. Bao nhiêu người trong các bạn đã cố gắng sử dụng i bên ngoài của một vòng lặp for và đã có một lỗi? Giống như một số nguyên unreferenced hay đại loại thế? Lý do tại sao điều đó xảy ra là bởi vì ở đây bạn tạo ra một cái gì đó mà chỉ tồn tại trong vòng lặp cho bạn. Và nếu bạn cố gắng sử dụng nó, tôi không thực sự tồn tại bên ngoài của nó. Vì vậy, về cơ bản là một máy tính nói rằng, tôi không biết những gì bạn đang nói về. Tất cả tôi biết là tôi đã được một ở đây, nhưng bây giờ không còn. Vì vậy, nếu tôi là để tạo ra một cho vòng lặp bên trong, phải không? Và tôi sẽ tạo khác, như int j, và nó có làm bất cứ điều gì. Và bạn có một mã bên trong của vòng lặp, j chỉ tồn tại ở đây. Nhưng đó cũng tồn tại trong tôi. Và như vậy j chỉ tồn tại trong này cho vòng lặp, trong khi tôi tồn tại trong toàn bộ điều. Mọi người đều rõ ràng? Cùng một điều với câu điều kiện nếu bạn muốn tạo ra bất cứ điều gì. Cùng một điều với các vòng trong khi nếu bạn muốn tạo ra bất cứ điều gì. Đó là một cái gì đó để được rất, rất cẩn thận về. Vì vậy, đây là một vấn đề thực sự tốt trong cảm nhận rằng nó đã chứng minh hai điều. Nó chứng minh đầu tiên, phạm vi. Và nó đã chứng minh cũng cấp phát bộ nhớ. Bởi vì các bạn nên biết rằng chức năng tăng trưởng trở lên trong ngăn xếp. Và đó là khi bạn gọi chức năng, bạn đang tạo ra về cơ bản một chồng mới của bộ nhớ. Điều đó là rất khác nhau từ nhớ những gì nguồn điện của bạn. Yeah. Whew! Mọi người đều OK về điều đó? Đó là khó hiểu. Chủ đề rất tốt để đi qua, vì có lẽ bạn đang sẽ nhận được một số khó khăn những điều như thế về các bài kiểm tra. Yeah. Mát. Tôi sẽ đưa bạn nhận được 100 trên một dòng và sau đó 10 ngày khác. Vâng, rất tốt. OK, bây giờ các bạn sẽ nhận được cơ hội để được các hỗ trợ kỹ thuật. Bạn có thể trả lời tất cả các đáng yêu email mà đôi khi tôi nhận được. Vì vậy, Dear Andi, tôi thấy tôi nghĩ rằng có điều gì đó đi sai với trình biên dịch của tôi. Tôi chắc chắn rằng mã của tôi là đúng, nhưng tôi tiếp tục nhận được một lỗi phân khúc mỗi khi tôi chạy. Điều gì đang xảy ra? Xin vui lòng giúp đỡ, rất nhiều tình yêu. Nếu các bạn có một cái gì đó như làm thế nào bạn sẽ trả lời? Đây là những thực sự rất phổ biến câu hỏi, chúng tôi sẽ yêu cầu bạn. Là nếu, chúng tôi sẽ cung cấp cho bạn một kịch bản, chúng tôi sẽ cung cấp cho chúng tôi đoán tốt nhất của bạn vào những gì đang xảy ra. Bất cứ ai cũng có một đâm vào những gì đang xảy ra? Yeah? Đung lẽ dereferenced sự null, một cái gì đó giống như con trỏ được chỉ vào một cái gì đó null. GIÁO SƯ: Yeah, mà muốn được một ví dụ khi đó sẽ xảy ra. Nhưng bức tranh lớn hơn là những gì về những gì đang xảy ra ở đây? Đung Có bạn đang cố gắng để truy cập vào bộ nhớ rằng bạn không nghĩa vụ phải có quyền truy cập vào? GIÁO SƯ: Chính xác. Vì vậy, suy nghĩ của một lỗi seg, một off giới hạn, khu vực hạn chế trong bộ nhớ mà bạn không nên chạm vào. Vì vậy, khá nhiều khi bạn đang cố gắng để index-- như ví dụ, bạn đã khai báo một mảng từ zero đến chín. Nhưng bạn cố gắng chạm vào thứ 10 giá trị, bạn không có quyền truy cập vào đó. Bởi vì bạn đã không khai báo nó. Và như vậy máy tính của bạn sẽ để nhìn vào đó như thế nào, uh oh, bạn đang cố gắng để đi ngoài giới hạn của một chỉ số. Tôi sẽ cung cấp cho bạn một lỗi phân khúc. Hãy nghĩ như phân khúc, phải không? Một đoạn thêm, lỗi là khi bạn cố gắng để chọc thủng một cái gì đó và bạn không cần phải có. Lỗi phân khúc là bất cứ lúc nào bạn cố gắng chạm vào mọi thứ mà bạn không nên chạm vào. Ví dụ như vậy thường là một chỉ số. Tất nhiên, nếu bạn đang cố gắng chạm vào đó là null, đó cũng sẽ làm việc tốt. Nếu con trỏ của bạn đã cố gắng để chạm vào những thứ không nên chạm vào, mà cũng có thể làm việc tốt. Điển hình nhất của bạn sẽ thấy điều này trong một mảng. Tất cả mọi người tốt? Đung Vì vậy, nếu bạn muốn để truy cập vào các điểm thứ 10 và chỉ có một giới hạn chín hoặc một cái gì đó. GIÁO SƯ: Yeah, chính xác. Khá nhiều. Mát. Thưa Andi. Vì vậy, chúng tôi đã có những tuyệt vời điều được gọi là các loại. Nếu Merge sort-- như chúng ta cưa trong ví dụ khi David đã làm toàn bộ điều trong class-- lý do tại sao, nếu nó như vậy nhanh hơn nhiều so với bất kỳ của các loại khác, tại sao chúng ta thậm chí còn bận tâm biết bất kỳ của các loại khác? Câu hỏi này thực sự yêu bạn là gì? Ba word-- là gì Đung thương mại-off là gì? GIÁO SƯ: Chính xác. Đó là những gì các câu hỏi đang hỏi. Thương mại-off giữa là những gì Hợp nhất phân loại câu bất kỳ loại nào khác không? Đung Đưa bộ nhớ, phải không? GIÁO SƯ: Bạn giải thích nhiều hơn một chút? Đầu tiên chúng ta hãy giải thích cửa hàng Merge. Làm thế nào để Merge sort làm việc? Đung Vì vậy, nó hoạt động bằng cách chia tất cả mọi thứ vào một nửa và sau đó đặt nó lại với nhau và phân bổ lại nó theo thứ tự, như mỗi khi bạn kết hợp bộ. GIÁO SƯ: Khá nhiều. Vì vậy, tôi có thể vẽ này ra, nhưng nó sẽ đưa tôi năm phút để vẽ nó ra. Nhìn lại để các slide phần nơi chúng ta đã Merge sort. Đúng như vậy. Vì vậy, cách các công trình Merge sort là nó chia mọi thứ trong một nửa, và sau đó nó chỉ trông vào giá trị đầu tiên của tất cả chúng và chỉ mà sắp xếp. Liên tục tạo ra các mảng mới và đặt mọi thứ ngày càng nhiều trong trật tự. Và như vậy, trong khi đó là thực sự, thực sự nhanh vì it's-- bạn biết, tìm kiếm nhị phân là n log n. Bạn đang tạo ra rất nhiều các mảng khác nhau mà bạn sử dụng một số tiền rất lớn của bộ nhớ. Và như vậy trong khi nó là nhanh hơn, thương mại giảm giá ở đây là bạn đang sử dụng nhiều bộ nhớ hơn. Và như vậy, gợi ý, các loại và tìm kiếm được bao phủ nhiều hơn trong năm nay hơn họ có được trong năm trước đó. Các bạn sẽ thấy rằng phản ánh phù hợp trên các bài kiểm tra. Tôi chắc chắn sẽ dành nhiều thời gian đi hơn những gì tất cả các loại khác nhau là, tìm kiếm nhị phân như thế nào, cách tuyến tính công việc tìm kiếm. Làm thế nào để có thể giả mã những người ra. Thời gian chạy là gì? Một cái gì đó giống như lần chạy là rất dễ dàng để sao chép xuống một tờ ghi chú, bên phải? Nó thực sự khó khăn khi bạn đang ở giữa các thử nghiệm và bạn phải hiểu rằng con số. Sao chép nó xuống. Tôi đảm bảo bạn bạn sẽ cần phải biết điều đó. Thương mại-off là gì? Trường hợp xấu nhất, kịch bản trường hợp tốt nhất cho tất cả trong số họ, rất nhận biết. Yeah? Đung Chúng ta có cần biết làm thế nào để mã Merge sort? Như thế, chúng ta cần phải nhớ những đệ quy? GIÁO SƯ: Tôi rất nghi ngờ nó, chỉ vì nó giống như khá phức tạp. Nhưng nó có thể không khả thi nếu chúng ta yêu cầu bạn sử dụng mã giả nó ra. Yeah. Yep, OK, một nhiều hơn. Điều này có thể đi lên trong bạn mảnh cuối cùng trong một chút. Yeah? Mọi người đã nghe thấy không? OK, vì vậy khá nhiều đầu tất cả, những gì loại của chương trình sẽ đem lại cho bạn một kết quả như thế này? Nhớ là chúng tôi yêu cầu bạn tìm hiểu về loại hình này mới của công cụ gỡ lỗi? Tên của nó là gì? Valgrind, phải Đó là một chương trình mà bạn có thể gọi đó là thể theo dõi tất cả các bộ nhớ bạn sử dụng trong chương trình của bạn và đang xảy ra. Vì vậy, nếu bạn đã có một cái gì đó, giống như, chắc chắn bị mất, 40 byte trong một khối. Có lẽ bạn không ghi nhớ để giải phóng nó. Bởi vì nếu bạn đang sử dụng byte của bộ nhớ, đó có nghĩa là bạn đã truy cập tới, bộ nhớ, nhưng bạn đã không thể giải thoát. Vì vậy, bạn muốn thực hiện chắc chắn rằng bạn cũng sử dụng free-- đó là một function-- để giải thoát tất cả của bộ nhớ phân bổ lại bởi malloc. Mát. Vì vậy, slide này, tôi sẽ có nó lên. Đó là ở khắp mọi nơi trong rất nhiều bài giảng, trong rất nhiều phần slide. Bạn thực sự muốn chắc chắn bạn chỉ biết tất cả những điều này. Hoặc trong tờ ghi chú của bạn, hoặc nếu bạn muốn ghi nhớ nó, cảm thấy tự do để. Đó là thực sự, thực sự, thực sự quan trọng. Cũng là một rất tốt câu hỏi mà chúng tôi có thể yêu cầu. Tại sao cái nhìn Selection sort-- tại Lựa chọn sort-- tất cả các runtimes được n bình phương. Bất kể thế nào trong danh sách nói đến bạn làm, vậy tại sao là sort-- Selection Tôi sẽ cung cấp cho các bạn 30 thứ hai suy nghĩ về điều này. Bởi vì nó loại khó hiểu. Nó liên quan đến một số suy nghĩ về khái niệm. Tại sao những lần chạy sẽ là như nhau trong cả các tình huống xấu nhất và tốt nhất? Yeah? Đung Vì Selection sort mỗi vị trí hoặc không gian trong mảng này ít điều hay bất cứ điều gì. Vì vậy, ngay cả trong trường hợp tốt nhất, thậm chí nếu nó được sắp xếp hoàn hảo, nó vẫn sẽ phải được như thế, OK, một. Ở vị trí đầu tiên của tôi, tôi có một. Và đi qua tất cả trong số họ. OK, một là nhỏ nhất. Và sau đó nó đi một lần nữa và là như thế, OK, hai là nhỏ nhất trong tất cả các sự vật. Nhưng nó vẫn phải kiểm tra mỗi một người. GIÁO SƯ: Yeah. Vì vậy, ví dụ, chúng ta hãy chỉ nói chúng ta có một danh sách, đã được sắp xếp, một mảng 1-5. Cách mà các loại Selection là nó đi qua, nó sẽ kiểm tra hai. Sau đó, nó sẽ kiểm tra hai. Và sau đó nó sẽ kiểm tra, và nó kiểm tra. Nó giữ kiểm tra tất cả trong số họ, bất kể có hay không nó thực sự được sắp xếp. Bởi vì đó là cách đơn giản cách phân loại hoạt động. Và vì vậy câu hỏi này là loại giống như một câu hỏi về khái niệm chúng tôi sẽ hỏi. Trường hợp đầu tiên, bạn biết lựa chọn loại là, phải, để có thể để trả lời các câu hỏi. Bạn có để có thể hiểu khái niệm gì đang xảy ra. Và sau đó bạn có thể áp dụng nó và suy nghĩ, OK chúng ta hãy chỉ cần tưởng tượng kịch bản trường hợp xấu nhất. Họ là tất cả các thứ tự giảm dần. Làm thế nào mà có thể ảnh hưởng đến nó? Gì nếu thứ tự tăng dần? Nếu nó đã được sắp xếp? Làm thế nào mà sẽ ảnh hưởng đến thời gian chạy? Và sau đó lựa chọn sắp xếp, bạn sẽ nhận thấy rằng nó không thực sự quan trọng. Bởi vì bạn đang kiểm tra tất cả các giá trị bất kể những gì đang xảy ra. Và do đó, những điều tốt đẹp để nhớ. Tại sao một số loại khác nhau từ những người khác và cách tốt nhất và tình huống xấu nhất sẽ ảnh hưởng đến tất cả chúng. Tôi sẽ thực sự đánh vào các loại vì đó sẽ là trên các bài kiểm tra. Yeah. ĐƯỢC. Có sáu phút còn lại. Tôi có thể mất ba phút của câu hỏi. Tôi cũng có thể treo xung quanh cho giống như 20 phút sau khi phần nếu bạn muốn đặt câu hỏi là tốt. Có ai chỉ có thực sự ngắn gọn câu hỏi hoặc vấn đề khái niệm họ không rõ ràng về ngay bây giờ? Yeah? Đung bạn có thể nói một chút chút về toán tử trên bit? GIÁO SƯ: Yeah. Vì vậy, các nhà khai thác Bitwise là cái gì mà bạn có thể chỉ có thể muốn đưa vào bảng của bạn. Vì vậy quickly-- Tôi không muốn đi quá nhiều vào chiều sâu vì Harvard, trong đánh giá của họ phiên, phủ nó khá tốt. Toán tử, có năm của họ, phải không? Có điều này, đó là x hoặc chức năng, có ký hiệu, mà là và. Ống, đó là hay. Và sau đó bạn có hai các loại khác nhau của ca. Nếu tôi cung cấp cho bạn hai giá trị, nếu Tôi cung cấp cho bạn, như, một, một. Có gì đó sẽ đánh giá? Nếu tôi cung cấp cho bạn sự thật và đúng sự thật, đúng không? Còn đúng hay sai? Vẫn là sự thật, đúng không? Bởi vì có một hoặc. Chúng tôi rất có thể sẽ cung cấp cho bạn số. Vì vậy, hãy nhớ rằng, một bằng đúng, không bằng giả. Và chúng tôi có thể cung cấp cho bạn những điều này và yêu cầu bạn cho chúng tôi biết những gì sẽ xảy ra. Harvard bao gồm nó trong lần đầu tiên 10 phút của buổi học của họ thực sự, thực sự tốt. Vì vậy, các bạn muốn làm chắc chắn rằng bạn nhìn lại trên đó. Đung là pisa5 có được trên các bài kiểm tra? GIÁO SƯ: No. Thậm chí không nhìn vào pisa5 ngay bây giờ. Nó khó. Chỉ cần thậm chí không bận tâm tìm kiếm tại pisa5. Tuy nhiên, như một số gợi ý và đề nghị, tôi sẽ đề nghị bạn bắt đầu pisa5 ngay sau khi các bài kiểm tra là hơn. Đây sẽ là khó khăn nhất tuần, nhưng sau đó các bạn sẽ được thông qua nó trên đồi của cán màu xanh lá cây và chó con, và nó là tốt. Lớp này được đáng kể dễ dàng hơn sau khi pset thứ năm. Thời gian làm việc: TƯỢNG là chủ nhật, thứ Hai? GIÁO SƯ: Ừ, vậy giờ làm việc sẽ ngày chủ nhật đến thứ hai cho pset. Thời gian làm việc tối nay về cơ bản sẽ chỉ được xem xét đối với các bài kiểm tra. Nếu bất cứ ai muốn đi vào và hỏi các hỗ trợ kỹ thuật một câu hỏi, chúng tôi sẽ có mặt ở đó. Tôi sẽ đưa câu hỏi có lẽ một trong nhiều nếu có ai có một câu hỏi? Yeah? Đung Khi bạn các nút định, [nghe được] nếu bạn nói sao nút và sau đó tiếp theo, làm máy tính tự động hiểu rằng bạn đề cập đến một con trỏ? GIÁO SƯ: No. Đung Bạn phải relink nó [không nghe được]? GIÁO SƯ: Vì vậy, về cơ bản cấu trúc của một nút được, nhớ, nó giống như bạn tạo ra các nút và sau đó bạn có một con trỏ được gọi tới. Tất cả các bạn đang làm là có cấu trúc đó. Bạn cần phải gán rằng con trỏ ở đâu đó. Vì vậy, các máy tính không biết những gì nó làm được nêu ra. Bạn phải thực sự gán nó khi bạn đang tạo danh sách liên kết của bạn. Và đó là những gì chủ yếu pset 5 sẽ được vào. Vì vậy, không phải lo lắng về bất kỳ điều đó ngay bây giờ. Đung Vì vậy, chúng tôi không cần phải tập trung quá nhiều vào danh sách liên kết, chỉ các khái niệm chung? GIÁO SƯ: Chỉ cần khá nhiều ngăn xếp, hàng đợi, danh sách liên kết, cây, bảng băm. Chỉ có thể biết những gì họ đang có. Chúng tôi sẽ không hỏi bạn thích bất cứ điều gì cụ thể bởi vì chúng tôi đã không thực sự làm một pset rằng bao gồm bất kỳ đó chưa. Vì vậy, trong hai phút cuối cùng trước khi Tôi đặt bạn miễn phí để giết đố này. Khá nhiều, như, suy nghĩ về cách đến nay các bạn đã đến trong lớp học này. Tôi nhớ khi hai tuần của lớp này, một số bạn dành ba giờ viết nước. Làm thế nào lâu nó sẽ đưa bạn kẻ viết nước bây giờ? 30 giây, có lẽ? Hãy suy nghĩ về bao nhiêu các bạn đã học được. CS là một chủ đề thực sự, thực sự khó khăn. Không có nghi ngờ về điều đó. Thật khó, đó là lý do tại sao không có một nghiên cứu về nó. Nó chỉ là khó khăn. Và nó hoàn toàn tốt. Và tôi thực sự tự hào rằng tất cả mọi người đã làm cho nó xa này. Psets là không dễ dàng. Họ mất rất nhiều thời gian. Các bạn, tôi sẽ không bao giờ yêu cầu bạn viết các trò chơi của 15 hoặc Vigenere trên pset. Không cần phải chỉ lăn tăn về điều đó. Tất cả chúng tôi đang thử nghiệm ở đây là để đánh giá kiến thức khái niệm của bạn, cũng như một số kỹ năng cơ bản của mã hóa. Xét nghiệm này được thiết kế để được thực sự khó khăn. Giống như, nó được thiết kế để bạn có thể không nhận được 100. Nó còn được thiết kế để bạn có thể không có khả năng hoàn thành trong 75 phút. Và đó là hoàn toàn tốt đẹp. Tôi là một sinh viên bản thân mình. Tôi biết, tôi ghét nó khi tôi đi bộ ra khỏi một bài kiểm tra được như thế, shit. Đó là thực sự khó khăn. Có lẽ những gì đang xảy đến happen-- và đó là hoàn toàn tốt, Tôi nói với các bạn ngay bây giờ. Các phương tiện về những điều này không cao ở tất cả. Và đối với những người bạn của những người đã nhận được, như thế, threes trên bộ vấn đề của bạn, điều đó không có nghĩa là bạn sẽ nhận được một 60 phần trăm ở lớp này. Nếu bạn nhận được 60% trên đố vui, điều đó không có có nghĩa là bạn đang đi tới có được một D trong lớp này. Chúng tôi nhìn thấy, đặc biệt là tôi, cho những người bạn trong phần của tôi, Tôi thấy khó khăn thế nào các bạn là tất cả làm việc. Và tôi theo dõi mà. Các bạn sẽ được sử dụng tốt. Không có bộ nhớ chế của hạnh phúc vào cuối học kỳ. Bởi vì tất cả những đứa trẻ Harvard đang nói bạn bè của họ, oh, bạn sẽ bị phạt. Không ai được nói với các bạn rằng đây. Vì vậy, tôi phải nói với các bạn rằng đây. Các bạn sẽ được sử dụng tốt. Tôi rất tự hào về tất cả các bạn. Việc kiểm tra sẽ được khó khăn. Nghiên cứu cho nó, và sau đó chỉ cần ném nó đi. Hãy sẵn sàng để học hỏi những điều mới. Và ăn kẹo. Chúng tôi đã có rất nhiều kẹo. Sẽ có một đêm ngon giấc. Đừng không ngủ, vì mà muốn được thực sự xấu. CS là rất nhiều logic. Nếu bạn không ngủ, bạn không thể hoạt động, và bộ não của bạn không thể hoạt động. Và tôi sẽ ở đây cho tới 20 phút nếu có ai muốn để treo xung quanh. Các bạn đang đi để giết nó. Chúc may mắn.