>> SPEAKER: OK, jadi, anda tidak akan percaya, tetapi minggu lepas, pada hari Isnin, di Pierce, saya
turun di ruangan bawah tanah.
Saya tidak pernah pergi ke Pierce.
Dan saya tidak akan kembali lagi, kerana Saya meninggalkan barangan saya sahaja untuk,
seperti, lima minit dan seseorang mencuri komputer dan saya saya
telefon daripada ransel saya.
Yang bermakna saya mendapat kembali, dan maka kurang dari seminggu kemudian
ia mendapat dicuri lagi.
>> Dan kemudian ia mendapat dihidupkan -
Cari iPhone Saya terus menjadi tidak membantu.
Jadi saya terus menggalakkan anda tidak menggunakannya.
Ia dihidupkan sekali, dan ia adalah di MIT, seperti 15 minit kemudian, dan orang yang
dipanggil nombor telefon ini yang menunjukkan dalam log panggilan AT & T saya.
>> Jadi saya pergi dalam talian, yang dipanggil bahawa telefon automatik, dan ia terus pergi ke ini
mesin menjawab dalam Bahasa Sepanyol.
Dan saya tidak pernah mendengar daripadanya sejak.
Jadi saya terpaksa mendapatkan yang baru komputer dan telefon.
Saya tahu.
Yeah.
Tetapi jika anda semua mahu cip dalam untuk saya dana komputer selepas ini, itu sebabnya
Saya bertanya kepada anda di sini.
Hanya bergurau.
Tetapi itu adalah benar-benar sedih dan trauma.
>> Tetapi itu semua kembali sekarang, dan sebab itulah p-menetapkan 8 mengambil masa yang lama, kerana
Saya tidak mempunyai komputer.
Dan seseorang mencuri.
Dan saya melalui e-mel, bertanya jika mereka akan gred p set 8 anda.
Tetapi mereka berkata tidak.
Dan saya adalah seperti, boleh saya komputer saya kembali?
Dan mereka seperti, tidak.
Hanya bergurau.
>> OK.
Ini adalah bahagian terakhir kami, dan saya mempunyai beberapa - kita hanya mempunyai tiga
perkara dalam agenda.
Kami akan bercakap sedikit mengenai panduan Q.
Kemudian kita akan menghabiskan 15 minit pada demo yang sejuk.
Kemudian kita akan semua mengatakan selamat tinggal satu sama lain.
Anda tidak benar-benar memerlukan komputer anda atau pen atau kertas untuk mengambil nota atau
ikut bersama-sama.
Jadi saya menganggap jika anda mempunyai komputer anda up, maka anda di Facebook.
Hanya berkata.
Melainkan jika anda mengisi Panduan Q, yang pertama.
>> Panduan Q dibuka.
Anda mempunyai e-mel mengenainya.
Apabila semua barangan Q itu dikemukakan di akhir tahun ini, saya mendapat semua
Comments Q dalam skor daripada semua orang yang memilih untuk memberi maklum balas.
Dan jadi apabila anda pergi di Q -
Saya tidak tahu jika anda boleh melakukan ini, Jeff, kerana anda dan pelajar lanjutan.
Tetapi apabila anda pergi di Q, jika anda tidak mempunyai melakukannya sebelum ini, anda memilih anda
guru, iaitu David Malan.
Anda perlu melakukan dia.
>> Dan kemudian anda boleh memilih TFS.
Dan anda boleh memilih kerana banyak TFS yang anda mahu.
Tetapi terdapat 60 daripada kita.
Anda tidak perlu memilih semua orang.
Anda hanya boleh memilih saya, atau hanya memilih pasangan orang lain, jika anda mahu, untuk
memberikan mereka maklum balas juga.
Dan kemudian anda mendapat markah pada semua paksi yang berbeza, dan kemudian anda boleh meninggalkan
maklum balas mereka.
>> Dan kemudian, seperti sebulan kemudian, Saya akan mendapat semua maklum balas itu.
Dan seperti maklum balas yang anda telah memberi saya sepanjang semester, saya
membaca semua itu.
Dan ia benar-benar membantu, dan ia membantu saya membesar sebagai seorang guru dan sebagai
individu.
Jadi, sila, mengambil sedikit masa untuk melakukannya.
Kami hanya akan berada di sini untuk, seperti, 30 minit.
Jadi, jika anda mahu, pada akhir ini, untuk mengambil masa lima minit, dan hanya mengisi
Q, kerana ia tidak mengambil apa-apa masa yang lebih daripada itu.
Yang akan menjadi indah, dan anda juga mendapat gred anda kembali dengan lebih cepat jika
anda mengisi Q yang
>> Jadi kebanyakan anda telah melakukan bahawa sebelum -
atau tidak, kira-kira separuh daripada anda telah melakukan bahawa sebelum.
Tetapi jika anda bayat, itulah yang yang.
Ia akan menjadi yang sama untuk semua kelas.
Adakah ia.
Ia mengambil masa lima minit.
Tetapi juga, jika anda melakukannya sedikit serius, itu bukan perkara yang paling teruk
di dunia, kerana saya pasti mengambil perhatian serius.
>> Jadi, jika anda meninggalkan saya muka senyum, Saya akan menghargai bahawa.
Tetapi saya juga akan menghargai jika anda meninggalkan saya lebih daripada muka senyum.
Tetapi ia terpulang kepada anda.
Saya tidak boleh memberitahu anda - atau suka senyum besar menghadapi, dengan modal D. Yang akan
menjadi lebih baik.
>> OK, itu sahaja yang saya ada untuk yang Q. Jika anda mempunyai sebarang pertanyaan, anda boleh meminta
saya, tetapi penjelasan-sendiri cantik.
Hanya, sila isi keluar.
Saya benar-benar akan menghargainya, dan ia bermakna yang besar kepada saya.
>> OK, ini adalah apa yang kita akan menghabiskan 15 minit akan melalui.
Saya akan menunjukkan kepada anda beberapa kod.
Saya rasa ini adalah benar-benar sejuk, dan ini membuat saya lebih
teruja dalam bidang sains komputer.
Jadi saya berharap ia akan melakukan perkara yang sama untuk anda semua.
>> Kami akan membuka - dan semua ini kod saya akan menghantar kepada anda kemudian.
Tetapi kita hanya akan membuka -
Saya di terminal saya -
kita akan membuka program ini dipanggil [? MySum. ?]
>> Bolehkah semua orang membaca itu, atau yang perlu saya membuat ia lebih besar?
Bolehkah sesiapa beritahu saya apa kod ini akan lakukan apabila saya menjalankannya, atau apa ini
program akan lakukan apabila saya menjalankannya?
>> [? Avi,?] Apa pendapat anda ia akan lakukan?
Selesai mengunyah.
Anda tidak perlu bercakap dengan mulut terbuka.
>> PENONTON: Adakah ia mengambil sekumpulan hujah-hujah, cari jumlah mereka kembali
jumlah, dan kemudian mencetak?
Atau ia mengambil masa dalam dua hujah, dan maka ia [didengar].
Dan kemudian ia mencetak apa sahaja hasilnya.
>> SPEAKER: Tutup, benar-benar dekat.
Sesiapa mahu menambah [? apa Avi?] berkata?
Adakah anda perlu memberikan program ini apa-apa hujah baris arahan?
>> PENONTON: No
>> SPEAKER: No
Apakah yang akan berlaku jika anda tidak memberikan apa-apa hujah baris arahan?
Saya hanya menulis dot slash MySum.
>> PENONTON: 1 campur 2 sama 3.
>> SPEAKER: 1 campur 2 sama 3.
Dan ia akan mencetak yang keluar.
Itu betul-betul betul.
Anda akan melihat bahawa cetak f line di bahagian bawah.
Ia akan mencetak a, b, dan maka jumlah a dan b.
Dan saya rasa anda menganggap bahawa jumlah berfungsi dengan betul.
Andaian yang baik.
>> OK, dan apa yang berlaku jika saya memberikan apa hujah?
[? Manu? ?]
>> PENONTON: Ia akan menambah apa sahaja hujah pertama adalah untuk b.
Atau 2, maaf.
>> SPEAKER: Betul, dengan 2.
Adakah sesiapa tahu apa strtol tidak?
Ia pada dasarnya atoi.
Atoi sebenarnya adalah versi mewah -
atau versi yang lebih mudah daripada strtol.
Tetapi ia sebenarnya menggunakan strtol.
Dan saya dapati bahawa daripada kerana saya mahu sesuatu seperti atoi, dan kemudian apabila saya
tidak atoi, saya membaca di sini.
Dan saya dapati "kelakuan ini adalah sama seperti "strtol.
Jadi ia pada dasarnya atoi untuk semua maksud dan tujuan.
Dan anda lihat Saya pun menggunakan batal dan 10.
>> Ini sebenarnya membolehkan anda mengambil tali, dan mengubahnya menjadi nombor, dan pilih
apa asas yang anda mahu lakukan ia masuk
Jadi ini adalah asas 10 di sini.
Saya boleh melakukan asas dua untuk perpuluhan, asas 16 untuk perenambelasan.
Ia agak sejuk.
Tetapi cerita panjang pendek, ini mengambil masa dua nombor dan menambah mereka bersama-sama.
>> Jadi mari kita menjalankannya.
Dan anda juga akan melihat, terdapat beberapa perkara -
jadi saya perlu makefile yang di sini, dan jika anda membuka bahawa sehingga, beberapa perkara
anda akan notis adalah berbeza.
Khususnya, hujah ini di sini, anda mungkin
tidak pernah melihat bahawa sebelum ini.
Secara umumnya, kami menyusun perkara-perkara dengan melontarkan sifar, sifar.
Dash sifar, sifar, bermakna tidak melakukan apa-apa pengoptimuman, compiler.
Jangan cuba membuat apa-apa mewah, atau membuat apa-apa menjalankan lebih cepat, atau mendapatkan
menghilangkan pemboleh ubah yang diperlukan.
Jangan mengoptimumkan kod ini pada semua,
>> Saya meminta untuk peringkat ketiga yang pengoptimuman.
Jadi saya meminta pengkompil untuk melakukan banyak pengoptimuman.
Anda boleh menukar bahawa dalam makefile apabila anda mempunyai kod ini, jika anda mahu
untuk melihat barangan yang berbeza.
Yang kami akan menunjukkan dalam satu saat.
Oleh itu, kita menjalankan jumlah saya 1 ditambah 2 tambah 3.
Seseorang memberikan saya dua hujah.
>> PENONTON: 4 dan 5.
>> SPEAKER: 4 dan 5.
Terima kasih.
Besar, ia berfungsi.
Apa adalah beberapa hujah-hujah lain yang baik untuk mencuba, untuk memastikan kerja-kerja ini?
Sesiapa sahaja?
>> PENONTON: 0.
>> SPEAKER: 0 dan?
>> PENONTON: Negatif 3.
>> SPEAKER: Ia berfungsi.
Tetapi mereka adalah pilihan yang baik.
OK, jadi mari kita kembali di sini.
Ini adalah mysum.c.
Anda akan melihat ada juga sesuatu dipanggil sumfunction.c.
Dan ini berkata, oh, ada sesuatu ditakrifkan dalam sumfunction.c.
Saya tidak termasuk fail ini di sini kerana saya tidak perlu.
Tetapi saya menghubungkannya dalam apabila saya menyusun, yang anda perasan.
>> Mari kita tatal ke atas.
Kami melihat apabila kita disusun mysum, hak di sana, kami dikaitkan dalam binari dari
sumfunction.o.
Dan saya tidak perlu fail pengepala kerana, sudah tentu, ada yang
pengisytiharan fungsi.
Jadi tajam termasuk biasanya hanya meletakkan dalam akuan fungsi.
Di sini saya hanya meletakkan ia lurus dalam kod.
Dan jadi saya perlu lakukan adalah pautan dalam binari, yang saya lakukan.
>> Apa-apa tekaan untuk apa yang dalam sumfunction.c?
Apa kod saya telah menulis dalam sumfunction.c?
>> PENONTON: [didengar].
>> SPEAKER: Mana-mana tekaan?
Yeah?
>> PENONTON: Saya rasa, mentakrifkan beberapa [didengar].
>> SPEAKER: Ya.
Jadi saya buat tulis jumlah int int a.
Saya menulis baris ini, dan kemudian saya mempunyai terbuka pendakap kerinting, ditutup pendakap kerinting.
Apa yang anda fikir saya menulis di dalam mereka pendakap kerinting, di dalam fungsi itu?
Yeah?
>> PENONTON: Pulang sama dengan.
>> PEMPROSES: Itu tekaan benar-benar baik.
Yang difikirkan [? Manu?] Yang betul?
Ia berkata kembali tambah b.
OK, bukan semua orang.
[? Akshar,?]
anda juga?
Anda pasti?
OK.
Apa?
>> PENONTON: Anda dieja salah.
>> SPEAKER: Tidak, saya tidak.
Ya, hanya bercanda.
Anda betul.
Itu betul-betul apa yang dikatakannya.
Ia kembali tambah b.
Yang membuat banyak akal.
>> OK, mari kita kembali di sini.
Kita melihat bagaimana header -
itulah jenis pulangan.
Ingat, kita telah melihat hari yang satu, kembali jenis majlis itu, tetapi pergi
di hadapan nama fungsi int itu.
Di sini, saya telah menulis int.
Apa yang anda fikir akan berlaku jika ini fungsi, saya tidak menulis int, tetapi
Saya menulis tidak?
Perbezaannya, sudah tentu, adalah bahawa tidak ditandatangani mewakili hanya positif
integer, dan int boleh positif atau negatif.
>> Jadi saya telah berubah pulangan jenis fungsi ini.
Kod ini tidak sepadan dengan nyata ini menaip di sini.
Apa yang anda fikir akan berlaku apabila saya menyusun?
Anda perlu menjerit pada saya.
Tiada menjerit.
>> Bagaimana pula apabila saya menjalankan program ini?
Mari kita buat sebelum 0 negatif 3, atau negatif 1.
Ia masih bekerja, walaupun saya cakapkan ia kembali integer tak bertanda.
Jelas sekali ia tidak kembali integer tak bertanda.
Ia kembali integer yang ditandatangani.
Ia kembali negatif 1.
OK, itu pelik.
>> Bagaimana pula jika saya pergi di sini dan berbuat demikian?
Jadi saya telah mengubah segala-galanya dari int untuk tidak ditandatangani.
Ia hanya boleh mengambil integer tak bertanda.
Tetapi adakah kita masih berfikir ia akan berjalan?
>> PENONTON: Ya.
>> SPEAKER: Ia akan.
Itu gila.
Dan kita lulus dalam diberikan jelas integer, kita boleh lulus dua ditandatangani
integer, ia masih berfungsi.
>> OK, mana-mana idea-idea mengapa ia masih kerja-kerja, atau apa yang berlaku?
Ya, Jeff.
>> PENONTON: Ia mempunyai sesuatu untuk dilakukan dengan pengoptimuman anda bahawa anda
diserlahkan.
>> SPEAKER: No
Kita boleh menukar pengoptimuman, ia masih akan bekerja.
Yang boleh saya lakukan untuk anda, tetapi -
>> PENONTON: Saya akan mengambil kata-kata anda untuk itu.
>> SPEAKER: Ya.
Jika anda membuka makefile yang betul di sini, Saya menukar pengoptimuman.
Jadi, anda boleh melakukan dash sifar, sifar.
Ia masih akan berfungsi.
Pemikiran yang lain?
>> Kalian semua dijangka akan bekerja, jadi Kenapa awak mengharapkan ia berfungsi?
Tidak?
Senyap.
OK.
Saya perlu menunggu tujuh saat, kerana saya bertanya soalan.
>> Jadi perkara yang sejuk kira-kira C, dan anda telah mungkin dialami sebelum - anda
mungkin tidak mempunyai, kekuatan ini menjadi kali pertama.
Tetapi seperti yang anda semua tahu, apabila saya menulis sesuatu dalam C, ia tidak menyimpan seperti
ini pada komputer.
Ia disimpan sebagai orang-orang dan sifar.
Ia pergi dari kod C dengan kod pemasangan.
>> Adakah sesiapa dilihat kod pemasangan sebelum ini, mesin kod pemasangan?
Kita akan melihat dalam satu saat.
Ia pergi dari kod C dengan kod pemasangan.
Dan anda semua tahu peringkat penyusunan.
Anda terpaksa menghafal untuk kuiz yang satu, dan kemudian menulisnya pada kuiz sifar.
Kebanyakan orang salah.
Saya fikir anda semua dipaku ia.
>> Tetapi, anda lelaki adalah seksyen yang terbaik untuk kuiz, dengan cara itu.
Yang adalah hebat.
Ia tidak akan menyakiti anda.
Jangan bimbang.
Tetapi ia benar-benar sejuk.
Kerja yang baik.
>> Jadi ia pergi ke bahasa himpunan, dan kemudian ia pergi kepada orang-orang dan sifar.
Dan orang-orang yang besar sifar dan disimpan pada komputer, dan itulah yang disimpan dalam
a.out, atau dalam kes ini, fail boleh laku.
Dan komputer berjalan orang-orang dan sifar.
Betul?
Kami telah belajar ini sebelum ini.
>> Jadi perkara yang sejuk adalah, ini tidak ditandatangani idea, idea jenis Ints tidak ditandatangani,
dan sebagainya, dan sebagainya, itu di sini dalam bahasa C.
Mereka wujud.
Tetapi jenis tidak wujud sama orang-orang yang dan sifar.
Jenis tidak benar-benar wujud di peringkat bahasa himpunan.
Jadi, itu sesuatu yang wujud dalam C dunia tetapi tidak wujud dalam komputer
dunia atau dunia pemproses.
Itulah beberapa abstraksi bahawa C bahasa telah dimasukkan, untuk membuat kita
hidup lebih mudah.
>> Jadi, pada akhir hari, saya boleh menulis banyak perkara yang berbeza di sini, dan ia
tidak membuat perbezaan.
Kerana itu hanya wujud di dunia C.
Ia tidak wujud dalam orang-orang dan sifar dunia.
Dan program kita melaksanakan dalam dan orang-orang yang besar sifar dunia.
Jadi minda anda jelas tidak ditiup yet.
Tetapi saya berfikir bahawa sejuk.
Ya, Jeff.
>> PENONTON: Jadi, jika bukan melakukan int, char anda lakukan.
Dan anda -
>> SPEAKER: Mari kita melakukannya dalam sebentar.
>> PENONTON: Kerana maka anda mendapat tidak ditandatangani pergi dari negatif kepada 128
127 atau 0 hingga 255.
>> SPEAKER: Jadi char adalah bermasalah.
Adakah sesiapa tahu mengapa char akan masalah, dan ia akan benar-benar
mengubah keadaan dalam yang dan sifar dunia?
>> PENONTON: Kerana saiz char.
>> SPEAKER: Saiz char ialah 1.
Jadi tidak ditandatangani juga 4 bait.
Jadi char akan skru perkara.
Tetapi apa yang 4 bait itulah berkaitan dengan char a?
Atau sekurang-yang menambah satu tambahan -
anda boleh meletakkan satu aksara lebih selepas char.
>> PENONTON: Char bintang.
>> SPEAKER: Char bintang ini mempunyai 4 bait.
Jadi mari kita buat sesuatu itu adalah satu bintang char.
>> Jadi ini mungkin akan bekerja, tetapi kami akan melakukan sesuatu yang
crazier daripada ini.
Pada pendapat saya, crazier.
>> Saya kini telah menulis satu fungsi yang mengembalikan penunjuk, dan ia mengambil
penunjuk dan nilai tidak ditandatangani - kita akan menukar kembali ini untuk int supaya kita tidak
membuat terlalu banyak perubahan sekaligus.
Dan ia mempunyai pelbagai dipanggil, indeks ke array, dan pulangan
alamat.
Kami telah melihat pengendali ini sebelum ini.
Ini, apa yang anda rasa ini akan untuk berbuat demikian, sebagai balasan, apabila saya menjalankannya?
Apa yang anda fikir ia akan lakukan?
Apa-apa tekaan?
>> PENONTON: Segfault.
>> SPEAKER: Apa?
Segfault?
Itu tekaan yang baik.
Tom berkata perkara yang sama.
Apa-apa tekaan yang lain?
>> Yang difikirkan ia akan melakukan perkara yang sama?
Yang difikirkan ia akan segfault?
Ia perkara yang sama.
Maaf.
>> Tetapi, sudah tentu, kita masukkan ke dalam 1 dan 2.
Dan mereka adalah kedua-dua sah, bukan?
Mari kita lihat, kita boleh pergi ke tempat kedua dalam array.
Tetapi bagaimana jika kita dibuat b nombor negatif?
Itu mungkin tekaan yang lebih baik sesuatu segfaulting.
Ia masih berfungsi.
>> OK, ini kini gila.
Ini adalah fungsi jumlah sama sah.
Ini melakukan perkara yang sama tepat sebagai pulangan a dan b.
Bolehkah sesiapa menjelaskan mengapa ini adalah baik yang kesimpulan fungsi, atau mengapa ini kerja-kerja?
Apa yang berlaku di sini?
Mengapa ini melakukan perkara yang sama tepat perkara sebagai fungsi jumlah lama kita?
[? Akshar,?]
apa yang berlaku?
>> PENONTON: Kerana apabila anda mempunyai a itulah alamat untuk
memori lokasi -
dan apabila anda Ampersand, ia pergi ke alamat ingatan.
Dan apabila anda pergi untuk b, anda jenis langkah dari alamat memori yang bergerak,
anda kembali itu.
Jadi anda sebenarnya, sebenarnya, menambah dan b [didengar].
Di manakah operasi standard pada pulangan yang?
Seperti, di manakah kurungan jatuh?
Apakah pulangan pada ucapan di sebelum atau selepas [didengar]?
>> SPEAKER: Ia akan indeks ke dalam b -
atau indeks ke dalam - dan kemudian kembali alamat.
OK, jadi tidak semua orang memahami apa [? Akshar?]
berkata, dan menjelaskan, mengapa ini berfungsi?
Saya tidak, kali pertama seseorang menjelaskan ini kepada saya.
Adakah sesiapa akan suka gambar untuk menerangkan ini?
Kita akan dijadikan imej, dengan tiada penanda, yang hebat.
Found beberapa.
>> Oleh itu, kita mempunyai pelbagai itulah satu siri kotak.
Yang pertama ialah indeks 0, indeks 1, 2, 3, 4, dot, dot, dot.
Satu pelbagai biasa.
Dan di samping mempunyai indeks, mereka semua mempunyai alamat-alamat ingatan.
Jadi mari kita memberi alamat ingatan ini 13, 14, 15, 16, 17, dan sebagainya.
Semua orang di sini setakat ini.
>> Jadi alamat.
Nama pelbagai, penunjuk disimpan di sana.
Ia penunjuk, ia lokasi memori, untuk permulaan array.
Jadi, jika ini adalah pelbagai, yang akan menjadi nilai 13.
Dan, sudah tentu, kita boleh memberi yang apa-apa nilai yang kita mahu.
Char bintang, kita boleh memberikan apa-apa alamat ingatan yang kita mahu.
Kami boleh memberikan 0, kita boleh memberikan negatif 1 - negatif 1 tidak wujud,
jadi itu mungkin bermasalah, tetapi anda melihat bahawa ia masih bekerja.
Oleh itu, kita boleh memberi apa-apa beberapa yang kita mahu, mana-mana alamat memori yang kita mahu.
>> Kemudian, int b berkata, OK, pergi nombor ini daripada langkah ke dalam array.
Jadi, jika b bersamaan 2 dan sama dengan 13, kami pada alamat ingatan 13.
Dan kami pergi dua langkah-langkah dalam, dan kami di sini.
Dan Ampersand bermakna pulangan alamat lokasi ini.
Dan alamat itu adalah, sudah tentu, 15.
Oleh itu, kita mendapat 13 campur 2, atau tambah b, iaitu 15.
>> Persoalannya, walaupun -
Saya minta maaf.
Adakah itu menjelaskan perkara mengapa ini kerja-kerja?
>> PENONTON: Mengapa ia akan bekerja akan -
supaya anda boleh mempunyai pelbagai dan pergi ke indeks negatif?
>> SPEAKER: Betul.
Begitu juga dengan kami nombor negatif, jadi itulah -
adakah ini masuk akal walaupun, pertama, [? Avi,?]
untuk anda?
>> PENONTON: Ya saya hanya [Didengar], tetapi -
>> SPEAKER: Ya, ini akan kembali 15.
Jika adalah 13, dan b adalah 2, ini akan kembali 15.
>> PENONTON: Jadi pengindeksan sifar tidak menjadi isu, bukan?
Kerana anda bergerak dari 0.
>> SPEAKER: Betul.
Jadi anda bergerak - jadi jika b adalah 0, anda tidak akan bergerak di mana sahaja.
Dan anda hanya akan kembali alamat -
jika b adalah 0, itu pada dasarnya kembali alamat a.
Lulus dalam char bintang dan mengembalikan alamat yang hanya mengembalikan sesuatu,
asasnya.
>> OK, persoalannya ialah mengapa nombor negatif berfungsi?
Dan itu perkara yang benar-benar sejuk kira-kira ini, kerana ini perlu segfault.
Dan ia akan segfault jika kita lakukan sesuatu seperti ini.
Katakan, int.
Jadi kod ini kelihatan serupa dan harus berkelakuan sepercaman.
Pada asasnya, x adalah pembolehubah sampah, dan sebagainya ini harus berkelakuan sepercaman.
>> Mari kita membuat ini -
oops -
dalam bintang.
OK, kita sudah mendapat kesilapan di sini, kerana ia sudah akan menjadi marah
pada saya, kerana ia sudah tahu apa yang akan datang.
Khususnya, yang kedua.
Alamat memori disusun berkaitan dengan pembolehubah tempatan.
>> Pada asasnya, saya tidak akan untuk menyusun ini, dan kemudian saya akan buat asal buat
apa yang kita hanya lakukan.
Tetapi kerana kita tidak pernah benar-benar mengakses apa yang di ingatan
lokasi, ia tidak akan segfault.
Kami tidak pernah benar-benar melihat apa yang di dalam kotak kedua atau apa yang dalam mana-mana peti
array ini.
Kami hanya katakan, inilah alamat yang benda yang kita cari dan
kembali alamat itu.
Kami tidak pernah benar-benar pergi ke array untuk melihat lokasi tersebut.
Dan kerana kita tidak pernah menyentuh memori, kita tidak mendapat dalam kesusahan.
Kami tidak mendapat segfault a.
>> Jika kita cuba, sekali lagi, sentuh yang memori, sentuh apa yang pada atau b -
atau b kurungan, dan menganggap yang adalah 0 dan -
jika adalah 0, walaupun, yang akan menjadi cantik tidak baik, kerana kita tidak boleh pergi
turun ke sana.
Jika a dan b adalah kedua-dua 0, dan kami cuba untuk menyentuh apa yang ada, maka kita akan
mendapat masalah.
Tetapi jika kita tidak menyentuh apa yang ada, kita hanya kembali alamat, ia adalah
sebenarnya tidak akan segfault kerana ia membolehkan anda melakukan pengendalian itu.
Ia hanya mendapat marah dengan anda, dan mendapat super marah, apabila anda cuba dan menyentuh
memori sebenar dan kembali apa yang di lokasi ingatan.
>> Adakah ini masuk akal?
Itu hanya sebahagian gila C. Jadi, kita mempunyai satu lagi ini.
>> Yang difikirkan ini adalah sejuk?
Lebih ramai orang.
Itulah yang baik.
OK, ini adalah terkini kami.
Dan saya ingin anda untuk memberitahu saya sama ada atau anda tidak rasa ini akan
untuk melakukan perkara yang tepat sama.
>> Saya telah ini diturunkan di suatu tempat.
Saya tidak menghafal mereka.
>> Mari kita lihat, 8, b 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4.
Jadi ini adalah satu pameran, kini, bukan fungsi.
Dan ia array kerana kita mempunyai kuasa dua kurungan, pendakap tidak kerinting.
Dan ia pelbagai jenis?
Sesiapa sahaja, hmm?
>> PENONTON: Nombor perenambelasan mereka?
>> SPEAKER: Tetapi apa yang jenis C?
Mereka semua mempunyai nombor perenambelasan.
Apakah jenis C?
Ia memberitahu anda.
>> PENONTON: Ia aksara tidak ditandatangani.
>> SPEAKER: Betul, aksara tidak ditandatangani.
Dan dua nombor perenambelasan adalah satu bait.
Jadi ini adalah 1, 2, 3, 4, 5, 6, 7, 8, 9 bait.
Ia merupakan satu array 9 bait.
>> OK, anda mungkin sudah tahu jawapan kepada soalan ini.
Tetapi, apa yang anda fikir akan berlaku apabila saya berjalan ini?
Saya katakan sekali lagi pada mysum.c, Saya menjangkakan satu majlis
yang mengambil masa dua integer.
Dan saya bukan mengatakan jumlah wang itu adalah pelbagai watak-watak.
Apa yang akan berlaku apabila Saya berjalan. / Mysum dan membuat?
>> Well, pertama, kebanyakan kamu akan mungkin bersetuju bahawa make - oh tidak, hanya bercanda.
What'd saya lakukan salah?
Uh oh.
Yang perlu pendakap kerinting.
Itulah bagaimana anda memulakan array.
Saya tidak baik.
>> Oleh itu, kita telah pun melihat sebelum itu jenis adalah abstraksi C-peringkat, bukan
tahap abstraksi komputer.
Jadi kebanyakan anda mungkin dijangka untuk membuat, atau menganggap bahawa ia akan membuat.
Tetapi apa apabila saya berjalan. / Mysum?
Apa yang akan berlaku?
Apa-apa tekaan?
>> PENONTON: Ia akan mencetak perkataan.
>> SPEAKER: Ia akan mencetak perkataan.
Apa perkataan?
>> PENONTON: [didengar].
>> SPEAKER: Mana-mana tekaan yang lain?
OK, mencetak frasa.
Anda boleh mempunyai mana-mana ungkapan.
Yang akan sisi anda.
Sesiapa sahaja yang mempunyai tekaan yang berbeza?
Anna, apa tekaan anda?
>> PENONTON: Ia akan mencetak -
dua surat, atau [didengar] satu huruf.
>> SPEAKER: Satu huruf.
>> PENONTON: Bolehkah saya mengira berapa banyak [didengar]?
>> SPEAKER: Sembilan.
Well, saya akan menjalankannya.
Ia melakukan perkara yang tepat sama.
Ia menambah dua nombor bersama-sama.
Nah, mari kita lulus dua hujah.
Ia tidak memerlukan hujah.
Jadi, saya tidak tahu di mana ia boleh mungkin mendapatkan hujah-hujah ini.
Tetapi mari kita lulus pada 100 dan 0.
Dan ia menambahkan 100 dan 0.
Itu tidak siuman.
Saya fikir begitu.
>> Negatif 4, yang bekerja juga.
Anda boleh melakukan apa sahaja yang anda mahu.
Ini adalah fungsi jumlah yang sama-sama sah.
Ini adalah satu fungsi jumlah.
Tetapi, tidak, yang anda katakan itu pelbagai bait.
Jadi apa yang sedang berlaku di sini?
>> Jadi, sekali lagi, mari kita kembali kepada idea ini bahawa kita berkata pada awal-awal.
Anda pergi dari kod C-peringkat, untuk pemasangan bahasa, untuk orang-orang dan sifar.
Ini adalah perenambelasan.
Tetapi ini adalah benar-benar hanya satu banyak yang dan sifar.
Ini adalah orang-orang yang 72 dan sifar, bukan?
72 orang-orang dan sifar.
9 bait.
Setiap bait mempunyai 8 bit.
Setiap bit adalah satu atau sifar.
Jadi 72 orang atau sifar.
Saya baru sahaja ditulis mereka seperti ini - bukannya menulisnya sebagai banyak
orang-orang dan sifar.
>> Tetapi ini akan pergi dari C-tahap bahasa, untuk pemasangan
bahasa, untuk kod.
Dan ini akan mencetak dalam kod, tempat, 72 orang-orang dan sifar
yang saya telah menulis di sini.
Jadi di suatu tempat di bahawa -
mari kita pergi di sini -
di suatu tempat di mysum, program ini, terdapat adalah 72 orang dan sifar yang saya telah
bertulis dan memberitahu ia untuk menulis.
>> Kini, mana-mana tekaan untuk apa yang mereka 72 orang-orang dan sifar bermakna?
>> PENONTON: Mungkin yang sama perkara seperti kembali tambah b.
>> SPEAKER: Mungkin yang sama perkara seperti kembali tambah b.
Mari kita mengesahkan bahawa.
Mari kita memikirkan bagaimana saya lakukan ini.
>> Jadi jika anda kembali di sini, saya memberitahu anda untuk menjalankan arahan ini, objdump-S
sumfunction.o.
Mari kita pergi menjalankannya. objdump -
obj, membuang.
Pada asasnya, ia boleh memberi saya apa yang saya mahu lihat.
Ia boleh memberi saya bahasa perhimpunan.
Ia boleh memberi saya satu dan sifar.
Ia mempunyai satu tan bendera.
Ini adalah salah satu yang kita akan digunakan untuk sekarang.
Dot -
seperti yang anda lihat dalam gambar -
modal sengkang S berkata, menyelingi, kod sumber -
baris ini adalah daripada C - dengan pemasangan kod dan dengan orang-orang dan sifar.
Dan kita akan berjalan pada sumfunction.o.
Kerana ia akan menjadi lebih mudah untuk melihat.
Lagi - hmm?
>> PENONTON: Anda dieja salah.
>> SPEAKER: Tetapi saya benar-benar akan untuk membersihkan ia untuk kali kedua.
Saya pertama akan membuka hanya sumfuntion.o.
>> PENONTON: Anda dieja ia salah kali pertama.
>> SPEAKER: Classic.
Jumlah -
yang merupakan perkataan keras, walaupun.
Anda akan terkejut.
OK, jadi ini adalah sumfunction.o.
Saya tidak dapat memberitahu anda.
Ada banyak besar sifar, jelas banyak sifar, dan ada beberapa yang lain
barangan itu bukan sifar.
Tetapi sebahagian besar sifar.
Kelihatan seperti ada beberapa yang.
Jadi jelas, ini adalah sukar untuk dibaca.
Itulah bahasa binari.
>> Sekarang mari kita membukanya -
apa?
Apa yang saya lakukan salah?
Adakah saya mengeja dengan betul?
OK, ini adalah janggal.
Saya memerlukan satu kedua untuk memikirkan apa yang saya lakukan salah.
Itu satu kesilapan.
Itu yang pelik.
Oh, itulah sebabnya.
>> Saya akan kembali ke awal kami satu, jadi kita boleh melihat
kod objek ini.
Kerana tidak benar-benar akan apa-apa apabila kita hanya meletakkan
orang-orang dan sifar masuk
Di sana kami pergi.
OK, jadi semua orang boleh melihat ini.
Fungsi ini, seperti yang saya katakan, memadamkan garisan C -
garis kod sumber -
dengan beberapa arahan pemasangan.
>> Berikut adalah garis kod sumber kami.
Berikut adalah satu, di sini satu lagi.
Berikut adalah arahan pemasangan.
Itulah apa yang mereka kelihatan seperti.
Arahan pemasangan -
anda boleh belajar lebih daripada jika anda mengambil CS kelas-kelas lain, tetapi ia
umumnya arahan.
Dan kemudian sumber dan destinasi.
>> Dan kemudian di sini adalah kod binari yang sepadan dengan pemasangan yang
pengajaran.
Jadi seperti yang anda lihat, fungsi jumlah ini, pada akhir hari, adalah tiga
arahan pemasangan.
Hanya tiga.
Satu mov -
ini m-o-v bermaksud Pindah a.
Tambah bermaksud Tambah.
Dan r-e-t bermaksud Return.
Jadi, satu mov, satu add, satu pulangan.
Dan ini, di sini, adalah besar sifar dan orang-orang yang sesuai dengan kod itu.
>> Maka orang-orang besar sifar dan orang, jika anda mengetahui orang-orang, anda hanya boleh meletakkan
mereka lurus masuk
Dan kemudian ia akan melakukan perkara yang perkara yang tepat sama.
Kerana, pada akhir hari, semua anda melaksanakan adalah siri yang panjang
besar sifar dan yang.
Dan itulah yang kod anda sebenarnya.
>> Dan sebab -
mari kita lihat satu perkara.
Adakah saya mempunyai makefile terbuka?
Jadi, jika kami kembali ke melontarkan sifar, sifar di sini -
maaf, modal o, modal o sifar, tidak sifar, sifar.
Dan kita tidak membuat, ia akan bekerja masih yang sama.
Tetapi sekarang anda perasan bahawa terdapat arahan pemasangan banyak lagi.
Ini kerana, sekali lagi, saya bertanya kepada Pengkompil tidak melakukan apa-apa pengoptimuman.
>> Jadi saya masih boleh mengambil semua ini besar sifar dan orang, dan melemparkan mereka dalam,
dan yang akan bekerja.
Saya hanya melakukan yang pengoptimuman, kerana ia sedikit lebih mudah, maka,
untuk menulis pelbagai itu.
Tetapi ini akan bekerja sama dengan baik.
>> OK, kita akan melakukan satu perkara akhir, kerana saya fikir adalah bahagian yang paling sejuk.
Walaupun semua orang dengan jelas sudah ditiup dan membisu.
Fikiran kita besaran.
[Didengar]
>> Jadi, ini adalah dari kelas CS yang berbeza, yang super menarik,
bahawa saya telah mengambil -
CS61.
Saya sangat menggalakkan anda untuk mengambilnya.
Tetapi bahagian yang sejuk kira-kira fakta ini, yang perkara-perkara yang hanya besar sifar dan yang,
adalah bahawa segala-galanya adalah besar sifar dan yang.
>> Jadi, anda boleh mengambil fail yang mempunyai besar sifar betul dan orang-orang yang anda mahu
di suatu tempat di dalamnya, dan menggunakan bahagian tersebut dalam besar sifar dan yang sebagai fungsi jumlah.
>> Apa yang saya maksudkan dengan itu?
Maksud saya, anda boleh mengambil fail imej yang mempunyai siri yang betul dan besar sifar
yang, yang mencetak sesuatu keluar kepada sesuatu imej.
Dan satu program mungkin mentafsir adalah imej, tetapi anda boleh mentafsirkannya, jika
anda mahu, sebagai fungsi jumlah.
>> Jadi, jika kita mahu untuk membuka, untuk Sebagai contoh, imej ini.
Mari kita pergi, Hello Kitty.
Imej kecil yang indah.
Di sini terdapat tali yang sifar dan yang.
Mereka 72 besar sifar dan yang wujud dalam imej ini.
>> Jadi apa yang boleh saya lakukan, maka, adalah menulis -
Saya perlu ingat di mana mereka berada.
Saya akan mendapati bahawa dalam satu saat.
Tetapi kita lakukan -
biarlah saya mengetahui di mana mereka berada.
Satu sec.
Mari kita lakukan -
>> PENONTON: [didengar].
>> SPEAKER: Terima kasih.
Jadi, jika kita melaksanakan program ini, yang bukannya dibaca dalam fail, kemudian ia pergi
pengenalan ini dalam fail.
Dan kemudian, sekali lagi, sama seperti mysum, mengambil dua nombor.
Kita boleh menambah nombor sama seperti yang kami lakukan sebelum ini, yang pergi ke
menunjukkan kepada anda bagaimana fakta bahawa, pada akhir hari, semua perkara ini adalah
besar sifar dan yang.
Dan ia hanya bagaimana anda memilih untuk mentafsirkan mereka.
>> Dan jika anda benar-benar melihat pada imej ini -
mari kita zum dalam sedikit.
Bolehkah semua orang melihatnya?
Anda akan melihat di sini, ada beberapa noda pelik.
Mari kita pergi - ini adalah imej asal.
Anda akan melihat di sini tidak ada noda.
Itulah kod untuk fungsi jumlah itu, ialah sedikit noda di sana.
>> Dan sebenarnya, sekali lagi, jika anda mengetahui lebih lanjut tentang perkara ini, anda akan menyedari bahawa ini
Hello Kitty, yang mempunyai walaupun yang lebih besar noda, mempunyai kod yang boleh mengambil alih
komputer jika ia tidak dilindungi sewajarnya.
Jadi anda benar-benar boleh menjalankan ini.
Saya tidak akan berjalan sekarang.
Tetapi anda boleh menjalankan ini Hello Kitty imej, dan ia boleh
mengambil alih komputer anda.
>> Jadi itu sahaja buat demo.
Adakah sesiapa mempunyai apa-apa soalan, komen, kebimbangan?
Saya rasa perkara ini adalah menarik.
Ia memberi inspirasi kepada saya untuk mengetahui lebih lanjut.
Saya sangat mengesyorkan, jika anda berminat pada semua pada CS, bercakap dengan saya.
Walaupun saya Kajian Sosial Penumpu, saya seorang CS, menengah, jadi
Saya masih tahu sedikit.
Tetapi saya tahu apa yang kelas anda perlu ambil.
Saya fikir itu semua benar-benar menarik, dan saya menggalakkan anda, sudah tentu, untuk
mengetahui lebih lanjut jika anda berminat.
>> OK, saya mempunyai satu akhir.
Maaf.
Apa-apa soalan?
Saya tidak berhenti untuk menunggu jika sesiapa mempunyai apa-apa soalan tentang itu.
>> Adakah sesiapa akan menjadi a CS Penumpu?
Atau memikirkan tentang perkara ini?
Satu, dua, tiga, empat.
Satu - satunya.
Anna merupakan satu-satunya tangan itu dibangkitkan sebagai lembaga.
OK, itu sejuk.
Assam, apa yang anda akan lakukan?
>> PENONTON: [didengar].
>> SPEAKER: Constantine?
>> PENONTON: Fizik.
>> SPEAKER: Wah, yang cepat.
Anda mempunyai pengalaman buruk di CS50?
[Didengar], apa yang anda akan lakukan?
>> PENONTON: Saya tidak mempunyai idea.
>> SPEAKER: Curt?
>> PENONTON: Econ atau CS.
>> SPEAKER: Econ atau CS.
Tom?
>> PENONTON: Saya melakukan Stat.
>> SPEAKER: Stat?
OK.
Apa yang anda?
>> PENONTON: Me?
>> SPEAKER: Ya.
>> PENONTON: Stat.
>> SPEAKER: Stat.
Oh, ada anda pergi.
Tom, bercakap dengan Alden.
Emily, apa yang anda?
>> PENONTON: Bioperubatan -
>> SPEAKER: Adakah anda dalam seksyen ini?
>> PENONTON: No
>> SPEAKER: OK, itu Emily.
Dia sahabat saya.
Jelas sekali tidak yang baik daripada rakan, kerana dia memberikan saya masa yang sukar.
Anda boleh menjadi lebih bagus kepada saya di hadapan semua orang, pelajar saya -
>> PENONTON: Saya melakukan panduan Q anda.
>> SPEAKER: Betul?
Uh oh.
OK, anda yang menakjubkan.
Saya suka kamu.
Oh lelaki.
>> Bagaimanapun, saya, malam tadi, seperti semua -
Saya pasti semua orang seolah-olah benar-benar menekankan sekarang.
Saya tidak tahu, adalah bayat - adalah kamu berasa tertekan?
Saya rasa tertekan.
Ia adalah seperti, anda pulang ke rumah untuk Kesyukuran.
Anda seperti, saya akan melakukan semua perkara ini.
>> PENONTON: Ia amat berbeza.
>> SPEAKER: Ya, dan anda kembali.
Jeff, anda tidak berasa begitu?
>> PENONTON: Saya hanya berfikir Saya melakukan sedikit.
>> SPEAKER: OK, hebat.
Jadi saya kembali, dan saya tidak mempunyai melakukan apa-apa.
Dan itu semua super tekanan.
Dan saya, benar-benar bimbang, kira-kira sama ada atau tidak saya
akan menyelesaikan semua yang saya perlu.
Tetapi malam tadi, saya tidak tertekan, Saya hanya sedikit sedih.
Jadi saya telah menulis dalam jurnal saya tentang apa yang saya sedih tentang.
Dan saya sedih mengenai seksyen ini di dalam kelas ini akan berakhir.
>> Jadi saya hanya akan membaca untuk anda semua coretan sedikit jurnal saya,
dari malam tadi.
Bolehkah saya mendapatkan beberapa tuala, beberapa tisu daripada Tom?
Tidak, saya akan menangis.
Saya tidak menangis.
Tidak bahawa anda tidak boleh menangis, Saya tidak menangis.
Saya tidak tahu jika air mata saya kelenjar bekerja - saluran air.
Saya tidak menangis dalam masa yang lama.
>> PENONTON: [didengar].
>> SPEAKER: OK, terima kasih.
OK, ada kata pengantar sedikit -
ada beberapa tempat lain di jurnal saya kemasukan, kerana saya cuba untuk jurnal setiap
malam sebelum saya tidur.
Saya sangat mengesyorkan journaling.
Ia membantu anda memproses sesuatu, dan juga sangat menghargai hari anda.
Dan ia menjadikannya lebih mudah untuk melihat kembali pada hari dan menyedari bahawa
terdapat banyak yang baik perkara-perkara yang berlaku.
Walaupun anda berasa benar-benar menekankan pada waktu malam atau benar-benar kecewa, atau
benar-benar sedih atau letih.
>> Oh, tuhan saya.
Saya tidak tahu jika ia bertulis yang juga kerana saya tidak mengoreksi ia.
Tetapi kami akan membacanya.
Saya biasanya tidak membaca saya jurnal, jelas.
>> "Esok, saya akan mengajar terakhir saya Seksyen CS50 tahun ini.
Ia gila bagaimana masa cepat terbang.
Namun, saya terpegun dengan betapa berbeza pengalaman saya mengajar pada tahun ini ialah
daripada apabila saya mahasiswa tingkat kedua a.
Sebagai permulaan, saya pasti tahu bahan yang lebih baik.
Tetapi jangan beritahu kohort pertama saya pelajar itu.
Lebih penting lagi, bagaimanapun, saya sedar bahawa kegembiraan yang datang dari kedudukan
di hadapan sebuah bilik apa yang bermula sebagai orang asing, tetapi berakhir sebagai, pada
kurangnya, rakan-rakan Facebook, adalah bukan kebetulan tahun pertama.
Sebaliknya, ia adalah daripada mengetahui bahawa, pada beberapa cara kecil, anda membantu
berbakat, bertimbang rasa, menarik, dan orang bersemangat belajar sedikit lebih
tentang sains komputer.
>> Anda beralih bahawa mentol hanya bit dalam soket, supaya ia dapat
bersinar terang daripada anda, atau mereka, dapat membayangkan pada semester bermula.
Anda membantu menyahaktifkan mengerutkan dahinya terbalik turun dan bertanya soalan yang
memberikan sokongan, tetapi masih membenarkan pelajar untuk berdiri sendiri.
>> Ia sudah tentu tidak keterlaluan jika mengatakan bahawa seksyen ini adalah kegemaran saya
sebahagian dalam seminggu.
Atau pun yang saya teragak-agak untuk mengatakan, itu semua, pada 5:30 setiap minggu, mengetahui
bahawa ia akan menjadi terlalu panjang sehingga kita bertemu lagi.
>> Namun, saya amat berterima kasih kepada semua orang yang diberikan saya ini
peluang untuk memberi semula kepada orang lain.
Kepada Daud, atas kesabaran dan amanah beliau.
Untuk filem dan pengeluaran anak-anak kapal, untuk membuat saya kelihatan agak dihormati.
Dan, yang paling penting, kepada pelajar-pelajar saya, tanpa mereka saya tidak mempunyai sebab untuk
menghabiskan 10 jam memikirkan yang terbaik cara untuk menarik petunjuk, atau menyusun atur
jadual ikan lumba-lumba, menerusi JavaScript.
Seperti biasa, ia menjadi rahmat. "
>> Maka dengan itu, terima kasih semua.
Jumpa anda semua di pameran CS50, dan hackathon, jika anda berada di sana.
Dan jika anda mempunyai soalan, saya akan melekat sekitar sehingga tidak ada lagi.
Tetapi saya mengucapkan terima kasih kepada anda semua untuk setahun yang indah.
>> [Tepuk tangan]
>> SPEAKER: Saya mungkin menangis.