[MUSIC CHƠI] -Alright! -Đây Là CS50. -Đây Là CS50. -Đây Là CS50. [MUSIC - Iggy AZALEA, "ưa thích"] Bộ nhớ yêu thích -Tôi từ CS50 là khi tôi đến Puzzle ngày. -Probably Chỉ là thời gian đã làm việc trên bộ vấn đề với bạn bè và những người của tôi đã có rừng cuối cùng trở thành blockmates của tôi. -Tôi Bộ nhớ tốt nhất từ CS50 là Hackathon. -Các CS50 Hackathon. -Hackathon. -Hackathon. -Hackathon. -Các Hackathon -Rob Bowden. Chỉ cần tất cả mọi thứ về anh ấy. [MUSIC - Iggy AZALEA, "ưa thích"] Bộ nhớ yêu thích -Tôi là khi tôi đã được trên sân khấu và tôi đóng vai trò uy tín của một nút [? trong liên kết?] [? Danh sách. ?] -Khi tất cả chúng ta có không gian Dropbox miễn phí và David là như thế, nhìn xuống phía dưới chỗ ngồi của bạn. Và nó giống như, không gian cho tất cả mọi người! [MUSIC - Iggy AZALEA, "ưa thích"] Tư vấn cho bất kỳ -Tôi sinh viên sẽ đến là để thực sự làm việc trên P-bộ với bạn bè. Giờ -Office là rất nhiều bạn bè của bạn. -Hãy Dụng tối đa kinh nghiệm của bạn và gặp gỡ càng nhiều người càng tốt. -Đừng Ngại yêu cầu giúp đỡ. -Start P-bộ vào đầu tuần. -I Nghĩ rằng điều quan trọng nhất là tận dụng lợi thế của tất cả các nguồn tài nguyên CS50 có. -Vào Giờ làm việc vào đầu tuần. -Definitely Xem quần short. -Đừng Trì hoãn trên P-bộ của bạn. -Hãy Chắc chắn rằng bạn tìm thấy một nhóm lớn người làm việc trên P-bộ với. Bạn có thể có rất nhiều niềm vui và có được công việc thực hiện cùng nhau. -Đừng Sợ để đẩy mình. Đi cho các phiên bản của hacker đôi khi. Điều -Viết trên giấy trước bạn đã bao giờ chạm vào máy tính của bạn. -CS50 Là thực sự tuyệt vời tại cung cấp cách để có được sự giúp đỡ. -Tôi Một lời khuyên là giấc ngủ. Có ai nói vậy? Giấc ngủ, chắc chắn. Thật dễ dàng không nên làm, nhưng bạn đã có để làm điều đó, tôi nghĩ. -I sẽ nói thực sự được chuẩn bị tinh thần bởi vì bạn sẽ thích nó. [MUSIC - Iggy AZALEA, "ưa thích"] -Đây Là CS50. -Đây Là CS50. -Đây Là CS50. [MUSIC - Iggy AZALEA, "ưa thích"] -Đây Là CS50. [Vỗ tay] DAVID J. Malan: Vì vậy, đây là CS50 và đây là kết thúc của tuần 0. Và đó chỉ là một số cán bộ CS50 của người đang chờ đón bạn không chỉ trong các phần và giờ làm việc, nhưng, cũng có thể, cuối tuần tới này tại CS50 Puzzle ngày. Trong đó, một lần nữa, không phải là tất cả về lập trình. Trên thực tế, nó được dự kiến ​​mà bạn sẽ không có chương trình gì, nhưng thay vì giải quyết vấn đề sử dụng trí thông minh và bạn bè bên cạnh bạn. Chúng tôi sẽ cùng tham gia một số bạn bè của chúng tôi tại Facebook-- nếu bạn đăng ký here-- người trong nhiều năm qua, đã thực sự được viết những thách thức với chúng tôi. Và như vậy, họ sẽ là những người cuối cùng là chạy Puzzle ngày. Và như vậy, bạn sẽ được thử thách với chính xác các loại vật và các vấn đề mà người ở Facebook muốn suy nghĩ về. Vì vậy, đó là vào ngày mai. Đăng ký tại cs50.harvard.edu/register. Bây giờ một từ trên một vài nhân viên nói riêng. Điều này ở đây là Ansel Duff, những người thực sự là một trong những đồng tác giả của những nhị phân bóng đèn mà chúng ta thấy ngày Thứ tư, ngoài của Dan Bradley CS50 của. Ansel Duff cũng là một cựu sinh viên năm nhất advisee của tôi 3 năm trước và ông thực sự thậm chí xây dựng bục giảng này. Ông đã đi vào để làm khoa học kỹ thuật và nhiều hơn nữa. Bây giờ, hình ảnh của mình ở đây là thực sự Ansel 3 năm trước đây tại CS50 Hackathon khi ông mượn một trong những của chúng tôi bóng bay, bị mắc kẹt nó để máy tính xách tay của mình, và, trong 12 tiếp theo một số lẻ giờ, tập trung vào các dự án cuối cùng của mình, dùng chỉ nghỉ để mở túi kẹo tại Hackathon. Nhưng ông đã đi vào thời gian gần đây hơn chi tiêu mùa hè vừa qua với chúng tôi, kể từ CS50 cho nhân viên của mình, và bây giờ sinh viên học kỳ này, có máy in 3D của riêng mình. Và trong một nutshell một máy in 3D một thiết bị trông khá như thế này. Bạn điền nó với một ống nhựa được nấu chảy bằng thiết bị và bạn xây dựng những thứ nghĩa là từ không có gì. Giống như một máy in phun, bạn bắt đầu phun ra dấu chấm nhỏ bằng nhựa rằng hình thức với nhau để hình thành toàn bộ các đối tượng. Và như vậy Ansel ví dụ, trước đó mùa hè này, có một chiếc iPhone 5 và quyết định ông thực sự muốn để chống đỡ nó lên trên bàn làm việc của mình. Tuy nhiên, ông không muốn đi ra ngoài và mua một cái gì đó từ các cửa hàng Apple hoặc tương tự, vì vậy ông ngồi xuống và bắt đầu vẽ một cái gì đó. Ông lấy một vài phép đo như dày như thế nào và làm thế nào rộng iPhone của mình đã, ông đã vẽ hình ảnh này đây, ông quyết định rằng ông muốn để có một độ nghiêng 75 độ như nó đã được nhìn chằm chằm vào ông trên bàn của mình ở đó. Sau đó, ông quay này, sử dụng phần mềm, vào một mô hình CAD 3D mà nhìn một chút một cái gì đó như thế này. Và sau đó ông tiến hành, cuối cùng, để thực sự tạo ra nó. Vì vậy, trong thực tế, nếu có các bạn ở đây, có lẽ trong một hàng mà tôi có thể ném vào, có an-- có chúng tôi có folks với iPhone 5, và ở đây chúng tôi có thêm hai. Bây giờ, không chịu thua kém, riêng của CS50 Cheng Gong cũng đặt ra vào mùa hè này xây dựng khá một vài điều, và trên thực tế, vì những lý do mà vẫn còn không rõ ràng, đã được từ từ in một đội quân voi với cánh tay và thân khớp nối. Một vài trong số đó là thực sự ở đây nếu bất cứ ai bây giờ sẽ like-- một con voi. Được rồi,. nhưng những gì Cheng cũng đã làm cho chúng tôi là ông rất vui lòng thiết lập một máy ảnh vì con voi đó, tin hay không, có một số hai và một nửa giờ để in. Ngay cả đứng iPhone mất một tiếng rưỡi đồng hồ để in. Và những gì Cheng đã đi trước và đã làm đã thiết lập một máy ảnh tốt đẹp ở phía trước máy in 3D này, quay trong một giờ và một nửa là thiết kế của Ansel in. Chúng tôi phủ một số sexy âm nhạc để nó để cung cấp cho bạn này để tìm cách in 3D hoạt động. Và mặc dù đây thực sự là trong nhựa, nhận ra rằng nếu điều này là một khu vực quan tâm đến bạn trong học tập, có folks, trong chúng Jennifer Lewis đây tại Trường Kỹ thuật, những người thực sự làm việc trên in 3D đối tượng của nhựa. Nhưng thậm chí, ngày càng, vật liệu sinh học để giải quyết vấn đề sinh lý cho con người. Nhưng đây là một chút một cái gì đó từ CS50. [LOUD CƠ tiếng] DAVID J. Malan: Nó không âm thanh bất cứ điều gì như thế trong thực tế, nhưng nó rất mát để xem nó ở tốc độ đó, và với âm thanh đó. Bây giờ, vào thứ tư, làm thế nào Lần đầu tiên chúng tôi nhận được ở đây? Chúng tôi bắt đầu nói về máy tính khoa học và chúng tôi hỏi đó là gì. Và đó là về một số điều, và có rất nhiều hướng khác nhau trong đó bạn có thể đầu sau một khóa học như CS50. Trong thực tế, nếu bạn chọn một những hướng dẫn không chính thức CS bên ngoài, cuốn sách nhỏ đó chúng tôi đã cung cấp, cho dù bạn nghĩ đến việc lấy chỉ CS50, hoặc có thể làm một thứ, hoặc thậm chí có thể tập trung trong CS, đừng lướt qua đó. Và bạn sẽ thấy một sơ đồ vào giai đoạn cuối mà cho bạn thấy nhiều hướng khác nhau trong CS mà bạn có thể tắt đi trong. Nhưng hôm nay, chúng tôi sẽ tập trung, một lần nữa, vào thực sự là một trong những quan điểm cơ bản, có lẽ, nơi bạn có đầu vào cho các vấn đề, bạn có kết quả đầu ra từ vấn đề, và bạn có thuật toán nào đó để tạo ra những kết quả đầu ra từ các yếu tố đầu vào. Và một ví dụ như vậy, là của Tất nhiên, danh bạ điện thoại này ở đây. Và chúng tôi sử dụng như một ví dụ để đi thông qua một thuật toán đó là đúng. Và sau đó một số khác là chính xác, nhưng nhanh hơn một chút. Và rồi một thứ khác đó là một chút ấn tượng hơn, nhưng về cơ bản nhanh hơn. Phải, này điện thoại cuốn sách chúng tôi tuyên bố đã có khoảng 1.000 trang. Và bao nhiêu lần tôi phải xé cuốn sách điện thoại trong nửa để tìm một người như Mike Smith, tối đa, trong 1.000 trang sách? Vì vậy, 10 cho hay phải mất. Và thế là một lần tôi xé điều này trong một nửa, hoặc đơn giản là, chín chắn hơn, chia một nửa, nó chỉ 10 trang trong số 1.000. Và nếu bạn suy luận, một chút không thực tế cho một cuốn sách điện thoại, nhưng nếu danh bạ điện thoại này đã có một số 4 tỷ trang trong nó, vì vậy hoàn toàn khó sử dụng thể chất, bao nhiêu lần bạn chia 4 tỷ trang danh bạ điện thoại trong nửa? Vì vậy, nó thực sự là 32, cho hay phải mất. Và như vậy 32 lần chỉ ra 4 tỷ trang, có thể bạn tìm thấy một người như Mike Smith. Và đó là hiệu quả. Đó là một thuật toán tốt, dám nói. Nhưng sau đó chúng tôi di chuyển từ đó cố gắng để chính thức hóa nó. Và tôi đang đề xuất giả này. Mã giả không phải là bất cứ điều gì chính thức. Đó không phải là một cái gì đó bạn ghi nhớ. Nó chỉ là một cái gì đó bạn thể hiện khá trực quan bằng cách sử dụng tiếng Anh, hoặc bất kỳ ngôn ngữ thực sự, mà truyền đạt ý tưởng của bạn một cách ngắn gọn. Nhưng điều quan trọng về Mã giả là bạn cố gắng để dự đoán tất cả các trường hợp có thể có thể xảy ra. Và quả thực, trong giả này mã, đã có ba trường hợp thực sự mỗi khi tôi chia danh bạ điện thoại. Mike có thể là bên trái. Mike có thể là bên phải. Hoặc anh có thể là ngay trên trang tôi đang trên. Hoặc một trường hợp góc thứ tư, vậy để nói chuyện. Một kịch bản xấu có thể là một which-- những gì đang xảy ra? Mike chỉ là không danh bạ điện thoại ở tất cả. Và khi chương trình crash-- khi Mac và phần mềm máy tính mà các bạn chạy trên máy tính của bạn đôi khi treo hoặc bỏ bất ngờ, mà thường có nghĩa là một số lập trình, một số người như bạn sớm, chỉ hơi say lên và thực hiện một số sai lầm. Có lẽ đã không dự đoán rằng có thể có không có Mike Smith trong sổ điện thoại. Và nếu bạn không thực sự viết mã để xử lý các tình huống như vậy, nói chung là không thể đoán trước điều có thể xảy ra. Máy tính của bạn có thể đóng băng. Nó có thể khởi động lại. Chương trình có thể bỏ thuốc lá. Và vì vậy tất cả các ngu xuẩn mà bạn có thể đã gặp phải trong thực tế của bạn cuộc sống chỉ cần sử dụng máy vi tính, sẽ ngày càng được chỉ giải thích đi bằng trực giác này và sự hiểu biết này là gì thực sự xảy ra dưới mui xe. Bây giờ chúng ta hãy cố gắng để có một cái nhìn vào một vấn đề tổng quát hơn. Thay vì mất tham dự ở một nơi như thế này, đó sẽ là khá chậm để làm một, hai, ba, bốn. Hoặc có thể hai, bốn, sáu, tám. Hãy tập trung, thay vào đó, trên làm thế nào chúng ta có thể chính thức hóa các thuật toán của quá trình bằng cách mà chúng tôi có thể mất đi học. Và trên đường đi, chúng ta hãy bắt đầu áp dụng một số thuật ngữ rằng chúng tôi sẽ sử dụng ngày hôm nay khi chúng tôi thực sự bắt đầu lập trình bằng một ngôn ngữ. Vì vậy, tôi cung cấp cho bạn bây giờ, một đoạn video bốn phút mà chúng ta đặt cùng với bạn bè của chúng tôi từ TED, tổ chức. Nhờ đó mà chúng tôi cung cấp một kịch bản và họ mang họa sĩ của họ phải chịu, và thực sự tạo ra một 2D phim hoạt hình về những gì một thuật toán. Nếu chúng ta có thể tắt đèn. [MUSIC CHƠI] Người kể chuyện: một thuật toán là gì? Trong khoa học máy tính, một thuật toán là một tập hợp các hướng dẫn giải quyết một số vấn đề từng bước. Thông thường, thuật toán thực hiện bởi máy tính, nhưng con người chúng ta có thuật toán là tốt. Ví dụ, làm thế nào sẽ bạn đi về đếm số lượng người trong một căn phòng? Vâng, nếu bạn đang như tôi, bạn sẽ có thể chỉ vào từng người một lúc và đếm từ số không. Một, hai, ba, bốn, và vv. Vâng, đó là một thuật toán. Trong thực tế, chúng ta hãy cố gắng thể hiện nó một bit chính thức hơn trong mã giả. Cú pháp tiếng Anh như thế giống như một ngôn ngữ lập trình. Cho n bằng 0. Đối với mỗi người trong phòng, thiết lập n bằng n + 1. Làm thế nào để giải thích các giả? Vâng dòng một tuyên bố, có thể nói, một biến gọi là n và khởi tạo giá trị của nó về 0 này chỉ có nghĩa là ở bắt đầu của thuật toán của chúng tôi, điều mà chúng tôi đếm có giá trị 0. Sau khi tất cả, trước khi chúng tôi bắt đầu đếm chúng tôi đã không tính bất cứ điều gì được nêu ra. Gọi biến này n chỉ là quy ước. Tôi có thể gọi đó là hầu hết bất cứ điều gì. Bây giờ xếp hàng hai demarks khởi đầu của một vòng lặp, một chuỗi các bước mà sẽ lặp lại một số lần. Vì vậy, trong ví dụ của chúng tôi, bước chúng tôi lấy được đếm người trong phòng. Bên dưới dòng hai là dòng ba trong đó mô tả chính xác như thế nào chúng ta sẽ đi về đếm. Thụt đầu dòng có nghĩa là đó là dòng ba mà sẽ lặp lại. Vì vậy, với mã giả là nói là sau khi bắt đầu từ 0 cho mỗi người trong phòng chúng tôi sẽ tăng n 1 Bây giờ là thuật toán này có đúng không? Vâng chúng ta hãy đập vào nó một chút. Nó làm việc nếu có hai người ở trong phòng? Hãy xem. Trong một dòng chúng ta khởi tạo n 0. Đối với mỗi hai người, sau đó chúng tôi tăng n 1. Vì vậy, trong chuyến đi đầu tiên thông qua vòng lặp, chúng tôi cập nhật n 0-1. Trên chuyến đi thứ hai thông qua đó cùng một vòng, chúng tôi cập nhật n 1-2. Và như vậy, bằng cách này thuật toán của kết thúc, n là 2, thực sự phù hợp với số của người dân trong phòng. Cho đến nay, như vậy tốt. Làm thế nào về một trường hợp góc mặc dù? Giả sử có 0 người trong room-- bên cạnh tôi, những người là làm đếm. Trong một dòng, chúng tôi một lần nữa khởi n 0. Thời gian này, mặc dù dòng ba không thực hiện ở tất cả các vì không có một người trong phòng. Và như vậy n vẫn là 0, mà thực sự phù hợp số lượng người trong phòng. Khá đơn giản, phải không? Nhưng kể người cùng một lúc là khá hiệu quả, quá, không có? Chắc chắn chúng ta có thể làm tốt hơn. Tại sao không tính hai người tại một thời điểm, thay vì đếm một, hai, ba, bốn, năm, sáu, bảy, tám, và vân vân. Tại sao không tính hai, bốn, sáu, tám, và như vậy? Nó thậm chí còn có vẻ nhanh hơn. Và nó chắc chắn là. Hãy thể hiện tối ưu hóa này trong mã giả. Cho n bằng 0. Đối với mỗi cặp của người dân ở phòng, đặt n bằng n cộng với 2. Khá thay đổi đơn giản, phải không? Thay vì đếm người tại một thời điểm, chúng tôi thay vì đếm hai tại một thời điểm. Thuật toán này, nhờ đó, nhanh gấp hai lần như trước. Nhưng nó là đúng? Hãy xem. Nó làm việc nếu có hai người ở trong phòng? Trong một dòng, chúng ta khởi n 0. Cho rằng một đôi người, sau đó chúng tôi tăng n 2. Và như vậy bởi thuật toán này cuối n là 2, thực sự phù hợp với số của người dân trong phòng. Giả sử sau đó có không người trong phòng. Trong một dòng chúng ta khởi tạo n 0. Như trước đây, dòng ba không thực hiện tất cả kể từ khi không có bất kỳ cặp người trong phòng, và như vậy n vẫn là 0. Mà thực sự phù hợp với số lượng người trong phòng. Nhưng nếu có ba người trong phòng? Làm thế nào để giá vé này thuật toán? Hãy xem, trong một dòng, chúng ta khởi tạo n 0. Đối với một cặp của những người này, sau đó chúng tôi tăng n 2. Nhưng sau đó những gì? Không có một đầy đủ cặp của người dân trong phòng, vì vậy hai dòng không còn được áp dụng. Và như vậy vào cuối của thuật toán này, n vẫn là 2 đó là không đúng. Thật vậy thuật toán này cho biết để có lỗi bởi vì nó có một sai lầm. Hãy khắc phục với một số đang giả mới. Cho n bằng 0. Đối với mỗi cặp của người dân ở phòng, thiết lập N bằng n cộng với 2. Nếu một người vẫn còn độc thân, thiết lập N bằng n + 1. Để giải quyết vấn đề cụ thể này, chúng tôi đã giới thiệu trong dòng bốn điều kiện, hay còn gọi là một chi nhánh, mà chỉ thực hiện nếu có một người mà chúng ta không thể ghép với nhau. Và vì vậy bây giờ, cho dù có một, hoặc ba, hoặc bất kỳ số lẻ của người dân trong phòng, thuật toán này sẽ đếm chúng. Chúng ta có thể làm tốt hơn? Vâng, chúng tôi có thể đếm trong threes, hoặc bốn chân, hoặc thậm chí fives và hàng chục, nhưng ngoài ra, nó sẽ có được một chút khó khăn để chỉ. Vào cuối ngày, cho dù thực hiện bởi máy tính hoặc con người, các thuật toán chỉ một tập hợp các hướng dẫn nào đó để giải quyết vấn đề. Đây chỉ là ba. Vấn đề gì phải không giải quyết với một thuật toán? DAVID J. Malan: Vì vậy, cố tình, một chương trình rất đơn giản, một thuật toán rất đơn giản, để đạt được một cái gì đó Rất đơn giản, đếm số lượng người trong phòng. Nhưng chúng ta trêu chọc nhau một số đại diện tính năng ở đây có thực sự sẽ có ích ngay cả khi thực hiện nhất phức tạp của phần mềm. Vì vậy, ví dụ, ở dòng đầu tiên này, chúng tôi có những gì chúng ta gọi là biến, và từ đại số, bạn thường quen sử dụng x và y z và đôi khi, và vv. Tuy nhiên, trong chương trình, các biến vẫn còn, vào cuối ngày, rất giống với. Nhưng đó có lẽ đơn giản hơn để suy nghĩ của một biến như chỉ là một container. Và, trên thực tế, đó là một số số bit thực hiện bằng cách nào đó trong ổ cứng của bạn hoặc trong bộ nhớ của máy tính, nhưng thêm vào đó trong tương lai. Nó chỉ là một container. Và nếu bạn nói điều gì đó như cho n bằng 0, cũng như gọi đó là thủy tinh này bát ở đây n, chỉ là một tên tùy ý, và đưa gì trong đó ban đầu. Vì vậy, các giá trị này bát ngay bây giờ là số không. Và tất nhiên nếu bạn nhận thức trong một dòng tiếp theo, để thực sự tăng một số dòng mã, như trong dòng thứ ba này ở đây, 1, đó là giống như nói rằng những gì là giá trị hiện tại của n, đó là 0, cộng với 1, đặt một cái gì đó giống như một ping pong bóng ở đây. Bây giờ giá trị này biến là khá đơn giản 1. Và bạn có thể rất nhanh chóng suy luận, nhưng bây giờ nó là 2, bây giờ là 3, và như vậy. Vì vậy, đó là tất cả một biến là. Đó là một phần của lưu trữ thực sự lưu trữ một số dữ liệu. Để bây giờ nó là một quả bóng bàn. Ở đó, nó là một con số. Nhưng nó có thể là từ trong một từ điển, như kiểm tra chính tả Tôi ám chỉ về thứ tư cho một trong những bài tập của năm ngoái. Bây giờ một ý tưởng quan trọng, mà tương tự là khá trực quan tôi sẽ yêu cầu bồi thường, là một vòng lặp. Và vòng lặp trong quá trình đếm tất cả mọi người là, tất nhiên, làm như vậy điều một lần nữa và một trong hai again-- tại một hoặc hai lần tại một thời điểm. Và bạn có thể thể hiện điều này bằng tiếng Anh, hoặc Mã giả, trong nhiều cách, nhưng sử dụng giới từ này "cho" là một cách rất phổ biến làm điều đó. Đối với mỗi người trong phòng, làm được điều này. Một lần nữa và một lần nữa. Và thực tế là nó thụt vào, dòng ba, chỉ có nghĩa là gì bạn đang phải làm là những thứ đó là thụt dưới mức hai chính nó. Chỉ cần một quy ước của con người, nhưng một trong những phổ biến như chúng ta sẽ thấy cao hơn thực tế ngôn ngữ lập trình cấp. Bây giờ ít thú vị hơn là khi bạn nhận được trong một trường hợp góc. Ví dụ, một góc trường hợp là khi có là ba người, hoặc năm, bảy, hoặc bất kỳ số lẻ của người dân trong phòng, bởi vì làm điều đó bằng cách twos phanh cuối cùng vì đi của bạn để nhớ một ai đó, hoặc ở Rất bắt đầu hoặc kết thúc rất tùy thuộc vào cách bạn làm điều đó. Và như vậy, bây giờ, tôi có chi nhánh này, hoặc điều kiện, nếu một người vẫn còn, sau đó đi trước và xử lý một trong những người cô đơn, người đã không nhận được kết hợp với người khác. Vì vậy, đó là những gì chúng ta gọi là một điều kiện, hoặc một chi nhánh. Mã bây giờ giả nói chung có thể bằng văn bản để giải quyết bất kỳ số vấn đề. Và những gì tôi nghĩ chúng tôi muốn làm ở đây là mất một chút thời mời chúng ta sẽ nói của CS50 sở hữu Rob Bowden trên sân khấu được sự tham gia của hai tình nguyện viên, người không có ý tưởng những gì đang chờ đợi. Một bàn tay đi xuống ngay khi tôi nói rằng. Làm thế nào về bạn trên kết thúc ở đây, đi lên trên. Và làm thế nào về từ xa đi, làm thế nào về cách ở phía sau. Trở lại hàng, đi vào với bàn tay của bạn lên. Được rồi, và tên của bạn là gì? Anita: Anita. DAVID J. Malan: Anita. Được rồi, rất vui được gặp bạn. Hãy để tôi giới thiệu với bạn Rob Bowden. Đây là Anita. Và tên của bạn là gì? Kiersten: Kiersten DAVID J. Malan: Kiersten. Kiersten, đi vào và đáp ứng Rob Bowden và Anita. Rất vui được gặp bạn. Kiersten: Rất vui được gặp bạn. DAVID J. Malan: Được rồi, Rob. ROB Bowden: Rất vui được gặp bạn. DAVID J. Malan: Anita. Kiersten: Hi Anita. DAVID J. Malan: Và bạn hàng trăm bạn học cùng lớp. Vì vậy, bây giờ hãy để tôi đi trước và kéo lên chỉ là một chương trình đơn giản ở đây trên Mac OS mà sẽ cho tôi thực sự ghi một số ghi chú xuống. Và nếu các bạn muốn cho từng mất một vị trí tại một trong những trường đó, hãy để tôi đi trước và bắt đầu một danh sách mã giả, nếu bạn sẽ. Và những gì tôi muốn làm ở đây, cuối cùng là loại cho bạn một số hướng dẫn của chúng tôi khán giả thực sự sẽ đọc cho chúng tôi. Hãy để tôi đi trước và chỉ thay đổi này cho một danh sách số để phù hợp với những gì chúng tôi đã làm ở đó. Và những gì tôi sẽ làm gì với giúp đỡ của bạn, là viết một chương trình trong giả, mà những kẻ đang đi để thực hiện một đậu phộng bơ và mứt bánh sandwich. Vì vậy, nó có lẽ apropos để cho thấy một cái gì đó một số bạn có thể đã thấy trên internet chỉ một thời gian ngắn gây phiền nhiễu. [MUSIC BUCKEWHEAT BOYS, "đậu phộng bơ  JELLY TIME "] DAVID J. Malan: OK. Đó là đủ rồi. Vì vậy, đây Trong khi đó, tôi có một cặp của Google Glasses mà chúng tôi sẽ đưa vào riêng Rob Bowden CS50 của nhìn thế giới qua đôi mắt của mình. Và chúng tôi sẽ làm tốt nhất của chúng tôi trong bài viết sản xuất để thực sự đan các cảnh quay về những gì Rob được nhìn thấy bây giờ, thực tế vào bài giảng này video với hai chúng tôi tình nguyện viên bên cạnh anh. Vì vậy, những gì tôi sẽ làm là, tôi sẽ là người đánh máy. Chúng tôi có mục tiêu ở đây của thực sự viết một chương trình mà để thực hiện, cuối cùng, một bơ đậu phộng và mứt bánh sandwich, nhưng ba sẽ cư xử như thể chúng là các máy tính. Và máy tính, vào cuối ngày, thực sự là thiết bị khá ngớ ngẩn. Họ là siêu nhanh, nhưng họ chỉ có thể làm, nghĩa là, những gì họ đang nói. Bạn có thể không chỉ nói làm cho một đậu phộng bơ và mứt bánh sandwich. Bạn có chương trình họ làm điều đó. Bạn phải nói với họ với độ chính xác phải làm gì, ít gặp gì khủng khiếp và, hy vọng, amusingly bị thất bại. Vì vậy, với những gì đã nói, chúng ta cần một cuộc gọi ra từ khán giả những gì nên bước một là, nếu mục tiêu ở đây là làm cho một đậu phộng bơ và mứt bánh sandwich. Có? TƯỢNG: [không nghe được] túi bánh mì. DAVID J. Malan: Mở túi bánh mì. Vì vậy, nếu ba thí sinh sẽ muốn tiến hành để làm điều đó theo nghĩa đen. Mở túi bánh mì. [Khán giả cười] DAVID J. Malan: Vì vậy, hãy làm việc trên đó. Tất cả các quyền. Vì vậy, bước hai, how-- chúng ta hãy xem này hơn nữa. Vâng, ở phía trước. TƯỢNG: [không nghe được] bánh. DAVID J. Malan: Cái gì thế? TƯỢNG: Tháo bánh mì. DAVID J. Malan: Tháo bánh mì. Tương tự như vậy gọn gàng. Cảm ơn bạn. [Vỗ tay] DAVID J. Malan: Đó là nó? OK, vì vậy bước hai sẽ được lấy bánh mì. Được rồi, ai đó muốn viết cho chúng tôi một câu dài hơn? Một người nào khác? Một chút [không nghe được]. Không, không có gì bây giờ. Có? TƯỢNG: Đặt hai lát cạnh nhau. DAVID J. Malan: Đặt hai lát cạnh nhau. [Khán giả cười] DAVID J. Malan: Đặt hai lát cạnh nhau. Bước bốn. Có? TƯỢNG: Hãy của bạn tay và đặt nó nhẹ trên nắp bơ đậu phộng. [Khán giả cười] TƯỢNG: [không nghe được] bên cạnh bơ đậu phộng. DAVID J. Malan: Cái gì? Nói rằng một lần nữa. TƯỢNG: Tháo nắp và đặt nó nhẹ nhàng bên cạnh bơ đậu phộng. DAVID J. Malan: Đặt nó nhẹ nhàng bên cạnh bơ đậu phộng. OK, tiến bộ. Bước năm. Tuyệt vời. Có? Nhặt con dao. DAVID J. Malan: Đón con dao. OK, bước sáu. Vâng? TƯỢNG: Giữ con dao bằng tay cầm. DAVID J. Malan: Giữ dao bằng tay cầm. Giữ con dao bằng tay cầm. Bước bảy. Có? TƯỢNG: [không nghe được] con dao trong đậu phộng bơ và ít ra [không nghe được]. DAVID J. Malan: Đặt con dao in-- tôi nghe "đưa con dao trong bơ đậu phộng và mất ít ra là có thể. " Bằng cách này, lấy giấy ra đầu tiên. Được rồi, bước chín. Bước chín. Bước chín. Chúng tôi đã không thực sự làm một chiếc bánh sandwich được nêu ra. Có? TƯỢNG: Sử dụng con dao trong bơ đậu phộng, áp dụng bơ đậu phộng lên bánh mì nói. DAVID J. Malan: Sử dụng con dao trong bơ đậu phộng, bơ đậu phộng vào áp dụng cho biết bánh mì. [Khán giả cười] DAVID J. Malan: Tất cả bước đi đúng đắn 10. Bước 10. Có? TƯỢNG: Hương vị đậu phộng bơ để đảm bảo chất lượng. [Khán giả cười] DAVID J. Malan: Bước 11. Bước 11. Bước 11. Thôi nào. Vâng? Ngay đó. TƯỢNG: Cẩn thận lấy thạch. DAVID J. Malan: Cẩn thận lấy thạch. OK, sau đó Mặt khác tăng. Ngay phía sau bạn. Yeah, màu xanh lam. ĐỐI TƯỢNG: Tất cả phải, loại bỏ nắp từ [không nghe được], yeah, loại bỏ nắp từ thạch. [Khán giả cười] DAVID J. Malan: Từ thạch. Ha ha. [Khán giả cười] DAVID J. Malan: Và? TƯỢNG: Và hầu như không quét bất kỳ [không nghe được]. [Khán giả cười] ĐỐI TƯỢNG: Tất nhiên, trước khi [không nghe được], lấy giấy ra từ thạch. DAVID J. Malan: Lấy giấy từ thạch. Bước 14. Chúng tôi gần như ở đó. Có? TƯỢNG: Đảo ngược chai sữa ong chúa trước khi tất cả mọi thứ rơi ra ngoài. DAVID J. Malan: Đảo ngược thạch chai trước khi thạch rơi ra ngoài. Bước 15. TƯỢNG: Thay thế nắp. DAVID J. Malan: Thay thế nắp. Bước 16. Vâng? TƯỢNG: [không nghe được] DAVID J. Malan: Nói rằng một lần nữa. TƯỢNG: Hãy nắp tắt của thạch của bạn. DAVID J. Malan: Tắt thạch của bạn. Vì vậy, really-- Rất tiếc. Thôi nào. Đóng nắp lại. Đặt cap-- Bạn nói loại bỏ nắp thạch. Cảm thấy như chúng tôi đang ở trong một chút của một vòng lặp. Bước 17. Có? TƯỢNG: [không nghe được] DAVID J. Malan: Nói rằng một lần nữa. TƯỢNG: [không nghe được] DAVID J. Malan: Trở lại step-- TƯỢNG: [không nghe được] DAVID J. Malan: Hủy bỏ nắp từ bơ đậu phộng. Có? TƯỢNG: Thả tất cả các thạch trên bánh mì. DAVID J. Malan: Thả tất cả thạch trên bánh mì. DAVID J. Malan: Chúng tôi gần như ở đó. Bước 19. TƯỢNG: Hủy bỏ thạch dư thừa. DAVID J. Malan: Haha, sữa ong chúa. [Vỗ tay] DAVID J. Malan: Tại sao không we-- thêm một bước để mang về nhà này. Thêm một bước nữa và sau đó chúng tôi sẽ phục vụ bánh mì. Có? TƯỢNG: [không nghe được] DAVID J. Malan: Trong khi bất kỳ bánh sandwich thụt remains-- cho phép của this-- ăn. [TƯỢNG cười] DAVID J. Malan: Được rồi, cảm ơn bạn tình nguyện viên của chúng tôi ở đây. [Vỗ tay} DAVID J. Malan: Chúng tôi có một số đẹp chia tay quà tặng cho tất cả các bạn. Bơ đậu phộng riêng, sữa ong chúa của bạn, và bánh mì để mang về nhà. Cảm ơn bạn. Kiersten: Cảm ơn bạn. DAVID J. Malan: [không nghe được] chào đón. [Vỗ tay] DAVID J. Malan: Vì vậy, đây là, Tất nhiên, một ví dụ vô lý. Phải không? Nhưng nó không loại tiết lộ cách chúng tôi con người chỉ có rõ ràng cho các cấp. Và thực tế, tôi đã nói chuyện với người khác, họ chỉ biết những gì bạn có ý nghĩa. Máy tính sẽ không để biết những gì bạn có nghĩa là, ngay cả khi sử dụng, như chúng tôi sắp làm hôm nay, lập trình một cái gì đó trong Scratch, kéo và thả, ngôn ngữ mảnh ghép phong cách. Thậm chí thiết kế cho trẻ trẻ em, bạn có để được như vậy rõ ràng và như vậy nghĩa đen với những gì bạn muốn chương trình của bạn để làm. Bây giờ cuối cùng, chúng tôi sẽ được lập trình không có trong mã giả, Tiếng Anh như cú pháp, nhưng mã hoặc đúng hơn, mã nguồn. Mã nguồn chỉ là cách ưa thích để mô tả mã bạn thực sự viết với một bàn phím đó là không bằng tiếng Anh cho mỗi gia nhập. Đó là trong C hoặc Java hoặc C ++ hoặc một cái gì đó như thế, như chúng ta sẽ sớm thấy. Và trên thực tế, chỉ để hù dọa một số các bạn, ở cái nhìn đầu tiên, đây là một chương trình được viết bằng một ngôn ngữ gọi là C. Nhưng để bỏ sợ hãi một số các bạn, bạn sẽ hoàn toàn hiểu những gì đang xảy ra vào đến thứ hai tuần tới khi nó nói đến một cái gì đó như thế này. Thành thật mà nói, đây là một ngôn ngữ trở lên. Đó là khá phức tạp, nhưng nó đại diện của rất nhiều ngôn ngữ những ngày này mà có rất nhiều dấu ngoặc đơn và xoăn niềng răng và dấu ngoặc và dấu chấm phẩy. Và rất nhiều này thứ cú pháp đó không phải là ở tất cả trí tuệ thú vị. Thật vậy, đó là một mất tập trung hoàn toàn từ những ý tưởng rất đơn giản được nhìn chằm chằm chúng tôi trong khuôn mặt. Chương trình này, bạn chỉ có thể đoán, in màn hình máy tính của một ai đó dòng chữ "Xin chào thế giới bằng dấu phẩy." Đó là nó. Vì vậy, rõ ràng, có rất nhiều thứ đó là nhận được trong cách của một số hiển nhiên đó, nhưng nó sẽ rất nhanh chóng trượt đi và hoàn toàn trực quan. Thật vậy, những gì chúng ta sẽ làm hôm nay được chưng cất này khá phức tạp tìm chương trình, trong đó một lần nữa bạn sẽ đến để hiểu một cách nhanh chóng, nhưng để một cái gì đó đơn giản hơn nhiều. Hãy chỉ nói những gì chúng tôi có ý nghĩa. Hãy vẽ một bức tranh về những gì chúng tôi muốn nói, bằng cách của những mảnh ghép ở đây. Vì vậy, đây là một chương trình ngôn ngữ được gọi là Scratch. Nó được phát triển bởi Media Lab của MIT. Và những gì bạn sẽ thấy trong vấn đề thiết lập không, sẽ được phát hành vào tối nay, chúng ta sẽ có bạn đi đến này URL ở đây scratch.mit.edu. Và họ có một trang web dựa trên giao diện thông qua đó bạn sẽ viết chương trình đầu tiên của bạn. Hoặc những người bạn với trước kinh nghiệm, chương trình thứ hai của bạn, nhưng trong một môi trường đó là có thể là một chút không quen thuộc và sẽ đẩy bạn để tạo ra một cái gì đó sử dụng môi trường rất trực quan này. Bây giờ, những gì tôi sẽ làm ở đây là mở chương trình lên chính nó. Nó tồn tại không chỉ là một trình duyệt web, mà còn là một chương trình tải về để bạn có thể thực sự sử dụng nó nếu bạn không có quyền truy cập internet. Và tôi sẽ làm điều đó ở đây, trong Sanders, chỉ trong trường hợp kết nối Wi-Fi không hợp tác siêu tốt. Và điểm những gì tôi sẽ làm là ra một vài tính năng của chương trình này. Vì vậy, để được rõ ràng, tôi có chỉ cần kích đúp nhấp vào biểu tượng trên máy tính để bàn của tôi, hoặc tương đương đi scratch.mit.edu, và nó kéo lên cửa sổ này. Đây là một môi trường lập trình. Đó là một phần của phần mềm một số bạn bè của chúng tôi tại MIT đã viết rằng hãy cho chúng tôi và bạn viết chương trình bằng một ngôn ngữ được gọi là Scratch. Bây giờ điều này xảy ra là một mèo ai cũng tên là Scratch và đây là thế giới của mình, trong đó ông sống. Đây là giai đoạn, có thể nói, đó hình chữ nhật ở góc trên bên trái. Và anh ấy không phải trông giống như một con mèo. Bạn có thể làm cho anh ta trông như bất cứ điều gì và bạn có thể có nhiều họa tiết như vậy, hoặc các ký tự, trong một chương trình. Trong khi đó, ở đây trên xa đúng, là một phiến đá trắng lớn. Và đây là nơi mà, trong một thời điểm, chúng ta sẽ bắt đầu chương trình bằng cách kéo và thả các trò chơi đồ họa miếng mà là đúng ở đây ở giữa. Và có cách nào hơn của họ hơn chúng tôi sẽ dành nhiều thời gian ở đây trong lớp bởi vì bạn sẽ thấy rằng tất cả chúng đều khá trực quan. Một lần nữa, nó được thiết kế cho trẻ em, nhưng chúng tôi sử dụng nó để trêu chọc nhau một số người ý tưởng cơ bản của các biến, vòng, điều kiện, và ngay sau đó, mọi thứ như chức năng và các sự kiện và chủ đề và những thứ lạ mắt khác chúng tôi sẽ có được trước khi thời gian để thực sự tạo ra một cái gì đó từ Scratch. Ý định chơi chữ. Bây giờ, những gì tôi sẽ làm ở đây là bấm vào không chuyển động, nhưng kiểm soát. Và đây chỉ là một là phân loại các here-- và tôi thấy một khác nhau thiết lập màu sắc của các khối. Nhưng hãy chú ý một vài từ quen thuộc. "Nếu" và "if" và "lặp lại." Và bạn có thể đoán đó là gợi nhớ của chi nhánh, hoặc các điều kiện chúng ta đã thấy, và ngay cả những cấu trúc vòng lặp. Vì vậy, chúng tôi có các khối tương tự ở đây. Nhưng thú vị nhất là một trong những này ở đây. Khi lá cờ màu xanh lá cây này được nhấp, này, đối với những người lập trình trước kinh nghiệm, tương đương đến một chức năng chính. Nhưng đối với những người không quen, đây là mảnh ghép sẽ bắt đầu tung toàn bộ chương trình của chúng tôi. Nó có nghĩa là khi tôi đi, trong này chương trình, và bấm vào một flag-- màu xanh lá cây bạn có thể thấy ở đây trong góc trên bên trái của giao diện người dùng, để nhìn thấy lá cờ màu xanh lá cây bên cạnh các dấu hiệu dừng lại màu đỏ? Khi tôi bấm vào đó, tôi Chương trình sẽ chạy. Bây giờ, tôi sẽ làm một cái gì đó siêu đơn giản với Scratch. Tôi sẽ đi trước và đi vào bảng vẻ ở đây, nơi tôi có một loạt của mảnh ghép màu tím, và tôi sẽ đi trước và làm một cái gì đó siêu đơn giản như thế, nói. Và thông báo then-- này văn bản trong hộp màu trắng là editable-- tôi sẽ nói "Xin chào thế giới", giống như chúng tôi đã làm trong văn bản mà phiên bản vừa mới đây. Và bây giờ nếu tôi đi và bấm vào đây lá cờ màu xanh lá cây, bây giờ tôi đã lập trình. Đó không phải là đặc biệt chương trình thú vị, nhưng tôi làm cho máy tính làm một cái gì đó. Tôi bắt đầu một chương trình và nó đã làm những gì tôi nói với nó để làm. Bây giờ, tôi có thể tiếp tục kéo và thả ngày càng nhiều của những mảnh ghép và họ sẽ đan, nhưng chúng ta hãy tát một số thuật ngữ trên đây rằng chúng ta sẽ thấy tái phát trong suốt khóa học, và thực sự trong suốt khoa học máy tính và lập trình nói chung. Điều này "nói" khối, màu tím, chúng ta hãy chỉ cần bắt đầu gọi một tuyên bố. Nó giống như một tuyên bố của thực tế. Làm điều này. Vì vậy, nó là một loại hướng dẫn mà bạn có thể nuôi một máy tính như là một phần của một chương trình hoặc một thuật toán. Để cho rõ ràng, bạn đã có thể dùng cho các cấp bạn có các chương trình trên máy tính của bạn. Và chúng loại thuật toán, nhưng một chương trình thực sự là một loạt các thuật toán rằng một số người đã viết. Họ đóng gói nó lên và họ đã bán nó để bạn, hoặc họ được đăng trên một trang web để bạn có thể tải về. Vì vậy, một chương trình chỉ là một là bó toàn bộ các số không và những người thân rằng, bằng cách nào đó, con người tạo ra. Và những mô hình số không và những người đại diện cho điều gì đó, cuối cùng, như "chào thế giới" hay "chơi âm nhạc này "hoặc" chơi video này " hoặc "gửi một email." Nhưng chúng tôi sẽ trở lại trong cách chi tiết hơn những gì một chương trình là khi bạn, chính mình, viết cho họ. Dưới đây là một statement-- "Đợi một giây." Tôi không sử dụng này chưa, nhưng nếu tôi muốn chương trình của tôi dừng lại một chút để làm một cái gì đó, tôi có thể nói với nó để làm như vậy. Chờ một giây. Bây giờ một số khác có thể là "chơi âm thanh." Vì vậy, đây là duy nhất cho Scratch, nó có khả năng chơi âm thanh. Vì vậy, một tuyên bố tôi có thể sử dụng là, ở đây, "chơi âm thanh." Trong khi đó, biểu thức Boolean, vì vậy đây là một từ fancier đặt theo tên của một người tên là ông Bool, và điều này là tất cả về một câu hỏi. Đúng hay false-- là chuột xuống? Một biểu thức Boolean chỉ là một số biểu hiện bằng tiếng Anh đó là đúng hoặc sai. Bật hoặc tắt. Hoặc là một hay không. Bạn có thể nghĩ về nó trong nhiều cách, nhưng đó là đúng hoặc giả này, cuối cùng. Vì vậy, "chuột xuống dấu hỏi," đó sẽ là một biểu thức Boolean. Và bạn có thể nghĩ của người khác, có lẽ. Ví dụ, "là số còn lại ít hơn số phải không? " Đó cũng sẽ là một biểu thức Boolean. "Ít hơn" là một biểu thức Boolean. Điều này cũng vậy, "con trỏ chuột cảm động." Tôi không chắc chắn lý do tại sao họ gọi nó là con trỏ chuột. Nó chỉ có nghĩa là con trỏ, là mũi tên trên màn hình, chạm vào con mèo, ví dụ. Hoặc một số khía cạnh khác của màn hình. Và đó là một câu hỏi, một lần nữa, và biểu thị một biểu thức Boolean. Một cái gì đó mà có lẽ bạn muốn sử dụng trong một điều kiện. Vì vậy, chúng tôi sẽ đến đó chỉ trong một khoảnh khắc. Bạn có thể "và" việc cùng nhau. Vì vậy, nếu bạn muốn kiểm tra nếu điều này là trường hợp và đó là trường hợp, bạn có thể sử dụng một "và" khối như thế này. Và đây là điều kiện. Chú ý hình dạng của mở ít ở phía trên cùng mảnh ghép màu vàng này, nó gợi nhớ đến hình dạng mà chúng ta chỉ thấy một chút thời gian trước đây. Mỗi một biểu thức Boolean có các cạnh chỉ ở bên trái và bên phải. Và đó là bởi vì những người MIT quyết định mà bởi hình dạng trực quan vận chuyển, bạn có thể loại giúp mọi người, sinh viên và trẻ em như nhau, để loại điền vào chỗ trống theo nghĩa đen. Bây giờ mà puzzle-- mở đầu là một chút nhỏ, và như chúng ta sẽ thấy trong chương trình, trong Scratch, nó sẽ phát triển cho phù hợp. Nó sẽ duy trì hình dạng của nó, cuối cùng. Vì vậy, một điều kiện cho phép của bạn quyết định "Tôi cần phải làm một cái gì đó hay không?" Một biểu thức Boolean là câu hỏi thực tế bạn đang sử dụng để quyết định để tôi đi tới bên trái hoặc để tôi đi về bên phải khi tôi gặp phải này cái gọi là ngã ba đường? Bạn có thể có hai chi nhánh. NẾU một cái gì đó là sự thật, làm này, nếu không đi theo cách đó, hoặc bạn có thể chỉ cần không làm gì tất cả, như khối này ngụ ý. Tương tự như vậy, chúng tôi có thể lồng những điều này. Vì vậy, nếu bạn muốn tăng gấp ba lần ngã ba đường, hoặc làm điều này hay điều này hay đó, bạn có thể chỉ tổ những điều này lại với nhau. Và nó bắt đầu để có được một chút xấu xí, cuối cùng, chắc chắn, nhưng logic là vẫn như nhau. Bạn có nghĩa là có thể đọc đầu này xuống dưới và nó nói những gì nó means-- nếu điều này là sự thật, làm được điều này, nếu người nào khác khác. Một vòng lặp không có được đơn giản trong Scratch. Mãi mãi làm như sau. Bây giờ bạn có thể không nghĩ rằng bạn có thể làm được gì nhiều vì không có nhiều không gian giữa đầu và cuối này mở mảnh ghép. Nhưng bạn sẽ thấy Scratch sẽ phát triển để phù hợp với nhiều mảnh ghép như bạn muốn nhồi nhét trong đó. Vòng lặp khác có thể bày tỏ với lặp đi lặp lại. Nếu bạn biết trước, "Tôi muốn làm một cái gì đó 10 lần, " bạn chỉ có thể nói với Scratch để làm một cái gì đó 10 lần. Và, trong khi đó, chúng ta có thể có các biến. Vì vậy, đây là một tùy ý, đó là cam trong trường hợp này, và đây là một tour du lịch cơn lốc. Một lần nữa, bạn sẽ tìm thấy điều này rất dễ tiếp cận khi bạn bắt đầu chỉ trỏ và nhấn chuột. Tôi đã đặt tên n biến của tôi, nhưng tôi có thể đặt tên cho nó bất cứ điều gì tôi muốn, và tôi đặt nó ở đây, trong Ví dụ tùy tiện này, bằng không. Bây giờ nhìn thấy một chương trình như chào trên thế giới không phải là tất cả những gì hấp dẫn, vì vậy hãy thực sự mở ra một cái gì đó là một cựu sinh viên thực hiện. Hãy để tôi đi trước và mở ra, Ví dụ, chương trình này ở đây, mà tôi rất thích có một tình nguyện viên. Được rồi, làm thế nào about-- chúng ta hãy đi xa hơn. Vâng, đi lên trên. Tên của bạn là gì? ABBY: Abby. DAVID J. Malan: Abby, đi lên trên. Vì vậy, có bao giờ bạn chơi trò chơi này trước khi? ABBY: số DAVID J. Malan: Được rồi. David, rất vui được gặp bạn. Come on. Và lập trình của bạn là gì nền, nếu có. ABBY: Tôi đã học được một số C ++. DAVID J. Malan: Bạn đã học được một số C ++. Và trò chơi của bạn là gì chơi nền? ABBY: Không nhiều lắm. DAVID J. Malan: OK, vì vậy chúng tôi sẽ lấy nó. Vì vậy, đây là cách trò chơi là đi làm việc. Tôi sẽ đi trước và nhấp vào lá cờ màu xanh lá cây, mà là lên đây ở phía trên bên phải. Bây giờ người tiền nhiệm của mình trong lớp đã cho bạn một số hướng dẫn tại đây. Và chỉ trong một khoảnh khắc, nói "không gian để bắt đầu." Vì vậy, đi trước và nhấn phím dài. MÁY TÍNH Game: Pikachu. DAVID J. Malan: Và mục tiêu là để nắm bắt những thực phẩm, như mô tả có bên trái. Và để [không nghe được] [GAME MUSIC CHƠI] DAVID J. Malan: Aww, tốt, cảm ơn bạn đã chơi. Chúng tôi có ở đây một chút chia tay món quà cho bạn. Chúng tôi có CS50 căng thẳng quả bóng, nếu bạn muốn chọn. Được rồi, tốt để đáp ứng bạn. Cảm ơn bạn đã đến và thách thức. Vì vậy, chúng tôi có những quả bóng căng thẳng hơn, do đó chúng ta hãy làm nhiều hơn nữa để thúc đẩy một ví dụ. Một tình nguyện viên? Được rồi, làm thế nào về ngay tại đây ở phía trước. Tên của bạn là gì? PHILLIP: Phillip. DAVID J. Malan: Phillip. Lên đây, Phillip. Vì vậy, Phillip là có được thách thức với các trò chơi khác rằng một trong những người tiền nhiệm của bạn đã viết như là một phần của vấn đề thiết lập không, được gọi là trò chơi khó khăn nhất của Ivy. Và chúng ta sẽ thấy chỉ trong một thời điểm những gì có nghĩa là bằng cách này. Phillip, rất vui được gặp bạn. Nền của bạn là gì? PHILLIP: Thực hiện rất nhiều mã hóa. Thực hiện một chút chơi điện tử. DAVID J. Malan: OK. Có rất nhiều trò chơi, quá. Và bạn đã chơi game này chưa? PHILLIP: Không DAVID J. Malan: Tất cả đúng, vì vậy ở đây chúng tôi đi. Tôi sẽ đi trước và nhấp vào lá cờ màu xanh lá cây. [GAME MUSIC] [MUSIC MC Hammer, "U KHÔNG CHẠM VÀO ĐÂY"] PHILLIP: [không nghe được] DAVID J. Malan: [không nghe được] PHILLIP: [không nghe được] [Laughing] [MUSIC MC Hammer, "U KHÔNG CHẠM VÀO ĐÂY"] DAVID J. Malan: [không nghe được] Cày qua nó. PHILLIP: [không nghe được] DAVID J. Malan: Đi trước. [MUSIC MC Hammer, "U KHÔNG CHẠM VÀO ĐÂY"] DAVID J. Malan: Được rồi. Xin chúc mừng. [Vỗ tay] DAVID J. Malan: Chúng tôi sẽ bài trực tuyến mà sau này vì vậy mà bạn có thể trì hoãn với nó là tốt. Princeton đi lên tiếp theo, sau đó. Vì vậy, bây giờ chúng ta hãy thực sự tiến hành bắt đầu từ đầu, vậy để nói chuyện, và thực sự xây dựng cho đến khi chúng ta có thể trêu chọc nhau một số trong những ý tưởng và nhận được một cái gì đó thậm chí phức tạp hơn bởi cuối cùng. Tôi sẽ đi qua đây và tôi sẽ đi trước và tạo ra một tập tin mới. Vì vậy, một lần nữa, bộ vấn đề sẽ đi bộ bạn thông qua một số bước. Nhưng, tất cả những gì tôi làm là đi vào menu File và tôi cho biết "mới", rất giống Microsoft Word, hoặc chương trình nào như thế. Và chúng ta hãy đi trước và chúng tôi now-- thực hiện "Xin chào thế giới" một thời điểm trước đây, nhưng chúng ta hãy làm một chút gì đó dễ thương hơn. Tôi sẽ đi đến các sự kiện. Và tôi sẽ làm "khi lá cờ màu xanh lá cây nhấp vào. " Và sau đó tôi sẽ sử dụng, chúng ta sẽ nói, một chi nhánh. Vì vậy, tôi sẽ sử dụng một "nếu" điều kiện. Và chú ý ngay khi tôi nhận được gần với nó, nó muốn chụp với nhau. Vì vậy, tôi cho đi và nó bắt dính lại với nhau. Và bây giờ tôi có thể làm điều gì đó thú vị. Nếu tôi di chuyển qua đây, tôi sẽ để xem một bó toàn bộ khối. Nếu tôi đi đến "dữ liệu" - hãy để tôi phóng to in-- có cái gì đó về các biến. Nếu tôi đi đến "chuyển động", bạn có thể dường như xoay chuyển tình thế. Nếu tôi đi đến "khai thác" - oh, đây là thú vị, Tôi có thể chọn một số ngẫu nhiên. Vì vậy, hãy để tôi làm điều gì đó với chỉ một số xác suất, chỉ vì. Tôi sẽ đi trước và kéo mảnh ghép này, này là ít hơn khối, do đó nó chỉ "Là con số này ít hơn một thế?" Nhưng tôi không muốn có một mã cứng một số bởi vì đó là khá vô nghĩa. Vì vậy, tôi sẽ kéo mảnh này ở đây, và nhận thấy làm thế nào nó gắn đúng, và bây giờ hãy để tôi đi trước và nói "nếu số đó là chọn ngẫu nhiên được ít hơn sáu, làm như sau. " Bây giờ tại sao ít hơn sáu? Khả năng đây là những gì có hiệu quả sẽ cung cấp cho tôi, chỉ cần trực giác? Khoảng 50%, phải không? Nếu con số đó của đoán ngẫu nhiên từ 1 đến 10 là ít hơn sáu, rõ ràng đó là một, hai, ba, bốn, hoặc năm. Và đó sẽ cho tôi một 50% khả năng về những gì xảy ra? Vâng chúng ta hãy làm một cái gì đó giống như này, "meo meo chơi âm thanh." Và thông báo, một lần nữa, các mảnh ghép phát triển để phù hợp với, miễn là các hình dạng phù hợp. Đó là điều quan trọng. Hãy để tôi đi qua để Scratch ở đây và bấm vào "chơi". Không có gì xảy ra. Đó có phải là một lỗi? Không, không cần thiết. Nó chỉ có thể là một số lớn hơn đã được lựa chọn. Vì vậy, hãy làm điều đó một lần nữa. Không có gì. [Meo] DAVID J. Malan: Có nó là. [Meo] DAVID J. Malan: Một lần nữa. Số [MEOWING] DAVID J. Malan: Vì vậy, nếu bạn đã bao giờ chơi một trò chơi, tất nhiên, nơi thứ đang xảy ra một cách ngẫu nhiên, như những kẻ xấu đang đến hay không đến vào màn hình, hoặc điều đang giảm hay không giảm, đó là chỉ vì một cái gì đó siêu đơn giản như thế này đang xảy ra. Chọn một số ngẫu nhiên, và nếu nó ít hơn so với một số giá trị, có thể làm điều này hoặc có thể làm điều đó. Chúng tôi có thể kết hợp đó vào một điều kiện. Hãy làm một cái gì đó khác nhau. Hãy để tôi ném đó đi. Bạn có thể thoát khỏi các công cụ bằng chỉ cần kéo nó đi sang bên trái và buông xả. Hãy để tôi đi trước và làm một khối mãi mãi và rất nhanh chóng làm điều gì đó gây phiền nhiễu. Hãy để tôi đi trước và nói "meo meo chơi âm thanh." Nhưng tôi không muốn điều này là quá gây phiền nhiễu, vì vậy hãy để tôi lấy khối này, "Chờ một giây," và thông báo không có chỗ cho nó. Nhưng nếu bạn đi gần đủ, nó muốn đến đó. Vì vậy, tôi cho đi và nó sẽ phát triển để điền vào các khối. Vì vậy, bây giờ, đây là một vòng lặp. [MEOWING] DAVID J. Malan: Tôi nghĩa là làm điều này mãi mãi. Một lần nữa và một lần nữa. Đó chỉ là không âm tự nhiên. Hãy để tôi đi trước và thay đổi này không một giây, hai giây và nhấn Enter. Và những gì tốt đẹp về Scratch là mà bạn có thể chương trình tương tác. Thực hiện thay đổi, có thể nhấn Enter hoặc chơi một lần nữa, và nó sẽ chỉ tiếp tục đi. Vâng, bây giờ tại sao chúng ta không làm một chút gì đó dễ thương hơn? Thay vì làm tất cả mọi thứ từ đầu, hãy để tôi đi trước và mở ra một bước tiến thực hiện một, mà tôi pre-nướng, được gọi là "Pet Cát." Và chúng tôi sẽ gửi tất cả các tập tin trực tuyến, và vấn đề thiết lập bằng không sẽ cho bạn biết làm thế nào để truy cập chúng và mở chúng lên. Và thông báo, điều này là khá đơn giản. Nhưng trước, tôi dường như đã nắm lấy một "mãi mãi" khối, vì vậy tôi đã có một vòng lặp. Và sau đó tôi đã có một "nếu" điều kiện. Tôi đã có một biểu thức Boolean. Vì vậy, bằng tiếng Anh, chỉ cần liếc nhìn này, đặc biệt là nếu bạn chưa bao giờ lập trình trước, chỉ bằng trực giác, những gì là điều này sẽ làm, chương trình này? [TƯỢNG nhí] DAVID J. Malan: Nếu bạn nuôi mèo, con mèo sẽ meo meo, phải không? Bởi vì "mãi mãi bỏ chọn" được con trỏ chuột chạm vào con mèo. Vì vậy, để được rõ ràng, và tôi đã không nói này trước đây, tất cả các câu đố miếng và kịch bản mà chúng tôi đã kết hợp chúng thành, có thể nói, một kịch bản đồng nghĩa với chương trình, thực sự, thuộc về con mèo này. Và lý do is-- vì thông báo như thế nào cùng một con mèo này ở đây được đánh dấu, ở đây bạn có thể tạo ra một mèo thứ hai hoặc con chó hoặc thực sự bất cứ điều gì bạn muốn đồ họa. Bạn có thể nhập một cái gì đó từ Photoshop, hoặc tương tự, và tích hợp một cái gì đó nếu bạn muốn làm cho nó cho một dự án. Và những gì bạn sẽ tìm thấy, cuối cùng, là bạn có thể thêm các kịch bản, thêm câu đố miếng, với những nhân vật cá nhân. Vì vậy, những tất cả đều thuộc mèo đặc biệt này. Vì vậy, bây giờ nếu tôi đi trước và chơi chương trình này, không có gì đang xảy ra. Nhưng nó đang chạy. Chương trình này mãi mãi trong vòng lặp, loại chờ đợi những gì sẽ xảy ra? [TƯỢNG nhí] DAVID J. Malan: Để nuôi con mèo. Vì vậy, nếu tôi di chuyển con chuột của tôi đối với him-- [MEOWING] DAVID J. Malan: Vì vậy, bây giờ Tôi vuốt ve con mèo. Trong khi đó, chúng ta có thể có một chi nhánh gấp đôi. Hãy để tôi đi trước và mở lên không nuôi mèo. Chúng tôi sẽ gửi trực tuyến này là tốt. Đây là nhiều hơn một chút phức tạp, nhưng mà không nói bạn có thể đoán có lẽ những gì sẽ xảy ra. [MEOWING] DAVID J. Malan: Cát là meowing, lớn thời gian cũ. Tuy nhiên, chương trình này là các khóa học được gọi là "Đừng mang theo thú nuôi Cát" như vậy rõ ràng, tôi muốn nuôi con mèo. [Gầm] DAVID J. Malan: Không nuôi con mèo. Bây giờ, chúng ta hãy có một cái nhìn tại một ví dụ ở đây. Điều này sẽ được gọi là "Hi, Hi, Hi," vì lý do sẽ được rõ ràng, bởi vì ngay sau khi tôi chạy thing-- này [SEAL sủa] DAVID J. Malan: Rất dễ viết chương trình cào khó chịu. [SEAL sủa] DAVID J. Malan: Bây giờ chúng ta sẽ không đi sâu vào chi tiết với tất cả các, nhưng nhận thấy có một vài tính năng mới ở đây. Có một biến, được gọi là "tắt" và sau đó là một loạt các điều kiện. Và bây giờ, hãy để tôi chỉ trêu chọc bạn bằng cách nói rằng nếu anh chàng này trở nên quá khó chịu, Tôi có thể nhấn phím dài và ông dừng lại. Bởi vì vai trò được chơi bởi hai kịch bản là như sau. Một trong số đó là làm sủa vài giây. Một trong những khác chỉ là chờ đợi cho tôi để nhấn phím dài. Và nếu tôi làm nhấn phím dài, nó sẽ thay đổi tình trạng biến này, giá trị của biến này, đó là rõ ràng gọi là "tắt tiếng," Tôi không gọi Có điều gì đó nhàm chán như n, Tôi gọi nó là một từ tiếng Anh, "tắt tiếng." Từ 1-0 hoặc 0-1. Từ true sang false hoặc false thành true. Và như vậy bạn có thể thực sự thấy bây giờ, mà bạn có thể có hai kịch bản, hai chương trình đang chạy đồng thời, và cả hai có thể ngồi trong một vòng lặp làm một cái gì đó. Chờ cho con người để làm một cái gì đó như đánh spacebar. [SEAL sủa] DAVID J. Malan: Và bây giờ ông đang trên đường một lần nữa. [SEAL sủa] DAVID J. Malan: Vì vậy, những gì khác chúng ta có thể làm với các ví dụ? Vâng, chúng ta hãy đi trước và làm một ví dụ với đếm cừu. Chúng tôi sẽ tiếp tục này dọc theo dòng ở đây of-- chúng ta hãy mở ra các ví dụ cừu. Và thông báo, giống như trước đây, thế này, may mắn, là một chút ít gây phiền nhiễu. Khi tôi nhấn chơi here-- Ồ không, điều này là khó chịu. Anh ấy sẽ trừu kêu với một số xác suất. Hãy chơi này một lần nữa. [Cừu BLEETING] DAVID J. Malan: Sự khác biệt duy nhất là chúng tôi đã thay đổi trang phục, có thể nói, và chúng tôi đang giảm một nửa và nói những gì mà con số thực tế. Vâng chúng ta hãy đi trước và thực hiện việc này một bước xa hơn. Và hãy để tôi trêu chọc bạn một đặc điểm khác ở đây. Chúng ta hãy đi trước và mở ra một chương trình gọi là chủ đề. Vì vậy, nhiều như bạn có thể có một ma, có nhiều kịch bản, bạn có thể có hai yêu tinh, một con chim trong một con mèo, từng có chữ viết riêng. Và mỗi người trong số họ có thể hoạt động đồng thời. Nếu bạn đã từng nghe Từ "đa luồng" một máy tính có nghĩa là "đa luồng" nó có thể làm nhiều việc cùng một lúc, và, thực sự, vì vậy có thể Scratch. Và bây giờ thấy con chim là loại ngớ ngẩn. Nó chỉ làm những điều ngẫu nhiên, nảy ra khỏi màn hình. Rõ ràng con mèo đã được lập trình để loại có khả năng tìm kiếm nhà ở trên gia cầm vì ông luôn luôn chỉ vào anh ta. Cho đến cuối cùng, ông bắt con chim thực tế. Vì vậy, tôi không quan tâm tới các chi tiết ở đây, nhưng bạn có thể loại ngắm nhìn các hình dạng, một số "Nếu" điều kiện, một số biến, có thể một số vòng, là cuối cùng làm điều tương tự. Bây giờ hãy để tôi đi trước và mở một cái gì đó khác hoàn toàn, trêu chọc một số bạn, đặc biệt những người thoải mái hơn, những gì bạn thực sự có thể làm với điều này. Tôi sẽ đi trước và mở nút ở đây. Và đây là một siêu chương trình đơn giản, dường như, nhưng xem những gì sẽ xảy ra khi I-- Xem gì xảy ra khi tôi mở phiên bản này của nó, ở đây trong trình duyệt, scratch.mit.edu. Và khi tôi bấm lớn màu đỏ này nút, thông báo những gì sẽ xảy ra. Vì vậy, những gì đang xảy ra ở đây? Có thực sự là một phức tạp hơn rất nhiều xảy ra dưới mui xe, mặc dù tôi đã thực hiện này, hoặc thẳng thắn, Dan Bradley đã thực hiện điều này rất đơn giản. Ông đã thiết kế một trò chơi tùy chỉnh Scratch mảnh, được biết đến như một phần mở rộng Scratch, ông gọi nó là Bật tắt. Chuyển đổi và những gì không là nó sẽ gửi một tin nhắn qua internet. Và đó là thông điệp của bạn có vẻ hơi khó hiểu. Nhưng điều này cũng vậy, bạn sẽ hiểu bởi cuối kỳ của. Thông điệp anh ấy thực sự gửi trông một chút gì đó như thế này. Nó chỉ là văn bản. Khó hiểu. Bạn sẽ hiểu nó theo thời gian chúng tôi nhận được vấn đề thiết lập bảy. Nó chỉ cần gửi một tin nhắn văn bản qua Internet tới một máy chủ. Và máy chủ có nghĩa là, cuối cùng, nói chuyện với bóng đèn này, là một trong những bóng đèn ưa thích trong nó, chính nó, đang nói chuyện với Wi-Fi trong mạng ở đây, nơi mà một thiết bị địa phương xuống here-- và cuối cùng, nó thực sự biến ánh sáng và tắt. Nhưng chúng ta có thể làm nhiều hơn nữa điều thú vị vẫn còn. Chú ý những gì Dan cũng đã làm cho chúng tôi. Ông đã thực hiện nhiều họa tiết, mỗi trong đó có một kịch bản chờ đợi một cú nhấp chuột. Và nếu tôi bấm màu đỏ, nó chuyển sang màu đỏ. Nếu tôi nhận được màu xanh, nó đi xanh dương. Màu xanh lá cây, vàng, cam. Và tất cả những điều này xảy ra bởi đi theo cách ra trên internet, sao ở đây đến bóng đèn, và tắt. Và nếu bạn có thể tin it-- và đây là có lẽ một trong những Scratch phức tạp nhất dự án một người nào đó có implemented-- ông đã làm nó, công bằng, trong một ngày. Và đó là những thách thức chúng tôi đã ném xuống Dan khi chúng tôi thấy có bóng đèn nhị phân, chúng tôi có cào như thế nào, chúng ta có thể kết hợp chúng? Và, thực ra, điều này là hoàn toàn một cái gì đó bất cứ ai trong phòng này có thể làm bởi end-- học kỳ của ông là bóng đèn nhị phân reimplemented sử dụng cùng một giao diện đó là trên iPad của chúng tôi vào ngày thứ Tư. Vì vậy, bây giờ, nếu tôi thực sự nhấp vào cộng ở đây, chúng tôi có một, hai, ba. Tôi có thể nhấn 16 và biến rằng một ngày. 128, và vv. Bây giờ nếu mà mình có và thổi tâm trí của bạn, bạn có thể làm những việc dễ tiếp cận hơn, không liên quan đến bất kỳ phần cứng chắc chắn. Chỉ cần mọi thứ trên màn hình chính nó. Và, thực sự, những gì hầu hết sinh viên cuối cùng làm là một trò chơi, một số phần của tác phẩm nghệ thuật, hoặc một số loại hoạt hình tương tác. Và tôi sẽ nói một của chúng tôi đã được yêu thích này. Và tôi nghĩ rằng nếu chúng ta có thể tắt đèn, chúng tôi sẽ đưa ra một cái nhìn cuối cùng này Dự án đầu trong kết luận. Nhưng những gì bạn sẽ cần phải nhớ, như Tôi có thể trêu chọc bạn với một chi tiết cuối cùng, cắt Cắt sẽ bắt đầu vào tuần tới. Giờ làm việc sẽ bắt đầu vào tuần tới. Vấn đề đặt không sẽ được đăng CS50.harvard.edu sau ngày hôm nay. Và bạn sẽ được chào đón trong vấn đề thiết lập không để riêng Zamyla Chan CS50, người dẫn nhất của walkthroughs của chúng tôi. Đây là những video nhúng trong bài tập mà sẽ giữ bàn tay của bạn qua rất nhiều các thiết lập ban đầu và thông qua nhiều các quyết định thiết kế có thể. Vì vậy, nếu bạn đã từng có cảm xúc khi nhận lại một bài tập về nhà và tự hỏi, nơi nào để bắt đầu? Cô sẽ có được câu trả lời cho bạn. Và bây giờ, một chương trình cuối cùng từ một trong những người tiền nhiệm của bạn trong câu trả lời cho câu hỏi "Con cáo không nói gì?" [MUSIC YLVIS, "GÌ THE FOX NÓI?] YLVIS: (HÁT) Chó đi gâu. Cát đi meo meo. Bird đi tweet và chuột đi tiếng rít. Bò đi moo. Ếch đi tiếng kêu. Và con voi đi thổi còi. Vịt nói lang băm và cá đi blub. Và con dấu đi ow ow, nhưng có một âm thanh mà không ai biết, những gì con cáo nói gì? Và DAVID J. Malan: Đó là nó cho CS50. Chúng tôi sẽ nhìn thấy bạn ở Puzzle ngày và ngày thứ hai. [Vỗ tay] [MUSIC YLVIS, "CO GÌ FOX SAY?"] Người kể chuyện: Và bây giờ sâu suy nghĩ, bởi Daven Farnham. Hôm nay tôi bị đánh trong phải đối mặt với một cuốn sách điện thoại. Khó hiểu, như tôi đang ở nhà xem trực tuyến.