>> [MUZIK Bermain]
>> Ini adalah CS50-- Harvard Pengenalan Universiti
kepada intelektual perusahaan sains komputer
dan seni pengaturcaraan.
Dan nama-Ku Daud Malan, dan Saya hanya berfikir pagi ini,
ia telah menakjubkan 20 tahun hari ini sejak saya duduk di mana anda semua lakukan sekarang.
>> Ia adalah 1996.
Saya adalah mahasiswa tingkat kedua, dan saya telah mengambil CS50 buat kali pertama.
Dan saya telah tidak mendapat sehingga saraf untuk mengambil diri saya tahun pertamanya,
sebahagiannya kerana pada masa itu.
sains komputer kepada saya adalah jenis suka, meh.
Saya adalah sedikit geek yang semakin meningkat , tetapi saya tidak benar-benar
mempunyai apa-apa intelek kepentingan dalam apa yang kelihatan
untuk hanya menjadi sejumlah besar orang pengaturcaraan sepanjang masa.
>> Dan saya takut untuk bersikap jujur.
Kursus dan komputer sains lebih umumnya mempunyai dan sedikit sebanyak,
masih mempunyai reputasi ini medan untuk berhati-hati, jika hanya kerana begitu ramai di antara kita
tidak biasa dengannya dan tidak pasti itu.
Dan ia benar-benar tidak sehingga saya membeli-belah kelas ini yang mahasiswa tingkat kedua fall--
dan walaupun begitu, saya hanya mendaftar kerana professor-- yang
seorang dari penasihat pertama saya, Brian Kernighan sekarang di Princeton--
membolehkan saya untuk mengambil pas kelas gagal.
Dan sesungguhnya, itulah sebabnya hari ini kita membenarkan dan menggalakkan
pelajar mengambil kelas ini duduk / UNSAT.
>> Dan hanya kemudian, oleh akhir semester
adakah saya sedar seperti, wow, ini tidak seperti bidang yang tidak dikenali.
Sesungguhnya, ini adalah sangat memperkasakan bidang,
dan lebih excitingly, terutama di kemudian hari,
kerana saya mengambil kursus dalam Seni Dramatik 101 dan Latin A
dan kemudian akhirnya grad arkeologi sekolah,
adakah saya benar-benar mula melihat persimpangan medan ini, komputer
sains, dengan kemanusiaan, sains semula jadi, seni, perubatan,
dan sebagainya.
Dan supaya apa yang hanya begitu kemas tentang sains komputer
akhirnya, kerana kami berharap yang anda akan see-- adalah kebolehgunaan
kepada bidang-bidang lain, dan bagaimana anda boleh mengambil beberapa hari ini dan semester ini
idea dan kemahiran praktikal kembali kepada domain anda sendiri,
dan benar-benar meneroka persimpangan ini seni liberal dan sains.
>> Jadi 73% daripada anda, jika lalu tahun merupakan satu petunjuk,
tidak pernah mengambil kursus CS sebelum ini.
Jadi, jika, seperti saya, anda rasa sedikit
takut, atau terus-terang anda tidak benar-benar pasti mengapa anda malah di sini.
Mungkin anda hanya mengikuti beberapa rakan-rakan lebih untuk Sanders sekarang.
Itulah betul-betul halus.
Matlamat di sini adalah untuk menyambung anda dan untuk meyakinkan anda
bahawa jika anda melihat kepada kiri dan ke kanan,
anda akan dapat melihat rakan-rakan dengan pengalaman sedikit atau sebanyak
yang anda sendiri mungkin mempunyai.
Dan sesungguhnya, kami akan berkongsi beberapa statistik lewat hari ini
apa demografi kelas biasanya kelihatan seperti.
>> Dan seperti yang ditambah reassurance-- dan kami ini maksudkan sejak saya mengambil alih kursus
dalam beberapa tahun ago-- sukatan pelajaran kursus ini
adalah this-- bahawa apa yang akhirnya perkara-perkara dalam kursus ini
tidak begitu banyak di mana anda berakhir up berbanding dengan rakan-rakan anda,
tetapi di mana anda pada minggu 11, akhir semester, akhirnya relatif kepada diri
pada minggu 0, yang di mana kami berada di sini hari ini.
Dan ini adalah apa yang saya sedar semua tahun-tahun yang lalu.
Dan saya tahu banyak kelas mengatakan ini, tetapi ia
terutama berlaku dalam bidang sains komputer.
Pada akhir hari, bidang ini tidak biasa kerana ia adalah untuk saya
dan mungkin untuk anda, adalah benar-benar hanya kira-kira penyelesaian masalah.
Dan oleh itu, ia mempunyai ini kesesuaian untuk mendapatkan bidang lain.
Dan sebenarnya, jika kita cuba untuk menyuling apa ini bermakna,
ini adalah penyelesaian masalah pada asasnya, saya berani mengatakan bahawa.
Ada input-- jadi apa sahaja yang ia adalah bahawa anda cuba untuk menyelesaikan.
Ada output, yang mudah-mudahan penyelesaian untuk masalah itu.
Dan kemudian, seperti yang kita akan berkata dalam sains komputer,
ada kotak hitam ini dalam pertengahan bahawa anda tidak semestinya
perlu mengambil berat tentang bagaimana ia berfungsi.
Anda sendiri akhirnya mungkin melaksanakan apa yang di dalam kotak itu.
Tetapi untuk tujuan hari ini dan banyak lagi umumnya dalam kehidupan, semua yang anda hargai
adalah bahawa masalah ini mendapatkan diselesaikan.
>> Dan apa kursus ini adalah akhirnya mengenai sedang meneroka
persimpangan ini input dan output,
dan apa yang dipanggil algoritma, kerana kita tidak lama lagi akan melihat,
yang melaksanakan apa yang di bawah sana, hood.
Tetapi ini input dan ini outputs-- apakah yang sebenarnya bermakna?
Nah, pada akhir hari, kita perlu jalan untuk mewakili maklumat.
Hal ini terutama berlaku dalam komputer, yang sebagai mewah dan kompleks kerana ia
mungkin kelihatan, adalah alat yang agak bodoh.
Ia mengambil masa electricity-- sama ada dari kabel atau bateri sebagai input--
dan kemudian ia menghasilkan beberapa jawapan preprogramed pada skrin.
>> Tetapi bagaimana kita dapat daripada mula untuk menyelesaikan sana?
Nah, apa yang masalah yang perlu diselesaikan?
Well, mungkin kita mungkin, di permulaan semester,
cuba untuk mengambil kehadiran di dalam bilik seperti ini.
Jadi saya boleh melakukan seperti satu, dua, tiga.
Atau mungkin, jika saya melakukannya untuk menyusun mengesan
daripada myself-- untuk mengesan things-- Saya cepat boleh kehabisan jari.
Jadi saya hanya mungkin membuat hash satu marks-- seorang, dua, tiga, empat, lima, enam,
tujuh, lapan.
Dan kita semua mungkin dilakukan ini, sama ada di tangan anda
atau di atas sekeping kertas.
Dan ini sebenarnya hanya sesuatu yang dinamakan notation-- unari
di mana jika anda hanya mempunyai satu huruf dalam abjad anda, satu atau hash
tanda dalam kes ini, bagi setiap input yang anda mahu untuk mengira,
anda perlu meletakkan salah satu daripada letters-- salah satu daripada tanda-tanda ini.
>> Baiklah.
Itu semua baik dan bagus dan tidak semua yang rumit.
Tetapi komputer tidak semua yang jauh lebih rumit.
Malah, sebahagian besar daripada anda mungkin tahu walaupun anda tidak benar-benar telah
dianggap apa ini bermakna, bahawa komputer hanya memahami sifar
dan ones-- sistem yang dipanggil binari.
Kita manusia, sebaliknya, begitu lebih canggih setakat
seperti yang kita faham sifar melalui nines.
>> Tetapi, jika binari adalah, pada mulanya pandang, tidak semua yang biasa,
ternyata ia seperti sistem dan idea-idea yang kita sudah tahu.
Jadi misalnya, pertimbangkan ini.
Ini hanya satu urutan simbol.
Dan kamu semua, apabila sambil mengerling ke arah itu, mungkin
berfikir 123-- apa-apa benar-benar menarik di sana.
Tetapi mengapa jumlah itu, 123?
Ini hanya glyphs pada screen-- hanya corak
bahawa seseorang mungkin telah dikeluarkan atau ditaip.
Tetapi jika anda seperti saya, anda mungkin ingat dari sekolah rendah
bahawa terdapat semacam ruangan atau tempat-tempat di sini.
Ada tempat yang salah dan yang tempat sepuluh dan tempat ratus ini.
Dan sebab bahawa ini adalah 123 dan bukan hanya satu corak tiga simbol
kerana, sudah tentu, jika kita mempunyai satu dalam tempat ratus,
anda melakukan matematik sebanyak 100 kali satu, dan kemudian dua di tempat yang ten.
Jadi, itu 10 kali 2, dan kemudian tiga tempat yang salah dan itulah 1 kali 3.
Dan apabila anda menambah semua orang-orang, sudah Sudah tentu, anda mendapat 100 plus 20 plus 3.
>> Oleh itu, kita bermula dengan hanya corak daripada symbols-- alphabet-- yang
tetapi kemudian kita dipetakan makna ke ia melalui lajur ini.
Nah, ternyata bahawa komputer adalah benar-benar tidak
semua yang berbeza daripada anda dan saya.
Tetapi bukannya menggunakan kuasa 10, jadi untuk speak-- 1, 10, 100, 1000,
10,000 tempat dan sebagainya forth-- mereka sebenarnya
hanya menggunakan kuasa 2-- jadi satu, 2, 4, dan kemudian
jika kita meletakkan lebih digit, 8, 16, 32, 64, 128, dan sebagainya.
Dan sebagainya ini adalah bagaimana komputer akan mewakili nombor 0,
sama seperti kita manusia.
>> 0, 0, 0-- dan anda mungkin boleh meneka apa corak sifar dan satu,
jika komputer hanya boleh bercakap 0 atau 1-- apa
corak akan mewakili bilangan kita manusia dikenali sebagai 1?
Yeah-- 0, 0, 1.
Baiklah.
Jadi 0, 0, 1 adalah bagaimana kita mewakili 1, jadi anda mungkin cenderung kemudian
untuk mewakili nombor 2, jika anda mempunyai tempat yang empat dan tempat kedua-dua ini
sebagai tempat yang salah, anda mungkin berkata, baik, jika kita mempunyai 1 di tempat yang satu ini,
dan kini kita mahu mengira sehingga 2, anda mungkin
melakukan ini dan meninggalkan ini sebagai sifar.
Tetapi sudah tentu ini tidak bagaimana sistem perpuluhan berfungsi sama ada.
Jika anda meletakkan angka dalam kedua-dua mereka tiang,
anda perlu melakukan aritmetik.
Jadi apa nombor tidak saya sengaja hanya mewakili?
>> Jadi ia adalah 3, kerana 2 kali 1 plus 1 kali 1, sudah tentu, memberikan kita tiga.
Jadi ini akan menjadi dua.
bit jenis lambungan, boleh dikatakan, sebagai 0 menjadi satu, sama seperti 9 peranan lebih
dan menjadi 0 apabila anda membawa 1.
Ini kemudiannya akan menjadi tiga sudah tentu.
Four-- satu lagi perkara yang menarik berlaku, di mana orang-orang yang bergolek
dan anda membawa 1, jadi untuk bercakap.
Jadi ini, sudah tentu, adalah 4.
>> Tetapi jika anda ke hadapan yang laju sekarang, apa nombor yang terbesar akan
untuk menjadi yang komputer boleh mewakili?
Jadi ia hanya tujuh dalam kes ini, bukan?
Kerana anda mempunyai satu dalam empat, satu dalam dua, satu dalam satu.
Jadi itulah 4 plus 2 plus 1.
Jadi yang memberikan anda tujuh.
Dan sesungguhnya, ia akan kelihatan pada pandangan pertama
bahawa komputer boleh mengira tidak lebih daripada ini.
>> Tetapi ini sudah tentu tidak benar.
Apa yang kita manusia lakukan apabila kita mahu untuk mengira yang lebih tinggi daripada seperti 999?
Hanya membawa satu dan hanya menambah digit keempat ke kiri.
Dan maka sesungguhnya kita boleh.
Kita boleh mempunyai lapan ini tempat dan tempat ke-16 ini,
dan tempat yang 32 itu, 64, 128-- dan anda hanya boleh menyimpan berlaku sehingga infiniti.
Jadi ini sifar dan ones-- dipanggil system-- binari
adalah apa yang seorang saintis komputer akan umumnya memanggil sedikit, atau angka binari.
>> Tetapi sekarang, bagaimana kita dapat daripada konsep atau grafik perkara-perkara ini
kepada komputer sebenar?
Kita seolah-olah ponteng langkah di sini.
Well, satu-satunya input pada akhir hari, ke komputer riba saya di sini
aliran ini elektrik.
Walaupun ia telah lama masa kerana anda berfikir tentang
atau tidak pernah berfikir tentang bagaimana elektrik berfungsi,
ada elektron yang mengalir di dalam atau keluar, dan itulah saya jenis input.
>> Jadi, jika itu sahaja yang kita mendapat sebagai input di sini,
apa yang boleh kita lakukan dengan maklumat tersebut?
Nah, kita mungkin berfikir sifar sebagai hanya ketiadaan elektrik.
Tidak ada yang flowinw, tiada apa yang bergerak, tiada apa yang berlaku.
Itu hanya lalai state-- sifar.
Tetapi jika ada elektrik mengalir, mengapa tidak kita hanya sewenang-wenangnya, tetapi di seluruh dunia
konsisten, memanggil bahawa salah satu.
>> Jadi hanya dengan tidak mempunyai kuasa, kita mempunyai sifar, ya kuasa,
kita mempunyai one-- tidak ada kuasa, ya kuasa.
Dan dengan cara itu, menggunakan sesuatu lebih fizikal atau elektronik
kita mula melaksanakan idea ini daripada sesuatu sama ada menjadi satu atau sifar.
Malah, kita boleh melakukannya di sini.
tidak jadi di sini, saya mempunyai tiga tetapi lapan mentol lampu, setiap yang
mempunyai suis sendiri.
>> Dan jadi jika saya mahu untuk mewakili nombor tujuh di sini,
Saya mungkin menghidupkan tiga mentol lampu.
Dan sesungguhnya, di dalam komputer saya adalah berjuta-juta,
berbilion-bilion perkara yang hanya lebih kecil daripada itu, yang dikenali sebagai transistor,
suis, yang anda hanya menghidupkan dan mematikan.
Jadi ini big-- agak suis big-- dalam laptop-- saya
banyak, banyak, banyak, banyak lagi suis.
Tetapi semua mereka lakukan adalah tepat bahawa- menghidupkan sesuatu pada, menjadikan sesuatu dari.
Dan oleh itu, komputer boleh mewakili, dengan orang-orang berjuta-juta atau berbilion-bilion
transistor, banyak dan banyak sifar dan satu.
Dan ada perkakasan lain masih yang membolehkan anda menyimpan maklumat jangka panjang,
supaya apabila anda menarik plug, anda tidak hilang.
Tetapi itu cerita untuk hari lain.
>> Jadi apa yang kita boleh lakukan dengan bit ini?
Mungkin kita hanya untuk mengambil tekanan kira me--
mungkin seseorang mahu datang di sini dan mempersembahkan demo?
Saya melihat tangan pertama ini.
Apa nama anda?
MADAY: Maday.
DAVID MALAN: Maday, datang ke atas.
Gembira dapat bertemu dengan anda.
MADAY: Nice untuk bertemu dengan kamu.
>> DAVID MALAN: Marilah cara ini.
Saya tidak perlu bibir kamu.
Baiklah.
Jadi di sini, kita ada, notice-- satu, two-- kami akan mengedit out-- satu, dua, empat,
lapan, 16, 32, 64, 128.
Ini adalah sengaja.
Ada lapan bit sini-- binari sifar digits-- dan satu.
Dan sedikit ialah unit berguna measure-- tidak berguna unit ukuran
ke sendiri.
Biasanya anda mahu sekurang-kurangnya lapan perkara-perkara ini, juga dikenali sebagai
bait.
Jadi kita mempunyai bait bit di sini.
>> Jadi, jika kita mahu untuk mencabar anda dengan, misalnya, mengeja, dalam binari,
nilai ini sini-- 42.
Mahu mengambil tikaman pada itu?
>> MADAY: [didengar].
DAVID MALAN: Ya, hanya menolak suis putih yang kecil di hadapan.
Dan anda mahu untuk mengeja daripada 42, dan untuk dimenangi
adalah tekanan CS50 ini bola jika anda mendapatkan ini.
Baiklah.
Jadi, anda mempunyai 32.
Kami akan memerlukan 42.
Jadi itulah lapan, jadi itu 40.
Dan excellent-- sangat baik dilakukan.
Terima kasih.
>> [BERTEPUK TANGAN]
Baiklah.
Oleh itu, kita mempunyai satu lagi tekanan bola.
Mari kita buat ini sekali lagi jika kita boleh.
Seorang sukarelawan yang lain?
bola tekanan percuma, bola tekanan percuma.
OKEY.
Di sini di tengah-tengah, anda ingin turun?
Baiklah.
Saya tahu.
Di sana kami pergi.
>> Jadi nombor sini-- datang ke bawah.
Siapa namamu?
>> DAVEY: Davey.
>> DAVID MALAN: Davey.
OKEY.
Naiklah, Davey.
Gembira dapat bertemu dengan anda.
Dan apa yang kita akan mempunyai anda spell-- jika anda boleh berlama-lama di sana
hanya satu moment-- adalah nombor 50.
Tetapi, tetapi, tetapi tetapi, tetapi, ini adalah magnet sekolah rendah untuk sebab.
Hanya mendapat sedikit lebih keras, ok?
Masih ada lapan.
Baiklah.
Jadi apa yang kita ada di sana?
Kami mempunyai 32.
Nice.
32 plus 16 memberikan kita 48-- begitu dekat.
Dan indah.
Tahniah kepada Davey juga.
>> [BERTEPUK TANGAN]
>> Baiklah.
Oleh itu, kita boleh melakukan ini sepanjang hari, dan ia tidak mendapat semua yang banyak lebih
menarik dan lebih mencabar.
Tetapi itu benar-benar point-- yang adalah bagaimana agak mudah
ia adalah, pada akhir hari, apa yang komputer tidak untuk menyimpan maklumat,
untuk menyimpan input dan akhirnya menyimpan atau mewakili mereka output.
Tetapi nombor sahaja tidak semua yang menarik itu.
>> Jadi manusia, beberapa tahun yang lalu, membuat keputusan, anda tahu apa?
Ia akan lebih baik jika komputer tidak hanya
kalkulator untuk aritmetik operasi, tetapi sebenarnya boleh
melakukan perkara seperti pemprosesan perkataan, atau e-mel, atau jelmaan lebih moden
jenis-jenis teknologi.
Dan supaya dunia memutuskan sewenang-wenangnya, tetapi universal,
bahawa jika anda mahu untuk menyimpan modal Surat dalam komputer, anda tahu apa?
Mari kita semua bersetuju untuk menyimpan beberapa corak sifar dan ones--
bits-- yang akhirnya mewakili nombor perpuluhan 65.
Kami akan hanya bersetuju mengenai itu.
>> 66 akan mewakili B, 67 akan mewakili C,
dan ada tandan corak yang lain sifar dan satu, atau nombor asas,
yang akan mewakili surat lain yang masih.
Jadi, jika anda jenis mental menyerap ini untuk seketika,
Saya sengaja meletakkan A melalui I, di mana H 72 dan saya adalah 73.
Jika komputer itu, dalam konteks program pemprosesan perkataan atau e-mel,
mendedahkan di bawah hood untuk mempunyai ini corak corak bits--
bit mewakili 72, kemudian 73, kemudian 33--
apa yang mungkin ini mengeja dalam program itu?
>> Jadi hi, dan kemudian sesuatu.
Kita tidak semestinya tahu, tetapi sesungguhnya 33-- tidak pada carta earlier--
adalah semata-mata tanda seru.
Jadi 72 adalah H, 73 I, 33 berlaku menjadi tanda seru masih.
Tetapi itu semua baik dan baik, dan sebenarnya pada masa kini, dan bukannya
hanya menggunakan tujuh atau lapan bit, terima kasih kepada sesuatu
dipanggil Unicode berbanding kepada ASCII kembali pada hari itu,
kita sebenarnya boleh mewakili lebih watak-watak menarik daripada hanya
ini asal Bahasa Inggeris berat sebelah huruf.
Tetapi kita juga boleh mewakili walaupun perkara yang lebih kemas seperti warna.
>> Jika anda pernah mendengar akronim RGB, merah, hijau, biru, yang
hanya bermakna bahawa komputer biasanya menggunakan tiga set bits--
beberapa bilangan bit yang mewakili beberapa berapa banyak merah yang anda mahu,
satu lagi set bit untuk berapa banyak yang hijau yang anda mahu,
dan satu lagi beberapa set untuk berapa banyak biru yang anda mahu.
Jadi satu jumlah yang besar bererti banyak merah, sebilangan kecil bermakna tiada merah.
Dan sebagainya ini adalah jenis nilai pertengahan di sini.
>> Jadi memberi saya merah, memberi saya beberapa hijau, dan memberikan saya sedikit biru.
Dan jika anda campuran ketiga-tiga warna warna bersama-sama, dalam kes ini,
anda mendapat naungan keruh ini kuning atau coklat.
Tetapi telah mentaati lapan plus lapan plus eight-- jadi 24 bits--
kiri ke kanan, adalah bagaimana komputer akan mewakili warna yang tertentu.
Sekarang ini adalah hanya satu titik pada skrin.
Jika anda kelihatan benar-benar dekat di TV anda anda komputer, anda akan melihat titik atau piksel.
Dan jika anda mempunyai grid keseluruhan piksel, mendatar dan menegak,
anda mempunyai imej.
Dan kemudian jika anda mengambil imej dan kemudian mencuci
menunjukkan diri anda imej yang lain, satu lagi imej, imej yang lain, imej yang lain,
benar-benar cepat, anda sudah tentu mempunyai filem.
>> Dan sebagainya notis di mana kita bermula.
Kami bermula dengan ini sifar dan satu.
Kami bekerja dari sana kepada perpuluhan nombor, bagaimana kita mewakili mereka.
Sekarang kita mempunyai huruf abjad.
Tetapi dalam konteks yang lain menunggu, kita boleh menggunakan beberapa bit dan mewakili warna.
Sebaik sahaja anda mempunyai keupayaan untuk mewakili warna,
anda mempunyai keupayaan untuk mewakili gambar-gambar dan gifs animasi
dan lain-lain watak-watak itu pada skrin.
Dan apabila anda mempunyai sejumlah besar imej terbang oleh manusia pada satu masa,
ia kelihatan seperti gambar bergerak, dan supaya anda mendapatkan video juga.
>> Jadi menggunakan ini sangat primitif mudah kita
mempunyai cara yang mewakili akhirnya semua bentuk-bentuk media.
Dan kami telah disarikan lagi dan lagi dan lagi, sehingga kita
mendapatkan dari peringkat rendah ke tahap tertinggi ini.
Supaya memberikan kita ini idea umum abstraksi.
Tetapi kita bermula di sini.
>> Di sini sekarang, kita mungkin mewakili dalam suatu komputer
input kami dengan sifar dan satu, output kami di sifar dan satu,
tetapi apa yang berlaku di dalam kotak?
Itulah di mana komputer sains mendapat menarik.
Itulah di mana anda benar-benar membawa anda fikiran sendiri untuk menanggung untuk menyelesaikan masalah.
Kami kini boleh menetapkan, bagi sepanjang semester, ya.
Aku tahu bagaimana binari.
Saya masih ingat bagaimana Ascii atau Unicode-- pemetaan untuk letters-- kerja-kerja.
Dan ia pasti berdiri dengan alasan kita yang
boleh mewakili merah dan hijau dan biru, dan mewakili multimedia juga.
Tetapi ini adalah barangan yang menarik.
Inilah yang membuat seseorang mampu menyelesaikan masalah.
>> Dan satu masalah seperti kita suka lakukan, sesungguhnya,
mengambil kehadiran, atau melakukan ini secara algoritma.
Dan sekali lagi, saya boleh melakukan ini.
Saya mungkin melakukan satu, dua, tiga, empat lima, enam, tujuh, lapan sembilan.
Dan saya boleh tulis ke bawah untuk mengesan ia.
Tetapi itu hanya bagaimana saya akan mewakili maklumat.
Atau saya boleh melakukan ini faster-- dua, empat, enam, lapan, sepuluh, 12, 14, 16, 18, 20,
22-- rasanya dua kali secepat tetapi ia masih
akan mengambil banyak masa.
>> Tetapi ternyata, jika kita memanfaatkan lagi lain resource-- dan sesungguhnya komputer
hari ini mempunyai pelbagai CPU atau otak.
Ternyata komputer boleh melakukan banyak perkara pada satu masa,
dan sesungguhnya kami, di dalam bilik ini, mungkin mewakili betul-betul ini.
>> Jadi ia sedikit sosial janggal, tetapi jika anda akan humor saya
hanya satu proses tiga langkah, mari saya tanya semua orang di tempat sana hanya
untuk berdiri untuk seketika.
Berdiri.
Jadi berfikir kepada diri sendiri, nombor one-- supaya semua orang di dalam bilik ini,
kecuali orang-orang yang tidak memaksa, berfikir nombor satu.
Jadi itulah nombor anda sekarang.
Itu adalah langkah pertama, atau sebagai ahli sains komputer atau programmer
biasanya akan lakukan, kita akan untuk mula mengira pada sifar.
Jika nombor yang paling kecil kita boleh mewakili dengan mereka mentol lampu
adalah sifar, dengan hanya meninggalkan mereka semua itu, saya mungkin juga hanya
mula mengira dari sifar adalah bukan satu.
Dan sebagainya itulah yang saintis komputer lakukan.
Jadi langkah sifar, berdiri dan memikirkan nombor satu.
Langkah seterusnya adalah pasangan this-- off dengan seseorang berdiri
dan menambah nombor anda bersama-sama.
Indah.
>> Jadi pada masa ini dalam masa, literal semua orang yang mengambil bahagian
sedang memikirkan untuk nombor 2, kecuali untuk satu orang ganjil jika kita mempunyai
nombor ganjil orang di dalam bilik.
Dan kini langkah ketiga di sini akan dapat this-- salah satu daripada anda perlu duduk.
Salah satu anda perlu duduk, dan jika anda masih berdiri,
kembali ke langkah satu.
Baiklah.
Jadi lebih ramai orang sepatutnya dapat duduk.
Perhatikan bahawa ini telah mendorong yang loop-- beberapa jenis kitaran.
Sebahagian daripada anda harus canggung tersekat, pergi dan balik antara langkah satu
dan dua, satu dan dua, satu dan dua.
Tidak mengapa.
bug pertama kami.
Kami akan berurusan dengan itu.
Baiklah.
Biar saya cuba untuk merangsang perkara bersama-sama.
>> Dalam teori, hanya satu orang berdiri seperti yang semua orang terus berpasangan.
Tetapi biarlah saya mempercepatkan perkara dengan orang yang masih berdiri.
Apa nombor yang anda fikirkan?
46.
OKEY.
Teruskan dan duduk.
Kalian masih berdiri.
Siapa yang masih berdiri?
Apa nombor yang anda fikirkan?
OKEY.
>> Oleh itu, kita akan kembali kepada anda.
Di belakang?
Apakah itu?
22.
OK orang lain sehingga top-- yeah?
34.
OKEY.
Di sini pada right-- saya di sini?
132, sangat bagus.
22?
>> OKEY.
Dan siapa yang masih berdiri?
Dekat sini?
46, sangat bagus.
72.
Saya tidak boleh gerai lebih lama.
Yeah?
30, nice.
Dekat sini?
23?
23.
>> Dan saya fikir itu semua orang kecuali anda semua, tiada tekanan.
Oh, tunggu.
28?
Hanya lapan.
OKEY.
Hanya lapan.
Bawah ini?
30.
23.
24.
18.
Ini merupakan pelaksanaan yang paling teruk algoritma ini pernah.
OKEY.
Jadi orang lain?
Sesiapa lagi?
OKEY.
Satu lagi.
16?
OKEY.
16.
Baiklah.
Jadi, jika saya tidak terlepas sesiapa dalam silau di sini, apabila saya tekan Enter,
kita lihat, algorithmically, yang Jumlah penduduk di Sanders.
Kerana sekali lagi, ia seolah-olah semua orang seperti yang anda duduk, meninggal nombor anda off
kepada orang lain, kepada orang lain, kepada orang lain, supaya dalam teori,
pada akhirnya, hanya satu janggal orang harus dibiarkan berdiri.
Tetapi itulah denda.
Kami dipercepatkan perkara secara manual.
Ia amat sukar untuk melihat dalam ruang tertentu.
>> Dan jumlah bilangan orang kita fikir ada di sini adalah 546.
Jumlah saya tangan oleh felo pengajaran,
siapa yang melakukannya lama cara sekolah lambat, adalah 820.
>> [KETAWA]
>> [BERTEPUK TANGAN]
>> Tidak mengapa.
Jadi pasti kemudian, terdapat serangga ini.
Dan itulah denda.
Dan supaya berfikir kembali ini yang sesuatu yang kali pertama
anda menulis tidak semestinya bekerja.
Ini telah berlaku kepada saya di sini juga.
Tetapi mari kita kini mempertimbangkan bagaimana kita mungkin memohon idea yang sama untuk sesuatu
anda mungkin telah melihat sebelum ini, yang ialah yang lalu sini-- teknologi sekolah
buku telefon yang sangat besar.
Dan andaikan bahawa buku telefon ini mempunyai 1,000 muka surat dan 1000 nama-nama
dan nombor abjad di dalamnya.
>> Well, kita jenis boleh memohon yang sama idea untuk masalah yang sangat fizikal ini,
hanya menggunakan saya.
Saya hanya jenis ditipu dengan memanfaatkan anda semua
dengan banyak dan banyak CPU yang berbeza atau otak melaksanakan beberapa algoritma.
Tetapi jika ia hanya sedikit lama saya, saya masih boleh
memanfaatkan intipati yang sama idea membahagikan dan menakluk masalah yang
lagi dan lagi, di mana separuh daripada anda, separuh daripada anda, separuh daripada anda, separuh daripada anda,
secara teori disimpan duduk, sehingga kita dibiarkan, secara teori,
dengan hanya satu orang.
>> Jadi dalam sekolah lama ini technology-- kita tidak
perlu ini map-- ini teknologi sekolah lama,
kita mungkin mula mencari seseorang suka Mike Smith, satu halaman pada satu masa.
Dan saya melihat bahawa tidak ada, Mike tidak ada di sini.
Saya masih dalam seksyen A.
Akhirnya, saya mendapati diri saya dalam seksyen B.
Dan ini adalah algorithm-- yang langkah demi langkah arahan.
Bermula pada halaman awal dan yang pada satu masa, mencari Mike Smith.
Adakah ini correct-- ini algoritma atau pendekatan?
>> Ya, ia betul.
Jika Mike ada di sini, akhirnya Saya akan mendapatkan kepadanya.
Tetapi ia tidak cekap.
Ia jelas sangat perlahan.
Jadi saya boleh memanfaatkan twosies sama mendekati.
Saya mempunyai jenis dua, empat, enam, lapan, 10, 12.
Ia adalah dua kali lebih cepat.
Saya akan dapat Mike lebih cepat jika dia ada.
Betulkah?
Ya, tetapi saya mendengar tidak little--.
Sekarang saya mendengar tiada a.
Yeah.
Ada bug berpotensi.
Mungkin Mike hanya sengaja mendapat diapit di antara dua muka surat,
kerana saya terbang melalui ini dua pada satu masa.
Jadi sekurang-kurangnya kita perlu beberapa jenis tetap bersyarat.
Saya perlu berkata, hey, jika saya memukul seseorang yang
nama bermula dengan T bukannya S, Saya lebih baik menggandakan kembali sekurang-kurangnya satu halaman.
Jadi kereta pada mulanya, tetapi dipecahkan.
Tetapi tidak seorang pun daripada kita akan mencari Mike Smith melalui telefon 1000 halaman
menempah satu halaman pada satu masa.
Apa yang orang biasa akan lakukan?
Anda akan pergi ke S, jika anda tahu di mana S.
Anda mungkin pergi secara kasar ke tengah atau sedikit condong ke arah akhir.
Dan saya melihat ke bawah di sini dan Saya dalam seksyen M.
Tetapi apa yang anda tahu tentang masalah ini sekarang,
bahawa kita tidak semestinya tahu sebelum dengan kita semua hanya mengira diri kita
setara?
Well, Mike jelas akan berada dalam setengah ini buku
jika dia di sini sama sekali kerana ia disusun.
>> Dan supaya anda boleh sangat dramatically--
>> [Tercungap-cungap]
>> Saya tahu.
>> [BERTEPUK TANGAN]
>> Ia sebenarnya benar-benar mudah jika anda melakukannya ke bawah tulang belakang di sana.
Tetapi anda boleh membuang separuh daripada masalah yang jauh.
Sekarang, saya ditinggalkan dengan problem-- yang sama mencari Mike Smith dalam telefon book--
tetapi kini buku telefon bermula pada M dan pergi ke Z, tetapi ia separuh besar.
>> Tetapi ini adalah apa yang mengesankan.
Sama seperti dalam teori, anda semua, apabila anda semua duduk hanya separuh pada satu masa,
masalah ini mendapat setengah sebagai besar, separuh besar, lagi dan lagi.
Jadi telah masalah ini menjadi Masalah yang sama tetapi separuh besar.
Kini ia adalah satu masalah 250 halaman.
Sebaik sahaja saya sedar, oh, Saya dalam seksyen T sengaja.
Saya telah pergi terlalu jauh.
Saya boleh membuang separuh buku telefon jauh.
Sekarang, saya turun kepada perempat daripada masalah.
>> Dan anda boleh ulangi, ulangi, ulangi sehingga, dalam teori, anda
ditinggalkan dengan hanya satu halaman.
Dan jika Mike adalah pada laman tersebut, Saya kini boleh menyelesaikan masalah ini.
Tetapi berapa cepat yang saya menyelesaikannya?
Dalam kes pertama, ia membawa saya seperti mungkin 1000 langkah-langkah untuk mencari Mike Smith.
Ia mungkin mengambil me-- Saya mengambil buku telefon
dan saya mula mencari satu halaman pada satu masa,
dan Mike mungkin 1,000 muka surat kemudian.
>> Pendekatan kedua mungkin mengambil saya 500 langkah-langkah,
kerana saya terbang melalui dua pada satu masa.
Dan pendekatan ketiga walaupun, ia amat kuat.
Tetapi mari kita mempertimbangkan apa yang kita sebenarnya lakukan dengan Pendekatan ketiga ini.
Saya akan mempunyai apa yang saya akan memanggil hanya ini kenyataan di sini, satu pada satu masa.
Mengambil sebuah buku telefon.
Dibuka kepada pertengahan buku telefon.
Lihatlah nama.
Dan kemudian perkara mendapatkan sedikit lebih intelektual yang menarik,
jika masih mudah.
Jika Smith adalah antara nama pada bahawa laman semasa,
kemudian melakukan sesuatu yang bersyarat.
Ia seperti garpu di jalan raya.
Panggil Mike.
Jika Mike merupakan antara nama yang pada laman tersebut, yang dikenali sebagai Mike.
Tetapi hanya berbuat garis empat jika talian pokok, jika anda akan, adalah benar.
Jawapan kepada soalan itu adalah ya.
>> Lain jika Smith adalah awal book-- yang dalam erti kata lain, jika saya dalam seksyen M
dan saya mencari orang yang dapat kiri, maka apa yang perlu saya lakukan
adalah sesuatu yang amat serupa.
Kemudian saya perlu membuka ke tengah separuh kiri buku ini.
Oleh itu, pergilah kiri, dan kemudian kembali ke langkah dua.
Lihatlah nama-nama di sana.
>> Jadi dalam erti kata lain, melakukan perkara yang sama, tetapi masalah yang sudah separuh.
Anda tahu apa lagi?
Jika Smith yang kemudian dalam buku ini berdasarkan pada halaman saya melihat,
dibuka kepada orang tengah separuh betul buku ini
dan kemudian kembali lagi ke langkah dua, else--
ada kemungkinan keempat di sini.
Mike sama ada di sini atau ke kiri atau ke kanan atau tidak ada.
Dan di sini kita lebih baik mempertimbangkan ini.
Dan sebenarnya, jika anda pernah mempunyai komputer anda hanya kemalangan kepada anda,
yang kadang-kadang, tetapi tidak biasa, hasil hanya programmer manusia tidak
menyedari, oh menembak, ada sebenarnya senario keempat ini.
Dan jika anda tidak menulis kod untuk mengendalikan situasi ini,
kadang-kadang anda tidak tahu apa komputer mungkin lakukan.
Dan sesungguhnya program mungkin crash.
>> Tetapi dalam kes ini, saya fikir mengenainya, dan saya berkata, lain berhenti,
kerana itulah keempat senario yang mungkin logik.
Sekarang, mari kita hanya menambah beberapa perbendaharaan kata jadi kami
boleh mula melambungkan sekitar istilah yang sebaliknya cukup intuitif.
Semua perkara yang saya baru sahaja berwarna kuning di sini,
Saya hanya pergi ke fungsi atau prosedur.
Mereka jenis hanya tindakan.
Jadi mengambil, terbuka kepada, melihat di, panggilan, terbuka, terbuka,
quit-- ini hanya tindakan, atau kita akan memanggil mereka lebih secara rasmi, fungsi.
>> Sementara itu, kini dalam warna kuning, Saya telah menekankan perkara
bahawa- mari kita mula memanggil mereka syarat atau cawangan.
Ini adalah titik di mana keputusan anda mungkin pergi cara ini, cara ini,
atau beberapa arahan lain masih.
Jadi mereka akan menjadi syarat.
Dan kini satu ini adalah sedikit pelamun.
Mari kita memanggil soalan-soalan ini ungkapan Boolean,
selepas seseorang dengan nama akhir Bool.
>> Dan ungkapan Boolean hanya sesuatu
itulah sama ada benar atau palsu, ya atau tidak.
Jadi ia adalah soalan yang jawapan anda mengambil berat tentang, untuk berada dalam keadaan yang
membuat decision-- kembali jawapan, dan kemudian pergi kiri atau kanan, atau sesuatu
yang lain sama sekali.
>> Dan kemudian akhir sekali, ini garis sini-- kembali
ke langkah dua, kembali untuk melangkah two-- kita boleh
melaksanakan idea ini dengan cara yang berbeza.
Dan kemudian Persekitaran dengan pengalaman pengaturcaraan mungkin telah dilakukan
atau boleh bayangkan melakukan ini berbeza.
Tetapi untuk tujuan hari ini, ia adalah hanya idea yang penting.
Ini mendorong apa kita biasanya akan memanggil
yang loop-- beberapa jenis kitaran, kerana ia membuat saya melakukan sesuatu lagi.
>> Oleh sebab itu, mari kita mempertimbangkan bagaimana baik algoritma ini adalah.
Itu betul.
Jika Mike dalam buku ini, ia adalah salah satu mereka empat scenarios-- lagi dan lagi
dan sekali lagi, kita akan mencari dia.
Tetapi bagaimana gunanya itu?
Nah, kita tidak mempunyai terlalu formal di sini.
Tetapi mari kita hanya merancang sesuatu, x dan y, untuk mendapatkan
rasa bentuk masalah ini.
>> Pada paksi-x di sini adalah saiz masalah saya.
Dan mereka yang y-axis sini akan menjadi masa untuk menyelesaikan.
Jadi mungkin ini adalah bilangan muka surat.
Mungkin ini adalah saat atau halaman turns-- apa sahaja.
Walau bagaimanapun anda mahu mengira adalah apa gambar ini akan mewakili.
Dan bahawa algoritma pertama, saya akan untuk menggambarkan sebagai hanya satu garis lurus.
Jika ada n muka surat dalam buku telefon, maka ia
mungkin mengambil saya sebagai banyak sebagai langkah n untuk mencari Mike.
Jika Verizon atau syarikat telefon menambah satu halaman lagi tahun depan,
ia mungkin mengambil masa saya sekali lagi step-- satu unit masa untuk mencari Mike.
Jadi terdapat hanya satu ini kepada satu nisbah.
Ia adalah satu garis cerun lurus.
>> Sementara itu, kedua yang algorithm-- jika saya
akan dua pada dua yang time--, empat, enam, lapan, atau double--
melalui halaman dua kali pada satu masa, dua pada satu masa,
ia masih garis lurus.
Kini terdapat 01:59 nisbah, tetapi hanya sedikit lebih rendah.
Jadi, jika ada banyak halaman ini pada carta di sini dalam kuning,
yang mungkin membawa saya ini banyak langkah atau saat,
jika tidak ia akan membawa saya dua kali ganda di laluan merah.
>> Tetapi garis hijau adalah Fleet sebenar.
Ini adalah apa yang kita biasanya memanggil log logorithm--
n, di mana n adalah bilangan muka surat.
Tetapi ia adalah bentuk yang penting hari ini, kerana kita tidak mempunyai
untuk memikirkan tentang memplot titik.
>> Fikirkan tentang senario yang melampau.
Katakan Verizon esok beregu Bilangan halaman dalam buku telefon,
dari 1,000 hingga 2,000.
Dalam algoritma pertama, saya mungkin membazirkan tambahan 1000
langkah mencari Mike, hanya kerana Verizon menggandakan saiz buku ini.
Kedua algorithm-- ia mungkin membawa saya tambahan 500 langkah.
1000 lebih halaman, saya pergi dua pada satu time-- 500 lebih langkah-langkah untuk mencari Mike.
>> Tetapi itu algoritma ketiga adalah jenis ajaib.
Verizon beregu jumlah halaman dari 1000 ke 2000,
tetapi berapa banyak lagi langkah-langkah yang tidak ia membawa saya untuk mencari Mike?
Ia hanya satu, kerana saya boleh hanya lusuh buku telefon sekali lagi
daripada masalah 2000 halaman kepada 1000 masalah halaman, dan Voilà.
Saya telah mengambil santapan besar daripada itu.
>> Dan jika anda pergi benar-benar melampau, menganggap bahawa buku telefon
syarikat mempunyai sesuatu yang gila seperti yang 4 bilion halaman buku telefon.
Well jumlah langkah ia mungkin mengambil masa untuk mencari Mike Smith dalam 4 bilion
halaman buku telefon?
Ia adalah satu jumlah yang besar, tetapi hanya 4 bilion kepada 2 bilion untuk 1000000000-500,000,000,
250 million-- masih bunyi seperti nombor besar,
tetapi saya sangat cepat mendapat nilai-nilai yang lebih kecil.
>> Dan sebenarnya, jika saya melakukan matematik betul, saya hanya boleh membahagikan 4 bilion
oleh kira-kira 32 kali sebelum Saya turun ke hanya satu.
Jadi, jika buku telefon adalah 4 bilion muka surat yang panjang, ada masalah besar.
Dalam masa beberapa saat, mungkin 32 saat, saya boleh bahagikan kepada dua bahagian
dan akhirnya mencari Mike atau membuat kesimpulan bahawa beliau tidak ada.
Dan itulah intipati yang algorithm-- algoritma yang baik.
Dan itulah salah satu daripada matlamat kelas seperti ini,
cuba untuk memikirkan bagaimana saya menyelesaikan masalah ini bukan hanya dengan betul,
seperti saya sentiasa tahu bagaimana untuk melakukannya satu halaman pada time-- tetapi dengan betul dan baik.
Bagaimana saya mereka bentuk baik penyelesaian kepada masalah?
Jadi mari kita mengambil kesempatan ini, dan memberikan anda kefahaman yang sekarang
CS50 kursus itself-- memperkenalkan kakitangan kursus Beberapa ini.
Sebelum 02:00, kita akan berehat sebentar
supaya Persekitaran yang membeli-belah boleh
itik keluar dan mengambil lihat beberapa kelas yang lain
dan menonton seluruh talian ini.
Tetapi buat masa ini, izinkan saya memperkenalkan CS50, kelas itu sendiri,
dan terutama apa yang baru.
>> Jadi musim bunga lalu, kami menghabiskan masa agak sedikit time--
kakitangan kursus dan Saya-- berfikir tentang apa yang kita mahu CS50 menjadi,
dan pergi kepada pertama prinsip, jadi untuk bercakap,
untuk mempertimbangkan apa yang kita mahu kursus ini kelihatan seperti dan
seperti untuk pelajarnya.
Dan supaya anda akan melihat dalam masalah menetapkan sifar juga, jemputan
untuk mengambil lihat yang URL yang meringkaskan
beberapa motivasi di belakang berikut ciri-ciri musim luruh 2016.
>> Jadi seperti yang anda mungkin telah dikumpulkan dari TL: nota DR,
sukatan pelajaran hari ini dan juga dari katalog tentu, tahun ini di CS50,
anda hanya diharapkan untuk menghadiri today-- supaya kerja yang done--
dan kuliah yang terakhir pada 21 November.
Dan anda dialu-alukan tetapi tidak dijangka menghadiri kuliah mereka di tengah-tengah,
kerana apa yang kita lakukan tahun ini, menembak
dalam masa nyata bahan kursus ini.
Jadi semuanya akan kekal semasa dan diperbadankan
sebaik mungkin can-- peristiwa-peristiwa semasa dan perbualan yang orang mungkin
dapat mempunyai dalam industri dalam dunia, tetapi membuat bahan yang
ada, hasilnya, walaupun earlier-- lengkap dengan transkrip teks penuh
dan searchability dan pautan kepada sumber-sumber lain.
>> Dan sesungguhnya kami telah menuntut masa
dan kami kini percaya ini, bahawa kita boleh membuat, secara digital,
yang lebih mendalam, yang lebih menarik pengalaman pendidikan, berbanding
untuk mengumpul di sini beberapa 23 kali secara peribadi, seseorang mendengar seperti saya
hanya bercakap tentang sains komputer, berbanding dengan mengambil lebih aktif.
Jadi, anda akan melihat dalam sukatan pelajaran kursus lakaran semester di sini,
bersama-sama dengan apabila kuliah akan difilemkan, yang anda berada
dialu-alukan tetapi tidak dijangka, dan apabila mereka akan
dikeluarkan pada laman web kursus ini.
>> Dan apa yang kita akan lakukan di sini pada Rabu bermula minggu depan,
adalah lebih rapat, dengan hanya mereka orang yang ingin mengambil bahagian,
adalah berjalan kaki yang dipanggil melalui, di mana saya dan ketua kursus ini
sebenarnya akan membuat perkara yang sedikit lebih intim
turun di sini dalam orkestra seksyen, masih mempunyai beberapa teknologi
dan berjalan melalui set masalah minggu semasa,
dan menawarkan anda particularly-- jika di kalangan mereka yang kurang comfortable-- semua lebih
bimbingan yang mungkin anda mahu atau perlu untuk cabaran minggu ini.
Begitu juga, bagi mereka yang tidak boleh menghadiri mereka secara peribadi, tiada masalah besar.
Terdapat akan juga diketuai oleh salah seorang kakitangan kanan kursus ini,
Zamalya, peluang yang sama tertanam dalam masalah yang menetapkan diri mereka sendiri.
>> Masalah menetapkan tahun ini akan dikeluarkan pada hari Jumaat
dan tidak lagi melakukan tujuh hari kemudian, tetapi 10 hari later-- sengaja
bertindih dengan setiap masalah menetapkan, untuk lebih baik menampung,
kami berharap, pasang surut dalam jadual pelajar,
terutamanya apabila ujian tengah semester atau olahraga atau ahli akademik atau ko-kurikulum
cenderung untuk datang dan pergi terutamanya pertengahan semester.
Yang sepatutnya memberikan anda yang lebih sedikit budi bicara sama ada anda depan
memuatkan minggu anda dengan CS50 atau beban belakang pada hujung minggu berikutnya sebaliknya.
Oleh itu, mencari sukatan pelajaran kursus ini di sini untuk jadual daripadanya.
Dan anda akan melihat terlalu kalangan perubahan tahun ini,
bagi mereka lebih biasa dengan pengaturcaraan pada masa lalu,
kami akan memulakan semester seperti yang kita akan hari di Awal,
memberi tumpuan terutamanya kepada bahasa yang dipanggil C, dan kemudian tidak beralih
untuk PHP, tetapi untuk bahasa yang dipanggil Python pada akhir semester
dalam konteks pengaturcaraan web, bersama-sama dengan SQL dan JavaScript,
HTML, CSS, dan lagi lebih.
>> Dan dalam jawapan kepada FAQ, sesungguhnya ia kes yang
yang CS tidak begitu menakutkan kerana saya pernah fikir ia adalah, tetapi ia adalah kerana banyak kerja
kerana saya telah mendengar ia mungkin.
Tetapi ini katakan bahawa di sini adalah beberapa statistik daripada kejatuhan 2015 badan pelajar,
mana garis biru mendatar mewakili purata bilangan jam
dilaporkan.
Dan anda akan melihat purata enam hingga 10 untuk 12-- mungkin 16
atau lebih dan sebagainya, tetapi dengan varians tinggi untuk menjadi jelas.
Dan supaya sedar bahawa tidak ada hanya pelajar lebih selesa dan kurang
selesa dalam perjalanan, tetapi sokongan yang sepadan
struktur untuk mendapatkan pelajar-pelajar melalui semester dengan jayanya.
>> Malah, dalam jawapan kepada Soalan Lazim, sekiranya anda mengambil CS50 sebagai tahun pertama?
Sama sekali.
Dan sebenarnya, saya menyesal tidak telah mendapati cara saya
atau didapati satu bidang baru tahun pertama juga.
Dan anda harus mengambil CS50 dengan kursus-kursus lain, Demi well--
dan nasihat umum kita mungkin memberi pelajar, CS50 itu mungkin
bukan jenis kelas atau kelas intro yang anda perlu mengambil dengan tiga
lain atau empat kelas p-set lain-lain.
Tetapi jika anda mengambil dua lagi p-set kelas, sesuatu yang lain, dan CS50,
benar-benar terkawal.
Saya mempunyai ramai pelajar di lalu berbuat demikian agak berjaya.
>> Dan untuk mendapatkan anda ke arah yang menamatkan talian dengan jayanya,
adakah kursus mempunyai sections-- trek yang berbeza untuk pelajar
kurang selesa, lebih selesa, dan di suatu tempat di antara,
di mana dalam perjalanan ini set masalah pertama,
anda akan diminta untuk menggambarkan diri anda.
Dan jika anda adalah antara mereka yang kurang selesa, ia adalah jenis perkara
bahawa anda hanya lebih tahu.
Dan sesungguhnya, itu menjadi berkembang demografi di CS50
untuk beberapa tahun.
>> Sehingga jatuh lepas untuk contoh, 58% daripada kelas
menyifatkan diri mereka sebagai di kalangan mereka yang kurang selesa,
dengan 9% di kalangan mereka yang lebih selesa, dan kemudian
pelajar-pelajar lain di sana pada merah menggambarkan diri mereka sendiri
sebagai suatu tempat di antara.
Dan anda akan lihat di sini topik keseluruhan dan jadual bahagian, semua yang
ditawarkan dalam orang, dalam masa sebenar, dengan kursus ini
kakitangan menakjubkan felo pengajaran dan kursus pembantu, sesetengah daripada mereka
anda akan bertemu dalam hanya seketika.
>> Seksyen diri mereka sendiri, seperti yang anda akan lihat, akan menjadi hari Isnin dan Selasa dan Rabu,
untuk membolehkan anda untuk menyelam selepas menarik, jika anda supaya
pilih, dalam perjalanan ini kuliah awal minggu itu.
Dan kemudian waktu pejabat, yang pasti, dengan setiap tahun yang berlalu,
telah tidak kurang daripada mencabar untuk kursus.
Dan tahun ini, kami tidak merancang hanya memegang jawatan hours-- satu
pada satu peluang untuk bantuan untuk pelajar pada hari Rabu Khamis
dan Ahad, yang terakhir dari orang-orang berada di sebelah petang oleh reka bentuk
untuk mengurangkan beberapa tekanan yang selalunya timbul lewat malam
p-settting dengan tarikh akhir yang looming-- tetapi waktu pejabat juga akan ditawarkan
pada hari Isnin dan Selasa dan Hari Rabu, dan Jumaat dan Sabtu,
terima kasih kepada rakan-rakan kami di HSA.
>> CS50 kini mempunyai ruang sendiri untuk pelajar dan kakitangan CS50,
di atas 67 Mount Auburn Street, di sana di Harvard Square.
Visi yang adalah bahawa CS50 TFS dan CA sepanjang minggu ini,
cukup banyak di sebahagian hari, akan berada di sana untuk sokongan.
Jadi jika anda telah mendapat beberapa soalan pada p-set
atau anda berasa sedikit disekat atau sedikit keliru,
dan palang pintu, anda telah mendapat satu jam atau setengah jam antara kelas,
terutamanya dalam square-- yang boleh anda pop dalam dan mempunyai menjawab soalan yang
daripada mempunyai kekeliruan yang clarified-- sangat banyak di dalam roh,
anda biasa, matematik yang sendiri pusat soalan matematik jabatan,
tetapi cukup banyak sepanjang masa setiap [? GCal?] Kita akan menyiarkan dalam talian.
>> Tutoring juga disediakan bagi mereka pelajar, bebas daripada kursus ini
kakitangan sendiri jika anda mahu lebih intim satu lawan satu,
atau dua atau tiga rakan-rakan sahaja, bekerja dengan salah satu daripada ahli-ahli kakitangan kursus ini.
Dan sesungguhnya, adalah ini di sini sahaja beberapa ahli kakitangan kursus ini,
beberapa daripada mereka anda akan bertemu dalam hanya seketika.
Malah, CS50 sendiri kepala pengajaran rakan-rakan,
dan kursus kepala pembantu, dan pendidik,
boleh datang ke atas, ia membolehkan mereka untuk bertanya khabar.
>> [BERTEPUK TANGAN]
SPEAKER 1: [didengar].
>> [BERTEPUK TANGAN]
SPEAKER 2: [didengar].
>> [BERTEPUK TANGAN]
SPEAKER 3: [didengar].
>> [BERTEPUK TANGAN]
>> DAVID MALAN: Dan membolehkan kita untuk membawa di atas kapal dua CS50 paling
kakitangan kanan, Rob dan Zamayla juga.
>> [BERTEPUK TANGAN]
>> Malah, kedua-dua Rob dan Zamayla telah bersama kami
sekian lama, yang saya dapat untuk pergi ke arkib CS50
dan mencari sangat SD ini rakaman daripada mereka yang mengambil bahagian
di atas pentas sendiri beberapa tahun lalu.
ROB: [didengar].
>> [BERTEPUK TANGAN]
ZAMAYLA: [didengar]
>> [BERTEPUK TANGAN]
DAVID MALAN: Terima kasih.
Jadi sebagai tambahan kepada ini ahli pasukan di sini,
CS50 mempunyai pasukan hampir 100 kakitangan, yang semuanya
akan disediakan untuk bahagian dan waktu pejabat dan banyak lagi.
Dan sebagai Rob berkata juga, ini adalah baik pulih yang paling penting
CS50 dalam tempoh 10 tahun yang Saya telah berada dalam [didengar].
[Didengar] tertumpu terutamanya dalam menyediakan struktur sokongan,
pemangkasan jauh banyak sebahagian besar yang sudah
terkumpul dalam masa 10 tahun perkembangan lelaran
pada set masalah tentu.
>> Jadi tahun ini, bukan sahaja di dalam kelas tetapi juga dalam bentuk masalah tentu
set, anda perlu mencari sesuatu untuk dapat lebih diselaraskan, trimmer, banyak
lebih terkawal daripada pada tahun-tahun yang lalu, seperti yang kita
menumpahkan beberapa bagasi itulah dibangunkan oleh sifat tahun berkembang
demi tahun dan mengulanginya.
Jadi baru dan lebih baik bermula hari ini.
>> Anda akan bertemu dengan beberapa lebih daripada kakitangan kursus di dalam [didengar]
pada jam 2:30, di mana kita berkhidmat, sebagai tradisi, kek.
Ada kek sedikit lebih daripada itu, tetapi anda akan
bertemu Erin dan Tobias dan lain-lain masih.
Dan biarlah saya memberikan anda lawatan sebelum kita mendengar
dari beberapa ahli-ahli kakitangan lain dalam kelas, apa yang menanti juga.
Malah, kita sentiasa bermula CS50 semester akan datang Sabtu,
dengan apa yang dipanggil Hari CS50 Puzzle.
>> Ia tidak ada kena mengena dengan sains komputer per se,
tetapi dengan tentang masalah menyelesaikan amnya.
Dan jika anda memilih untuk mengambil bahagian, setiap beberapa jemputan,
anda mungkin telah melihat pintu menurun atau di atas pentas di sini,
ia merupakan satu peluang dalam pasukan dua atau tiga atau empat,
untuk mengambil bahagian untuk teka-teki dan pizza dan hadiah-hadiah dan more-- Sabtu ini,
harap sabar menunggu untuk lebih.
>> Anda akan mendapati terlalu bahawa setiap Jumaat, di Fire and Ice,
tidak CS50 membawa seluruh sekumpulan pelajar
untuk makan tengah hari, untuk membuat yang besar kelas berasa lebih intim,
dan secara amnya membawa bersama-sama alumni dan rakan-rakan daripada industri
untuk bercakap tentang apa yang mereka telah telah sehingga sejak tamat pengajian.
Begitu juga, tahun ini, akan kita merasmikan pertama CS50 50
pengekodan contest-- pertengahan semester peluang untuk membolehkan semua orang
pada opt dalam asas, mempunyai cabaran kecerdasan terhadap rakan-rakan,
lagi dalam pasukan dua atau tiga atau empat, dengan hanya menggunakan pengaturcaraan yang
savvy yang kemudian mempunyai di bawah tali pinggang anda selepas hanya enam atau tujuh
minggu kelas, dan mengambil bahagian dalam jenis ini persaingan
online-- jika anda ingin untuk mengasah anda sendiri kemahiran lebih-lebih dalam cabaran itu.
Pada akhir semester adalah yang dipanggil CS50 Hackathon--
peluang yang bermula pada 07:00 PM berakhir pada 7:00 AM, dan di sepanjang jalan
12 jam malam di mana untuk menyelam ke dalam project-- akhir kursus ini
peluang untuk mereka bentuk dan melaksanakan apa-apa yang paling menarik
kepada anda dengan ajaranmu bimbingan rakan-rakan.
Sekitar 9:00 kita biasanya berkhidmat pizza, 01:00,
Philippe, dan beberapa daripada kita yang masih berjaga pada 05:00,
adalah ulang-alik bussed turun Jalan ke IHOP untuk sarapan pagi.
>> Dan kemudian beberapa hari kemudian adalah CS50 yang dipanggil fare--
yang akhir pameran semester dalam sambutan sejauh mana begitu banyak
CS50 pelajar datang dari minggu sifar sehingga ke minggu,
dan menyimpan dalam minda bahawa 73% daripada mereka yang rakan-rakan dan anda tahun ini mempunyai
pernah mengambil kelas CS sebelum ini.
Malah, untuk reemphasize sebanyak di sini adalah beberapa lagi muka daripada kakitangan CS50.
SPEAKER 4: [didengar].
SPEAKER 5: [didengar].
SPEAKER 6: [didengar].
SPEAKER 7: [didengar].
SPEAKER 8: [didengar]
SPEAKER 9: [didengar].
>> SPEAKER 4: [didengar].
>> SPEAKER 10: [didengar].
SPEAKER 11: [didengar].
SPEAKER 12: [didengar].
SPEAKER 13: [didengar]
>> SPEAKER 14: [didengar].
>> SPEAKER 13: [didengar].
SPEAKER 15: [didengar]
SPEAKER 16: [didengar].
>> SPEAKER 11: [didengar]
SPEAKER 5: [didengar].
DAVID MALAN: Sebahagian daripada pasukan sedang mereka membeli-belah kelas.
Tetapi jika ahli-ahli kakitangan CS50 berada di sini,
boleh datang pada sehingga hanya untuk seketika.
CS50 TFS dan CA dan [? kakitangan ?] ahli sini-- ini hanya sedikit yang
daripada faces-- salah seorang daripada mereka anda hanya melihat, dan beberapa other-- dan beberapa yang lain
masih.
Apa kata kita pergi ke depan dan membolehkan anda semua rehat lima minit.
Jika anda perlu keluar untuk itik kelas kedai, itulah denda.
Dan dalam masa lima minit, kami akan menyambung semula, mengambil melihat Scratch-- pertama
bahasa pengaturcaraan kami, memenuhi Kakitangan perjalanan di sini ada yang lebih,
dan menumpukan akhirnya pada masalah set sifar.
Oleh itu, kita akan kembali dalam masa lima minit.
>> Baiklah.
Oleh itu, kita kembali.
Dan dalam baki kami masa hari ini, matlamatnya
adalah untuk memberi taraf yang sama dari segi beberapa istilah,
dari segi beberapa idea.
Kerana sesungguhnya, seperti beberapa carta lebih awal,
ada akan menjadi pelbagai tahap pengalaman di dalam kelas,
beberapa yang pelajar mempunyai mengambil beberapa program sebelum ini,
sesetengah daripada mereka tidak mempunyai.
Dan sebagainya dengan masalah pertama ini ditetapkan dan dengan bahasa pertama ini
kita mempunyai peluang untuk memulakan mengambil mudah selepas hari ini
beberapa perbendaharaan kata yang sama dan idea.
>> Dan kami akan melakukan ini dengan cara languages-- pertama kursus ini
sebagai tambahan kepada C dan Python dan JavaScript dan SQL dan HTML dan CSS,
kami akan memberi tumpuan pada mulanya dan hanya untuk masalah set sifar
kepada bahasa grafik ini, yang dipanggil Scratch, yang dibangunkan oleh Makmal Media MIT'S
di jalan, untuk membantu pelajar dan kanak-kanak terutamanya
meluahkan perasaan algorithmically-- dengan cara yang lebih konsisten dengan apa yang
kita mungkin panggilan pemikiran pengiraan.
>> Dan ia adalah satu bahasa berguna kerana dengan cepat minggu depan dalam satu minggu,
kita beralih kepada yang lebih bahasa tradisional dan batin dipanggil
C, yang semata-mata teks.
Anda hanya menggunakan papan kekunci anda dalam untuk menulis arahan
seperti ini pada skrin.
Tetapi, jika anda tidak pernah dilihat bahasa pengaturcaraan sebelum ini,
dalam hanya sambil mengerling ke arah ini, semua sama ada samar,
anda mungkin boleh meneka yang mungkin mencetak Hello World.
Tetapi ada banyak overhead sintaksis sana.
Terdapat hash yang pelik simbol atau hash tag sehingga atas.
Ada kurungan sudut, beberapa kurungan, pendakap kerinting, semi-colon--
terdapat hanya begitu banyak visual sintaks yang mendapat di jalan.
Kami memulakan kursus dengan Scratch supaya untuk mendapatkan
lalu semua orang-orang intelektual gangguan tidak menarik,
dan sebaliknya memberi tumpuan kepada idea-idea.
>> Malah, mungkin ini sebelum ini.
Ini, untuk ini, minggu hendaklah selepas.
Ini, grafik ini Scratch bahasa,
adalah bagaimana anda akan melaksanakan yang sama program-- satu program yang apabila berjalan,
hanya berkata hello dunia.
Dan apa yang baik tentang Scratch adalah bahawa itu pengaturcaraan grafik ini
persekitaran yang menggunakan kepingan teka-teki atau blok, yang hanya berpaut bersama-sama
jika ia masuk akal logik untuk berbuat demikian.
Dan dengan Scratch anda boleh membangunkan animasi dan permainan interaktif
dan seni, dan apa-apa beberapa perkara yang anda mungkin bayangkan dalam fikiran anda sendiri,
dan melaksanakannya hanya dengan mengheret dan menjatuhkan kepingan teka-teki.
>> Dan sesungguhnya, kami akan mempunyai keupayaan untuk menyatakan beberapa idea-idea sama
yang saya nyatakan tadi seketika lalu dalam konteks Mike Smith
dan mencari perkara-perkara yang telefon book-- seperti fungsi, hanya tindakan,
perkara seperti gelung yang melakukan perkara lagi dan lagi,
pembolehubah, iaitu sesuatu yang kita akan memperkenalkan,
tetapi ia biasa mungkin dari algebra-- hanya beberapa jenis pemegang tempat
untuk menyimpan beberapa nilai yang anda mungkin perlu ungkapan Boolean later--,
mana orang-orang yes no atau benar soalan palsu dari sebelum ini.
Syarat ini adalah orang-orang garpu dalam road-- orang-orang cawangan jadi untuk bercakap.
Dan kemudian ada beberapa pelamun ciri-ciri kita akan melihat sehingga ke hari ini,
dipanggil tatasusunan dan benang dan peristiwa, yang kami kemudiannya akan mengkaji semula lebih
masa dalam pelbagai bahasa.
Tetapi Scratch membolehkan kita untuk menerokai semua ini.
Jadi di sini dalam Scratch, ini ungu blok adalah apa fungsi yang biasanya
akan kelihatan seperti.
Ini sekeping teka-teki ungu yang mempunyai beberapa perkataan seperti berkata, yang merupakan tindakan itu,
dan kemudian ia mungkin mempunyai hujah atau parameter-- yang beberapa cara
daripada jenis menyesuaikan apa blok yang tidak
supaya ia tidak pra-ditentukan oleh MIT apa blok ungu ini berkata.
Malah, anda akan melihat dalam ketika itu saya dapat menaip
kata-kata seperti dunia hello, atau hello David, atau hello Zamayla,
atau apa sahaja yang saya mahu, dalam hujah untuk teka-teki yang piece-- kotak putih
di sana.
Sementara itu, jika saya mahu gelung, kita akan melihat bahawa terdapat kepingan teka-teki yang
kelihatan oren kecil seperti ini.
Dan bentuk mereka jenis mencadangkan bahawa sesuatu berlaku lagi dan lagi
dalam kitaran.
>> Jadi jika saya balut blok dunia bertanya khabar dengan selama-lamanya menyekat di Awal,
ia hanya akan terus mengatakan hello dunia selama-lamanya, agak literal.
Sementara itu, terdapat satu lagi jenis gelung dalam Scratch
bahawa kita akan see-- berulang block-- di mana, jika anda
tahu terlebih dahulu berapa kali anda mahu gelung untuk melaksanakan
nombor terhingga kali dalam fact-- anda boleh menentukan bahawa dengan menaip sebilangan
atau memasang pembolehubah, seperti x atau y seperti yang kita akan lihat.
>> Malah, pembolehubah seperti i dalam kes ini, yang
adalah nama biasa bagi pembolehubah integer yang
hanya menyimpan number-- yang integer mungkin,
menggunakan blok oren ini di sini untuk menetapkan pembolehubah seperti i kepada sifar.
Berikut adalah satu contoh dalam hijau daripada ungkapan Boolean dalam Scratch.
Walaupun ini kelihatan seperti matematik yang formula, ketidaksamaan matematik seperti ini
sebenarnya ungkapan Boolean.
Ini sama ada benar atau palsu.
Saya adalah kurang daripada 50.
Ia sama ada ya atau tidak jawapan atau jawapan benar atau palsu.
Dan kita biasanya akan memanggil ungkapan itu Boolean.
Dan ia tidak perlu berada 50.
Ia boleh menjadi x kurang daripada y, lebih besar daripada y, sama dengan y--
apa-apa bilangan lain soalan mungkin akan diminta.
>> Sekarang, pada pandangan pertama, ini mungkin kelihatan tiba-tiba agak berani di sini, dan ia adalah.
Tetapi konsep bijak, ia cukup biasa dari sebelum ini.
Jika x kurang daripada y, daripada berkata sebanyak.
Lain jika x lebih besar daripada y, maka katakanlah sebanyak.
Yang lain mengatakan x sama dengan y.
Oleh itu, kita mempunyai contoh terdapat satu scenario-- ketiga
hanya ketiga possibility-- x sama ada lebih besar daripada, kurang daripada, atau sama dengan.
Jadi kita mempunyai garpu tiga cara di jalan raya.
>> Dan perhatikan apa yang Scratch sini-- sejuk, ia akan kelihatan, mempunyai hanya satu teka-teki
keping, dalam kes ini, dalam jika blok yang lain.
Dan lagi bahawa seolah-olah membayangkan anda boleh hanya mempunyai garpu dua cara di jalan raya.
Anda boleh pergi ke kiri atau kanan, tetapi bagaimana pula bahawa senario ketiga?
Bagaimana jika x sama y?
Tiada masalah besar.
Ambil satu bahagian teka-teki, meletakkan satu di dalam yang lain daripadanya
untuk mewujudkan bersamaan semantik daripada jika, lain jika, else-- dan sekarang anda
mempunyai fork tiga cara anda di jalan raya.
Dan seperti yang kita akan lihat, kepingan teka-teki Scratch
boleh diregangkan dan berkembang, begitu sebagai untuk mengasak lebih barangan di dalamnya.
Anda tidak perlu untuk dimuatkan segala-galanya dalam saiz lalainya.
>> Ini adalah sesuatu yang kita akan tidak lama lagi lihat dipanggil array.
Ia seperti list-- beberapa cara menyimpan beberapa keping maklumat
dalam pembolehubah, bukan hanya nombor.
Ini kita akan melihat seorang wakil sesuatu yang dipanggil multi-threading.
Malah, semua anda Mac dan PC hari ini
menyokong multi-threading, yang bermakna anda boleh benar-benar
melakukan pelbagai perkara pada satu masa.
Anda boleh mempunyai Microsoft Word ke dalam latar depan, bekerja di beberapa esei.
Anda mungkin mempunyai pelayar yang dalam pembukaan latar belakang
G-mel atau Facebook atau seumpamanya.
Komputer anda boleh melakukan pelbagai perkara hari ini kerana ia adalah multi-threaded,
dan program-program mereka di dalam tertentu juga berbilang bebenang.
>> Ada perkara-perkara yang dipanggil peristiwa sebagai baik dalam dunia Awal,
dan kemudian ada cara yang terlalu, untuk membuat sendiri kepingan teka-teki adat kami jika perkara
sebenarnya tidak wujud terlebih dahulu.
Jadi mari kita memberi motivasi ini seperti berikut.
Beberapa tahun lalu, apabila saya pertama kali ditemui Awal,
ketika saya sebenarnya pelajar grad di MIT, kita
diri kita telah ditugaskan untuk membuat kerja rumah.
Dan saya implemented-- yang, jika ditinjau kembali,
merupakan satu keputusan yang sangat miskin kerana ia adalah lagu yang paling menyebalkan di dunia
untuk mendengar selama lapan jam semasa bekerja di homework-- anda
tetapi sesuatu yang saya telah dipanggil Oscar Masa, yang mungkin sebuah lagu biasa.
>> CS50s memiliki Jordan Hayashi, salah satu daripada lebih ramai ahli kakitangan kanan kami,
telah dinaik taraf bagi tahun 2015 dan sekarang 2016, kerana pada zaman dahulu,
Saya mempunyai segala-galanya hanya akan ke dalam Oscar tong sampah.
Sekarang kita menyokong kitar semula dan kompos.
>> Tetapi untuk cat gambar daripada apa yang kita boleh lakukan di sini
dan untuk memberi motivasi kepada beberapa contoh tahap yang lebih rendah,
yang kita boleh mendapatkan satu yang lain sukarelawan untuk hanya datang pada sehingga
dan bermain pertama saya tugasan kerja rumah yang pernah?
Naiklah.
Apa nama anda?
>> HENRY: Henry.
>> DAVID MALAN: Henry, datang ke atas.
Naiklah.
Mengetuai cara sama ada, dan anda akan melihat dalam seketika,
Saya akan pergi ke hadapan dan tekan bendera hijau di tangan kanan atas
sudut, yang bermakna pergi.
Kecil stop icon tanda akan berkata berhenti,
dan itulah apabila anda mula dan berhenti program.
Gembira dapat bertemu dengan anda.
Baiklah.
Oleh itu, kita akan lihat arahan pada skrin dalam hanya seketika.
Dan hanya dengan bermain permainan ini untuk beberapa seconds-- percayalah,
kita tidak akan mahu untuk bermain sepanjang jalan ke end-- anda akan
mendapatkan rasa apa yang program ini tidak.
Dan lebih daripada hanya memberi tumpuan kepada Henry yang baik atau buruk untuk permainan ini, tumpuan
dan bagaimana ia dilaksanakan oleh saya asalnya dan kemudian oleh Jordan.
Dalam erti kata lain, di mana pembolehubah?
Di manakah gelung?
Di manakah fungsi?
Dan kita akan lihat jika kita tidak melihat orang-orang di bawah hood.
>> Hanya klik dan seret sampah ke tong yang sesuai.
>> [MUZIK Bermain]
Baiklah.
Itu sangat bagus.
Kenapa kita tidak berhenti di sana.
Terima kasih.
Tahniah kepada Henry.
Terima kasih.
>> [BERTEPUK TANGAN]
>> Bayangkan debugging program itu.
Jika ada masalah dua minit selepas song-- berkenaan tetapi sehingga
apa yang berlaku di sini benar-benar?
Seperti yang rumit kerana ia mungkin mula seolah-olah mendapat masa ke masa,
memang lebih dan lebih barangan mula jatuh,
apa yang menarik tentang jenis ini contoh yang
dan kita akan melihat beberapa others-- adalah bahawa jika anda
melihat masa lalu kerumitan atau kecanggihan permainan,
ada sebuah bangunan yang sangat mudah blok yang play-- semua yang,
jika anda menyuling mereka kepada orang-orang blok bangunan, adalah sangat mudah
dan boleh dilaksanakan kepada diri mereka sendiri.
Sebagai contoh, ia adalah menjadi beberapa waktu, tetapi saya
cukup yakin yang semula saya lakukan apabila membuat permainan ini untuk kali pertama
adalah saya benar-benar seperti melengah-lengahkan.
Saya tidak memberi tumpuan pada semua orang atas logik atau kepingan teka-teki,
Saya memberi tumpuan kepada grafik dan dapatan jawatan jalan dan tong sampah
dan semua itu.
Tetapi mereka adalah diperlukan bahan-bahan pada mulanya.
Dan apabila saya selesai procrastinating dan meletakkan rangka kerja menyeluruh itu,
Saya mengambil keputusan, biarlah saya membuat satu sekeping sampah jatuh dari langit.
Dan kita akan melihat Scratch menyokong perkara yang dipanggil
Watak sprites-- yang boleh mempunyai pakaian yang berbeza, jadi mereka
kelihatan berbeza.
>> Oleh itu, saya meletakkan tong sampah pakaian pada satu bidadari itu.
Dan saya hanya memerlukannya jatuh dari langit.
Dan maka ia ternyata, Awal, seperti kebanyakan bahasa pengaturcaraan,
menyokong nombor rawak atau nombor rawak teknikal pseudokod,
supaya dengan menarik dan menjatuhkan kepingan teka-teki tertentu,
Saya dapat mempunyai tong sampah datang dari sebelah kiri pada mulanya.
Dan kemudian masa akan datang ia jatuh, dari yang betul dan kemudian dari tengah.
Dan semua permainan tidak hanya mempunyai sampah yang jatuh dari langit.
Anda tidak boleh tunjuk pada atau klik di atasnya.
Anda tidak boleh membuka tong sampah.
Anda tidak dapat melakukan apa-apa.
Tetapi ia adalah satu langkah bayi ke arah visi utama saya.
>> Dan selepas itu, saya sebenarnya melaksanakan beberapa jenis
sensing supaya jika anda tidak klik dan seret di atas sekeping sampah
lebih tin tong sampah, Oscar tudung akan membuka dan menutup.
Tiada apa-apa yang akan berlaku kepada sampah, tapi sekurang-kurangnya tudung akan membuka dan menutup.
Jadi kemudian memeriksa, langkah dua dua.
Dan inilah yang akan menjadi utama dalam kedua-dua set masalah sifar
dan dalam pengaturcaraan secara umum, adalah untuk mengambil langkah-langkah bayi amat perlahan.
Kerana bukan sahaja ia membolehkan anda untuk berasa jujur ​​dicapai lebih
quickly-- ia adalah Perkara yang paling teruk di dunia
untuk mencuba untuk melaksanakan semua Oscar Masa, kemudian jam kemudian memukul bendera hijau,
dan apa-apa kerja-kerja seperti yang diharapkan kerana di mana adakah anda walaupun
mula debug atau menyelesaikan masalah program itu?
Ia hanya menggalakkan.
>> Dan supaya benar-benar memeluk idea ini mengambil langkah-langkah bayi steps-- lagi
dan again-- membina sesuatu yang, pada akhirnya,
benar-benar menarik dan kompleks, tetapi pada mulanya, adalah tidak sebanyak demikian.
Malah, mari kita buat ini.
Biar saya pergi ke hadapan dan- Scratch sendiri wujud di web di Scratch.MIT.edu,
dan anda akan diberitahu sebagai lebih lagi dalam masalah
menetapkan sifar, spesifikasi untuk yang sudah di laman web CS50.
>> Tetapi ini adalah apa Scratch sendiri.
Dan ada benar-benar hanya tiga bidang utama.
Di bahagian atas kiri ada adalah peringkat yang dipanggil.
Ini adalah Scratch.
Kostum lalai adalah kucing.
Dan ini adalah dunia segi empat tepat dalam yang anda boleh move-- atas, bawah, kiri,
betul dan beberapa barangan lain.
Di tengah-tengah di sini adalah kategori kami atau palet kami kepingan teka-teki,
dan warna yang berbeza bermaksud perkara yang berbeza.
Dan jika anda mencucuk di sekitar, anda akan melihat perkara seperti gelung dan syarat
dan pembolehubah dan bahan-bahan lain.
>> Dan kemudian di sini ialah kawasan skrip.
Ini adalah di mana saya boleh menyeret dan melepaskan orang-orang keping teka-teki untuk melakukan sesuatu.
Jadi mari kita buat satu perkara itu.
Biar saya pergi ke hadapan dan- dan saya tahu di mana ia.
Jadi saya akan segera klik pada di mana saya mengetahui perkara-perkara bersedia untuk menjadi,
tetapi menunjuk dan mengklik dan poking sekitar tidak dapat dielakkan.
Oleh itu, apabila bendera hijau diklik, apa yang saya mahu lakukan?
Saya akan melakukan ini.
Saya akan mengheret teka-teki ungu ini keping, bertanya khabar selama dua saat,
dan biarlah saya zum masuk.
>> Dan saya akan menukar ini untuk menjadi apa yang saya mahu ia adalah-
hello dunia selama dua saat adalah baik.
Sekarang, saya akan klik bendera hijau, atau jika saya benar-benar mahu,
Saya penuh boleh menyaring dan kemudian kembali.
Ia hanya akan terus segala-galanya dalam satu tetingkap.
Green dunia hello flag--.
Baiklah.
Tidak semua yang menarik.
Jadi biarlah saya pergi ke hadapan dan melakukan ini.
Biar saya cuba satu sama lain.
Apabila bendera hijau clicked-- mari melakukan sesuatu seperti bunyi.
Dan perhatikan bahawa daripada kotak secara percuma anda
bunyi kucing, seperti bidadari lalai.
Jadi sekarang mari saya pergi ke hadapan dan melanda bendera hijau sekarang.
>> [Mengiu]
>> Aw.
Itulah comel.
Saya pengaturcaraan.
Jadi apa yang telah kuperbuat?
Ini adalah sama dengan program.
Ia jelas super mudah.
Ia tidak benar-benar mengambil semua yang banyak usaha dan MIT melakukan sebahagian besar kerja,
tetapi saya telah dipanggil fungsi.
Saya telah menggunakan fungsi.
Saya telah membuat beberapa tindakan, dengan hanya menggunakan yang satu bahagian teka-teki ungu.
>> Nah, jika saya mahu lakukan tiga meows berturut-turut?
Biar saya pergi ke hadapan dan melakukan dua dan tiga.
Dan perhatikan bahawa apabila anda berlegar berdekatan sekeping teka-teki,
garis putih yang kecil muncul jenis magnet,
dan ia akan snap bersama-sama apabila anda membiarkan pergi.
Mari kita lihat apa yang berlaku di sini.
>> [Mengiu]
>> Ada bug.
Saya hanya mendengar satu meow.
Mengapa yang mungkin?
Yeah?
Yeah.
Kita tidak mendengarnya, tetapi itu gerak hati yang baik.
Mereka semua bermain pada masa yang sama.
Mengapa?
Well, komputer hanya akan untuk melakukan apa yang anda beritahu kepada lakukan.
Jadi, jika anda mengatakan, bunyi bermain, bermain bunyi, bermain bunyi,
tetapi anda tidak beritahu kepada bermain sehingga anda selesai, bermain sehingga anda selesai,
ia akan meniup melalui program yang benar-benar cepat
dan jangan hanya apa yang anda beritahu kepada lakukan.
>> Jadi saya benar-benar perlu untuk menetapkan ini dalam beberapa cara.
Saya hanya boleh melakukan ini, menghilangkan ini.
Biar saya cuba teka-teki lain ini piece-- bermain meow bunyi sehingga selesai,
dan kemudian seret tiga daripada ini dan klik Main.
>> [Mengiu]
>> Ia tidak benar-benar very-- terima atasmu sangat semulajadi.
Jadi mengapa tidak saya-- biarlah saya pergi untuk mengawal di sini.
Nice.
Tunggu satu saat, dan sekarang mari saya kembali untuk bunyi, dan bunyi bermain sehingga selesai,
dan kemudian membiarkan saya menunggu satu saat.
Dan biarkan aku pergi mendapatkan satu lebih kukuh, dan di sini kita pergi.
>> [Mengiu]
>> Sedikit lebih semula jadi, tetapi ini tidak begitu cekap.
Seperti yang saya telah bosan, semua menjadi ia secara ringkas, klik belakang dan sebagainya
dan benar-benar pendua work-- saya cukup banyak menyalin dan menampal.
Sesungguhnya, jika saya Mengawal klik atau kanan diklik,
Saya boleh baru sahaja disalin dan ditampal.
Apa yang akan menjadi yang lebih baik membina untuk digunakan?
Apa idea dari sebelum ini?
>> Ya, jadi gelung.
Dan sebenarnya, jika kita mencucuk di sekitar, kita mungkin mendapati perkara tersebut.
Biar saya pergi ke Acara atau sebaliknya Kawalan.
Jadi repeat-- saya tidak mahu ia menjadi 10 kali.
Itu akan menjadi terlalu menjengkelkan dengan cepat.
Tetapi saya akan mengulangi tiga kali.
Biar saya kembali kepada bunyi dan memainkan bunyi sehingga ia dilakukan.
Biar saya kembali ke Control dan hanya menunggu satu saat.
Dan notis, anda mungkin fikir ia tidak sesuai,
tetapi sekali lagi jika magnet anda membiarkan ia snap di tempat, ia akan berkembang untuk mengisi.
Apa yang ia bermain sekarang?
>> [Mengiu]
OKEY.
Nice.
Dan ini adalah apa yang dipanggil program itu juga betul.
Ia meowed tiga kali agak secara semula jadi, tetapi ia lebih baik yang direka.
Saya menggunakan kurang lebihan.
Saya tidak copy dan paste apa-apa.
Saya hanya menggunakan idea yang lebih baik.
>> Sekarang, ini masih tidak semua yang menarik dengan Scratch tidak melakukan
apa-apa.
Jadi mari kita buat sesuatu yang lain sebaliknya.
Mari kita buat sesuatu selama-lamanya.
Dan anda tahu apa?
Motion kelihatan menarik.
Mari kita dia bergerak 10 langkah-langkah dan tekan bermain sekarang.
>> OKEY.
Baik kita boleh jenis drag dia kembali, dan dia masih
berjalan kerana dia lakukan ini selama-lamanya.
Jadi gelung yang dilakukan apa yang ia berkata yang perlu dilakukan,
tetapi ini tidak semua yang menarik.
Mari lakukan ini.
Biar saya menambah blok kawalan, dan menggunakan satu syarat-syarat itu buat kali pertama.
>> Jadi ia akan bergerak 10 steps-- 10 titik, 10 piksel pada screen-- yang
maka ia akan bertanya soalan ini.
Jika sesuatu yang tidak benar, maka tidak sesuatu di dalam blok ini.
Jadi ternyata sensing mempunyai keseluruhannya sekumpulan expressions-- Boolean
soalan ya tidak atau benar palsu form-- biarlah saya melakukan ini.
>> Jika touching-- dan kemudian ada senarai jatuh sedikit down menu.
Saya boleh parameterize ia.
Jika menyentuh edge-- mari melakukan sesuatu seperti itu.
Jadi, jika menyentuh edge-- biarlah saya kembali kepada gerakan.
Dan mengapa tidak kita hanya berbalik 180 darjah?
Baiklah.
Jadi selama-lamanya, bergerak 10 langkah.
Jika anda menyentuh kelebihan, bertukar 180 darjah.
Dan itu bukan akhir program kerana anda berada dalam untuk selama-lamanya menyekat,
jadi ia akan pergi sekali lagi dan lagi dan lagi dan lagi.
Jadi mari kita lihat apa yang berlaku.
OKEY.
A kereta kecil, tetapi jenis sejuk.
>> Dan kita boleh menambah ini beberapa perkara yang bodoh yang tidak semua yang intelek
menarik.
Tetapi jika kita mencapai ini sedikit mikrofon button-- ouch.
Biar saya membersihkan ini sehingga.
Biar saya meningkatkan ini sebagai mereka akan berkata di TV.
Bersihkan bahawa sehingga, Simpan, dan Segeralah kamu kembali kepada skrip.
>> Dan sekarang, saya pergi kepada bunyi.
Biar saya memberi nama.
Saya akan panggil ouch ini.
Dan kini bermain ouch bunyi.
Perhatikan ia muncul dalam sedikit drop down menu.
Mari kita lihat.
>> [ADUH]
>> [KETAWA]
Tetapi kita boleh mengubah t beliau dengan cepat.
Kita boleh menjadi dua kali lebih menjengkelkan.
>> [ADUH]
>> Atau jika kita membuat ia seperti 1000 langkah-langkah di time-- yang
>> OKEY.
Jadi, kita akan meninggalkan satu itu sahaja.
Jadi sekali lagi, membina blocks-- Saya bermula dengan sesuatu yang super mudah,
dan kemudian saya menambah ciri, menambah ciri, menambah ciri.
Dan saya tidak lagi perlu bimbang tentang bagaimana pertama ciri-ciri
dilaksanakan kerana saya terus untuk lapisan perkara di atas.
Jadi sebenarnya, saya melakukan satu lain di sini.
Biar saya pergi ke hadapan dan membuka fail yang Saya dibawa terlebih dahulu, yang dipanggil Sheep.
>> Jadi ia mempunyai yang sedikit berbeza watak yang kelihatan seperti ini.
Dan biarlah saya lihat jika saya tidak boleh melakukan sesuatu menggunakan kaunter
dalam ini case-- pembolehubah dipanggil.
Saya akan pergi ke hadapan dan di bawah Events-- biarlah saya mendapatkan bendera hijau diklik.
Maka biarlah saya pergi ke Data, yang saya tahu dari hanya bermain-main di hadapan,
adalah di mana pembolehubah.
Dan saya akan pergi ke hadapan dan tarik ini.
>> Jadi pembolehubah yang dipanggil kaunter, dan Saya akan memulakan ia kepada sifar.
Saya boleh memanggil ia sesuatupun x atau y atau z-- tetapi dalam pengaturcaraan,
memanggil sesuatu dalam semantik cara yang berguna, seperti kaunter,
yang menerangkan apa itu, ia adalah satu banyak lebih mudah untuk membaca kod anda kemudian.
Biar saya pergi ke hadapan dan mendapatkan selama-lamanya menyekat di sini.
Dan biarlah saya pergi ke kelihatan halaman dan melakukan blok Say.
Tetapi apa yang sejuk kira-kira pembolehubah adalah saya tidak perlu taip sesuatu
seperti hello dunia, yang kami telah pun dilakukan, saya bukannya boleh pergi ke Data
dan seret pembolehubah saya, dan juga walaupun bentuk yang tidak cukup
kelihatan seperti ia harus sesuai, ia akan berkembang untuk mengisi.
Dan saya hanya akan mengatakan kaunter untuk satu spoiler-- second-- dia akan dikira.
Kami akan mengatakan ia untuk satu saat.
Kemudian saya akan pergi dan mempunyai dia menunggu untuk satu saat,
supaya ia tidak mengira sehingga terlalu cepat.
Dan kemudian akhir sekali, menukar kaunter oleh one-- dalam erti kata lain,
kenaikan kaunter demi satu nilai tambahan dan melakukan ini selama-lamanya.
>> Jadi domba juga, seperti yang programmer, yang diambil kira dari 0.
Dan jika kita menunggu cukup lama, dia akan melakukan ini selama-lamanya.
Tetapi itu tidak betul-betul benar, kerana sebenarnya, seperti yang kita akan temui dalam satu minggu,
bilangan bulat dan komputer lebih umum, secara teknikal hanya mempunyai finite-- baik,
dan bukan komputer, apabila mereka mewakili integer,
hanya mempunyai beberapa terhingga bit.
Mereka mentol lampu terdapat hanya boleh bergantung begitu tinggi
sebelum anda keluar dari mentol lampu.
Dan komputer juga, hanya mempunyai ingatan yang begitu banyak,
hanya mempunyai begitu banyak transistor, jadi ia hanya boleh bergantung begitu tinggi.
>> Jadi ternyata bahawa biri-biri, Saya fikir, boleh bergantung kepada 2 bilion
atau sesuatu yang cukup besar.
Oleh itu, kita tidak akan menunggu ini berlaku.
Tetapi akhirnya beberapa bug yang akan berlaku yang boleh mempunyai beberapa dunia yang amat nyata
kesan.
Tetapi lebih dari kambing domba, yang hanya memperkenalkan pembolehubah.
Mari kita pergi ke hadapan dan membuka sesuatu yang saya dibuat terlebih dahulu
di sini dipanggil haiwan peliharaan yang Cat-- Haiwan Cat di sini.
Dan perhatikan di sini adalah beberapa blok, tetapi apabila bendera hijau
klik, selama-lamanya lakukan yang berikut.
Jika anda menyentuh tetikus pointer-- supaya kursor pada skrin,
bermain arrow-- meow bunyi dan kemudian tunggu dua saat.
Dan hanya melakukan ini selama-lamanya.
Hanya sentiasa menunggu untuk melihat jika pointer-- yang
jika kucing itu menyentuh penunjuk.
>> Jadi saya tekan bermain.
Tiada apa-apa yang berlaku.
Tetapi seperti yang saya menggerakkan kursor ke atas kucing,
>> [Mengiu]
>> Dan jika saya bergerak ia jauh, tidak membelai kucing lagi.
Jadi beberapa logik bersyarat bersarang di dalam gelung.
Bagaimana pula contoh ini, sengaja dipanggil Jangan Pet Cat?
Apakah ini akan lakukan?
>> [Mengiu]
>> Mengapa kamu tidak haiwan kucing?
>> [Mengiu]
>> OKEY.
Jadi ini adalah satu contoh jika lain.
Ia adalah satu titik keputusan dan kerana ia duduk di dalam gelung,
kedua-dua mereka mendapat diperiksa.
Adakah ini benar?
Dan akhirnya, salah satu mereka akan memohon
dan supaya anda mendengar sama ada meow atau ngauman singa dalam kes itu.
>> Nah, mari kita buat satu yang sedikit lebih mewah yang saya buat terlebih dahulu too-- benang.
Jadi thread yang merupakan salah satu Perkara yang komputer boleh lakukan.
Jadi program multi-threaded adalah program yang yang boleh melakukan pelbagai perkara pada satu masa.
Dan semua contoh-contoh ini setakat ini mempunyai
hanya satu skrip, jadi untuk speak-- satu program seperti ini di sini.
Tetapi melihat program ini mempunyai dua sprites, dua watak.
Satu adalah burung.
Satu adalah kucing.
>> Dan perhatikan apabila saya klik pada ini turun kiri, mereka masing-masing mempunyai skrip mereka sendiri
atau program yang berkaitan dengan mereka.
Dan kedua-dua mereka program, notis, permulaan
dengan clicked-- bendera apabila hijau mari kita lihat cat-- yang
apabila bendera hijau diklik.
Dan maka sesungguhnya, apabila saya tekan bermain sekarang, dua perkara akan berlaku pada sekali.
Kucing dan burung kedua-duanya akan beroperasi secara serentak
untuk mewujudkan kesan ini.
Dan anda mungkin bayangkan apa yang berlaku.
Ada satu gelung dan burung dan kucing berada di dalam gelung.
Burung itu hanya melantun seperti Saya sebelum ini apabila saya berkata ouch.
Tetapi kucing jelas mempunyai kelebihan.
Ada satu lagi blok sensing yang menunjukkan kucing sengaja
kepada burung itu dalam kes ini di sini.
Oleh itu, kita boleh mengusik selain, dengan melihat melalui orang-orang blok, apa yang berlaku.
Tetapi bahan utama di sini adalah salah.
Burung, supaya permainan ini tidak sepenuhnya boring-- atau animation-- ini
bermula pada arah yang rawak.
Dan komputer adalah memilih nombor di antara 90 dan 180
pada dasarnya, supaya ia yang sedikit animasi berbeza setiap kali.
>> Dan kemudian perhatikan di sini, jika kucing menyentuh burung, kemudian
bermain singa empat sound-- bergelora.
Tetapi sementara itu dalam burung palet, kita mempunyai ini.
Selama-lamanya, jika tidak menyentuh kucing, hanya terus bergerak tiga langkah.
Dan kemudian di sini adalah satu lagi teka-teki.
Jika anda berada di pinggir, melantun.
Jadi burung adalah hanya jenis mengurus perniagaan sendiri,
hanya terbang di sekitar dan melantun, dan ia benar-benar
kucing yang mempunyai logik bersyarat untuk menentukan sama ada ia telah menarik burung.
Baiklah.
Jadi mari kita buat satu lain di sini, satu ini dipanggil Hi Hi Hi.
Dan satu ini di sini hanya melakukan ini dalam selama-lamanya gelung.
Tetapi notice-- bagaimana kita menghentikan ini program yang sangat menjengkelkan?
Hit bar ruang.
Kerana jika saya berbuat demikian, yang program-- tangan kiri
notis itu sentiasa listening-- adalah akhbar ruang utama.
Jika bar ruang ditekan, dan jika ya, apa yang ia buat?
Ia melakukan teknik yang sangat biasa.
Ia menetapkan pembolehubah sama dengan beberapa nilai.
Tetapi ia bertukar-tukar nilai itu.
[? Jadi rupanya?] berdasarkan I shape--
mempunyai pembolehubah yang saya menulis terlebih dahulu dipanggil
Disenyapkan, yang hanya berkata ya atau tidak.
Adakah bunyi disenyapkan atau tidak?
Betul atau salah?
Dan lihat, saya katakan this-- jika disenyapkan adalah sifar, kemudian bertukar kepada satu,
lagi menetapkan bisu kepada sifar.
Jadi hanya flip nilai dari sifar kepada satu.
Saya boleh mempunyai done-- mengubahnya daripada dua kepada tiga dan 01:57
atau 04:56 atau 05:56.
Tetapi ia tidak penting apa nombor yang saya gunakan,
selagi saya terus menukar ia sebaliknya.
>> Dan yang paling mana-mana programmer akan sama pilih sifar dan one-- palsu dan benar,
kira dan pada-- untuk mewakili ini.
Dan ini masih berjalan.
Jika saya memukul bar ruang lagi
>> [SEAL SOUNDS]
>> Program ini masih berjalan.
Kerana ada skrip lain ini yang mengatakan, selama-lamanya melakukan yang berikut.
Jika pembolehubah disenyapkan sama zero-- jadi jika anda tidak disenyapkan
adalah logic-- jika ia adalah palsu atau tidak, kemudian memainkan bunyi,
kerana anda tidak disenyapkan.
Anda perlu memainkan bunyi dan kemudian berfikir hi hi hi selama dua saat
dan kemudian tunggu, dan melakukannya lagi dan lagi dan lagi.
>> Jadi dengan cara ini kita mempunyai cara untuk orang supaya- untuk program-program untuk berinteraksi.
Dan mereka tidak perlu sebagaimana yang bertarikh seperti orang lain.
Malah, poking around-- pun tidak intended--
seseorang menghabiskan sejumlah besar masa di internet melaksanakan
PokemonGo dalam Scratch.
Ia juga geolocates anda Cambridge atau Allston sini.
Jadi, jika anda mahu melihat terlalu apa yang orang boleh lakukan ialah this-- menu sangat mewah.
Klik di sini.
>> Ini adalah saya dengan kekunci anak panah saya sekarang.
Saya akan pergi selepas ini.
Klik.
Dan sekarang anda klik PokeBall itu.
Maksud saya, saya fikir anda berada sepatutnya klik PokeBall itu.
Baiklah.
Jadi saya lakukan itu.
Saya boleh pergi di sini.
Dan orang ini melaksanakan beberapa lebih PokeBalls lebih sini-- tiga PokeBalls.
>> Kami akan menyiarkan link ini dalam talian supaya anda boleh bermain.
Tetapi notis ada hanya beberapa konsep asas.
Ia kelihatan banyak pelamun, dan ia adalah.
Ini adalah mengagumkan dan banyak lagi daripada kita akan biasanya
mengharapkan, sudah tentu untuk masalah set sifar.
Saya tidak tahu berapa lama orang ini dihabiskan dalam talian.
Tetapi itu semua hanya gelung.
Ada bermain bunyi.
Ada beberapa jenis gelung mendengar untuk sama ada saya
memukul anak panah ke atas atau ke bawah arrow atau kiri dan kanan,
dan kemudian jika demikian, ia bergerak ia beberapa beberapa piksel.
Dan kemudian jika saya klik pada bidadari yang lain, ada
beberapa jenis jika keadaan di sana.
Ya, ini semakin terlalu sengit.
Kita akan berhenti.
Itu semua orang-orang blok binaan asas.
Tiada bahan-bahan lain lain daripada orang-orang kita telah melihat sudah.
>> Namun di sini, biar saya satu set akhir contoh
yang cat gambar yang terlalu apa yang anda boleh lakukan di sini.
Berikut adalah program yang sangat mudah yang hanya melakukan this-- batuk, batuk, batuk.
Dan hanya berdasarkan apa kita telah melihat setakat ini,
di mana adalah jelas peluang untuk penambahbaikan.
Program ini adalah betul.
Ia batuk tiga kali, yang apa yang saya dimaksudkan.
Tetapi ia kurang dilaksanakan.
Ia teruk direka.
Mengapa?
Yeah.
Ia bukan gelung.
Dan ia tidak begitu banyak bahawa ia bukan gelung,
ia adalah bahawa terdapat banyak lebihan.
Terdapat disalin dan kod ditampal, jadi untuk bercakap.
Dan penyelesaian mungkin memang gelung.
Jadi biarlah saya pergi ke hadapan dan memperbaiki itu.
Dan saya akan mengheret ini di sini.
Biar saya pergi ke hadapan dan mendapatkan berulang blok, menukar ini kepada tiga.
Saya akan buang beberapa orang-orang blok.
>> Dan anda akan melihat ia agak intuitif.
Anda seret dan lepaskan dan perkara-perkara muncul dan hilang akhirnya.
Dan saya hanya boleh menyeret ini di sini, dan sekarang saya mempunyai versi yang lebih bersih masih.
Tetapi anda tahu apa?
Ada peluang ini sekarang untuk abstraction--
untuk memulakan untuk menentukan perbendaharaan kata baru yang MIT tidak menjangka.
Ada tunggu dan berulang dan selama-lamanya dan jika,
tetapi bagaimana jika saya ingin memperkenalkan batuk perkataan sebagai blok?
Bagaimana jika saya mahu sekeping teka-teki tujuan yang dalam hidup adalah untuk batuk?
>> Nah, mari kita lihat versi ini di sini, yang saya buat sebagai berikut.
Ajaib, saya telah mencipta sekeping teka-teki ini di sini,
yang Scratch membolehkan anda untuk melakukan.
Dan sesungguhnya C dan Python dan JavaScript adalah
akan membolehkan anda untuk melakukan ini juga.
Anda boleh membuat anda sendiri keping yang anda memanggil apa yang anda mahu.
Dalam kes ini, batuk merasakan seperti definisi yang munasabah.
Dan kemudian dengan serpihan ini turun di sini anda boleh menentukan apa yang dimaksudkan.
>> Aku menarik dan digugurkan daripada palet ini sini-- lebih
blocks-- ini ungu besar blok, di mana saya ditaip dalam batuk
sebagai nama sekeping teka-teki baru saya.
Dan kemudian saya berkata bila-bila masa pengguna panggilan sekeping teka-teki batuk baru ini,
melakukan katakan dan menunggu.
Dan sebagainya di sini dalam blok berulang saya, Saya hanya boleh batuk tiga kali.
>> Dan saya akan berhujah, terutamanya jika sekarang kamu sembunyikan detail ini.
Siapa yang peduli bagaimana batuk dilaksanakan?
Semua saya mengambil berat tentang sebagai programmer yang saya boleh batuk.
Saya tidak peduli bagaimana mengatakan dilaksanakan.
Saya hanya peduli bahawa kucing boleh mengatakan sesuatu.
Saya boleh abstrak jauh yang terperinci dan hanya memberi tumpuan kepada apa yang pada skrin di sini.
Tetapi saya boleh mengambil satu langkah lebih lanjut.
>> Perhatikan bahawa di sini, saya mempunyai dilaksanakan gelung tiga kali.
Tetapi bagaimana jika sebaliknya saya merebut versi ini?
Dan bagaimana jika sebaliknya dalam versi ini di sini,
Saya hanya menukar sekeping teka-teki saya untuk mengambil hujah dan input kepada dirinya?
Dan input yang boleh beberapa seperti tiga.
Jadi sekarang, jika saya menulis program dan saya mahu kucing untuk batuk,
Saya sebenarnya boleh memberitahu teka-teki simpulkan berapa kali batuk,
kerana pada bahagian bawah di sini, yang pelamun versi ini keping teka-teki adat
membolehkan saya menentukan bahawa batuk sebenarnya mengambil
input-- yang mengambil hujah seperti ini.
Dan anda tahu apa?
Mungkin saya sedar, tunggu satu minit.
Batuk adalah same-- yang ia adalah asasnya
idea yang sama seperti bersin.
Ia hanya berbeza perkataan pada skrin.
Saya boleh abstrak jauh lanjut dan melaksanakan
Versi akhir ini daripada batuk, yang pada pandangan pertama
adalah cara yang lebih kompleks mencari.
Tetapi melihat apa yang saya lakukan.
Saya ada sekarang generalized-- genericized really-- sekeping teka-teki ini
untuk dipanggil berkata-kata n masa.
>> Dan kini saya mempunyai dua keping teka-teki baru turun di sini menentukan batuk n masa.
Dan apa fungsi batuk lakukan?
Apa sekeping teka-teki adat saya lakukan?
Ia hanya panggilan blok katakan itu, lulus dalam perkataan yang saya mahu katakan,
lulus dalam bilangan kali saya ingin katakan.
Kerana sekarang saya boleh melaksanakan bersin dengan hanya mengatakan achoo,
dalam kes ini, ada beberapa kali.
>> Dan jadi saya lapisan dan lapisan.
Dan sekali lagi, yang penting di sini bukan bagaimana saya melaksanakannya, tetapi hakikatnya
bahawa jika saya hanya literal bergerak ini dari skrin,
melihat bagaimana mudah tidak jika cantik program saya kini kelihatan.
Kerana ia melakukan apa yang ia berkata, saya telah disarikan
dari apa yang ada di dalam bahawa kotak hitam. ia berlaku untuk menjadi kotak ungu sini,
tetapi saya telah terhalang dari apa yang di dalam kerana saya tidak peduli bagaimana ia berfungsi.
Saya hanya mengambil berat sekarang bahawa ia berfungsi.
>> Dan sesungguhnya, dalam masalah menetapkan sifar, ini betul-betul
jenis lapisan idea anda akan mempunyai peluang untuk meneroka.
Ia betul-betul peluang untuk menggunakan teknik penyelesaian masalah,
untuk apa yang mungkin yang persekitaran yang tidak dikenali.
Dan sama ada anda telah tidak diprogramkan sebelum atau diprogramkan sebelum ini,
anda akan mendapati bahawa ada sesuatu yang sedikit
dalam persekitaran ini untuk semua orang.
Dan dengan masalah set satu dalam masa seminggu,
kita akan beralih kepada memberi tumpuan kepada bahasa tahap yang lebih tinggi dipanggil
C-- atau sebaliknya yang lebih rendah bahasa peringkat dipanggil
C-- itulah lebih berkuasa, walaupun ia
sedikit lebih samar pada pandangan pertama.
>> Dan anda akan menyedari setiap TL hari ini: DR, bahawa masalah ini ditetapkan mempunyai lebih pendek
tingkap masa daripada yang akan datang, hanya kerana anda perlu mencari ia agak
boleh akses.
Dan tidak perlu bimbang jika anda menambah kelas lewat.
Kami akan menangani perkara itu tidak lama lagi.
Dan sebelum kita menangguhkan untuk kek, mari kita selesai dengan hanya lihat dua minit
pada apa yang menanti anda di sini dalam CS50.
[MUZIK Bermain]
Baiklah.
Itu sahaja untuk CS50.
Kita akan melihat anda tidak lama lagi.
Cake kini dihidangkan.
[MUZIK Bermain]
SPEAKER 17: Adakah anda pernah mendengar daripada sabatikal, Ketua?
SPEAKER 18: Mungkin ada lebih di bawah hood.