[MUZIK bermain] -Alright! -Ini Adalah CS50. -Ini Adalah CS50. -Ini Adalah CS50. [MUZIK - IGGY Azalea, "FANCY"] Memori kegemaran -My dari CS50 adalah apabila saya pergi ke teka-teki Hari. -Probably Hanya masa yang menghabiskan masa bekerja di set masalah dengan rakan-rakan dan orang-orang saya yang Wold akhirnya menjadi blockmates saya. -My Memori terbaik dari CS50 adalah Hackathon. -The CS50 Hackathon. -Hackathon. -Hackathon. -Hackathon. -The Hackathon -Rob Bowden. Hanya segala-galanya tentang dia. [MUZIK - IGGY Azalea, "FANCY"] Memori kegemaran -My adalah bila saya peringkat dan saya memainkan peranan yang berprestij daripada nod [? dalam Berkaitan?] [? Senarai. ?] -Apabila Kita semua mendapat ruang Dropbox percuma dan David adalah seperti, lihat di bawah tempat duduk anda. Dan ia adalah seperti, ruang untuk semua orang! [MUZIK - IGGY Azalea, "FANCY"] Nasihat -My bagi apa-apa pelajar yang masuk akan adalah untuk benar-benar bekerja pada P-set dengan rakan-rakan. Jam -Office sangat banyak rakan anda. -Make Sebahagian besar pengalaman anda dan memenuhi seberapa ramai orang yang anda boleh. -Jangan Takut untuk meminta bantuan. -Start P-set pada awal minggu. -Saya Berfikir perkara yang paling besar adalah untuk mengambil kesempatan daripada semua sumber CS50 yang mempunyai. -Go Waktu pejabat pada awal minggu. -Definitely Menonton seluar pendek. -Jangan Berlengah-lengah di P-set anda. -Make Pasti anda mencari kumpulan yang besar orang untuk bekerja di P-set dengan. Anda boleh mempunyai banyak keseronokan dan mendapatkan kerja yang dilakukan bersama-sama. -Jangan Takut untuk menolak diri anda. Pergi untuk edisi penggodam kadang-kadang. Perkara -Write di atas kertas sebelum anda pernah menyentuh komputer anda. -CS50 Adalah benar-benar hebat pada menyediakan cara untuk mendapatkan bantuan. -My Sekeping nasihat adalah tidur. Adakah sesiapa yang berkata? Tidur, pasti. Ia mudah untuk tidak melakukan, tetapi anda perlu melakukannya, saya fikir. -Saya Akan mengatakan benar-benar bersedia dari segi mental kerana anda akan menyukainya. [MUZIK - IGGY Azalea, "FANCY"] -Ini Adalah CS50. -Ini Adalah CS50. -Ini Adalah CS50. [MUZIK - IGGY Azalea, "FANCY"] -Ini Adalah CS50. [Tepuk tangan] DAVID J. MALAN: Jadi ini adalah CS50 dan ini adalah akhir Minggu 0. Dan yang hanya beberapa kakitangan CS50 ini yang menanti anda bukan sahaja dalam seksyen dan waktu pejabat, tetapi, juga, hujung minggu ini akan datang Teka-teki di CS50 Hari. Yang, sekali lagi, tidak semua tentang pengaturcaraan. Malah, ia dijangka bahawa anda tidak perlu program apa-apa, tetapi sebaliknya menyelesaikan masalah menggunakan kecerdasan dan rakan-rakan bersama anda. Kami akan disertai oleh beberapa rakan-rakan kami di Facebook-- jika anda mendaftar here-- yang untuk beberapa tahun yang lalu, mempunyai sebenarnya telah menulis cabaran-cabaran ini dengan kami. Dan sebagainya, mereka akan menjadi orang-orang akhirnya berjalan Puzzle Hari. Dan sebagainya, anda akan dicabar dengan tepat jenis perkara dan masalah yang orang di Facebook suka untuk berfikir tentang. Jadi yang esok. Mendaftar di cs50.harvard.edu/register. Sekarang sebuah kata pada pasangan kakitangan khususnya. Ini di sini adalah Ansel Duff, yang sebenarnya adalah salah satu daripada pengarang bersama ini binari mentol yang kita lihat pada hari Rabu, sebagai tambahan kepada CS50 sendiri Dan Bradley. Ansel Duff juga bekas dinasihati bayat saya 3 tahun yang lalu dan dia benar-benar walaupun dibina mimbar ini. Dia pergi untuk melakukan sains kejuruteraan dan banyak lagi. Kini, gambar di sini sebenarnya Ansel 3 tahun yang lalu di CS50 Hackathon apabila beliau dipinjam salah satu daripada kami belon, terperangkap untuk laptop, dan, bagi 12 seterusnya beberapa ganjil jam, memberi tumpuan kepada projek terakhirnya, mengambil rehat untuk membuka beg gula-gula di Hackathon. Tetapi dia pergi lebih baru-baru ini untuk menghabiskan musim panas yang lepas dengan kami, sejak CS50 untuk kakitangannya dan kini pelajar semester ini, mempunyai pencetak sendiri 3D. Dan secara ringkas satu pencetak 3D adalah alat yang kelihatan agak seperti ini. Anda mengisinya dengan kili plastik yang dileburkan oleh peranti dan anda membina perkara-perkara secara literal dari apa-apa. Sama seperti pencetak inkjet, anda mula meludah keluar titik kecil daripada plastik bentuk yang bersama-sama untuk membentuk objek keseluruhan. Dan Ansel misalnya, lebih awal musim panas ini, mempunyai iPhone 5 dan memutuskan dia benar-benar mahu untuk prop ia di atas mejanya. Tetapi dia tidak mahu keluar dan membeli sesuatu dari kedai Apple atau seumpamanya, maka dia duduk dan mula melukis sesuatu. Beliau mengambil ukuran beberapa bagaimana tebal dan bagaimana luas iPhone beliau adalah, dia menarik imej ini di sini, beliau memutuskan bahawa dia mahu mempunyai kecondongan 75 darjah kerana ia merenung dia di atas meja di sana. Dia kemudiannya berpaling ini, menggunakan perisian, ke dalam model 3D CAD yang kelihatan sedikit sesuatu seperti ini. Kemudian dia meneruskan, akhirnya, untuk benar-benar membuat ia. Jadi sebenarnya, sesiapa di antara kamu di sini, mungkin berturut-turut yang saya boleh membuang, mempunyai an-- ada kita mempunyai orang dengan iPhone 5, dan di sini kita mempunyai dua lagi. Sekarang, tidak boleh kalah, CS50 sendiri Cheng Gong juga dinyatakan pada musim panas ini untuk membina agak beberapa perkara dan, sebenarnya, atas sebab-sebab yang masih tidak jelas, telah perlahan-lahan mencetak tentera gajah dengan menjelaskan lengan dan batang. Beberapa yang sebenarnya di sini jika sesiapa sahaja kini akan like-- gajah. Baiklah,. tetapi apa Cheng juga melakukan bagi kami ialah dia sangat sila menubuhkan kamera kerana gajah itu, percaya atau tidak, mengambil masa kira-kira dua dan setengah jam untuk mencetak. Walaupun pendirian iPhone mengambil satu jam setengah untuk mencetak. Dan apa Cheng pergi ke hadapan dan melakukan telah menubuhkan sebuah kamera yang bagus di hadapan pencetak 3D ini, difilemkan selama satu jam setengah reka bentuk Ansel dicetak. Kami dilapisi beberapa seksi muzik kepadanya dalam perintah untuk memberikan ini untuk melihat bagaimana percetakan 3D berfungsi. Dan walaupun ini sebenarnya dalam plastik, sedar bahawa jika ini adalah kawasan menarik minat anda dalam bidang akademik, terdapat orang, antara mereka Jennifer Lewis di sini di Pusat Pengajian Kejuruteraan, yang sebenarnya bekerja di percetakan 3D objek plastik. Tetapi, semakin, bahan biologi untuk menyelesaikan masalah fisiologi untuk manusia. Tetapi di sini adalah sedikit sesuatu daripada CS50. [KUAT MEKANIKAL bunyi] DAVID J. MALAN: Ia tidak bunyi apa-apa seperti itu pada hakikatnya, tetapi ia lebih sejuk untuk menontonnya pada kelajuan itu, dan dengan bunyi itu. Sekarang, pada hari Rabu, bagaimana yang kita pertama sampai ke sini? Kami mula bercakap tentang komputer sains dan kita bertanya apa yang ia adalah. Dan ia mengenai beberapa perkara, dan terdapat begitu banyak arah yang berbeza di mana anda boleh pergi selepas kursus seperti CS50. Malah, jika anda mengambil satu dari orang-orang pemandu tidak rasmi kepada CS luar, buku kecil yang kami menyediakan, sama ada anda memikirkan pengambilan hanya CS50, atau mungkin melakukan menengah, atau mungkin juga menumpukan di CS, jangan flip melalui itu. Dan anda akan melihat gambar rajah ke arah akhir yang menunjukkan anda banyak arah yang berbeza di CS yang anda boleh pergi dalam. Tetapi hari ini, kita akan memberi tumpuan, sekali lagi, di benar-benar salah satu pandangan asas, mungkin, di mana anda perlu input kepada masalah, anda mempunyai output dari masalah, dan anda mempunyai algoritma yang boleh digunakan untuk mewujudkan orang-orang dari orang-orang output input. Dan salah satu contoh, adalah daripada Sudah tentu, buku telefon di sini. Dan kami sebagai contoh untuk pergi melalui algoritma yang betul. Dan kemudian satu sama lain adalah betul, tetapi sedikit lebih cepat. Dan kemudian satu sama lain yang agak lebih dramatik, tetapi pada asasnya, lebih cepat. Betul, ini buku kita telefon mendakwa mempunyai kira-kira 1,000 muka surat. Dan berapa kali telah saya mengoyakkan buku telefon pada separuh untuk mencari seseorang seperti Mike Smith, maksima, dalam 1,000 buku halaman? Jadi, 10 memberi atau mengambil. Dan sekali saya mengoyakkan perkara ini dalam separuh, atau hanya, lebih matang, dibahagikan pada separuh, ia hanya 10 muka surat daripada 1,000. Dan jika anda membuat anggaran, sedikit unrealistically untuk sebuah buku telefon, tetapi jika buku telefon ini mempunyai beberapa 4 bilion laman di dalamnya, supaya benar-benar dikawal secara fizikal, berapa banyak kali yang anda membahagikan sebuah 4000000000 buku telefon halaman pada separuh? Jadi ia sebenarnya 32, memberi atau mengambil. Dan 32 kali sahaja, keluar 4 bilion laman, boleh anda mencari seseorang seperti Mike Smith. Dan itulah kecekapan. Itulah algoritma yang baik, berani mengatakan. Tetapi kemudian kami berpindah itu cuba untuk merasmikan ia. Dan saya mencadangkan kod pseudokod ini. Kod pseudokod tidak apa-apa formal. Ia bukan sesuatu yang anda menghafal. Ia hanya sesuatu yang anda meluahkan agak intuitif menggunakan bahasa Inggeris, atau apa-apa bahasa benar-benar, bahawa menyampaikan idea-idea anda ringkas. Tetapi apa yang penting mengenai kod pseudokod adalah bahawa anda cuba untuk menjangka semua kes mungkin yang mungkin berlaku. Dan sesungguhnya, di pseudokod ini kod, ada benar-benar tiga kes setiap kali saya dibahagikan buku telefon. Mike mungkin ke kiri. Mike mungkin ke kanan. Atau dia mungkin tepat di halaman saya pada. Atau kes sudut keempat, jadi untuk bercakap. Senario buruk mungkin menjadi salah satu yang- apa yang berlaku? Mike hanya tidak dalam buku telefon langsung. Dan apabila program crash-- apabila Mac dan perisian PC yang kalian berjalan pada komputer anda kadang-kadang tergantung atau berhenti tidak disangka-sangka, yang biasanya bermaksud bahawa sesetengah programmer, beberapa manusia seperti anda tidak lama lagi, hanya kacau dan membuat beberapa kesilapan. Mungkin tidak menjangka bahawa mungkin terdapat ada Mike Smith di dalam buku telefon. Dan jika anda tidak benar-benar menulis kod untuk menangani situasi seperti itu, umumnya tidak dapat diramalkan perkara boleh berlaku. Mesin anda boleh membekukan. Ia boleh but semula. Program ini boleh berhenti. Dan semua ini stupidities bahawa anda boleh telah dihadapi dalam sebenar anda hidup hanya menggunakan komputer, semakin akan hanya diterangkan dengan gerak hati ini dan pemahaman ini dari apa yang sebenarnya berlaku di bawah hood. Sekarang mari kita cuba untuk melihat dengan pada masalah yang lebih umum. Daripada mengambil kehadiran di tempat yang seperti ini, yang akan menjadi agak perlahan untuk melakukan satu, dua, tiga, empat. Atau mungkin dua, empat, enam, lapan. Mari kita fokus, sebaliknya, pada bagaimana kita boleh merasmikan algoritma proses di yang kita boleh mengambil kehadiran. Dan sepanjang jalan, mari kita mulakan memohon beberapa tatanama bahawa kita akan menggunakan hari ini apabila kita benar-benar memulakan pengaturcaraan dalam bahasa. Jadi saya memberi anda sekarang, video empat minit bahawa kita meletakkan bersama-sama dengan rakan-rakan kita dari TED, organisasi. Di mana kita yang dibekalkan skrip dan mereka membawa animator mereka menanggung, dan benar-benar dicipta 2D yang animasi apa algoritma adalah. Jika kita boleh malap lampu. [MUZIK bermain] Pencerita: Apakah algoritma? Dalam sains komputer, algoritma adalah satu set arahan menyelesaikan beberapa masalah langkah demi langkah. Biasanya, algoritma adalah dilaksanakan oleh komputer, tetapi kita manusia mempunyai algoritma juga. Sebagai contoh, bagaimana akan kamu pergi mengira bilangan orang-orang di dalam bilik? Nah, jika anda seperti saya, anda akan mungkin menunjuk ke arah satu orang satu demi satu dan mengira dari sifar. Satu, dua, tiga, empat, dan sebagainya. Baiklah, itulah algoritma. Malah, mari kita cuba untuk menyatakan ia satu sedikit lebih secara rasmi dalam kod kod pseudo. Sintaksis bahasa Inggeris seperti yang menyerupai bahasa pengaturcaraan. Mari sama n 0. Bagi setiap orang di dalam bilik, set n sama dengan n campur 1. Bagaimana untuk mentafsirkan pseudokod yang? Juga satu talian mengisytiharkan, boleh dikatakan, pembolehubah dipanggil n dan kepada asal nilainya kepada 0 ini hanya bermakna bahawa pada bermula algoritma kami, perkara yang dengannya kami pengiraan mempunyai nilai 0. Lagipun, sebelum kita mula mengira kami tidak dikira apa-apa lagi. Memanggil pembolehubah ini n hanya konvensyen. Saya boleh memanggilnya paling apa-apa. Sekarang beratur dua demarks permulaan gelung, urutan langkah-langkah yang akan mengulangi beberapa beberapa kali. Jadi dalam contoh kita, langkah kita pengambilan mengharapkan orang di dalam bilik. Di bawah adalah garis dua garis tiga yang menggambarkan bagaimana kita akan pergi kira-kira mengira. Lekukan ini membayangkan bahawa ia garis tiga yang akan berulang. Jadi dengan kod pseudokod adalah kata adalah bahawa selepas bermula pada 0 bagi setiap orang dalam bilik kami akan meningkatkan n oleh 1 Sekarang adalah algoritma ini betul? Nah mari bang padanya sedikit. Adakah ia berfungsi jika terdapat dua orang di dalam bilik? Mari kita lihat. Selaras salah kita memulakan n 0. Bagi setiap dua orang, kita kemudian menokokkan n oleh 1. Jadi dalam perjalanan pertama melalui gelung, kami mengemas kini n 0-1. Pada perjalanan kedua melalui yang gelung sama, kami mengemas kini n dari 1 hingga 2. Dan sebagainya, dengan ini algoritma ini akhir, n 2, yang sesungguhnya perlawanan bilangan orang di dalam bilik. Setakat ini, begitu baik. Bagaimana pula dengan kes sudut walaupun? Katakan terdapat 0 orang dalam room-- selain saya, siapa yang melakukan pengiraan. Selaras satu, kita sekali lagi memulakan n 0. Kali ini walaupun, talian tiga tidak melaksanakan di semua kerana tidak ada seseorang di dalam bilik. Dan sebagainya n masih 0, yang sememangnya perlawanan bilangan orang-orang di dalam bilik. Agak mudah, bukan? Tetapi orang-orang mengira satu per satu agak tidak cekap, terlalu, tidak ada? Sesungguhnya kami boleh melakukan yang lebih baik. Mengapa tidak mengira dua orang pada satu masa, bukan mengira satu, dua, tiga, empat, lima, enam, tujuh, lapan, dan sebagainya. Mengapa tidak mengira dua, empat, enam, lapan, dan sebagainya? Ia juga kedengaran lebih cepat. Dan ia pasti adalah. Mari kita meluahkan pengoptimuman ini dalam kod kod pseudo. Mari sama n 0. Bagi setiap pasangan orang di bilik, tetapkan n sama dengan n campur 2. Pretty perubahan yang mudah, betul? Daripada mengira orang satu per satu, kita bukannya mengira mereka dua pada satu masa. Algoritma ini, dengan itu, dua kali secepat yang terakhir. Tetapi adakah ia benar? Mari kita lihat. Adakah ia berfungsi jika terdapat dua orang di dalam bilik? Selaras satu, kami memulakan n 0. Bagi pasangan yang satu orang, kita kemudian menokokkan n sebanyak 2. Dan demikian oleh algoritma ini yang akhir n 2, yang sesungguhnya perlawanan bilangan orang di dalam bilik. Katakan seterusnya yang terdapat sifar orang di dalam bilik. Selaras salah kita memulakan n 0. Seperti sebelum ini, garis tiga tidak melaksanakan semua kerana tidak ada pasang orang di dalam bilik, dan sebagainya n masih 0. Yang memang sepadan dengan beberapa orang di dalam bilik. Tetapi bagaimana jika terdapat tiga orang di dalam bilik? Bagaimana tambang algoritma ini? Mari kita lihat, sejajar satu, kami memulakan n 0. Untuk sepasang dari orang-orang, kita kemudian menokokkan n sebanyak 2. Tetapi apa? Tidak ada satu lagi penuh sepasang orang di dalam bilik, jadi dua baris tidak lagi terpakai. Dan demikian dengan tujuan ini algoritma ini, n masih 2 yang tidak betul. Sesungguhnya algoritma ini yang dikatakan menjadi kereta kerana ia mempunyai kesilapan. Mari kita tebus rugi dengan beberapa kod pseudokod baru. Mari sama n 0. Bagi setiap pasangan orang di bilik, set N sama dengan n campur 2. Jika satu orang masih berpasangan, set N sama dengan n campur 1. Untuk menyelesaikan masalah ini khususnya, kita kena diperkenalkan selaras empat keadaan, atau dikenali sebagai cawangan, bahawa hanya bermaksud melaksanakan jika ada satu orang kita tidak dapat berpasangan dengan yang lain. Dan sekarang, sama ada ada satu, tiga dan atau apa-apa bilangan ganjil orang di dalam bilik, algoritma ini sekarang akan mengira mereka. Bolehkah kita melakukan yang lebih baik? Nah, kita boleh mengira bertiga, atau merangkak, atau lima dan berpuluh-puluh, tetapi lebih dari itu, ia akan mendapatkan sedikit sukar untuk menunjukkan. Pada akhir hari, sama ada dilaksanakan oleh komputer atau manusia, algoritma hanya satu set arahan yang boleh digunakan untuk menyelesaikan masalah. Ini hanya tiga. Apa masalah anda akan menyelesaikan dengan algoritma? DAVID J. MALAN: Jadi sengaja, program yang sangat mudah, algoritma sangat mudah, untuk mencapai sesuatu sangat mudah, mengira beberapa orang di dalam bilik. Tetapi mari kita mengusik selain beberapa wakil mempunyai di sini bahawa sebenarnya akan menjadi berguna walaupun melaksanakan yang paling kompleks perisian. Jadi untuk contoh, dalam baris pertama ini, kita mempunyai apa yang kita panggil pembolehubah, dan dari algebra, anda umumnya biasa menggunakan x dan y z dan kadang-kadang, dan sebagainya. Tetapi dalam pengaturcaraan, pembolehubah masih, pada akhir hari, hampir sama dengan itu. Tetapi ia mungkin lebih mudah untuk berfikir pembolehubah sebagai hanya bekas. Dan, sebenarnya, ia adalah beberapa bilangan bit dilaksanakan entah bagaimana dalam cakera keras anda atau dalam memori komputer anda, tetapi lebih kepada bahawa pada masa akan datang. Ia hanya sebuah bekas. Dan jika anda mengatakan sesuatu seperti membiarkan n sama 0, baik itu seperti memanggil kaca ini mangkuk sini n, hanya nama sewenang-wenangnya, dan meletakkan apa-apa di dalamnya pada mulanya. Jadi nilai ini mangkuk sekarang adalah sifar. Dan sudah tentu jika anda melihat dalam garis berikutnya, untuk benar-benar menokokkan beberapa garis kod, seperti dalam baris ketiga ini di sini, sebanyak 1, bahawa seperti mengatakan apa yang nilai semasa n, ia 0, campur 1, meletakkan sesuatu seperti ping pong di sini. Sekarang nilai ini pembolehubah adalah cukup hanya 1. Dan anda dengan cepat boleh membuat anggaran, tetapi kini ia 2, kini ia 3, dan sebagainya. Jadi, itu semua pemboleh ubah itu. Ia sekeping simpanan untuk sebenarnya menyimpan beberapa data. Buat masa ini ia adalah satu bola ping pong. Terdapat ia nombor. Tetapi ia boleh menjadi perkataan dalam kamus, seperti penyemak ejaan yang Saya dirujuk kepada pada Rabu untuk satu set masalah tahun lepas. Kini satu lagi idea utama, yang juga cukup intuitif saya akan menuntut, ialah gelung. Dan gelung dalam proses mengira semua orang adalah, sudah tentu, melakukan perkara yang sama perkara lagi dan again-- salah satu pada satu masa atau dua pada satu masa. Dan anda boleh meluahkan ini dalam bahasa Inggeris, atau kod pseudokod, dalam apa-apa cara, tetapi menggunakan kata depan ini "untuk" adalah cara yang sangat biasa melakukannya. Bagi setiap orang di dalam bilik, melakukan ini. Sekali lagi dan sekali lagi. Dan hakikat bahawa itu tersusun, garis tiga, hanya bermaksud bahawa apa yang anda sepatutnya melakukan adalah barangan yang yang dilekukan di bawah garis-dua itu sendiri. Hanya konvensyen manusia, tetapi satu yang sama seperti yang kita akan melihat yang lebih tinggi sebenar bahasa pengaturcaraan peringkat. Sekarang sedikit lebih menarik ialah apabila anda dalam kes sudut. Sebagai contoh, sudut kes adalah apabila terdapat tiga orang, atau lima, atau tujuh, atau apa-apa bilangan ganjil orang di dalam bilik, kerana melakukannya dengan berdua-dua brek akhirnya kerana anda akan terlepas seseorang, sama ada di awal atau akhir sangat bergantung kepada bagaimana anda melakukannya. Dan sebagainya, sekarang, saya mempunyai cawangan ini, atau syarat, jika seseorang kekal, kemudian pergi ke hadapan dan mengendalikan satu yang orang sepi yang tidak mendapat berpasangan dengan orang lain. Jadi itulah yang kita akan memanggil keadaan, atau cawangan. Sekarang kod pseudokod lebih umum boleh bertulis untuk menyelesaikan apa-apa bilangan masalah. Dan apa yang saya fikir kita akan lakukan ialah mengambil masa menjemput akan kita katakan CS50 ini memiliki Rob Bowden di atas pentas supaya dihubungkan oleh dua sukarelawan, yang tidak tahu apa yang menanti. Tangan A turun secepat seperti yang saya katakan itu. Bagaimana pula dengan anda pada berakhir di sini, datang ke atas sehingga. Dan bagaimana pula dari jauh jauh, bagaimana pula cara di belakang. Barisan belakang, datang dengan tangan anda. Baiklah, dan apa yang nama anda? ANITA: Anita. DAVID J. MALAN: Anita. Okay, baik untuk bertemu dengan kamu. Izinkan saya memperkenalkan anda kepada Rob Bowden. Ini adalah Anita. Dan siapa nama anda? KIERSTEN: Kiersten DAVID J. MALAN: Kiersten. Kiersten, datang ke atas dan memenuhi Rob Bowden dan Anita. Nice untuk bertemu dengan kamu. KIERSTEN: Nice untuk bertemu dengan kamu. DAVID J. MALAN: Baiklah, Rob. ROB Bowden: Nice untuk bertemu dengan kamu. DAVID J. MALAN: Anita. KIERSTEN: Hi Anita. DAVID J. MALAN: Dan anda beberapa ratus rakan-rakan sekelas. Jadi, biarlah saya pergi ke hadapan dan tarik sehingga hanya satu program yang mudah di sini pada Mac OS yang akan memberitahu saya sebenarnya mencatat beberapa nota ke bawah. Dan jika kalian mahu setiap mengambil kedudukan di salah satu daripada sekolah-sekolah di sana, biarlah saya pergi ke hadapan dan mula senarai kod pseudokod, jika anda akan. Dan apa yang saya mahu lakukan di sini, akhirnya adalah jenis untuk anda beberapa arahan yang kami penonton sebenarnya akan membaca untuk kita. Biar saya pergi ke hadapan dan hanya menukar ini kepada senarai nombor untuk memadankan apa yang kami lakukan di sana. Dan apa yang saya akan lakukan dengan bantuan anda, adalah menulis program dalam pseudokod, dengan yang lelaki ini akan untuk melaksanakan kacang yang mentega dan jeli sandwic. Jadi ia mungkin apropos kepada menunjukkan sesuatu yang ada di antara kamu mungkin telah melihat di internet hanya untuk masa singkat menjengkelkan. [MUZIK BUCKEWHEAT BOYS, "kacang TANAH MENTEGA  JELLY TIME "] DAVID J. MALAN: OK. Itu cukup itu. Jadi di sini Sementara itu, saya mempunyai sepasang Google Kaca mata yang kami akan memakai CS50 sendiri Rob Bowden untuk melihat dunia melalui matanya. Dan kami akan melakukan yang terbaik dalam jawatan pengeluaran untuk benar-benar menenun rakaman apa Rob adalah melihat sekarang, ke kuliah sebenar ini video dengan dua kami sukarelawan di sebelahnya. Jadi apa yang saya akan lakukan , saya akan jurutaip itu. Kami mempunyai matlamat di sini daripada sebenarnya menulis program yang boleh digunakan untuk membuat, akhirnya, satu mentega kacang dan jeli sandwic, tetapi ketiga-tiga akan berkelakuan seolah-olah mereka adalah komputer. Dan komputer, pada akhir hari, sebenarnya peranti cukup bisu. Mereka super cepat, tetapi mereka hanya boleh melakukan, secara harfiah, apa yang mereka diberitahu. Anda tidak boleh hanya mengatakan membuat kacang yang mentega dan jeli sandwic. Anda perlu memprogramkan mereka untuk berbuat demikian. Anda perlu memberitahu mereka dengan tepat apa yang perlu dilakukan, kurang sesuatu yang teruk dan, mudah-mudahan, amusingly serba salah. Jadi dengan mengatakan bahawa, kita perlu satu panggilan keluar dari penonton untuk apa yang perlu melangkah satu, jika matlamat di sini adalah untuk membuat kacang yang mentega dan jeli sandwic. Ya? PENONTON: [didengar] beg roti. DAVID J. MALAN: Buka beg roti. Jadi, jika tiga peserta akan suka untuk meneruskan untuk melakukan itu secara harfiah. Buka beg roti. [PENONTON KETAWA] DAVID J. MALAN: Jadi mari kita berusaha ke arah itu. Baiklah. Jadi langkah dua, how-- mari kita ini lebih lanjut. Ya, di hadapan. PENONTON: [didengar] roti. DAVID J. MALAN: Apakah itu? PENONTON: Keluarkan roti. DAVID J. MALAN: Keluarkan roti. Begitu juga ringkas. Terima kasih. [Tepuk tangan] DAVID J. MALAN: Itu sahaja? OK, jadi langkah dua akan menjadi mengeluarkan roti. Baiklah, seseorang mahu kami menulis ayat yang lebih panjang? Orang lain? Sedikit [didengar]. Tidak, apa-apa sekarang. Ya? PENONTON: Letak dua keping bersebelahan antara satu sama lain. DAVID J. MALAN: Letak dua keping bersebelahan antara satu sama lain. [PENONTON KETAWA] DAVID J. MALAN: Letak dua keping bersebelahan antara satu sama lain. Langkah empat. Ya? PENONTON: Ambil anda tangan dan menetapkan ia ringan di atas tudung mentega kacang. [PENONTON KETAWA] PENONTON: [didengar] bersebelahan dengan mentega kacang. DAVID J. MALAN: Apa? Mengatakan bahawa sekali lagi. PENONTON: Longgarkan tudung dan meletakkan perlahan-lahan di sebelah mentega kacang. DAVID J. MALAN: Letakkan perlahan-lahan bersebelahan dengan mentega kacang. OK, kemajuan. Langkah lima. Cemerlang. Ya? Angkat pisau. DAVID J. MALAN: Angkat pisau. OK, langkah enam. Yeah? PENONTON: Pegang pisau oleh pemegang. DAVID J. MALAN: Pegang pisau oleh pemegang. Memegang pisau dengan pemegang. Langkah tujuh. Ya? PENONTON: [didengar] pisau dalam kacang mentega dan sedikit keluar [didengar]. DAVID J. MALAN: Letakkan pisau dalam- saya mendengar "pisau dimasukkan ke dalam mentega kacang dan mengambil sedikit daripada yang mungkin. " Dengan cara itu, keluarkan kertas yang pertama. Baiklah, langkah sembilan. Langkah sembilan. Langkah sembilan. Kami tidak sebenarnya dibuat sandwic lagi. Ya? PENONTON: Menggunakan pisau mentega kacang, memohon mentega kacang pada roti berkata. DAVID J. MALAN: Menggunakan pisau dalam mentega kacang, mentega kacang memohon pada berkata roti. [PENONTON KETAWA] DAVID J. MALAN: Semua langkah betul 10. Langkah 10. Ya? PENONTON: Rasa kacang mentega untuk memastikan kualiti. [PENONTON KETAWA] DAVID J. MALAN: Langkah 11. Langkah 11. Langkah 11. Datang pada. Yeah? Di sana. PENONTON: berhati-hati mengambil jeli. DAVID J. MALAN: berhati-hati mengambil jeli. OK, dan kemudian tangan lain naik. Di belakang anda. Ya, dengan warna biru. PENONTON: Baiklah, keluarkan penutup dari [didengar], yeah, menanggalkan tudung dari jeli. [PENONTON KETAWA] DAVID J. MALAN: Dari jeli. Ha ha. [PENONTON KETAWA] DAVID J. MALAN: Dan? PENONTON: Dan hampir tidak menyapu apa-apa [didengar]. [PENONTON KETAWA] PENONTON: Sudah tentu, sebelum [didengar], mengeluarkan kertas dari jeli. DAVID J. MALAN: Buang kertas dari jeli. Langkah 14. Kita sudah hampir. Ya? PENONTON: Kecualikan jelly botol sebelum semua gugur. DAVID J. MALAN: Kecualikan jeli botol sebelum jeli gugur. Langkah 15. PENONTON: Gantikan penutup. DAVID J. MALAN: Gantikan penutup. Langkah 16. Yeah? PENONTON: [didengar] DAVID J. MALAN: Katakanlah itu lagi. PENONTON: Ambil topi off jeli anda. DAVID J. MALAN: Off jeli anda. Jadi really-- Oops. Datang pada. Gantikan penutup. Letakkan cap-- Anda berkata buka penutupnya dari jeli. Berasa seperti kita berada dalam sedikit gelung. Langkah 17. Ya? PENONTON: [didengar] DAVID J. MALAN: Katakanlah itu lagi. PENONTON: [didengar] DAVID J. MALAN: Kembalilah kepada step-- PENONTON: [didengar] DAVID J. MALAN: Keluarkan topi dari mentega kacang. Ya? PENONTON: Drop semua jelly roti. DAVID J. MALAN: Drop semua jeli pada roti. DAVID J. MALAN: Kita sudah hampir. Langkah 19. PENONTON: Buang jeli yang berlebihan. DAVID J. MALAN: Haha, jeli. [Tepuk tangan] DAVID J. MALAN: Mengapa tidak we-- satu lagi langkah untuk mengambil rumah ini. Satu lagi langkah dan kemudian kami akan berkhidmat sandwic. Ya? PENONTON: [didengar] DAVID J. MALAN: Walaupun apa-apa sandwic inden mari remains-- ini this-- makan. [PENONTON Ketawa] DAVID J. MALAN: Baiklah, terima anda untuk sukarelawan kami di sini. [Tepuk tangan} DAVID J. MALAN: Kami mempunyai beberapa bagus perpisahan hadiah untuk setiap kamu. Sendiri mentega kacang, jeli anda, dan roti untuk membawa pulang kembali. Terima kasih. KIERSTEN: Terima kasih. DAVID J. MALAN: [didengar] mengalu-alukan. [Tepuk tangan] DAVID J. MALAN: Jadi, ini adalah, Sudah tentu, satu contoh yang tidak masuk akal. Betul? Tetapi ia jenis mendedahkan bagaimana kita manusia hanya mengambil kejelasan untuk diberikan. Dan hakikat Saya telah bercakap dengan manusia yang lain, dia hanya tahu apa yang anda maksudkan. Komputer tidak akan tahu apa yang anda maksudkan, walaupun semasa menggunakan, sebagai kami kira-kira untuk lakukan hari ini, pengaturcaraan sesuatu dalam Scratch, heret dan penurunan, bahasa teka-teki gaya sekeping. Walaupun direka untuk muda kanak-kanak, anda perlu begitu jelas dan begitu literal dengan apa yang anda mahu program anda lakukan. Kini akhirnya, kami akan menjadi pengaturcaraan tidak dalam kod pseudokod, Bahasa Inggeris seperti sintaksis, tetapi kod atau, lebih baik, kod sumber. Kod sumber adalah cara yang mewah untuk menerangkan kod anda benar-benar menulis dengan papan kekunci itu tidak dalam bahasa Inggeris per se. Ada dalam C atau Jawa atau C ++ atau sesuatu seperti itu, seperti yang kita tidak lama lagi akan melihat. Dan sebenarnya, hanya untuk menakut-nakutkan yang kecil daripada kamu, pada pandangan pertama, ini adalah program yang ditulis dalam bahasa dipanggil C. Tetapi untuk un-menakutkan sebahagian kecil daripada kamu, anda akan benar-benar memahami apa yang berlaku pada Isnin ini datang apabila ia datang kepada sesuatu seperti ini. Terus terang, ini adalah bahasa yang lebih tua. Ia agak sukar difahami, tetapi ia wakil daripada banyak bahasa hari ini bahawa mempunyai banyak kurungan dan kerinting kawat gigi dan tanda quote dan koma bertitik. Dan banyak ini barangan sintaksis yang tidak pada setiap intelektual yang menarik. Malah, ia satu gangguan gelita daripada idea-idea yang sangat mudah yang merenung kita di muka. Program ini, kerana anda mungkin meneka, cetakan ke skrin komputer seseorang perkataan "dunia Hello koma." Itu sahaja. Jadi jelas, ada banyak barangan itu mendapat di jalan beberapa obviousness di sana, tetapi ia akan dengan cepat tergelincir diri dan benar-benar intuitif. Malah, apa yang kita akan lakukan hari ini menyuling ini agak rumit program mencari, yang sekali lagi anda akan datang untuk memahami dengan cepat, tetapi untuk sesuatu lebih mudah. Mari kita hanya mengatakan apa yang kami maksudkan. Mari melukis gambar apa yang kita maksudkan, dengan cara ini kepingan teka-teki di sini. Jadi ini adalah satu pengaturcaraan bahasa yang dikenali sebagai Scratch. Ia telah dibangunkan oleh MIT Media Lab. Dan apa yang anda akan lihat dalam masalah set sifar, yang akan dikeluarkan lewat malam ini, kita akan mempunyai anda pergi ke ini URL di sini scratch.mit.edu. Dan mereka mempunyai web melalui antara muka berasaskan yang anda akan menulis program pertama anda. Atau orang-orang di antara kamu dengan terlebih dahulu pengalaman, program kedua anda, tetapi dalam persekitaran yang itulah mungkin sedikit yang tidak dikenali dan yang akan mendorong anda untuk mencipta sesuatu menggunakan persekitaran sangat visual ini. Kini, apa yang saya akan lakukan di sini adalah membuka program itu sendiri. Ia wujud bukan sahaja sebagai pelayar web, tetapi juga sebagai satu program yang boleh dimuat turun supaya anda benar-benar boleh menggunakannya jika anda tidak mempunyai akses internet. Dan saya akan berbuat demikian di sini, dalam Sanders, hanya dalam kes Wi-Fi tidak bekerjasama super juga. Dan apa yang saya akan lakukan adalah tempat daripada beberapa ciri program ini. Jadi, untuk menjadi jelas, saya mempunyai hanya dua klik ikon pada desktop saya, atau sebandingnya pergi ke scratch.mit.edu, dan ia ditarik ke atas tetingkap ini. Ini adalah persekitaran pengaturcaraan. Ia adalah satu perisian yang beberapa rakan-rakan kami di MIT menulis bahawa mari kita dan anda menulis program dalam bahasa yang dipanggil Scratch. Sekarang ini berlaku untuk menjadi kucing yang yang juga dinamakan Scratch dan ini adalah dunia di mana dia hidup. Ini adalah peringkat, boleh dikatakan, yang segi empat tepat di bahagian atas sebelah kiri. Dan dia tidak perlu kelihatan seperti kucing. Anda boleh membuat dia kelihatan seperti apa-apa dan anda boleh mempunyai banyak sprites itu, atau aksara, dalam program. Sementara itu, di sini pada jauh betul, adalah sabak kosong yang besar. Dan ini adalah di mana, dalam sekejap, kita akan memulakan pengaturcaraan dengan mengheret dan menjatuhkan ini teka-teki grafik keping yang betul di sini di tengah-tengah. Dan ada cara yang lebih daripada mereka daripada kami akan menghabiskan masa di sini di dalam kelas kerana anda akan mendapati bahawa mereka semua agak intuitif. Sekali lagi, ia direka untuk kanak-kanak, tetapi kita menggunakannya untuk mengusik selain beberapa orang-orang idea-idea asas pembolehubah, gelung, syarat, dan, tidak lama lagi, perkara-perkara seperti fungsi dan peristiwa dan benang dan lain-lain perkara-perkara mewah kita akan dapat tidak lama untuk benar-benar mewujudkan sesuatu dari Scratch. Pun dimaksudkan. Kini, apa yang saya akan lakukan di sini adalah klik pada tidak bergerak, tetapi kawalan. Dan ini adalah hanya pengkategorian here-- dan saya lihat yang berbeza warna set blok. Tetapi melihat beberapa perkataan yang biasa. "Jika" dan "lain jika" dan "berulang." Dan anda mungkin boleh meneka itu mengingatkan cawangan, atau syarat-syarat yang kita lihat, dan malah membina gegelung. Jadi kita mempunyai blok yang sama di sini. Tetapi yang paling menarik satu adalah salah satu ini di sini. Apabila bendera hijau diklik, ini, bagi mereka yang programing sebelum pengalaman, bersamaan ke fungsi utama. Tetapi bagi mereka yang tidak dikenali, ini adalah sekeping teka-teki yang akan memulakan keseluruhan program kami. Ia bermaksud apabila saya pergi, dalam ini program, dan klik flag-- hijau yang anda boleh lihat di sini di sudut atas sebelah kiri UI, jadi melihat bendera hijau sebelah tanda berhenti merah? Apabila saya klik itu, saya program akan berjalan. Sekarang, saya akan melakukan sesuatu super mudah dengan Scratch. Saya akan pergi ke depan dan pergi ke panel penampilan yang di sini, di mana saya mempunyai sekumpulan keping teka-teki ungu, dan saya akan pergi ke hadapan dan melakukan sesuatu yang super mudah seperti, katakan. Dan notis then-- ini teks di dalam kotak putih adalah editable-- saya akan mengatakan "Hello dunia," hanya suka kita lakukan dalam teks yang versi masa lalu. Dan kini jika saya pergi dan klik ini bendera hijau, saya kini telah diprogramkan. Ia bukan satu terutamanya program yang menarik, tetapi saya membuat komputer melakukan sesuatu. Saya mula program dan ia lakukan apa yang saya memberitahu ia lakukan. Sekarang, saya boleh terus menyeret dan melepaskan lebih dan lebih daripada ini keping teka-teki dan mereka akan saling kunci, tetapi mari kita menampar beberapa istilah di sini bahawa kita akan melihat berulang sepanjang kursus, dan benar-benar di seluruh sains komputer dan pengaturcaraan amnya. Ini "berkata" blok, ungu, mari hanya mula memanggil satu kenyataan. Ia seperti satu kenyataan fakta. Melakukan ini. Jadi, ia adalah satu kategori arahan yang anda dapat makan komputer sebagai sebahagian program atau algoritma. Dan jelas, anda mempunyai kemungkinan diambil mudah bahawa anda mempunyai program pada komputer anda. Dan mereka jenis algoritma, tetapi program adalah benar-benar sekumpulan algoritma bahawa sesetengah manusia menulis. Mereka dibungkus itu dan mereka menjualnya supaya anda, atau mereka disiarkan di laman web untuk anda muat turun. Jadi, program yang hanya sejumlah besar sifar dan orang-orang itu, entah bagaimana, manusia dicipta. Dan orang-orang corak sifar dan yang mewakili benda, akhirnya, seperti "bertanya khabar dunia" atau "bermain muzik ini "atau" bermain video ini " atau "menghantar e-mel." Tetapi kita akan kembali dalam cara yang lebih terperinci apa program adalah apabila anda, diri anda, tulis mereka. Berikut adalah pernyataan lain "Tunggu satu saat." Saya tidak menggunakan ini, tetapi jika saya mahu program saya untuk berhenti seketika untuk melakukan sesuatu, saya boleh memberitahu ia untuk berbuat demikian. Tunggu satu kedua. Kini satu lagi mungkin "bermain bunyi." Jadi, ini adalah unik untuk Goreskan, ia mempunyai keupayaan untuk memainkan bunyi. Jadi, kenyataan saya mungkin digunakan ialah, di sini, 'bermain bunyi. " Sementara itu, ungkapan Boolean, jadi ini adalah satu perkataan pelamun dinamakan selepas hanya seorang lelaki bernama Encik bool, dan ini adalah tentang soalan. Benar atau false-- adalah mouse ke bawah? Ungkapan Boolean hanya beberapa ungkapan dalam bahasa Inggeris yang sama ada benar atau palsu. Sama ada pada atau di luar. Sama ada satu atau sifar. Anda boleh memikirkan ia dalam apa-apa cara, tetapi ia sama ada benar atau ini palsu, akhirnya. Jadi "tetikus ke bawah tanda tanya," yang akan menjadi ungkapan Boolean. Dan anda boleh berfikir orang lain, mungkin. Sebagai contoh, "ialah bilangan yang tinggal kurang daripada bilangan yang betul? " Itu juga akan menjadi ungkapan Boolean. "Kurang daripada" adalah satu ungkapan Boolean. Satu ini, terlalu, "penunjuk tetikus menyentuh." Saya tidak pasti mengapa mereka memanggilnya penunjuk tetikus. Ia hanya bermakna, adalah kursor, adalah arrow pada skrin, menyentuh kucing, misalnya. Atau beberapa aspek lain skrin. Dan ia soalan, sekali lagi, dan yang menandakan ungkapan Boolean. Sesuatu yang anda mungkin hendak gunakan dalam keadaan yang. Jadi kami akan datang ke dalam seketika. Anda boleh "dan" perkara-perkara bersama-sama. Jadi, jika anda mahu untuk memeriksa jika ini kes DAN yang berlaku, anda boleh menggunakan satu "dan" blok seperti ini. Dan ini keadaan itu. Perhatikan bentuk pembukaan kecil di bahagian atas ini sekeping teka-teki kuning, ia mengingatkan bentuk bahawa kita hanya melihat masa lalu. Setiap ungkapan Boolean mempunyai tepi ini menegaskan di sebelah kiri dan ke kanan. Dan itu kerana orang MIT mengambil keputusan bahawa dengan bentuk visual memindahhakkan, anda jenis boleh membantu orang, pelajar dan kanak-kanak, kepada jenis mengisi tempat kosong harfiah. Sekarang bahawa puzzle-- yang pembukaan adalah sedikit kecil, dan seperti yang kita akan melihat dalam program ini, dalam Scratch, ia akan berkembang ke patut. Ia akan mengekalkan bentuknya, akhirnya. Jadi keadaan mari anda membuat keputusan "Yang perlu saya lakukan sesuatu atau tidak?" Ungkapan Boolean adalah soalan sebenar anda menggunakan untuk membuat keputusan saya pergi ke kiri ATAU saya pergi ke kanan apabila saya menghadapi ini kononnya garpu di jalan raya? Anda boleh mempunyai dua cawangan. JIKA sesuatu itu benar, melakukan ini, lagi yang pergi dengan cara itu, atau anda hanya boleh berbuat apa-apa di semua, kerana blok ini tersirat. Begitu juga, kita boleh sarang perkara-perkara ini. Jadi, jika anda mahu garpu tiga kali ganda dalam jalan raya, sama ada melakukan ini atau ini atau itu, anda boleh hanya sarang perkara-perkara ini bersama-sama. Dan ia bermula untuk mendapatkan sedikit hodoh, akhirnya, pasti, tetapi logik adalah masih yang sama. Anda benar-benar boleh membaca atas ke bawah ini dan ia mengatakan apa yang ia ertinya-- jika ini adalah benar, melakukan ini, jika lain lain. Loop A bukan mudah mendapatkan dalam Scratch. Selama-lamanya melakukan yang berikut. Sekarang anda mungkin berfikir anda boleh berbuat banyak kerana tidak banyak ruang di antara bahagian atas dan bawah ini membuka sekeping teka-teki. Tetapi anda akan melihat Scratch akan berkembang untuk muat keping teka-teki banyak yang anda mahu untuk mengasak di sana. Satu lagi gelung mungkin dinyatakan dengan ulangan. Jika anda tahu terlebih dahulu, "Saya ingin melakukan sesuatu yang 10 kali, " anda hanya boleh memberitahu Scratch untuk melakukan sesuatu yang 10 kali. Dan, sementara itu, kita boleh mempunyai pembolehubah. Jadi di sini adalah satu satu sewenang-wenangnya, ia oren dalam kes ini, dan ini adalah lawatan badai. Sekali lagi, anda akan mendapati ini sangat mudah sebaik sahaja anda mula menunjuk dan klik. Saya bernama n ubah saya, tetapi saya boleh menamakan apa-apa yang saya mahu, dan saya menetapkan ia di sini, dalam contoh rambang ini, kepada sifar. Kini melihat program seperti hello dunia tidak semua yang menarik, jadi mari kita sebenarnya membuka sesuatu bahawa seorang bekas pelajar dibuat. Biar saya pergi ke hadapan dan membuka, misalnya, yang satu ini di sini, yang mana saya akan suka mempunyai seorang sukarelawan. Baiklah, bagaimana about-- mari kita pergi lebih jauh. Ya, mari naik. Apa nama anda? Abby: Abby. DAVID J. MALAN: Abby, datang ke atas sehingga. Jadi adakah anda pernah dimainkan permainan ini? Abby: Tidak DAVID J. MALAN: Baiklah. David, baik untuk bertemu dengan kamu. Datang pada lebih. Dan apa yang pengaturcaraan anda latar belakang, jika ada. Abby: Saya telah belajar beberapa C ++. DAVID J. MALAN: Anda telah belajar beberapa C ++. Dan apa yang anda permainan bermain latar belakang? Abby: Tidak banyak. DAVID J. MALAN: OK, jadi kami akan mengambil itu. Jadi di sini adalah bagaimana permainan akan bekerja. Saya akan pergi ke depan dan klik bendera hijau, yang adalah di sini di bahagian atas kanan. Sekarang sebelumnya anda di dalam kelas telah memberikan anda beberapa arahan di sini. Dan dalam hanya seketika, ia berkata "ruang untuk memulakan." Oleh itu, pergilah ke hadapan dan tekan bar ruang. PERMAINAN KOMPUTER: Pikachu. DAVID J. MALAN: Dan matlamatnya adalah untuk menangkap makanan, seperti yang digambarkan terdapat di sebelah kiri. Dan kepada [didengar] [PERMAINAN MUZIK bermain] DAVID J. MALAN: Aww, baik, terima kasih kerana bermain. Kami ada di sini sedikit perpisahan hadiah untuk anda. Kami mempunyai CS50 tekanan bola, jika anda ingin pilih. Baiklah, baik untuk bertemu dengan kamu. Terima kasih kerana datang dan mencabar. Oleh itu, kita mempunyai lebih banyak bola tekanan, jadi mari kita buat satu contoh yang lebih untuk memberi motivasi. Seorang sukarelawan? Baiklah, bagaimana pula di sini di depan. Apa nama anda? PHILLIP: Phillip. DAVID J. MALAN: Phillip. Ayuh up, Phillip. Jadi, Phillip akan menjadi mencabar dengan permainan lain bahawa salah satu terdahulu anda menulis sebagai sebahagian daripada masalah yang dinyatakan sifar, permainan paling sukar yang dipanggil Ivy. Dan kita akan melihat hanya dalam masa apa yang dimaksudkan dengan ini. Phillip, baik untuk bertemu dengan kamu. Apakah latar belakang anda? PHILLIP: Selesai banyak pengekodan. Selesai satu permainan sedikit, terlalu. DAVID J. MALAN: OK. Mendapat banyak permainan juga. Dan telah anda bermain permainan ini? PHILLIP: Tiada DAVID J. MALAN: Semua betul, jadi di sini kita pergi. Saya akan pergi ke depan dan klik bendera hijau. [PERMAINAN MUZIK] [MUZIK MC HAMMER, "U TIDAK TOUCH INI"] PHILLIP: [didengar] DAVID J. MALAN: [didengar] PHILLIP: [didengar] [KETAWA] [MUZIK MC HAMMER, "U TIDAK TOUCH INI"] DAVID J. MALAN: [didengar] Membajak melaluinya. PHILLIP: [didengar] DAVID J. MALAN: Teruskan. [MUZIK MC HAMMER, "U TIDAK TOUCH INI"] DAVID J. MALAN: Baiklah. Tahniah. [Tepuk tangan] DAVID J. MALAN: Kami akan jawatan itu kemudian jadi talian bahawa anda boleh berlengah-lengah dengan itu juga. Princeton datang akan datang, selepas itu. Jadi sekarang mari kita sebenarnya meneruskan bermula dari awal, boleh dikatakan, dan benar-benar membina sehingga yang kita boleh dapati selain beberapa idea-idea dan sampai ke sesuatu yang lebih kompleks menjelang akhir. Saya akan pergi ke sini dan saya akan untuk pergi ke depan dan mencipta fail baru. Jadi sekali lagi, masalah set akan berjalan anda melalui beberapa langkah-langkah ini. Tetapi, semua saya lakukan ialah pergi untuk Fail dan saya berkata "baru," begitu banyak seperti Microsoft Word, atau mana-mana program seperti itu. Dan mari kita pergi ke depan dan kami now-- dilaksanakan "Hello dunia" masa yang lalu, tetapi mari kita melakukan sesuatu yang cuter sedikit. Saya akan pergi ke peristiwa. Dan saya akan lakukan "apabila bendera hijau diklik. " Kemudian saya akan menggunakan, kita katakan, cawangan. Jadi saya akan menggunakan "jika" keadaan. Dan notis bagaimana sejurus selepas saya mendapatkan dekat kepadanya, ia mahu snap bersama-sama. Jadi saya melepaskan dan ia berdetap bersama-sama. Dan sekarang saya boleh melakukan sesuatu yang menarik. Jika saya tatal melalui di sini, saya akan untuk melihat sejumlah besar blok. Jika saya pergi ke "data" - biarlah saya zum dalam- ada sesuatu tentang pembolehubah. Jika saya pergi ke "usul," anda boleh nampaknya mengubah keadaan. Jika saya pergi ke "pengendali" - oh, ini yang menarik, Saya boleh memilih nombor rawak. Jadi biarlah saya melakukan sesuatu dengan hanya beberapa kebarangkalian, hanya kerana. Saya akan pergi ke depan dan tarik sekeping teka-teki ini, ini ialah kurang daripada blok, jadi ia hanya "Adalah jumlah ini kurang daripada satu itu?" Tetapi saya tidak mahu kod keras sebilangan kerana yang menjadi cukup sia-sia. Jadi saya akan mengheret sekeping ini di sini, dan melihat bagaimana ia berdetap di, dan kini biarlah saya pergi ke hadapan dan berkata "jika nombor yang dipilih secara rawak adalah kurang daripada enam, jangan yang berikut. " Sekarang kenapa kurang daripada enam? Apa kebarangkalian adalah ini dengan berkesan akan memberi saya, hanya intuitif? Kira-kira 50%, betul? Jika nombor yang ini meneka secara rawak antara 1 dan 10 adalah kurang daripada enam, jelas ia satu, dua, tiga, empat, atau lima. Dan perkara yang berlaku untuk memberi saya 50% kebarangkalian apa yang berlaku? Nah mari kita melakukan sesuatu seperti ini, "bermain meow yang kukuh." Dan notis, sekali lagi, sekeping teka-teki yang tumbuh ke patut, selagi bentuk sepadan. Itulah apa yang penting. Biar saya pergi ke Scratch di sini dan klik "bermain." Tiada apa-apa yang berlaku. Adakah pepijat? Tidak, tidak perlu. Ia hanya boleh menjadi yang bilangan yang lebih besar telah dipilih. Jadi mari kita buat sekali lagi. Tiada apa-apa. [MEOW] DAVID J. MALAN: Ada ia. [MEOW] DAVID J. MALAN: Again. No. [Mengiu] DAVID J. MALAN: Jadi, jika anda mempunyai pernah bermain permainan, sudah tentu, di mana barangan yang berlaku secara rawak, seperti orang jahat yang datang atau tidak akan datang ke skrin, atau perkara-perkara yang jatuh atau tidak termasuk, itu hanya kerana sesuatu yang super mudah seperti ini berlaku. Memilih nombor rawak, dan jika ia kurang daripada nilai tertentu, mungkin melakukan ini atau mungkin berbuat demikian. Kita boleh menggabungkan yang keadaannya. Mari kita buat sesuatu yang berbeza. Biar saya membuang yang jauh. Anda boleh menghilangkan barangan oleh hanya mengheret ia di luar ke kiri dan melepaskan. Biar saya pergi ke hadapan dan melakukan blok selama-lamanya dan dengan cepat melakukan sesuatu yang menjengkelkan. Biar saya pergi ke hadapan dan berkata "bermain meow yang kukuh." Tetapi saya tidak mahu perkara ini terlalu menjengkelkan, jadi biarlah saya merebut blok ini, "Tunggu satu saat," dan notis tidak ada lebih banyak ruang untuk itu. Tetapi jika anda pergi cukup dekat, ia mahu pergi ke sana. Jadi saya membiarkan pergi dan ia akan berkembang untuk mengisi blok. Jadi sekarang, ini adalah satu gelung. [Mengiu] DAVID J. MALAN: Saya harfiah melakukan ini selama-lamanya. Sekali lagi dan sekali lagi. Itu hanya tidak berbunyi semula jadi. Biar saya pergi ke hadapan dan mengubah ini bukan satu kedua, untuk dua saat dan tekan Enter. Dan apa yang baik tentang Scratch adalah bahawa anda boleh program interaktif. Membuat perubahan, mungkin tekan Enter atau Play sekali lagi, dan ia hanya akan menyimpan berterusan. Nah, sekarang kenapa tidak kita lakukan sesuatu yang cuter sedikit? Daripada melakukan segala-galanya dari awal, biarlah saya pergi ke hadapan dan membuka pendahuluan dibuat satu, yang saya pra-bakar, dipanggil "Pet Cat itu." Dan kami akan pos semua fail-fail ini dalam talian, dan masalah set sifar akan memberitahu anda bagaimana untuk mengakses mereka dan membukanya. Dan notis, ini adalah agak mudah. Tetapi terlebih dahulu, saya seolah-olah telah meraih a "selama-lamanya" blok, jadi saya mendapat gelung. Dan kemudian saya mendapat "jika" keadaan. Saya ada satu ungkapan Boolean. Jadi, dalam bahasa Inggeris, hanya sambil mengerling ke arah ini, terutamanya jika anda tidak pernah diprogramkan sebelum ini, hanya mengikut gerak hati, ini apa yang akan lakukan, program ini? [PENONTON Chatter] DAVID J. MALAN: Jika anda haiwan kucing, kucing akan meow, bukan? Kerana "selama-lamanya menghilangkan tanda tick" adalah penunjuk tetikus menyentuh kucing. Jadi untuk menjadi jelas, dan saya tidak mengatakan sebelum ini, semua teka-teki ini keping dan skrip yang kami telah menggabungkan mereka ke dalam, boleh dikatakan, skrip yang sinonim dengan program, benar-benar, milik kepada kucing ini. Dan sebab is-- kerana notis bagaimana kucing sama ini di sini diserlahkan, turun di sini anda boleh membuat kucing kedua atau anjing atau benar-benar apa sahaja yang anda mahu secara grafik. Anda boleh mengimport sesuatu dari Photoshop, atau seumpamanya, dan menyepadukan sesuatu jika anda ingin membuat untuk projek. Dan apa yang anda akan mendapati, akhirnya, adalah bahawa anda boleh menambah skrip, menambah teka-teki keping, kepada watak-watak individu. Jadi ini semua tergolong dalam ini kucing tertentu. Jadi sekarang jika saya pergi ke depan dan bermain program ini, tiada apa yang berlaku. Tetapi ia berjalan. Program ini selama-lamanya gelung ini, jenis menunggu apa yang berlaku? [PENONTON Chatter] DAVID J. MALAN: Untuk haiwan kucing. Jadi, jika saya bergerak tetikus saya ke arah him-- [Mengiu] DAVID J. MALAN: Jadi sekarang Saya hastakarya kucing. Sementara itu, kita boleh mempunyai cawangan berganda. Biar saya pergi ke hadapan dan membuka sehingga tidak haiwan kucing. Kami akan pos dalam talian ini juga. Ini lebih sedikit kompleks, tetapi tanpa berkata anda mungkin boleh meneka apa yang akan berlaku. [Mengiu] DAVID J. MALAN: Cat adalah mengiu, masa tua besar. Tetapi program ini adalah kursus dipanggil "Jangan Binatang Cat ini," begitu jelas, saya mahu haiwan kucing. [Roaring] DAVID J. MALAN: Jangan haiwan kucing. Sekarang, mari kita lihat contoh lain di sini. Anak ini akan dipanggil "Hi, Hi, Hi," atas sebab-sebab yang akan menjadi jelas, kerana sebaik sahaja saya berjalan thing-- ini [SEAL Barking] DAVID J. MALAN: Sangat mudah untuk menulis program Scratch menjengkelkan. [SEAL Barking] DAVID J. MALAN: Sekarang kita tidak akan pergi ke dalam terperinci dengan semua ini, tetapi notis terdapat beberapa ciri-ciri baru di sini. Ada berubah-ubah, yang dikenali sebagai "disenyapkan," dan kemudian ada sekumpulan syarat. Dan buat masa ini, biarlah saya hanya mengusik anda dengan mengatakan bahawa jika lelaki ini terlalu menjengkelkan, Saya boleh memukul bar ruang dan dia berhenti. Oleh kerana peranan yang dimainkan oleh kedua-dua skrip adalah seperti berikut. Salah seorang daripada mereka melakukan perkara yang menyalak setiap beberapa saat. Yang lain hanya menunggu bagi saya untuk memukul bar ruang. Dan jika saya lakukan memukul bar ruang, ia akan menukar keadaan berubah-ubah ini, nilai pembolehubah ini, itu nampaknya dipanggil "disenyapkan," Saya tidak memanggil ia sesuatu yang membosankan seperti n, Saya dipanggil ia satu perkataan bahasa Inggeris, "disenyapkan." Dari 1-0 atau 0-1. Dari benar palsu atau palsu kepada benar. Dan supaya anda boleh benar-benar lihat sekarang, yang anda boleh mempunyai dua skrip, dua program berjalan pada masa yang sama, dan kedua-dua mereka mungkin duduk dalam gelung melakukan sesuatu. Menunggu manusia untuk melakukan sesuatu seperti memukul bar ruang. [SEAL Barking] DAVID J. MALAN: Dan kini dia dalam perjalanan lagi. [SEAL Barking] DAVID J. MALAN: Jadi apa lagi kita boleh lakukan dengan contoh-contoh ini? Nah, mari kita pergi ke depan dan melakukan contoh dengan mengira kambing biri-biri. Kami akan terus ini di sepanjang garis di sini daripada-- mari kita membuka contoh domba. Dan notis, sama seperti sebelum ini, yang satu ini, bersyukur, adalah sedikit kurang menjengkelkan. Apabila saya mencecah bermain here-- Oh tidak, ini adalah menjengkelkan. Dia akan baa dengan beberapa kebarangkalian. Mari kita bermain ini lagi. [SHEEP BLEETING] DAVID J. MALAN: Satu-satunya perbezaan adalah kita berubah pakaian, jadi untuk bercakap, dan kami mengurangkan separuh dan mengatakan apa jumlah sebenar. Nah mari kita pergi ke depan dan mengambil langkah ini satu lagi. Dan biarlah saya mengusik anda dengan satu ciri lain di sini. Mari kita pergi ke depan dan membuka program yang dikenali sebagai Threads. Begitu banyak seperti anda boleh mempunyai satu bidadari, yang mempunyai beberapa skrip, anda boleh mempunyai dua sprites, burung di kucing, setiap satu mempunyai skrip mereka sendiri. Dan setiap daripada mereka boleh beroperasi secara serentak. Jika anda pernah mendengar perkataan "multithreading" komputer ialah "bebenang" cara ia boleh melakukan pelbagai perkara pada satu masa, dan, sememangnya, jadi boleh Goreskan. Dan kini melihat burung adalah jenis bisu. Ia hanya melakukan perkara-perkara secara rawak, memantul dari skrin. Jelas sekali kucing itu telah diprogramkan kepada jenis mempunyai keupayaan mencari ke rumah dalam pada burung kerana dia sentiasa menghala ke arah dia. Sehingga akhirnya, beliau menangkap burung sebenar. Jadi, saya tidak akan menyentuh mengenai butiran di sini, tetapi anda boleh jenis mengimbas bentuk sama, beberapa "Jika" keadaan, beberapa pembolehubah, mungkin beberapa gelung, adalah akhirnya melakukan perkara yang sama. Sekarang, saya akan pergi ke depan dan membuka sehingga sesuatu yang berlainan sama sekali, mengejek sebahagian dari kamu, terutamanya mereka lebih selesa, apa yang anda benar-benar boleh lakukan dengan ini. Saya akan pergi ke depan dan membuka Button di sini. Dan ini adalah super yang program mudah-larangan, tetapi menonton apa yang berlaku apabila I-- Watch apa berlaku apabila saya membuka versi ini ia, sini dalam pelayar, scratch.mit.edu. Dan apabila saya klik merah besar ini butang, perhatikan apa yang berlaku. Jadi apa yang berlaku di sini? Ada sebenarnya yang lebih banyak kerumitan berlaku di bawah hud, walaupun saya telah dilaksanakan ini, atau terus-terang, Dan Bradley telah melaksanakan ini supaya hanya. Beliau telah mereka bentuk teka-teki Scratch adat sekeping, yang dikenali sebagai lanjutan Scratch, beliau memanggilnya Togol. Dan apa Togol tidak adalah ia menghantar mesej di internet. Dan mesej itu sendiri kelihatan sedikit samar. Tetapi ini juga, anda akan faham dengan akhir tempoh ini. Mesej yang dia sebenarnya menghantar kelihatan sesuatu yang kecil seperti ini. Ia hanya teks. Samar. Anda akan memahaminya dengan masa yang kita akan mendapat masalah yang ditetapkan tujuh. Ia hanya menghantar mesej teks melalui internet ke pelayan. Dan pelayan yang akhirnya bercakap dengan bola lampu ini, yang mempunyai salah satu mentol lampu mewah di dalamnya yang, sendiri, bercakap kepada Wi-Fi di rangkaian itu di sini, mana peranti tempatan turun here-- dan, akhirnya, ia sebenarnya menukarkan cahaya yang hidup dan mati. Tetapi kita boleh melakukan lebih banyak perkara yang menarik masih. Perhatikan apa Dan juga lakukan untuk kita. Dia membuat pelbagai sprites, setiap satu daripada yang mempunyai skrip menunggu klik. Dan jika saya klik merah, ia pergi merah. Jika saya mendapat biru, ia pergi blueish. Hijau, kuning, oren. Dan semua ini berlaku dengan pergi jalan keluar ke internet, berundur ke sini bola lampu, dan mematikan. Dan jika anda boleh percaya it-- dan ini adalah mungkin salah satu Scratch yang paling kompleks projek seseorang mempunyai implemented-- dia melakukannya, dalam keadilan, dalam satu hari. Dan itu adalah cabaran yang kita melemparkan kepada Dan apabila kita melihat ada mentol binari, kita mempunyai Scratch bagaimana, boleh kita menggabungkan mereka? Dan, sesungguhnya, ini adalah benar-benar sesuatu yang sesiapa sahaja di dalam bilik ini boleh melakukannya dengan end-- semester Adakah dia reimplemented mentol binari menggunakan antara muka yang sama adalah pada iPad kami pada Wednesday. Jadi sekarang, jika saya benar-benar klik campur di sini, kita mempunyai satu, dua, tiga. Saya boleh mencecah 16 dan suis yang satu di. 128, dan sebagainya. Sekarang jika itu sahaja mempunyai dan ditiup fikiran anda, anda boleh melakukan perkara-perkara yang jauh lebih mudah, tidak melibatkan mana-mana perkakasan pasti. Hanya perkara-perkara pada skrin itu sendiri. Dan, sesungguhnya, apa yang kebanyakan pelajar akhirnya melakukan beberapa jenis permainan, beberapa keping karya seni, atau beberapa jenis animasi interaktif. Dan saya akan berkata salah satu daripada kami kegemaran telah satu ini. Dan saya fikir jika kita boleh malap lampu, kami akan mengambil sepintas lalu pada akhir ini Projek permulaan dalam kesimpulan. Tetapi apa yang anda akan harus ingat, sebagai Saya boleh mengusik anda dengan satu terperinci lepas, sectioning akan bermula minggu depan. Waktu pejabat akan bermula minggu depan. Masalah set sifar akan dipaparkan CS50.harvard.edu lewat hari ini. Dan anda akan disambut dalam masalah set sifar untuk CS50 sendiri Zamyla Chan, yang panduan kebanyakan walkthroughs kami. Ini adalah video terbenam dalam set masalah yang akan memegang tangan anda melalui banyak pemasangan permulaan dan melalui banyak keputusan reka bentuk mungkin. Jadi jika anda telah pernah mempunyai emosi yang ketika menjawab tugasan kerja rumah dan tertanya-tanya, di mana saya bermula? Dia akan mempunyai jawapan untuk anda. Dan kini, program akhir dari satu orang yang terdahulu anda dalam menjawab soalan "Apakah musang katakan?" [MUZIK YLVIS, "Apakah yang FOX KATA?] YLVIS: (menyanyi) Anjing pergi pakan. Cat pergi meow. Burung pergi tweet dan tetikus pergi hampir kalah. Lembu moo pergi. Katak pergi bunyi katak. Dan gajah pergi tiupan. Itik mengatakan dukun dan ikan pergi bLub. Dan meterai itu pergi ow ow ow, tetapi ada satu bunyi yang tidak ada yang tahu, apakah musang katakan? Dan DAVID J. MALAN: Itu sahaja untuk CS50. Kami akan melihat anda di Teka-teki dan Hari Isnin. [Tepuk tangan] [MUZIK YLVIS, "APAKAH YANG FOX SAY?"] Pencerita: Dan sekarang dalam fikiran, oleh Daven Farnham. Hari ini saya mendapat melanda dalam berhadapan dengan sebuah buku telefon. Mengelirukan, kerana saya di rumah menonton talian.