>> [MUSIC PLAYING]
JASON Hirschhorn: OK, semua orang.
Selamat Datang di Bagian.
Ini CS50, sangat kami Super bagian pertama.
Seperti Anda semua tahu, minggu depan bagian reguler akan mulai,
tapi minggu ini kita semua bersama-sama.
>> Ada sendiri.
Nama saya Jason.
Saya seorang dosen di bidang Ilmu Komputer.
Kami memiliki Andi, siapa kepala TA dari CS50.
Dan Scaz, Profesor Brian Scassellati, dia seorang profesor di bidang Ilmu Komputer.
>> Kami adalah kepala CS50 di Yale.
Anda selalu dapat email kami heads@cs50.yale.edu.
Kami akan berada di kuliah.
Kami akan berada di jam kantor.
Jika ada apa-apa yang pernah kita bisa lakukan untuk Anda, apa pun yang Anda butuhkan,
merasa bebas untuk menjangkau kita.
>> Jadi apa yang akan kita lakukan hari ini?
Atau sebelum itu, apa datang minggu ini?
Jadi jam kantor adalah Senin, Selasa, Rabu, dan Kamis, 8:00-11:00.
Ada jadwal di website.
>> Bagian, seperti saya sebutkan, mulai minggu depan.
Dan Anda akan menemukan apa minggu ini mengatur waktu bagian Anda, hari apa itu,
dan siapa TA Anda.
>> Masalah Set 1 adalah karena pada hari Kamis di siang, Jumat siang dengan hari akhir.
Ya, Anda memiliki sembilan hari terlambat.
Dan ada sembilan masalah set.
Dan hanya dapat menggunakan satu akhir hari per masalah set.
Ya, pada dasarnya, semua masalah set adalah karena Jumat siang.
Itu semuanya.
Semua yang ada di rincian silabus.
>> Setiap Jumat, kami memiliki makan siang.
Kami ingin membuat ini besar Tentu saja merasa sedikit lebih kecil.
Jadi Anda dipersilakan untuk RSVP.
Gratis makan siang dengan rekan-rekan teman sekelas dan staf.
cs50.yale.edu/rsvp.
>> Semua hal ini yang Saya miliki di layar,
dan banyak lagi, Anda dapat menemukan cs50.yale.edu atau cs50.harvard.edu, jika Anda pergi ke Harvard
dan menonton secara online ini.
>> Juga pada situs-situs, ada satu ton sumber daya untuk Anda.
Setiap kuliah tidak hanya memiliki video dari kuliah, tapi juga mencatat.
Seseorang akan menonton kuliah dan mengambil catatan untuk Anda.
Jadi Anda hanya dapat membayar perhatian selama kuliah,
atau Anda dapat menggunakan catatan mereka / kami catatan untuk melengkapi catatan Anda sendiri.
>> Ada slide online.
Sumber code-- segalanya David berjalan di atas dalam kuliah,
atau Scaz berjalan di atas kuliah, yang Kode sumber tersedia secara online
juga, karena seperti saya, disebutkan video.
>> Bagian, juga, semua akan difilmkan.
Semua dari mereka slide akan tersedia.
Semua kode yang akan tersedia untuk Anda.
Ada celana pendek di website mana Anggota staf CS50 menghabiskan lima sampai 10
menit melalui topik untuk Anda.
Beberapa dari mereka Anda sudah sudah ditemui dalam masalah set.
>> Jam kantor, seperti yang saya sebutkan, Senin melalui Kamis, 8:00-11:00.
CS50 Studi adalah sumber daya yang fantastis.
Ada masalah praktek, slide sampel, bug dikenal
bahwa siswa ingin mengalami, untuk dasarnya setiap kita topik
akan mencakup dalam kursus ini.
>> Dan akhirnya, pada slide ini setidaknya, Reference50
yang memberikan informasi pada semua fungsi C
Anda pernah mungkin berharap digunakan dan banyak, banyak lagi.
>> Sekali lagi, yang titik titik titik di bagian bawah layar
adalah untuk menunjukkan bahwa ada bahkan lebih banyak sumber daya pada dua website:
cs50.yale.edu, cs50.harvard.edu.
>> Jadi, apa yang kita lakukan hari ini?
Yah, pertama saya akan memberikan Anda melihat sumber.
Sudah melakukan yang satu itu.
Melihat kami.
>> Sekarang, kita akan pergi tipe data dan operator di C.
Kemudian Andi akan datang ke sini dan pergi perpustakaan di C, printf (),
fungsi yang Anda sudah akrab atau cepat akan menjadi sangat
akrab.
Dan Anda juga akan pergi conditional dan loop.
>> Dan akhirnya, Scaz akan pergi ke ID CS50.
Jika Anda belum terjun di sudah pada Soal Set 1,
serta bagaimana menggunakan terminal dan berguna perintah
dan kemudian memberikan beberapa demo dan praktek coding di ID CS50.
>> Sebelum saya melompat ke ini isi pada sisi ini,
apakah ada yang memiliki pertanyaan sejauh ini?
Besar.
OKE.
Mengubah gigi.
>> [MENGUBAH GEARS]
>> Itu aku menggeser gigi di mobil manual.
Jadi tipe data di C, Anda tidak bisa hanya memiliki variabel x dan memilikinya berada di baris 10,
integer, mungkin nomor 1, pada baris 20, angka desimal 10,5,
dan kemudian beberapa baris kemudian string, aku cinta CS50.
>> Dalam C, variabel hanya dapat satu hal, dan satu hal saja.
Dan sehingga Anda harus memberi mereka jenis.
Dan di forum ini, kita memiliki daftar jenis.
Ada karakter, yang berdiri untuk karakter.
Jadi itu satu huruf A, B, C, D. Itu juga bisa menjadi ruang,
atau yang juga bisa karakter baris baru.
>> Ada bilangan bulat, yang hanya angka, seluruh Numbers atau bilangan bulat
rather-- tapi tidak ada desimal.
>> Untuk desimal, kita memiliki angka floating point.
Angka floating point adalah angka dengan desimal.
>> Lalu ada rindu, yang bilangan bulat dasarnya lagi.
Anda akan melihat bahwa panjang adalah 8 sedangkan int adalah 4.
Aku akan mendapatkan bahwa dalam satu detik.
Itu karena rindu dapat menyimpan bahkan lebih bilangan bulat dari int dapat menyimpan.
Ganda adalah pelampung panjang.
>> Dan akhirnya, kita memiliki string, yang merupakan tipe
bahwa Anda mungkin digunakan sebelumnya.
Jika Anda termasuk hashtag # includeCS50.h dalam file sumber Anda,
maka Anda dapat menggunakan tipe string.
Itu tidak benar-benar dibangun ke C.
>> Ada beberapa jenis lain juga.
Tapi ini adalah yang utama dengan yang akan Anda gunakan dan temui.
C sebagai, sekali lagi saya sebutkan, setiap variable-- itu
hanya dapat satu jenis dan satu jenis saja.
Itu karena C adalah statis bahasa diketik, sebagai lawan
untuk bahasa dinamis mengetik di mana jika Anda membuat sebuah variabel
Anda dapat mengubah apa yang disimpan dalam sebagai Anda pergi dalam program Anda.
Di sini di sebelah kanan sisi, saya memiliki ukuran yang berbeda
dari jenis data dalam byte.
Jadi karakter adalah 1 byte.
Itu 8 bit.
Dan itu berarti karena 8 bit ada delapan 0s dan 1s.
Kami melihat mereka demo di pertama minggu dengan lampu biner.
>> Dengan 8 bit atau 1 byte, kita bisa mewakili angka dari 0 sampai 255.
Benar.
Jika semua 8 bit adalah 0 itu 0.
Jika bit pertama adalah 1, yang jumlahnya satu, dan sebagainya, semua jalan sampai ke 255.
Dan itulah mengapa untuk karakter Anda bisa memiliki dasarnya hingga 255 dari mereka,
tapi itu banyak untuk menutupi semua karakter kita perlu menggunakan.
>> Untuk bilangan bulat, Anda dapat memiliki 0 dan maka Anda memiliki 2 ke 32 minus 1.
Mereka adalah berapa banyak pilihan Anda memiliki untuk bilangan bulat.
>> Untuk waktu yang lama, Anda memiliki 0 2 ke 64 minus 1.
Jadi Anda memiliki banyak, banyak, lebih banyak pilihan untuk rindu.
>> String, itu tanda tanya karena itulah cliffhanger untuk nanti.
Ya.
Saya bisa memberitahu semua orang yang di tepi kursi mereka,
seperti apa itu tanda tanya?
Ini cliffhanger.
Kami akhirnya akan mencakup ukuran string dan berbicara tentang string.
Karena string sebenarnya salah satu roda pelatihan
kita pasang di dalam ini Tentu saja di awal
dan kemudian lepas landas kemudian pada, karena string di C
sebenarnya pointer karakter array.
Tapi sekali lagi, itu adalah cliffhanger untuk nanti.
Sebelum saya melanjutkan pertanyaan, komentar, kekhawatiran tentang geser ini?
>> OKE.
Aku harus menjadi explainer fantastis.
Juga ketika Anda pemrograman, Anda akan menggunakan operator ini.
Tanda-tanda benar-benar sederhana yang dapat melakukan sederhana operasi, dengan yang Anda mungkin
sudah sangat akrab.
>> Misalnya, di sebelah kanan sisi, kita melihat menambahkan.
Untuk menambahkan, Anda hanya melakukan tanda Plus.
Dan sehingga Anda mungkin harus dua variabel x dan y.
Anda dapat melakukan x + y dalam kode Anda.
Mungkin Anda ingin to-- mengatakan Anda memiliki nomor 7 dan 3,
Anda ingin menyimpan yang dalam variabel yang disebut sum.
Anda dapat melakukan int untuk jenis, ruang sum, nama variabel, = 7 + 3;
>> Apa yang akan bahwa toko di sum?
Siapapun?
Jika aku punya di sum = 7 + 3.
Apa yang akan disimpan dalam jumlah?
Anda hanya dapat berteriak keluar.
AUDIENCE: 10.
>> JASON Hirschhorn: 10!
Itu tepat.
Bagaimana di sum = 7-3, Saya hanya menggunakan tanda dash.
Apa yang akan disimpan?
AUDIENCE: 4.
JASON Hirschhorn: 4.
Sum mungkin adalah nama salah untuk variabel itu, tapi 4 akan disimpan.
>> Untuk berkembang biak dalam C, menggunakan sedikit Karakter bintang, Anda tidak menggunakan x.
Untuk membagi, menggunakan Teruskan Slash tidak simbol divisi.
Dan untuk modulo, menggunakan simbol Persen.
>> Jadi katakanlah saya ingin melihat int z = 7% 3, apa yang akan disimpan di z?
Jadi, itulah dasarnya bertanya apa modulo lakukan?
Apakah ada yang tahu apa yang modulo tidak?
Ya.
y 4.
SPEAKER 1: Ini sisanya.
JASON Hirschhorn: Ini adalah sisanya ketika Anda membagi.
Jadi 7 dibagi 3 adalah 2 sisa 1.
Jadi 1 akan disimpan.
>> Anda melakukan pengurangan, tapi itu cara kerjanya.
Itulah yang operator modulo tidak.
Dibutuhkan nomor membaginya dengan nomor lain dan kembali ke Anda
pengingat.
Jadi sekali lagi, 7% 3 memberikan 1, karena 7 dibagi 3 adalah 2 sisa 1,
dan mengembalikan sisanya.
>> Bagaimana mari kita kembali ke atas satu langkah untuk yang tanda divisi.
Jika saya melakukan 7 / dibagi dengan 3 tidak ada yang tahu apa yang akan kembali?
>> SPEAKER 2: 2.
>> JASON Hirschhorn: Mengapa 2 dan tidak 2,333?
>> SPEAKER 2: saya pikir itu memotong off setelah seluruh nomor.
JASON Hirschhorn: Jadi itulah yang benar.
Dalam C, jika Anda melakukan pembagian dua bilangan bulat 7 dibagi dengan 3,
mendapat jawaban yang dalam hal ini 2,3333 selamanya
dan menemukan bahwa titik desimal dan chops semuanya off setelah desimal
dan hanya mengembalikan Anda 2.
>> Jadi jika saya melakukan 8 dibagi dengan 3.
Yang benar-benar, kita tahu yang kembali 2,666,
tapi chops semuanya turun di desimal, memotong itu semua,
dan hanya kembali ke Anda 2.
Jadi 6 dibagi 3, 7 dibagi oleh 3, 8 dibagi dengan 3,
semua akan kembali kepada Anda 2.
>> Apakah ada yang tahu, atau memiliki menebak, bagaimana saya benar-benar bisa
jawaban penuh jika saya ingin desimal itu?
Ya.
Lanjutkan.
SPEAKER 3: Gunakan pelampung?
JASON Hirschhorn: Apa maksudmu?
SPEAKER 3: Karena Anda mengatakan float untuk nomor [tidak terdengar]
JASON Hirschhorn: Benar.
Jadi, itulah yang benar.
7 adalah bilangan bulat.
Tapi jika saya ingin mengubah bahwa menjadi beberapa floating point,
Saya harus menyimpan yang sebagai 7.0 karena komputer
benar-benar stupid-- kita melihat bahwa dengan PB dan J example--
itu hanya akan melakukan persis apa yang Anda katakan itu.
>> Jadi jika Anda menulis 7, itu pikir itu sebuah integer.
Jika Anda menulis 7.0, meskipun kita tahu hal-hal yang setara,
memperlakukan bahwa seperti angka floating point.
Jadi, jika Anda melakukan 7,0 dibagi oleh 3, atau dibagi dengan 3.0,
itu akan mengatakan, OK, sekarang kita sedang berhadapan dengan mengapung.
Aku akan kembali ke Anda 2.333333 selamanya.
Tapi tidak benar-benar selamanya, karena seperti yang kita lihat juga di kuliah,
angka-angka floating point tidak benar-benar tepat.
>> Jadi jika Anda ingin desimal itu, atau bagian dari desimal itu,
maka Anda harus use-- salah satu dari mereka harus menjadi angka floating point
dan komputer harus memahami bahwa ini adalah floating point Anda
berurusan dengan, bukan integer.
Pertanyaan di atas meja yang di sisi kanan, sejauh ini?
Atau sisi kiri, Anda kiri, sisi kiri.
Ya.
SPEAKER 4: Benar.
Untuk hanya seperti biasa bilangan bulat, Anda akan
write-- akan Anda harus menulis mengapung?
>> JASON Hirschhorn: Ya begitu.
Nah, jika Anda ingin membuat variabel yang pelampung,
Anda perlu mengatakan mengapung z sama dengan sesuatu.
>> SPEAKER 4: OK.
>> JASON Hirschhorn: Tapi jika saya ingin lakukan 7 dibagi 3 dan desimal itu,
Saya akan melakukan mengapung z = 7.0 / 3.0 oleh; dan yang akan memberi saya floating point
nomor.
>> SPEAKER 4: OK.
>> JASON Hirschhorn: Jika saya melakukan sesuatu seperti int z = 7 / oleh 3,
yang akan memberikan saya integer, karena mereka adalah semua bilangan bulat.
Apakah itu masuk akal?
>> SPEAKER 4: Ya.
>> JASON Hirschhorn: OK.
Besar.
Pertanyaan lain tentang meja itu?
Benar-benar?
Aku sangat gembira.
OKE.
>> Jadi beberapa hal lain yang akan Anda gunakan, seringkali dalam kondisi atau loop,
adalah jenis operators-- jenis ekspresi Boolean.
Dan seperti yang kita pelajari, == adalah apa yang Anda gunakan untuk memeriksa apakah dua hal yang sama.
>> Jadi di sini aku memeriksa jika x == y, mari kita lagi menganggap bahwa x adalah 7 dan y adalah 3.
Jadi jika saya menulis 7 == 3, apa akan yang kembali ke saya?
Apakah itu benar atau salah?
>> AUDIENCE: Salah.
JASON Hirschhorn: OK.
Saya merasa seperti semua orang bisa mendapatkan satu ini.
Jadi semua orang, apakah itu kembali?
AUDIENCE: Salah.
JASON Hirschhorn: Salah.
Besar.
7 tidak sama dengan 3.
Jadi 7 == 3 akan kembali palsu.
Anda memiliki tanda tidak sama, jadi jika saya diperiksa 7! = 3, apakah itu kembali?
AUDIENCE: Benar.
JASON Hirschhorn: Benar.
Sangat baik.
Seseorang sangat tegas dalam belakang dan menghargai itu.
Maka Anda memiliki kurang dari operator, kurang dari atau sama dengan operator,
lebih besar dari operator, lebih besar dari atau sama dengan operator.
>> Jadi satu lagi cek kewarasan.
Jika saya harus 7 lebih besar dari atau sama dengan 3.
Apa yang akan kembali?
>> AUDIENCE: Benar.
JASON Hirschhorn: Benar.
Iya nih.
Ruang belakang, sisi belakang ruangan, fantastis.
Anda dapat menggabungkan ekspresi jika Anda suka, juga,
dengan logika AND yang && Atau logika OR yang ||
||.
Dan jadi sekarang Anda dapat menguji dua hal together-- Apakah itu lucu?
Mengapa itu lucu?
>> Jadi jika saya ingin, saya bisa katakan adalah 7 lebih dari 3 DAN 2 kurang dari 4?
Nah, jika 7 lebih besar dari 3, itu benar.
2 kurang dari 4, itu benar.
Jadi semua ini akan kembali benar.
>> Jika saya diuji 7 lebih besar dari 3 dan-- Aku hanya memilih nomor acak di sini-
4 kurang dari 2, yah, itu palsu.
Jadi benar dan make false false.
Dan Anda dapat pergi dan Anda menggabungkan sebagai banyak kondisi bersama-sama seperti yang Anda inginkan.
>> Ada yang punya pertanyaan, komentar, keprihatinan sejauh ini?
Dan saya melihat beberapa dari Anda mengambil gambar dari saya di layar, yang saya hargai.
Mudah-mudahan, itu tidak snapchat.
Mudah-mudahan, itu untuk catatan Anda.
Tapi semua ini akan akan tersedia secara online.
Jadi Anda tidak perlu mengambil gambar dari ini.
Seperti yang saya sebutkan, semuanya akan tersedia secara online untuk Anda.
OKE.
Aku akan mendapatkan luar panggung, begitu juga siapa pun
ingin mengatakan apa-apa sebelum itu terjadi?
Pertanyaan?
>> [Interposing SUARA]
>> JASON Hirschhorn: Oh, berhenti.
Kalian terlalu bagus.
OKE.
Aku akan menandai keluar.
Ayo.
>> ANDI PENG: Kami akan melakukan perubahan mic canggung sekarang.
>> JASON Hirschhorn: Aku akan mengambil ini off.
ANDI PENG: Menghargai dukungan, guys.
Bisakah kamu mendengarku?
Apakah itu baik?
Sempurna.
Indah.
Mari saya hanya menyelipkan bahwa dalam.
OKE.
Jadi, saya akan lakukan seperti raksasa Informasi membuang pada kalian sekarang.
Dan tidak ada kekhawatiran apapun jika Anda tidak mengikuti setiap baris sedikit dari apa
Aku akan menunjukkan kepada Anda.
Seperti kata Jason, semuanya benar-benar online.
Hanya kita akan mencoba untuk memperkenalkan semua orang untuk konsep tertutup
di beberapa slide ini.
Jadi ikuti saja bersama.
Jangan khawatir jika Anda tidak mengerti segala sesuatu; Namun, jika pada setiap titik
Anda merasa kehilangan, meningkatkan Anda tangan, kita akan berhenti, tidak ada kekhawatiran.
Keren.
>> Jadi saya pikir sesuatu yang memiliki David sudah semacam disebutkan dalam kuliah
dan Jason telah jenis disinggung untuk hari ini adalah apa perpustakaan adalah.
Jadi dalam pemrograman, kita memiliki hal-hal ini disebut perpustakaan.
Dimana, pada dasarnya, semua mereka hanya satu set
fungsi, yaitu dasarnya hanya kode itu
sudah ditulis oleh orang lain yang kita semua bisa
menggunakan dalam program kami.
>> Jadi bagaimana normal kerja perpustakaan, kan?
Anda memasuki pintu perpustakaan.
Anda memiliki semua ini buku Anda dapat menarik keluar
dan Anda dapat mengakses informasi dalam buku-buku.
Hal yang sama dalam pemrograman.
>> Anda memiliki perpustakaan yang memiliki sudah ditulis oleh orang lain.
Dan cara yang Anda bisa, sebagai programmer atau mahasiswa,
dapat memperoleh akses ke perpustakaan yang adalah melalui hashtag # include.
>> Misalnya, di C kami memiliki tiga C-- paling
umum digunakan tiga standar C libraries-- perpustakaan input / output,
perpustakaan tali, dan perpustakaan matematika.
>> Jadi dalam pertama Anda beberapa masalah set,
mereka akan menjadi tiga bahwa Anda terutama menggunakan.
Sehingga David sudah dijelaskan dalam kuliah,
I standar / O perpustakaan, atau standar input / output perpustakaan
tidak tepat.
Hal ini memungkinkan Anda, dalam kode Anda, untuk memasukkan apa pun dari pengguna dan output yang
ke layar, pada dasarnya mencetaknya ke layar.
>> Dan setiap kali Anda menggunakan fungsi apapun, misalnya fungsi printf () yang
kita akan pergi ke slide berikutnya, pastikan untuk menyertakan standar I / O
perpustakaan atau Anda tidak akan dapat menggunakan printf () fungsi.
Karena Anda, sebagai programmer tidak pernah benar-benar menulis fungsi itu,
Anda hanya menggunakan orang kode lain dalam kode Anda sendiri.
>> Apakah itu masuk akal semua orang?
Keren.
>> Dan kemudian kita pada dasarnya mendapatkan ke perpustakaan string.h dan math.h yang
perpustakaan, H hanya menandakan perpustakaan, perpustakaan lain yang Anda akan akhirnya
akan menggunakan dalam kode Anda.
>> Namun, untuk tujuan perpustakaan ini, kami juga
have-- dari class-- ini kami juga memiliki apa yang disebut perpustakaan CS50,
cs50.h, di mana kita, untuk teliti telah menciptakan
banyak fungsi penting dan berguna.
Sehingga programmer Anda sebagai dapat kuda-kudaan off
apa yang kita sudah ditulis sehingga Fungsi ini tersedia untuk Anda
untuk Anda gunakan.
>> Saya akan meliputi beberapa fungsi umum digunakan,
tapi tahu bahwa ini adalah semua secara online googleable.
Jangan ragu, menarik perpustakaan CS50 dan maka Anda memiliki semua fungsi ada.
Ya.
>> SPEAKER 5: Jadi, jika Anda tidak menggunakan perangkat lunak yang
disediakan kepada kami oleh kelas, apakah itu
berarti kita harus men-download dan mencari header ini mengajukan diri dan memberitahu
komputer di mana itu?
>> ANDI PENG: pertanyaan besar.
Tepat.
Jadi seperti jika Anda tidak secara fisik hadir di perpustakaan,
tidak ada cara bagi Anda untuk benar-benar pergi dan mengaksesnya.
Jadi hal yang sama dengan pemrograman di C, Anda
harus memastikan bahwa Anda menggunakan kami alat karena perpustakaan sudah
dimasukkan ke dalamnya.
Dan kemudian ketika Anda hashtag # include, perpustakaan ada.
Ya.
Pertanyaan bagus.
Semua orang baik?
Keren.
Baiklah.
Jadi kita akan memukul, dasarnya, apa yang
fungsi pertama yang Kita sebagai programmer
akan menggunakan dalam kode kami.
Ini disebut printf () fungsi.
Jadi, printf () fungsi, seperti yang telah saya sudah mengatakan dalam slide terakhir,
termasuk dalam standar I / O, standar input / output, perpustakaan.
>> Jadi, pastikan apa pun yang Anda using-- oh, biarkan aku ambil laser pointer--
setiap kali Anda menggunakan printf () fungsi,
Anda harus menyertakan standar I / O perpustakaan atau yang lain, ketika Anda mengkompilasi,
Anda akan mendapatkan error karena komputer akan menjadi seperti,
oh saya tidak tahu di mana printf () adalah, Anda tidak memberitahu saya di mana printf ()
aku s.
Nah printf () termasuk dalam standar I / O, jadi ketika Anda menggunakan printf (),
pastikan untuk memiliki baris di atas kode Anda.
>> Jadi misalnya, printf () di sini adalah fungsi.
Semua hal ini adalah sesuatu cetak dalam kurung untuk pengguna.
Ada orang ingin mengambil bacokan apa baris kode yang tepat
di sini akan mencetak?
Oleh karena itu, jawabannya ada di layar.
Siapapun?
>> VERDI: Bagian bawah.
>> ANDI PENG: Verdi, kenapa tidak Anda pergi depan dan mengatakan seluruh pernyataan?
>> VERDI: Halo, nama saya Andi, dan saya berusia 20 tahun.
ANDI PENG: Ah, indah.
Jadi di baris ini kita akan mencetak, Hello, nama saya Andi,
dan saya berusia 20 tahun, yang sebenarnya pernyataan yang benar.
>> Sintaks.
Jadi beberapa masalah sintaksis yang kalian ingin memastikan Anda tahu.
Tanda kutip.
Tanda kutip ganda memberitahu komputer yang segala sesuatu di dalam
akan dicetak.
>> Segala sesuatu di dalam kaleng hanya menjadi persis bagaimana
Anda ketik, kecuali untuk umum di akhir,
kita akan ingin memasukkan sebuah hash-- oh sorry-- n dasbor.
Jadi dash n.
>> Apakah ada yang ingin mengambil menebak apa yang tidak untuk kode kita?
Ya.
SPEAKER 6: Menempatkan pada baris baru.
ANDI PENG: Tepat.
Jadi semua yang dilakukan adalah memungkinkan apapun yang terjadi
setelah ini, setelah pernyataan ini, yang akan dicetak ke baris baru.
Sehingga ketika Anda sedang menulis Anda kode Anda tidak memiliki hal-hal secara acak
tertempel pada akhir bahwa Anda tidak ingin.
Semua yang mendapat rapi dicetak satu baris
dan kemudian kita mulai pada baris berikut.
>> Apakah ada yang ingat apa yang koma halnya ketika kita coding?
Ya.
>> SPEAKER 7: Pernyataan.
>> ANDI PENG: Maaf?
>> SPEAKER 7: Apakah itu mengakhiri pernyataan?
>> ANDI PENG: Ya.
Jadi di C, atau pemrograman bahasa, titik koma
menunjukkan akhir baris pemrograman.
Jadi misalnya, dalam bahasa Inggris kita menggunakan periode mengatakan, oh ini adalah akhir kalimat.
Dalam pemrograman, hal yang sama, kita memiliki titik koma untuk menunjukkan akhir baris.
Sering kali, ketika Anda mulai memprogram,
Anda akan menyadari Anda lupa untuk menambahkan titik koma
dan kemudian Anda mencoba untuk menjalankan Anda kode dan itu tidak bekerja.
Dan Anda seperti, Ah, saya tidak tahu mengapa, harus bekerja.
>> Kemungkinan Anda mungkin lupa titik koma atau bracket atau sesuatu
di suatu tempat.
Jadi, yang penting untuk diingat.
Keren.
Baiklah, menunjukkan tangan, bagaimana banyak orang di sini yang pernah
diambil AP Ilmu Komputer atau diprogram di Jawa sebelumnya, pernah?
OKE.
Indah.
Itu tidak akan berlaku kemudian, tetapi di Jawa, Anda
memiliki sesuatu yang disebut System.out.println yang tidak ada di C.
>> Jadi dalam C, setiap kali Anda ingin menambahkan variabel
menjadi apapun yang Anda inginkan untuk mencetak, ada
sintaks tertentu kita akan menggunakan.
Itu disebut placeholding-- dasarnya
kita menambahkan placeholder di tempat dari integer atau variabel
yang ingin kita cetak.
>> Sehingga kalian bisa melihat kami menyertakan header perpustakaan baru mengajukan sini.
The CS50 perpustakaan.
Dan terkandung dalam bahwa perpustakaan CS50 adalah fungsi umum kita akan menggunakan
dalam kursus kami disebut getInt ().
>> Apakah ada yang ingin mengambil bacokan di apa getInt () mungkin dapat melakukan.
>> AUDIENCE: [tidak terdengar]
>> ANDI PENG: Maaf.
Tidak bisa mendengar Anda.
Maddie, siapa pun.
Maddie: Oh, ia meminta Anda untuk integer.
ANDI PENG: Tepat.
Jadi fungsi ini, lain fungsi yang sudah
ditulis oleh orang lain bahwa kita dapat memanggil sekarang.
Semua itu adalah meminta Anda, pengguna, untuk memasukkan apa pun yang Anda inginkan sebagai kode
berjalan dan menyimpan whatever-- dalam hal ini kami getInt () - ing,
sehingga berarti kita mendapatkan integer.
>> Dan kita akan menyimpan bahwa dalam bilangan bulat lain
bahwa kita baru saja membuat disebut usia.
Yang masuk akal untuk semua orang?
Keren.
>> Jadi sekarang kita sudah disimpan bilangan bulat ini, bahwa kami telah diminta dari pengguna,
dalam variabel ini, kami telah menciptakan tipe int disebut usia,
kita bisa pergi ke depan dan tempat bahwa dalam printf kami () fungsi.
Jadi sintaks biasanya untuk printf () adalah bahwa di mana pun di fisik Anda yang sebenarnya
baris Anda ingin memasukkan integer yang, Anda melakukan simbol bahwa di sana,
simbol persen, dengan jenis variabel yang Anda inginkan.
>> Jadi dalam hal ini usia kasus adalah bilangan bulat.
Jadi Anda akan mencakup % i karena integer.
Dan kemudian setelah Anda Pernyataan, Anda akan
untuk melakukan koma dan nama variabel.
>> Jadi di sini, kita akan mencetak keluar, Hello, nama saya Andi,
dan saya berusia tahun kosong.
Hashta-- atau, sorry--, usia dengan apa pun yang saya masukan.
Jadi jika saya masukan 20 untuk getInt saya () di sini,
itu akan mencetak hal yang sama persis.
Tapi, jika saya ingin masukan sesuatu lain, seperti mungkin 40 atau 45,
maka Anda akan melihat bahwa tercermin sesuai dalam kode.
>> Jadi ini adalah contoh sesuatu yang
mencetak dan terlihat Anda seolah-olah itu hal yang sama,
namun di balik kap komputer sebenarnya ada
hal yang sangat berbeda terjadi.
Keren.
Baiklah.
Jadi bagaimana jika kita ingin beberapa variabel?
Cukup mudah.
Hal yang sama.
Kami juga memiliki fungsi baru di sini disebut GetString (),
juga termasuk dalam perpustakaan CS50, bahwa semua hal ini adalah meminta pengguna
untuk string, yang hanya satu set karakter,
jadi seperti kalimat atau seperti nama.
>> Jadi dalam hal ini, kita akan memiliki dua penampung% s string dan i%
untuk integer.
Dan kita akan mengikuti bahwa dengan dua variabel
kami ingin disertakan, dalam urutan bahwa mereka muncul dalam kalimat.
Jadi misalnya, nama saya kosong, saya ingin nama di sana,
jadi saya akan memiliki nama pertama.
Dan kemudian setelah itu, saya ingin usia, ingin memiliki usia kedua.
Dan jadi jika saya ingin masukan, Hello, Nama saya Andi, dan saya berusia 20 tahun.
Jika saya diinput Andi dan 20, yang hal yang sama persis akan mencetak;
Namun, sekarang kita punya dua disimpan variabel nama serta int.
Ya.
>> SPEAKER 8: Apakah akan dapat dijalankan jika Anda beralih
nama dan usia pada akhir itu?
>> ANDI PENG: Ya.
Itu pertanyaan yang sangat bagus.
Jadi cerita panjang pendek, tidak ada.
Karena nama dan age-- apa jenis variabel adalah nama?
>> SPEAKER 8: String.
>> ANDI PENG: Dan apa jenis variabel usia?
>> SPEAKER 8: Integer.
ANDI PENG: Jadi di sini kita memiliki placeholder string dan integer, kan?
Jadi jika Anda adalah untuk beralih ini, komputer tidak akan tahu.
Ini akan memeriksa string, dan jika Anda mencoba untuk memberikan sebuah int,
itu akan menjadi seperti menunggu aku bingung, Anda
bilang aku harus allotting memori untuk int.
Dan di sini, ketika mengharapkan integer
dan Anda memberikan nama dan string sebaliknya,
itu juga akan menjadi sangat membingungkan, itu tidak akan berjalan persis seperti yang Anda membutuhkannya.
Jadi di sini, penamaan dan sintaks adalah sangat penting untuk menjalankan kode.
Semua orang baik?
Ya.
Maddie.
>> Maddie: Di sini, saya tahu kita telah melihat contoh-contoh di kelas, di mana mereka meminta
apa usia Anda, apa nama Anda.
Di sini, apakah itu hal doesn't-- jika kita menjalankan kode ini,
itu tidak akan meminta untuk itu?
Tapi Anda akan hanya masukan dua angka dan kemudian akan berjalan seperti itu?
>> ANDI PENG: Ya, persis.
Jadi jika Anda ingin untuk itu untuk display, masukkan usia Anda,
Anda hanya dapat menambahkan printf () fungsi yang mengatakan, masukkan usia Anda,
Diatasnya.
Itu pertanyaan yang bagus.
Ya.
>> SPEAKER 9: Jadi, sudah akan termasuk dalam getInt () [tidak terdengar].
ANDI PENG: Tidak, itu benar-benar tidak.
Jadi semua ini tidak hanya meminta layar kosong
untuk pengguna untuk memasukkan sesuatu.
Jika Anda menginginkannya, jika Anda ingin mencetak sesuatu yang memberitahu pengguna seperti,
tolong beri saya usia Anda, maka Anda harus printf () yang sendiri.
Karena setiap orang menggunakan ini Fungsi untuk hal-hal yang berbeda,
Anda bisa menyimpan usia, Anda dapat menyimpan alamat,
Anda dapat menyimpan nomor telepon.
Dan itu benar-benar sampai menggunakan individu orang-orang Anda '
untuk apa yang Anda ingin katakan.
Ya.
>> SPEAKER 10: Jadi, hanya untuk memperjelas, di mana apakah Anda masukan nama dan usia
sehingga muncul di tempat% s?
>> ANDI PENG: Seperti pengguna?
>> SPEAKER 10: Ya, seperti bagaimana cara membuat itu-- mana saya menempatkan Andi,
dan di mana saya menempatkan 20?
>> ANDI PENG: Ya.
Jadi jika Anda adalah untuk benar-benar menjalankan kode ini,
Aku tidak benar-benar menjalankan kode, ini hanya di sini sekarang.
Jika saya harus menjalankan kode, saya akan mengkompilasi kode, membuat file,
menjalankan kode, dan kemudian ada akan hanya menjadi dua ruang bagi saya untuk masukan itu.
Ya.
Kalian akan melihat ketika Anda bermain main dengan kode sendiri.
>> Baiklah kita akan pindah ke bagian berikutnya dari apa
kita akan meliputi hari ini.
Kita akan pergi atas apa pernyataan bersyarat adalah.
Jadi jika kalian ingat dan ingat dari kuliah,
pernyataan bersyarat, semua mereka adalah satu set
instruksi ke komputer di yang jika kondisi tertentu adalah benar,
Anda mengeksekusi kode dalam kondisi itu.
>> Jadi di Scratch-- dasarnya tema besar dari hari ini
adalah bahwa kalian sudah semua melihat logika di balik semua
bahwa kita menutupi.
Dan semua yang kita lakukan adalah menerjemahkan sesuatu
yang sangat intuitif dalam Scratch, dan keras coding
dalam sintaks kita akan menggunakan untuk kelas yang C.
Jadi secara logis, semua blok ini adalah bahwa potongan kode di sana.
Ya.
OKE.
>> Kami juga masuk ke sebuah if ... else Pernyataan yang hanya lapisan tambahan
kompleksitas jika pernyataan di mana komputer mengambil melihat ini
dan dilihatnya, jika kondisi ini benar, lakukan apapun itu dalam dua kurung ini,
else-- sehingga jenis seperti default jika tidak memenuhi condition-- yang melakukan hal ini.
Ini seperti persimpangan jalan.
Jika hujan di luar, saya menempatkan pada jaket hujan, yang lain apa pun
lain aku tidak mengenakan jaket hujan.
>> Apakah logika yang masuk akal untuk semua orang?
Keren.
Baiklah.
Jadi seperti contoh keras ini bahwa kita akan melihat di C
adalah jika saya ingin membuat variabel disebut jam pekerjaan rumah.
Dan jika jam pekerjaan rumah kurang dari lima, saya katakan Hidup ini besar.
Ini luar biasa.
Namun, mengatakan perjuangan tersebut real-- yang adalah apa yang kita semua pada hari Senin ini
sore sampai Science Hill adalah mungkin melakukan hal yang benar sekarang--
AUDIENCE: [TERTAWA]
ANDI PENG: Mereka cara kita akan, terima kasih untuk itu.
Cara kita akan hardcode ini di C adalah if-- mari kita asumsikan
kita sudah memiliki variabel jenis int disebut jam pekerjaan rumah di sini.
Jika jam pekerjaan rumah kurang dari lima printf (), Hidup adalah besar.
Ingat terus / n karena Anda ingin baris baru setelah.
Cetak lain, perjuangan adalah nyata.
>> Apakah semua orang mengerti bagaimana Saya beralih dari blok ini
dalam blok kode ini?
Keren.
Baiklah.
>> Jadi sekarang kita akan melihat pada beberapa pernyataan Jika sama sekali.
Jadi mari kita asumsikan Tujuan dari program ini
adalah kami meminta pengguna untuk kelas.
Kami prompt menggunakan getInt () untuk kelas, dan mereka masukan nilai,
dan Anda ingin menampilkan apa jenis kelas yang mereka punya.
>> Jadi jika saya harus merancang program, saya berarti biasanya dalam semua mata kita,
90-100 adalah A, 80-90 adalah B, dan sebagainya dan sebagainya.
Apa yang salah dengan ini bagian dari kode yang itu tidak
melakukan apa yang saya ingin lakukan.
Ya.
>> SPEAKER 11: Mereka memiliki batas yang lebih rendah, tetapi mereka tidak memiliki batas atas.
>> ANDI PENG: Tepat.
Apakah semua orang mendengar apa yang dia katakan?
Ada akan menjadi atas batas, tetapi tidak ada batas bawah.
Maaf, sebaliknya, batas bawah, tidak ada batas atas.
Jadi Anda ingin mengambil bacokan di mengatakan
apa yang akan dicetak pada ini layar jika saya menjalankan kode ini.
SPEAKER 11: Kesalahan?
ANDI PENG: Sebuah kesalahan?
Besar menebak, tidak benar.
Apakah ada yang punya menusuk lain?
Ya, Aaron.
>> AARON: Jika Anda menempatkan di sesuatu yang lebih besar dari 90,
itu akan menampilkan semua nilai yang Anda punya.
Ini akan menunjukkan Anda mendapat nilai A, Anda punya B, Anda punya C.
>> ANDI PENG: Ya.
Itu tepat.
Jadi, yang akan menjadi indah.
Namun, mereka saling eksklusif, saya pikir.
Jika saya menjalankan potongan kode ini.
Dan kemudian katakan saja, aku diinput kelas dari 95.
Jadi 95 sekarang disimpan di yang int disebut kelas.
>> Dan C adalah bahasa yang berjalan sampai atas ke bawah,
sehingga akan selalu berlari ke bawah.
Jadi itu akan datang ke sini, dibaca jika kelas lebih besar dari atau sama dengan 90,
printf () Anda punya A. Besar, saya memiliki 95, yang lebih besar dari 90.
Ini akan mencetak, Saya mendapat A. Ini akan
untuk melihat ini jika, itu akan mengatakan, baik 95 juga lebih besar dari 80,
itu akan mencetak Anda juga mendapat Got a tanda seru B, dan seterusnya dan
sebagainya.
>> Jadi seperti yang kita semua bisa melihat, ini adalah bug umum
yang mungkin terjadi ketika kita berada menulis kode untuk melihat keluar untuk.
Siapapun, apapun pertanyaan pada mengapa yang terjadi?
Besar.
OKE.
>> Jadi bagaimana kita memperbaiki hal ini, jelas logis pertanyaan berikutnya.
Nah, kita memiliki indah ini hal disebut jika lain jika lain
jika pernyataan lain.
Sehingga Anda dapat melihat, jika Anda ingin untuk mengubah masalah itu,
Anda ingin membuat masing-masing kondisi saling eksklusif,
Anda akan menambahkan lagi ... jika pernyataan.
>> Dan ini dari course-- menganggap mereka sebagai tangga, atau seperti anak tangga pada ladder--
Anda dapat menambahkan sebanyak ini seperti yang Anda ingin untuk sebanyak kondisi yang Anda inginkan.
Jadi di sini, jika saya diinput kelas menjadi 95.
Jika kelas lebih besar dari 95, printf (), saya mendapat A. Besar.
Ini akan melihat lagi ... jika dan itu akan tahu, Oh tidak,
Saya sudah dieksekusi pertama lagi.
Saya tahu-- atau if-- pertama yang saya tahu bahwa Saya tidak perlu melihat semua ini
karena salah satu dari mereka telah menjadi kenyataan.
Jadi itu akan lari dari atas ke bawah.
Begitu yang pertama adalah benar, maka itu akan melewatkan semua sisanya
dari yang lain ... seandainya.
Apakah itu masuk akal?
Jadi, dengan cara ini Anda memiliki berbagai tingkat pemeriksaan
dan segera setelah salah satu dari mereka adalah palsu, Sisanya juga, mereka bahkan tidak akan memeriksa.
Keren.
Baiklah.
>> Jadi ini adalah contoh dari yang berbeda semacam pernyataan kondisional
kita lihat lebih sering, tapi kita akan melihat mereka dan menggunakannya.
Dan mereka sering lebih efisien untuk kasus-kasus tertentu.
Jadi kita memiliki apa yang disebut pernyataan switch.
Jadi sebelum kita membahas apa yang lain pernyataan, if ... else pernyataan.
Di sini, kita memiliki apa yang disebut laporan beralih.
>> Jadi ketika kita menggunakan switch pernyataan kuncinya?
Jadi dalam pernyataan switch, Anda biasanya, biasanya, sebenarnya Anda
hanya dapat memasukkan bilangan bulat untuk Anda variabel yang Anda sedang memeriksa.
Jadi jika saya ingin memeriksa untuk melihat jika number-- tertentu misalnya
kelas, jika aku punya 90.
Saya ingin melihat apakah itu A, B, atau C. Saya bisa punya kasus di sini.
Namun, kasus ini memiliki konstan lain.
>> Jadi dalam pengertian ini, beralih pernyataan hanya dapat
memeriksa kesamaan dua angka.
Itu tidak memeriksa apa-apa lagi.
Jadi itu sesuatu yang sangat hati-hati ketika Anda menggunakan ini.
Jadi di sini, jika saya ingin memeriksa untuk melihat jika kelas saya 90 adalah sama dengan 90 atau 80
atau 70 atau 60, dan kemudian cetak kelas yang sesuai,
Aku bisa menulis bahwa dalam sebuah pernyataan switch.
>> Jadi itu akan datang ke sini, cek bilangan bulat ini sama dengan konstan ini?
Jika tidak, itu akan melompat.
Apakah itu sama dengan konstan dua, dan seterusnya dan sebagainya,
sampai anda menekan default, jika tidak satupun dari mereka adalah sama.
Begitu salah satu dari mereka diatur untuk menjadi sama,
itu akan melakukan hal ini baris kode dan istirahat.
Yang berarti itu akan memukul yang menjalankan, istirahat, dan hanya benar-benar melewatkan
ke bagian bawah kode.
Jadi dalam arti bahwa jenis fungsi seperti jika lain jika lain jika pernyataan.
>> Jadi, inilah beton Misalnya untuk kalian.
Jadi mari kita asumsikan bahwa saya ingin membuat variabel disebut tahun didirikan.
Dan saya ingin meminta pengguna untuk memasukkan tahun yang sekolah mereka didirikan.
Jadi saya bisa membuat pernyataan switch di sini.
Dan katakan saja, saya masukan 1636.
>> Kode ini di sini akan melihat saklar tahun didirikan yang sama 1636.
Ini akan melihat kasus 1636, oh mereka adalah sama,
printf () tidak Jika Anda menjadi pada saat itu sekolah ke utara?
Karena kita menganggap mereka tidak pergi di sini jika mereka pergi ke Harvard,
istirahat dan melompat ke akhir.
>> Jika saya masukan 1701, yang Saya berasumsi kita semua akan masukan,
itu akan melewatkan hal ini, datang turun ke kasus dua yang 1701,
dan mencetak Selamat Datang di Yale!
Istirahat, melompat ke akhir.
Lain Anda mungkin mengambil kursus ini online di mana case-- mengagumkan diterima
untuk Yale-- itu akan pergi ke cetak default, Hello Internet!
Dan istirahat.
Ya.
>> SPEAKER 12: Dapatkah Anda menggunakan lain bukannya default ada?
>> ANDI PENG: Tidak, karena cara seluruh fungsi ini
beralih dibangun, sintaks Anda perlu menggunakan kasus kasus default.
Ini seperti jika lain jika, ini satu itu kasus kasus default. Ya.
SPEAKER 13: Anda mungkin sudah mengatakan ini, tetapi dapat Anda memiliki lebih dari dua kasus?
ANDI PENG: Ya, Anda bisa memiliki banyak kasus yang Anda inginkan.
Anggap saja sebagai hanya ingin jauh menambahkan pada.
>> SPEAKER 14: Jika Anda beralih 1701 dengan 1636,
itu tidak benar-benar membuat perbedaan kan?
Ini hanya akan memeriksa untuk itu.
>> ANDI PENG: Itu Pertanyaan benar-benar baik.
Dan kami akan menyentuh ini nanti, tetapi hanya
tahu itu saklar pernyataan infinitely-- itu
lebih efisien daripada itu dan jika lain jika karena beroperasi
menggunakan berbagai jenis fungsi yang memungkinkan Anda, untuk dasarnya, hanya
melompat langsung ke Jika Anda perlu berada di.
Ya.
SPEAKER 14: Cool.
Terima kasih.
ANDI PENG: Ya
>> SPEAKER 14: Dan Anda tidak bisa melakukan kasus seperti dan lebih besar dari.
ANDI PENG: No.
Jadi, itulah yang membatasi tentang pernyataan switch adalah bahwa Anda memiliki
memiliki konstanta saja, hanya bilangan bulat.
Ya.
OKE.
>> Jadi ini adalah sesuatu yang Anda orang akan menemukan lebih jarang dari,
tapi saya hanya ingin memperkenalkannya dalam kasus.
Kita miliki di sini apa disebut operator ternary.
Di mana dasarnya, itu hanya seperti sebuah jika pernyataan disusun menjadi satu baris.
Di sini, saya akan pergi ke garis depan, halaman berikutnya, karena lebih mudah untuk melihat.
>> Jadi kita semua pernah melihat ini benar?
Ini cukup mudah diikuti.
Jika saya ingin membuat sebuah variabel yang disebut string bernama s, jika jumlah tertentu
Aku memberikan kurang dari 100, saya ingin menetapkan rendah untuk string,
lain saya ingin menetapkan tinggi.
>> Ini di sini adalah melakukan hal yang sama persis delapan baris kode lakukan.
Jadi di sini saya ingin membuat string variabel.
Dan ini adalah kondisi saya memeriksa, jika nomor kurang dari 100,
maka Anda menetapkan nilai rendah, lain menetapkan nilai tinggi.
>> Slide ini akan online, tidak ada kekhawatiran jika kalian tidak mendapatkan ini turun.
Ini adalah cara sederhana, lebih cara yang efisien untuk menulis kode.
OKE.
>> Jadi sekarang kita akan masukkan apa, bagi kebanyakan orang
seperti sangat, sangat membingungkan Hal untuk berpikir tentang pada awalnya.
Bagian lingkaran.
Jadi hari ini, kita akan berbicara sekitar tiga jenis loop.
Kita akan memulai dengan sementara lingkaran, kemudian berbicara tentang do while,
dan kemudian berbicara tentang untuk loop.
>> Jadi pada dasarnya, untuk lebih pelajar visual di luar sana,
kita memiliki, pada dasarnya, sebuah grafis penggambaran apa loop sementara tidak.
Jadi dalam pemrograman, Anda akan mulai dan masukkan loop pada titik tertentu.
Anda memeriksa kondisi.
Dan jika kondisi benar, Anda mengeksekusi kode di dalam.
Dan Anda datang kembali sekitar dan Anda periksa.
Jika itu masih benar Anda tetap berjalan kode ini sekitar dan di dalam lingkaran.
>> Namun, kedua yang kondisi menjadi palsu,
Anda akan istirahat dan mengakhiri loop.
Dan ini pada dasarnya adalah sintaks Anda akan menggunakan.
Sementara kondisi tertentu adalah benar melakukan hal ini, jika itu tidak benar,
Anda akan melompat ke akhir dan bergerak maju dengan program anda.
OKE.
>> Apakah ada yang punya contoh pada apa yang berpotensi terjadi
jika saya mencoba untuk menjalankan potongan kode ini?
By the way, SAJ-- itu Scaz, Andi, Jason-- akan kami menandatangani email kami,
Cinta, SAJ.
Itu kita.
OKE.
>> Ada yang punya contoh, atau memiliki ide tentang apa ini akan mencetak?
Jenis pertanyaan jebakan.
Jadi di sini, mengingat kondisi kami memeriksa adalah sementara benar.
Jadi sementara ini benar, itu akan mencetak, aku cinta SAJ!
Apakah ada titik di mana kami akan mengubah ini untuk apa-apa jika tidak?
Tidak ada, kan?
>> Jadi di sini, kita memiliki ditemui apa yang mungkin
akan mengganggu banyak program Anda, loop tak terbatas.
Anda akan menemukan bahwa jika Anda menjalankan potongan kode ini,
itu hanya akan terus percetakan, aku cinta SAJ!
Sementara kita menghargai dukungan tersebut, kita tidak ingin komputer Anda
crash karena Anda tetap mencetak Saya suka SAJ!
>> Jadi tolong, tolong, menghindari loop tak terbatas
karena itu tidak akan untuk mengevaluasi ke false
dan Anda tidak akan pernah meninggalkan loop.
Dan Anda akan tersedot selamanya.
Keren.
OKE.
Tipe kedua loop kita akan berbicara tentang hari ini
adalah do while, do while loop.
Dan itu disebut do while karena Anda memiliki do dan sementara.
Jadi ini sangat mirip dengan sementara lingkaran, tapi sedikit berbeda.
Di sini, Anda akan melakukan apapun yang di dalam ini
sementara kondisi tertentu adalah benar.
Jadi jika saya C dan komputer saya mengalir potongan kode ini,
Saya lihat di atas.
Aku pergi ke C, saya mengatakan melakukan hal ini.
Dan kemudian saya cek, sementara ini benar, saya harus mengulanginya.
Tapi sementara ini adalah palsu, maka saya bergerak maju
dan aku tidak pernah kembali ke lingkaran itu lagi.
>> Ada yang bisa mengambil bacokan apa perbedaan
antara lingkaran ini dan yang kita hanya tampak di praktis.
Ya.
SPEAKER 15: Kondisi datang setelah bukannya sebelumnya?
ANDI PENG: Tepat.
Jadi dia mengatakan kondisi muncul setelah, bukan sebelumnya.
Pada akhirnya, perbedaan antara ini dan loop sementara
adalah bahwa Anda hanya akan melakukan apa yang di dalam ini terlepas dari
apakah kondisi Anda adalah benar, dan kemudian memeriksa kondisi.
Jadi dalam hal ini, Anda always-- dengan cara ini,
Anda selalu memastikan apa yang ada di dalamnya berjalan setidaknya
sekali sebelum memeriksa untuk melihat jika Anda ingin menjalankannya lagi.
>> Dan di sini adalah contoh ketika kita akan menggunakannya.
Jadi misalnya, jika saya ingin memiliki variabel bertipe int bernama usia,
dan saya ingin meminta pengguna untuk usia mereka,
Aku akan melakukan printf () Berapa umur anda?
usia = getInt (), yang adalah mendorong pengguna.
>> Dan beberapa orang akan benar-benar menjengkelkan.
Dan Anda tidak ingin bug di Anda Program seseorang memasukkan seperti,
oh aku negatif berusia 4 tahun atau apa pun.
Dalam hal ini jika mereka melakukan itu, ini mengevaluasi
true, yang berarti bahwa aku akan harus terus kembali dan melakukan hal ini.
Jadi ini akan terus re-mendorong pengguna
untuk memberikan seperti nyata jumlah usia dan itu
akan terus kembali dan mengulangi sampai mereka memberikan usia sebenarnya
lebih besar dari satu, atau tidak nol.
>> Jadi mengisyaratkan, petunjuk.
Ini akan sangat, sangat berguna untuk salah satu masalah PSet Anda.
Ya.
>> SPEAKER 16: Ups, maaf.
>> ANDI PENG: Yep.
>> SPEAKER 16: Apakah ada, tidak menjadi bajingan, tapi--
ANDI PENG: Jangan khawatir.
SPEAKER 16: --are ada aturan yang berbeda di sini,
atau apakah Anda hanya lupa untuk menempatkan kutipan?
>> ANDI PENG: Oh Yeah.
Maaf, itu benar-benar buruk saya.
Itu pasti seharusnya kutipan.
Tangkapan bagus.
Itu akan tidak berjalan.
OKE.
>> Jadi jenis terakhir loop kita akan bicara tentang dan, pada akhirnya, jenis yang paling
kompleks adalah untuk loop.
Jangan khawatir jika Anda tidak tahu apa artinya.
Ini cukup membingungkan pada awalnya.
Kami akan pergi ke sebuah contoh.
>> Semua itu terjadi dalam untuk loop adalah bahwa Anda memiliki tiga pernyataan
bahwa Anda akan menyertakan.
Jadi untuk hal tertentu, Anda akan menginisialisasi variabel.
Anda akan menambahkan kondisi ke yang lingkaran ini akan tetap berjalan.
Dan kemudian, pada akhir lingkaran, Anda akan memperbaruinya.
Anda dapat memperbarui variabel bahwa Anda ingin melacak.
Jadi kita biasanya menggunakan untuk loop ketika kita
ingin menjalankan loop untuk jumlah tertentu kali
dan kita sudah tahu, Oh aku ingin lingkaran ini untuk mengeksekusi seperti 10 kali,
maka Anda do-- aku akan pergi contoh pada halaman berikutnya.
>> Jadi di sini misalnya, di Scratch, jika Anda ingin sesuatu untuk mengulang 10 kali,
semua yang Anda harus katakan adalah, ulangi 10 kali aku cinta SAJ!
yang merupakan lebih dapat diterima menunjukkan dukungan bagi kita
daripada loop tak terbatas.
Di sini, Anda akan bagaimana transisi ke C dan menulis
yaitu untuk int-- Aku akan membuat atau mendeklarasikan variabel bertipe int bernama i.
Aku akan menginisialisasi ke 0, jadi saya = 0;
dan ini akan menjadi kondisi saya.
Jadi saya kurang dari 10.
Dan kemudian di end-- pernyataan terakhir Anda
akan memiliki adalah update apa yang terjadi pada saya variabel
pada akhir untuk Anda lingkaran.
Jadi itu agak membingungkan, karena bagian yang berbeda dari garis ini
yang terjadi di berbagai jenis loop.
Tapi aku akan pergi selama Contoh pseudocode itu
dan mungkin menjelaskan hal ini hanya sedikit lebih baik.
>> Jadi di sini.
Itulah lingkaran yang kita hanya melihat.
Pada dasarnya di pseudocode, apa yang terjadi dalam program ini,
pertama saya menciptakan i, menginisialisasi ke 0.
Aku memeriksa untuk melihat apakah saya adalah kurang dari 10, dalam hal ini
pertama kali adalah karena 0 adalah kurang dari 10.
Jadi loop akan dijalankan.
Dan kemudian aku akan mencetak baris ini.
Dan kemudian pada akhir baris ini, tepat di sini, saya akan melakukan kenaikan i, i ++,
segala cara yang incrementing dengan satu.
>> Jadi saya sekarang 1.
Karena itu sekali 0, jika saya kenaikan itu, sekarang 1.
Dan kemudian aku akan kembali ke awal loop
dan saya memeriksa kondisi.
Apakah kondisi masih benar?
Ya, 1 masih kurang dari 10.
Jadi itu akan mencetak ini lagi, pergi dan kemudian kenaikan i, dan periksa
kondisi terus, terus,
sampai Anda akhirnya mendapatkan ke titik di mana saya adalah 10.
>> Anda akan mencetak ini 10 kali dan kemudian saya akan sama 10.
Anda akan memeriksa kondisi.
Adalah 10 kurang dari 10?
Tidak, itu adalah palsu.
Dengan demikian, lingkaran ini tidak akan untuk menjalankan, itu akan istirahat,
dan Anda akan melanjutkan dengan kode Anda.
>> Sehingga kalian bisa lihat, ini adalah contoh benar-benar hebat
dari lingkaran Anda dapat memprogram dalam berjalan untuk jumlah tertentu kali.
Setiap orang yang jelas?
Ya.
>> SPEAKER 17: Bagaimana increment eksponensial, itu coding yang berbeda?
>> ANDI PENG: Anda can-- kita akan pergi lebih ini di slide berikutnya.
Pertanyaan bagus.
Apakah anyone-- sebelum saya pindah on-- siapa pun sama sekali bingung,
karena ini adalah konsep benar-benar sulit.
Jangan khawatir, jika you're-- OK.
Keren.
>> Baiklah.
Hanya slide umum.
Loop sementara ini melakukan persis hal yang sama untuk loop adalah.
Ini hanya ditulis berbeda.
Kalian bisa membaca dengan teliti slide pada kenyamanan Anda di kemudian hari.
Tapi hanya tahu bahwa ada beberapa cara menulis hal yang sama
terjadi dengan loop yang berbeda.
OKE.
>> Jadi, sekarang kita masuk pertanyaan tentang apa jika kita memiliki lingkaran dalam lingkaran.
Kami masuk ke nyata Inception jenis barang di sini.
Bila Anda ingin melakukan hal-hal beberapa kali dalam hal-hal lain
yang melakukan hal-hal beberapa kali, Anda ingin apa yang disebut bersarang untuk loop.
Bagi Anda yang pertama kali melihat ini dan mendapatkan sangat bingung, semua yang kita lakukan di sini
adalah memiliki untuk loop di mana kita memiliki variabel baris.
Tapi di dalam itu, kami juga memiliki lain untuk loop dari variabel yang disebut kolom.
Dan saya sangat menyarankan anda semua yang bingung untuk pertama tetap
track-- menarik ini keluar, menarik ini.
Jangan mencoba untuk hanya alasan melalui itu, menarik keluar.
>> Di kepala Anda, pada bagian ini kertas, atau apa pun, menulis baris,
melacak apa baris sama dengan.
Menulis kolom, melacak apa kolom sama dengan.
Dan melacak apa yang mencetak dengan setiap iterasi.
Setiap iterasi dari loop ini, setiap iterasi dari lingkaran yang lebih besar yang,
terus mengikuti logika.
Dan saya jamin, Anda akan menyukai apa yang Anda lihat,
karena itu juga sangat berlaku untuk set masalah Anda.
Keren.
Baiklah.
Jadi hal yang paling penting bahwa kalian mungkin semua
berpikir tentang sekarang, adalah Masalah Set Anda 1s,
yang dirilis Kamis / Jumat.
>> Dalam program water.c Anda, petunjuk Anda akan memiliki
untuk meminta pengguna untuk input.
Dalam program mario.c Anda Anda akan memiliki
menggunakan bersarang untuk loop, yang untuk loop dalam untuk loop,
untuk mencetak blok piramida, dasarnya seperti apa Mario harus melompat melalui.
Dan kemudian di dalam Anda greedy-- atau mungkin Membuat Perubahan, jika salah satu dari kalian
pernah mendengar tentang itu-- Anda akan harus sangat
hati nilai-nilai floating point pertama.
Ingat desimal mengambang dan bilangan bulat tidak hal yang sama.
Melacak mana yang yang.
Dan Anda akan menggunakan pernyataan bersyarat, juga.
>> Baiklah, hal terakhir.
Saya punya beberapa menit lagi.
Gaya.
Jadi ini adalah sesuatu yang tidak sebenarnya efek efisiensi,
atau menjalankan sebenarnya kode Anda.
Namun, itu efek kita sebagai grader Anda, sebagai pembaca Anda.
Ini efek sendiri, jika Anda mencoba untuk menemukan masalah.
Itu efek pembacaan kode Anda.
>> Jadi gaya, seperti ketika Anda mencoba untuk gaya esai untuk bahasa Inggris, jika Anda
tidak memiliki paragraf, Anda memiliki semua jenis
dari campur aduk bersama-sama dalam satu baris, itu membuat sangat sulit bagi siapa pun
untuk membaca esai Anda, bahkan jika poin Anda secara logis suara.
Hal yang sama dalam pemrograman.
Anda dapat memiliki mengerikan jelas Kode yang Scaz akan mencakup,
dan masih dapat berjalan dan fungsi.
Tapi bagi kami, karena TA indah Anda, yang akan membaca dan mengevaluasi PSets Anda,
itu tidak sangat bagus.
>> Jadi tolong, demi kita dan diri sendiri,
ketika Anda mencoba untuk memperbaiki masalah dalam kode Anda,
dan Anda mencoba untuk membaca kode Anda sendiri, membuat
Pastikan Anda mengikuti beberapa konvensi bahwa kita akan pergi.
>> Jadi pertama.
Berikan variabel nama-nama bermakna.
Jika Anda ingin menyimpan integer disebut usia, silakan nama itu usia.
Jangan nama itu tinggi.
Ketika Anda mencoba untuk menyimpan usia tinggi,
itu membuat segalanya sangat membingungkan bagi kita.
Kami tidak suka bingung.
Anda tidak suka menjadi bingung.
Tidak ada yang suka bingung.
Jika Anda akan menciptakan sesuatu, nama itu sesuatu yang berarti.
>> Namun, dalam untuk loop, tunggal variabel karakter biasanya baik-baik saja.
Dan di untuk loop, jika Anda ingin hanya saya, dan j, k, merasa bebas untuk hanya melakukan itu.
>> Inisialisasi konsisten.
Jadi apa artinya?
Itu berarti secara teknis, secara teoritis, Anda dapat memulai dan membuat
beberapa variabel pada baris yang sama.
Jadi misalnya, saya dapat membuat integer disebut scaz_age,
dan integer disebut andi_age = 20, dan integer disebut jason_age
pada baris yang sama.
Dan saya juga dapat menetapkan hanya satu dari mereka dan bukan orang lain untuk nilai-nilai.
Kami meminta tolong jangan lakukan itu.
Karena di sini Anda sudah dasarnya dibuat tiga variabel, tetapi hanya salah satu dari mereka
sebenarnya memiliki nilai.
Dan kemudian ketika kita mencoba untuk membaca kode Anda,
atau jika Anda mencoba untuk memperbaiki masalah dalam kode Anda,
itu sangat membingungkan untuk mengikuti.
Jadi hanya untuk dibaca Anda, untuk pembacaan kami, jangan lakukan itu.
>> Kurung kurawal konsisten.
Beberapa orang ingin menempatkan mereka kurung kurawal di tempat yang berbeda.
Itu tidak terlalu penting.
Pastikan Anda konsisten dalam Anda Kode sendiri di mana Anda ingin menempatkan mereka.
>> Spasi konsisten.
Jika Anda menempatkan spasi setelah untuk loop, selalu melakukan itu.
Jangan hanya suka jenis melakukannya pada beberapa tempat, jangan lakukan itu pada orang lain.
Hanya konsisten.
>> Kedua, kalau ada yang ingin untuk membaca dengan teliti CS50 Style Guide,
kami secara resmi memiliki panduan gaya yang memberitahu Anda semua konvensi ini,
ditambah lagi.
Ini online.
Ini seperti cs50.net/style atau semacam itu.
Anda bisa google.
>> Konsistensi adalah kunci.
Jadi jangan khawatir apa orang lain lakukan,
hanya pastikan bahwa Anda konsisten dalam kode Anda sendiri.
Siapa pun punya pertanyaan tentang itu?
Ya.
>> SPEAKER 18: Jadi hal yang tepat hubungannya dengan inisialisasi hanya
memiliki mereka semua dalam terpisah line, adalah bahwa apa yang Anda katakan?
>> ANDI PENG: Jadi saya jarang telah ini terjadi.
Tetapi jika Anda ingin, jika Anda ingin menjadi seperti menghemat ruang dalam kode Anda,
atau apa pun, Anda dapat melakukan hal ini.
Kami meminta bahwa Anda hanya tidak menginisialisasi satu hal dan bukan orang lain.
Jadi jika Anda ingin melakukan int scaz_age, int andi_age, int jason_age, itu baik-baik saja.
Hanya tidak menginisialisasi satu dan bukan orang lain saja.
>> Pertanyaan?
Baiklah.
Aku akan lulus dari mikrofon, dan laser pointer,
dan tongkat untuk Scaz pada saat ini.
Ini aneh.
Ini dia.
>> BRIAN SCASSELLATI: Terima kasih.
Bagaimana bahwa untuk suara?
Suara yang baik? .
Sangat baik.
OKE.
Jadi, hi semua orang.
>> Aku akan mencoba untuk bekerja melalui contoh praktis dengan Anda.
Dan kita akan menggunakan CS50 ini lingkungan pengembangan, apa yang disebut
Lingkungan Integrated Development.
Dan Anda sudah melihat ini ditunjukkan dalam kuliah.
Dan pada Soal Set 1, Anda akan memiliki kesempatan
menggunakannya, dan bermain-main dengan itu, dan mendapatkan terbiasa untuk itu,
karena kita akan menggunakannya melalui sisa semester.
>> Jadi dalam IDE ini, Anda memiliki apa yang tampak seperti file browser sangat tradisional
lebih pada satu sisi.
Anda punya porsi up atas di mana Anda akan
untuk melihat kode sumber Anda, Anda Cfile, kode yang Anda tulis.
Dan di bagian bawah, Anda akan memiliki jendela terminal
yang Anda akan gunakan untuk kedua mengkompilasi program Anda
dan untuk menjalankan atau mengeksekusi program Anda.
OKE.
>> Jadi hanya untuk memberi kita sedikit yayasan, di jendela terminal,
Anda akan menjadi menggunakan seperangkat perintah
yang perintah standar di seluruh sebagian besar sistem Unix atau Linux.
Dan jadi jika Anda pernah menggunakan bentuk Unix, Ubuntu,
atau dari rasa lain, ini akan tampak akrab.
>> Jika Anda belum, jangan khawatir.
Tidak ada yang rumit tentang mereka.
Mereka hanya menggunakan yang berbeda sintaks, penamaan yang berbeda
konvensi dari yang Anda pernah lihat sebelumnya.
>> Jadi untuk daftar keluar file dalam direktori tertentu,
mereka akan menggunakan perintah yang disebut ls, atau daftar.
Jika Anda ingin melihat segala sesuatu dengan semua rincian,
Anda akan menggunakan perintah Argumen sejalan dengan ls -l.
Dan itu akan menunjukkan kepada Anda semua secara lebih rinci, termasuk
izin untuk file.
>> Untuk mengubah direktori, Anda akan menggunakan perintah cd.
Dan Anda akan dapat mengubah direktori baik untuk pergi ke direktori home Anda.
Itu hanya cd semua oleh sendiri, cd dengan dua
titik akan kembali Anda up satu tingkat ke direktori sebelumnya.
Dan Anda juga dapat cd ke subdirektori dengan mengetikkan cd
dan nama subdirektori itu.
>> Anda juga dapat membuat direktori baru.
Dan kita akan berjalan melalui ini hanya dalam satu menit.
Tapi hanya untuk menempatkan segala sesuatu di layar.
Sehingga Anda dapat melihat mereka.
>> Anda juga akan memiliki kemampuan untuk memanipulasi file langsung
dari baris perintah.
Anda akan dapat menyalinnya, untuk memindahkan mereka, atau untuk menghapusnya,
yaitu, efektif, untuk menghapusnya.
>> The CS50 IDE memberi Anda penuh kekuatan argumen baris perintah.
Dan itu berarti Anda juga bisa melakukan hal-hal yang sangat berbahaya.
OKE.
Misalnya, Anda dapat menghapus, atau yang ada delete,
file tanpa meminta untuk konfirmasi.
Dan Anda bahkan dapat menghapus recursively-- itu
dasbor r flag-- seluruh subdirektori dan semua isinya.
OKE.
Mereka terdaftar dalam merah karena Anda harus berpikir "Bahaya" setiap kali
Anda melihat hal-hal.
OKE.
Baiklah.
>> Sekarang akhirnya, hal-hal yang akan sangat berharga untuk Anda,
adalah ada beberapa trik yang baik untuk mengetahui karena Anda menavigasi
melalui jendela terminal ini.
Pertama, Anda dapat menghapus layar di setiap saat dengan hanya mengetik di jelas.
Dan Anda akan melihat saya melakukan itu cukup sering.
Anda juga dapat hanya menampilkan teks file
dengan mengetik lebih dan kemudian nama file.
Anda kemudian akan dapat gulir kembali dan sebagainya dengan hanya dengan spasi
dan tombol panah.
>> Jika Anda memiliki, seperti yang kita lakukan hari ini di kuliah, sebuah program yang sedang berjalan terus menerus
di loop tak terbatas, Anda dapat menghentikan program yang
dari mengeksekusi dengan mengetikkan kontrol, yang menekan Control-C.
Dan Anda mungkin harus melakukan ini beberapa kali.
Komputer mendapat jauh di depan Anda.
Dan Anda kadang-kadang perlu memberikan beberapa mencoba
sebelum benar-benar akan datang melalui.
>> Anda juga akan dapat semacam melalui perintah
Anda hanya mengetik menggunakan tombol up, tombol panah, dan kemudian tombol panah bawah.
Dan apa yang paling berguna adalah bukan dari mengetik nama file yang panjang,
Anda akan dapat menggunakan Tab untuk autocomplete beberapa petunjuk.
Sekarang kita akan menunjukkan semua orang hanya dalam satu detik.
Jadi, jika Anda tidak ingat mereka, jangan khawatir.
Ini adalah hal-hal yang Anda akan mengambil dan menggunakan seperti yang kita pergi bersama.
OKE.
>> Jadi dalam C-- tidak seperti di Scratch-- C adalah bahasa yang dikompilasi.
Itu berarti kita akan mengambil sumber file-- itulah teks yang Anda tulis,
perintah yang Anda menulis, printf () pernyataan, loop,
segala sesuatu else-- dan kita akan untuk mengambil file itu dan menyerahkannya off
untuk program yang disebut kompilator.
>> Compiler kemudian akan mengambil bahwa teks yang telah Anda tulis
dan menerjemahkannya ke dalam petunjuk biner
bahwa komputer Anda benar-benar akan digunakan.
Itu disebut objek atau file executable.
Jika Anda melihat file ini, Anda akan untuk melihat kode yang telah Anda tulis.
Jika Anda melihat file ini, Anda akan untuk melihat urutan acak karakter
yang tidak masuk akal sama sekali.
Itu karena ini adalah biner.
Ini tidak dimaksudkan bagi Anda untuk membaca.
>> Namun, setiap kali Anda ingin menjalankan sesuatu, apa yang akan Anda
akan berjalan adalah file objek ini.
Jadi ketika kita bekerja dengan ini file, kita akan menulis file di C.
Kami kemudian akan compile, menggunakan perintah seperti make yang akan memanggil
dentang compiler untuk bahasa C.
Dan yang akan menghasilkan sebuah objek mengajukan, seperti keluar, atau dalam hal ini,
nama, file saya, bahwa saya telah dimasukkan ke dalam.
Baiklah.
>> Jadi mari kita benar-benar mencoba ini.
Jadi saya datang dengan sebuah contoh dari apa yang saya ingin mencoba.
Dan salah satu hal yang mempesona saya adalah animasi.
Jadi kita akan mencoba untuk melakukan sedikit animasi
hanya menggunakan karakter ASCII.
Karakter kita dapat mencetak dengan mudah sekarang.
>> Jadi di sini adalah upaya terbaik saya menciptakan untuk Anda
animasi kelinci berjalan melalui rumput tinggi.
Itu dia.
OKE.
Jadi dia tidak berjalan lagi, tapi dia berdiri di rumput tinggi.
>> Sekarang jika saya seorang animator, di sekolah tua
versi animasi, apa yang saya akan lakukan adalah saya akan menghasilkan
gambar kelinci ini di rumput.
Dan kemudian saya akan menghasilkan picture-- lain
lain apa yang mereka sebut cell-- yang telah kelinci hanya sedikit bergerak.
Dan kemudian yang ketiga yang memiliki kelinci bergerak sedikit lebih jauh.
>> Dan aku akan menghasilkan seluruh urutan sel-sel ini.
Beberapa di mana kelinci lebih ke sisi kiri.
Dan kemudian bergerak perlahan-lahan, satu oleh satu ke tengah.
Dan kemudian dari tengah ke kanan.
Dan jika saya kemudian, benar-benar beruntung, saya bisa menempatkan bersama-sama
dan aku bisa menghidupkan mereka.
Dan ada kelinci saya berjalan melalui rumput.
>> Itu PowerPoint besar saya trick untuk hari.
OKE.
Jadi ini adalah sebagai baik karena mendapat.
OKE.
Jadi, di sini sekali lagi, di sini adalah kami kelinci berjalan melalui rumput.
>> SPEAKER 19: Lagi.
BRIAN SCASSELLATI: Satu lebih banyak waktu, baiklah.
Ada kelinci Anda.
OKE.
>> Jadi hari ini apa yang kita akan lakukan adalah kita akan
mencoba untuk mengotomatisasi proses memproduksi sel-sel ini.
Kami tidak akan cukup sampai ke titik mampu menempatkan mereka semua bersama-sama.
Tapi, kita akan mencoba untuk mengotomatisasi Proses menghasilkan urutan ini.
>> Dan ini jauh dari apa yang animasi saat ini adalah seperti.
Artinya, Anda tidak melakukan hal-hal tentu dengan menggambar segala sesuatu dengan tangan.
Kami menggunakan komputer untuk mengotomatisasi bagian dari proses itu.
OKE.
>> Jadi biarkan aku beralih sekarang untuk IDE CS50 kami.
Dan saya telah diciptakan untuk us-- dan membiarkan saya memperbesar sini bit-- sedikit saya sudah
diciptakan untuk kita titik awal.
>> Setiap kali kami meminta Anda untuk duduk dan menulis sepotong kode,
apa yang kita benar-benar meminta Anda untuk melakukan adalah kami meminta untuk memecahkan masalah.
Dan cara bahwa Anda harus berpikir tentang melakukan hal itu
adalah dengan memulai dengan beberapa bagian sederhana dari solusi itu.
Dan kemudian membangun dari bagian itu.
Dan itulah yang akan kita lakukan hari ini.
>> Jadi, daripada mencoba sekaligus untuk menulis seluruh sekelompok kode yang
akan menghasilkan orang-orang 10 sel animasi,
kita akan mulai sebaliknya dengan salah satu bagian yang bekerja.
Dan kemudian kita akan membangun sedikit sekitar yang
dan lebih sedikit dan lebih sedikit.
>> Sekarang hal yang baik tentang memecahkan masalah dengan cara ini
adalah bahwa hal itu akan memungkinkan Anda untuk memulai selalu dengan sesuatu yang Anda tahu
bekerja dan memperkenalkan salah satu perubahan bertahap.
Dan itu adalah cara yang bagus untuk belajar bagaimana kode,
karena setiap kali Anda membuat perubahan, Anda melihat apa dampaknya.
OKE.
>> Jadi, inilah titik awal kita.
OKE.
Jadi pada awal file saya, Saya sudah hash # disertakan stdio.h.
Itu sehingga saya bisa mendapatkan printf () fungsi untuk bekerja.
>> Saya kemudian saya memiliki fungsi utama saya.
Dan ini masih terlihat sedikit misterius atau tidak jelas untuk sebagian dari Anda.
Tidak apa-apa.
Semua yang dikatakannya adalah bahwa fungsi utama mengambil
ada arguments-- kekosongan berarti tidak ada di C. Dan itu
kembali dengan konvensi integer.
Main selalu mengembalikan integer, biasanya kode mengatakan hal-hal
berjalan dengan baik atau tidak berjalan dengan baik.
OKE.
Tapi utama harus memiliki yang membentuk bagi kita sekarang.
>> Aku sudah kemudian dimasukkan ke dalam tiga baris kode.
Dan bersama dengan setiap baris kode, aku telah menempatkan komentar.
Sekarang salah satu hal yang kita akan bersikeras bahwa Anda lakukan,
dan itu seperti yang penting praktek pemrograman,
adalah untuk selalu mengomentari kode Anda.
Selalu menuliskan dalam English komentar sesuatu
Anda pikir kode yang seharusnya dilakukan.
Dengan cara itu, nanti pada saat Anda kembali ke itu, Anda dapat melihat dan Anda dapat mengatakan,
oh, aku ingat apa yang saya coba lakukan dengan ini.
Atau ketika TA duduk dengan Anda untuk mencoba untuk membantu Anda di jam kantor,
mereka dapat melihat ini dan pergi, saya melihat apa yang Anda coba lakukan,
tetapi ini apa yang sebenarnya terjadi.
OKE.
>> Jadi saya punya tiga bagian untuk kode saya, Aku akan pertama-tama cetak
beberapa titik di awal.
Saya kemudian akan mencetak saya kelinci sangat mewah.
Dan kemudian beberapa sedikit titik di akhir.
>> Dan tiga pernyataan cetak ini harus tampak akrab bagi Anda pada saat ini.
Semua yang saya lakukan di masing-masing dari mereka adalah aku
mencetak urutan karakter.
Tidak ada variabel yang terlibat.
Semuanya hanya datar.
OKE.
>> Jadi jika saya pergi sekarang untuk terminal-- saya mari kita lihat apakah saya bisa kembali ini out--
dan aku akan mengetik jelas lagi.
>> SPEAKER 20: Apakah kita menggunakan slash ganda berkomentar?
BRIAN SCASSELLATI: Can menggunakan ya double--.
Ada beberapa cara untuk meninggalkan komentar di C. Satu
cara adalah dengan menggunakan garis miring ganda.
Yang lain adalah dengan menggunakan garis miring dan bintang dan kemudian tutup dengan bintang dan garis miring.
Baiklah.
>> Pertama-tama, aku akan mulai navigasi di sekitar sini.
Jadi jika saya pergi ke direktori rumah saya, Aku sudah berubah direktori ada,
Aku akan melihat dan melihat apa yang dalam direktori tersebut, ls, daftar keluar.
Aku akan melihat bahwa saya telah punya dua subdirektori.
Mari kita membuat ini sedikit lebih besar di sini sehingga kita semua bisa melihatnya.
>> Saya dapat melihat bahwa saya telah punya dua subdirektori.
Aku akan mengubah direktori untuk pergi ke ruang kerja.
Dan aku akan hanya mengetikkan bagian dari itu, dan kemudian tekan saja Tab.
Dan itu akan menyelesaikan sisanya untuk saya.
Fancy.
>> Aku akan melihat dan melihat di ruang kerja.
Dan sekarang, aku bekerja pada SuperSection yang
bahwa kita mengajar sekarang.
Jadi aku akan pergi ke direktori tersebut.
Dan akhirnya, melihat dan melihat.
Dan aku punya file bunny.c.
>> Baiklah jadi biar jelas sekali lagi.
Dan aku akan sekarang-- lagi aku masih tinggal di direktori yang
dan itu mengatakan aku di direktori SuperSection.
Aku akan pergi ke depan dan membuat program saya kelinci.
Dan perintah itu, membuat kelinci, sementara terdengar sedikit aneh,
juga memanggil compiler dentang.
>> Dan itu diproduksi untuk saya output yang
sebuah funny-- dieksekusi file eksekusi yang disebut kelinci.
OKE.
Maka saya bisa, dan ini terdengar bahkan lebih buruk, mengeksekusi kelinci.
OKE.
Dan mari kita lihat apa yang dilakukannya.
OKE.
Itu sedikit apa yang kuharapkan.
Aku punya gambar kelinci saya di sana, tapi aku agak ingin semuanya dengan sendirinya.
Apa yang saya lewatkan?
>> SPEAKER 21: Slash l atau memangkas n.
BRIAN SCASSELLATI: Slash n.
OKE.
Jadi mari kita kembali di sini.
Dan aku akan keluar dari itu.
Dan aku akan kembali ke satu ini.
Dan mari kita lihat sekarang dari fungsi utama saya di sini.
>> Jadi apa yang harus aku lakukan?
Saya ingin mengakhiri garis.
Jadi saya akan dimasukkan ke dalam komentar.
Aku akan dimasukkan ke dalam printf ().
Dan apa yang harus saya dimasukkan ke dalam?
/ n.
OKE.
Apa yang harus saya mengakhirinya dengan?
Titik koma.
Baiklah.
>> Sekarang, salah satu yang benar-benar hal penting adalah memastikan
setiap kali Anda membuat perubahan dalam kode Anda, bahwa Anda menyimpannya.
Jika Anda belum menyimpan kode Anda, Anda akan melihat sedikit bintang di atas sana.
Dan bintang yang mengatakan bahwa Anda belum menyimpan kode ini.
>> Jika saya compile sekarang, itu tidak akan mencerminkan perubahan tersebut,
karena compiler melihat file yang pada disk, bukan file itu
terbuka di editor.
Baiklah.
>> Jadi mari kita simpan dan kemudian kami akan pergi tepat di bawah sini, kembali keluar.
Datang ke terminal saya.
Dan mari kita membersihkan ruang lagi.
>> Dan kita bisa pergi ke depan dan satu lagi waktu membuat program kelinci kami.
Dan mengeksekusi kelinci.
Itu tidak berhasil.
Slash salah.
Jadi jika Anda melihat apa yang saya punya, saya menempatkan / n di sana, tapi aku punya garis miring yang salah.
>> Segala sesuatu yang komputer Anda Apakah sangat eksplisit.
OKE?
Satu kesalahan kecil tanda baca, dan tiba-tiba Anda tidak mendapatkan apa yang Anda inginkan.
Baiklah.
Jadi mari kita tampilannya kembali keluar lagi.
Kami akan kembali.
Nah membuat perbaikan yang sangat cepat.
Kami akan menempatkan garis miring tepat di.
Kami akan menyimpannya.
Kami akan tampilannya kembali.
>> Untuk beberapa alasan, itu tidak menjadi bahagia, tetapi mari kita pergi ke depan
dan kita akan kembali ke terminal sini.
Jelas itu.
Kami akan memperbesar.
Dan sekali lagi, kami akan membuat kelinci.
Dan sekarang cukup yakin, ia bekerja.
Hore.
OKE.
>> Jadi mari kita coba untuk membuat ini sedikit lebih umum.
Mari kita lihat apakah bukan hanya mencetak satu frame tertentu,
mari kita lihat apakah kita dapat membuat ini sehingga kita bisa mendapatkan semua 10
dari mereka frame animasi bahwa kita ingin memiliki.
Jadi sekali lagi, mari kita ini langkah pada satu waktu.
>> Mari kita pertama menggeneralisasi itu, tidak sehingga saya melakukan semua frame,
tapi begitu saya melakukan salah satu frame yang saya mungkin ingin.
Jadi apa bedanya antara frame?
Apakah kelinci yang sama?
AUDIENCE: Ya.
BRIAN SCASSELLATI: Ya.
Apa bedanya?
>> AUDIENCE: Posisi.
BRIAN SCASSELLATI: Posisinya, tepat?
Dan bagaimana mengontrol posisinya?
Berapa banyak titik aku menempatkan di awal
dan berapa banyak titik aku menempatkan di akhir.
Jadi saya memiliki lima di awal dan lima di akhir.
>> Mari kita ganti yang lima dengan untuk loop.
OKE.
Dan aku akan membuat untuk lingkaran sekarang akan mengatakan,
Aku akan mencetak beberapa nomor dari dots di awal.
Aku akan menggunakan variabel.
Katakanlah, bagaimana saya sebagai counter dalam lingkaran saya.
Dan aku akan menyatakan itu atas.
>> Dan kemudian di loop Saya perlu melakukan tiga hal.
Hal pertama yang harus saya lakukan adalah saya harus menginisialisasi i.
Apa yang harus saya menginisialisasi untuk memulai untuk menjadi?
0.
OKE.
>> Lalu aku harus mengatakan, apa yang kondisi terminasi?
Ketika saya harus berhenti?
Nah berapa banyak titik-titik yang Anda ingin mencetak satu ini?
>> AUDIENCE: Lima.
BRIAN SCASSELLATI: Lima lagi?
Bagaimana mari kita lakukan sesuatu yang berbeda, yang kita lakukan lima.
Mari kita tunjukkan bahwa itu berbeda.
SPEAKER 22: Dua.
BRIAN SCASSELLATI: Dua.
OKE.
Jadi jika saya ingin dua titik, apa yang harus saya masukkan di sini?
>> AUDIENCE: Tiga.
>> BRIAN SCASSELLATI: Tiga.
OKE.
Berapa kali adalah bahwa akan pergi melalui?
Itu akan pergi melalui tiga kali, 0, 1, dan 2, kanan?
Baiklah, mari kita kembali ke dua.
Sekarang kita akan mendapatkan dua titik.
Dan apa yang ingin saya lakukan setiap waktu aku pergi melalui loop?
Apa harus berubah setiap kali saya pergi melalui?
>> SPEAKER 23: Menambahkan dot.
>> BRIAN SCASSELLATI: Saya harus terus berjalan.
Saya akan menambahkan sebuah titik.
Aku akan mencetak dot, setiap kali melalui loop.
Tapi bagaimana aku melacak bagaimana banyak kali aku sudah melalui loop?
Saya menggunakan i, yang variabel, counter itu.
>> Jadi setiap kali melalui, aku akan untuk kenaikan counter per satu.
Sekarang, itu sama untuk saya mengatakan i = i + 1.
Tidak apa-apa.
Aku bisa melakukannya itu-- Saya suka singkatan, jadi saya akan mengatakan i ++.
OKE.
>> Mari kita lakukan hal yang sama di sini di bagian bawah.
Hanya Aku agak melakukan satu itu.
Aku akan membiarkan kalian melakukan satu ini benar-benar.
Baiklah.
>> Jadi apa yang harus saya tulis di sini?
Berikut saya untuk loop.
Aku akan melakukan printf () dan aku akan untuk membuatnya sehingga saya hanya mencetak satu titik
di bagian bawah itu.
>> Apa yang harus saya tulis dalam hal ini untuk loop sekarang?
Yah, pertama-tama apa variabel yang harus saya gunakan?
>> SPEAKER 24: j.
>> BRIAN SCASSELLATI: Saya bisa menggunakan j.
Dapatkah saya menggunakan satu sama?
Dapatkah saya menggunakan saya lagi?
Ya.
Itu OK, karena Is bahwa saya menggunakan di sini,
Aku tidak membutuhkan mereka lagi ketika Aku turun ke titik ini.
>> Jadi apa yang harus saya menginisialisasi saya ke?
SPEAKER 25: 10.
BRIAN SCASSELLATI: 0.
Apa yang harus saya cek?
Berapa banyak titik-titik yang harus saya sekarang di akhir jika saya punya dua titik di awal?
Aku butuh delapan di akhir, jadi apa harus saya cek, saya kurang than--
>> AUDIENCE: Tujuh, delapan, sembilan.
BRIAN SCASSELLATI: Aku mendengar tujuh.
Aku mendengar delapan.
Dan aku mendengar sembilan.
OKE.
Jadi kita semua di kanan ball-- Jason mengatakan 10.
OKE.
>> Jika saya perlu dua titik untuk yang pertama, berapa banyak melakukan
Aku-- dan saya perlu delapan titik untuk lalu satu-- Aku meletakkan dua di atas,
apa yang harus saya meletakkan di bawah ini?
>> AUDIENCE: Delapan.
>> BRIAN SCASSELLATI: Delapan.
Karena itu akan menghitung nol melalui tujuh.
Dan itu delapan kali melalui loop.
OKE.
Dan apa yang harus saya lakukan di akhir?
>> AUDIENCE: i ++.
>> BRIAN SCASSELLATI: i ++.
Baiklah.
Sehingga tampak cukup baik di sana.
Mari kita coba dan mari kita lihat apa yang dilakukannya.
OKE.
Jadi kita akan menyimpannya.
Bagus dan disimpan.
>> Kami akan tampilannya kembali keluar.
Kami akan mencoba di sini di terminal.
Kami akan memperbesar.
Ups.
Kami akan, sekali lagi, membuat program kelinci kami.
Dan pergi ke depan dan mengeksekusi kelinci.
Dan ada itu.
>> Jadi ada kelinci kami.
Di mana ia memiliki dua titik di awal dan delapan titik keluar di akhir.
Semua orang masih dengan saya?
OKE.
>> Jadi kami membangun itu.
Kami membangun satu kelinci, satu frame tertentu.
Sekarang kita sudah bisa generalisasi bahwa untuk membangun
lebih, berbagai jenis frame.
>> Sekarang mari kita pergi ke depan, dan memiliki itu menghasilkan tidak hanya satu frame,
tapi mari kita menghasilkan 10 frame, di mana kita perlahan-lahan
membuat kelinci memindahkan semua jalan melintasi lapangan.
Baiklah.
>> Ayo kembali.
Dan kami akan mencoba sekarang.
Jadi apa yang saya benar-benar perlu mengubah di sini?
Apa yang harus saya ubah?
>> SPEAKER 26: Anda harus terlebih dahulu mengubah jumlah maksimum titik
pada awalnya.
Karena jika kita melakukan 10 titik, itu akan perlu untuk skala.
BRIAN SCASSELLATI: Ya.
Jadi sekarang saya memilikinya semacam tertanam untuk selalu melakukan dua titik di awal
dan selalu melakukan delapan titik di akhir.
>> Saya ingin membangun loop lain, kan?
Karena saya tidak ingin membangun hanya satu gambar kelinci,
Saya ingin membangun 10 gambar kelinci.
Jadi saya perlu untuk membangun lingkaran lain, dan saat aku pergi melalui lingkaran itu,
Saya ingin mengubah berapa banyak titik saya mencetak di awal
dan berapa banyak titik saya mencetak di akhir, berdasarkan yang siklus melalui loop
Saya di.
Baiklah.
>> Jadi mari kita kontra lain.
Seseorang sebelum mengatakan j, jadi kita akan membuat j lain.
Dan sekarang, kita akan membangun yang lain untuk loop.
>> Apa yang terjadi di dalam lingkaran itu?
Hal ini harus pergi dalam loop, kan?
Apakah kelinci memiliki masuk ke dalam loop?
Apakah saya perlu kelinci di masing-masing 10 frame?
>> AUDIENCE: Uh-huh.
BRIAN SCASSELLATI: Ya.
Saya ingin kelinci di setiap dari 10 frame, kan?
Bagaimana dengan titik di akhirnya, perlu saya itu?
OKE.
>> Jadi aku akan indent mereka semua.
Aku akan menyoroti semua ini, dan aku akan memukul Tab.
Dan itu akan mendorong mereka seluruh sedikit, sehingga mudah bagi saya
untuk melihat apa yang ada di loop.
Dan kemudian aku akan mengakhirinya.
Katakanlah.
OKE?
>> Sekarang, dalam lingkaran ini yang Aku building-- whoops,
membuat sehingga Anda dapat see-- Aku punya meja saya j.
Saya akan memulainya pada 0.
Berapa kali saya ingin untuk pergi melalui loop ini?
AUDIENCE: 10 kali.
BRIAN SCASSELLATI: 10 kali.
Jadi apa nomor yang harus saya masukkan di sini?
>> AUDIENCE: 9, 10.
>> BRIAN SCASSELLATI: 9, 10, harus ada yang mengatakan 11, kan?
Saya ingin dua titik sebelum dan menempatkan saya kurang dari 2.
Saya ingin delapan titik, Aku meletakkan saya kurang dari 8.
Sekarang saya ingin pergi melalui 10 kali, jadi aku meletakkan j kurang than--
>> AUDIENCE: 10.
>> BRIAN SCASSELLATI: 10.
Di sana kami pergi.
Dan apa yang harus saya lakukan pada akhir untuk j?
++, Kenaikan itu.
OKE.
Sekarang, inilah bagian yang sulit, apa akan terjadi sekarang jika saya melakukan ini?
Apakah aku akan mencetak 10 frame?
SPEAKER 27: saya pikir mereka semua akan sama.
BRIAN SCASSELLATI: Mereka akan semua sama, kan?
Karena semua dari mereka masih akan untuk menempatkan dua titik di awal.
Tapi aku tidak ingin mereka semua untuk memiliki dua titik awal.
Berapa banyak titik-titik yang saya ingin di awal?
>> AUDIENCE: Mengubah.
>> BRIAN SCASSELLATI: Saya ingin berubah, kan?
Jadi apa yang saya miliki di sini yang berubah setiap kali loop melewati?
>> AUDIENCE: Jumlah titik, j.
BRIAN SCASSELLATI: j, jumlah titik.
Jadi saya bisa mengubah ini menjadi j.
Pertama kali melalui lingkaran, apa yang akan terjadi?
Apa yang harus saya set j ke pada awalnya?
>> AUDIENCE: 0.
>> BRIAN SCASSELLATI: Jadi berapa banyak kali saya akan melakukan ini?
0.
Kedua kalinya melalui loop, j akan menjadi 1 karena saya kenaikan itu.
Berapa banyak titik-titik yang akan saya cetak?
1.
Ketiga kalinya melalui loop, berapa banyak titik-titik yang akan saya cetak?
>> AUDIENCE: Tiga.
BRIAN SCASSELLATI: j akan menjadi 3.
Berapa banyak titik-titik yang akan saya cetak?
Oh, maaf, j akan menjadi 2.
Berapa banyak titik-titik yang akan saya cetak?
>> AUDIENCE: 2.
>> BRIAN SCASSELLATI: 2.
OK, jadi aku akan terus incrementing bahwa ketika kita pergi bersama.
Bagaimana di bawah?
Apa yang terjadi di sini?
Saya tidak ingin selalu 8 pada akhir lagi?
>> SPEAKER 28: 10.
BRIAN SCASSELLATI: Saya ingin 10 titik?
Saya ingin mengubah, juga.
Jadi bagaimana saya ingin berubah?
>> AUDIENCE: [tidak terdengar].
BRIAN SCASSELLATI: Yah, kalau aku memiliki lima titik di awal,
berapa banyak titik ini saya mendapatkan di akhir?
>> AUDIENCE: Lima.
>> BRIAN SCASSELLATI: Jika saya memiliki enam titik di awal,
berapa banyak yang saya dapatkan di akhir?
AUDIENCE: Empat.
BRIAN SCASSELLATI: Jika saya punya tujuh titik di awal,
berapa banyak yang saya dapatkan di akhir?
AUDIENCE: Tiga.
BRIAN SCASSELLATI: Jika saya sudah mendapat titik j di awal,
berapa banyak yang saya dapatkan di akhir?
10-j.
OKE.
Jadi mari kita mencoba yang keluar.
>> Jadi aku akan menyimpan program kelinci kami.
Sekali lagi kita akan zoom out.
Kami akan pergi ke terminal kami.
Kami akan menghapus itu.
Dan memperbesar.
Kami akan membuat program kelinci kami, lagi.
Dan kami akan melaksanakannya.
Uh oh.
>> Tunggu, mari kita zoom out.
Apakah saya mendapatkan 10 frame?
Nah, berapa banyak kelinci saya melihat di sana?
1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
Saya punya 10 frame.
Apakah mereka semua sama?
AUDIENCE: Ya.
Tidak.
>> BRIAN SCASSELLATI: No.
Itu yang pertama, kelinci jauh di sebelah kiri.
Dan di sini, kelinci ini jauh di
SPEAKER 29: Kanan.
BRIAN SCASSELLATI: Jadi, apa yang aku lupa lakukan?
SPEAKER 30: Memulai baris baru.
BRIAN SCASSELLATI: Saya lupa untuk memulai baris baru, lagi.
Kesalahan yang sama saya dibuat sebelumnya.
Baiklah, mari kita pergi memperbaikinya.
Sekarang, aku masih punya kode di sana untuk membuat baris baru.
Mengapa hal tersebut tidak bekerja?
SPEAKER 31: Ini bukan dalam lingkaran.
BRIAN SCASSELLATI: Oh, itu bukan dalam lingkaran.
Betul.
Ini duduk di luar sini.
Dan untuk loop adalah segalanya yang ada di dalam teks itu.
>> Jadi aku akan pindah ini di dalam untuk loop.
Dan aku akan Tab di depannya untuk menunjukkan bahwa itu di tempat yang tepat.
Dan sekarang, kami akan menyimpannya lagi.
Kami akan zoom out.
Kami akan beralih ke terminal kami.
Memperbesar.
Kami akan remake Program kelinci kami.
Dan sekarang, sekarang kita punya 10 frame kami.
>> [Bertepuk]
>> BRIAN SCASSELLATI: OK.
So.
Berikut adalah kami bersarang untuk loop.
Kami mampu menghasilkan dalam loop batin berapa banyak titik saya ingin
untuk mencetak di awal, di akhir.
Dan loop luar dikendalikan berapa banyak frame aku sedang membangun.
Kami mulai dengan satu sedikit kernel dari masalah,
dan kami dibangun dari titik itu.
Baiklah.
>> Mari kita lakukan satu langkah lagi.
Anda siap?
Ada satu hal di sini di mana kita sudah benar-benar jenis mendapat
kompleksitas dari yang kita butuhkan.
Mari lihat.
Jadi dalam program kelinci kami, jika saya tampilannya sini,
Aku benar-benar melakukan beberapa hal yang sama Hal berulang-ulang.
Apa yang harus saya lakukan itu semacam hal yang sama diulang dua kali?
>> SPEAKER 32: Mencetak titik-titik.
>> BRIAN SCASSELLATI: Ya Saya mencetak titik-titik dua kali.
Sungguh, aku harus memiliki komentar ini di sini.
Saya mencetak beberapa titik di mulai, sampai di sini.
Dan kemudian saya mencetak beberapa titik di akhir.
Dan saya lakukan semacam hal yang sama.
Apa yang kita akan mulai bekerja pada di beberapa minggu ke depan
adalah mampu mengambil orang-orang blok Kode yang kita gunakan berulang-ulang,
dan melalui proses disebut abstraksi,
kita akan menarik mereka keluar dan tulis mereka sekali sehingga kita kemudian dapat
menggunakan kembali mereka lagi dan lagi.
Jadi mari kita coba itu.
Siap?
>> Kita akan mengambil blok kode.
Dan aku akan membawanya keluar dari sana.
Dan aku akan define-- turun di bagian bawah,
Aku akan menulis fungsi baru.
Ini tidak akan kembali apa-apa.
Dan aku akan menyebutnya printDots.
>> Ini akan mengambil satu argumen, integer yang
mengatakan howManyDots saya harus mencetak.
Dan sekarang bukannya mencetak titik j, aku akan mencetak memberitahu howManyDots saya harus mencetak.
>> Dan ada satu masalah kecil di sini.
Siapa tahu apa itu?
Apa yang harus saya yang terdaftar di sini yang tidak didefinisikan?
>> AUDIENCE: [tidak terdengar]
>> BRIAN SCASSELLATI: Nah bagaimana banyak titik didefinisikan tepat
di sini, tapi saya menggunakan variabel i.
Jadi saya akan mengambil variabel yang saya dan aku akan menentukan itu di sini
sebagai gantinya.
>> Jadi sekarang itu akan stay-- oops, mendapat caps lock pada somehow-- Saya
akan terus saya turun di sini.
>> Jadi sekarang inilah fungsi kecilku atau sub-rutin, dan ia mengatakan,
berapa banyak titik-titik yang akan saya cetak?
Dan itu akan pergi melalui lingkaran ini dan mencetaknya berulang-ulang.
>> Saya kemudian dapat memodifikasi program saya di sini.
Dan apa yang saya sebut fungsi itu?
printDots.
Jadi saya akan menelepon printDots.
Berapa banyak titik-titik yang saya ingin mencetak pertama kali sebelum kelinci?
AUDIENCE: j.
BRIAN SCASSELLATI: j.
Berapa banyak titik-titik yang saya ingin mencetak pada akhir, setelah kelinci?
10-j.
>> Dan ada satu hal yang saya hilang.
Seperti yang Anda lihat di kuliah ini, kita akan mendeklarasikan printDots
di atas untuk memberikan prototipe.
OKE.
>> Jadi apa yang saya lakukan adalah saya sudah mencoba untuk mengisolasi yang digunakan kembali bagian dari kode
bahwa saya telah melakukan berulang-ulang.
Dan saya sudah mencoba untuk menariknya keluar sehingga semua yang terkandung dalam satu tempat.
Dengan begitu, jika saya memiliki kesalahan di suatu tempat, Saya hanya perlu memperbaikinya di satu tempat.
Baiklah.
>> Jadi mari kita simpan.
Dan mari kita pastikan bekerja.
Jadi mari kita pergi keluar.
Kami akan pergi lagi ke terminal kami.
Kami akan memperbesar.
Kami akan membuat proses kelinci.
>> Oh.
Dan itu memberi saya peringatan.
Apa itu memberitahu saya?
Nah di salah satu dari kali, Anda selalu ingin
untuk menggulir ke atas ke error-- pertama sekarang yang satu ini, saya hanya punya satu.
>> Ia memberitahu saya di bunny.c, on line 8, kolom 9, ada masalah.
Ia mengatakan, Anda telah menyatakan ini variabel i dan Anda belum menggunakannya.
>> Sekarang biasanya, itu tidak kesalahan terburuk.
Itu yang mudah untuk memperbaiki.
Dan pada kenyataannya, kita bisa kembali.
Kita bisa kembali ke kelinci.
Dan dalam hal ini, semua kita harus lakukan adalah menyingkirkan saya,
karena kita tidak menggunakan i dalam utama lagi.
Kami hanya menggunakannya dalam sub-rutin kami.
>> Jadi mari kita simpan itu.
Kami akan kembali.
Dan memperbesar.
Kami akan sekali lagi membuat kelinci.
Dan ada lagi yang 10 frame kami.
OKE.
>> Setiap kali Anda diberi sebuah procedure-- Ya.
SPEAKER 33: Saya memiliki a-- aku bingung.
Anda dapat kembali ke kode?
BRIAN SCASSELLATI: Yep.
>> SPEAKER 33: Jadi, ketika Anda menulis prototipe Anda, argumen Anda
telah itu bernama disebut HowMany?
Tapi, below--
>> BRIAN SCASSELLATI: Oh yeah.
>> SPEAKER 33: --called mereka sesuatu berbeda, saya tidak mengerti.
>> BRIAN SCASSELLATI: Mengapa mereka berbeda.
Jadi itu pertanyaan besar.
Jadi pertanyaannya adalah, naik di sini, saya menulis HowMany,
dan di bawah, saya menulis howManyDots.
>> Alasannya adalah bahwa dalam prototipe Anda, itu benar-benar tidak memperhatikan
untuk nama-nama yang Anda meletakkan di.
Semua itu benar-benar peduli tentang adalah bahwa hal itu integer.
Ia ingin tahu bentuk dari apa yang Anda menempatkan di.
>> Sekarang stylistically-- oops-- apa yang saya harus lakukan, adalah saya ingin membuat pertandingan ini.
OKE.
Karena itu akan tetap lebih mudah bagi saya untuk mengingat.
Tapi itu adalah kesalahan saya Ya.
>> SPEAKER 34: Dan untuk prototipe untuk bekerja, hanya
menulis baris itu, menulis prototipe,
memungkinkan bahwa fungsi yang datang tepat di bawah ini untuk pergi ke akhir
dan mengambil apa artinya?
>> BRIAN SCASSELLATI: Apa artinya adalah ketika compiler berjalan melalui,
ia pergi dari atas kode Anda ke bawah.
Dan apa prototipe ini, adalah pada dasarnya sebuah janji.
>> Ia mengatakan, ada akan menjadi fungsi didefinisikan di suatu tempat.
Ini akan menjadi yang disebut printDots.
Dan itu akan mengambil satu argumen yang akan menjadi integer
dan itu akan kembali tidak ada, batal jenis.
OKE.
Aku berjanji itu akan menjadi didefinisikan suatu tempat di jalan.
Tetapi setiap kali Anda melihat itu, semakin ke bawah
melalui sisa saya Fungsi utama, saya ingin
Anda memperlakukan bahwa sebagai fungsi yang mengambil satu input integer.
>> Dan jadi ketika compiler turun melalui ini, ia melihat janji itu.
Dan ketika itu akan turun, terus terjadi, terus terjadi,
ia menemukan pertama kalinya printDots disebutkan.
Dan mengatakan, Oh, Anda memberikan saya j ini. j adalah integer.
>> Baik Anda berjanji bahwa akan bilangan bulat dan itu benar.
Tidak apa-apa.
Dan akhirnya, turun di bagian paling bawah,
sebelum saya sampai ke akhir saya File, saya membuat baik pada janji saya
dan saya mendefinisikannya.
OKE?
>> SPEAKER 35: Jadi, itu yang saves-- Program akan menghemat ruang kosong
bahwa itu akan kembali dan mengisi di akhir?
>> BRIAN SCASSELLATI: Ini tidak tentang alokasi memori.
Ini sebenarnya hanya tentang apa Jenis yang Anda mengharapkan untuk melihat.
Harus hal ini memiliki satu argumen, atau lima argumen?
Harus memilikinya bilangan bulat menjadi diberikan untuk itu, atau string?
Itu semua itu tampak lakukan adalah untuk memeriksa,
yang Anda memberi saya yang tepat argumen.
OKE?
Baiklah.
>> Mari saya meninggalkan Anda dengan satu bit lain untuk melihat.
Seni ASCII tidak model besar animasi seperti saat ini.
Tetapi beberapa orang tentu saja mengambil hal-hal dan mereka mendorong ke ekstrem mereka.
>> Hal ini, seperti yang ditunjukkan David dalam kuliah, sepotong kode
bahwa Anda harus dalam keadaan mencoba untuk menduplikasi diri.
Karena itu mengerikan Gaya.
Bahkan, ia dirancang untuk menjadi seperti sesulit mungkin untuk membaca.
OKE.
>> Jadi, untuk melakukan lagi, mari kita memperbesar sini.
Aku akan pergi sekarang, direktori perubahan.
Aku akan naik satu tingkat, kembali ke ruang kerja saya.
Saya kemudian akan mengubah direktori ke ini direktori lain yang saya buat.
>> Dan ini adalah International Dikaburkan C Programming Contest.
Cara dikaburkan sekeras mungkin untuk memahami.
Jadi tolong, jangan takut jika Anda melihat ini dan pergi, saya tidak bisa membaca itu.
Itulah titik itu.
OKE?
>> Tapi, kita harus ini Program indah bahwa aku
akan melihat dengan hanya mengetik lebih.
Dan mari kita lihat apakah saya bisa zoom out hanya sedikit, sehingga Anda dapat melihatnya
>> Dan ini adalah program.
Itu bernama endo.c.
Dan sepertinya ember ini dengan jenis huruf F-L-U-I-D di dalamnya.
>> Ini sebenarnya sebuah program.
Ini ditulis dalam paling jelas cara yang penulis mungkin bisa
menulis itu.
Tapi itu sepotong kecil yang indah yang menghasilkan model dinamika fluida.
>> Dan jadi kita akan memberikan bahwa model input yang
terlihat seperti ini, dari staired set kontainer
dengan beberapa cairan, beberapa cair, di bagian atas.
Dan kita akan memilikinya mensimulasikan apa yang terjadi untuk itu.
>> Jadi saya akan memanggil fungsi itu, endo.
Dan saya akan memberikan yang masukan file yang aku punya.
Dan ada lambang kami seni ASCII.
Sebuah simulator dinamis cairan penuh berjalan hanya dalam beberapa baris kode.
>> Sekarang apa sebenarnya sangat menakjubkan tentang program kecil ini
adalah bahwa saya ingin berhenti sekarang, jadi saya akan menggunakan perintah apa?
>> AUDIENCE: Control-C.
>> BRIAN SCASSELLATI: Control-C. OKE.
Jadi saya akan menggunakan Control-C. C itu akan menghentikannya.
Aku akan membersihkan lagi.
Dan sekarang aku akan memanggil Program, mengeksekusi program,
menggunakan dirinya sebagai masukan.
>> Dan kita akan melihat dinamika fluida simulasi itu mencair.
OKE.
Jangan biarkan program yang menjadi hal yang membingungkan Anda.
Ini hanya agar kita dapat berakhir pada sesuatu yang keren dan menarik.
OKE.
>> Terbaik keberuntungan dengan set masalah Anda.
Kami akan dengan senang hati menjawab pertanyaan setelah kelas.
Terima kasih banyak, guys.