[Powered by Google Translate] [ROCK MUSIC] [MUSIC - "HAPPY BERSAMA" kura-kura] DAVID Malan: Hari ini, kita mulai eksplorasi kita tentang dasar-dasar ilmu komputer dan pengantar kami, Sekarang, dengan seni pemrograman, dimana itu adalah salah satu contoh. Namun dalam pembuluh darah yang sama dari pemecahan masalah, tahu bahwa Hari Puzzle tradisional CS50 adalah besok. Jika Anda belum RSVPed untuk acara ini, Anda bisa pergi ke cs50.net/rsvp. Anda dapat membawa tim dari dua atau tiga atau empat. Anda akan ditantang dengan masalah seperti yang Anda lihat di sana pada awalnya. Semua masalah baru tahun ini jika Anda mengambil bagian tahun lalu, dan Anda akan memiliki kesempatan kemudian untuk memenangkan hadiah luar biasa. Di antara mereka, Wii dan beberapa hadiah sertifikat dan seperti, sementara semua bergaul dengan CS50 siswa dan teman sekelas dan pizza dan Facebook. Jadi lebih pada besok jika Anda ingin. Ini kemudian adalah CS50, bagi Anda bergabung dengan kami untuk pertama kali. Dan tahu bahwa kursus ini terutama ditentukan untuk mendapatkan Anda melalui kursus ini berakhir akhir, di mana titik Anda akan memiliki tidak hanya pemahaman ini dasar-dasar ilmu komputer, tetapi Anda akan memiliki ini set keterampilan yang sangat praktis yang Anda kemudian dapat mengambil kembali ke departemen Anda sendiri, apakah itu ilmu teknik, terapan matematika, ilmu-ilmu fisik, alam ilmu pengetahuan, atau sejenisnya. Memang, apa yang begitu menarik tentang ilmu komputer ini hari adalah bahwa hal itu hanya begitu berlaku untuk segala macam bidang. Dan meskipun saat ini, kita hanya akan menggores permukaan sangat tradisional bahasa pemrograman yang dikenal sebagai C, kita akan bukannya melihat sesuatu yang disebut Scratch, sesuatu dengan yang cerita cinta kue dilaksanakan oleh salah satu Anda pendahulu dalam beberapa tahun terakhir, untuk bercerita, untuk membuat game, untuk menciptakan seni interaktif, dan benar-benar mulai untuk membungkus kami pikiran sekitar beberapa konstruksi dasar yang mendasari pemrograman tetapi dalam konteks, seperti yang akan Anda lihat, itu apalagi menakutkan, itu jauh lebih sedikit misterius, daripada Anda akan melihat tak lama. Dan menyadari juga, bagi Anda hanya bergabung dengan kami ini semester, ungkapan yang kita berakhir kuliah Rabu, itu tidak begitu penting di mana Anda berakhir relatif terhadap Anda teman sekelas di kelas ini, tetapi di mana Anda, pada akhir semester pada minggu 11, akhirnya relatif terhadap diri Anda tepat hari ini. Jadi tanpa basa-basi lagi, ini juga diperhatikan bahwa mereka yang kurang nyaman, mereka di suatu tempat di antara, yang juga, dengan desain dari kursus ini, tidak dirugikan apapun vis-a-vis yang lebih nyaman datang ke kelas ini. Seperti yang Anda akan melihat selama beberapa minggu mendatang, kami memiliki berbagai lagu untuk latar belakang yang berbeda kembali, bagian untuk mereka kurang nyaman, lebih nyaman, mereka di suatu tempat di antara. Seperti yang Anda akan melihat akhir pekan ini dan pekan depan, dua versi masalah paling set di kedua edisi standar dan hacker sehingga bahwa Anda semua bisa memilih sendiri menyusuri jalan setapak dengan yang Anda paling nyaman. Jadi hari ini, kita menyelam ke dalam program ini bahasa disebut Scratch. Ini adalah bahasa pemrograman grafis, dan belum memiliki sama fitur dari beberapa bahasa tingkat yang lebih tinggi kita akan mengeksplorasi kemudian dalam semester, di antara mereka dan C JavaScript dan PHP. Tapi itu akan memungkinkan kita untuk menghindari beberapa gangguan awal dari sintaks, hal-hal seperti titik koma, tanda kurung, dan rincian lain yang misterius, pada pandangan pertama, tidak hanya sama sekali intelektual menarik dan cenderung untuk mendapatkan di cara dari beberapa pemahaman mendasar. Dalam hal sekarang struktur dukungan menjelang, menyadari hal ini alat, CS50 Bahas, yang akan dihubungkan pada kursus ini Website hari ini, adalah forum diskusi online di yang Anda akan dapat mengajukan pertanyaan satu sama lain dan Staf, dan juga alat, seperti yang akan kita lihat minggu depan, yang akan kami gunakan cukup terpadu dalam Kantor jam juga. Memang, jam kerja dimulai pada hari Senin, dan terus terang, yang pertama minggu jam kantor adalah kunci cukup rendah. Saya tidak berpikir Anda akan menemukan semua yang tidak dapat diakses Scratch. Ini agak cukup jelas, seperti yang akan kita lihat, dan jadi apa kita akan menggunakannya untuk hari ini adalah untuk mengekstrak beberapa dasar ide-ide yang akan, maka, bertahan sepanjang sisa semester. Tapi mulai Senin, di 8:00 melalui 23:00 akan kantor jam di Annenberg selama liburan otak. Sectioning dua akan dimulai malam ini, jadi kadang-kadang ini akhir pekan, pergi ke cs50.net/section, dan Anda akan diminta sejumlah pertanyaan. Di antara mereka, bagaimana Anda menggambarkan Anda tingkat kenyamanan untuk hari ini? Tidak ada aturan yang keras dan cepat untuk siapa yang ember. Ini hanya semacam hal yang Anda mungkin tahu jika Anda di antara mereka yang kurang nyaman atau sebaliknya. Dan sekarang, Walkthroughs. Sejumlah masalah spesifikasi untuk minggu ini, kedua standar dan edisi hacker sama, yang online di cs50.net seperti yang sekarang. Dan Anda akan melihat bahwa pertama dari edisi, Edisi standar setiap minggu, disertai dengan sesuatu yang kita memanggil pelacakan kode, sesi dipimpin oleh salah satu rekan mengajar kursus untuk memandu Anda melalui, memberikan tips, dan membuat Anda menuruni jalan tertentu ketika datang untuk memulai set ini masalah. Jadi dengan masing-masing masalah tersebut menetapkan, jika Anda pernah ingin untuk diri sendiri di mana saya mulai, Anda mulai dengan Walkthroughs. Dan pada kenyataannya, izinkan saya untuk memperkenalkan Zamyla Chan, ini tahun mengajar rekan yang akan memimpin setiap salah satu Walkthroughs. Zamyla? [Tepuk Tangan] ZAMYLA CHAN: Oh, hi, semua orang. Nama saya Zamyla. Aku belajar teknik junior di Winthrop House. Tapi aku mencoba dan cocok sebagai program ilmu komputer banyak yang saya bisa, itulah sebabnya saya benar-benar senang bisa memimpin ini tahun penelusuran. Walkthrough, bagi saya, adalah bagian penting dari CS50 saya pengalaman. Selama walkthrough, untuk setiap set p-, kita akan pergi melalui masalah ditetapkan bersama, melihat di atas masalah, jenis membagi mereka menjadi gigitan dikelola. Aku akan memberikan tips, teknik, untuk mendapatkan melalui dan memulai. Saya berharap untuk melihat Anda semua di penelusuran. Jika Anda tidak dapat membuat secara langsung, maka silahkan melakukan lagu secara online. DAVID Malan: Sangat baik. Terima kasih, Zamyla. Jadi menyadari bahwa walkthrough, memang, pada hari Jumat sore, tapi ini sengaja dengan desain sehingga bahkan jika Anda tidak ingin menghadiri kelas pada hari Jumat sore, video akan sampai semua lebih cepat lebih akhir pekan. Jadi menyadari bahwa cs50.net akan semua ini Zamyla Walkthroughs. Dan bahwa ada tanggal hari ini dan waktu, 3:00 PM, Harberd Hall, 104. Dan beberapa rekan-rekan mengajar juga telah disiapkan beberapa komentar Anda untuk in absentia untuk memberikan sedikit Perspektif seperti apa pengalaman mereka datang ke dan akan keluar dari CS50 seperti. Jadi jika kita bisa meredupkan lampu untuk sesaat, aku memberikan beberapa staf CS50 itu. JACKSON STEINKAMP: Aku mengambil CS50 tahun lalu sebagai mahasiswa di jatuh, dan itu benar-benar meniup pikiran saya. Saya tidak pernah mengambil setiap kelas pemrograman sebelumnya, dan tidak pernah datang dengan ilmu komputer pengalaman sama sekali. Dan, saya mendengar buzz tentang kelas dan memutuskan untuk mengambilnya. JULIA MITELMAN: Itu benar-benar menyenangkan, benar-benar menarik. Saya masih, sampai hari ini - Saya baru saja melihat saya memiliki floppy disk yang David memberi kami pada hari pertama kami kuliah. Saya telah menggantungnya di dinding saya. Ini mungkin sedikit kutu buku, tapi aku menggantung di atas saya dinding selama kelas sebagai pengingat bagaimana dingin itu. TRAVIS DOWNS: Ini sangat memalukan. JACKSON STEINKAMP: Ilmu komputer adalah sesuatu yang Anda harus mencoba bahkan jika Anda tidak satu untuk ilmu-ilmu tradisional. Ini adalah pengalaman sendiri, dan CS50 akan pastikan Anda didukung baik melalui itu dengan tentara benar nya TF. ALI Nahm: aku mengambilnya sebagai mahasiswa baru, dan jadi saya membuat banyak teman-teman baru. Saya juga harus diperkenalkan ke seluruh konsentrasi dan seluruh sekolah teknik, dan jadi saya sangat merekomendasikannya dan menyambut Anda untuk keluarga CS50 kami. Yaniv Yacoby: CS50 hanya mengajarkan Anda bagaimana menggunakan alat-alat yang dapat diakses secara luas. Anda hanya perlu sebuah laptop, Anda memerlukan browser web, dan Anda perlu belajar untuk menulis beberapa kode, dan Anda benar-benar dapat membangun hal-hal rapi. KAREN XIAO: Ini hanya begitu sejuk untuk dapat membuat sesuatu dan memiliki orang-orang menggunakannya dan memiliki orang-orang melihatnya, dan itu apa yang saya benar-benar mencintai tentang hal itu. TIM McLaughlin: - rasa masyarakat, saya pikir, dalam hal ini lebih dari jalan lain saya telah diambil sejauh ini saja. Anda tidak hanya mengambil yang lain - Anda tidak mengisi persyaratan lain. Anda tidak hanya akan kuliah dan pergi ke bagian. Tapi kau melakukan banyak hal yang semua tentang pemrograman dan semua tentang teknologi, tetapi tidak benar-benar merasa seperti kelas sebagian besar waktu. DOWNS TRAVIS: Dan pada hari pertama, mereka membagi-bagikan kue, dan Saya langsung dijual. JACOB Pritt: permen gratis dan pizza. ZAMYLA CHAN: - terlepas dari tingkat minat Anda, saya pikir bahwa CS50, Anda akan bersenang-senang, dan Anda akan intelektual dirangsang. MARK GROZEN-SMITH: Selalu pesta di kelas, dan itu adalah Partai setiap malam bekerja pada p-set Anda. JACKSON STEINKAMP: Setiap kali Anda menyelesaikan satu set masalah, Anda akan merasa seperti Anda telah selesai proyek. MELISSA NIU: Itu tahun pertama, dan aku selesai belanja. Aku punya empat kelas saya siap, dan saya berada di Annenberg. Dan saya bertemu seorang teman, dan dia berkata, hey, Aku belanja kelas ini disebut CS50, dan Anda harus datang dengan saya. Akhirnya mengambil musim gugur itu, dan setelah kelas itu, saya pikir mungkin aku akan kecil di CS. Tapi di sini saya, tiga tahun kemudian, masih belajar komputer ilmu pengetahuan dan benar-benar melakukannya sebagai utama, dan aku mencintai setiap saat itu. ROB Bowden: Saya tidak tahu. ALI Nahm: Mari kita lihat. MELISSA NIU: kegilaan. SPEAKER 1: Saya merasa seperti saya akan sangat klise. Aku hanya akan mengatakan, seperti, mengagumkan. Yaniv Yacoby: Aksesibilitas. JACOB Pritt: permen gratis dan pizza. TRAVIS DOWNS: Tidak dapat menolak kelas yang tangan keluar kue. TIM McLaughlin: Energetic. VIPUL SHEKHAWAT: Penting. ROB Bowden: Biarkan saya memikirkan jawaban. Saya pikir saya punya sesuatu. Oh, Tuhan. Ya, nama saya Rob Bowden, dan ini adalah CS50. [Tepuk Tangan] DAVID Malan: Baiklah, jadi mari kita mulai melukis gambar dari arah di mana kita bisa pergi, dan mari kita memperkenalkan konsep ini di sini dikenal sebagai pseudocode. Jadi pseudocode bukanlah pemrograman bahasa tersendiri. Bukan apa-apa teknis per se, tapi itu hanya semacam umum cara mengekspresikan diri cukup tepat, cukup algorithmically, cukup prosedural, tapi tanpa harus khawatir tentang apa bahasa yang Anda mengekspresikan diri masuk Ini adalah beberapa model bahasa Inggris dan bahasa pemrograman dengan yang Anda kebetulan menjadi akrab, sehingga kami dapat mulai menulis hal semacam ini seperti yang kita pergi. Dan pada kenyataannya, Joseph, bisa saya pinjam Anda di atas panggung menjadi juru tulis di sini? Aku telah pergi ke depan di sini di muka dan lupa untuk menempatkan pada beberapa kaus kaki saat ini, dan ini akan berada di antara kita yang lebih contoh konyol. Sekarang, aku butuh kau di sini. Aku akan melakukan bagian kaus kaki. Jadi di sini kita memiliki pad awal sedikit. Ini benar-benar hanya TextEdit di Mac. Kita tidak benar-benar akan menulis sebuah program runnable, namun kami hanya akan mulai membuat sketsa berbasis pseudocode pada beberapa nasihat yang Anda berikan kepada saya di sini. Jadi di sini adalah tumpukan kaus kaki saya di rumah. Saya tidak punya kaus kaki ketika saya bangun di pagi hari, dan kami sekarang perlu menulis sebuah program, algoritma macam, dengan mana untuk mendapatkan kaus kaki di kaki saya. Dan sepanjang jalan, mari kita lihat apakah kita tersandung, atau menemukan, beberapa ide yang Anda akan harus mulai memikirkan lebih serius ketika pemrograman supaya program Anda tidak berperilaku cukup sebagaimana dimaksud. Jadi aku duduk di sini. Aku punya tumpukan saya kaus kaki. Apa hal pertama manusia wajar akan lakukan ketika tujuannya adalah untuk memakai sepasang kaus kaki? Seseorang memberi saya satu langkah, dan hanya satu langkah. Ya? HADIRIN: Bend bawah. DAVID Malan: Bend turun, Oke. Langkah dua. Langkah dua. HADIRIN: Ambil kaus kaki Anda. DAVID Malan: Pick up kaus kaki Anda. Oke, ambiguitas sangat sedikit di sini, dan ini adalah salah satu yang pertama batu sandungan bahwa kita seharusnya sengaja menemukan di sini. Ini sedikit ambigu, sehingga mengambil kaus kaki Anda. Baik, aku akan mengambil satu ini, tapi komputer, menyadari hanya dalam bit, tidak akan memiliki semacam naluri manusia untuk hanya memilih yang terdekat. Kita akan harus mulai, sebelum lama, mengekspresikan diri kita lebih tepat. Baiklah, sehingga langkah kedua adalah mengambil kaus Anda. Kami akan mengambilnya. Langkah tiga. Di bagian belakang. HADIRIN: Cari pasangan yang cocok. DAVID Malan: Menemukan pasangan yang cocok. Oke, jadi ini adalah baik. Saya harus memilih kaus kaki ini. Jadi tujuannya adalah untuk menemukan kaus kaki yang cocok, sekarang, tapi apa artinya? Sebuah wajar manusia, seperti pada hari Rabu ketika aku hanya tahu bagaimana menemukan Mike Smith dalam buku telepon, hanya jenis pergi dengan insting mereka. Tapi di sini, itu jelas ini kaus kaki di sini, tapi komputer ini tidak akan begitu naluriah. Sebuah komputer akan memiliki koleksi bit, seperti yang kita dibahas pada hari Rabu, dan mereka adalah terorganisir entah bagaimana dalam memori. Tetapi intinya adalah bahwa komputer hanya memiliki kemampuan untuk melihat hal-hal pada suatu waktu, dan pada kenyataannya, bahkan kita manusia - meskipun rasanya Aku menunduk dan perpecahan Sedetik kemudian aku tahu di mana kaus kaki adalah, otak dan mataku mungkin tidak cepat skim tersebut kaus kaki, dan kemudian terkunci pada satu pertanyaan. Jadi jika kita menjadi semakin disengaja sekarang sebagai komputer, bagaimana cara menemukan pasangan yang cocok? Nah, kita harus iterate. Kita harus mungkin loop atas kekacauan ini kaus kaki di lantai dimana saya mengatakan sesuatu seperti kaus kaki UNTUK SETIAP, mengambilnya up, DAN JIKA bentuk dan ukuran yang sama seperti yang lain, MAKA dot, dot, dot, kami akan lanjutkan ceritanya. Jadi untuk setiap kaus kaki, jadi aku mengambil satu ini. Saya cek ini sama dengan yang satu ini. Ini tidak, jadi saya mengesampingkan sisi. Lalu aku iterate lagi. Apakah ini satu sama? Tidak, itu tidak, jadi aku menyimpannya. Apakah yang satu ini? Tidak. Yang ini? Tidak, dan sebagainya. Dan akhirnya, mudah-mudahan, saya akan menghadapi kaus kaki ini di sini. Jadi jika bentuk yang sama, ukuran, bawa. Dan sekarang, apa yang akan menjadi langkah berikutnya kita di sini? Ya? HADIRIN: Identifikasi kanan dari kiri. DAVID Malan: Oke, mengidentifikasi kanan dan kiri, sehingga untungnya, bahwa jenis karya. Sebuah simetris kecil, atau aku hanya dikenakan mereka seperti itu. Baiklah, jadi aku telah mengidentifikasi kanan. Dan sekarang, sebelum kita melanjutkan, biarkan saya menunjukkan apa yang Yusuf telah melakukan di sini sebagai semacam programmer berpengalaman. Jadi sekali lagi, tidak ada satu cara untuk melakukan hal ini, tetapi lebih dari sekedar penomoran baris, Yusuf sudah mulai melakukan hal ini semacam lekukan. Memang, ini adalah konvensi yang sangat umum dalam pemrograman, dimana ketika Anda melakukan sesuatu berulang, looping gaya, seperti kita menyiratkan dengan frase bahasa Inggris "UNTUK SETIAP kaus kaki, "konvensi dalam pseudocode dan, seperti yang akan kita lihat, bahasa pemrograman yang normal, adalah hanya indent. Tekan space bar beberapa kali, tekan tombol Tab atau sejenisnya, sehingga bersarang di bawah "UNTUK SETIAP kaus kaki" adalah sepotong hal-hal yang perlu Anda lakukan sebagai hasil dari lingkaran itu. Jadi itu saja yang menyampaikan semantik. Sekarang sementara itu, "Jika bentuk dan ukuran yang sama," kata Fakta bahwa "Take it" lebih menjorok jauh hanya berarti itulah satu-satunya hal yang harus Anda lakukan jika kondisi itu, jika cabang, bahwa persimpangan jalan, pada kenyataannya benar. Jadi sekarang di sini, kita pada langkah keempat, mengidentifikasi kanan dan kiri. Saya telah mengidentifikasi benar. Berikan aku melangkah lima. Dan secara teknis, kita benar-benar bisa menelepon UNTUK SETIAP hal - Anda mungkin harus menomori semua baris jika kita akan melakukan hal ini. JOSEPH: [Tak terdengar] DAVID Malan: [Tak terdengar]? Oke, baik-baik saja, baik-baik saja, kita akan melakukannya dengan cara Anda. Baiklah, jadi langkah kelima, bagaimana kita melakukan kaus kaki yang tepat? Bagaimana kita lanjutkan selanjutnya, di sini? Ya? HADIRIN: Angkat kaki kanan. DAVID Malan: Angkat kaki kanan, Oke. Langkah enam? Cepat. Ya. HADIRIN: Cari ujung terbuka dari kaus kaki. DAVID Malan: Oke, menemukan ujung terbuka dari kaus kaki. Jadi baik. Jadi di sini, jujur, naluri sangat umum hanya akan menjadi memakai kaus kaki yang tepat, tapi itu juga cukup ambigu. Kecuali komputer atau manusia tahu persis apa artinya, itu tidak akan melaksanakan itu, jadi di sini, aku sudah menemukan pembukaan saham. Langkah tujuh? HADIRIN: Sentuh jari-jari kaki Anda. DAVID Malan: jari kaki Sentuh. Oke, jadi sekarang kita pergi - Baiklah, aku akan mengambil beberapa kebebasan di sini. Terima kasih. Langkah delapan? Masukan kaus kaki. Oke, jadi sekarang aku, pikir kami cukup dekat untuk memilah-take satu ini di rumah. Baiklah, jadi ini naik. Saya akan mengambil beberapa kebebasan dengan apa artinya, sebenarnya. Masukan kaus kaki pada. Baiklah, sekarang langkah sembilan? HADIRIN: Taruh kaki bawah. DAVID Malan: Terima kasih. Langkah sembilan, meletakkan kaki ke bawah, dan sekarang, kita dapat mengulangi. Jadi mungkin, kita sekarang dapat masuk ke langkah 10 dan berkata mengidentifikasi meninggalkan kaus kaki, tapi itu mungkin sudah dilakukan. Dan begitu kemudian, saya dapat semacam ulangi langkah-langkah. Tapi ini semacam menimbulkan pertanyaan. Sebelumnya, terakhir kali kami ingin mengulang sesuatu, kita melakukannya iteratif, lagi dan lagi, FOR SETIAP lingkaran sehingga untuk berbicara. Apakah masuk akal untuk menggunakan loop untuk menangani keduanya kiri dan kaus kaki yang tepat? Karena rasanya seperti operasi ini cukup banyak identik kecuali untuk fakta bahwa seseorang mulai di sini dan satu dimulai di sini? Apakah kita loop, atau kita terus langkah-langkah menulis 10 dan 11 dan 12? HADIRIN: Loop. DAVID Malan: Oke, jadi loop. Aku benar-benar mungkin mengatakan hanya terus berjalan. Lalu mengapa ini terjadi? Nah, ini sebenarnya yang pertama dari kami non-jelas desain keputusan, dan pada kenyataannya, salah satu metrik dengan mana kita akan mulai mengevaluasi, untuk diri kita sendiri dan untuk Anda, kualitas program adalah seberapa dirancang dengan baik itu. Apakah Anda melakukan jumlah minimal pekerjaan yang diperlukan untuk mendapatkan pekerjaan yang paling cepat, baik dari segi Anda waktu atau dalam hal waktu komputer berjalan? Berapa banyak operasi waktu yang dibutuhkan untuk mengeksekusi? Jadi bisa dibilang, ini adalah kesempatan untuk loop karena segera setelah saya mulai copy dan paste, seperti Yusuf efektif akan mulai melakukan suatu saat, kau jenis membuang-buang Anda waktu, dan Anda sedang ganda ekspresif. Tetapi pada saat yang sama, ini adalah benar-benar hanya dua khusus kasus, kiri dan kanan. Dan sementara sebelumnya, saya mungkin memiliki 10 atau 20 atau lebih kaus kaki di tumpukan, itu pasti masuk akal untuk tidak memiliki 50 baris Kode mengatakan cek kaus kaki ini, maka yang berikutnya, maka yang berikutnya. Di sini, itu sedikit kurang jelas, dan saya akan diusulkan bahwa kita bisa jalan baik. Kita juga bisa memiliki loop yang, meskipun hanya loop dua kali, atau kita hanya bisa copy dan paste hanya sedikit di sini untuk mendapatkan pekerjaan yang dilakukan. Tapi program ini adalah kereta, sehingga untuk berbicara. Ini mungkin memiliki beberapa kesalahan, kesalahan, atau kasus sudut, sehingga untuk berbicara, bahwa kita tidak benar-benar mengantisipasi. Tidak ada yang salah saat ini, tapi apa yang bisa saja salah ketika menjalankan program ini? HADIRIN: Anda tidak punya kaus kaki. DAVID Malan: Jadi tidak mungkin ada kaus kaki di sana sama sekali. Jadi mari kita menganggap bahwa kasus sudut. Jadi jika kita bisa gulir kembali ke langkah satu, jadi langkah pertama adalah membungkuk, sehingga check out. Langkah kedua, mengambil kaus kaki Anda, tapi kemudian menemukan kaus kaki yang cocok, mengidentifikasi kanan. Kami semacam membuat sejumlah asumsi, dan ini, terus terang, mengapa program kadang-kadang crash. Jika Anda, programmer, telah membuat asumsi-asumsi tertentu, seperti pasti ada akan menjadi kaus kaki atau pasti ada akan menjadi memori tersisa di komputer, pasti ada yang terjadi menjadi disk ruang yang tersisa pada hard drive - Nah, jika Anda membuat asumsi, dan itu tidak, pada kenyataannya, kenyataannya, siapa tahu kadang-kadang apa komputer ini akan lakukan? Dan kadang-kadang, ketika Anda mendapatkan bola pantai berputar atau beku Windows atau sejenisnya, itu justru karena beberapa programmer tidak mengantisipasi apa yang disebut kasus sudut. Apa lagi yang bisa saja salah dalam program ini? Ya? HADIRIN: Anda tidak memiliki kaki kanan dan kaki kiri. DAVID Malan: Oke, mungkin tidak memiliki kedua kaki kanan dan kaki kiri, sehingga program ini tidak mungkin universal berlaku. Lainnya? HADIRIN: Anda mungkin telah mengambil kaus kaki yatim piatu. DAVID Malan: Saya mungkin telah mengambil kaus kaki yatim, sehingga non-pencocokan kaus kaki yang hanya tidak memiliki saudara kandung karena saya sudah hilang, itu robek, itu di cuci masih, atau sejenisnya. Sehingga, juga belum benar-benar ditangani. Ya? HADIRIN: Anda mungkin sudah kaus kaki. DAVID Malan: Saya mungkin sudah kaus kaki. Saya tidak benar-benar memeriksa. JIKA Anda tidak memiliki kaus kaki, KEMUDIAN melanjutkan untuk melakukan baris satu dan dua. Dan itu bisa terjadi. Anda jatuh tertidur dengan kaus kaki Anda dan sejenisnya, sehingga itu juga, kasus sudut yang sangat wajar. Dan mungkin yang lain? HADIRIN: kaus kaki adalah dalam ke luar. DAVID Malan: Jadi kaus kaki adalah dalam ke luar, sehingga kita tidak ada kesalahan memeriksa, singkatnya. Kami tidak memeriksa apakah keadaan dunia ini seperti yang kita harapkan. Kami tidak memeriksa apakah kita benar-benar menemukan apa yang kita cari. Dan meskipun ini adalah semacam contoh konyol melibatkan kaus kaki, pada akhir hari, ini persis semacam pola pikir Anda harus memiliki saat menulis program, bahkan dalam Scratch serta C, dalam JavaScript, di PHP, karena jika tidak, program Anda akan menunjukkan setara dengan itu bola pantai berputar atau hanya menghasilkan akurat hasil. Begitu banyak terima kasih di sini untuk kami juru Joseph. [Tepuk Tangan] DAVID Malan: Baiklah, jadi apa, di Bahkan, sebuah program komputer? Nah, mari kita sekilas pada perwakilan satu di sini. Jadi ini adalah program yang ditulis dalam bahasa yang disebut C. C adalah bahasa baru cukup lama hari ini, tetapi banyak yang dibangun di atasnya. Memang, PHP, salah satu web-sentris bahasa kita akan gunakan menjelang akhir masa itu, sendiri memiliki apa yang disebut interpreter, sebuah program yang ditulis dalam C, tetapi lebih pada dalam beberapa minggu dari sekarang. Tapi program ini, dan ini adalah apa artinya untuk menulis Program, meskipun salah satu yang sangat sederhana. Kami memiliki beberapa sintaks yang cukup samar di sini, tapi Anda dapat mungkin menebak, bahkan jika Anda belum pernah diprogram sebelumnya, apa yang program ini tidak. Memang, saya tidak tahu apa printf, tapi mencetak tentu memunculkan gagasan mencetak sesuatu. Dan jadi ya, program ini pada akhirnya akan mencetak kata-kata "Hello, World." Sekarang, apakah Anda memiliki Mac atau PC atau komputer Linux, peluang yang, setidaknya jika Anda mengunduh beberapa bebas perangkat lunak yang tersedia, Anda bisa saja menulis program pada Anda sendiri laptop untuk beberapa waktu sekarang. Pada Mac OS, misalnya, ada program ini disebut Terminal yang datang dengan Mac, yang biasanya Anda Utilities folder, dan umumnya membuka hitam dan putih atau jendela putih dan hitam di mana Anda memiliki meminta di mana Anda dapat mengetikkan perintah. Jadi ini sebenarnya mengingatkan apa komputer dulu sebelum pengguna grafis interface, GUI, datang. Sekarang, di Windows, Anda memiliki mekanisme serupa dalam bentuk dari prompt perintah. Tapi apa yang akan saya lakukan di sini adalah membuka, katakanlah, TextEdit lagi, sehingga program yang sama kami gunakan untuk pseudocode beberapa saat yang lalu, dan aku akan pergi ke depan dan menulis program pertama saya. Sertakan stdio.h, apa pun artinya, int main void, apa pun artinya, dan kemudian di tengah di sini, printf ("halo, dunia."). Dan kemudian tutup kutipan, tutup paren, titik koma. Sekarang aku akan pergi ke depan dan hanya menekan Command-S. Aku akan untuk pergi ke depan dan menyimpan ini sebagai hello.c, sehingga konvensi di dunia pemrograman C adalah nama file dot c. Aku akan hanya dimasukkan ke dalam direktori Home John Harvard, di sini, klik Save, dan sekarang aku akan pergi ke ini jendela terminal, yang lagi-lagi adalah prompt ini hitam dan putih di mana saya bisa menjalankan perintah. Saya dapat menjalankan program dengan mengetikkan nama mereka, bukan oleh mengklik dua kali ikon dalam arti biasa. Tapi masalahnya adalah tentang C adalah bahwa bahasa seperti C pertama datang dalam bentuk ini, sesuatu yang disebut kode sumber. Sesuatu yang terlihat sedikit seperti bahasa Inggris tapi pasti kurang seperti bahasa Inggris dari pseudocode Yusuf saat lalu. Ini sedikit lebih misterius. Tampaknya mengikuti beberapa pola atau aturan. Fakta bahwa saya memiliki kurung kurawal, titik koma, tanda kutip, kawat gigi sudut, terasa seperti komputer datang dengan ini semacam bahasa. Tetapi jika aku pergi, sekarang, ini jendela terminal, saya bisa menjalankan perintah yang akan mengkonversi kode sumber sesuatu yang disebut kode obyek. Itu akan mengkonversi bahasa Inggris-seperti sintaks dengan nol dan orang-orang, jenis yang sama dari nol dan yang kita berbicara tentang Rabu. Sekarang, aku akan menjalankan perintah yang disebut dentang. Lebih lanjut tentang ini dalam minggu-minggu yang akan datang, tetapi itu adalah program dengan yang saya dapat mengkonversi hello.c menjadi sejumlah dari nol dan satu. Sekarang, saya sudah menjalankan perintah ini. Aku telah lari dentang, dan kemudian aku berkata jalankan sendiri pada file ini disebut hello.c, yang saya buat beberapa saat yang lalu, dan sepertinya tidak ada yang terjadi. Tapi memang, kalau aku menjulurkan sekitar direktori rumah saya, saya akan melihat bahwa a.out Program bodoh bernama sekarang ada. Ini hanya nama default untuk program saat menulis di C. Kita bisa menimpa ini akhirnya, tetapi a.out adalah nama program saya hanya diubah menjadi nol dan satu. Dan sekarang bahwa nol itu dan orang-orang, Mac saya, dalam hal ini, atau PC Windows, dapat memahami bit tersebut, mereka angka satu dan nol. Dan jadi ketika saya tekan Enter, saya melihat "halo, dunia!" Tapi itu sedikit buggy. Saya tidak cukup mengatakan "halo, dunia: udara: -! Jharvard." Air adalah nama komputer saya. Jharvard adalah nama akun, jadi apa yang saya jelas menghilangkan dari program ini? Beberapa jenis ganti baris. Saya tidak memukul setara dengan Enter atau carriage return, dan ini, sekali lagi, bukti fakta bahwa komputer dapat hanya melakukan apa yang Anda katakan mereka lakukan. Dan fakta bahwa saya tidak memberitahu komputer memindahkan kursor ke baris berikutnya - baik, itu pasti tidak akan hanya melakukannya terlalu berani bagi saya. Jadi jika saya kembali ke program saya, dan saya katakan \ n - Jadi \ n, seperti yang kita akan segera melihat, adalah cara mewakili hal-hal aneh seperti karakter baris baru, hal-hal yang seharusnya merupakan hasil dari menekan tombol Enter. Tapi untuk saat ini, hanya tahu bahwa menekan tombol Enter akan hanya membuat kode kita terlihat aneh, sehingga dunia memutuskan, Anda tahu apa, untuk menjaga hal-hal cantik, untuk tetap pada satu baris, mari kita hanya mengatakan \ n mewakili baris baru. Biarkan saya simpan file saya, kembali ke jendela terminal, dan re-run a.out, Enter. Masih kereta, tapi mengapa? HADIRIN: [Tak terdengar] DAVID Malan: Ya, jadi saya perlu mengkompilasi ulang itu. Jadi untuk mengkompilasi sebuah program hanya berarti mengubahnya dari sumber kode untuk objek, kode kode sumber untuk angka satu dan nol. Sekarang, fakta bahwa aku memukul Simpan di TextEdit tidak memiliki bantalan pada mereka nol dan satu karena saya harus terlebih dahulu kirim dentang hei, aku sudah berubah mereka baris kode, yang kode sumber. Anda perlu untuk menumbuhkan a.out. Tidak ada yang tampaknya telah terjadi, tetapi dalam komputer, pada baris perintah, sehingga untuk berbicara, ketika tidak ada yang terjadi, yang biasanya berarti semuanya baik-baik. Ketika sesuatu tidak terjadi, itu berarti Anda kacau, umumnya. Jadi mari kita sekarang pergi ke a.out, dan memang sekarang, aku punya "halo, dunia. " Dan sekarang, bagaimana dengan angka satu dan nol? Dimana, pada kenyataannya, adalah mereka? Yah, aku tidak bisa benar-benar hanya semacam aduk sekitar sangat efektif. Biarkan aku membuka TextEdit. Berikut a.out. Biarkan aku pergi ke depan dan membuka, dan ini tampaknya apa yang saya Program seperti. Jadi saya sudah dibuka, tidak hello.c, tapi a.out. Tapi ini sebenarnya bukan apa program saya sebenarnya. Jelas, ini adalah beberapa jenis karakter abjad. Saya tidak melihat angka satu dan nol, tapi ini karena a.out adalah sebuah program. Nol dan satu - tapi TextEdit, seperti namanya, itu seperti Notepad pada Windows, hanya editor teks, sehingga membingungkan semua orang nol dan yang sebagai meskipun mereka, apa? ASCII karakter. Jadi ingat pada hari Rabu, kami hanya datang dengan ini sewenang-wenang pemetaan nomor, atau bit, dengan surat dari alfabet dan simbol tanda baca dan sejenisnya. Jadi TextEdit, bahwa itu adalah editor teks yang salah menafsirkan pola-pola nol dan satu yang seharusnya pencetakan kata-kata, seperti "halo dunia,." Ini menampilkan mereka sebagai ASCII, dan itulah sebabnya terlihat sedikit berantakan. Sekarang, ada beberapa petunjuk dari kebenaran di sini. Perhatikan jika saya menyoroti, ada tanda-tanda benar-benar "halo, dunia, "begitu suatu tempat di program yang kalimat saya tulis. Tapi mari kita pergi ke depan dan sekarang melihat dengan program yang berbeda. Ini bukan salah satu yang akan kita gunakan yang sering, tetapi juga dilengkapi dengan Mac dan akan dalam alat CS50. Biarkan aku pergi ke depan dan membuka dengan sebuah program yang disebut xxd. Kembali pada hari, sebagian besar program diberi nama cukup samar, dan jadi tren terus. Tapi-b berarti meludah program ini sebagai biner. Jangan menjalankannya. Menampilkannya kepada saya sebagai nol dan satu, dan ini adalah C memprogram kita hanya menulis. Sekarang, saya, sebagai manusia di sini, aku benar-benar tidak tahu apa yang pola-pola berbagai angka satu dan nol mewakili. Kembali pada hari, saya, dengan kartu punch saya atau sejenisnya, akan benar-benar harus mencari apa yang berbagai pola 01111000, benar-benar mewakili. Atau lebih buruk lagi, saya perlu melakukan meninju atau penciptaan ini pola nol dan satu. Tetapi untuk sekarang, mengambil pada iman bahwa CPU, Intel dalam, sehingga untuk berbicara, dalam semua komputer kita hari ini, tahu bagaimana menafsirkan angka satu dan nol. Dan beberapa angka satu dan nol berarti cetak. Beberapa angka satu dan nol berarti memutar suara. Beberapa nol dan yang berarti mengambil input pengguna dari keyboard. Ada berbagai macam pola yang berbeda, tapi kami untungnya, sebagai manusia, hanya umumnya perlu khawatir tentang pemrograman di tingkat yang cukup tinggi. Dan di kelas CS lainnya bisa Anda menggali lebih dalam dan melihat ke bawah hal-hal seperti yang nol dan satu, atau belum hal-hal lain masih. Jadi sekarang mari kita mengkonversi. Mari kita bergerak sangat cepat menjauh dari C dan pindah ke sesuatu yang sedikit lebih menghibur, sedikit lebih menarik, dalam kita bisa kembali animasi dan suara dan seperti itu jelas telah lolos kami dalam hal ini cukup primitif antarmuka. Jadi ini program yang sama di C dapat diwakili sekarang ini bahasa pemrograman disebut Scratch sebagai berikut. Ini adalah setara dengan program hello world ditulis dalam ini potongan puzzle gaya bahasa yang disebut Scratch. Jadi biarkan aku pergi ke depan dan membuka program ini sangat. Ini lagi disebut Scratch. Ini tersedia secara bebas, dan ini adalah hal yang sama kita mulai hari ini. Jadi ini di sini adalah Scratch, dan itu dipecah menjadi beberapa berbeda potongan. Di sebelah kanan paling atas, kita memiliki tahap yang disebut, dan memang, di situlah cookies dilakukan hanya sedikit lalu. Dan di atas panggung yang hal yang disebut sprite, karakter, atau benda, atau entitas. Ini tidak benar-benar peduli bagaimana Anda berpikir tentang mereka, tetapi mereka diprogram, hal bergerak, dan dalam kasus ini, ini program yang mahasiswa menulis memiliki beberapa jahe cookie, beberapa kue melingkar, sejumlah besar hati, sejumlah besar kacamata. Karena itu, ia mampu memprogram masing-masing individu karakter secara terpisah. Sekarang, apa artinya program karakter ini? Nah, biarkan aku pergi ke depan dan klik pada cookie tangan kiri dan gulir ke kiri atas sini. Di kiri atas layar saya sekarang adalah disebut skrip daerah. Ini adalah semacam batu tulis kosong, awalnya, ke mana saya bisa drag dan drop potongan teka-teki yang, terus terang, lakukan apa yang mereka katakan. Di bagian paling atas dari tumpukan potongan puzzle adalah kata Ketika Bendera Hijau diklik, dan jika Anda tidak melihat sebelumnya, cara saya memulai lagu itu kue yang mengklik, secara harfiah, bendera hijau. Sehingga potongan puzzle di sebelah kiri atas ada artinya ketika klik manusia bendera hijau, terus melakukan hal-hal berikut. Sekarang, apa yang mereka kue melanjutkan untuk melakukan? Aku tidak benar-benar tahu bagaimana menafsirkan ini belum, tetapi Cookie tampaknya diatur jalurnya ke nol, maka menunggu tiga detik, kemudian berubah kelompok untuk satu, maka menunggu detik, kemudian berubah nya groove kembali ke satu. Dan maka ini benar-benar terlihat seperti sedikit bug, tidak boleh harus mengubah jalurnya lagi dan lagi kecuali itu yang berubah di tempat lain, tapi ini adalah serangkaian langkah apa mendikte perilaku ini cookie tertentu. Jadi mari kita sebenarnya gulir kembali dan tidak melihat sesuatu begitu kompleks namun. Biarkan aku pergi ke depan dan pergi ke File, New, dan mendapatkan yang bersih. Jadi sekarang, saya memang memiliki daerah skrip kosong, tahap kosong, dengan Scratch sprite kami standar, dan di bagian kiri atas di layar saya yang saya miliki palet dari semua mereka tersedia puzzle potongan. Dan kita tidak akan pergi melalui hampir bahwa banyak hal-hal hari ini karena, sekali lagi, sebagian besar yang cukup jelas, tapi kami akan mencoba untuk mengkategorikan mereka dan menunjukkan kesamaan dengan bahasa masa depan yang akan kita menyelam. Dan di sebelah kiri atas di sini adalah yang pertama Ketika Bendera Hijau Diklik, jadi biar tarik ini di sini, tampilannya keluar sedikit. Dan jika saya klik bendera hijau, tidak ada yang benar-benar terjadi karena Saya belum terpasang logika apapun, pernyataan apapun sehingga untuk berbicara, untuk bahwa bendera hijau, jadi biar naik ke kategori di sini. Aku sedang dalam kategori Kontrol. Saya bukannya akan pergi ke kategori Looks, dan ada sejumlah hal di sini yang mengatakan Katakanlah, Pikirkan, Ubah Warna, Costume Switch. Sehingga Anda dapat melakukan hal-hal konyol dengan kostum dan suara dan sejenisnya. Biarkan aku pergi ke depan dan hanya mengatakan Katakanlah, dan sekarang melihat seperti saya tarik dan jatuhkan sepotong teka-teki, itu akan ingin latch menjadi bentuk yang sesuai. Jadi ketika saya pergi ke depan dan melepaskan mouse saya, mereka mengunci bersama-sama, dan sekarang jika saya pergi ke sini dan klik bendera hijau, kucing tidak pada kenyataannya menyapa karena itulah apa yang ada dalam dari kotak putih. Kita akan segera melihat bahwa ini kotak putih adalah apa yang disebut argumen, atau parameter. Ini adalah cara untuk mengubah perilaku, dalam hal ini, teka-teki sepotong, tetapi jika aku ingin mengatakan dengan tepat apa yang saya katakan sebelumnya, mengatakan halo, dunia, sekarang saya bisa kembali ke sini, klik bermain, dan "halo, dunia" adalah apa yang dikatakan. Jadi kita benar-benar pemrograman sekarang. Ini tidak semua yang menarik dari sebuah program, tapi setidaknya itu adalah sesuatu yang sedikit lebih menarik daripada yang terlihat, di pertama sekilas, seperti ini. Dan kita bisa sangat cepat mendapatkan semua lebih ekspresif karena dalam Scratch, seperti dalam bahasa lain, ada semua macam pernyataan, bukan hanya Katakan atau mencetak sesuatu, namun Anda dapat melakukan hal-hal seperti menunggu, seperti yang kita hanya melihat dengan cookie, beberapa jumlah detik. Anda dapat memutar suara di lingkungan Scratch hanya seperti Anda bisa dalam suara program komputer bermain normal. Anda dapat memeriksa apa yang disebut ekspresi Boolean. Jadi sekarang, mari kita mulai untuk menambah toolkit kami beberapa terminologi yang benar-benar berhubungan dengan contoh bahwa Yusuf dan aku di sini dengan kaus kaki. Jadi pernyataan ini hanya pernyataan fakta. Lakukan ini. Sebuah direktif untuk sprite, atau saya manusia, untuk melakukan sesuatu. Sebuah ekspresi Boolean adalah sesuatu yang memiliki nilai, yang disebut nilai kebenarannya, itu baik nol atau satu, palsu atau benar, mati atau hidup, tidak atau ya. Tidak terlalu penting bagaimana Anda berpikir tentang hal ini, tapi itu adalah biner negara. Seperti Nate dibahas dalam video Rabu, dua hal yang berbeda. Jadi dalam Scratch, ekspresi Boolean kebetulan melihat seperti ini benda biru di sini, dan dalam hal ini, pertanyaan mark menyiratkan bahwa Anda mengajukan pertanyaan. Apakah kucing, atau sprite, menyentuh pointer mouse? Jadi ini hanyalah salah satu contoh dari blok Scratch yang akan untuk memungkinkan kita untuk memeriksa ya atau tidak, adalah mouse menyentuh sprite di layar? Dan ini dapat berguna jika Anda benar-benar ingin melakukan hal-hal dengan mouse Anda. Selain ekspresi Boolean, kita memiliki hal-hal seperti adalah mouse ke bawah, sehingga Anda dapat mendeteksi bahwa jenis pertanyaan juga. Kita bisa melakukan matematika jika Anda benar-benar ingin, dan ada sebenarnya lebih menarik untuk menggunakan ini bukan hanya sekedar murni aritmatika, seperti yang akan kita lihat. Pseudo keacakan dan membuat program Anda tampaknya berpikir atau berperilaku berbeda berdasarkan beberapa nilai acak, dan kemudian kita memiliki hal-hal seperti ekspresi Boolean seperti AND. Jadi jika Anda benar-benar ingin memeriksa dua nilai, kita akan lihat di Gores bahwa kita benar-benar dapat menguji apakah ini benar dan ini benar. Misalnya, dalam kasus kaus kaki saya, saya udah bisa di sangat akhirnya mengajukan pertanyaan jika kaus kaki kiri dan kanan pada kaus kaki adalah pada, berhenti. Anda semua dilakukan untuk hari itu, sehingga akan menjadi peluang untuk itu. Jadi mari kita pergi ke depan dan mencoba untuk potong beberapa bersama-sama dan pergi ke beberapa contoh lebih menarik dari satu ini. Jadi biarkan aku pergi ke depan di sini dan membuka beberapa contoh yang selalu akan berada di situs kursus ini juga, dan membuka hello2. Jadi di sini hello2, kami memiliki program yang melakukan beberapa hal, tapi tidak melakukannya seefektif mungkin. Jadi di sini ia mengatakan "halo, dunia" selama satu detik dan kemudian menunggu untuk kedua. Dan kemudian melakukannya lagi, dan kemudian melakukannya lagi. Jadi jika saya mengklik bendera hijau, Scratch mengatakan "Halo, dunia. Halo, dunia. Halo, dunia. "Dan ini jelas calon sekarang untuk perbaikan. Apa perbaikan marjinal, mudah-mudahan, kita bisa sekarang membuat jika Scratch mendukung konsep? Beberapa jenis loop. Beberapa jenis pengulangan, sekarang, akan menyenangkan, jadi biar sebenarnya coba itu. Biarkan aku benar-benar pergi dan bergerak ini. Jadi pemberitahuan dapat melepaskan blok semudah Anda dapat menambah melampirkannya. Biarkan aku pergi Entitas, scroll ke bawah sini, dan memang, ada potongan puzzle ini di sini, Repeat, dan Selamanya dan Jika selamanya. Jadi ada beberapa cara untuk mengekspresikan konstruksi perulangan di Scratch. Yang saya mungkin ingin di sini bukan karena saya hanya Selamanya ingin ini terjadi tiga kali, tapi mungkin Ulangi. Jadi biarkan aku tarik Ulangi di sini, drag dan drop, dan sekarang bukannya mengatakan "halo, dunia" tiga kali terpisah, biarkan aku tarik ini potongan puzzle di sini. Dan meskipun tampaknya tidak cocok, program cerdas cukup untuk menyadari hal itu akan tumbuh untuk mengisi, sehingga itu adalah bentuk yang materi dan bukan ukuran mutlak. Biarkan saya mengubah pengulangan tiga, dan sekarang biarkan aku pergi depan dan tarik Tunggu Satu Kedua di sana juga. Ini akan patah juga, dan jadi sekarang aku akan menyeret orang-orang di sini dan hanya membuangnya karena saya tidak membutuhkannya lagi. Biarkan saya zoom out dan klik bendera hijau sekarang, dan kami memiliki program yang sama, tetapi, seperti yang saya prediksi sebelumnya, baik dirancang karena Anda bisa membayangkan betapa buruk program ini akan mendapatkan, tentu estetis, jika Anda harus mulai menyalin dan paste, copy dan paste, atau menyeret dan menjatuhkan hal sialan yang sama lagi dan lagi. Sekarang, hanya mengatakan hal-hal di layar, mencetak ke layar, benar-benar semua tidak yang menarik, jadi mari kita membuka ketiga varians sini. Dan sekarang, karena Anda akan melihat, ini dengan cepat akan mendapatkan menjengkelkan - [MEOW] DAVID Malan: - tapi itu juga agak lucu. [MEOW] DAVID Malan: Oke, jadi lebih baik, dan kita pasti bisa menggunakan sama transisi chunking ini menjadi sebuah perulangan struktur, tetapi mari kita membuatnya lebih menarik masih. Biarkan aku pergi ke depan dan membuka varians keempat di sini, di mana saya mengambil hal-hal satu langkah lebih lanjut. Jadi menurut ini, meskipun ini adalah konyol pada awalnya sekilas, apa program ini akan dilakukan? Ini akan meong sekali. Kenapa? Nah, satu, sejauh yang saya tahu, selalu kurang dari dua. Tidak ada gagasan keacakan sini. Aku sudah benar-benar keras-kode satu dan dua, tapi ini adalah Misalnya sekarang benar-benar menggunakan ekspresi Boolean. Banyak seperti sebagai Yusuf lakukan dalam pseudocode nya, indentasi JIKA Anda menemukan kaus kaki yang cocok KEMUDIAN melakukan hal berikut, di sini kita memiliki ekspresi JIKA satu kurang dari dua THEN - dan bahkan kami bahkan memiliki sedikit lekukan, mana ungu sedikit menjorok ke kanan - MAKA Anda akan memutar suara meong. Sekarang, dalam kasus ini, yang satu selalu kurang dari dua, jadi ini adalah jenis limbah kondisi. Tapi kita akan mampu, seperti yang akan kita lihat, untuk plug hal-hal lain menjadi penampung ini di mana satu dan dua sekarang adalah. Jadi mari kita sekarang maju ke lima contoh dari beberapa hellos dan melihat apa program ini akan dapat dilakukan. Jadi sekarang, dalam kalimat bahasa Inggris, bagaimana ini Program berperilaku? HADIRIN: mengeong separuh waktu. DAVID Malan: setengah Meow ini dari waktu, jadi ini adalah cara menyampaikan ide yang sangat sederhana. Meskipun kita kebetulan menggunakan beberapa kesenjangan di sini di beberapa nomor, ini benar-benar hanya programmatical cara, cara yang tepat, mengatakan jika koin muncul kepala, pergi depan dan meong. Atau sebaliknya, jika koin muncul ekor, jangan meong. Dan dalam hal ini, bagaimana kita menyatakan bahwa? Kami akan memilih nomor acak dari 1 sampai 10, dan jika itu Jumlah ini kurang dari 6, pergi ke depan dan mengeong. Dan bagaimana hal ini bisa di sini? Baik lagi, perhatikan hanya menyeret dan menjatuhkan dan hal kait ke tempatnya. Jadi sekarang mari kita lihat apakah keacakan ini bekerja. Biarkan aku pergi ke depan dan klik bendera hijau. [MEOW] DAVID Malan: Oke. [MEOW] DAVID Malan: Oke. Oke, baik, jadi kita punya kepala, kepala, ekor efektif. Ekor. [MEOW] DAVID Malan: Kepala. [MEOW] DAVID Malan: Sangat baik. Itu selalu canggung ketika hanya statistik Anda mendapatkan buruk dijalankan, dan itu semua kepala, dan program sebenarnya tidak bekerja seperti yang Anda akan berharap. Tapi kali ini, itu bekerja, dan tampaknya kita miliki, jika kita lakukan ini jumlah tak terbatas kali, peluang 50%. Sekarang lagi, tidak semua yang menarik, hanya membuat kucing meong, jadi mari kita lihat apakah kita tidak bisa maju ini sedikit lebih jauh di sini dalam versi enam. Jadi sekarang, kita memiliki versi yang benar-benar menjengkelkan - [Mengeong SETIAP DETIK BEBERAPA] DAVID Malan: - dan ini adalah apa yang dikenal, umum, sebagai infinite loop. Jadi lingkaran tak terbatas dalam hal ini terasa buruk. Ini pasti akan mulai terdengar buruk, namun tidak terbatas loop tidak selalu buruk. Dapatkah Anda memikirkan konteks program komputer di mana Anda akan benar-benar ingin infinite loop? Ya? HADIRIN: Bila Anda ingin memeriksa kondisi. DAVID Malan: Oke, bila Anda ingin tetap memeriksa kondisi? Seperti apa? HADIRIN: [Tak terdengar] DAVID Malan: Oke, baik, jadi jika Anda memiliki beberapa program, beberapa semacam otomatisasi rumah, di mana Anda ingin terus-menerus Monitor adalah sesuatu yang terjadi. Apakah lampu? Apakah lampu karena mungkin Anda memiliki timer, dan Anda ingin mereka pergi, Anda mungkin perlu melakukan sesuatu lagi dan lagi. Dan pada kenyataannya, berbicara tentang timer, ada di antara kalian yang telah jam pada komputer Anda atau jam tangan digital, yang merupakan infinite loop. Hal ini terus memperbarui waktu karena terus-menerus memeriksa dan memeriksa dan memeriksa memiliki waktu berubah, dan jika demikian, oh, Tuhan. Jam yang akhirnya berubah. Perlu menampilkan bahwa nilai untuk Anda. Jadi sementara sebagian besar loop tak terbatas waktu adalah kesalahan, atau setidaknya keputusan desain miskin, kadang-kadang mereka lakukan memiliki nilai mereka. Nah, mari kita maju lebih jauh di sini untuk hello7. Jadi sekarang program ini akan mendapatkan sedikit lebih interaktif. Biarkan aku tampilannya di sini, dan lagi, ini adalah apa yang bagus tentang Scratch. Dan kita akan menggunakannya untuk menjadi jelas, Scratch, hanya hari ini dan ke Masalah pekan depan ditetapkan. Tetapi pada hari Senin, kita menyelam ke C. Dalam program ini di sini, itu tidak, selamanya, berikut ini. JIKA menyentuh pointer mouse - sekarang, siapa yang konteks di sini? Nah, dan perhatikan bahwa siapa yang dipilih di sini di bagian bawah tepat adalah kucing, sprite satu, sehingga skrip ini, ini Program, berlaku kepadanya secara khusus. Jadi, jika kucing yang menyentuh pointer mouse, maka akan untuk memainkan permainan ini dan menunggu dua detik, dan kemudian ulangi nauseum iklan. Jadi mari kita pergi ke depan dan tekan tombol play. Tidak ada yang terjadi, tapi jika saya ingin hewan peliharaan kucing sekarang, aku hanya bisa. [MEOW] DAVID Malan: Adorable. [MEOW] DAVID Malan: Oke, kurang mengganggu, tetapi juga akan membosankan, jadi mari kita lanjutkan dan melihat apakah kita tidak dapat menyuntikkan logika yang lebih sedikit. Itu contoh tujuh. Di sini, di contoh delapan, kita akan memperkenalkan kondisi ELSE. Begitu banyak seperti garpu literal di jalan, di mana Anda dapat pergi kiri atau Anda dapat pergi ke kanan, suatu kondisi pemrograman bahasa seperti Scratch, atau seperti yang kita akan melihat C, dapat memungkinkan Anda untuk masuk dalam satu arah atau lain melalui JIKA LAIN membangun. Jadi secara harfiah, JIKA menyentuh pointer mouse, ini akan memainkan beberapa suara, ELSE itu akan memainkan ini lainnya suara, meong. Sekarang, jika Anda dapat menyimpulkan dari nama ini suara, Anda dapat mungkin menebak apa program ini dimaksudkan untuk menyulap gagasan. Kucing ini mengeong gembira. [MEOW] DAVID Malan: Untungnya, namun tidak cukup suka disentuh. [Mengaum] DAVID Malan: Jadi sekarang kita punya kucing yang akan berteriak pada Anda. Baiklah, baik, salah satu contoh terakhir dengan kucing di sini, dan mari kita versi open sembilan dari ini di sini. Jadi sekarang, kita memiliki suara yang paling menjengkelkan berikutnya yang aku bisa menemukan, jadi kami memiliki walrus atau singa laut di sini siapa yang akan lakukan hal berikut. [KULIT SEAL] DAVID Malan: Oke, jadi ini akan terus sampai Anda mengetahui bagaimana Program ini bekerja. Jadi, kali ini, hewan ini memiliki dua script, dan apa menarik di sini adalah bahwa script akan mengeksekusi secara paralel. Jadi karena mereka berdua mulai dengan satu bendera hijau diklik, itu seperti pergi seperti ini, dan kedua program itu mulai berjalan sekali bahkan jika mereka perulangan selamanya. Jadi dalam naskah atas, saya memiliki beberapa logika. Fitur apa yang yang menyediakan sana? [KULIT SEAL] HADIRIN: [Tak terdengar] DAVID Malan: Jika itu apa? [KULIT SEAL] HADIRIN: Jika diredam ke nol, itu akan terus bermain dengan terdengar. [KULIT SEAL] DAVID Malan: Oke, baik. Jadi JIKA diredam, apa pun ini, ini hal oranye adalah nol, KEMUDIAN memutar suara singa laut dan berpikir "Oh, hi, "selama dua detik. Sekarang, saya tidak tahu apa yang dimatikan, tapi nol memunculkan ide palsu atau off. Jadi jika diredam adalah palsu, jadi jika tidak diredam, terus bermain suara. Baiklah, baik, bagaimana kita menonaktifkan hal ini? Nah, mari kita lihat script kedua di sana. Script kedua mengatakan diredam diatur ke nol. Perhatikan itu juga oranye, jadi apa Scratch tidak itu warna blok dengan warna yang sama jika semacam itu secara logis berhubungan. Jadi hanya sebagai top up diredam adalah oranye, sehingga tidak bersuara di sini disebutkan dalam blok oranye. Tapi ini adalah tugas variabel, jadi seperti di aljabar, Anda memiliki x dan y dan z, dalam pemrograman Anda memiliki variabel, tapi mereka umumnya - mari kita berhenti sejenak dan angka bagaimana untuk menghentikan menggonggong ini. Bagaimana saya melakukan ini? [KULIT SEAL] DAVID Malan: Oke. Ini berhenti. Oke. Jadi sama seperti dalam aljabar Anda memiliki variabel x, y, dan z, tetapi dalam pemrograman, memiliki variabel seperti x, y, dan z umumnya disukai karena mereka sama sekali tidak ekspresif. Mereka tidak memiliki makna semantik apapun, sehingga di sebagian besar bahasa pemrograman, variabel dapat memiliki penuh nama matang atau kata-kata atau frasa, seperti diredam, mengatakan apa yang mereka lakukan. Jadi script ini kedua juga mendengarkan selamanya, dan katanya jika kunci, Space tombol keyboard, adalah ditekan, tanda tanya. Jadi ada suatu kondisi dengan ekspresi Boolean yang akan menjawab pertanyaan baik jujur ​​atau palsu, maka saya harus dalamnya JIKA tombol spasi ditekan DAN JIKA diredam adalah nol, mengatur diredam satu, ELSE mengatur diredam ke nol. Jadi ini garpu lain di jalan, dan perhatikan bagaimana saya sudah bersarang dua kondisi IF, adalah cara untuk memeriksa adalah Space Bar ditekan karena jika demikian, saya juga ingin pergi ini atau dengan cara lain. Dan bagaimana cara membalikkan nilai diredam? Saya harus memeriksa itu nol? Jika demikian, menjadikannya salah satu, yang lain membuatnya nol sampai karena beralih nya dua negara. Baiklah, jadi kita miliki maka beberapa mendasar konstruksi. Kami memiliki ekspresi Boolean, dan menyadari juga, ini adalah tidak semua yang asing. Bahkan, di sini adalah screenshot cepat tentu Harvard CS50 belanja alat, dan setiap situs web di luar sana yang memiliki kotak centang dan drop down telah benar-benar, selama ini, telah menggunakan Boolean ekspresi. Dalam hal ini di sini, jika Anda klik kotak centang di sebelah lebih besar dari atau sama dengan 4,5, atau berikutnya yang sama program fakultas, Anda menentukan ekspresi Boolean. Tunjukkan pada saya kursus yang ekspresi yang benar. Atau ke kanan, tidak bertentangan dengan kursus saya mengambil, jika yang dicentang, maka ya, Anda ingin memeriksa Kondisi itu, lain Anda ingin mengabaikannya. Jadi ekspresi Boolean adalah semacam seluruh, tetapi ketika kami menempatkan mereka dalam kondisi, baik kondisi IF, IF Elses, atau kita bahkan dapat mensimulasikan lebih dalam tingkat, JIKA ELSE IF ELSE - jadi itu semacam negara terner. Anda dapat pergi dengan cara ini atau cara ini atau cara ini. Kita dapat menjaga hal-hal bersarang untuk pergi ke arah yang berbeda. Jadi Scratch memiliki loop ini, seperti Selamanya. Ini memiliki fitur seperti Ulangi 10, beberapa hingga beberapa kali. Kami memiliki kemampuan sekarang untuk mengatur variabel, sehingga dalam kasus ini Saya sudah menyatakan, misalnya, kaus kaki yang disebut variabel. Saya sudah diinisialisasi ke 0, dan itu belum arah lain kita bisa mengambil di sini dengan Yusuf, dimana mungkin aku hanya melacak berapa banyak kaus kaki saya dan mengakhiri program ketika nilai bahwa variabel adalah 2. Itu akan menjadi cara lain semacam generalisasi bahwa masalah dan melakukan sesuatu lagi dan lagi. Nah, mari kita pergi ke depan dan sekarang memperkenalkan beberapa hal baru. Jadi bagi anda dengan pengalaman pemrograman sebelumnya akan tahu bahwa banyak bahasa memiliki array, atau vektor atau daftar, dan memang, Scratch memiliki sesuatu seperti ini, juga. Jadi mari kita lihat apakah kita tidak dapat mengambil hal-hal ke tingkat berikutnya di sini. Jika saya memiliki kemampuan, saat ini, dengan potongan-potongan teka-teki untuk menambahkan sesuatu, seperti kata atau nomor, untuk variabel, saya bisa mulai menumpuk hal. Dan ini sebenarnya apropos cantik untuk hal-hal seperti game, role-playing game di mana kau jenis berkeliling beberapa dunia fantasi mengumpulkan hal-hal, mengambil segalanya, mendapatkan poin, atau sejenisnya. Anda mungkin ingin melacak beberapa jenis persediaan, dan memang, itulah salah satu mantan siswa kami di sini lakukan dengan sesuatu yang disebut Fruitcraft RPG. Jadi biarkan aku pergi ke depan dan membuka hal ini di sini, dan di Fruitcraft, kita memiliki dunia ini sampai di atas. Jadi biarkan aku pergi ke depan dan klik bendera hijau. Perhatikan di sebelah kiri atas adalah beberapa jenis persediaan. Itu diimplementasikan dalam Scratch seperti apa yang kita akan menelepon array atau daftar, dan sekarang kami memiliki sedikit animasi. Jadi sama seperti kita mulai dengan awal kisah cinta cookie, dan kemudian kita maju ke kucing dan singa laut, sekarang kita dapat memiliki hal-hal yang lebih interaktif. Dan orang ini biru kecil, saya bisa mulai bergerak nya sedikit rumah di sini. Jadi sepertinya dia punya jalan keluar di sini, jadi saya menggunakan tombol panah, atas, bawah, kiri kanan. Dan sekarang aku di luar, jadi mari yang saya punya di sini. Sepertinya jeruk, dan memang, segera setelah saya menyentuh oranye, itu akan menjatuhkan ke dalam persediaan saya. Jika saya pergi ke sini untuk ceri, sekarang saya memiliki sesuatu lain di persediaan saya. Dan ini semua bagus dan lucu, tapi berpikir tentang bagaimana, sekarang, ini diimplementasikan. Nah, kita memiliki gagasan daftar, dan itu tampaknya potongan puzzle yang baru saja Anda mengatakan apa yang Anda ingin menambahkan untuk itu, tambahkan oranye, tambahkan ceri. Sekarang, apa yang orang ini biru kecil lakukan? Yah, dia sprite. Dan mungkin, jeruk dan ceri - mereka sendiri yang terpisah sprite. Dan menggunakan kondisi dalam ekspresi Boolean, yang siswa mungkin dapat mengekspresikan JIKA pria biru ceri menyentuh KEMUDIAN menambahkan ceri kata untuk nya persediaan, dan kemudian juga menyembunyikan sprite cherry. Jadi di bawah kap mesin, ada mungkin masih merupakan cherry sprite di sana. Kami baru saja diberitahu itu menjadi efektif terlihat. Sekarang, jika saya terus berjalan ke sini, kita juga bisa melakukan hal ini proksimal hal, di mana saya bisa pergi dan membaca tanda. Jadi jika pria biru menyentuh tanda, kita dapat memiliki blok Say seperti kucing berbicara kepada kita dalam kata-kata, halo, sebelumnya, "Got beberapa buah? Bawa ke tempat buah "Baiklah, jadi sekarang, rupanya., Saya memiliki arah saya. Aku bisa pergi ke sini untuk tempat buah, garis diri dengan pintu. Sekarang, aku di sini. Aku bisa pergi ke orang di meja. Dia mendeteksi bahwa aku dekat dengannya, sehingga tidak harus cukup identik menyentuh, dan saya telah memenangkan pertandingan. Jadi ada yang kita miliki Fruitcraft RPG. Jadi kita bisa melakukan hal-hal bahkan lebih maju daripada ini. Kita dapat menambahkan suara. Kita dapat menambahkan keacakan semu. Kita bisa menambah kompleksitas. Biarkan aku pergi ke depan di sini, dan bukannya melakukan hal ini sendiri, mari saya tunjukkan salah satu pengiriman lebih canggih kami mendapat tahun lalu dari seseorang tertentu bernama Blake. Bisakah kita memiliki satu relawan yang nyaman muncul di Kamera dan untuk bermain game? Bagaimana di sana? Ayo up. Baiklah, sehingga permainan yang Anda baru saja sadar sukarela untuk bermain - [Tepuk Tangan] DAVID Malan: - adalah sesuatu dari masa lampau yang disebut "Frogger." Siapa nama Anda? Renda: Renda. DAVID Malan: Redna? Renda: Ini seperti Brenda dengan b. DAVID Malan: Oke, Renda. David. Senang bertemu Anda. Jadi di sini di "Frogger," dan jika kita bisa meningkatkan volume hanya sedikit, Anda ini sedikit katak hijau di bagian bawah. Anda dapat menggunakan kiri, kanan, atas dan bawah, dan tujuan Anda adalah untuk menyeberang jalan, menyeberangi sungai, dan menyentuh bantalan lily di bagian atas. Aw. Satu lagi t - redo, oke? Mari kita berhenti hit. Tidak ada yang melihat bahwa. [Tepuk Tangan] [Tepuk Tangan] DAVID Malan: Ya. Sangat baik dilakukan. Baik, terima kasih. Sehingga ada Frogger. Sekarang bahwa Anda tahu apa yang Anda sudah mendapatkan dirimu ke, relawan satu lagi untuk berbeda Permainan disampaikan oleh siswa lain. Anda ingin datang ke atas? Siapa nama Anda? RICHARD: Richard. DAVID Malan: Richard. Baiklah, Richard, ayolah up. [Tepuk Tangan] DAVID Malan: Anda memiliki sesuatu yang akan terdengar familiar segera, jadi di sini adalah instruksi Anda. Jadi suatu saat, beberapa potongan puzzle yang akan menggulir ke atas dari layar yang terlihat baik kiri atau kanan atas atau bawah. Anda akan perlu menekan tombol panah sedemikian rupa bahwa sesuai dengan potongan-potongan puzzle berbaris dengan penampung di atas. Jadi, ketika Anda melihat panah kiri, dan garis-garis dengan kiri panah, memukul panah kiri. Anda mungkin mulai. [MUSIC - "KUAT" Kayne WEST] DAVID Malan: Semua bulat, besar kan tepuk tangan untuk Richard. [Tepuk Tangan] DAVID Malan: Sangat baik dilakukan. Terima kasih. [Tepuk Tangan] DAVID Malan: fun dan Jadi, tampaknya, semacam mengintimidasi seperti itu mungkin untuk mengimplementasikan sesuatu sebagai tampaknya canggih seperti ini, menyadari bahwa siswa tidak berangkat dan hanya menulis ini sekaligus. Sebaliknya, Anda dapat memecah masalah yang tampaknya kompleks karena hal ini menjadi potongan-potongan yang lebih kecil, dan ini juga merupakan akan menjadi tema. Hal terburuk yang dapat Anda lakukan dalam menulis sebuah program di hampir semua bahasa adalah untuk duduk, benar-benar gembira, menulis sialan keseluruhan, dan kemudian hanya berharap bahwa ia bekerja dengan kali Anda selesai menulis. Sebaliknya, proses pemrograman pada umumnya harus sangat disengaja, sangat berulang, dimana Anda hanya menetapkan langkah-langkah yang sangat kecil untuk dirimu, gigitan-ukuran potongan Anda ingin menggigit, dan sehingga Anda memiliki kewarasan ini cek, tonggak kecil yang Anda dapat bertemu. Dan kemudian Anda membangun di atas mereka untuk menciptakan lebih canggih hal masih. Jadi misalnya, bagaimana kita bisa pergi tentang menerapkan permainan seperti ini? Nah, terus terang, saya pasti akan mulai dengan hanya mendukung salah satu kunci pada suatu waktu. Mari kita menerapkan dukungan untuk panah kiri. Jadi siswa harus entah bagaimana membuat di Photoshop, atau Gores sendiri menggunakan editor grafis kecil, suatu Tombol panah yang terlihat seperti yang di kiri atas sana, hanya placeholder abu-abu. Kemudian siswa harus mencari tahu apa x, y berkoordinasi meletakkannya, di mana untuk memasukkannya ke dalam jendela. 0, 0 adalah di sini, jadi Anda harus mengetahui jumlah piksel, atau titik, untuk mengimbangi panah yang dari bagian atas layar. Dan kemudian setelah itu di tempat, program Anda tidak benar-benar melakukan apa pun, sehingga Anda kemudian perlu sprite kedua, untuk Misalnya panah hijau yang juga Proses mengarahkan kiri, dan Anda maka perlu untuk mulai menulis beberapa script untuk itu. Dan Anda perhatikan, mungkin, bahwa hal-hal mulai datang pada kecepatan yang berbeda, dan warna yang berbeda dalam lokasi, dan itu karena siswa menggunakan sedikit semu keacakan. Dan oleh keacakan semu, saya hanya berarti mengambil nomor antara sesuatu dan sesuatu karena Anda dapat mulai hal peta, seperti jika nomor tersebut antara satu dan lima, baik, mari kita membuat hal yang hijau. Jika itu antara 6 dan 10, mari kita membuat potongan puzzle merah sebagai gantinya. Jadi selama Anda memiliki cara untuk menghasilkan beberapa jenis keacakan, Anda kemudian dapat membuat keputusan yang didasarkan pada keacakan. Dan saya tetap semu mengatakan acak karena ada rahasia kecil. Komputer tidak bisa datang dengan nomor acak. Mereka hanya dapat melakukan apa yang mereka diberitahu karena mereka buatan manusia perangkat. Mereka tidak bisa hanya menebak nomor seperti kita manusia merasa seperti kita bisa. Sebuah komputer harus melakukan sesuatu matematika untuk menyulap ilusi nomor matematika, kadang-kadang menggunakan saat hari waktu sebagai masukan untuk mencari tahu apa yang nomor untuk kembali, tetapi lebih pada lain waktu. Untuk saat ini, hanya tahu bahwa kita dapat menghasilkan keacakan semu. Jadi setelah saya memiliki kemampuan untuk panah kiri untuk memulai muncul pada waktu yang berbeda dan pada kecepatan yang berbeda, maka Aku bisa kembali dan menambahkan beberapa IF kondisi. JIKA sprite ini menyentuh yang lain, DAN panah kiri tombol telah ditekan - sehingga tiga kondisi dalam kasus itu. Saya bisa menggunakan DAN blok mungkin, dalam hal ini - KEMUDIAN saya ingin pergi ke depan dan kenaikan skor. Dan di atas, kita memiliki skor, kami telah mengagumkan, Keren, Baik, dan Boo. Jadi rupanya ada lima variabel yang mahasiswa ini digunakan untuk melacak berbagai metrik tersebut. Jadi singkatnya, hasil akhirnya adalah menakjubkan. Ini menyenangkan, itu menyenangkan untuk bermain, itu menarik, tapi ini bukan dimana siswa mulai. Dia mulai pada set jauh lebih kecil dari langkah-langkah. Jadi apa adalah beberapa blok bangunan lainnya yang bisa kita menenun ke dalam program? Nah, ada konsep lain dalam kebanyakan bahasa, Gores di antara mereka, yang dikenal sebagai benang. Jadi komputer dapat benar-benar tidak benar-benar melakukan beberapa hal pada waktu, setidaknya tidak biasanya. Sebaliknya, komputer umumnya hanya memiliki satu CPU, dan bahkan meskipun komputer super cepat dan bisa, karena itu, menciptakan ilusi melakukan beberapa hal sekaligus - memeriksa email Anda, mendapatkan instan pesan, mencetak dokumen - benar, komputer hanya melompat dari pencetakan untuk chatting untuk mengirim email, kembali dan kembali dan maju mundur begitu cepat sehingga kita manusia cerdas lambat hanya tidak menyadari bahwa itu sebenarnya menjalankan program-program sedikit pada suatu waktu. Sekarang, ini sedikit dari putih berbohong hari ini karena, saat ini, banyak komputer kita adalah apa yang disebut multi-core, sehingga Anda memiliki satu CPU, tetapi beberapa core, yang merupakan jenis seperti memiliki beberapa CPU. Dan jadi kadang-kadang, komputer benar-benar dapat melakukan beberapa hal pada suatu waktu, tetapi umumnya dalam sebuah program, program bergantung pada hal-hal yang disebut benang. Jadi benang adalah semacam program mini yang dapat ada di samping program lain miniatur dan dapat menjalankan secara paralel, atau setidaknya dapat berjalan di bawah ilusi bahwa mereka berjalan secara bersamaan. Jadi Scratch mendukung hal-hal yang disebut benang. Anda dapat memiliki beberapa script mengeksekusi sekaligus, sama seperti kita lakukan dengan singa laut, dan ini memungkinkan kita untuk benar-benar kemudian memiliki interaksi di antara sprite. Biarkan aku pergi ke depan di sini dan menarik, katakanlah, benang, dan bermain ini sebagai berikut. Kami memiliki dua sprite, masing-masing kita akan melihat hanya memiliki satu naskah. Dan Anda melihat tampaknya ada beberapa kecerdasan dalam kucing dalam satu ini karena dia semakin dekat - [Mengaum] DAVID Malan: - dan lebih dekat dengan burung kecil. Jadi bagaimana adalah operasi burung? Nah, mari kita lihat burung yang pertama. Script burung berkata ketika bendera hijau diklik, pergi ke x sama dengan negatif 115 dan y sama dengan 150. Jadi aku hanya tahu lokasi acak di mana saya ingin burung untuk memulai, dan aku hanya menjatuhkan dia di sana secara default. Kemudian Selamanya JIKA tidak menyentuh kucing, jadi ini adalah berbeda jenis konstruksi perulangan, tetapi ide yang sama, melakukan ini lagi dan lagi dan lagi. Jadi selama Anda tidak menyentuh kucing, bergerak tiga langkah, dan jika Anda berada di mental, tepi, di mana itu semacam refleksi dalam arti biliar. Jadi itulah bagaimana burung bergerak di sekitar jenis tampaknya secara acak, tapi itu hanya karena itu memantul dari dinding dalam kasus ini. Sekarang kucing, sementara itu, adalah jenis kecurangan. Kucing, ketika bendera hijau diklik, ya, dimulai pada beberapa lokasi, lokasi yang acak - setidaknya sebagian sesuai pick random hijau blok ada - dan kemudian Selamanya JIKA menyentuh burung, memutar suara singa, dan kemudian berhenti script. Jadi ketika aku berkata menghentikan, atau keluar sebelumnya, ada teka-teki bagian dalam Scratch yang hanya akan membunuh program pada saat itu titik karena itu agak logis dilakukan. Tapi sebaliknya, di sini, perhatikan apa yang akan terjadi. Titik terhadap burung dan bergerak satu langkah. Jadi ini mengarah ke burung adalah jenis keuntungan kucing telah di bahwa itu merpati dalam pada burung bergerak, dan kita bisa sekarang membuat program ini semua lebih menarik. Alih-alih bergerak satu langkah pada satu waktu per siklus CPU, per menyerang tol bel, sehingga untuk berbicara, biarkan aku pergi ke depan dan bergerak, katakanlah, lima anak tangga sekaligus sebagai kucing. Klik dijalankan, dan sekarang ia benar-benar menemukan dia dengan cepat. Jika kita dua kali lipat ini lebih lanjut untuk 10 langkah, itu semacam berjalan tepat untuknya. Sekarang, kita bisa memberikan burung, mungkin, sedikit keuntungan. Mari kita pergi ke burung dan mengatakan bukannya bergerak tiga langkah, mari kita memindahkan dia 30 langkah. Tapi dia masih terjebak pada akhirnya. Jadi di sini, kita memiliki dua benang. Ini dipenjara di Scratch dengan dua script dan dua sprite, tetapi ide dalam bahasa lain adalah bahwa Anda dapat menulis, pada dasarnya, terlalu banyak program seperti ini dan memiliki mereka berjalan benar, atau imaginarily, secara paralel. Sekarang, ada juga konsep ini dalam pemrograman dikenal sebagai peristiwa, dan ini adalah sesuatu yang kita tidak akan melihat di C, Bahasa yang dikenal sebagai C. Kami akan melihatnya menjelang akhir semester dalam pemrograman web, saat kami memperkenalkan JavaScript dan Gagasan halaman web bangunan yang dinamis dan berinteraksi dengan pengguna. Jadi dalam hal ini, kita memiliki contoh yang sangat sederhana dari dua sprite, anak laki-laki dan perempuan, masing-masing memiliki masing-masing benang, tapi entah bagaimana kedua saling berkomunikasi dengan cara dari sesuatu yang disebut peristiwa. Jadi biarkan aku pergi ke depan di sini dan memperbesar pada script anak itu, yang terlihat seperti ini. Ketika bendera hijau diklik, selamanya lakukan hal berikut. Jika Space kunci, atau Space Bar, ditekan, katakanlah Marco selama dua detik, itu murni estetika pada layar, gelembung bicara sedikit, tapi kemudian disiarkan. Jadi siaran adalah sepotong Scratch itu perwakilan dari kelas fungsi dalam pemrograman yang memungkinkan program yang berbeda, benang yang berbeda, antar-berkomunikasi, entah bagaimana mengirim pesan, satu sama lain. Melewati selembar kertas di kelas adalah semacam teknologi rendah setara. Jadi menyiarkan acara. Saya dapat mengirim pesan ini, dan peristiwa kata benar-benar sewenang-wenang. Scratch kadang-kadang memiliki ini drop down, jadi aku hanya datang dengan kata acak seperti acara karena sekarang, apa anak itu tidak ketika saya tekan tombol dia menyiarkan acara ini. Dan jika saya melihat sekarang di script gadis itu, script nya super sederhana karena semua dia perlu lakukan adalah tidak bertindak ketika bendera hijau diklik. Dia dirancang untuk bertindak ketika dia menerima kutipan, tanda kutip, "Event", dan pada saat itu, dia mendengarkan karena untuk acara yang disebut lagi dan lagi. Segera setelah ia menerima peristiwa itu, dia akan berteriak Polo selama dua detik. Dan sehingga Anda mungkin dapat menyimpulkan dari hal ini persis apa yang hasil selanjutnya akan menjadi. Biarkan saya klik bendera hijau. Tidak ada yang terjadi karena saya perlu melakukan apa? HADIRIN: Space Bar. DAVID Malan: Space Bar. Boy mengatakan Marco, gadis kata Polo. Tapi itu tidak sulit dikodekan per se. Itu antar-komunikasi antara script, jadi sekarang kita memiliki kemampuan untuk membuat program bahkan lebih kompleks di mana kedua entah bagaimana antar-berkomunikasi. Jadi dalam apa arah yang bisa kita ambil ini? Nah, dalam sejumlah masalah 0, benar-benar, tujuannya adalah untuk bersenang-senang dengan Scratch. Untuk edisi hacker, Anda malah akan bersenang-senang dengan lebih versi canggih dari Scratch disebut BYOB, Membangun Anda Pemilik Blok, tetapi gagasan adalah sama. Anda akan dapat - Ya, itu memang disengaja. Itu datang dari Berkeley. BYOB adalah edisi hacker versi ini, namun kedua demografi, edisi standar dan edisi hacker sama, yang Tujuan di tangan untuk minggu yang akan datang adalah benar-benar hanya untuk menyelam di mendalam, mendapatkan tangan Anda kotor dengan pemrograman, dan membuat sesuatu yang menarik, membuat sesuatu yang interaktif, membuat sesuatu yang artistik, membuat sesuatu yang menyenangkan untuk benar-benar menunjukkan, sehingga pada akhir minggu, Anda akan memiliki sebuah proyek, tidak hanya untuk pertama pset Anda CS50, tetapi Anda akan memiliki sedikit sesuatu yang Anda dapat memamerkan di Annenberg untuk teman-teman atau bahkan keluarga dengan meng-upload ke situs MIT. Dan sebagainya seperti yang saya katakan pada hari Rabu, kami berharap 90% dari kelas, secara umum, untuk melakukan edisi standar. Sadarilah bahwa ada juga ini outlet untuk anda yang dinyatakan mungkin menemukan diri Anda sedikit bosan dengan dasar-dasar dan benar-benar ingin menyelam dalam dan menciptakan visi Anda sudah miliki dengan latar belakang sebelumnya dalam hal ini lebih ramah lingkungan. Jadi biarkan aku menarik salah satu contoh lain bahwa salah satu mantan kami siswa di sini dan memberitahu melakukan sedikit sesuatu melalui lagu. Itu sama, karena hal ini memainkan, pikirkan bagaimana Anda pergi tentang pelaksanaan program ini menggunakan persis sama ini blok bangunan, sedikit keacakan semu, dan bit lagu familiar. Jika kita bisa meningkatkan volume hanya sedikit? [MUSIC - "IT'S MEN HUJAN" THE GIRLS CUACA] DAVID Malan: Itu saja untuk CS50. Kami akan melihat Anda pada hari Senin. [Tepuk Tangan]