ALLISON BUCHHOLTZ-AU: Hey, semua orang.
Selamat datang di bagian.
Hari ini hanya akan menjadi semua kuis mengulas untuk kuis Anda pada hari Rabu.
Saya berharap semua orang ingat bahwa mereka memiliki kuis pada hari Rabu.
Dan jika Anda tidak, baik, sekarang Anda sudah diingatkan.
Jadi Rabu pastikan Anda muncul untuk kelas atau akomodasi lain
diperlukan.
Kalian akan menjadi luar biasa.
Itu akan menjadi besar.
Dan aku akan melakukan apa saja untuk membantu mempersiapkan Anda hari ini untuk kuis Anda
sekarang.
Dan juga jika Anda tidak tahu, ada sesi ulasan lebar saja
hari ini di 07:00 di Laboratorium laut ruang B103.
Anda dapat melihat saya lagi untuk sebuah encore sebagai Aku akan memimpin bagian dari sesi Ulasan
juga.
Jadi, jika Anda tidak bisa mendapatkan cukup dari saya sekarang, Anda bisa datang lagi malam ini.
>> Baiklah, hal-hal begitu pertama yang pertama.
Hanya beberapa tips kuis sebelum kita benar-benar menyelam ke ulasan.
Sehingga dengan ujian, praktek pasti akan membantu Anda keluar.
Ada ujian dari masa lalu enam atau tujuh tahun di sana,
sehingga banyak praktek bahan untuk kalian untuk memiliki.
Dan pada kenyataannya, hari ini benar-benar hanya akan pergi atas topik apapun
bahwa kalian punya pertanyaan pada juga sebagai bekerja melalui masalah praktek
dari kuis nol.
Jadi saya akan muntah kuis nol dari tahun lalu di sini,
dan kita dapat bekerja melalui masalah bahwa kalian ingin.
>> Jadi berlatih.
Anda akan mulai melakukan hal itu hari ini.
Kode di atas kertas.
Jadi ya, jika semua orang benar-benar bisa keluar
kertas, yang akan menjadi besar, karena Anda tidak
akan memiliki komputer Anda pada ujian dan menuliskan kode dengan tangan
seringkali jauh lebih sulit daripada yang mungkin Anda harapkan.
Anda terbiasa untuk hanya melihat dan mengetik,
dan Anda memiliki compiler untuk membantu Anda ketika Anda memiliki kesalahan,
tetapi Anda tidak mendapatkan bahwa pada ujian.
Jadi itu benar-benar penting untuk benar-benar dapat menulis kode,
dan bahwa memori otot untuk melakukan dengan tangan akan sangat membantu Anda.
>> Jadi kita mendapatkan sedikit dekat.
Itu Senin.
Ujian Anda adalah pada hari Rabu.
Tapi jika Anda memiliki waktu, pasti mengambil satu
ujian dari tahun lalu atau tahun sebelumnya di bawah kendala waktu
dari satu jam setengah.
Hanya knock out satu jam dan setengah dari waktu,
dan duduklah, dan hanya bekerja melalui masalah
seolah-olah Anda benar-benar mengambilnya, karena salah satu
hal terbesar yang kita dengar tentang kuis adalah bahwa mereka sangat panjang.
Ini adalah banyak bahan.
Ada banyak pertanyaan, dan kebanyakan orang mungkin tidak selesai.
Saya tahu bahwa saya benar-benar tidak selesai kuis saya ketika saya mengambil kelas.
>> Pada catatan itu, sebagai kurang Bagian yang nyaman,
memahami bahwa kursus ini dimaksudkan untuk melayani orang-orang dari semua tingkatan.
Seluruh alasan kita memiliki Anda memisahkan kurang nyaman, di suatu tempat antara,
dan lebih nyaman untuk jenis membuatnya lebih adil.
Dan jika Anda kurang nyaman, itu tidak perlu per se untuk mendapatkan semuanya.
Seperti jika Anda mendapatkan segala sesuatu, Anda mungkin akan
berada di bagian lebih nyaman.
Jadi jelas tidak mengalahkan dirimu sendiri terlalu keras jika Anda tidak dapat menyelesaikan ujian.
Mengambilnya dari saya, saya tidak melakukannya.
Aku masih concentrator.
Aku masih membantu mengajar kursus.
Anda akan baik-baik saja.
Baik.
Dan terakhir, tidur.
Tentunya dengan ujian apapun kita selalu mengatakan ini.
Menjejalkan malam sebelum dan tidak mendapatkan tidur
tidak not-- mungkin jika itu bekerja untuk Anda, pergi untuk itu.
Tapi untuk sebagian besar orang, mendapatkan tidur,
membiarkan sisanya otak Anda dan memulihkan sebelum datang untuk ujian
akan sangat membantu Anda.
Juga akan ada hampir pasti akan permen di ujian,
sehingga Anda harus melihat ke depan untuk.
Kalian akan melakukan besar.
Ini akan baik-baik saja.
Dan sekarang dalam satu jam berikutnya dan setengah saya akan mencoba dan persiapan Anda sebagai terbaik yang saya bisa.
>> Jadi saya memiliki slide dari dasarnya semua bagian sampai sekarang.
Aku tidak akan pergi melalui semua dari mereka karena itu bukan
layak dalam satu jam dan setengah juga sebagai bekerja melalui latihan soal.
Jadi bukannya saya memiliki daftar topik.
Ini adalah semua hal bahwa kita bisa kuis Anda pada.
Jika ada sesuatu yang benar-benar melompat keluar
bahwa Anda ingin pergi, bahwa Anda ingin aku pergi secara konseptual,
Saya dapat mencoba dan memberikan Anda gambaran sana.
Atau jika Anda ingin melompat tepat di untuk melakukan latihan soal bersama-sama,
kita bisa melakukan itu.
Terserah kalian.
Tidak ada yang banyak dari Anda.
Jadi itu apa pun yang kalian ingin lakukan.
Saya ingin menjadi yang paling membantu ke arah kalian.
Jadi saya akan membiarkan Anda hanya melihat.
>> AUDIENCE: Satu hal yang grafik bahwa kita menjaga
mengatakan tentang stack dan heap.
Hanya Seluruh ide di balik itu dan apa artinya.
ALLISON BUCHHOLTZ-AU: Ya, OK.
Ini semua jalan di end, jadi biar menggulir.
>> AUDIENCE: Kami tidak perlu melakukannya sekarang, tapi apa pun.
>> ALLISON BUCHHOLTZ-AU: Apakah ada anything-- satu ini.
Apakah seperti ini fuzzy untuk orang?
AUDIENCE: Ya, saya kedua itu.
Dan bisa juga kita lakukan buffer overflow?
ALLISON BUCHHOLTZ-AU: Buffer overflow?
OK.
Jadi buffer overflow cukup mudah hanya untuk dibicarakan.
Hal ini pada dasarnya buffer Anda berpikir tentang beberapa array memori yang Anda miliki, kan?
Kami biasanya berbicara tentang buffer overflow ketika
Anda tidak memeriksa berapa banyak pengguna meletakkan dalam, kan?
Dan gagasan yang dengan buffer overflow adalah
mereka menempatkan dalam jauh terlalu banyak data untuk ruang
bahwa Anda telah dialokasikan untuk mereka, kan?
>> Jadi jika Anda mengatakan, berikan saya beberapa pesan, kami
dengan asumsi bahwa mereka akan memberikan kami pesan panjang masuk akal.
Mungkin beberapa baris, yang lainnya.
Jadi kita tidak memeriksa.
Sebaliknya mereka memberi kita dalam seluruh buku itu pesan,
dan itu meluap jumlah ruang yang telah kita dialokasikan untuk ini.
Dan apa yang terjadi adalah mungkin menimpa tempat yang tidak seharusnya.
>> Jadi saya tahu Profesor Malan mengatakan sesuatu tentang serangan buffer overflow.
Jadi itu adalah di mana pengguna akan masukan beberapa jumlah besar data dengan harapan
bahwa ia menimpa masa lalu akhir buffer Anda
dan menggantikan something-- aku bertanya-tanya Saya kita memiliki orang-slide dalam sini.
Saya tidak berpikir kita harus slide tersebut di sini.
Tapi pada dasarnya dia menimpa beberapa bagian dari memori
yang memungkinkan dia akses ke bagian dari komputer Anda
bahwa Anda tidak akan biasanya memiliki akses ke.
>> Hal terbesar dengan buffer overflow hanya
untuk memahami bahwa terjadi ketika Anda tidak
memeriksa berapa banyak Anda pengguna menempatkan dalam.
Bila Anda tidak jenis menjaga terhadap itu.
Dan pada yang paling sederhana hal, itu hanya pengguna Anda
memasukkan sejumlah besar data dalam upaya
menimpa beberapa keamanan sebagian memori Anda.
Itu semua itu.
>> Jadi ini di sini, stack dan heap.
Pada dasarnya semua ini adalah hanya representasi dari memori
dan di mana hal-hal yang disimpan.
Itu benar-benar jenis semua yang perlu Anda ketahui.
Hal terbesar yang Anda perlu tahu adalah
itu-- biarkan aku melihat apakah ada better-- sini.
Jadi ini adalah tumpukan di sini.
>> Jadi tumpukan harus dilakukan dengan semua fungsi Anda
bahwa Anda menelepon pada waktu tertentu.
Dan apa yang penting untuk diingat pergi dari minggu lalu dengan malloc
adalah bahwa Anda tidak benar-benar memiliki kontrol yang diperlukan di atasnya.
Itu semua tergantung pada saat tertentu fungsi mengeksekusi.
Dan ketika mereka mengeksekusi, mereka memiliki apa yang disebut tumpukan frame
yang naik di sini.
>> Jadi semua jenis terjadi tanpa masukan nyata dari Anda.
Anda menulis program Anda, dan Anda biarkan berjalan,
dan tumpukan jenis mengambil mengurusinya sendiri karena perlu.
Jadi jika dalam utama Anda menelepon kubus, yang akan dilewati di sini.
Ini akan membuat bingkai.
Tapi tidak ada yang secara eksplisit melakukan untuk menciptakan stack frame selain
menulis fungsi untuk memulai dengan, OK?
>> Apa jenis di bawah Anda kontrol tumpukan dengan malloc.
Jadi setiap kali Anda malloc sesuatu, Anda mengambil memori dari tumpukan.
Dan itu adalah memori yang Anda memiliki, karena tidak ada kata yang lebih baik,
kontrol eksplisit atas, karena ingat dengan malloc
itu pada dasarnya ada sampai Anda mengatakan sebaliknya.
Bagi Anda yang menyaksikan bagian pekan lalu,
itu ada sampai Anda kirim untuk pergi.
Ini akan berada di sana kecuali jika tidak mengatakan tidak.
Jadi tumpukan hanya sesuatu Anda bisa memikirkan sebagai memori
bahwa Anda memiliki kontrol atas.
Dan orang-orang yang hanya dua hal besar yang berbeda.
>> Selain itu, Anda tidak harus memiliki khawatir terlalu banyak tentang stack dan heap
pertanyaan atau biasanya lebih adil jika Anda memiliki parameter lokal
atau fungsi itu akan pada stack atau heap.
Tentunya dalam hal ini itu akan menjadi tumpukan.
Jika Anda mallocing sesuatu, mana yang datang dari?
Tumpukan.
Jika anda melihat praktek kuis, mereka umumnya jenis pertanyaan
yang mereka miliki.
>> Anda tidak perlu khawatir terlalu banyak tentang hal itu.
Anda masuk ke lebih eksplisit tentang stack dan heap
nanti atau di kelas-kelas lain CS.
Jadi hanya memiliki semacam gambaran umum tentang apa ini
akan baik, yang saya hanya jenis pergi.
Setiap topik lain?
Ya?
>> AUDIENCE: Dapatkah Anda pergi pointer lagi benar-benar cepat?
ALLISON BUCHHOLTZ-AU: Pointer?
Apakah Anda ingin konseptual ikhtisar pointer
atau apakah Anda berlatih dengan pointer?
AUDIENCE: Jenis seperti sintaks.
ALLISON BUCHHOLTZ-AU: Sintaks?
Ya.
OK, kita sudah di sana.
Ya, jadi ini hanya semacam sesuatu ketika Anda memiliki fungsi rekursif,
setiap kali fungsi rekursif adalah disebut, itu hanya menambah stack frame lainnya.
Cukup banyak contoh bagaimana Anda tidak benar-benar
memiliki kendali atas frame pada stack.
>> OK, pointer.
Baiklah, jadi menciptakan pointer.
Ingat, itu hanya mengetik bintang.
Jadi jenis data apa pun yang Anda akan menunjuk ke.
Jadi ini akan menjadi pointer ke int.
Ini akan menjadi pointer ke char.
Ini akan menjadi pointer ke float.
Jadi pada dasarnya apa pun Anda ingin menunjuk ke,
Bintang adalah bagaimana Anda menyatakan pointer, OK?
>> Tapi kemudian jelas mendapat sedikit sulit ketika Anda memiliki pointer
atau Anda memiliki membintangi apapun.
Jadi perbedaan besar adalah ketika Anda declaring--
jadi kita harus some-- jadi ini membutuhkan beberapa bintang int.
Jadi ini adalah beberapa pointer panggilan x ke int, kan?
Jadi ingat apa yang dilakukan apakah ini panggilan sistem x.
Dan ini akan memiliki beberapa alamat, kan?
Jadi mari kita mengatakan ini adalah alamat kami.
Pointer memiliki alamat.
Jadi apa ini, dapat dikatakan bahwa di lokasi, kita menyimpan sebuah int.
>> Jadi cara lain yang dapat kita pikirkan ini adalah bahwa ini adalah beberapa int.
Kami belum benar-benar ditugaskan untuk apa pun, tapi itu hanya sebuah int.
Jadi kita bisa lakukan adalah jika kita membintangi x sama dengan 5, ini menjadi 5, OK?
Ini mengatakan pergi ke apa pun x adalah menunjuk, jadi pergi ke alamat ini
dan membuatnya sama dengan 5.
Jadi kami menetapkan 5 ke alamat ini, kan?
>> Dan kemudian jika Anda melakukan ini, ini memberi kita alamat.
Ini adalah alamat dari operator.
Jadi apa adalah alamat dari x?
Kita tidak tahu.
Kami belum ditugaskan alamat.
Kita bisa mengatakan itu some-- sekarang kami berikan itu alamat, sehingga alamat adalah 4.
Dan sebenarnya jika kita pergi melalui sesuatu seperti ini, jenis apa yang kita lakukan.
Jadi bekerja melalui sini-saya menemukan akan membantu jika Anda menarik keluar pointer.
Jika Anda pada ujian Anda, saya sangat merekomendasikan menggambar kotak.
>> Jadi yang pertama ini, int x sama dengan 5.
Ini hanya berarti kami memiliki beberapa tempat di memori yang 5, kan?
Dan meja kami di sini memberitahu kita bahwa itu di alamat 0x04.
Dan kemudian kita membuat beberapa pointer.
Jadi mari kita istirahat ini turun satu per satu.
Jadi ini menciptakan beberapa kotak untuk int, kan?
Ini akan terus beberapa alamat dari itu.
Jadi ini adalah beberapa pointer.
Dan kapur ini benar-benar kecil.
Jadi kita memiliki beberapa pointer di sini.
Dan meja kami memberitahu kita yaitu alamat adalah 0x08.
Keren.
Dan kami menugaskan ke alamat x.
>> Ingat, pointer memegang alamat, OK?
Jadi jika kita ingin terus x, kita memiliki menggunakan operator alamat, yang
adalah ampersand, untuk mendapatkan alamat x, yang dalam hal ini, 0x04.
Dan kemudian jika kita memiliki beberapa salinan int, ini hanya
menciptakan beberapa kotak lain yang memegang int disebut copy.
Dan jika kita menetapkan ke this-- jadi ini adalah referensi itu.
Jadi ia mengatakan pergi ke apa pun alamat pointer memegang.
Pointer memegang alamat ini, jadi kami akan pergi ke sini,
dan kita katakan, OK, apa untungnya?
Ini 5.
Jadi copy menjadi 5.
Masuk akal?
>> Bagaimana jika saya mencoba untuk menetapkan ini hanya pointer.
Apa pointer sebenarnya sama?
Itu hanya akan menjadi apa pun pointer berisi, kan?
Dan kemudian bagaimana jika saya melakukan ini?
Apa yang akan menyalin sekarang?
>> AUDIENCE: 0x08.
ALLISON BUCHHOLTZ-AU: Yap, alamat pointer kita.
Setiap bagian dari itu yang kebutuhan yang akan kembali dijelaskan?
Keren.
Pasti ada yang sangat menyenangkan masalah pada kuis satu
bahwa kita dapat atas bahwa memberi Anda lebih banyak praktek.
Orang-orang dari minggu lalu bisa memberitahu Anda itu bukan yang buruk.
Kami berhasil melewati seluruh grafik, dan semua orang melakukan besar.
>> OK, jadi itu gambaran sintaks pointer.
Hal terbesar adalah memahami bagaimana untuk menciptakan mereka, melakukan referensi,
dan alamat, OK?
Keren.
Setiap topik lain sebelum kita menyelam ke dalam praktek.
Juga jika kita akan melalui masalah praktek
dan ada sesuatu yang Anda ingin penyegaran, kita dapat melakukannya juga.
Apakah Anda memiliki sesuatu?
>> AUDIENCE: Structs dan daftar terkait.
ALLISON BUCHHOLTZ-AU: Structs dan terkait daftar, OK.
Jadi struct.
Kami benar-benar akan malam ini ini juga.
OK, jadi struct.
Structs pada dasarnya hanya satu cara bagi Anda untuk terus
beberapa nilai dari berbagai jenis.
Jadi dengan array kita terbatas untuk satu jenis data.
Array kita baik harus hanya menjadi angka, atau hanya menjadi karakter, atau hanya menjadi mengapung.
>> Tapi mungkin Anda perlu berisi lebih dari itu.
Mungkin Anda perlu hold-- jika Anda sedang berbicara tentang mahasiswa,
Anda akan memiliki rumah mereka, mereka Nomor ID, usia mereka, di mana mereka tinggal,
kan?
Dan semua dari mereka adalah berbagai macam jenis.
Jadi Anda tidak dapat menyimpan mereka semua dalam array.
>> Jadi apa yang dapat Anda lakukan adalah Anda dapat membuat struct, yang
Anda bisa memikirkan sebagai Anda sendiri tipe data pribadi.
Jadi bukan hanya memiliki int dan bukan hanya memiliki mengapung,
Anda dapat memiliki jenis mahasiswa yang memiliki semua bidang ini di dalamnya.
Jadi cara kita menginisialisasi struct kami is-- sebenarnya
karena tulisan saya mengerikan, kita akan transisi ke mengetik.
Woo.
>> OK, jadi jika kita ingin membuat sebuah struct-- Aku hanya akan turun di sini.
Mengabaikan dalam main apa pun yang akan kita gunakan nanti.
Jadi cara yang Anda ingin lakukan itu adalah dengan struct typedef.
Dan mari kita sebut mahasiswa ini karena itulah yang saya gunakan.
OK, jadi typedef berarti Anda mendefinisikan jenis baru, OK?
Ada nuansa ke dalam ketika Anda melakukan hanya struct versus struct typedef.
Untuk semua maksud dan tujuan, kalian hanya
akan menganggap mereka kurang lebih sama dan hanya
menggunakan typedef struct untuk saat ini.
Ini akan menjadi cara yang lebih jelas dalam Anda P berikutnya mengatur apa perbedaan itu,
tapi saya tidak berpikir Anda perlu khawatir tentang itu sekarang.
Saya akan lebih suka Anda tahu cara membuat satu,
mengaksesnya, dan menetapkan [? nilai. ?]
>> Sebuah jenis baru dari struct, dan kita menyebutnya mahasiswa.
Jadi setelah kami selesai membuat ini, untuk semua maksud dan tujuan,
Anda akan memiliki jenis yang disebut mahasiswa.
Dan Anda bisa memikirkan itu hanya sebagai tipe seperti int, atau pelampung, atau char.
Hanya saja jenis lain, OK?
>> Jadi dalam satu ini, apa yang kita miliki?
Kami memiliki mungkin nama.
Jadi mungkin kita ingin string name.
Dan kami memiliki mungkin int itu sebuah ID.
Dan kami memiliki lain itu nomor telepon.
Dan kami telah some-- mari kita lihat.
Apa lagi yang kita miliki?
Kami akan memiliki beberapa string di rumahnya.
Semua hal bahwa seorang siswa memiliki.
>> Jadi ini menciptakan sebuah struct sekarang.
Jadi bagaimana mungkin kita membuat mahasiswa?
Jika kita memiliki beberapa variabel yang akan berbicara tentang Walker sini,
jadi kami have-- kami hanya akan memanggil walker ini.
Dia membutuhkan tipe.
Apa jenis Anda?
AUDIENCE: Student.
ALLISON BUCHHOLTZ-AU: Student.
Jadi ini hanya menciptakan sebuah objek yang Anda bisa memikirkan yang memiliki semua hal-hal ini.
Anda baru saja membuat mahasiswa walker.
Jadi sekarang kita harus mampu untuk menetapkan semua ini, kan?
Jadi tidak ada yang ingat bagaimana kita akses dalam struct?
AUDIENCE: Periode.
ALLISON BUCHHOLTZ-AU: Periode Tepat.
Jadi jika kita ingin menetapkan dia nama, kita bisa melakukan itu.
Jelas ini akan be-- bagian ini di sini akan
berada dalam utama, sehingga benar-benar membiarkan saya melakukan hal ini.
Menyatakan ini atas utama sehingga bahwa kita dapat menggunakannya dalam utama.
Jadi sekarang saya ingin melakukan ID, dan kami hanya akan melakukan beberapa di sana,
dan kemudian kita akan menetapkan sebuah rumah.
Bam.
Keren.
>> Jadi sekarang harus kita merasa perlu untuk akses apa kemudian on-- mungkin we--
jika kita merasa perlu untuk mengakses apa-apa, mari kita melakukan ID int copy.
Dan aku ingin menyalin Walker ID ke dalam ini.
Bagaimana saya bisa melakukannya?
Anda perlu untuk mengakses dalam walker struct ke [? pergi ke itu?] [? E?].
Dan dengan cara yang sama bahwa kita ditugaskan di sini, bagaimana
mungkin kita mengaksesnya ketika kita ingin memberikan bahwa nilai sesuatu yang lain?
AUDIENCE: Walker.id.
ALLISON BUCHHOLTZ-AU: Ya, persis.
Jadi itu cukup banyak semua Anda perlu tahu untuk struct.
Anda hanya perlu memikirkan mereka sebagai variabel lain.
Pada dasarnya membuat Anda Jenis variabel sendiri, OK?
Anda menggunakannya untuk mendeklarasikan variabel dengan cara apapun.
Berikut walker masih variabel.
Itu hanya memiliki tipe mahasiswa sekarang bukan dari int jenis, atau tipe string,
atau tipe char.
Jika ada cara mudah untuk berbicara tentang struct, itu benar-benar hanya
membuat tipe data sendiri yang memungkinkan Anda untuk kelompok
semua ini berbeda jenis data bersama-sama.
Apakah itu masuk akal?
OK.
Itu dan mengakses dengan titik-titik.
Hampir semua yang Anda butuhkan.
>> OK, mana PowerPoint saya pergi?
Ini dia.
Nah ini aneh.
Aha.
OK, keren.
Hal-hal lain atau kita ingin kepala untuk berlatih?
Praktek?
OK.
Mengagumkan.
Aku akan keluar dari ini.
Jika pada setiap saat selama soal latihan,
Saya senang untuk merubah dan pergi melalui hal-hal.
Jadi saya punya kuis nol di sini.
Jika kalian ingin menarik di komputer Anda,
hanya ingin mengambil lima menit untuk menelusuri.
Mungkin memilih beberapa top pertanyaan yang Anda ingin pergi.
Jika kalian tidak bisa memutuskan, kita hanya akan perlahan-lahan mulai bekerja melalui mereka,
tapi aku yakin ada akan ada beberapa pertanyaan yang Anda sangat
ingin berbicara tentang dan memiliki saya bekerja melalui dengan Anda semua.
Jadi hanya pergi ke depan dan mengambil lima menit.
Gulir melalui.
Dan ini adalah kuis dari 2013.
>> AUDIENCE: Zero?
>> ALLISON BUCHHOLTZ-AU: Ya, kuis nol.
Kami tidak melakukan kuis satu hal.
Kami akan melakukan itu dalam beberapa minggu.
Juga untuk anda yang datang terlambat, kita memiliki permen,
begitu juga kalian ingin permen?
>> AUDIENCE: Tentu.
>> ALLISON BUCHHOLTZ-AU: Aku hanya akan lulus sekitar.
Hei, jika kalian mendapatkan di sini awal, Anda mendapatkan lebih banyak permen.
Itu baik-baik saja.
Ben, apakah Anda ingin permen?
Anda ingin beberapa dari ini?
Ada juga Snickers jika ada yang ingin Snickers.
Aku akan meninggalkan mereka di sini dan di sini.
Jangan ragu.
Apakah Anda ingin lagi?
AUDIENCE: Semua set.
Terima kasih.
>> ALLISON BUCHHOLTZ-AU: Dan aku punya bagus sedikit tumpukan di sana di awal.
Kalian bisa mengambil kuis dan Aku bisa memiliki pesta kuis dengan kadar.
Ini kekacauan.
900 ujian.
Ini akan menjadi sangat menyenangkan.
Akan menjadi besar.
Aku cukup yakin itu salah satu dari ikatan staf terbesar
malam tahun.
Apakah ada orang melakukan kuis nol dari tahun lalu belum keluar dari rasa ingin tahu?
>> AUDIENCE: Bagian itu.
>> ALLISON BUCHHOLTZ-AU: Bagian itu, OK.
Apakah Anda memiliki pertanyaan tentang salah satu dari mereka?
AUDIENCE: Saya sudah pergi ke jam kantor.
Terima kasih sekalipun.
ALLISON BUCHHOLTZ-AU: Yah, mudah-mudahan itu masih agak membantu.
Kapan Anda pergi ke jam kantor untuk itu?
AUDIENCE: TF saya telah mereka sore ini.
ALLISON BUCHHOLTZ-AU: Oh.
Siapa TF Anda?
AUDIENCE: Fred [? Wujaya?].
ALLISON BUCHHOLTZ-AU: Ada begitu banyak TF.
Begitu banyak.
Baik.
Ada yang punya untuk memulai yang saya dapat menuliskan bahwa kita ingin bekerja pada?
Saya berasumsi pointer satu dengan meja.
Pergi untuk itu.
>> AUDIENCE: Mungkin saklar satu.
ALLISON BUCHHOLTZ-AU: Jadi nomor 12?
Saya berasumsi nomor 8 dan 9 mungkin orang yang ingin pergi.
>> AUDIENCE: Dan 10 dan 11.
>> ALLISON BUCHHOLTZ-AU: Dan kalian tahu Anda mendapatkan satu halaman catatan, kan?
>> AUDIENCE: Ya, jadi apa yang kami diizinkan untuk memakai itu.
>> ALLISON BUCHHOLTZ-AU: Kau diizinkan untuk menempatkan apa pun yang Anda inginkan.
Dan itu dapat diketik.
Sejauh yang saya ingat, kita diketik.
>> AUDIENCE: Anda dapat melakukan kembali dan kedua belah pihak?
>> ALLISON BUCHHOLTZ-AU: Ya, kedua belah pihak.
Jadi sesuatu seperti tumpukan dan [? back end?] tumpukan, Anda berjalan
kali.
Berguna.
Hal mungkin sedikit tentang pointer untuk mengingatkan Anda.
Sintaks untuk hal-hal.
Setelah hanya seperti tengkorak Program dapat menjadi super berguna.
Saya tahu bahwa saya selalu lupa apa Aku harus menulis untuk int main,
karena saya selalu hanya menyalin paste dari sebelumnya P set saya
atau itu sudah ada, jadi Aku tidak pernah benar-benar menulis itu,
sehingga memiliki yang dapat menjadi super berguna.
>> OK, jadi mengapa tidak kita mulai dengan nomor 8 itu?
Baik.
OK.
Jadi pertimbangkan program di bawah ini.
Jadi jelas ketika kita melihat pointer, itu mungkin
ide yang baik untuk mulai menggambar, kan?
Aku ingin tahu di mana semua saya potongan-potongan besar kapur pergi.
Ini adalah jenis menjengkelkan.
>> Jadi kita miliki di sini beberapa fungsi Swap yang akan mengambil dalam dua pointer.
Jadi dalam hal ini, mereka harus benar-benar beralih
hal dibandingkan Swap kami asli fungsi yang hanya mengambil dalam salinan.
Jadi apa yang akan dilakukan is-- mari kita mulai dengan utama,
karena di situlah 1 adalah.
>> Jadi kita memiliki beberapa int x 1.
Kami memiliki beberapa y yang sama dengan 2.
Dan kemudian kita memiliki beberapa Swap itu akan mengambil orang-orang.
Dan mari kita lihat apa yang kita miliki di sini.
Dan dalam table-- kami oh boy.
Bagaimana aku akan melakukan ini?
Aku akan menggambar meja saya di sini.
Hampir tidak membuatnya di sana.
Hampir tidak membuatnya.
1, 2, 3, 4, 5, 6, 7.
Dan mereka memberi kita bahwa 1 adalah 1, dan 1 2.
Keren.
Mengagumkan.
Jadi 3.
Dan ada [? 1.?]
>> Baik.
Dan kemudian alamat x adalah 0x123.
Dan y adalah Ox127.
Keren.
Baik.
Aku ingin kalian bekerja pada ini untuk bekerja hanya like-- di atasnya
dengan orang-orang di sekitar Anda.
Saya berharap saya telah mengatakan bahwa sementara aku sedang menyiapkan.
Bekerja di dalamnya.
Cobalah dan bekerja di dalamnya dengan dirimu selama beberapa menit,
dan kemudian saya akan bekerja di atasnya dengan Anda.
Karena satu-satunya cara Anda benar-benar akan belajar adalah dengan melakukannya sendiri.
Jangan khawatir.
Good luck.
>> OK, kenapa tidak kita perlahan-lahan mulai bekerja melalui ini.
Sehingga semua orang mendapat setelah baris satu, x adalah 1.
Setelah baris kedua, x dan y adalah 1 dan 2, kan?
Keren.
Jadi garis tiga adalah di mana hal-hal jadi menarik tentu saja.
>> Jadi apa yang kita lakukan di sini adalah kita sekarang telah bertukar.
Kami mengatakan bahwa x dan y memiliki titik-titik, atau mereka memiliki alamat x dan y,
kan?
Jadi dalam hal ini, tiga, apa nilai dari?
a telah berlalu dalam, telah diberikan nilai alamat x, kan?
>> AUDIENCE: 1?
>> ALLISON BUCHHOLTZ-AU: Jadi kita menambahkannya ke x?
Apa alamat x?
>> AUDIENCE: 0x123.
>> ALLISON BUCHHOLTZ-AU: Tepat.
Tapi apa sebenarnya menunjuk ke?
Jika kita adalah untuk dereference, nilai apa yang akan ia berikan.
AUDIENCE: 1.
ALLISON BUCHHOLTZ-AU: Ini akan memberi kita 1, karena apa yang
kami katakan adalah pergi ke ini alamat, beritahu kami apa nilai tersebut.
Jadi apa yang akan b?
>> AUDIENCE: 0x127.
ALLISON BUCHHOLTZ-AU: Tepat.
Jadi itu adalah alamat y.
Lalu apa [? dereference? ?]
AUDIENCE: 2.
ALLISON BUCHHOLTZ-AU: OK, jadi sekarang empat.
Kami mengatakan ini equal-- baik sekarang kita sudah dilakukan int temp sama dengan bintang dari.
Jadi apa yang berubah?
Hanya ada satu hal yang berubah di sini.
Apa itu?
>> AUDIENCE: Temp.
ALLISON BUCHHOLTZ-AU: Para suhu.
Jadi kita bisa menulis ulang semua ini.
Sebuah strategi yang baik untuk ini hanya mencari tahu
perubahan apa, karena paling sering hanya ada satu hal yang
akan berubah pada suatu titik tertentu, OK?
Jadi kami telah ditugaskan temp.
>> Sekarang titik berikutnya, lima, kita telah membuat bintang sama dengan membintangi b.
Jadi perubahan apa sekarang?
>> AUDIENCE: Bintangi a.
>> ALLISON BUCHHOLTZ-AU: Bintangi, jadi segala sesuatu yang lain tetap sama.
Dan apa membintangi sebuah sama?
>> AUDIENCE: 2.
ALLISON BUCHHOLTZ-AU: 2.
Indah.
Mengagumkan.
OK, dan kemudian sekarang kami memiliki mulai b sama dengan temp.
Jadi satu-satunya hal yang berubah adalah bintang b.
Segala sesuatu yang lain tetap sama.
Dan apa adalah bintang b sama dengan sekarang?
Dan Anda telah menyelesaikan meja.
Karena sekarang pada akhirnya, jika kita mengatakan x dan y, kita tahu bahwa di point-- ini
kita tahu bahwa ketika kita berubah membintangi untuk 2,
apa yang lakukan itu berkata OK, di alamat 0x123 sini, mengubahnya.
Sekarang ini adalah 2.
Dan kemudian pada saat ini, kita berkata OK, pergi untuk membintangi b.
Jadi pergi ke alamat di 0x127 dan membuatnya menjadi 1.
Jadi sekarang di bagian paling akhir ketika kita benar-benar kembali untuk utama,
kita benar-benar memiliki x adalah sama dengan 2 dan y sama dengan 1.
Semua orang baik dengan itu?
OK, keren.
Nomor 9.
Kalian bekerja pada ini.
Aku akan mendirikan papan sehingga kita dapat menarik melalui itu.
Ini akan menjadi sebuah ledakan.
Tabel besar bisa benar-benar menakutkan, saya tahu.
Tetapi jika Anda hanya mengambil mereka satu baris pada waktu, mereka mendapatkan banyak kurang menakutkan.
Baik.
>> Jadi, Anda tahu bahwa ini akan memiliki melewati utama pertama, kan?
Menginisialisasi x dan y dan kemudian mencoba untuk swap mereka.
Jadi, bahkan swap atas, cara yang nyata itu berjalan adalah bahwa kita akan melalui utama,
dan kemudian memanggil up untuk swap, oke?
Jadi semua orang tahu itu.
>> Jadi mana yang Anda orang ingin memulai dengan?
Apakah ada yang benar-benar yakin sekitar satu dari ini?
Atau bahkan sebagian yakin?
Mengapa kita tidak mulai dengan x?
Apa yang kita pikirkan x adalah?
>> AUDIENCE: 1.
ALLISON BUCHHOLTZ-AU: 1.
Jadi mengapa adalah 2.
Dan itu karena Perbedaan besar di sini
adalah bahwa kita hanya lewat salinan, kan?
Kami tidak lewat referensi.
Jadi, bahkan pada akhir Program ini x dan y
tetap sama, karena mereka hanya salinan dalam fungsi swap.
Mereka tidak benar-benar berubah, kan?
>> Jadi bagaimana dengan a, b, dan suhu?
>> AUDIENCE: adalah b.
>> ALLISON BUCHHOLTZ-AU: adalah b.
Jadi dalam hal ini, seorang adalah x, yang adalah 1, kan?
Jadi di sini, mari kita berjalan melalui itu.
Jadi di awal, dan b adalah 1 dan 2 dan terdefinisi.
Jadi awalnya suhu mendapat ditugaskan untuk, jadi temp 1.
adalah sama dengan b, Jadi kita mendapatkan 2, dan b sama dengan temp.
Sekarang kita dapatkan 1.
>> AUDIENCE: Pada sebelumnya satu itu bertukar ampersand x dan y ampersand.
Apa sebenarnya artinya?
ALLISON BUCHHOLTZ-AU: Jadi itu berarti bahwa Anda lewat referensi.
Jadi itu berarti Anda benar-benar lewat di alamat mana
x dan y disimpan.
AUDIENCE: Tapi kau tidak swapping alamat.
ALLISON BUCHHOLTZ-AU: Kau tidak swapping alamat.
Anda swapping apa dalam diri mereka.
Seperti apa di alamat itu, dan itulah mengapa ia bekerja.
Versus dalam program ini di sini apa yang Anda lakukan adalah Anda membuat salinan.
Jadi Anda memiliki x dan y yang ada sebagai variabel mereka sendiri di sini.
Tapi kemudian ketika Anda melewati mereka ke swap, itu
seolah-olah Anda sedang menciptakan Seluruh set lain ini.
Sehingga Anda tidak pernah benar-benar x menyentuh dan y.
>> AUDIENCE: Jika ampersand x adalah apa yang di alamat x, apa yang akan membintangi x menjadi?
>> ALLISON BUCHHOLTZ-AU: Ampersand x adalah apa yang di alamat x, kemudian star-- baik,
dalam hal ini, x bukan pointer.
AUDIENCE: Oh, OK.
Jadi Anda hanya melakukan hal ini karena itu bukan pointer.
ALLISON BUCHHOLTZ-AU: Benar.
Anda hanya dapat melakukan bintang sesuatu yang pointer.
Mungkin Anda bisa melakukannya untuk hal-hal yang tidak, tapi kompilasi bahwa Anda
melakukan hal-hal gila yang akan terjadi.
Dan aku tidak benar-benar yakin apa yang akan terjadi.
Anda selalu dapat mengambil alamat sesuatu,
tetapi Anda tidak bisa dereference sesuatu yang tidak pointer.
Jika itu masuk akal, itu perbedaan yang baik untuk memiliki.
>> Jadi tidak terlalu buruk, kan?
Tabel mudah-mudahan mendapatkan sedikit kurang menakutkan.
Baik.
Ah, yang menyenangkan.
Jadi sekarang, menulis kode Anda sendiri.
Jadi aku akan membiarkan kalian bekerja hal ini selama sekitar empat menit,
dan kemudian kita bisa bicara tentang cara-cara untuk mendekatinya.
Jangan ragu untuk berbicara dengan orang di sekitar Anda.
Juga ini menarik.
Hal ini seperti semua gadis-gadis Bagian sekarang.
Cukup menarik.
Kecuali untuk Chang.
Tapi Chang tidak benar-benar bagian dari bagian.
Mengagumkan.
Sempurna.
Jadi saya akan memberikan beberapa petunjuk.
Dalam kasus di mana Anda memiliki lebih dari satu karakter, di mana
Anda memiliki sesuatu yang lain seperti 123 atau 1000 sesuatu,
Anda harus mampu loop melalui dan mengkonversi masing-masing.
Jadi ada pasangan cara Anda bisa melakukan itu,
tapi kau pasti akan memiliki untuk loop di suatu tempat di sana untuk lingkaran
melalui mereka, yang jenis seperti giveaway
dengan bahkan jika Anda sebut strlen, yang jenis seperti oh
mungkin Anda ingin menggunakan panjang dari string dalam beberapa cara.
>> Baik.
Jadi apa yang kalian pikirkan mungkin salah satu hal pertama yang ingin kita lakukan?
Ada beberapa kasus di sini kita perlu memperhitungkan, kan?
Entah kita memiliki sesuatu yang null.
Apa yang kita miliki?
Kasus.
Null.
Kami memiliki kasus yang telah sesuatu yang lain dari 09, kan?
Jadi katakanlah itu memiliki surat-surat.
Atau kita memiliki kasus yang valid.
Tiga kasus untuk memikirkan.
Jadi mana yang menurut Anda mungkin yang paling mudah untuk mengurus pertama?
AUDIENCE: Null.
ALLISON BUCHHOLTZ-AU: Kasus ini null.
Jadi apa yang akan kita lakukan di sana?
AUDIENCE: [tak terdengar].
ALLISON BUCHHOLTZ-AU: Ya.
Dan apa yang ingin saya lakukan?
>> AUDIENCE: Kembali 0.
>> ALLISON BUCHHOLTZ-AU: Tepat.
Mengagumkan.
OK.
Jadi sekarang huruf bahwa ia memiliki surat dan kasus bahwa itu valid.
Kami benar-benar bisa mengurus ini dalam satu lingkaran, OK?
Jadi salah satu cara untuk melakukan itu-- apa yang mungkin cara sederhana untuk memeriksa apakah itu valid.
Kami akan harus melalui setiap huruf dan melakukan apa?
>> AUDIENCE: Periksa apakah itu in--
>> ALLISON BUCHHOLTZ-AU: Benar, Anda dapat memeriksa jika itu antara 0 dan 9, kan?
Dan kemudian dalam kasus ini bahwa itu valid, kami
akan berakhir iterasi melalui string kita lagian, kan?
Jadi kenapa tidak kita coba dan menggabungkannya menjadi satu.
Kita akan iterate melalui keluar tali, dan seperti yang kita
melakukan itu, kita akan lebih dulu melakukan pemeriksaan untuk melihat apakah surat itu
atau jika karakter yang valid.
Jika ya, kita akan melakukan operasi yang kita perlu mengubahnya.
Jika tidak itu akan kembali 0, kan?
>> Jadi sebelum kita melakukan itu, kita mungkin ingin beberapa variabel
bahwa kita dapat kembali pada akhir itu akan menjadi nilai kami yang sebenarnya.
Jadi kita akan menginisialisasi beberapa nilai menjadi 0.
Dan itu hanya bagaimana kita mulai.
Jadi aku akan menyingkirkan ini.
Jadi bagaimana kita akan iterate melalui string ini.
AUDIENCE: Untuk lingkaran.
ALLISON BUCHHOLTZ-AU: A untuk loop.
Jadi apa untuk kami?
>> AUDIENCE: i adalah 0.
ALLISON BUCHHOLTZ-AU: Mm-hm.
Dan apa yang kita iterasi sampai?
>> AUDIENCE: panjang str s.
>> ALLISON BUCHHOLTZ-AU: OK, sekarang ingat ada cara yang lebih baik. [Tak terdengar].
>> AUDIENCE: Ya, kita bisa melakukan n sama.
ALLISON BUCHHOLTZ-AU: Tepat.
>> AUDIENCE: i kurang dari n.
ALLISON BUCHHOLTZ-AU: Dan mengapa akan kita ingin melakukan itu?
Apakah Anda ingat alasannya?
AUDIENCE: Kita harus menghitung ulang itu.
ALLISON BUCHHOLTZ-AU: Becasue cara ini Anda hanya harus menghitung strlen sekali.
Jika Anda melakukannya i kurang dari strlen s, itu berarti kalkulasi ulang
panjang setiap kali Anda menjalankan untuk loop,
yang bukan merupakan biaya yang besar energi, tapi itu
praktek yang lebih baik untuk mencoba dan melakukan hal-hal seperti itu sekali.
Kecuali mungkin Anda memiliki string gila yang berubah pada setiap iterasi.
Tetapi jika itu tetap sama, simpan.
Baik.
Dan kemudian saya plus plus.
Mengagumkan.
Kami sedang dalam perjalanan.
AUDIENCE: Benar-benar cepat.
Pertama, jadi katakanlah kita hanya apakah saya kurang dari strlen dari s,
yang mereka dengan kadar kita pada desain sama sekali atau hanya kebenaran?
Mereka tidak.
Kami kadar pada kebenaran untuk kuis sejauh yang saya tahu.
Saya tidak bisa membuat pada penuh jaminan, tetapi untuk sebagian besar,
sebagian besar adalah benar, karena Anda berada di bawah banyak waktu kendala.
Desain biasanya berarti Anda punya waktu untuk berpikir
tentang keanggunan situasi Anda.
>> OK, jadi kita iterasi melalui.
Jadi kita perlu langsung memeriksanya ke melihat apakah karakter ini berlaku
atau jika kita dapat melakukan kami yang normal [? untuk i?] fungsi.
Kita bisa khawatir tentang apa yang ada di kedua.
Jadi kenapa tidak kita take-- jika orang bisa berpikir
tentang cara untuk memeriksa untuk melihat apakah ini berlaku.
Kami tahu itu akan menjadi beberapa jika kondisi, kan?
Dan ingat ini dalam ASCII, jadi bagaimana mungkin
kita lihat jika tidak 0,1, 2, 3, 4, 5, 6, 7, 8, atau 9.
AUDIENCE: Jika alpha.
>> ALLISON BUCHHOLTZ-AU: Jadi, jika alpha akan hanya beritahu kami jika itu surat.
Dan jika mereka memberi kita sebuah simbol, itu masih belum cukup akan memeriksa.
Jadi jika Anda menarik ASCII Anda tabel, kita tahu bahwa 0 sampai 9
berada dalam satu segmen.
Katakan padaku nomor yang mereka sesuai dengan jika mungkin.
AUDIENCE: 40.
>> ALLISON BUCHHOLTZ-AU: Jadi rentang seperti 40--
AUDIENCE: Mungkin.
48-57.
Saya tidak yakin.
>> ALLISON BUCHHOLTZ-AU: 40-57?
>> AUDIENCE: 48, saya pikir.
ALLISON BUCHHOLTZ-AU: 48-57.
Jadi kita tahu bahwa ASCII tersebut symbols-- jika nilai ASCII tidak
antara 48 dan 57, itu tidak valid, bukan?
Jadi bisa kita menggunakannya untuk keuntungan kita mungkin?
Bagaimana kita akan mendapatkan surat ini, pertama off?
Bagaimana kita mengakses ini karakter ini?
>> AUDIENCE: s braket i.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Karena kita bisa memikirkan string sebagai array, ingat.
Jadi apa yang kita ingin mengatakan?
Kami ingin mengatakan apakah ini is-- Aku akan memberikan petunjuk.
Ini adalah kurang dari.
Apa yang harus Anda pikir itu harus kurang dari?
AUDIENCE: 57?
>> ALLISON BUCHHOLTZ-AU: 47, kan?
Tetapi juga mewakili bahwa ketika Anda 0 di tunggal [? kisi?], karena itu
karakter 0.
Anda juga bisa menempatkan 47.
Memiliki tabel ASCII, seperti Anda lihat, hanya sesuatu
Anda harus memiliki pada lembar kuis Anda.
>> Jadi jika hal ini terjadi, jika itu adalah kurang dari 0-- belum tentu dan.
Ini hanya baik akan menjadi kurang dari atau lebih besar dari 9.
Jadi bisa Anda mengisi ini terakhir bagi saya?
Jadi atau s i adalah apa, Rhea?
>> AUDIENCE: Lebih besar dari 9.
>> ALLISON BUCHHOLTZ-AU: Ada.
Apakah itu masuk akal untuk semua orang, bagaimana kita sampai di sana?
Masalah-masalah ini, mereka seperti setelah Anda melihat solusi, ini seperti oh, OK.
Dan ini adalah mengapa praktek akan membantu Anda.
OK, jadi kami kembali 0.
Indah.
Baik.
Jika tidak apa yang kita ingin lakukan?
Ini adalah bagian yang menarik di mana itu sedikit lebih
seperti matematika dibandingkan CS menurut pendapat saya.
Apakah ada yang punya ide bagaimana kita bisa melakukan ini?
Jadi hal yang penting untuk sadari adalah karakter pertama
kami mengambil akan menjadi urutan digit tertinggi, kan?
Jadi jika kita sedang melihat mengkonversi 123, pertama kali kita iterate
adalah akan menjadi 1, tetapi kita perlu bahwa untuk menjadi 100 pada akhir, kan?
Jadi satu hal yang dapat Anda lakukan adalah bahwa dengan setiap digit berikutnya
Anda ambil, Anda kalikan nilai sebesar 10, sehingga pada saat Anda mencapai akhir,
semuanya telah bergeser ke atas, kan?
>> Jadi pertama kali Anda menjalankan itu, Anda memiliki 1 sebagai nilai Anda.
Kedua kalinya Anda menjalankannya, Anda kalikan nilai Anda dengan 10.
Ini akan memperbaruinya sehingga sekarang 10, dan Anda menambahkan nilai berikutnya.
Dan kemudian Anda kalikan dengan 10 dan menambah nilai Anda berikutnya.
Dan inilah mengapa mereka mengatakan ini jauh lebih seperti pengujian
algoritma matematika dibandingkan CS, tapi saya ngelantur.
Saya tidak menulis kuis.
>> Jadi satu hal yang bisa kita lakukan adalah kita mengatakan nilai kali sama dengan 10.
Jadi ini akan bergeser digit Anda sekali setiap kali.
Dan kemudian kita hanya ingin menambahkan.
Kami ingin menambahkan apa kami baru saja, kan?
Jadi bagaimana kita benar-benar mengubah kami Karakter ASCII ke nomor
bahwa itu merupakan?
>> Jadi kita tahu bahwa 0 sama dengan 47, kan?
Jadi jika 0 adalah 47, apa harus kita lakukan untuk itu
untuk benar-benar membuatnya menjadi int 0?
>> AUDIENCE: Ini 48.
ALLISON BUCHHOLTZ-AU: 48?
Maaf.
Kami akan kurangi 48, kan?
Ingat matematika ASCII?
Kita dapat memperlakukan mereka hanya seperti nomor normal.
Jika Anda memperlakukan mereka seperti angka, mereka menjadi nomor efektif.
Jadi jika kita memiliki s i, yang mari kita mengatakan dalam hal ini adalah sama dengan 0.
Jadi s i dalam hal ini akan ASCII-- yang
int ASCII untuk itu akan menjadi 47.
Jadi kita bisa subtract-- atau 48.
Anda bisa melakukan itu, adalah salah satu cara.
Apakah ada yang tahu lebih baik cara kita bisa melakukan 48?
Kami hanya mengatakan 0 is-- masuk ke ASCII yang dapat Anda lakukan kutipan 0.
Jadi melakukannya semacam membuat pengertian bagaimana ini bekerja?
>> AUDIENCE: Pada titik ini, adalah nilai 0 karena bahkan jika Anda kalikan dengan 10,
Anda mulai dengan nol, jadi seharusnya itu diaktifkan?
>> ALLISON BUCHHOLTZ-AU: Jadi dalam hal ini, Anda ingin melipatgandakan sebelum Anda menambahkan,
karena dalam kasus ini, ya, itu akan masih be-- pointer saya hilang.
Nilai dalam hal ini, yang pertama kali kita menjalankannya akan menjadi nol.
Jadi Anda hanya menambahkan pada yang digit pertama.
Yang penting adalah waktu berikutnya Anda iterate, Anda ingin bergeser ke atas
sebelum Anda menambahkan digit berikutnya pada.
Apakah itu menjelaskan untuk Anda?
OK.
>> Kadang-kadang Anda akan mendapatkan aneh lainnya Mathy hal.
Jika Anda memiliki sebagian besar ini, Anda masih akan
untuk get-- Anda akan melakukan cukup baik.
Kredit parsial adalah sangat hal yang besar pada CS50 kuis.
Jadi menulis apa yang Anda ketahui.
Jika Anda punya segalanya kecuali di sini, kau
masih akan melakukan benar-benar baik masalah.
Karena Anda menunjukkan, OK, aku hampir tahu.
Saya tahu bahwa saya harus iterate melalui.
Aku tahu apa yang saya butuhkan untuk memeriksa.
Aku hanya tidak cukup mendapatkan cara untuk mengubahnya.
Kau akan baik-baik saja.
Ya, Anda akan kehilangan beberapa poin,
tapi Anda masih akan mendapatkan baik jumlah poin untuk sesuatu
seperti itu jika Anda hilang dua baris.
Aku akan seperti OK, orang ini tahu apa yang mereka lakukan.
Matematika sulit.
Jadi saya akan mengatakan Anda akan baik-baik saja.
>> OK, jadi kalian siap untuk coba strlen dengan pointer sekarang
bahwa kalian adalah tuan pointer?
Jadi saya akan membiarkan kalian bekerja pada itu untuk sedikit.
Jika ada yang membutuhkan penyegaran.
Jadi, Anda ingin menggunakan pointer aritmatika, dan kemudian jika s adalah null,
implementasi Anda harus kembali 0.
Hal-hal seperti ini yang membuat Anda benar-benar senang untuk hanya memanggil strlen
pada akhir hari.
Saya pikir ini mungkin sedikit lebih mudah daripada yang terakhir, yang
baik.
Aku akan memberikan kalian satu menit, dan kemudian kita akan bekerja melalui itu.
Dan kemudian kita bisa pergi ke switch.
>> OK, guys siap?
Mungkin sedikit.
Jadi saya sudah memberikan Anda dua pilihan, kan?
Entah memeriksa null dan kembali 0 jika itu, atau benar-benar menghitung panjang.
Jadi yang ingin menulis memeriksa null?
Pergi untuk itu.
>> AUDIENCE: Jika kurung s sama sama nol return 0.
ALLISON BUCHHOLTZ-AU: Lovely.
Saya suka ketika setengah masalah Anda hanya memeriksa null.
Aku tahu dengan kalian lalu minggu aku seperti cek for null
harfiah setiap kali.
OK, so--
>> AUDIENCE: Jika return 0 hanya satu baris, apakah kita masih perlu braket keriting?
>> ALLISON BUCHHOLTZ-AU: Anda tidak secara teknis membutuhkan mereka selama Anda konsisten.
Ini praktik yang baik hanya untuk mendapatkan dalam kebiasaan
menggunakan kurung kurawal, tapi secara teknis tidak ada.
Anda tidak membutuhkan mereka untuk satu baris.
Kami hanya cenderung untuk merekomendasikan hal ini bagi orang-orang mulai program.
>> Jadi sekarang apa yang kita mungkin ingin lakukan di sini?
Jadi sekarang kita tahu bahwa string kita berlaku.
Kami ingin menjaga menghitung panjang.
Apa mungkin yang pertama hal yang kita ingin lakukan?
>> AUDIENCE: Buat int itu panjang.
ALLISON BUCHHOLTZ-AU: Tepat.
AUDIENCE: Dan kami ingin set ke?
ALLISON BUCHHOLTZ-AU: 0.
Sempurna.
Baik.
Sekarang apa yang ingin Anda lakukan?
Ini benar-benar sebagian besar itu.
Pergi untuk itu.
>> AUDIENCE: Jadi Anda mungkin melakukan untuk loop.
Dan kemudian karena ketika Anda menelepon s Anda mendapatkan alamat dari hal pertama,
Anda akan mulai dengan i sama dengan 0.
Dan kemudian selama x plus saya tidak kembali memangkas 0.
ALLISON BUCHHOLTZ-AU: The null terminator.
AUDIENCE: The null terminator.
Kemudian Anda menambahkan satu ke panjang.
>> ALLISON BUCHHOLTZ-AU: Ya.
OK, jadi mari kita mengubah itu ke dalam kode yang sangat konkret.
Tapi itu adalah ide yang sempurna.
Itulah yang kami lakukan.
Kita akan menjadi iterasi melalui dengan pointer.
Jadi apa yang ingin kita lakukan adalah bukan sebuah int
di sini, karena kita tidak mengacu pada itu.
Kami mengacu pada dimulainya String, yang mulai menjadi beberapa alamat,
kan?
>> Jadi kita ingin pointer.
Jadi kita akan memiliki beberapa bintang char, karena itu sesuai dengan s kami, kan?
Jadi ini adalah beberapa titik kita menginisialisasi ke awal string, OK?
Jadi mari kita sebut saja i.
Jika itu awal string, apa itu akan ditugaskan untuk?
Tidak 0.
Kami ingin menjadi yang mulai dari string kita.
Apa yang mewakili awal string kita yang diberikan kepada kita?
>> AUDIENCE: Just s.
>> ALLISON BUCHHOLTZ-AU: s.
Jadi ini menciptakan beberapa pointer baru yang merupakan awal dari string kita, OK?
Cara lain untuk memikirkan itu seperti inilah array kita.
Itu string kita, s.
Jadi, mari kita mengatakan ini adalah tempat pertama, dan ini adalah 0x4.
04.
Ini adalah s kami, yang memegang alamat tersebut.
Dan baru saja kita buat satu lagi disebut i yang hanya mengacu pada hal yang sama.
Jadi mereka berdua hanya menunjuk ke awal string kita.
Ini hanyalah representasi grafis.
>> Jadi sekarang apa yang ingin kita lakukan adalah kami ingin iterate
kondisi kita untuk iterasi melalui string kita.
Sekarang belanja.
Harus berbelanja, guys.
Apakah kita ingin terus mengupdate sampai kita mencapai terminator null, kan?
Jadi apa yang mungkin yang terlihat seperti?
Apakah kita ingin i, atau kita ingin Bintang i adalah pertanyaan?
Apakah null terminator alamat atau sesuatu yang terletak di alamat?
Terletak di alamat, kan?
>> Jadi kita perlu dereference apa pun di sini, karena ini hanya beberapa alamat.
Untuk benar-benar mendapatkan ke awal kita perlu dereference ini
sehingga kita benar-benar mendapatkan apa yang ada di tempat pertama ini.
Jadi jika kita melakukan membintangi i, apa kita tidak ingin sama?
AUDIENCE: Kembali slash?
>> ALLISON BUCHHOLTZ-AU: Ada.
Apakah itu masuk akal untuk semua orang?
Kita harus pergi ke dalam string dan pastikan bahwa itu bukan akhir.
Dan kemudian kami hanya dapat memperbarui seperti ini.
Memperbarui normal.
Jadi selama ini met, apa yang perlu kita lakukan?
>> AUDIENCE: Panjang plus plus.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Dan kemudian setelah untuk loop berakhir, apa yang kita ingin kembali?
AUDIENCE: Panjang?
ALLISON BUCHHOLTZ-AU: Panjang.
Di sana Anda pergi.
Jelas daging yang satu ini adalah memahami ini untuk loop.
Apakah semua orang mengerti bagaimana yang bekerja?
Saya senang untuk pergi lagi.
>> AUDIENCE: Kedua bagian, jadi bintang aku di sana,
itu alamat first--
ALLISON BUCHHOLTZ-AU: Ini bukan alamat.
Itu yang ada di.
AUDIENCE: Itu benar-benar di sana.
ALLISON BUCHHOLTZ-AU: Itu apa sebenarnya di sana.
Jadi ini adalah saying-- membiarkan saya membuat ini lebih baik.
Jadi ini adalah 0x04, dan aku hanya akan mengatakan aku akan membuat ini nama saya.
OK.
Ya, saya tahu saya memiliki ulasan kuis malam ini.
Banyak ulasan kuis.
Jadi katakanlah string ini adalah nama saya, Allison.
Sedikit berantakan, tapi itu ada.
Dan s merupakan lokasi dari mana string dimulai,
jadi aku akan membuat ini real-- ini adalah alamat dari,
di mana string dimulai, kan?
>> Jadi apa yang kita lakukan di sini adalah kita ingin menggunakan pointer untuk iterate melalui.
Jadi kita membuat beberapa pointer, i, yang juga adalah sama dengan awal string.
Dan pada setiap titik, kita ingin terus melalui array
di sini sampai kita memukul null terminator.
Jadi kita selalu ingin memeriksa apa yang pada masing-masing alamat ini.
>> Jadi kita dereference i, sehingga pertama kali kita melakukannya kita
mengatakan, OK, apa di alamat 0x04?
Ini adalah a.
OK, kita baik.
Panjang Kenaikan.
Pindah ke yang berikutnya.
Jadi Aku-- ingat pointer peningkatan oleh ukuran apa pun yang mereka menunjuk ke.
Jadi dalam hal ini, karena itu char, itu akan memperbarui per satu.
Jadi sekarang kita akan melihat 5, yang berarti itu akan di sini.
Jadi ia mengatakan OK, pergi ke 0x05.
Apa yang ada di sana?
Ini adalah l.
Dan itu akan terus melakukan itu sampai hits satu ini.
Dan ia mengatakan OK, apa yang ada di alamat apapun ini?
Null terminator, OK.
Keluar.
Dan hanya kembali panjang.
Karena Anda perlu apa sebenarnya di alamat tersebut, bukan alamat sendiri.
>> Ada sangat sedikit tempat di mana Anda benar-benar perlu alamat.
Sebagian besar waktu ketika Anda menggunakan dan itu
ketika Anda pertama kali menugaskan pointer atau ketika
Anda melewati ke fungsi lain.
OK, semua orang baik di sana?
Jenis?
OK.
>> Jadi sepertinya kita sudah punya sekitar 12 menit tersisa,
jadi kita akan pergi ke mungkin masalah terakhir kami,
dan kemudian ada apapun konsep yang telah datang
sementara itu kita bisa cepat pergi lebih dari itu.
>> Jadi beralih gigi adalah yang terakhir masalah di sini, beralih pernyataan.
Jadi tugas Anda adalah untuk menulis ulang ini sehingga berperilaku sama
tetapi tidak menggunakan switch.
Tangan berkapur.
Jadi pertanyaan tentang ini dari kelelawar?
Tidak ada?
OK.
Apakah semua orang memahami bahwa jika kasus tidak memiliki apa-apa setelah itu,
itu berarti bahwa seharusnya ikuti langkah selanjutnya?
Jadi kasus 1 dan 2 dalam hal ini melakukan hal yang sama persis.
Kadang-kadang titik kebingungan.
>> Baik.
Ada yang punya ide?
Ya?
>> AUDIENCE: Jadi Anda bisa hanya dilakukan jika laporan.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Jadi apa yang pertama kita?
>> AUDIENCE: Jika n sama sama dengan 1, dan 2 baris untuk atau n equals
sama dengan 2, lalu cetak kecil.
Dan kemudian dapat Anda lakukan lain jika?
Atau dapat Anda hanya melakukan jika?
>> ALLISON BUCHHOLTZ-AU: Anda dapat melakukan lain jika?
>> AUDIENCE: Apakah itu masalah jika Anda lakukan jika?
ALLISON BUCHHOLTZ-AU: Jadi tidak.
Apakah anyone-- demikian, Anda akan mendapatkan output yang sama
jika Anda menggunakan hanya seandainya dibandingkan jika Anda menggunakan lain seandainya.
Bisakah kalian memikirkan alasan mengapa Anda mungkin ingin menggunakan lain
jika dibandingkan banyak ifs?
Harus dengan efisiensi.
Ya?
>> AUDIENCE: Ini akan memeriksa semua ifs setiap kali.
>> ALLISON BUCHHOLTZ-AU: Jadi bahkan jika itu memukul pertama ini,
itu akan pergi di cek setiap orang lainnya.
Jadi, Anda ingin menggunakan jika lain seandainya dalam kasus di mana hanya satu dari mereka pernah akan berlaku.
Jadi mutual exclusion adalah apa yang kita cenderung mengatakan.
Jika Anda memiliki banyak jika, itu berarti yang mungkin lebih dari satu dari mereka
hal, dan mungkin lebih dari salah satu dari mereka bisa menjadi kenyataan.
Dan Anda ingin keduanya untuk mengeksekusi jika mereka benar.
Jika Anda hanya ingin salah satu dari mereka untuk bekerja dalam kasus-kasus saling eksklusif ini,
Anda ingin menggunakan lain jika, karena itu semua harus dilakukan dengan efisiensi.
Kode Anda hanya lebih baik dirancang jika mematuhi praktek ini.
Jadi dalam hal ini kita akan memiliki lain jika.
Dan ini akan menjadi?
>> AUDIENCE: n sama sama 3.
ALLISON BUCHHOLTZ-AU: Perfect.
Media cetak.
Dan kemudian di terakhir kami kasus, apa yang kita miliki?
Lain atau lain jika?
AUDIENCE: Lain.
>> ALLISON BUCHHOLTZ-AU: Apakah kita want-- Anda ingin lain jika karena kita memiliki kasus-kasus konkret.
Ini bukan semacam menangkap semua.
Jika Anda memiliki default dalam switch-- ingat di switch Anda dapat memiliki kasus,
dan kemudian Anda harus default.
Jika Anda memiliki default, itu semacam dari yang lain pernyataan Anda di sana.
Tetapi jika hanya memiliki kasus, yang berarti Anda perlu
untuk memeriksa untuk melihat apakah itu masing-masing.
Jadi dalam hal ini, itu akan 4 atau 5.
Kami ingin mencetak off.
Ini besar.
Dan di sana Anda pergi.
Dan itu akan menjadi program anda.
>> Jadi dalam hal ini jika kita memiliki sesuatu yang default,
kita akan memiliki lain di apa pun ingin kita lakukan.
Jadi itu adalah perbedaan yang baik tahu, mengerti.
Apakah itu membantu dengan switch untuk Anda?
Sempurna.
Baik.
>> Kami memiliki sekitar delapan menit tersisa.
Apakah kalian telah salah konsep tingkat tinggi lainnya?
Pertanyaan pada umumnya?
Ya?
>> AUDIENCE: Aku punya pertanyaan tentang salah satu dari mereka
itu tentang acak number generator pada kuis nol.
ALLISON BUCHHOLTZ-AU: Oh, yang itu.
Yang satu adalah satu sama lain di mana itu lebih matematika than-- ya.
Solusi untuk itu-- bahkan aku ketika Aku melihatnya, aku seperti apa ini.
>> AUDIENCE: Ini adalah nomor 7.
>> ALLISON BUCHHOLTZ-AU: Aneh menurut saya.
Jadi pada dasarnya Anda ingin menggunakan drand48, yang
akan memberi Anda beberapa angka antara 0 dan 1.
Dan Anda ingin menggunakannya sehingga bahwa Anda entah bagaimana a--
dan itu jauh lebih dari masalah matematika bagi saya daripada saya pikir masalah CS.
>> Cara yang Anda lakukan itu-- dan kadang-kadang hanya akan menjadi seperti itu.
Sekali lagi, ini adalah kasus di mana itu baik
seperti menulis apa yang Anda bisa dan kredit parsial.
Jadi jika kita ingin kembali, kita tahu bahwa kita
akan menggunakan drand48 dalam beberapa cara, kan?
Jadi kenapa tidak kita hanya mencatat yang turun.
Kami menggunakannya dalam beberapa cara.
Cara yang mereka miliki kalian menggunakannya adalah
seperti ini, yang saya akan mencoba dan menjelaskan.
>> Jadi pada dasarnya apa yang terjadi di sini karena itu antara 0 dan 1,
apa yang Anda lakukan adalah Anda mengalikan by-- ini sangat banyak pertanyaan matematika.
Hanya disclaimer penuh, ini adalah benar-benar sebuah pertanyaan matematika.
Apa yang Anda lakukan adalah karena 0 dan 1 dan Anda
ingin hal itu terjadi dalam rentang ini, Anda benar-benar
mengetahui seberapa besar kisaran adalah, dan kemudian
Anda pada dasarnya skala itu, yang adalah apa ini lakukan.
>> b minus memberikan berbagai itu, perbedaan antara angka-angka.
Anda dapat memperbanyak antara 0 dan 1, dan kemudian menambahkan hanya
berarti bahwa Anda skala itu sehingga itu antara a dan b,
yang saya tidak benar-benar ingin masalah ini.
Seperti yang saya katakan, kuis ini dimaksudkan untuk menjaring
orang yang kurang nyaman, suatu tempat di antara,
dan lebih nyaman.
Jadi, jika mereka membuatnya begitu bahwa itu adalah sesuatu
bahwa setiap orang di kurang tempat yang nyaman akan mendapatkan,
kita akan memiliki terlalu banyak orang mencetak Perfect,
dan lebih nyaman akan bosan.
>> Jadi mereka selalu memiliki ini jenis pertanyaan asah otak
yang dimaksudkan untuk menjadi sedikit lebih keras yang mengambil beberapa pemikiran kreatif.
Ketika Anda melihat mereka, jangan terlalu bingung.
Saya pasti akan mengatakan sandal melalui kuis Anda terlebih dahulu.
Mengatasi masalah Anda tahu bahwa Anda bisa,
karena tidak ada gunanya terjebak pada masalah ketika ada tiga
atau empat atau lima pada halaman setelah itu Anda dapat dengan mudah melakukannya.
>> AUDIENCE: Mengapa sebenarnya yang Anda kalikan dengan jangkauan?
>> ALLISON BUCHHOLTZ-AU: Anda kalikan rentang yang Anda tahu-- itu seperti berapa banyak setelah
yang Anda inginkan?
Jadi Anda bisa memikirkan, karena mengembalikan angka antara 0 dan 1,
Anda dapat menganggapnya sebagai persentase.
Jadi pada dasarnya mengatakan jika kita memiliki nomor baris kami di sini, ada di sini,
dan b di sini.
Kau seperti berapa banyak masa lalu itu?
Apakah semua yang kita lakukan.
Jadi Anda hanya meminta persentase kisaran ini, yang
adalah apa itu memberi Anda.
Dan kemudian Anda pada dasarnya hanya skala itu dengan menambahkan.
Ini adalah asah otak matematika.
>> Jika ada saran menit terakhir, saya akan mengatakan sandal melalui pertanyaan,
mencari tahu mana yang Anda tahu bahwa seperti, oh aku ini.
Hampir pasti mereka akan menjadi pertanyaan yang Anda tidak akan tahu
atau bahwa Anda akan memiliki waktu , jadi memukul kekuatan Anda, OK?
Kalian akan besar.
Ada banyak pertanyaan karena suatu alasan,
sehingga Anda memiliki waktu untuk jenis memiliki kesempatan
untuk menunjukkan apa Anda benar-benar baik di.
Jadi tidak apa-apa jika Anda tidak baik dalam segala hal.
Bermain dengan kekuatan Anda.
Ya?
>> AUDIENCE: Jadi ini akan kembali sesuatu yang dipotong?
Ya, itu akan, karena drand kembali antara 0 dan 1.
Ini akan mengembalikan int, karena akan memotong
ketika kita menambahkan atau kalikan dengan itu.
Keren.
Ada pertanyaan menit terakhir?
>> Kalian akan melakukan besar.
Kau Pergi untuk menjadi luar biasa.
Dan bahkan jika tidak, akan ada menjadi permen di sini minggu depan.
Dan aku akan mencintaimu.
Aku akan mencintai kalian terlepas.
Baiklah, semua orang, good luck.
Memiliki banyak waktu.
Kau akan baik-baik saja.
Dan kau tahu apa?
Dalam dua hari itu akan menjadi lebih, sedangkan saya
memiliki dua ujian tengah semester pada hari Kamis, jadi setidaknya kalian akan dilakukan.
Baiklah, aku akan melihat kalian minggu depan.