SPEAKER: Saya [didengar]. Dan saya kanan di Leverett House. Saya belajar sains komputer, dan saya TF untuk CS50. Sebagai mahasiswa, saya tidak pun mempunyai komputer riba atau telefon pintar. Saya tidak mempunyai pengalaman pengaturcaraan. CS50 adalah kursus yang paling diingati bahawa Saya mengambil di Harvard kerana ia adalah perjuangan, tetapi ia adalah benar-benar perjuangan berseronok pada masa yang sama. Dan saya membuat banyak menakjubkan, kekal kawan-kawan, dan saya belajar banyak benar-benar kemahiran berkenaan. Saya hanya gembira bahawa saya tidak membenarkan saya kurangnya latar belakang menjadi alasan untuk saya tidak mengambil CS50. Saya [didengar]. Saya kanan di Leverett House, kelas 2014. Dan saya mengambil CS50. DAVID MALAN: Jadi ini adalah CS50. Ini adalah akhir sifar minggu. Dan ingat di mana kita bermula masa yang lalu, adalah dengan lampu, yang begitu popular yang kita pergi dan membeli beberapa lagi hari ini. Jadi saya rasa ini akan menjadi perkara yang kita tahun ini - lampu meja jika anda datang di atas pentas, sekurang-kurangnya sehingga kita habis. Tetapi kita digunakan ingat ini, untuk memperkenalkan asas-asas perwakilan data. Kami memerlukan cara untuk memulakan mewakili maklumat di dalam komputer. Dan cara yang paling mudah untuk berbuat demikian adalah dengan satu bahan, elektrik. Dan perkara yang paling mudah yang boleh anda lakukan dengan elektrik hidupkannya dan ia dimatikan. Mari aliran elektron atau tidak. Dan menggunakan kedua-dua negeri asas, off dan pada, atau palsu dan benar, atau sifar dan satu, kita mula melihat bahawa kita boleh membina sehingga, dalam kes ini, dengan cahaya mentol, lebih nombor daripada hanya sifar dan satu. Kami dikira setinggi tujuh, misalnya, masa lepas. Tetapi semua yang perlu kita lakukan adalah menjaga membuang mentol lebih banyak cahaya pada itu masalah dan, benar-benar, kita boleh mewakili mana-mana nombor yang kita mungkin mungkin mahu. Nah, kita beralih dengan cepat dan kemudian pada Rabu untuk bait ini sukarelawan. 8 bit adalah apa yang kita biasanya panggilan bait, jadi di sini kita mempunyai lapan sukarelawan pada hari Rabu yang secara kolektif adalah mewakili lapan bit. Dan apabila tangan mereka pergi , mereka adalah satu. Dan apabila tangan mereka adalah ke bawah, terdapat sifar. Dan kita mempunyai orang ini datang mengapa peringkat? Apa yang kita boleh lakukan dengan urutan ini bit? Untuk mencipta abjad. Kita dapat membina di atas itu pelajaran sebelumnya yang dipelajari dan sebenarnya mula membuat lebih menarik maklumat yang sekurang-kurangnya lebih biasa kepada kita manusia. Dan ini akan menjadi yang berulang-ulang tema sepanjang 50, tetapi juga komputer sains lebih amnya, idea ini lapisan, di mana, pada akhir hari, jika anda benar-benar memulakan asas-asas dengan komputer, ya, ia adalah sifar dan orang-orang. Dan di bawah bahawa ia adalah hanya elektrik. Tetapi kita dengan cepat mula mengambil mereka butiran tahap rendah untuk diberikan dan mula lapisan di atas lalu bekerja dilakukan supaya kita, akhirnya, dengan akhir semester, dan benar-benar, secara umum sebagai saintis komputer dan pengaturcara, boleh melakukan beberapa benar-benar perkara-perkara yang berkuasa dengan menggunakan kerja yang kita sendiri telah dilakukan dan juga berdiri di atas bahu orang lain. Sekarang kita beralih dengan cepat pada hari Rabu daripada hanya perlu mewakili maklumat yang ingin untuk melakukan sesuatu dengannya. Jadi apa yang kita menentukan algoritma sebagai? Satu siri arahan. Jadi ia adalah satu siri arahan, satu beberapa langkah-langkah yang anda, seorang manusia, atau komputer, lebih biasanya, akan melaksanakan satu demi satu dalam usaha untuk mencapai matlamat beberapa. Dan kita mempunyai beberapa matlamat masa lalu, satu daripadanya adalah untuk mengira orang di dalam bilik. Dan satu lagi contoh adalah untuk mencari Mike Smith dalam buku telefon. Jadi, anda boleh ingat bahawa saya mengoyakkan telefon buku di separuh akhir ke arah ini sehingga mencari Mike Smith. Tujuan yang visual adalah untuk menunjukkan, sekali lagi, bahawa kami betul-betul mengoyak masalah ini dalam separuh, pada separuh, pada separuh, dan sangat cepat pergi dari seperti 1,000 muka surat hanya satu halaman. Orang-orang yang terlepas ini pada Rabu, saya fikir kita akan memainkan semula beberapa rakaman apa yang anda terlepas. Mari kita melihat. [MAIN SEMULA VIDEO] -Ada kita pergi. 1500 muka surat, garis bersih Nice, air mata yang sah. [AKHIR VIDEO MAIN SEMULA] DAVID MALAN: Jadi itu adalah hari Rabu. Kami peralihan, walaupun, pada Rabu kini kepada yang ingin mewakili algoritma dalam beberapa cara agak standard, bukan sahaja menggambarkan mereka secara lisan, tetapi cuba untuk menyatakan mereka secara bertulis atau skrin komputer supaya kita boleh mula untuk memperbaiki, dan mengubah suai mereka, dan, akhirnya, sebenarnya menganalisis betapa betul atau berapa cepat mereka. Jadi kami memperkenalkan idea ini daripada pseudokod, yang, dalam Dari segi orang biasa itu, adalah apa? OK, kata-kata. Mari kita pergi sedikit lebih mendalam daripada itu. Bahasa Inggeris, pasti, tetapi adalah terhadap apa yang akhir? Perkataan yang boleh digunakan untuk membuat atau untuk mewakili algoritma. Jadi tidak ada satu bahasa yang dikenali sebagai pseudokod di dunia. Ia hanya bahawa anda, dalam bahasa Inggeris, atau apa bahasa pertuturan anda, menggunakan sejenis notasi sepintas lalu untuk menyampaikan idea yang sangat ringkas. Tetapi kita akan melihat bahawa, sudah tentu dengan Pseudokod Bahasa Inggeris, dan ia ternyata kebanyakan bahasa pengaturcaraan diri adalah terbitan daripada bahasa Inggeris itu sendiri, kita akan mendapati bahawa terdapat beberapa standard cara-cara yang mewakili pseudokod dan juga pengaturcaraan kod. Jadi, apabila anda mula melihat walaupun yang paling mudah contoh hari ini, merealisasikan corak yang sama akan berulang minggu depan. Jadi pseudokod adalah beberapa jenis bahasa menyerupai bahasa pengaturcaraan. Dan contoh yang pertama kita lihat visual diturunkan adalah yang satu ini. Ia hanya program tiga langkah, matlamat iaitu untuk mengira bilangan orang di sebuah bilik asrama untuk bahawa video pada Rabu. Tetapi terdapat beberapa aspek yang menarik program ini mudah. Dan ini akan menjadi tema yang berulang-ulang. Jadi bagi mereka yang tidak biasa dengan ini, satu, kami memperkenalkan pembolehubah. Dan mungkin semua orang di dalam bilik ini adalah biasa dengan berubah-ubah dalam konteks algebra. Tetapi di sini dalam pengaturcaraan, pembolehubah adalah, satu, boleh dikenali sebagai apa-apa yang kita mahu. Kami telah menggunakan n sebagai kaunter. Tetapi kita boleh menggunakan kaunter perkataan, atau, seperti yang anda akan lihat, ungkapan yang paling mana-mana yang anda mungkin ingin selagi ia deskriptif, tetapi ia adalah benar-benar hanya bekas penyimpanan. Ia adalah sebahagian daripada memori, ada beberapa bit, dan ia berbeza dengan komputer, bagaimana bilangan bit yang terdapat mengarang berubah-ubah itu. Tetapi kita boleh meletakkan nilai-nilai di dalamnya. Setakat ini, kami hanya meletakkan nombor. Tetapi kita boleh meletakkan kata-kata sebenar. Kita boleh meletakkan perenggan. Kita boleh meletakkan imej - apa-apa, benar-benar, kita boleh mewakili dengan sifar dan orang-orang, kita boleh dimasukkan ke dalam ini tanggapan tahap yang lebih tinggi pembolehubah a. Jadi agak lurus ke hadapan sana. Dan itulah salah satu baris. Tetapi kita dengan cepat berpindah dari line seseorang untuk benar-benar melakukan sesuatu dengan berubah-ubah itu. Dan selaras tiga tahun, kami dikemaskini N. Kami incremented N. Dan kita boleh menulis ini apa-apa bilangan cara. Tetapi mungkin yang paling jelas adalah hanya untuk mengatakan, set N sama dengan apa N adalah plus 1. Jadi itu adalah kenaikan kita. Sementara itu, terdapat gelung. Dan yang satu ini, juga, mungkin cukup intuitif. Gelung adalah hanya sesuatu dalam program yang berlaku sekali lagi dan sekali lagi, beberapa jenis kitaran. Dan frasa ini penting di sini, bagi setiap, adalah sebenarnya sangat biasa sepanjang bahasa pengaturcaraan, termasuk yang kita akan melihat dalam kursus ini. Bila-bila masa anda melihat perkataan, ia biasanya menyampaikan idea bahawa gelung, sesuatu kitaran, adalah kira-kira berlaku. Tetapi ia adalah diperhatikan satu detail sintaktik lain. Hakikat bahawa Barisan ketiga terdapat sebenarnya tersusun oleh telah melanda bar ruang beberapa kali adalah sengaja. Kerana konvensyen manusia adalah seperti itu, apabila anda melakukan sesuatu yang sekali lagi dan sekali lagi, dalam gelung, kerana bermula pada baris dua, anda inden apa-apa yang dipunyai oleh untuk gelung yang hanya untuk membuat jelas bahawa ia adalah garis tiga dan tidak, misalnya, garis empat atau lima, jika terdapat garisan untuk atau lima, yang sebahagian daripada yang gelung. Jadi kasturi ini mudah menyampaikan bahawa idea asas. Jadi kami memohon algoritma ini, sekarang, untuk beberapa contoh. Dan ini juga, contoh yang mudah dalam dunia sebenar. Tetapi ia akan menjadi wakil bagaimana anda akan pergi tentang ujian anda memiliki program semakin kompleks. Anda cuba senario ini, beberapa wakil input, dan lihat jika anda mendapatkan output yang dikehendaki. Jadi contoh ini mempunyai dua orang duduk di dalam bilik asrama. Di sebelah kiri adalah bahawa kod pseudo sama. Dan ini adalah pukulan skrin yang Langkah terakhir permohonan ini algoritma input kepada mereka, di mana terdapat dua orang di dalam bilik itu dan, ingat, seperti yang kita melangkah melalui talian satu, dan dua, dan tiga, dan dua dan tiga dan dilakukan - menjelang akhir algoritma itu, kami mempunyai memang dikira dua rakan-rakan yang di dalam bilik. Jadi kita cuba contoh yang lain. Dan kita berkata apa jika terdapat sifar orang di dalam bilik itu? Adakah kod ini masih betul? Dan sesungguhnya ia. Ia hanya kebetulan bahawa garis dua dan oleh itu, garis tiga atau tidak akan melaksanakan. Mereka tidak akan berlaku sama sekali kerana mereka hanya tidak boleh digunakan jika terdapat sifar orang di dalam bilik. Tetapi bukan masalah besar. Line satu dimulakan N kepada sifar, jadi walaupun hanya satu baris ini program sebenarnya akhirnya menjadi berguna, ia masih menghasilkan jawapan yang betul, seperti yang ditunjukkan oleh oren sifar di bawah. Tetapi kami memutuskan bahawa adalah jenis algoritma bodoh. Ia agak perlahan. Sesungguhnya, saya boleh melakukan dua, empat, enam, lapan, sepuluh, apabila mengira orang-orang di dalam bilik. Jadi kita mengagak algoritma ini, pseudokod, untuk mengatakan, kini dalam talian dua, untuk setiap pasangan orang di dalam bilik, meneruskan, sejajar tiga, kenaikan oleh dua pada setiap lelaran. Jadi yang akan bekerja di sini untuk pasangan ini orang-orang di dalam bilik. Tetapi, jika anda mula berfikir tentang ini, dan ia tidak mengambil masa yang lama untuk sedar, tunggu satu minit ini adalah akan pecah, ia pecah apa yang mana-mana yang mudah? Jika ada tiga orang di dalam bilik itu, atau lebih secara amnya, apabila terdapat satu nombor ganjil orang di bilik, termasuk satu. Kami akan melepaskan orang itu di sini kerana tidak ada pasangan itu. Oleh itu, kita dengan cepat ditangani oleh bukan memperkenalkan apa tambahan membina pengaturcaraan kepada kod pseudo. Jadi keadaan, kita dipanggil , atau cawangan. Dan ia bertujuan untuk menyampaikan, pandangan, Idea cawangan, garpu di jalan raya di mana anda boleh melakukan ini atau, mungkin, sesuatu yang lain. Dan sesungguhnya, kita menangani isu ini dengan menambah baris 4, dengan berkata, benar-benar, sekurang- akhir sangat, jika seseorang kekal, kemudian pergi ke hadapan dan mengira mereka istimewa. Jadi anda menyelesaikan kes khas mereka, maka untuk bercakap, supaya sekarang kita boleh mengendalikan kedua-dua nombor yang lebih daripada orang-orang dan nombor ganjil orang. Sekarang ada apa-apa bilangan cara kita boleh menyatakan ini. Dan terus-terang, saya boleh telah lebih nit cerewet apabila ia datang kepada pilihan saya Bahasa Inggeris untuk pseudokod itu. Tetapi sekurang-kurangnya semangat idea yang disampaikan. Jika anda menyerahkan kod ini kepada rakan yang tiada dalam CS, atau tidak pernah diambil CS, kemungkinan mereka dapat memikirkan, diberikan tiga orang di dalam bilik, bagaimana untuk mengira orang-orang yang berdasarkan atas arahan ini. Dan itu semua benar-benar kita mahu mencapai dengan pseudokod, entah bagaimana menyeragamkan bagaimana kita akan kira-kira mewakili idea-idea supaya kita dapat mula melakukan lebih rumit perkara masih. Jadi yang membawa kita kemudian, hari ini, kepada kod sebenar. Kami mula program hari ini, walaupun dalam persekitaran yang mesra. Dan kemudian kita peralihan dengan cepat untuk sintaks lebih batin, tetapi satu yang anda akan melihat adalah asas yang sama seperti idea-idea yang akan menyaksikan ditunjukkan dengan bahasa ini lain hari ini. Ia hanya akan kelihatan sedikit berbeza. Jadi, daripada hanya memanggil kod ini, saya akan menjadi sedikit lebih tepat dan berkata, selepas ini, apabila menulis program, anda menulis kod sumber. Ia adalah jenis pseudokod seperti. Tetapi kita akan melihat ia bukan jenis longgar apabila ia datang untuk memilih perkataan yang anda gunakan. Apabila programing dalam bahasa, anda perlu untuk menggunakan kata-kata, frasa, sintaks, bahawa orang lain telah membuat keputusan mewakili bahawa bahasa tertentu. Jadi pseudocodes adalah terpulang kepada anda. Satu bahasa pengaturcaraan yang sebenar seperti C, seperti yang kita akhirnya akan melihat, adalah standard oleh orang lain. Jadi bagaimana kita pergi tentang menulis beberapa kod sumber? Well saya akan pergi hadapan dan melakukan ini. Saya akan pergi ke hadapan dan membuka tingkap di sini. Lebih pada minggu ini akan datang. Tetapi ini adalah satu alat yang dipanggil perkakas CS50. Saya menjalankan perisian pada saya Mac, walaupun anda boleh melakukan perkara yang sama pada komputer Windows, yang memberi saya ilusi berjalan yang berbeza sistem operasi sama sekali hak di sini di tingkap pada Mac saya. Saya baru sahaja ditayangkan penuh supaya anda tidak benar-benar melihat Mac OS sekarang. Ini adalah satu sistem operasi dipanggil Linux. Ia amat popular. Ia adalah sangat cepat. Ia amat bebas, yang telah menjadikan ia sangat menarik, terutamanya di dunia komersial. Dan yang lebih pada itu ke arah akhir semester apabila kita menggunakan Linux agak sedikit untuk web pengaturcaraan dan tuan rumah laman web sebenar dan projek. Jadi sekarang, hanya tahu bahawa ini adalah desktop yang bertujuan untuk melihat samar-samar biasa untuk Windows dan Mac OS. Ia hanya mempunyai beberapa nama yang berbeza dan ikon untuk perkara-perkara. Tetapi ini adalah CS50 kononnya perkakas, mesin maya itu, bermula minggu depan, kamu akan berjalan dalam tetingkap pada Mac anda sendiri atau PC. Untuk hari ini, saya akan membuka yang paling mudah program. Ia dipanggil gedit. Dan ini adalah hanya editor grafik. Ia adalah jenis seperti Microsoft Perkataan, tetapi mudah. Ia adalah jenis teks seperti edit atau notepad. Ia hanya satu program yang sangat mudah dengan yang menulis perkataan pada skrin. Ia hanya apa yang berlaku jika saya menyimpan fail-fail yang saya buat apabila program ini dalam lanjutan khas seperti. c, dan bukannya daripada. doc, atau. xls, atau apa sahaja anda sudah biasa dengan, saya boleh sebenarnya mewujudkan program menggunakan walaupun ini mudah editor teks. Jadi biarlah saya berbuat demikian. Biar saya pergi ke hadapan dan menyimpan ini memfailkan pertama sebagai hello.c. Dan sekali lagi, antara muka pengguna ini akan menjadi biasa kepada anda dengan cepat. Tetapi untuk sekarang, saya hanya menaip dalam nama fail. Saya akan menyimpan ke dalam John saya Harvard direktori rumah. Dan kini saya mempunyai tab ini yang menunjukkan Sesungguhnya saya menyunting fail yang dipanggil hello.c. Jadi tiada apa yang terlalu menarik yet. Dan kini ia akan mendapatkan cukup samar. Saya akan mengezum masuk, hanya supaya ia lebih jelas. Dan saya akan mula menaip termasuk stdio.h, int utama, tidak sah, terbuka kerinting menyokong, satu, dua, tiga, empat ruang daripada kasturi, cetak f, untuk mencetak sesuatu diformat, unquote quote, "Hello, dunia" backslash, n, berhampiran quote, kurungan tertutup, koma bertitik, memasukkan backspace, backspace, backspace, backspace, ditutup pendakap kerinting - Saya telah diprogramkan. Baiklah, jadi ini adalah mudah super program, benar-benar, program yang sesiapa sahaja bermula pengaturcaraan dengan. Dan semua ia, untuk semua kerumitan, adalah mencetak pada skrin, rasa apa? Hello dunia. Tetapi ia tidak mencukupi hanya untuk menulis program. Jadi ini adalah kod. Ini adalah kod sumber dalam bahasa yang dikenali sebagai c. Ia disimpan pada masa ini fail yang dipanggil hello.c. Sekarang lihat di bahagian bawah skrin di sini. Lanjut mengenai perkara ini, sekali lagi, dalam minggu-minggu akan datang. Tetapi ini adalah apa yang kita akan memanggil tetingkap terminal. Ia adalah satu berkelip, hitam dan putih segera. Ia adalah jenis antara muka sekolah lama untuk komputer yang biasanya tidak menggunakan tetikus atau lain-lain unsur-unsur grafik. Ia hanya menggunakan papan kekunci anda. Dan saya boleh menaip arahan di ini berkelip segera. Dan bagi maksud yang pada hari ini, saya hanya akan taip yang berikut - membuat hello. Dan program itu, membuat, hanya program itu, dalam dunia sebenar ini hari, kami akan klik dua kali ke atas. Tetapi dalam antara muka ini untuk hari ini, kami akan menaip namanya di segera. membuat hello adalah benar-benar akan membuat saya satu program yang dipanggil hello. Dan ia akan berbuat demikian dengan melihat fail, hanya dengan lalai, dipanggil hello.c. Ia akan menganggap saya mahu program C oleh alam semula jadi bagaimana komputer ini dikonfigurasi. Jadi saya pergi ke hadapan dan tekan enter. Saya melihat beberapa output samar, tetapi ini akan menjadi terlalu biasa tidak lama lagi. Ini berlaku untuk menjalankan pengkompil, lebih atas bahawa dalam seketika, dipanggil dilafaz. Tetapi sekarang, saya telah mendapat satu lagi berkelip segera. Dan saya boleh pergi ke hadapan sekarang dan menaip dot mengurangkan, untuk tidak menarik sebab kita akan kembali ke minggu depan - hello. Jadi semua usaha ini setakat ini hanya untuk menulis mudah program itu, sebaik sahaja saya tekan Enter, adakah itu. Jadi saya telah menulis program pertama saya. Jadi saya sengaja poking menyeronokkan di program ini sangat mudah untuk beberapa sebab. Satu, ia adalah sukar untuk mendapatkan teruja tentang mengambil kelas jika ini adalah permainan akhir. Tetapi lebih daripada itu, terdapat banyak gangguan di sini. Kali pertama yang anda belajar untuk program, untuk orang-orang yang anda kurang selesa, dan walaupun saya, kembali pada hari, apabila saya mula-mula melihat sesuatu seperti ini - anda boleh jenis daripada jumlah itu, semua betul, ini adalah dalam dunia cetak hello. Tetapi ada begitu banyak gangguan. Terdapat banyak sintaks pada skrin ia mendapat di jalan sangat idea yang mudah, jika tidak mudah,. Jadi apa yang kita akan lakukan hari ini adalah kami akan diketepikan C dan datang kembali kepada pada hari Isnin. Dan kami akan menggunakan grafik bahasa pengaturcaraan yang dipanggil calar. Ini adalah bahasa pengaturcaraan, yang saya dirujuk kepada pada hari Rabu, yang berlaku untuk membolehkan kita untuk melakukan apa yang sama barangan tetapi menutup mata, untuk hari ini, untuk pendakap kerinting, kurungan, yang koma bertitik, dan semua ini bodoh gangguan yang mendapat di jalan, dalam hari ini pertama, beberapa asas, cukup idea-idea yang menarik. Jadi ke arah itu, saya akan pergi kembali ke meja saya di sini dan memperkenalkan anda kepada alternatif kepada yang program, yang akan kelihatan sedikit sesuatu cahaya ini. Itulah bagaimana kita akan melaksanakan yang program yang sama hari ini - dua teka-teki keping itu, apabila dan saling diklik, akan berkata kepada dunia, hello dunia. Jadi mari kita benar-benar pergi ke sana. Jadi, saya akan pergi ke hadapan dan membuka laman web yang dikenali sebagai scratch.mit.edu. Dan ini akan membawa saya ke laman web ini di sini. Terlebih dahulu, saya telah log masuk ke dalam ini laman web dan masalah pertama yang akan berjalan anda melalui beberapa langkah-langkah. Saya akan teruskan dan klik pada folder awal saya di sini. Dan ini akan menunjukkan kepada saya beberapa projek-projek yang saya telah sebenarnya dicipta terlebih dahulu. Dan ternyata bahawa ini grafik bahasa pengaturcaraan bukan sahaja akan untuk memberitahu kami program dengan menarik dan menjatuhkan keping teka-teki, anda bahkan tidak memerlukan perisian khas. Ini semua tertanam dalam pelayar supaya yang boleh anda lakukan ini, dalam teori, pada komputer anda sekarang, sebagai sebahagian dari kamu mungkin, tanpa perlu perisian seperti perkakas CS50, yang akan datang minggu depan. Jadi saya akan pergi ke sudut atas di sini dan klik pada Buat. Dan pada masa yang saya akan mendapat kosong melalui skrin yang saya boleh mula pengaturcaraan dalam grafik persekitaran pengaturcaraan. Tetapi kali ini, ia akan menjadi lebih, lebih mudah untuk benar-benar berbuat demikian. Jadi dalam hanya seketika, apabila Wi-Fi bekerjasama, kita kini mempunyai skrin ini. Jadi lawatan lisan cepat, tetapi saya berani mengatakan, pasti apabila anda menyelam ke dalam set masalah pertama, anda akan mendapati ini semua sangat dicapai dan agak intuitif. Tetapi mari kita gambaran mental hanya untuk seketika. Jadi di bawah ini segera save berkata perubahan, anda kira-kira untuk melihat awal. Ini adalah bidadari a. Ia bersifat. Dan dia hidup pada apa yang kita akan memanggil pentas, ini segi empat tepat yang besar putih pada yang dia boleh bergerak ke atas, ke bawah, kiri, betul, dan lakukan, benar-benar, lain-lain jenis tindakan. Sementara itu, di tengah-tengah pengguna ini muka, kami mempunyai sejumlah besar keping teka-teki. Dan anda akan melihat bahawa mereka mengatakan perkara-perkara seperti bergerak 10 langkah, berpaling 15 darjah, titik dalam arah tertentu. Tetapi ada kategori blok di sini juga. Jadi, jika saya pergi ke Kelihatan, anda akan melihat bahawa ada kepingan teka-teki yang lain nampaknya akan memberitahu cit ini bertanya khabar, untuk berfikir, untuk menunjukkan sendiri, menyembunyikan dirinya. Jika saya pergi ke Bunyi, ternyata ada cara untuk bermain bunyi seperti meow, untuk menghentikan semua bunyi, bermain gendang. Jadi, cerita panjang pendek, ada keseluruhannya sekumpulan kepingan teka-teki yang membolehkan anda untuk memberitahu kucing ini, atau apa-apa bilangan watak-watak yang lain, apa yang perlu dilakukan. Tetapi untuk membuat ini semua berlaku anda perlukan untuk memulakan pengaturcaraan. Dan ini kotak besar putih, atau kotak kelabu, pada sebelah kanan, ini adalah di mana Saya akan benar-benar menarik dan jatuh orang-orang keping teka-teki. Itu adalah teks kosong saya tingkap yang sama. Jadi, saya akan pergi ke hadapan dan klik Mengawal di tengah-tengah. Atau sebaliknya, biarlah saya mulakan di bawah Peristiwa. Di bawah bangku Events, anda akan notis beberapa perkara yang sengaja melengkung di atas dalam apa-apa cara yang mereka mungkin tidak berpaut pada atas kepingan teka-teki. Dan itu kerana mereka Demark permulaan sesuatu program, permulaan skrip, jadi untuk bercakap. Jadi jika saya pergi ke hadapan dan tarik, apabila hijau bendera klik di sini, dan kemudian saya mahu kucing ini untuk mengatakan sesuatu yang pada mulanya. Jadi saya akan pergi di bawah kelihatan panel. Dan saya akan pergi ke hadapan dan merebut menyapa blok, dan drag dan drop, dan melepaskan supaya ia secara automatik saling kunci di sana. Dan kemudian melihat saya boleh klik pada teks. Dan saya boleh mengatasi ia menjadi lebih tertentu seperti, berkata, hello dunia. Dan sekarang kita mempunyai program yang saya menuntut adalah bersamaan dengan yang lebih program batin saya telah melaksanakan C dalam masa yang lalu. Jika saya pergi ke sekarang untuk sebelah kiri, melihat ada tanda berhenti besar dan bendera hijau besar. Biar saya mengezum masuk untuk kejelasan. Dan apabila saya sekarang klik bendera ini hijau, anda mungkin boleh meneka apa ini pertama program kini akan lakukan. Jadi ada juga, kami pengaturcaraan, tetapi kita sebenarnya tidak mendapat buntu dalam beberapa orang sintaktik, butir-butir minit. Tetapi mari kita mencuba sesuatu yang sedikit lebih menarik. Biar saya pergi ke folder Scratch saya di sini. Dan sebenarnya, saya jadi biarlah saya membuka program yang berasingan di sini hanya untuk masa, Memaksimumkan tetingkap ini, Fail Terbuka, dan saya akan pergi ke hari ini direktori sumber. Seperti biasa, anda akan mendapati, hari ini dan seterusnya, bahawa semua contoh-contoh hari ini boleh diakses dalam laman web kursus ini. Dan saya akan pergi ke hadapan di sini dan mengambil sehingga sesuatu yang sedikit berbeza. Yang satu ini di sini, yang mana Saya memerlukan sukarelawan. Yang ingin lampu meja hari ini? OK, bagaimana tentang seseorang sedikit - adakah anda pada akhir? Ayuh ke bawah. Kini, anda ingin mengambil bahagian, atau hanya mengatakan bermula dengan lampu meja? Vanessa: [didengar]. DAVID MALAN: OK. Sangat baik, apa yang anda nama? Vanessa? Daud. Nice untuk bertemu dengan kamu. Jadi datang dan ini akan Vanessa untuk mengawal saya papan kekunci untuk seketika. Dan apa yang saya lakukan di sini, hanya untuk masa ini demi, seperti yang telah saya menyedari Wi-Fi adalah agak perlahan, Awal, yang persekitaran pengaturcaraan yang kami menggunakan, juga boleh dimuat turun dan dijalankan pada komputer tempatan anda. Jadi apa yang saya lakukan sebelum kuliah, dalam kes yang berlaku, adalah saya turun semua fail yang kita kira-kira untuk bermain dengan supaya mereka boleh menjalankan lebih sedikit cepat di sini pada komputer riba saya. Jadi itulah sebabnya sekarang saya melihat antara muka Mac-tertentu. Jadi saya akan pergi ke hadapan dan membuka satu ini. Saya akan pergi ke hadapan sekarang dan skrin penuh tingkap. Dan seperti yang anda akan melihat, kita boleh dengan cepat, sebagai pelajar ini lakukan, salah satu terdahulu anda, pergi dari dunia hello kepada yang lebih lebih menarik permohonan. Jadi di sini adalah arahan. Oh, dan kami mempunyai satu perkara yang lain. Saya fikir ia akan menjadi seronok, kerana, biasanya, kita akan penggambaran kamera dengan cara ini. Saya fikir ia akan menjadi seronok jika, Vanessa, kita dapat melihat dunia melalui mata anda. Jadi di sini kita mempunyai beberapa Kaca Google. [Situ menarik nafas terkejut terkejut] DAVID MALAN: Kami hanya akan memberikan dari lampu meja hari ini. [Ketawa] Jadi biarlah saya petunjuk sehingga ini. Baiklah, jadi menyentuh ini. OK, Kaca, merakam video. Baiklah, Vanessa? Kini, sebagai mengetepikan yang telah mendapat apa-apa kaitan dengan Awal, jika anda melihat sedikit ke atas dan ke kanan, anda akan melihat kaca literal, dan anda harus melihat tetingkap segi empat tepat kecil. Anda harus melihat semua rakan-rakan anda sedang difilemkan sekarang? Ya. Vanessa: Ya. DAVID MALAN: OK. Jadi itulah denda. Kami akan melepaskan rakaman ini kemudian. Buat masa ini, menumpukan perhatian anda ke skrin di sini. Dan apa yang anda sebelumnya telah dilakukan adalah meletakkan beberapa arahan pada skrin hanya dengan menggunakan program cat. Jadi anda akan, dalam seketika, tekan ruang untuk memulakan. Dan kemudian beberapa keping teka-teki akan untuk mula bergerak ke atas skrin. Dan anda mahu untuk memukul butang panah, hanya seperti dalam sebenar DDR, mengikut dengan perkara-perkara beratur dengan orang-orang anak panah. Vanessa: OK. DAVID MALAN: Anda telah bermain sebelum ini. Vanessa: Yeah. DAVID MALAN: Baiklah, Vanessa, pergi ke hadapan dan mengambil ia jauh. [MUSIC - Kayne Barat, "lebih kuat"] [Tepuk tangan] DAVID MALAN: Jadi mari kita kini mengambil langkah itu. Jadi jelas, itu permainan akhir. Permainan akhir bukan dunia hello. Tetapi anda tidak perlu semestinya melakukan perkara-perkara yang begitu interaktif. Anda juga boleh melakukan animasi. Jadi untuk contoh, satu lagi salah satu daripada anda pengganti membuat program ini di sini, yang memberitahu cerita yang lebih daripada ia dilaksanakan permainan. Jadi biarlah saya pergi ke hadapan dan membuka di sini program di dalam direktori sumber kami sama dari hari ini. Ini panggilan satu, dan mari kita mulakan dengan, kisah cinta cookies. Dan tidak membuat ini terlalu akademik, tetapi, seperti yang anda menonton satu ini, berfikir untuk diri sendiri yang mereka mudah konsep pengaturcaraan kita telah berbincang kira-kira setakat ini - pembolehubah, dan gelung, dan keadaan, tidak sebelumnya anda mungkin menggunakan hanya untuk melaksanakan beberapa yang visualizations. Anda lihat di sini. Jadi saya memberikan A kisah cinta cookies. [MUSIC - HARI HIJAU, "CUTI"] [CRASH] [MUSIC - THE PENYU, "SELAMAT BERSAMA"] DAVID MALAN: Baiklah, jadi, kita mempunyai kisah cinta cookies. Tetapi di sana - [Tepuk tangan] DAVID MALAN: Baiklah, walaupun di sana, berfikir tentang, kerana mereka pergi dari hati bahagian bawah ke bahagian atas skrin, ada sebenarnya sedikit rawak berlaku. Dan sesungguhnya, kita akan melihat bahawa walaupun dalam mudah persekitaran, seperti Awal, seperti dalam C, anda boleh menjana nombor rawak, atau ilusi nombor rawak, supaya permainan adalah sedikit lebih menarik daripada ia mungkin jika anda mempunyai benar-benar dikodkan segala-galanya. Dalam pergerakan yang anda lihat, terdapat terdapat beberapa jenis tindak balas. Sebaik sahaja lelaki roti halia menyentuh wanita roti halia, dia seolah-olah bergerak. Dan sebagainya, sememangnya, anda boleh melaksanakan, bahasa pengaturcaraan yang paling, tanggapan peristiwa, di mana jika seseorang menyentuh tangan Sebaliknya, yang boleh mencetuskan beberapa kod sumber anda untuk sebenarnya melaksanakan. Anda boleh mendengar apa-apa perkara pada skrin. Jadi mari kita ikuti perjalanan, maka, daripada beberapa blok bangunan yang boleh kita gunakan untuk mencapai beberapa matlamat ini. Jadi di sini adalah apa yang kita akan selepas ini memanggil satu kenyataan. Pernyataan yang berlaku untuk menjadi ungu Awal, sesuatu yang kecil seperti ini, tetapi itu sewenang-wenangnya. Pernyataan yang hanya sekeping teka-teki atau, lebih umum, Arahan, bahawa memberitahu komputer untuk melakukan sesuatu, satu kenyataan. Jadi di sini adalah contoh yang mudah. Katakanlah hello dunia. Satu lagi mungkin menunggu satu kedua. Jadi ini sekeping teka-teki, yang disokong di Awal, kami akan memberitahu anda watak berhenti seketika untuk beberapa beberapa saat. Ini juga merupakan satu kenyataan. Di sini akan datang, kami mempunyai satu lagi lebih salah satu yang menarik, bermain meow bunyi, dan arrow kecil bermakna bahawa dalam Awal, ini adalah satu drop down menu. Jadi, anda boleh mengimport bunyi. Anda boleh merakam bunyi dan melakukan lain-lain perkara yang menyeronokkan dalam Scratch. Dan itu, juga, walaupun, pada akhir hari ini, hanya satu kenyataan. Tetapi sekarang mari kita memperkenalkan lebih sekeping menarik, yang dikenali sebagai Ungkapan Boolean. Modal B, dinamakan selepas rakan-rakan yang bernama bool. Dan ungkapan Boolean hanya sekeping teka-teki atau lebih amnya, yang sekeping maklumat yang sama ada benar atau palsu - satu atau sifar, ya atau tidak. Jadi ia adalah salah satu daripada orang-orang dua bertentangan. Jadi, satu ungkapan Boolean seperti dalam dunia Scratch kelihatan seperti ini biru teka-teki sekeping. Dan ia bertanya soalan, tikus ke bawah, dan yang sama ada boleh, daripada Sudah tentu, benar atau palsu. Jadi dengan sekeping teka-teki ini di Awal, baik, anda akan dapat mengesan jika teka-teki jika tetikus adalah, sebenarnya, yang ditekan oleh manusia berinteraksi dengan program anda. Yang ini sedikit lebih abstrak, tetapi kedua-dua kotak putih hanya untuk nombor. Jadi, anda boleh melakukan perkara-perkara seperti ini adalah nombor kurang daripada yang lain? Dan jika demikian, calar akan berkelakuan salah satu cara atau yang lain. Yang ini lebih sedikit grafik. Ia jika bidadari, jika kucing itu, untuk contoh, sebenarnya menyentuh penunjuk tetikus. Jadi, jika anak panah sedikit berlegar lebih kucing, maka ini sekeping teka-teki yang akan menilai dengan benar. Ia akan menjadi kenyataan, di mana, jika anda menggunakan ungkapan Boolean ini, seperti yang kita akan melihat dalam seketika, di cawangan, anda boleh sama ada melakukan ini, atau anda boleh berbuat demikian, sama seperti kita mempunyai keadaan yang diperiksa, ada seorang lagi lalu dalam bilik? Jika demikian, tambah satu. Jika tidak, jangan bimbang lagi. Jadi ungkapan Boolean juga boleh dan bersama-sama atau ed-ed atau bersama-sama. Jadi, anda boleh menggabungkan ungkapan Boolean dan mengatakan ini dan ini mesti benar bagi segala-galanya untuk menjadi kenyataan. Dan di sini adalah contoh sebuah dunia yang lebih nyata. Jika anda telah menggunakan CS50 Kursus untuk melakukan kursus membeli-belah, kotak-kotak cek sana, di mana jika anda memeriksa kotak yang seterusnya kursus, yang akan berkata, ya, hanya menunjukkan saya kursus yang nilai Q ialah 4.5 atau lebih tinggi. Jika anda tanda ia, tidak, tidak bimbang tentang itu. Atau begitu juga, di sebelah kanan, tidak Adakah Konflik Dengan Kursus saya Mengambil, itu sama ada benar atau palsu. Ia hanya satu ungkapan Boolean. Jadi semua masa ini apabila anda telah menggunakan laman web dengan kotak cek, anda hanya menogol bersamaan Boolean ungkapan di dalam dan luar. Jadi, dalam bentuk apa yang anda gunakan ini? Nah, dalam Awal, kita akan melihat dalam seketika bahawa terdapat syarat-syarat yang kelihatan seperti ini. Dan itulah jenis wajar kerana banyak seperti dalam kod pseudo, kita tersusun jenis kepingan teka-teki berbentuk-U, bermakna bahawa di dalam apa-apa yang U akan melaksanakan, atau tidak, bergantung di mana ia adalah. Jadi, jika ungkapan Boolean, maka apa yang ada di dalamnya akan mendapat dilaksanakan. Sementara itu, terdapat satu jika / lain blok. Jadi jika anda mahu satu cabang yang berlaku ini cara atau itu, Scratch memberikan kita itu. Dan dengan logik ini, sekarang, walaupun yang sekeping teka-teki adalah jelas terlalu kecil baji untuk sesuatu yang lain di dalamnya, kepingan teka-teki awal, mereka hanya akan berkembang. Apabila anda seret dan lepaskan ke atas sesuatu, ia hanya akan berkembang untuk memenuhi apa sahaja yang anda cuba lakukan. Jadi kita boleh mengambil dua perkara-perkara ini dan membuat garpu cara tiga di jalan itu bahawa anda sama ada melakukan ini atau itu, atau perkara ini lain hanya dengan bersarang mereka dengan cara itu. Sudah tentu, jika anda melakukannya juga banyak, ia mula mendapat hodoh. Tetapi pada ketika itu, anda sebenarnya mungkin tidak pengaturcaraan dengan baik. Dan sebagainya yang akan berulang Tema juga bahawa gaya. Betapa manakah sebenarnya format kod anda? Atau bagaimana anda merekabentuk kod anda? Tetapi lebih kepada yang di masa depan. Dan sekarang kita mempunyai gelung. Terdapat gelung selama-lamanya baik di Scratch yang bermaksud bahawa - adakah apa yang di dalam ini lagi, dan sekali lagi, dan lagi. Anda boleh menjadi lebih konkrit dan berkata, melakukan perkara yang berikut 10 kali. Anda juga boleh menggunakan pembolehubah. Anda boleh datang dengan mana-mana nama dalam bahawa sedikit jatuh bawah dan berkata, memberi saya ubah dipanggil n dan menetapkan ia sama dengan beberapa nilai. Dan kemudian anda boleh mempunyai fungsi. Tetapi yang lebih kepada orang-orang dalam hanya seketika. Izinkan saya kembali kepada saya Menggaru muka. Dan biarlah saya pergi ke hadapan masa ini. Dan mari kita pergi ke hadapan dan membuka, katakan, contoh dari - itulah yang lebih menarik. Biar saya pergi ke hadapan, dan, sebenarnya, biarlah saya hanya membuat sendiri. Saya tidak perlu untuk membuka satu ini. Biar saya pergi ke Fail, New. Saya akan pergi ke Acara. Saya akan pergi ke apabila bendera hijau klik, dan saya akan pergi ke Bunyi. Dan saya akan untuk drag dan drop ini sekeping teka-teki, bermain meow bunyi. Ia selak bersama-sama. Dan kini, jika saya klik bendera hijau - [SOUND MEOW] DAVID MALAN: Disanjung. OK, jadi sekarang mari kita buat sesuatu yang sedikit lebih logik semata-mata untuk menunjukkan bahawa kita boleh, buat masa sekarang. Saya akan unlatch ini dari lelaki itu. Saya akan pergi ke Control. Dan saya akan merebut syarat. Jadi, jika sesuatu itu. Itulah bagaimana ia kelihatan di sana. Jadi saya memerlukan ungkapan Boolean. Dan biarlah saya pergi ke hadapan dan berkata, biarlah saya pergi ke Operator. Saya akan melakukan sesuatu yang sedikit mathy, hanya untuk tendangan. Saya akan pergi di sini dan berkata, jika sesuatu yang tidak kurang daripada sesuatu yang lain, pergi ke hadapan dan melakukan sesuatu. Jadi sekarang, anda tahu apa, blok rawak. Jadi melihat bagaimana, jika saya berlegar atas ini perkara di sini, yang akan snap di sana. Jadi sekarang, notis, saya mula melakukan sesuatu yang sudah lebih logik menarik. Jika nombor rawak antara 1 dan 10 adalah kurang daripada, katakan enam. Jika saya memilih enam, yang pada asasnya cara, lakukan perkara berikut dengan 50% kebarangkalian. Ia seperti Melibas duit syiling. Sekarang, saya boleh melakukan sesuatu yang bersyarat. Dan sesuatu yang saya akan lakukan adalah bermain bunyi. Jadi sekarang, apabila saya klik pada skrin bendera, ia seperti melambung duit syiling. [SOUND MEOW] DAVID MALAN: Ia adalah kepala atau barang kecil di sana. Mari kita buat sekali lagi. [SOUND MEOW] DAVID MALAN: Heads lagi. [SOUND MEOW] DAVID MALAN: Heads lagi. Phew, OK. Ekor masa itu. Jadi 50% daripada masa itu, jika kita melakukan ini panjang tak terhingga, kita akan mendapat 50% meows dan 50% senyap. Jadi di sana, hanya sebuah bangunan asas blok yang membolehkan kita berbuat demikian. Tetapi ini adalah jenis membosankan bahawa saya mempunyai untuk terus klik butang itu. Jadi mari kita hanya seret dan membuang semua orang dari sini. Jika anda mengheret mereka ke tengah-tengah, mereka hanya akan padam sendiri. Biar saya pergi untuk mengawal. Biar saya pergi untuk selama-lamanya. Dan kali ini, saya akan melakukan sesuatu minorly menjengkelkan. [Ketawa] DAVID MALAN: Dan biarlah saya pergi hadapan dan melakukan kawalan. Tunggu kedua, supaya ia tidak terlalu parutan. [SOUND MEOW] DAVID MALAN: Itu bukan semula jadi. OK. [SOUND MEOW] DAVID MALAN: Dan notis apa yang, baik kira-kira Awal, bagi mereka yang mempunyai pengalaman programing, anda tidak perlu untuk memulakan dan menghentikan. Anda tidak perlu untuk menyusun. Anda hanya mengubahnya, dan program akan menyesuaikan diri secara dinamik. Jadi ini semakin sedikit menarik. Tetapi mari kita mengambil satu langkah ke hadapan. Biar saya pergi ke hadapan dan mendapatkan menghapuskan program itu. [SOUND MEOW] DAVID MALAN: Itulah apa yang kita akan memanggil bug dalam Scratch. Beliau tidak perlu menyimpan membuat bunyi itu. Jadi kita kita akan beritahu dia untuk berhenti. Baiklah, jadi sekarang saya akan pergi ke - Saya akan memberitahu MIT tahu. Kami akan pergi ke sini untuk Selama-lamanya. Dan sekarang, saya mahu melakukan sesuatu lagi dan lagi. Saya akan pergi ke Control. Dan mari kita lihat, saya akan mengheret jika saya keadaan di sana. Jadi sekarang notis logik. Apabila bendera hijau ditekan, melakukan sesuatu yang selama-lamanya, tetapi hanya berbuat demikian sesuatu jika perkara ini lain benar. Saya akan pergi ke, mari kita berkata, sensing. Dan saya akan pergi ke hadapan dan memilih menyentuh dan jatuh di sana. Itulah ungkapan Boolean. Dan kini, notis, kejatuhan ini menu, terdapat nilai-nilai yang telah ditetapkan. Jadi, saya boleh berkata, yang anda menyentuh tepi skrin? Atau adakah anda menyentuh penunjuk tetikus, anak panah pada skrin? Jadi saya akan berbuat demikian. Dan jika demikian, maka saya akan pergi hadapan dan bermain meow bunyi. Jadi sekarang saya jenis mempunyai permulaan permainan - permainan comel. [SOUND MEOW] DAVID MALAN: OK, yang comel, permainan kereta. Biar saya tunggu, katakan, salah satu kedua di sana. Sekarang bermain lagi, dengan mengklik bendera hijau. [SOUND MEOW] DAVID MALAN: Jadi sekarang ia seperti hastakarya kucing. [SOUND MEOW] DAVID MALAN: Baiklah, sekarang ini yang saya tidak membuat terlebih dahulu. Sangat lewat, ia mendapat jenis mudah untuk melakukan perkara-perkara bodoh. Jadi biarlah saya pergi di sini. Katakan, yang Binatang Kucing. Mari kita kini dibuka Jangan Binatang Kucing. Sekarang, jika kita bermain satu ini, anda boleh meneka, jika anda melihat skrin - [SOUND MEOW] DAVID MALAN: Sekarang, jika saya haiwan kucing [Roar LION'S] DAVID MALAN: Jadi sebenarnya tidak haiwan kucing dalam kes itu. Jadi sekarang kita hanya perlu satu contoh cawangan yang berlaku dalam dua arah. Sekarang saya pergi ke hadapan dan membuka satu lagi di sini. Yang ini, juga, antara sumber kami fail kod untuk hari itu. Jadi biarlah saya kembali kepada saya Source direktori dan pergi ke, mari kita memilih lelaki ini di sini dan melihat apa yang berbeza. Wow, semua hak, jadi sekarang ia semakin sedikit lebih kompleks. Dan sebelum kita melihat apa yang lelaki ini tidak, mari kita cuba untuk membuat kesimpulan, dari program di sebelah kanan. Dan kini calar jelas membolehkan kami mempunyai beberapa skrip, pelbagai program-program yang berkaitan dengan salah satu bidadari, dengan satu watak, dan, nampaknya, kedua-dua mereka akan berjalan di lockstep. Kerana kedua-dua program ini bermula dengan apabila bendera hijau klik, ini adalah membayangkan pada topik yang lebih maju, dengan yang sebahagian daripada anda mungkin biasa, dikenali sebagai threading, atau multi-threading. Rupa-rupanya, cerita panjang pendek, komputer hari ini pada dasarnya boleh melakukan pelbagai perkara pada satu masa. Atau mereka boleh melakukan satu perkara pada satu masa supaya cepat yang anda tidak perasan yang ia sebenarnya melakukan satu perkara pada satu masa. Tetapi untuk sekarang, mari kita andaikan bahawa kedua-dua program-program ini akan melaksanakan di masa yang sama. Dan notis, kedua-dua daripada mereka mempunyai selama-lamanya teka-teki keping. Jadi mereka berdua akan terus berjalan sehingga saya memukul tanda berhenti merah. Jadi apa yang mereka akan lakukan? Pada sebelah kiri, saya nampaknya mengisytiharkan pembolehubah yang dipanggil disenyapkan. Jadi saya tidak memanggilnya sesuatu seperti membosankan seperti N. saya dipanggil ia disenyapkan ini masa untuk menyampaikan makna. Saya menetapkan ia sama dengan sifar. Mari kita berfikir bahawa sebagai palsu, atau mari kita berfikir bahawa sebagai palsu. Sekarang, selama-lamanya melakukan yang berikut. Jika bar ruang papan kekunci ini ditekan, maka jika disenyapkan sama dengan sifar, kemudian menukar disenyapkan kepada satu sama. Yang lain, yang ditetapkan disenyapkan kepada sifar. Jadi secara logiknya, walaupun itu adalah satu keseluruhan sekumpulan keping teka-teki itu hanya berkata, apabila saya terkena palang Angkasa, apa yang perlu saya lakukan untuk berubah-ubah dipanggil disenyapkan? Perubahan dari satu kepada sifar, atau sifar kepada satu. Itu sahaja. Jadi ia seperti mengubah suis lampu hidup atau mati dan mengingati, dengan berubah-ubah, yang saya lakukan itu. Sementara itu, pada sebelah kanan, dalam segi orang biasa itu, apa tujuan skrip di sebelah kanan? PELAJAR: Untuk memainkan bunyi singa laut. DAVID MALAN: Untuk bermain Sea Lion bunyi, jika beliau bukan disenyapkan, oleh sifat berubah-ubah itu. Jadi, kita berkongsi negara, jadi untuk bercakap, berkongsi maklumat di kedua-dua skrip kerana, melihat di sini, kami selama-lamanya melakukan yang berikut. Jika disenyapkan adalah sifar, jadi jika ia tidak disenyapkan - jika disenyapkan adalah palsu, kemudian memainkan Lion ini bunyi Sea. Dan berfikir kepada diri sendiri, hi, hi, hi, untuk dua saat, tunggu sebentar, dan kemudian lihat lagi. Jadi, jika kita pergi sekarang di sini ke kiri, di mana lelaki ini adalah, dan tekan Bendera hijau, [SEA LION BUNYI] DAVID MALAN: Pada peringkat manakah ini dapat benar-benar menjengkelkan? Kerana ini hanya akan pergi selama-lamanya. Jadi kadang-kadang, gelung tak terhingga, jadi untuk bercakap, adalah sengaja. Tetapi dalam kes ini, dengan seberapa segera seperti yang saya memukul bar ruang, dia berhenti. Kini program itu tidak berhenti. Ia masih berjalan dalam gelung. Tetapi jika saya mendapat bar ruang lagi - [SEA LION BUNYI] DAVID MALAN: Dia akan memilih up di mana dia berhenti. Jadi ada satu cara untuk kita melakukan sesuatu lagi dan lagi tetapi, yang masa, hanya bersyarat. Nah, sementara kita dalam urat ini menjalankan perkara lagi dan lagi, izinkan saya pergi ke satu lagi contoh di sini. Yang ini kita akan memanggil mengira biri-biri. Dan notis apa yang lelaki ini tidak. Ini sebenarnya lebih sedikit seperti pseudokod kami bermain dengan pada Rabu, di mana beliau menyatakan beberapa kaunter, memikirkan ia adalah seperti N lagi, untuk sifar, beliau selama-lamanya tidak berikut. Beliau berkata, nilai kaunter untuk satu kedua, menunggu kedua, dan kemudian perubahan kaunter demi satu. Dan dalam konteks ini, yang hanya bermakna kenaikan itu. Jadi dia menambah satu kepadanya. Jadi, ini adalah benar-benar - ia tidak cukup apa yang kita fikirkan sebagai mengira biri-biri. Ia adalah kambing biri-biri yang melakukan pengiraan, selama-lamanya, dari sifar. Jadi kita boleh melakukan perkara yang sama di sana, secara logik. Tetapi sekarang mari kita cuba untuk membersihkan beberapa perkara. Biar saya pergi ke hadapan kini menjadi mudah contoh di mana kucing kita hanya akan mula batuk. Baiklah, jadi di sini kita mempunyai batuk 0 - saintis komputer bermula mengira dari 0. Jadi kucing ini hanya akan batuk tiga kali. Dan di sini adalah cara saya telah melaksanakan itu. Apabila bendera hijau diklik, batuk, tunggu, batuk, tunggu, batuk, tunggu. Dan saya melakukan ini hanya dengan mengheret dan menjatuhkan keping teka-teki. Atau jika anda mula bermain-main dengan Awal, anda akan melihat anda boleh sebenarnya salinan keping supaya anda boleh lakukan perkara yang lebih cepat tanpa mengheret dan menjatuhkan nauseum iklan. Tetapi kita tidak berada di jalan yang terbaik di sini. Kerana bagaimana saya membuat dia batuk kali keempat? Well, saya boleh menyelesaikan daripada pergi di sini. Saya boleh salinan dan kemudian tampal ini di sana. Bagaimana saya membuat dia batuk masa yang kelima? Nah, salin dan tampal lagi. Atau seret drop lagi. Dan sangat cepat, program ini bermula untuk benar-benar, benar-benar diperlukan, benar-benar panjang, tetapi benar-benar menarik. Tetapi ada satu cara untuk membersihkan ini. Apakah cara yang jelas untuk membersihkan ini? OK, jadi kita boleh benar-benar benar-benar pergi keluar dan apabila anda menekan ruang bar, telah dia batuk. Tetapi jika saya hanya mahu melakukan sesuatu berulang-ulang, ingat bahawa kita mempunyai beberapa kawalan membina. Biar saya keluar ini daripada cara, pergi di bawah kawalan. Biar saya hanya melakukan berulang, berkata, tiga kali. Dan sekarang mari saya mencuri ini keping teka-teki. Biar saya snap ini di sini. Biar saya membuang ini jauh sama sekali. Dan sekarang, saya mempunyai yang lebih baik program yang direka. Mengapa? Jika saya ingin menukar berapa kali kucing ini batuk, semua saya perlu lakukan adalah menukar satu berubah-ubah, atau salah satu nilai, lebih daripada tiga, empat, atau lima atau enam. Atau saya boleh melakukan sesuatu yang bersyarat, malah, dengan ruang menghalang jika saya mahu. Jadi ini adalah satu prinsip yang umum. Sebaik sahaja anda mula menyalin dan menampal kod, sama ada ia adalah di Awal, atau dalam C, anda melakukan sesuatu salah, yang paling mungkin. Atau sekurang-kurangnya, sebaik sahaja anda telah melebihi beberapa nombor munasabah salinan dan Pes, anda mungkin melakukan sesuatu yang salah. Tetapi anda tahu apa? Saya tidak benar-benar seperti ini. Ini bukan reka bentuk yang bersih. Saya ingin terdapat sekeping teka-teki yang dipanggil batuk kerana kemudian saya tidak akan perlu melaksanakan ini diri saya sendiri, cara fesyen lama, dengan telah berkata, dan tunggu - bagaimana jika mereka hanya sekeping teka-teki batuk. Well, saya sebenarnya boleh melakukannya. Biar saya pergi di bawah lebih blok, klik Buat Block, dan kini saya mendapat ini tingkap di sini. Saya akan memanggil batuk perkara ini. Saya akan teruskan dan klik OK. Dan kini notis, saya mendapat permulaan baru sekeping itu melengkung di atas. Dan apa yang saya akan lakukan dengan ini, saya akan hanya mencuri blok-blok. Saya akan meletakkan mereka di sini. Dan kini, dengan ketiga-tiga keping, saya telah melaksanakan apa yang saya akan memanggil fungsi atau prosedur, atau sebahagian daripada anda mungkin tahu ia sebagai kaedah. Sedikit perbezaan antara perkataan. Tetapi untuk sekarang, mari kita hanya memanggil ini fungsi. Ini adalah hanya sekeping teka-teki baru. Kini ia dilaksanakan seperti ini. Tetapi melihat bahawa Scratch telah memberikan kita perwakilan fizikal bahawa keseluruhan menghalang di sini. Jadi sekarang, saya hanya boleh tarik ini di sini, berkata, mengulangi tiga kali, dan apa yang akan berlaku sekarang, apabila saya bermain skrip ini, hanya satu program sedang berjalan pada satu masa. Terdapat hanya satu apabila bendera hijau diklik. Tetapi itu blok ungu dipanggil batuk adalah berkesan memberitahu Awal, setiap kali anda melihat bahawa sekeping teka-teki, sebenarnya melaksanakan langkah-langkah yang saya berlaku untuk melaksanakan secara manual. Jadi itulah jenis kemas. Tetapi sekarang, katakan bahawa saya mengambil keputusan, saya tidak mahu kucing ini hanya untuk batuk. Saya mahu dia dapat bersin juga. Nah, bagaimana kita boleh pergi kira-kira melaksanakan bersin? Well, saya boleh cukup banyak melakukan perkara yang sama. Saya boleh membuat blok lain. Saya boleh memanggil bersin ini, klik OK. Kemudian, di sini saya boleh sebenarnya telah, izinkan saya salinan ini - dan ada di mana anda perlu berasa seperti anda mungkin tidak melakukan sesuatu dalam cara yang terbaik. Saya boleh mengatakan sesuatu seperti, achoo, untuk satu kedua. Tunggu kedua. Sekarang saya mempunyai satu blok baru yang dikenali sebagai bersin. Dan sesungguhnya, ada ia. Tetapi ini juga perlu mula rasa - mungkin tidak pada minggu pertama kelas, tetapi oleh kedua - hanya yang berlebihan sedikit. Jelas sekali, terdapat beberapa pertindihan di sini. Jadi biarlah saya mencadangkan, sebaliknya, yang kita menghalusi takrif ini seperti berikut. Biar saya pergi ke menu fail saya. Saya tidak akan menyelamatkan versi ini. Saya akan pergi ke salah satu daripada fail premade saya di sini. Dan saya akan pergi ke hadapan dan membuka batuk 2. Whoops yang batuk 2. Biar saya pergi ke hadapan dan membuka batuk 3, yang adalah direktori sumber ini. Batuk 3 dan notis - oh, saya memberitahu cerita dalam perintah itu salah. Biar saya pulih daripada cerita ini. Cerita yang saya maksudkan untuk memberitahu berakhir dengan batuk 4 - ada ia. Jadi apa jika saya, sebaliknya, menentukan sekeping teka-teki yang lebih besar yang dikenali sebagai menentukan, berkata-kata n kali. Bersin hanya, nampaknya, di Awal, achoo. Jadi kita menyatakan ia sebagai satu perkataan, hanya kerana itulah kekangan program. Dan batuk adalah [batuk], tetapi batuk, C-O-U-G-H. Jadi itu hanya dua perkataan yang berbeza lakukan, pada dasarnya, perkara yang sama. Jadi saya benar-benar boleh membuat blok baru seperti ini. Saya tidak menggunakan pilihan menu ini sebelum ini. Tetapi apabila anda klik Buat Block, anda boleh memilih beberapa pilihan. Dan anda boleh mengatakan bahawa blok ini sebenarnya mengambil beberapa input, sebaliknya dikenali sebagai hujah, atau parameter, jadi bahawa anda boleh mengubah suai tingkah laku blok anda. Jadi apa yang saya lakukan masa lalu adalah Saya dipanggil blok ini Katakanlah. Dan kemudian saya berkata, ia mengambil masa input tali. Dan kini melihat, secara lalai, ia berkata rentetan 1. Tali adalah hanya satu perkataan, atau frasa, untuk tujuan kita. Tetapi saya hanya akan meletakkan beberapa teks pemegang tempat di sana, hanya seperti dalam laman web, apabila anda melihat nama pengguna, atau kata laluan, dan kemudian ia hilang apabila anda mula menaip. Itu semua yang. Dan sekarang saya akan menambah input nombor. Dan saya akan memanggil n ini - tetapi yang agak sewenang-wenangnya. Dan kemudian hanya label, hanya untuk membuat blok ini lebih sedikit diri maksudnya - kali, itulah yang saya lakukan. Dan keputusan akhir adalah bahawa saya mendapat blok yang kelihatan seperti ini. Dan kini notis, saya menggunakan blok berulang. Tetapi bukannya keras kod tiga, saya mengheret dan menjatuhkan n di sana jadi saya boleh parametrize fungsi. Saya boleh membuat fungsi ini melakukan sesuatu nombor yang berbeza kali berdasarkan nilai itu. Dan notis, berkata, ini adalah apa yang saya lakukan di sini, jika saya tarik perkataan, saya boleh katakan tidak perkataan berkod keras, tetapi apa diluluskan dalam untuk yang kedua. Sementara itu, bagaimana saya-melaksanakan semula batuk? Saya bukannya menentukan batuk sebagai batuk berkata n kali. Jadi dalam jangka pendek, saya akan melalui ini dengan cepat, tetapi idea asas adalah sebaik sahaja kerana anda mula melihat dalam program anda itu, tunggu satu minit, saya telah melakukan sesuatu yang agak seperti ini sebelum ini, boleh saya beberapa faktor biasa fungsi? Bolehkah saya mengurai apa yang saya lakukan ke dalam beberapa idea asas? Itulah apa yang kami lakukan di sini. Dan saya telah disusun-perkara ini, visual, di atas satu sama lain kerana ia adalah bukti bahawa idea bermula dengan binari, pergi ke ASCII, membuat program grafik, jenis penerapan idea-idea yang semakin kompleks pada atas satu sama lain. Idea yang sama di sini. Saya bermula dari scratch, melaksana batuk, maka batuk sedar adalah benar-benar hanya berkata sesuatu. Jadi biarlah saya bukannya melaksanakan tanggapan untuk mengatakan sesuatu. Dan di atas itu, saya boleh melaksanakan achoo atau batuk? Dan yang boleh kita lakukan lebih seperti varian masih. Jadi dari prinsip asas ini, kita boleh mula melakukan semakin program kompleks. Izinkan saya membuka satu ini. Kami benar-benar boleh mempunyai pelbagai sprites berinteraksi pada skrin sekali gus. Jika saya pergi ke dalam direktori sumber saya dan merebut salah satu Threads dipanggil, ingat bahawa thread hanya benar-benar keupayaan dua skrip untuk menjalankan sebelah sampingan pada masa yang sama. Notis sekarang, mempunyai kedua-dua bidadari burung dan a sprite kucing, kedua-duanya mempunyai skrip mereka sendiri. Jadi notis, apabila saya klik kucing, saya mendapatkan ini skrip. Apabila saya klik burung, Saya mendapatkan ini skrip. Jadi setiap orang mempunyai program sendiri. Apabila saya sekarang klik bendera hijau, notis bahawa apa yang program ini tidak boleh mempunyai kucing, amat perlahan-lahan, mengejar burung. Tetapi kucing yang mempunyai kelebihan yang mempunyai telah diprogramkan dalam apa-apa cara yang tidak kira di mana burung adalah, kucing pergi ke arah dia. Kita boleh bermain permainan yang lebih cepat. Jadi, jika saya pada kucing, melihat bahawa saya menggunakan, katakan bergerak satu langkah. Mari kita dia bergerak lima langkah di satu masa, jadi lima titik pada satu masa. Biar saya klik bermain. [Roar LION'S] DAVID MALAN: Baiklah, sekarang kita boleh benar-benar memberikan kucing kelebihan. 10 langkah pada satu masa. [Roar LION'S] DAVID MALAN: Baiklah, maka dengan cepat, ia menjadi satu kelebihan yang sedikit untuk kucing. Tetapi saya akan melambai tangan saya pada beberapa butiran. Tetapi sebab yang jalan yang bermula sedikit berbeza setiap kali adalah bahawa saya melakukan sedikit rawak. Saya sebenarnya menunjuk kucing dalam arah yang berbeza berdasarkan di mana saya mahu dia mula supaya setiap kali permainan, atau animasi, adalah sedikit berbeza. Kini, izinkan saya memperkenalkan satu lain membina di sini. Jadi dalam kes ini, kami mempunyai fungsi. Ada juga akan menjadi sekeping teka-teki dikenali sebagai pelbagai, atau senarai, yang membolehkan anda untuk menyimpan pelbagai nilai dalam pembolehubah. Kami melihat benang, dan kini ada Peristiwa. Jadi di sini adalah satu peristiwa menggunakan kedua-dua lelaki di sini. Dan jika saya membuka fail yang dipanggil Events contoh dari hari ini, kita akan melihat program yang kelihatan sedikit seperti ini. Dan kini melihat lelaki ini - supaya sedar saya mempunyai biru Muppet klik - dia hanya melakukan yang berikut. Beliau tidak mempunyai salah seorang daripada mereka hijau kepingan teka-teki bendera. Beliau mempunyai apabila saya menerima peristiwa - sehingga beberapa perkataan sewenang-wenangnya. Saya hanya ditaip sekiranya ada - dia akan berkata, Polo, selama dua saat. Jadi orang-orang di antara kamu yang biasa dengan permainan ini mungkin tahu di mana ini akan. Jika sekarang saya klik pada Muppet oren, program tidak ini. Selama-lamanya, jika bar ruang keyboard ditindas, dia akan berkata, Marco, selama dua saat pada skrin. Tetapi dia juga akan menggunakan ini penjaga menghalang dikenali sebagai siaran. Dia akan disiarkan quote unquote, "peristiwa." Sementara itu, lelaki itu biru, ingat, adalah mendengar untuk unquote quote, "peristiwa." Jadi entah bagaimana, sekarang, kita boleh mempunyai dua sprites berinteraksi. Dan apabila kita dapat pengaturcaraan web, kemudian dalam jangka masa, begitu juga akan ini berfaedah untuk mempunyai laman web anda melakukan sesuatu sebagai tindak balas kepada, Contohnya, satu klik keyboard. Jadi biarlah saya pergi ke hadapan dan memukul bar ruang. Orange lelaki kata Marco. Blue lelaki berkata Polo. Jika saya melakukannya lelaki lagi oren kata Marco, biru lelaki berkata polo. Jadi mari kita mengambil langkah satu lagi. Kali ini, kami akan pergi, mungkin, hanya beberapa minit di sini. Adakah kita mempunyai - lampu meja, datang ke atas ke bawah. Anda betul-betul di akhir. OK, anda berdua boleh datang. Kami mempunyai lampu meja untuk semua orang. Datang. Saya tidak tahu jika kita boleh menyimpan lelucon ini tidak masuk akal sehingga semua semester, walaupun. Baiklah, datang ke bawah. Dan dalam masa yang sama, kita mempunyai berikutan contoh untuk tarik sehingga, hanya untuk mempercepatkan perkara ini, seperti yang kita mempunyai manifestasi daripada yang lain pendahulu anda menggunakan blok bangunan asas yang sama. Apa nama anda? JOHN: John. DAVID MALAN: John. Nice untuk saya anda. Dan? SETZ: Setz. DAVID MALAN: Setz, baik kepada saya anda. John, jika anda ingin datang up pertama, ini adalah tua permainan sekolah dinamakan Frogger. Anda menggunakan keyboard untuk ini juga. Dan matlamatnya adalah untuk mendapatkan di seluruh jalan dan air. [Frogger MUSIC dan memainkan BUNYI] DAVID MALAN: Saya minta maaf, tiada lampu meja untuk anda hari ini. Baiklah, Setz, akan anda suka untuk datang ke atas? Baiklah, mari kita buat sekali lagi. SETZ: Adakah saya gunakan anak panah? DAVID MALAN: Hanya kekunci anak panah. Atas, bawah, kiri, kanan. [Frogger MUSIC dan memainkan BUNYI] DAVID MALAN: Kami akan memanggil mereka hadiah saguhati hari ini, kemudian, sangat baik dilakukan. Di sini, untuk anda berdua, John dan Setz. Tahniah, hak semua. Jadi sekali lagi, kerana permainan ini bermain, berfikir tentang apa yang sedang berlaku? Satu, ada jelas banyak gerakan. Tetapi kita telah melihat bagaimana dengan kucing dan contoh burung, bagaimana anda boleh membuat ilusi gerak dengan hanya bergerak beberapa Bilangan piksel lagi dan lagi. Dan jika anda mempunyai satu blok selama-lamanya, anda boleh mempunyai ini kereta melakukan ini selama-lamanya. Kami mempunyai keupayaan untuk mempunyai beberapa rawak. Jadi permainan ini tidak perlu sama setiap kali. Mereka balak, orang-orang kereta, boleh bermula pada masa sedikit berbeza supaya Permainan itu sendiri adalah lebih menarik dengan setiap permainan. Dan Sementara itu, kita telah melihat keupayaan untuk mendengar bar ruang. Tetapi jelas, di Awal, anda juga boleh mendengar atas, bawah, kiri, kanan, dan benar-benar mana-mana kekunci pada papan kekunci. Dan anda juga boleh melakukan beberapa perkara lain. Biar saya pergi ke hadapan dan kembali kepada versi web. Biar saya pergi ke dalam koleksi kami contoh di sini. Dan di bawah Studio saya, video yang adalah, pada asasnya, folder pada scratch.mit.edu. Kami mempunyai versi web semua projek-projek ini. Dan mari kita lihat jika saya boleh mendapatkan saya komputer untuk bekerja di sini. Ini ditulis oleh salah seorang daripada rakan-rakan kami di MIT, yang dipanggil Pindah Butterfly. Dan apabila ini membuka, ini adalah akan sebenarnya menggunakan lebih perkakasan komputer saya. Awal yang berlaku yang akan dilaksanakan dengan Flash. Flash boleh bercakap dengan webcam anda, jika anda mempunyai satu. Jadi jika saya pergi ke hadapan dan skrin penuh ini di sini, klik bendera hijau, notis bahawa mesej keselamatan Flash ini mengatakan, adakah anda mahu membenarkan untuk menggunakan webcam? Biasanya, anda perlu mungkin mengatakan Halang. Tetapi dalam kes ini, kita akan mengatakan membenarkan. Kemudian saya akan memberitahu Chrome untuk membolehkan ini juga. Dan kini, dalam hanya seketika, anda lihat saya, Ya, saya. Dan jika tangan saya naik - Saya telah mendapat untuk tidak bergerak saya kepala pada masa yang sama. Terdapat juga satu gambaran yang pada skrin. Ayuh, di sana kami pergi - anda boleh bergerak pada skrin kerana ada juga kepingan teka-teki - oh, anda tahu apa itu, ia adalah kerana anda juga melihat skrin projektor di belakang saya. Jadi kita mempunyai sedikit terbatas perkara yang berlaku di sana. Baiklah, jadi saya akan bermain di sini. Ada kita pergi. Jadi ada juga sekeping teka-teki yang berkata, apabila anda melihat pergerakan di bawah salah satu sprites, anda boleh mempunyai ia pergi atas, bawah, kiri, kanan atau sebagainya. Oleh itu, kita mempunyai sedikit realiti maya berlaku di sini juga, semua dalam batasan pelayar saya, hanya di sini menggunakan webcam saya. Jadi apa yang kemudian di kaki langit. Set Masalah pertama, kerana anda akan melihat, atau laman web akan pergi ke dalam talian kemudian malam ini pada cs50.net, agak banyak akan menjadi terbuka berakhir. Dan melaksanakan projek Scratch menarik minat anda, permainan, sebuah interaksi, sesuatu seni, dan mencabar diri anda untuk menggunakan mana-mana nombor ini keping teka-teki. Dan ia boleh menjadi interaktif dengan cara ini. Atau ia boleh menjadi sesuatu yang lebih sengaja dibuat untuk memberitahu cerita. Dan sesungguhnya, yang di mana kita akan berakhir di luar hari ini, dengan contoh terakhir. Biar saya pergi ke Scratch tempatan. Biar saya pergi ke hadapan dan terbuka ini, dan bermain lepas satu program yang ditulis oleh seorang orang terdahulu kamu, iaitu bahawa salah satu di sini. Baik, meningkatkan kelantangan untuk yang satu ini. [Bermain muzik] Pencerita: Pada CS50 seterusnya, David menjemput sukarelawan di atas pentas. DAVID MALAN: Untuk demonstrasi ini, kita akan memerlukan satu sukarela. Adakah anda ingin datang ke? Apa nama anda? Beralih.