[Powered by Google Translate] DAVID Malan: Ini adalah CS50, dan ini adalah awal dari Minggu 1.
Apa yang kami pikir kami akan lakukan hari ini adalah melihat kembali pada
sesuatu yang banyak dari Anda mungkin berjalan melewati beberapa
waktu sekarang dan mungkin terlihat sedikit akrab.
Ini hal di sini, ini tentu saja adalah di -
HADIRIN: Sains.
DAVID Malan: Science center.
Jadi ini sebenarnya adalah salah satu komputer awal
kembali dari tahun 1940-an.
Itu adalah salah satu komputer elektromekanis pertama
yang mampu sangat panjang,
mandiri perhitungan, dan apa yang sebenarnya kita lihat di
pusat ilmu hanya sepotong kecil dari hal ini.
Apa yang kami pikir kami akan lakukan adalah melihat kembali video
yang dibuat beberapa waktu lalu, memperkenalkan ini
hal kepada dunia.
Dan Anda akan melihat dari musik dan suara yang memang mereka
saat-saat yang sangat bahagia.
>> [PEMUTARAN VIDEO]
-Sebuah kemenangan keterampilan matematika dan mekanik ini
besar kalkulator otomatis baru di Harvard University.
Masalah rumit dalam matematika, dimasukkan melalui
mesin dalam bentuk kode pada tape, secara akurat diselesaikan dalam
fraksi menit dari waktu yang diperlukan bagi manusia
perhitungan.
Dirancang untuk mempercepat segala bentuk matematika dan ilmiah
penelitian, otak mekanik raksasa akan bekerja untuk Amerika
Serikat Navy sampai akhir perang.
>> DAVID Malan: Jadi apa yang Anda mungkin tidak tahu adalah bahwa itu di
ini perangkat yang sama bahwa istilah kita semua sekarang mengambil cukup banyak
untuk diberikan diciptakan, bahwa dari bug.
Jadi salah satu insinyur yang bekerja di komputer ini
harfiah menemukan ngengat kecil di mesin yang mengakibatkan
dalam beberapa perhitungan yang salah.
Dan sebagai ceritanya ngengat yang ditempelkan ke log ini
jurnal sini, kembali sejak tanggal 9 September tahun 1940-sesuatu,
dan dengan demikian lahir bagi dunia yang "bug" panjang.
Jadi selanjutnya kita mempertimbangkan bug akan ada semacam kesalahan dalam
program, apakah buatan manusia atau, dalam hal ini, serangga.
>> Jadi beberapa pengumuman, seperti yang kita lanjutkan.
Jadi CS50 memiliki tradisi menawarkan makan siang macam pada
sebagian Jumat selama semester, di mana kita mengambil 30 sampai
40 siswa untuk Fire and Ice di alun-alun untuk santai
basa-basi, berbicara tentang ilmu komputer,
bicara tentang masa depan.
Kami mengundang alumni dan teman-teman dari industri untuk chatting up
siswa juga.
Benar-benar menuju akhir membuat apa kelas cukup besar
semua lebih intim, setidaknya sekali dalam sementara untuk
subset dari siswa.
Jadi jika Anda ingin bergabung dengan kami hari Jumat ini, PM 1:15, pergi ke
CS50.net/lunch untuk RSVP.
Dan kita akan melakukan ini recurringly, jadi tidak perlu khawatir jika Anda tidak
antara 30 pertama atau minggu ini.
>> Jadi catatan juru tulis.
Sebuah kata pada sumber daya yang sekarang akan mulai menjadi tersedia
kepada siswa di kelas.
Sehingga kepala Anda tidak perlu turun selama kuliah
menulis ke semua yang saya katakan dan sebagainya, apa yang kita lakukan
malah menyediakan dari staf pengajar yang
kanonik set catatan.
Jadi kita memiliki salah satu dari rekan-rekan mengajar kami, Andrew Sellergren,
yang duduk setiap minggu, ulasan video, dan kemudian
menuliskan apa yang kita pikirkan adalah cukup
otoritatif set catatan.
Dan Andrew sayang, juga, menempatkan catatan kaki di snarky
bagian bawah.
Jadi mudah-mudahan Anda akan menikmati ini sebagai buku referensi untuk
menyenangkan, dan juga, datang kuis waktu, sebagai kesempatan untuk meninjau
apa yang terjadi di kuliah individu.
Jadi mereka dihubungkan pada halaman kuliah.
>> Soal set 0, sementara itu, keluar.
Dan dalam hal sumber daya yang tersedia untuk Anda -
walkthrough.
Milo memimpin pertama pada hari Jumat.
Itu difilmkan, dimasukkan online pada hari Sabtu.
Dan begitu menyadari, jika Anda tidak benar-benar yakin di mana untuk memulai,
untuk ini atau masa depan p-set, selalu giliran pertama untuk
walkthrough atau daripadanya video.
Sectioning sedang berlangsung, di cs50.net/section adalah di mana Anda
harus mengirimkan preferensi Anda, jika Anda belum
sudah, dengan hari ini.
Karena bagian ini akan dimulai Minggu mendatang, Senin,
dan Selasa.
Kami melakukan bagian tiga hari, setiap minggu dari
semester untuk sebagian besar.
Dan kami juga memperkenalkan, sekali lagi, trek yang berbeda.
Jadi, Anda akan diminta pada formulir sectioning, jika Anda
belum melihat sudah, jika Anda berada di antara mereka yang kurang
nyaman, lebih nyaman, atau di suatu tempat di antara.
Dan jika Anda semacam di pagar, umumnya di suatu tempat di
antara yang sebagian besar siswa akhirnya memeriksa.
Jam kantor dimulai malam ini.
>> Jadi Scratch adalah kunci cukup rendah, meskipun itu cukup alami
untuk menjalankan ke berbagai bug, atau menjadi tidak yakin bagaimana untuk
melaksanakan sesuatu.
Jadi menyadari bahwa kita akan mulai jam kerja minggu ini.
Mereka akan berada di Annenberg Senin, Selasa, Rabu,
Kamis, 20:00-11:00 selama istirahat otak.
Classmen atas dapat masuk, dan jika Anda pernah mengalami kesulitan mendapatkan
di pintu, karena mereka akan menggesekkan, hanya bicara jalan
dalam dan menjelaskan Anda dengan CS50.
Biasanya 20 sampai 30 dari kita pada staf akan berada di sana untuk membantu
Anda satu-satu.
>> Setibanya ide adalah ini: Anda akan membawa laptop Anda,
Anda akan memiliki charger Anda, kita akan memiliki kabel listrik tambahan,
terutama di sepanjang dinding selatan dari Annenberg mana
ada banyak outlet listrik.
Dan titik masuk utama ke kantor jam Q & A adalah pergi ke
cs50.net/discuss dan untuk mengirim
pertanyaan Anda di sana.
Dan untuk label dengan pset 0 atau 1 pset, apapun minggu
mungkin akan terjadi.
Dan kemudian apa yang akan kita lakukan adalah memiliki tabel fellows pengajaran
dan tentu saja asisten, umumnya 8 atau 10 atau lebih dari kita,
akan melalui, menjaga pengawasan yang ketat di papan tulis, dan
memetik off pertanyaan benar-benar secepat kami bisa,
Anda merujuk ke posting terkait jika Anda belum menemukan orang-orang
dirimu, referensi online, yang sesuai.
Dan kemudian jika ada masalah, karena ada pasti
akan, atau hanya lebih masuk akal untuk duduk satu lawan satu,
bekerja melalui masalah dengan seseorang.
>> Atau Anda hanya datang ke kantor jam benar-benar
membutuhkan pola pikir itu.
Anda tidak ingin pergi melalui bentuk elektronik, Anda
benar-benar ingin bertemu dengan seseorang.
Berkomunikasi itu kepada kami, dan apa yang akan terjadi adalah ketika Anda
Pertanyaan telah dilihat oleh anggota staf, dan kami
menentukan, yup, ini harus dikirim ke salah satu dari 20 atau
Anggota tim 30 di sini secara lokal, Anda akan melihat di bagian atas kiri ini
Masukkan sedikit tombol Antrian mulai berkedip pada cs50.net /
diskusikan.
Dan ini memberitahu Anda bahwa Anda sekarang telah diundang, sehingga
untuk berbicara, untuk masuk antrian.
Dan dengan mengklik tombol itu, nama Anda akan muncul di
iPad bahwa penyambut CS50, salah satu kepala kursus ini, akan
akan memegang dekat pintu masuk Annenberg, yang kemudian akan
lihat seperti yang digambarkan di sini, siswa yang memiliki pertanyaan tentang
kiri, anggota staf yang hadir di sebelah kanan.
Dan dengan klik kiri dan kanan, browser web Anda akan
mulai berkedip secepat, misalnya, Profesor McGonnagal
siap untuk melihat Anda di meja tertentu di Annenberg.
>> Jadi kami melakukan beberapa tahun terakhir ini.
Kami telah reboot jam kantor dan
kembali dilaksanakan banyak perangkat lunak.
Jadi menyadari bahwa ini akan menghangatkan minggu ini.
Tetapi juga menyadari juga, dalam beberapa tahun terakhir, karena Anda mungkin telah mendengar
dari teman, jam kantor harus memang untuk 50
150 siswa sekaligus.
Dan itu sama sekali tidak mungkin bagi kita untuk mengatasinya
efektif, satu lawan satu, sepanjang malam.
Dan jadi apa yang kita benar-benar akan mencoba untuk melakukannya tahun ini
memanfaatkan fakta bahwa banyak pertanyaan yang
sering diajukan dan sering dapat lebih baik dijawab
asynchronously.
Jadi Anda dapat semacam memikirkan respon staf,
dan kita bisa berpikir melalui kode Anda, tanpa dipanaskan
tekanan harus berjuang
melalui itu berdampingan.
Jadi kami memperkirakan bahwa sekitar sepertiga atau setengah dari pertanyaan
akan dikirim secara langsung, dan kami akan mencoba memetik off
sebanyak setengah atau lebih secara elektronik,
selama jam kerja.
Dan kita akan terus menggunakan Diskusikan
sepanjang minggu juga.
>> Dan terakhir, menyadari bahwa kursus ini bisa diambil lulus / gagal.
Jadi jika Anda berada di pagar atau hanya berpikir bahwa Anda benar-benar
tidak yakin apakah ini adalah dunia untuk Anda, atau ini benar-benar
cukup asing bagi Anda, menyadari bahwa ini adalah cara yang indah
untuk mendapatkan beberapa kepercayaan diri yang dapat digunakan untuk masuk ke
kelas, seperti yang kulakukan terus terang, tahun lalu.
Dan kemudian memiliki lima minggu untuk semacam angka keluar untuk
sendiri jika Anda ingin tinggal lulus / gagal, beralih ke surat
kelas, atau sejenisnya.
Dan biasanya apa yang lulus / gagal tidak, saya pikir, bagi siswa adalah
bahwa, jika Anda masukkan ke dalam bahwa 10 jam, 20 jam, apa pun
mungkin pada beberapa masalah, dan Anda membenturkan kepala Anda
dinding,
dan Anda benar-benar tidak bisa mengejar sesuatu, dan Anda
memiliki begitu banyak hal lain yang perlu Anda lakukan, jujur, apa yang saya
berpikir lulus / gagal adalah, dibutuhkan tepi off
situasi seperti itu.
Di mana Anda telah mengambil hal 90% dari jalan.
Kau tahu, itu tidak cukup sempurna.
Tapi Anda mendapat banyak dari itu, tetap.
Jadi pertimbangkan lulus / gagal sebagai memberikan Anda bahwa
Model jiwa, mungkin.
>> Sepanjang minggu, kanan sehingga lalu kami terjun ke Scratch, dan kami
berbicara tentang pemrograman pada tingkat grafis yang cukup tinggi.
Dan hari ini kita membuat transisi ke bahasa
disebut C, tingkat yang lebih rendah bahasa pemrograman di atas
yang bahasa modern sekarang banyak dibangun, termasuk beberapa
dari orang-orang yang akan kita gunakan menjelang akhir masa itu.
Dan sintaksis, apa yang mereka terlihat seperti
adalah semua sangat mirip.
Jadi mari kita mulai untuk membuat transisi ini di sini.
Jadi ini adalah program minggu lalu yang paling sederhana
halo program dunia.
Ini hanya dicetak ke dunia layar halo, dengan
gelembung pidato sedikit keluar dari kucing.
Nah, jika kita mulai sekarang untuk menerjemahkan ini ke yang lain
bahasa, menyadari bahwa ide-ide hari ini dan pada Rabu
adalah identik, tetapi sintaks mulai berubah.
Jadi sementara pekan lalu kita punya, saat bendera hijau diklik, katakanlah
halo dunia.
Hari ini kita akan memiliki int, utama, batal, printf,
kembali, dengan beberapa sintaks lainnya di sana juga.
Curly kawat gigi, dan tanda kurung, dan tanda kutip, dan yang lainnya.
Tapi menyadari bahwa inti dari ide di sini adalah pencetakan,
dan akhirnya kenyataan bahwa utama sekarang akan
identik dengan awal program.
Main akan menjadi mana bendera hijau kicks hal off.
>> Jadi sekarang mari kita menggoda selain beberapa blok bangunan di sini
sebelum kita menyelam ke beberapa contoh konkret.
Jadi kita disebut minggu ini pernyataan terakhir, dimana itu hanya
sebuah instruksi.
Lakukan ini - dalam kasus ini, mengatakan bahwa dunia halo.
Nah di C, jika kita melihat hanya baris tersebut, ini adalah bagaimana kita
akan mulai menyatakan bahwa potongan puzzle tertentu:
printf ("hello world");.
Dan sekarang kita akan menggoda ini selain lebih dan lebih dari waktu ke waktu,
tapi menyadari bahwa ada pola di sini.
Jadi satu, kita memiliki hal ini disebut printf, yang
dasarnya analog dengan kata Say.
Itulah apa yang akan dilakukannya.
Printf, dan f di sini berarti "diformat".
Jadi itu hanya berarti Anda dapat menyisipkan
rincian estetika berbagai.
Jadi tanda kutip kutipan adalah awal dari apa yang akan kita
untuk mulai memanggil string.
Sebuah kata, frasa, kalimat.
Sebuah string dalam bahasa pemrograman adalah urutan nol
atau lebih karakter.
Jadi h-e-l-l-o, koma, dan sebagainya adalah,
kutipan tanda kutip, string.
Dan sekarang backslash n, sintaksis agak aneh, tapi kami
sudah didefinisikan bahwa pekan lalu sebagai makna apa?
Ini hanya baris baru.
Ini hanya cara menyampaikan ke komputer Anda ingin
setara dengan memukul Masukkan sana, tetapi Anda tidak
ingin benar-benar tekan Enter dan karena itu mengacaukan semua
format dari program Anda yang sebenarnya.
Sekarang kurung melampirkan string ini, terbuka paren dan
paren dekat, dan dalam itu adalah string kita.
Karena itulah karena di C, dan pemrograman lainnya
bahasa, hal-hal seperti printf mengambil argumen, atau mengambil
parameter.
>> Jadi mulailah berpikir sekarang ini blok Say ungu sebagai
fungsi, sebagai metode, sebagai prosedur.
Anda benar-benar dapat menyebutnya apa pun yang Anda inginkan untuk saat ini, namun
itu semacam program miniatur yang hanya melakukan satu
hal, dalam satu baris, tidak kurang.
Jadi printf juga apa yang kita akan mulai memanggil
fungsi, dan fungsi melakukan sesuatu - dalam hal ini
mencetak string diformat ke layar -
tapi fungsi juga mengambil argumen atau parameter.
Dan dengan argumen atau parameter, terima kasih, kami maksud
bahwa perilaku mereka dapat dipengaruhi oleh apa yang Anda lulus dalam
dalam tanda kurung.
Jadi dalam hal ini, kebutuhan printf diberitahu apa yang harus dicetak, dan kami
hanya lulus dalam, dalam tanda kutip ganda di sini, string yang kita
sebenarnya ingin mencetak.
Dan titik koma di akhir baris ini hanya
gangguan sejarah dimana pada akhir baris paling kode,
Anda menempatkan titik koma untuk membuat super jelas ke komputer
bahwa baris kode berakhir di sini.
Sekarang ini baik karena seperti yang kita akan lihat sebagai program mendapatkan lebih
kompleks, titik koma akan membuat manusia jelas bagi kita super,
dan juga komputer, di mana garis start kode dan akhir.
Sadarilah bahwa beberapa bahasa tidak memiliki beberapa
ini rincian yang sama.
Dan pada kenyataannya, dalam JavaScript, Anda tidak selalu membutuhkan sesuatu
seperti titik koma.
Tetapi lebih pada untuk datang.
>> Jadi loop.
Kami memiliki sesuatu seperti ini, sangat intuitif, jelas, lakukan
sesuatu lagi dan lagi dan lagi.
Seperti mengenakan kaus kaki, atau menyapa, dalam kasus ini.
Nah, mulai hari ini di C, kita bisa mengekspresikan Scratch ini
blok sebagai sementara (benar) printf ("hello world").
Jadi perhatikan kita mulai membangun harfiah teka-teki
sepotong dari sebelumnya.
Kami memiliki blok yang sama ungu, tapi dalam hal ini
tanda kurung Selamanya blok, dan cara terbaik untuk menerjemahkan
ke C adalah sebagai berikut.
Tidak ada kata kunci Selamanya.
Anda tidak bisa hanya mengetik f-o-r-e-v-e-r di C.
Jadi analog terdekat adalah sementara.
>> Sekarang, sementara (benar) tampaknya sedikit bodoh karena tidak nilai
perubahan pernah benar?
Agaknya tidak.
Ini seperti mengatakan sementara satu, sementara di, sementara benar.
Ini semua hal yang sama, yang benar adalah selalu terjadi.
Jadi loop ini sebenarnya merangsang jenis loop?
Hanya loop tak terbatas, benar.
Sebuah loop Selamanya atau seperti yang kita menyebutnya pekan lalu,
hanya loop tak terbatas.
Jadi kadang-kadang itu buruk.
Kadang-kadang itu bug, kadang-kadang itu sebabnya Anda mendapatkan
bola berputar pantai atau jam pasir atau sejenisnya.
Tapi dalam kasus ini, kami sengaja, untuk apa pun
Alasannya, ingin mencetak hal yang sama lagi
dan lagi dan lagi.
Atau dalam kasus seperti menonton, Anda ingin melakukan
sesuatu lagi dan lagi dan lagi.
Jadi loop tak terbatas mungkin masuk akal.
Dan ini adalah bagaimana di C kita mungkin menerjemahkan Selamanya untuk kode.
>> Jadi sekarang satu ini sedikit lebih spesifik.
Kami telah ulangi 10 kali pernyataan berikut.
Jadi sementara (benar) tidak cukup bekerja di sana, karena yang benar adalah
selalu benar.
Jadi jika kita malah melihat versi C, sekarang sintaks mendapat
sedikit lebih samar.
Tapi jujur ​​setelah Anda mulai melihat ini, semuanya akan
cukup akrab dengan cepat.
Jadi ini adalah apa yang disebut untuk loop.
A untuk loop akan memberitahu komputer untuk melakukan sesuatu
lagi dan lagi dan lagi selama
hal ini benar.
Sekarang apa yang kita maksud dengan itu?
Nah, ada tiga bagian untuk loop, dan kita akan
kembali ke ini dalam konteks yang sebenarnya
contoh dalam sekejap.
Jadi jangan khawatir jika tidak cukup tenggelam dalam sekaligus.
Tapi int i = 0 adalah, singkat cerita, mengatakan beri saya
variabel yang bertipe integer, jadi beri aku nomor
disebut i, dan menginisialisasi ke 0.
Itu memberi saya seperti variabel x dan aljabar
menginisialisasi ke 0.
Tapi dalam kasus ini kita menyebutnya i.
Kemudian di tengah, ia mengatakan i adalah kurang dari 10.
Itu memberitahu komputer melakukan hal-hal berikut ini begitu lama
sebagai i adalah kurang dari 10.
Dan jelas itu dimulai kurang dari 10 karena
dimulai pada 0.
Kemudian yang terakhir, Anda mungkin bisa menebak apa yang saya + + berarti.
Ini sedikit sintaks yang hanya berarti kenaikan i.
Jadi tambahkan 1 untuk saya, lagi dan lagi dan lagi.
>> Dan sehingga kita akan melihat lingkaran ini, sintaks ini, bukan, mengimplementasikan
justru hal yang sama yang, terus terang, di Scratch hanya begitu
jauh lebih mudah untuk mengekspresikan.
Ulangi 10, dan Anda sudah selesai.
Dalam C, dan dalam kebanyakan bahasa pemrograman, kita harus menjadi
sedikit lebih instruktif untuk komputer dan benar-benar
menetapkan sesuatu seperti ini.
Tapi kita akan kembali ke ini dan sintaks lainnya.
>> Bagaimana dengan variabel?
Dalam Scratch kami memiliki sesuatu seperti ini blok oranye,
di mana saya bisa mendeklarasikan variabel.
Mari kita sewenang-wenang menyebutnya kontra.
Mari kita menginisialisasi ke 0, dan kemudian
mari kita selamanya melakukan sesuatu.
Dalam kasus ini dalam Scratch saya katakan meja, sehingga
kucing akan memiliki gelembung pidato kecil yang berbicara
jumlah yang ada di variabel ini.
Dan kemudian kita memiliki counter perubahan dengan 1.
Jadi semua ini dibungkus dalam sebuah kunci Selamanya.
Jadi kita sudah sekarang memiliki blok bangunan di C dengan
yang untuk menerjemahkan ini.
>> Salah satu cara yang bisa kami lakukan yang ini.
Beri aku integer, menyebutnya kontra.
Menginisialisasi ke 0
di baris pertama di sana.
Sementara (benar), jadi aku mencuri gagasan bahwa dari hanya sesaat
lalu, pergi ke depan dan lakukan hal berikut.
Mencetak meja, dan kemudian kenaikan konter,
lagi, dan lagi, dan lagi.
Atau lagi, + + hanya berarti tambahkan 1 untuk sesuatu.
Tapi ada sepotong baru sintaks sini.
Apa yang melompat keluar sebagai bukan termasuk contoh kami sebelumnya?
Ya, ini d%.
Jadi Anda mungkin bisa menyimpulkan apa ini lakukan, terus terang, berdasarkan
pada apa blok Scratch lakukan.
Tapi sekali lagi di C, kita hanya harus sedikit lebih khusus
ketika datang untuk mengekspresikan diri kita sendiri.
>> Jadi printf ("% d \ n").
Nah sebagian besar yang kita dapat membuang begitu akrab.
Kutipan hanya berarti itu string, backslash n
hanya baris baru.
Jadi hal yang baru hanya di sini adalah% d.
Dan semua yang merupakan placeholder.
D% akan menunjukkan angka desimal.
Dan% komputer berarti d, menempatkan angka desimal di sini.
Nah, apa nomor yang Anda ingin diletakkan di sana?
Nah, karena Anda mungkin dapat menyimpulkan, setelah koma kita katakan
counter, itulah nama variabel yang kita dinyatakan atau
menciptakan beberapa baris sebelumnya.
Jadi ini hanya cara C dari memasukkan variabel ke dalam
string yang dinamis.
Karena sebaliknya, jika saya bukan melakukan sesuatu seperti
ini, printf ("counter"), apa yang akan ini
program bukan lakukan, mungkin?
Secara harfiah akan mencetak "kontra".
Yang bukan efek yang saya inginkan.
Saya harus mengganti di beberapa nilai numerik.
Jadi kita akan melihat bahwa fungsi kemudian, seperti printf, tidak dapat mengambil
hanya satu argumen, seperti
"Halo dunia".
Mereka dapat mengambil koma kutipan tanda kutip, dan kemudian beberapa variabel
yang akan mendapatkan terhubung ke, karena kami akan melihat string sebelumnya
melalui penampung ini tanda%.
>> Nah bagaimana ekspresi Boolean?
Ekspresi Boolean adalah nilai-nilai, benar atau salah.
Ya atau tidak.
1 atau 0.
Hidup atau mati.
Jadi dalam Scratch mereka terlihat seperti ini, dan perhatikan bahwa
bawah blok sini sebenarnya kata sambung
dari dua blok yang lebih kecil.
Jadi aku agak menyeret dan menjatuhkan tiga potong puzzle
bersama-sama untuk membuat potongan puzzle lagi ada sehingga saya
bisa menyampaikan gagasan bahwa saya ingin menjadi x kurang dari y dan
y menjadi kurang dari z.
Dan jadi saya bisa menerjemahkan dua baris yang terpisah sebagai berikut.
Yang paling atas bisa sangat sepele diterjemahkan ke C,
hanya dengan x <y.
Mungkin dengan beberapa tanda kurung untuk mengukur baik.
Dan kemudian di C, Anda tidak menulis dan untuk menunjukkan
gabungan dari sesuatu.
Anda malah menulis &&.
Dan seperti yang kita akhirnya akan melihat, sebuah ampersand tunggal terjadi pada
berarti sesuatu yang berbeda.
Jadi && hanya menunjukkan gagasan DAN.
>> Jadi sekali lagi, meskipun ini mulai terlihat agak rumit,
salah satu tujuan memperkenalkan Scratch, selain
hanya memiliki semacam senang di-jalan di mana Anda dapat melakukan
sesuatu yang sangat grafis, dan animasi, dan
dapat dibagikan dan sejenisnya, juga untuk menyampaikan gagasan bahwa
semua ide kita mulai menyelam ke hari ini dan seterusnya
telah diwujudkan dalam bahkan yang sederhana
antarmuka sejak hari pertama.
Bagaimana dengan yang satu ini di sini?
>> Jadi kondisi.
Jadi blok Gores di sebelah kiri ada terlihat
sedikit lebih kompleks.
Tapi itu hanya beberapa menyeret dan
menjatuhkan potongan familiar.
Jika x kurang dari y, katakan demikian.
Lain jika x lebih besar dari y, katakan demikian.
Lain, kita secara logis dapat menganggap itu disimpulkan bahwa
mereka harus sama.
Jadi mengatakan bahwa mereka adalah sama.
Sekarang di C pada hal, yang benar persis sama.
Dan perhatikan bahwa kurung kurawal akan menjadi
fitur C dan bahasa lain yang melakukan hal semacam ini
enkapsulasi.
Sama seperti jika blok ini hal kuning itu semacam
meraih blok ungu di dalamnya.
Demikian pula orang-kawat gigi -
ini keriting kawat gigi -
dimaksudkan untuk menyulap ide yang sama merangkul satu atau lebih
baris kode yang menjorok dalam diri mereka.
Jadi di sisi kanan-tangan di sini, jika x kurang dari y, printf
("X adalah kurang dari y").
Lain jika x lebih besar dari y, mencetak sama.
Lain mencetak bahwa mereka adalah sama.
>> Jadi singkatnya, ada pemetaan yang cukup langsung atau terjemahan
bahasa kita lihat sejauh ini, termasuk untuk beberapa
dari fitur yang lebih canggih.
Jadi Anda tidak mungkin menggunakan ini untuk proyek Anda, atau mungkin tidak
akan menggunakan ini untuk proyek Anda minggu ini.
Tapi kita hal-hal yang disebut array di C. Dalam Scratch,
mereka disebut daftar.
Dan kita melihat ini dengan RPG Fruitcraft pekan lalu.
Orang biru kecil yang sedang berjalan-jalan, mengambil
ceri dan jeruk dan sejenisnya.
Nah di Scratch, yang diimplementasikan dengan oranye
blok yang berisi kata-kata, dalam hal ini, kita benar-benar
menambahkan "oranye" ke
variabel yang disebut persediaan.
Jadi dalam C, sintaks ini akan mendapatkan sedikit lebih samar.
Dan kita akan kembali ke ini minggu depan dan melakukan lebih
hal menarik dalam dunia kriptografi dengan itu.
Tapi di bagian bawah sini, dua baris pada dasarnya
menerjemahkan apa yang kita lakukan dalam satu blok Scratch sana.
Tetapi lebih pada untuk datang.
>> Jadi menempatkan bersama-sama, di sini adalah sebuah program di C. Jadi mari kita
cepat menggoda selain beberapa potongan sintaks di sini, tapi
kemudian mari kita benar-benar mulai menulis beberapa kode, membiasakan
Anda dengan beberapa alat kita akan menggunakan, dan melihat apakah kita
dapat membangun sekarang beberapa blok bangunan dasar dari
pekan lalu, kini sintaktis di C. Jadi di bagian atas di sini, ini
mungkin salah satu program yang paling membosankan Anda bisa
menulis dalam hampir semua bahasa pemrograman.
Tapi itu semacam memiliki arti khusus karena itu adalah
kanonik program yang setiap ilmuwan komputer saat menulis
mengajar seseorang bahasa pemrograman -
program hello world.
>> Jadi di bagian paling atas, kita melihat pengertian # include
dan kemudian, dalam kurung siku, stdio.h.
Kita akan kembali ke itu, tapi benar-benar apa yang
berarti bahwa ada file di dunia ini disebut standar
I / O, stdio dot h, dan itu hanya sebuah file teks yang
seseorang menulis tahun lalu.
Dan dalam file teks adalah sejumlah besar
fungsi, atau metode, atau prosedur, bahwa orang lain
menulis bahwa kita adalah penerima manfaat dari karena kita
sekarang dapat menggunakan kode orang itu.
Fungsi ia menulis.
Dalam kasus ini, printf bukanlah sesuatu yang saya tulis, itu
bukan sesuatu yang CS50 menulis.
Ini adalah sesuatu yang seseorang menulis tahun yang lalu dan dimasukkan ke dalam
file bernama stdio.h dan kemudian, sebagai samping, menempatkan
bagian lain dari fungsi dalam file lain.
Tapi kita akan sampai di sana.
>> Jadi # include hanyalah cara kami mengatakan, di
C, memberikan akses ke fungsi yang orang lain menulis.
Dan dalam hal ini saya peduli karena saya ingin printf.
Sekarang kita mendapatkan int main (void).
Jadi ini adalah salah satu dari hal-hal ini, terus terang, bahwa pada hari 0,
cukup banyak saya sudah untuk jenis keluar zona, karena itu hanya
tidak menarik
intelektual, beberapa sintaks.
Tapi untuk sekarang tahu bahwa fungsi, atau dikenal sebagai
prosedur, atau metode, umumnya menghasilkan beberapa nilai.
Mereka melakukan sesuatu.
Mereka datang dengan jawaban.
Mereka menghasilkan output.
Jadi int sebelah utama hanya singkatan cara kami mengatakan
bahwa fungsi ini, prosedur ini, pada akhirnya akan
untuk memberikan kembali nomor.
Dan mengapa itu, kita akan kembali ke.
Utama hanya dunia bawaan standar untuk default
fungsi yang akan dieksekusi dalam program C ketika
Anda menjalankannya.
Void hanya berarti hal ini, utama, tidak mengambil
argumen, dalam kasus ini.
Jadi saya menjadi super eksplisit.
Tidak ada string di sana, tidak ada koma.
Void berarti tidak ada argumen untuk utama.
>> Sekarang terakhir, untungnya, dua baris terakhir yang akrab.
Di dalam kurung kurawal kita memiliki printf
dan kami memiliki keuntungan.
Dan kembalinya adalah jenis disayangkan bahwa kita harus
menaruhnya di sana, karena dalam kasus ini itu tidak melakukan semua yang
banyak kepentingan.
Namun dalam program komputer, ketika fungsi mengembalikan 0,
itu berarti semuanya baik-baik.
Tidak ada yang tidak beres.
Sebaliknya, jika fungsi mengembalikan 1, atau 1 negatif, atau
negatif 1.337, atau beberapa nomor acak seperti itu, bahwa
umumnya berarti bahwa kesalahan sebenarnya telah terjadi.
Jadi jika Anda pada Mac atau PC Anda, jika Anda pernah melihat
beberapa pesan menjengkelkan karena komputer Anda rusak atau
dibekukan, dan ada pesan kesalahan yang rumit,
dan kemudian beberapa kode, seperti sistem kode
1,2,3,4, beberapa nomor,
yang umumnya adalah detail yang tidak perlu untuk memberitahu
sebagian besar dari kita manusia, tapi itulah beberapa fungsi atau beberapa
Program ini benar-benar kembali, nilai non-nol.
Dan manfaat dari ini adalah bahwa 0 berarti semua juga, dan
maka Anda pada dasarnya memiliki jumlah tak terbatas hal-hal yang
bisa salah.
Itulah sebabnya mereka memilih 0 untuk kebaikan dan nilai non-nol untuk
buruk, seperti yang akan kita lihat.
>> Jadi mari kita pergi ke depan dan menulis ini.
Jadi ingat bahwa hari saya menggunakan Mac saya untuk membuka
jendela terminal, dan kemudian saya membuka program teks, seperti
TextEdit, dan aku mulai menulis beberapa kode.
Nah itu baik-baik saja.
Tapi pengalaman Anda akan berbeda pada Mac, atau
pada komputer Solaris, Linux komputer, apapun operasi
sistem Anda kebetulan menggunakan.
Dan sehingga dalam kursus, apa yang kita malah menggunakan sesuatu
disebut Appliance CS50.
Jadi Appliance CS50 adalah bagian dari perangkat lunak download
yang memungkinkan Anda untuk menjalankan sistem operasi Linux yang disebut,
khusus Fedora Linux, pada Mac atau PC sendiri.
Dan Anda melakukan ini dengan men-download sesuatu yang disebut hypervisor.
Jadi semua ini akan didokumentasikan dalam sejumlah masalah 1.
Dan Anda akan dipandu ke arah apa yang Anda butuhkan untuk men-download.
Tapi hasil akhirnya, apakah Anda memiliki Mac atau PC, adalah Anda
men-download beberapa perangkat lunak bebas.
Anda kemudian men-download Appliance CS50, dan Anda mengatakan bahwa
perangkat lunak bebas - hypervisor -
untuk menjalankan Appliance CS50 di jendela pada komputer Anda.
Dan apa yang terjadi adalah ini.
>> Saya sekarang, perhatikan di sini, apa yang tampaknya menjadi desktop
lingkungan.
Dan biarkan aku benar-benar mengecilkan jendela ini tunggal.
Jadi sekarang ini adalah Mac saya, dengan sebuah jendela kecil di sini, dan di dalam
dari jendela ini terjadi menjadi benar-benar
sistem operasi yang berbeda.
Memang ada ini start menu di sini, mengingatkan
Jendela, yang memiliki sejumlah besar sub menu, termasuk
link ke manual CS50, Dropbox, dan sejenisnya.
Dan apa lingkungan ini sekarang adalah lingkungan yang standar
bahwa kita semua sekarang dapat menggunakan, sehingga tidak peduli apa yang Anda
komputer, apa yang telah diinstal di atasnya, apa versi
Mac OS atau Windows Anda menjalankan, kita semua sekarang memiliki
sama lingkungan.
Dan sekarang dalam lingkungan ini kita dapat mulai menulis beberapa kode.
>> Jadi aku akan pergi ke depan dan membuka sebuah program yang disebut gedit.
Hal ini sebanding dengan notepad.exe, atau
TextEdit pada Mac.
Dan ini hanya super teks program editing sederhana
yang terlihat seperti ini pada pandangan pertama.
Sekarang di bagian paling atas, saya memiliki palet putih, di bagian bawah saya
memiliki jendela hitam yang mengatakan jharvard alat @.
Dan itu karena account pengguna yang kami pra-dibuat
untuk semua orang yang disebut John Harvard.
Dia memiliki folder dimana semua file-nya akan pergi, dan
di sinilah kita bisa mulai menulis beberapa kode.
Jadi biarkan aku pergi ke depan di sini dan memperbesar hanya sedikit, dan aku
akan melakukan # include, int main (void), dan
maka aku akan melakukan printf ("halo dunia")
, Kembali 0.
Sekarang ini semua cukup hitam dan putih.
>> Biarkan aku pergi ke depan dan melakukan satu hal untuk mengajarkan apa yang saya gedit
benar-benar melakukannya.
Biarkan aku pergi ke Save As.
Aku akan memilih di sisi kiri di sini jharvard.
Jadi sekali lagi, bahkan jika Anda belum pernah menggunakan Linux sebelumnya, terus terang
hari ini, semuanya pelimpahan ke dasarnya
sama jenis antarmuka -
Mac OS, Windows, dan Linux.
Jadi saya memilih folder rumah jharvard di sini.
Dan aku akan menyimpan file ini sebagai hello.c.
Jadi di bagian paling atas, saya mengetik hello.c, penamaan C
Program dengan ekstensi c. adalah
apa praktek umum.
Dan aku memukul Simpan.
Dan sekarang apa yang baik adalah bahwa saya telah efektif diajarkan gedit,
bahwa ini adalah program C.
Perhatikan bahwa teks saya hitam dan putih kini kode warna, atau
sintaks disorot, yang hanya menarik perhatian saya ke
berbeda semantik bagian dari program.
Di bagian atas kiri di sana, sebagai program saya mendapatkan lebih kompleks, saya
akan memiliki ringkasan dari semua hal yang telah saya tulis.
Jadi itu saja di sana.
Jadi biarkan saya sekarang tampilannya keluar dan pergi ke jendela terminal ini.
>> Jadi ini mungkin baru bagi banyak orang.
Jika Anda belum pernah menggunakan lingkungan baris perintah, Anda sudah pernah
digunakan DOS, atau Anda belum pernah menggunakan Linux, atau Anda belum pernah dibuka
Anda Mac OS jendela terminal, ada banyak hal yang Anda
bisa lakukan dengan GUI, seperti menunjuk, dan mengklik, dan
menyeret, dan menjatuhkan, dan sejenisnya, tetapi umumnya -
tentu dalam dunia ilmu komputer -
menggunakan baris perintah, di mana Anda tidak memiliki mouse Anda
pada umumnya, Anda hanya memiliki keyboard Anda, sebenarnya banyak
lebih kuat daripada antarmuka, setelah Anda mendapatkan terbiasa dengan
berbagai perintah.
Dan Anda semacam membebaskan diri dari perlu untuk titik dan klik
dalam segala hal.
Jadi di gedit kita akan semacam memiliki yang terbaik dari kedua dunia.
Kita dapat drag dan drop teks, kita bisa melihatnya
bagus dan kode warna.
Tapi ketika tiba saatnya untuk menjalankan program kami, terkadang kami akan
hanya menggunakan jendela kecil di sini.
>> Jadi aku akan pergi ke depan dan melakukan hal ini.
Pada jendela hitam dan putih bawah, aku akan pergi ke depan
dan menulis dentang.
Dan dentang adalah nama kompilator.
Ini adalah program yang mengkonversi kode sumber saya
ke dalam, jadi, kode obyek.
0s dan 1s, bahwa kita melihat sebentar minggu lalu.
Ingat dari minggu lalu, kami berjanji bahwa kami akan
pergi dari sesuatu seperti ini - kita harus
sesuatu seperti ini -
dan ini tentunya bukan sesuatu yang manusia akan
dilakukan secara manual.
Jadi, bukannya kita akan menggunakan sebuah program, dan program
Kasus ini disebut dentang.
Dan nama dari program saya hello.c.
Jadi untuk mengkompilasi hello.c dari kode sumber ke dalam
kode objek, atau 0s dan 1s, itu harus cukup untuk hanya melakukan
ini dan tekan Enter.
>> Oke, tidak ada yang tampaknya telah terjadi.
Tapi aku tahu sekarang, atau dari pekan lalu, bahwa nama default
sebuah program, ketika ditulis dalam C, yang disebut bodoh a.out.
Nama yang paling tidak menarik Anda bisa datang dengan.
A adalah huruf pertama dari alfabet, keluar adalah apa yang
outputted, tapi begitu baik.
Ini adalah program saya, dan sekarang dot slash, seperti yang akan kita lihat, adalah
sebenarnya hanya semacam fitur keamanan, karena
a.out adalah program yang saya tulis.
Itu tidak datang dengan komputer saya, itu
tidak dalam Program Files.
Ini bukan dalam folder Aplikasi Mac OS.
Saya perlu eksplisit super dengan komputer, dan mengatakan
program ini, a.out, adalah dalam folder saat ini,
saat ini direktori.
Dan cara Anda mewakili di lingkungan seperti ini
adalah titik mewakili apapun folder Anda sedang masuk
Dan sebagainya. / A.out hanya berarti menjalankan
dalam folder saat ini.
Dan saya menjalankan ini dengan Enter, dan voila, program saya yang pertama.
>> Sekarang biarkan aku mengambil langkah mundur.
Jendela ini agak kecil, dan menyadari bahwa bagian bawah
kiri alat di sini adalah ikon lain.
Salah satunya adalah Chrome, yang harus cukup akrab, hanya web
Browser dalam alat.
Dan ini icon hitam dan putih hanya
besar jendela terminal.
Jadi jika mendapat sedikit mengganggu untuk semacam baru saja
ini sepotong kecil kecil jendela yang dapat digunakan untuk berinteraksi
dengan program, kita malah bisa melakukan hal ini.
Dan sekarang biarkan aku mulai mengetik segera beberapa
menjadi perintah akrab.
ls.
Jadi ls adalah perintah untuk listing.
Jadi dalam OS Mac atau Windows, biasanya Anda akan mengklik dua kali
folder dan kemudian, voila, Anda melihat semua berbagai file
dan folder.
Dalam lingkungan baris perintah, di mana Anda hanya bisa mengetik
perintah atau teks, ls adalah setara.
Jadi menunjukkan apa yang ada di direktori ini.
>> Sekarang ada banyak hal di sini yang baik sedikit
akrab dan asing sedikit.
Tetapi perhatikan bahwa sama seperti Windows dan Mac OS, jharvard
memiliki folder desktop.
Jadi setiap ikon yang ada di desktop saya terjadi
berada di folder itu.
Ada folder download, hal-hal yang
Chrome mungkin diletakkan di sana.
Dropbox.
Jadi alat dilengkapi dengan built-in mendukung untuk Dropbox
sehingga lebih semester, Anda dapat sinkron dengan Anda Dropbox
akun sehingga semua program-program anda didukung.
Mereka dapat diakses di komputer lain.
Jika sesuatu yang tidak beres dengan alat, Anda dapat
sangat mudah pulih dari Dropbox.
Jadi folder yang ada untuk itu.
Ada dua file yang saya buat - hello.c
dan a.out.
Dan kemudian ke kanan ada beberapa folder lain yang kita akan
sampai menjelang akhir semester, dengan web
pemrograman.
Jadi ketika saya melakukan /,. A.out, Enter, itu mengatakan pergi
dalam direktori aku di, direktori saat ini, dan menjalankan
program yang disebut a.out di sana.
>> Baiklah, jadi itu bagus dan baik, tapi tidak semua yang
menarik untuk menulis sebuah program yang disebut membantu a.out.
Jadi kita benar-benar bisa melakukan ini sedikit berbeda.
Jadi bukan hanya dentang berjalan, hello.c, mari kita tambahkan
apa yang disebut argumen baris perintah.
Jadi argumen baris perintah, atau switch dalam kasus ini, hanya
kata lain atau frase yang Anda ketik pada prompt setelah
program yang ingin Anda jalankan.
Jadi dalam hal ini, dentang adalah program yang saya ingin jalankan,-o
berarti output file yang sudah tidak lagi disebut a.out.
Output file bernama halo, dan melakukannya dengan mengumpulkan
kata terakhir di telepon, hello.c.
Jadi singkatnya, ini adalah perbaikan yang sangat marjinal, dimana
bukannya memiliki ini a.out berkas bodoh bernama,
Saya sekarang bisa melakukan dentang-o halo, maka hello.c, dan
kemudian tekan Enter.
Tidak ada yang tampaknya terjadi, tapi sekali lagi sangat mirip dengan 0 - saat
sepertinya tidak ada yang terjadi itu berarti ada yang salah terjadi -
jadi mari kita lakukan sekarang ls, Enter, dan memang saya sekarang
memiliki program halo.
Jadi jika saya ketik halo sekarang, perintah tidak ditemukan.
OK, /..
Jadi tepat.
Jadi karena program ini saya menulis, dan itu tidak datang dengan
komputer, / hello., Enter, berarti
Sekarang saya menggunakan halo.
>> Jadi begitu ada.
Sekarang apa yang kita akhirnya akan sampai ke baris perintah lebih dan lebih
argumen yang memungkinkan kita untuk melakukan lebih, tapi hanya untuk orang-orang untuk
siapa ini mungkin topi tua, biarkan aku benar-benar pergi ke
direktori di sini dan hanya memberikan teaser dari bagaimana lagi kita
bisa pergi tentang pelaksanaan halo dunia.
Biarkan aku pergi ke sini, dan aku akan membukanya.
Jadi sebenarnya, aku akan menjelaskan apa yang saya lakukan, sehingga
ini berguna.
Biarkan aku kembali.
>> Jadi saya sudah melakukan ini sejak lama.
Jadi perhatikan atas di sebelah kanan terdapat beberapa
direktori yang bernama aneh source1m dan source1w.
Ini hanyalah konvensi konyol kita gunakan.
Sumber hanya berarti source code, 1 berarti ini adalah satu minggu, dan
m berarti itu hari Senin, dan w berarti itu Rabu.
Jadi samar ada apa-apa.
Ini hanya notasi steno.
Hal-hal biru adalah folder, atau dikenal sebagai
direktori.
Saya ingin pergi ke folder yang sekarang, dan pada komputer normal
Aku hanya bisa klik dua kali pada icon folder dan
ada semua file saya.
Tetapi dalam lingkungan baris perintah, saya tidak bisa melakukan cukup
itu, jadi sebagai gantinya, saya harus mengubah direktori secara manual.
Jadi jika saya ketik cd dan kemudian source1m, Enter, perhatikan bahwa
prompt saya, hal putih di sebelah kiri, hanya berubah.
Dan begitu memang, saat itu hanya mengatakan kurung dan kemudian
sedikit coretan, simbol tilde, yang hanya berarti saya
di direktori home John Harvard, My Documents nya,
nya file pribadi.
Tetapi sekarang di dalam kurung itu mengatakan ~ / source1m.
Ini hanya berarti saya dalam folder bernama source1m
yang ada di direktori home John Harvard.
Jadi jika sekarang saya ingin daftar file dalam folder ini, mudah
pertanyaan, saya ketik saja ls.
Dan sekarang saya melihat semua file yang saya pra-dibuat untuk hari ini
kuliah, yang semuanya, atau sebagian besar, terjadi
berakhir pada bulan. c.
>> Jadi biarkan aku pergi ke depan sekarang dan menjalankan gedit dari sebuah program yang disebut
holloway.c, yang ditulis oleh beberapa hacker acak
di Internet, yang terlihat sedikit seperti ini.
Dan kami tidak akan pergi melalui satu ini dalam setiap
rinci, tetapi bagi mereka lebih nyaman, khususnya, jika
Anda ingin mengambil menebak seperti apa program ini tidak di sini.
Yakinlah, apakah Anda kurang atau lebih nyaman,
kita bahkan tidak sampai ke hal semacam ini pada akhir
semester ini.
Inilah sebuah contoh dari sebuah kontes C dikaburkan, yang
berarti menulis program mencari yang paling samar Anda mungkin
bisa untuk mengalahkan orang pintar lainnya, yang sama-sama
mencoba untuk menulis hal-hal dan pamer bahwa mereka dapat menulis
lebih samar hal dari Anda.
Jadi ini bukan contoh program yang ditulis dengan baik dari
perspektif gaya, ini adalah contoh dari sebuah program yang
menang kontes, bagi orang yang mencoba untuk
samar-samar dan abstrak.
>> Jadi jika kita menjalankan hal ini, biarkan aku pergi ke jendela terminal saya,
sehingga untuk berbicara.
Jadi lingkungan hitam dan putih disebut
jendela terminal pada umumnya.
Biarkan aku pergi ke depan dan kompilasi.
Aku tidak akan menggunakan dentang, karena program ini adalah
sedikit samar dan membutuhkan berbeda
compiler, yang disebut GCC.
Tapi itu melakukan hal yang sama.
Dibutuhkan kode sumber untuk kode obyek.
Dan sekarang jika saya menjalankan a.out, bahwa program Anda
hanya melihat hal ini.
Jadi orang bahwa tahun memenangkan kontes itu.
Bagaimanapun, kita tidak akan ke arah itu, per se.
>> Jadi mari kita benar-benar mencoba untuk sekarang menggoda selain apa yang bisa kita lakukan
dengan blok bangunan dasar untuk membuat lebih banyak dan lebih
menarik program.
Jadi kami telah menulis sebuah program, kami telah menjalankan program.
Sekarang kita benar-benar dapat menyederhanakan dan tidak lagi harus menulis
dentang kata saat diminta.
Ternyata sebagai program kami mendapatkan lebih samar, kita bisa, atau
lebih kompleks lebih, kita benar-benar dapat menjalankan perintah ini.
Jadi biarkan aku kembali ke direktori rumah saya, sehingga untuk berbicara, biarkan aku
menghapus - rm adalah perintah menghapus - saya akan menghapus
file yang bernama a.out dan Halo.
Dan sekarang perhatikan dalam lingkungan baris perintah, seperti dalam
GUI, Anda mendapatkan diminta. Saya tidak dapat mengklik tombol meskipun, aku
harus mengetikkan y untuk ya, y untuk ya.
Dan sekarang jika saya ketik ls lagi, perhatikan bahwa mereka hijau
program - a.out dan hello -
hilang.
Waspadalah rm.
Hal ini dapat melakukan hal-hal yang buruk, seperti Anda dapat dengan menyeret
hal yang sampah Anda.
>> Jadi sekarang mari kita pergi ke depan - dan saya bisa melakukan ini - dentang-o
halo, halo -
Saya sudah bosan mengetik perintah itu.
Meskipun saya mengetik itu sedikit cepat.
Jadi kita malah bisa lakukan membuat halo.
Jadi membuat tidak kompilator.
Ini hanya sebuah program ramah yang datang dengan Linux, dalam hal ini
Kasus - sistem operasi -
yang mengotomatisasi proses kompilasi program.
Jadi, bukannya mengingat dentang-o nama file dan
kemudian sebagainya, terutama setelah baris tersebut semakin panjang dan
lagi, saya hanya bisa menulis membuat.
Dan ini akan meludahkan sejumlah besar hal-hal yang
kita akhirnya akan melihat semester ini.
Tapi perhatikan sekarang jika saya ketik ls, halo kembali dalam direktori saya.
Dan memang saya bisa menjalankannya dengan / hello..
Jadi membuat hanya mengotomatiskan proses menjalankan apa,
dalam hal ini, lebih lama perintah, lebih kompleks.
Jadi kita akan mulai menggunakan make, hanya karena itu banyak
lebih ramah pengguna.
>> Tapi sekarang mari kita lakukan program yang lebih menarik
dari sekedar say hello.
Jadi dalam program yang kami telah menulis sejauh ini ada utama.
Itu hanya hal standar yang kicks off segalanya.
Tetapi ada fungsi lain di luar sana juga, dan
stdio.h adalah hal yang kita lihat di atas kami
file sebelum, dan itulah apa yang dikenal sebagai perpustakaan standar.
Di dalam perpustakaan standar sejumlah besar fungsi
bahwa orang lain menulis, dan kita bisa mulai menggunakan ini
fungsi untuk menulis lebih
menarik program sendiri.
>> Jadi biarkan aku kembali ke alat.
Aku akan menutup jendela terminal.
Aku akan menutup hal yang kita tulis sebelumnya, dan hanya pergi
ke hello.c, dan perhatikan sekarang saya bisa melakukan hal berikut.
Halo dunia tidak semua yang menarik, saya ingin
personalisasi program ini untuk diriku sendiri.
Jadi, bukannya mengatakan dunia, aku akan
pergi ke depan dan berkata -
Saya bisa mengetik David - tapi ini benar-benar semacam
dasarnya sama.
Tapi mari kita coba keluar ide placeholder.
Ingat bahwa di C, bukan di printf, kami punya ini
penampung, dan ada lebih dari sekedar d%.
Jadi% d adalah, cek kewarasan cepat.
Oke, angka desimal, itu saja.
Desimal digit, itu saja.
Jadi c%, seperti yang akan kita hadapi, akan menjadi karakter.
Masukan karakter di sini, surat melalui z,
atau tanda baca simbol.
Sebuah karakter tunggal, f%, ada yang tahu dari bahasa lain?
Jadi nilai floating point.
Sejumlah nyata.
Jadi bukan angka desimal - ini sebenarnya adalah sebuah bilangan real dengan
titik desimal, dan beberapa jumlah digit ke kiri
dan hak itu.
% S, string.
Itu yang kita akan melihat cukup sering.
Sebuah string, sekali lagi, hanyalah sebuah kata, frase, urutan
individu karakter.
Dan terakhir, lld?
Jadi ini lebih merupakan kasus sudut.
Panjang desimal, panjang.
Jadi jika Anda ingin tidak hanya nomor yang sebesar ini, Anda
ingin nomor yang lebih besar, Anda akan harus menentukan untuk
komputer bahwa itu dari ukuran tertentu.
>> Jadi mari kita tweak ini agak sedikit.
Daripada hanya kode keras di David, biar sedikit
dinamis katakan s%.
Jadi menempatkan s% di sini, yang merupakan tempat untuk string.
Kemudian biarkan aku melakukan koma, dan kemudian "David" di sini.
Sekarang ini tidak semua yang menarik secara intelektual,
karena semua saya lakukan sekarang adalah benar-benar menciptakan lebih banyak pekerjaan bagi
komputer.
Daripada memberitahu komputer melakukan hal ini sekaligus, aku sekarang
mengatakan melakukan ini dan memasukkan string di sini pada akhirnya, koma,
di sini adalah string yang.
Jadi ini bukan perbaikan yang lebih baik, tapi setidaknya
langkah menuju program yang lebih menarik.
Karena sekarang, biarkan aku pergi ke depan dan membuat jendela ini sedikit
lebih besar, biarkan aku pergi ke depan dan menjalankan make halo.
Dan sekarang, / a.out. Tidak bekerja, mengapa?
Baiklah, sekarang itu disebut halo.
Jadi sekali lagi membuat, dan juga berdentang dengan-o, berganti nama menjadi
program untuk menjadi sesuatu yang lebih menarik.
Dan voila: sekarang mengatakan Halo David.
>> Baiklah, masih merupakan program bodoh.
Jadi sekarang mari kita benar-benar pergi kembali ke sini dan memperkenalkan gagasan
dari variabel.
Bukankah akan lebih baik jika aku bisa mendeklarasikan variabel
yang jenis string?
Dan nilai variabel sebenarnya berasal dari pengguna
dirinya sendiri.
Jadi sewenang-wenang, aku akan menelepon s variabel saya, yang
hanyalah sebuah konvensi umum ketika Anda memiliki satu variabel yang disebut
string.
Aku akan melakukan tanda yang sama, dan kemudian aku akan memanggil
fungsi yang disebut GetString.
Jadi GetString bukanlah sesuatu yang datang dibangun ke C. Ini
fungsi yang staf CS50 menulis, benar-benar hanya untuk
ini beberapa minggu pertama, untuk menyederhanakan proses
mendapatkan masukan pengguna dan mendapatkan input pengguna dalam bentuk
string, atau angka, dan semacamnya.
Jadi GetString seperti printf, tapi jelas bukan
mencetaknya akan melakukan apa yang namanya mengatakan, mendapatkan string.
Tetapi untuk menggunakan GetString, kita akan harus membuat perubahan
di sini, di luar ini.
Jadi intuitif, program ini, mudah-mudahan, akan entah bagaimana
mendapatkan string dari user, dan kemudian apa yang akan dilakukannya
dengan string yang, disebut s?
Ini hanya akan mencetaknya, kan?
Masih bukan program merangsang karena semua itu akan
lakukan adalah plug nilai itu ke mana% s
mengatakan harus pergi.
>> Jadi mari kita setidaknya melihat ini dalam tindakan.
Biarkan saya menyimpan dan zoom out.
Sekarang di jendela terminal saya di sini, potongan kecil dari satu,
biarkan aku lakukan lagi membuat halo.
Oke, dan ah, sialan, aku mendapat sejumlah besar kesalahan.
Biarkan saya gulir ke atas, dan kami melihat pertama kami -
jadi mari kita benar-benar melakukan hal ini dalam sebuah jendela yang lebih besar sehingga Anda
dapat melihat betapa aku kacau -
sehingga membuat halo.
Oke, itu bencana, kan?
Saya telah menulis tiga baris kode, dan
itu memberi saya 12 kesalahan.
Lalu mengapa ini?
Jadi untungnya, seringkali ketika Anda melihat banyak, banyak kesalahan
meludah keluar sekaligus, itu benar-benar hanya karena Anda sudah
bingung komputer di sini.
Dan masih bingung pada saat itu akan ke sini.
Dan sehingga hanya mulai tersandung, dan tersandung, dan
menyemburkan lebih banyak barang menakutkan daripada benar-benar berlaku.
Jadi secara umum, selalu dimulai dengan satu atas.
>> Jadi contoh yang paling paling atas merah,
pesan kesalahan ini.
Gunakan string undeclared identifier, aku
berarti standar di?
Aku tidak.
Aku berarti string, tapi ini karena, juga, string kata
bahwa saya tetap menggunakan lisan sebenarnya
tidak ada di C baik.
Ini sesuatu yang kita akan menggunakan hanya untuk minggu pertama atau dua
di sini, tapi ada dalam sebuah file yang bernama cs50.h.
Jadi untuk saat ini, tahu bahwa ada perpustakaan ini lain bahwa
Staf menulis, sehingga sudah menulis lebih baru daripada
stdio.h.
Tapi dalam cs50.h adalah definisi, sinonim dari
macam, yang menciptakan string kata.
>> Jadi sekarang biarkan aku kembali ke jendela terminal saya.
Aku akan membersihkan kekacauan ini dengan Ctrl-L. Kami hanya akan
menghapus semuanya bersih, dan aku akan pergi ke depan dan membuat
halo lagi, Enter.
Jadi apa yang terjadi sekarang?
Sekarang semua kesalahan-kesalahan pergi.
Jadi apa yang telah saya benar-benar melakukan?
Aku baru saja mengajarkan komputer string ada, dan itu
dalam file bernama cs50.h.
Jadi berhenti mengeluh, karena sekarang Anda tahu di mana untuk menemukan
deklarasi yang fungsinya sehingga untuk berbicara.
Dimana itu ada di dunia.
>> Jadi sekarang aku akan pergi ke depan dan menjalankan halo.
Saya tampaknya memiliki infinite loop, terjadi apa-apa.
Jadi saya perlu mengetikkan sesuatu di sini, benar.
Baris pertama dari kode dalam program saya GetString.
Jadi itu benar-benar menunggu saya untuk mendapatkan string.
Jadi dalam arti bahwa ya, itu adalah infinite loop.
Rupanya di GetString adalah perilaku default yang kita
menulis - staf -
yang hanya mengatakan menunggu dan menunggu dan menunggu dan menunggu dan menunggu,
sampai pengguna memberikan string dengan mengetikkan sesuatu masuk
Jadi biarkan aku pergi ke depan dan ketik D-a-v - i-d, Enter.
Dan ada itu, halo David.
>> Sekarang hal ini tampak seperti itu hanya sandiwara?
Biarkan aku pergi ke depan dan ketik Tommy.
Masukkan, oke, tampaknya bekerja.
Bekerja untuk Rob, bekerja untuk Zamyla, bekerja untuk - oke.
Jadi itu akan bekerja, kemungkinan besar.
Jadi harus mencetak apa pun yang kita benar-benar memberikannya,
dan kita bisa menjadi sedikit sulit di sini.
Mari kita lihat jika kita melakukan sesuatu seperti halo.
Bisa pergi ke sini, mari kita lihat, copy, paste.
Aku tidak akan bisa paste yang berkali-kali di sini.
Tempel, oke, Shift + Ctrl + V. Jadi apa yang bisa
terjadi itu buruk di sini?
>> Oke, jadi, segfaults.
Jadi beberapa dari Anda dengan latar belakang sebelumnya akan tahu bahwa
pada umumnya, memberikan komputer banyak masukan saat mereka
mungkin tidak dimaksudkan untuk menerima nama yang panjang seperti ini - buruk
hal-hal terjadi.
Memang, dalam dunia web, juga, ini terjadi cukup sedikit,
dimana ketika Anda sedang merancang sebuah website, ketika Anda
merancang Facebook, Anda harus membuat keputusan sewenang-wenang up
depan, seperti berapa lama seseorang akan s
Facebook nama pengguna akan?
Atau berapa lama akan nama seseorang bisa?
Berapa lama akan nomor telepon seseorang menjadi dan sejenisnya.
Dan jika programmer membuat asumsi yang buruk, program istirahat
karena Anda mencoba memberi mereka lebih banyak output, input lebih
bukan, daripada mereka memiliki memori.
Atau RAM yang dialokasikan untuk itu, dan jadi jika sekarang saya tekan Enter,
program yang benar-benar bekerja, karena kami berada di perpustakaan
dan kita benar-benar diantisipasi kasus ini.
Tapi tidak diragukan lagi semester ini, Anda akan menulis setidaknya satu
program yang akan mengucapkan kata-kata.
Ingat ini minggu dari sekarang, mungkin dua hari dari sekarang.
Kesalahan segmentasi adalah hal yang buruk.
Ini akan merujuk pada sesuatu yang Anda lakukan bahwa komputer
tidak mengantisipasi.
Dan dalam hal ini, Anda, programmer, tidak mengantisipasi.
Banyak seperti apa ini tumpukan kaus kaki, ada berbagai
kasus sudut kita bisa temui.
Demikian pula dalam program jika Anda tidak mengantisipasi berapa lama
Nama seseorang akan.
Atau bagaimana jika saya memiliki pengguna berbahaya, dan nya nama
sebenarnya cukup singkat, tapi mereka hanya mencoba
main-main dengan saya?
Apa yang akan menjadi perilaku program saya?
Nah, dalam hal ini, sesuatu yang mungkin benar-benar kecelakaan.
>> Jadi mari kita lakukan ini.
Dalam 90 menit, ini adalah waktu yang lama sekali
untuk melakukan ilmu komputer.
Mengapa kita tidak masuk ke dalam kebiasaan mengambil lima menit
istirahat di sini, dan ketika kita kembali, kita akan menyelam ke dalam beberapa
program yang lebih kompleks dan menarik?
Lima menit.
>> Baiklah.
Jadi komentar yang cepat.
Saya diberitahu bahwa meskipun ini adalah pada layar sebelumnya, apa yang
keluar dari mulutku cs50.net/rsvp.
Ini benar. cs50.net/lunch.
Jadi sekarang Anda dapat mencoba untuk RSVPing ini di / makan siang.
Tapi mari kita lakukan ini sekarang.
Jadi ini telah super cepat, super baru untuk banyak orang.
Old topi untuk beberapa orang.
Jadi mari kita mundur untuk sesaat, dan melihat bagaimana kita harus
output ini hello world beberapa saat yang lalu.
>> Jadi pertama, ada ini Appliance CS50.
Sekali lagi, software, masalah set 1 akan memberitahu
Anda bagaimana untuk men-download, di mana untuk men-download, apa yang harus mengklik
dan sebagainya.
Dan kemudian setelah Anda mengikuti instruksi tersebut, Anda akan dapat
untuk memaksimalkan jendela Anda, dan Anda Mac atau PC akan terlihat
sedikit sesuatu seperti ini.
Sebuah latar belakang hitam, folder rumah di bagian atas di mana semua
file Anda pergi, tempat sampah di bagian kiri atas,
menu di bagian bawah.
Jadi sekali lagi, cukup memiliki semangat yang sama Mac OS atau Windows,
meskipun terjadi menjadi Linux.
Jadi apa yang kita lakukan selanjutnya?
Nah, kami mulai menulis program.
Dan ingat dari minggu lalu bahwa semua yang diperlukan untuk menulis
Program adalah editor teks sederhana,
seperti Notepad atau TextEdit.
Terus terang, Anda bahkan dapat menggunakan Microsoft Word.
Tapi hal-hal yang buruk pada akhirnya akan terjadi, karena itu sangat
berat tangan solusi untuk menulis sebuah program, itu akan ditambah
menyimpannya dalam format file yang salah.
Tapi itu hanya editor teks, pengolah kata, adalah semua itu
diperlukan untuk menulis program.
>> Jadi dalam Appliance CS50, kita bisa melakukan hal ini dalam satu cara yang sederhana.
Kami hanya bisa klik pada ikon ini di sebelah kiri bawah.
Dan lagi, masalah set 1 akan memberitahu Anda tentang hal ini, dan voila -
Anda mendapatkan antarmuka hitam dan putih di mana kita dapat mulai
menulis kode.
Jadi mari kita mulai menulis sebuah program super sederhana lagi.
Aku akan pergi ke File, Save, dan aku akan menelepon
ini, katakanlah, hello2.c.
Dan aku hanya mengatakan dengan mengklik jharvard, menaruhnya
di direktori home-nya, saya tidak benar-benar peduli
tempat yang satu ini pergi.
Dan kemudian Simpan.
Dan sekarang aku bisa mulai menulis program saya.
Dan saya ingat dari sebelumnya bahwa saya harus menulis int
main (void).
Zoom in pada kiri atas.
Dan kemudian saya ingin mengatakan printf, mengambil dua.
Dan sekarang kutipan, baris baru dekat, tutup
kurung, koma.
Dan kemudian saya pergi ke sini untuk jendela terminal saya itu
tertanam di gedit, hanya untuk kenyamanan.
Dan aku akan pergi ke depan dan menulis membuat halo, tapi tidak
halo saja, hello2.
>> Jadi file saya disebut hello2.c. Oleh karena itu saya file
harus disebut hello2, dalam kasus ini.
Sialan, apa yang saya lakukan salah?
Baiklah, jadi aku jelas dihilangkan baris, jika Anda ingat apa
program sebelumnya terlihat seperti.
Tapi mari kita lihat apakah kita tidak bisa menggoda ini terpisah.
Sayangnya, kebanyakan orang yang menulis program dengan mana
kita menulis program tidak menyederhanakan hal semua yang baik.
Jadi kita harus jenis skim atas apa yang tidak cukup membuat
merasakan di sini dan melihat apakah kita bisa mencari tahu apa yang salah.
Baris pertama ada mengatakan secara implisit menyatakan C
perpustakaan printf dengan int tipe fungsi.
OK, saya mengerti bagian dari itu.
Tapi tampaknya menyinggung fakta bahwa saya menggunakan printf
salah, entah bagaimana.
Dan arti apa itu salah?
Aku hanya tidak mengajarkan komputer bahwa itu dalam sebuah file
disebut stdio.h.
Sekarang aku hanya perlu hanya menghafal sekarang bahwa printf adalah
di stdio.h, dan memang akan ada lainnya
fungsi dalam file yang sama bahwa kita akan terbiasa.
>> Jadi sekarang biarkan aku pergi ke depan dan tekan Ctrl-L untuk hanya jelas bahwa
pergi, jalankan kembali membuat hello2, dan voila.
Dan perintah ini lagi, lebih kompleks daripada yang kita akan menjelaskan untuk
saat ini tujuan.
Tapi itu dijalankan dentang, dan dentang mengambil kode sumber dan
meludah keluar 0s dan 1s.
Dan orang-orang 0s dan 1s dalam hal ini disebut apa?
Oke, obyek kode.
Dan file yang mereka berada di disebut, sehingga,
hello2, dalam kasus ini.
Karena file teks saya hello2.c, Enter.
Dan sekarang aku telah mengambil dua tanda seru, tanda seru
titik, tanda seru.
Baiklah, jadi kita miliki sekarang kemampuan untuk mendapatkan string,
rupanya.
Nah, apa lagi yang bisa kita dapatkan dari pengguna?
>> Nah di perpustakaan CS50, ada fungsi lain yang
akan menyederhanakan hidup kita dalam beberapa hari pertama.
Getchar, GetDouble, GetFloat, GetInt,
GetLongLong, GetString.
Nah, mari kita memetik off termudah pertama ini.
GetString harfiah melakukan itu.
Ini hanya duduk di sana, menunggu pengguna untuk mengetik sesuatu di,
dan segera setelah aku mengetik sesuatu di dalam dan tekan Enter, maka
melakukan sesuatu dengan nilai tersebut.
Jadi mari kita kembali ke contoh itu untuk melihat apa
GetString lakukan.
Biarkan aku pergi ke depan dan terbuka di gedit, hello.c, dan mengingat
yang tepat sebelum istirahat, ini adalah di mana kita tinggalkan.
>> Jadi mari kita sekarang ini menggoda terpisah dalam sedikit lebih detail.
Jadi on line 6, ada dua hal
terjadi saat ini.
Tanda sama yang memisahkan babak pertama dan babak kedua.
Jadi di sisi kiri tanda sama, kita
mengatakan string s.
Dan kemudian, istilah awam saja, apa string s
lakukan, menurut Anda?
Ini menciptakan apa?
Jadi itu membuat string disebut s.
Sekarang apa yang benar-benar berarti?
Nah, itu memesan ruang untuk string yang disebut s.
Itu tidak benar.
Apa ini lakukan?
Komputer Nah, seperti yang Anda tahu, memiliki hard drive, yang mana
file Anda disimpan.
Komputer memiliki RAM, dan di sanalah program yang dimuat
saat mereka berjalan.
Jadi, ketika Anda mengklik dua kali ikon Microsoft Word dan membuka
up, Microsoft Word sedang berjalan, sehingga untuk berbicara, dalam RAM, yang
bagian elektronik dari komputer Anda.
Bukan fisik bagian, mekanik yang berputar, di mana
Data umumnya disimpan jangka panjang.
Jadi string s cukup banyak memberitahu komputer memberi saya
cukup RAM sesuai string.
Nah, itu sedikit penyederhanaan, karena
seberapa besar adalah string akan?
Nah kita benar-benar belum tahu, sehingga dalam minggu-minggu yang akan datang
kita benar-benar akan menarik kembali lapisan yang string dan
kami akan memberitahu Anda apa sebenarnya.
String, untuk saat ini, hanya penyederhanaan baik dari dunia kita.
Tapi string s menyatakan string disebut s, untuk saat ini.
Mendeklarasikan string.
Ini cadangan beberapa ruang di RAM untuk string pengguna
sekitar untuk mengetik.
>> Sekarang mari kita lihat di sebelah kanan tanda sama.
Jadi dikatakan GetString ().
Dan kewarasan sedikit memeriksa.
Fakta bahwa tidak ada dalam tanda kurung
menyiratkan bagaimana GetString?
Dibutuhkan tanpa argumen.
Artinya, Anda tidak bisa mempengaruhi perilaku dengan cara apapun.
Setiap kali Anda menggunakannya, maka akan mendapatkan string dan hanya itu.
Sebaliknya, printf, semoga perilakunya tidak
berubah setiap waktu.
Jika tidak, itu adalah fungsi pencetakan cukup berguna jika
itu melakukan hal yang sama.
Jika selalu mencetak David atau sesuatu
sewenang-wenang sepanjang waktu.
Jadi printf masuk akal untuk memiliki argumen.
GetString tidak benar-benar membutuhkan sebuah argumen, karena saya ingin
untuk mendapatkan string dari user dan itu adalah pengguna yang akan
untuk memasok dinamika dengan mengetik dalam huruf yang berbeda
setiap kali di keyboard.
>> Jadi apa yang GetString pada akhirnya?
Menganggapnya sebagai kotak hitam kecil.
Dan kotak hitam ini mengambil input tidak ada, tetapi ketika Anda menggedor
itu, meludah keluar string yang pengguna telah diketik masuk
Dan fakta bahwa ada tanda yang sama ada berarti mengambil
apa yang dimuntahkan di sebelah kanan dan menyimpannya di dalam
apa yang ada di sebelah kiri.
Jadi tanda sama di sini, itu benar-benar tidak berarti
kesetaraan, agak teknis berarti tugas.
Mengambil nilai di sebelah kanan, dan meletakkannya di
variabel di sebelah kiri.
Jadi itu saja yang terjadi di sana.
>> Sekarang di baris 7, kita memanggil printf.
Jadi printf diharapkan semakin sedikit membosankan sekarang.
Jadi mencetak string diformat.
Apa string?
Print out, "h-e-l-l-o,% s
\ N! ".
Baiklah, jadi apa yang saya ingin plug-in untuk% s?
Secara harfiah, apa pun yang disimpan dalam s.
Jadi dalam hal ini, cek kewarasan sedikit, berapa banyak argumen tidak
printf ambil?
Oke, saya mendengar satu.
Aku mendengar satu lagi.
Dua, saya mendengar dua.
Dan bagaimana tiga?
Oke, tiga?
Sangat baik.
Tiga kemungkinan jawaban, hanya salah satu dari mereka adalah benar.
Jadi argumen lagi mempengaruhi perilaku fungsi.
Di masa lalu, printf tidak hanya mengambil satu argumen.
"Halo dunia" adalah argumen tunggal.
Namun, sekarang, perhatikan di mana koma ini.
Koma ini berada di luar kutipan / tanda kutip, yang berarti
hey printf, inilah argumen kedua.
>> Jadi koma dalam bahasa pemrograman yang paling
terpisah beberapa argumen.
Jadi jawabannya di sini pasti tidak salah satu, karena
ada koma ini.
Jadi minimal, printf rupanya mengambil dua
argumen saat ini.
Tapi kesempatan untuk pertanyaan trik di sini adalah apa yang
tentang koma ini?
Apakah ini menyiratkan bahwa sebenarnya ada tiga argumen?
Hal ini, ini, dan ini.
Jadi tidak ada, karena koma yang dalam tanda kutip, yang
berarti itu benar-benar hanya sebuah estetika bahasa Inggris.
Ini tidak ada hubungannya dengan jumlah
argumen dalam program ini.
Jadi koma ini berada di luar tanda kutip ganda.
Dan kemudian kembali 0.
Hanya semacam Untuk sekarang mari kita dari mengambil satu ini pada iman untuk
hari, dan hanya tahu bahwa ketika fungsi selesai mengeksekusi
baris kode, mereka umumnya harus mengembalikan beberapa nilai.
Dalam kasus ini, hanya karena main harus mengembalikan int,
itu hanya cara bahasa C bekerja.
>> Jadi karena ada yang tidak beres, terasa seperti program ini
baik, saya hanya sulit dikodekan dalam return 0.
Tapi sebaliknya, dan aku akan menulis ini dalam kode pseudo
sekarang, seperti Yusuf lakukan ketika kita melakukan kaus kaki
Misalnya pekan lalu.
Jika ada sesuatu yang tidak beres - ini bukan kode aktual - pergi
salah, kemudian kembali, katakanlah, 1.
Lain kembali 0.
Jadi ini adalah di mana kita akan dengan ini.
Hal ini tidak aktual kode C, hanya pseudocode.
Tapi ini adalah bagaimana Anda bisa kembali
berbeda yang mungkin nilai-nilai.
Tapi untuk sekarang aku hanya akan pergi ke depan dan kembali 0.
Baiklah, pertanyaan sejauh pada sintaks, fungsi,
atau sejenisnya?
Ya, di belakang.
>> HADIRIN: [Tak terdengar]
DAVID Malan: Bisakah Anda berbicara sedikit lebih keras?
Mengapa ini 0 kembali program, dan?
HADIRIN: [Tak terdengar]
DAVID Malan: Oh, itu karena aku malas, maaf.
Tidak ada respon akademik yang baik, kembali 0.
Saya bisa seperti ini menyelamatkan, dengan mengatakan secara teknis C, jika utama
tidak secara eksplisit mengembalikan nilai, 0 akan dikembalikan
secara otomatis untuk Anda.
Mana yang benar, saya tidak hanya menutupi.
Tapi, saya harus melakukannya dengan cara ini.
Tidak ada takeaway menarik daripada yang lain selain kesalahan saya.
Ya?
>> HADIRIN: Biasanya ketika anda mengetik dalam kekosongan, itu berarti Anda
tidak kembali sesuatu.
DAVID Malan: Benar.
Jika sebaliknya, Anda tentukan sebelum nama fungsi, untuk
Misalnya di sini, batal, maka fungsi
tidak kembali apa-apa.
Dan karena itu saya hanya akan mengatakan, pengembalian atau tidak sama sekali,
dan itu akan konsisten.
Dan kami akan kembali untuk itu.
Dan hanya FYI, salah satu tangkapan dengan belajar
pemrograman di dunia yang memiliki ratusan buku dan
ratusan website di luar sana adalah Anda selalu akan
melihat sintaks yang berbeda dalam buku-buku yang berbeda
oleh orang yang berbeda.
Menyadari bahwa kita akan melakukan yang terbaik dalam bagian dan kuliah untuk menjadi
konsisten.
Tapi kadang-kadang Anda akan melihat sintaks bertentangan.
Jadi setiap kali ragu, tanyakan saja.
Dan secara umum, kami akan berhati-hati dalam ceramah dan bagian untuk
hampir selalu hadir dalam cara yang benar.
Dan saya katakan hampir selalu, karena kasus di titik.
Pertanyaan lain?
>> HADIRIN: Apakah% s ada di luar alat?
DAVID Malan: Apakah% s ada di luar alat?
Ya.
Jadi% s hubungannya dengan C. Fakta bahwa kita menggunakannya dalam
alat fundamental tidak ada hubungannya dengan
fitur bahasa yang kita gunakan.
Memang, pekan lalu ketika kami menggunakan Mac saya, saya menulis
C kode pada Mac saya.
Saya bisa menggunakan s% pada Mac saya, dan Anda bisa menggunakannya pada
Anda komputer Windows jika Anda menginstal compiler, seperti
Visual Studio dari Microsoft.
Jadi% s.
Segala sesuatu yang kita lakukan dalam jendela ini saat ini harus
lakukan dengan apa-apa C. Dan secara fundamental harus dilakukan dengan
sistem operasi yang bersangkutan.
Sebaliknya, hitam dan putih jendela terminal - ketika
Aku mengetik hal-hal seperti ls, dan rm, dan cd -
yang ada hubungannya dengan sistem operasi dan
menavigasi di sekitar.
Ya.
HADIRIN: Aku berarti perpustakaan, perpustakaan CS50.
DAVID Malan: Oke, jadi jika Anda berarti string kata kunci, bahwa
hanya ada di perpustakaan CS50, benar.
Itu tidak ada di C itu sendiri, dan memang di beberapa
dari minggu kami akan membuang perpustakaan CS50 dan mulai
melakukan hal-hal dari awal sendiri, sehingga untuk berbicara.
Pertanyaan lain?
Ya.
>> HADIRIN: [Tak terdengar]
DAVID Malan: Pertanyaan yang bagus.
Apakah kasus perintah sensitif?
Dan biarkan aku membuat perbedaan di sini.
Jadi perintah umumnya hal yang kita akan menulis di
bawah jendela, di jendela terminal.
Apa pun di sini akan pernyataan atau kode C.
Tapi dalam kedua kasus, jawabannya adalah sama, ya.
Kedua lingkungan, C kode di bagian atas dan
sistem operasi baris perintah di
bawah, bersifat case sensitif.
Jadi, Anda harus memanfaatkan GetString dengan modal G,
modal S. Anda harus menulis printf dalam huruf kecil semua.
Anda harus mengetikkan ls dalam huruf kecil semua.
Jadi di hampir setiap situasi semester ini, kasus akan,
Bahkan, hal.
Ya.
>> HADIRIN: [Tak terdengar]
DAVID Malan: Ah, jadi apa-apa, bagaimana jika kita memiliki file
disebut hello.d.
Jadi ternyata D adalah bahasa pemrograman.
Dan sehingga dalam beberapa kasus, kita benar-benar bisa menulis sebuah program dalam
file itu dan telah dikompilasi dengan cara itu.
Kita bisa, dan benar-benar, jawaban singkatnya adalah, saya tidak tahu.
Jadi kita akan melakukan hal ini.
Biarkan aku pergi ke depan dan membuat file baru.
Dan spin di sini, jujur ​​pada umumnya, adalah setiap kali keraguan
semester ini, dan Anda memiliki alat atau komputer
buka, pergi ke depan dan mencoba sesuatu.
Jadi aku akan menyimpan file bernama hello.d.
Simpan ini.
Dan aku akan jalankan make halo Enter.
Tampaknya untuk menyimpulkan bahwa c adalah lebih mungkin
dibandingkan d, dalam kasus ini.
Pertanyaan lain.
Ya.
>> HADIRIN: [Tak terdengar]
DAVID Malan: Oke, mengatakan bahwa sekali lagi.
HADIRIN: [Tak terdengar]
DAVID Malan: Bagaimana Anda pergi tentang mendiagnosis itu atau
pemecahan masalah itu?
Jadi kemungkinan besar, karena mereka bahasa yang berbeda,
kemungkinan besar Anda akan mendapatkan benar-benar
program yang berbeda outputted.
Anda akan mendapatkan pesan error yang sama sekali berbeda.
Dan juga hanya dalam hal desain, bisa dibilang akan menjadi
desain miskin keputusan untuk menulis dua yang berbeda
bahasa dengan file hampir identik bernama, di
direktori yang sama persis, menggunakan
otomatis alat seperti membuat.
Jadi saya juga dapat mendorong kembali dan mengatakan dalam 15 tahun melakukan hal ini,
tidak pernah melakukan kesalahan itu.
Bisa terjadi.
Tapi ada hanya berbagai, saya pikir,
logistik pertahanan di tempat.
Ditambah pesan kesalahan yang akan terjadi, yang akan
akhirnya mengungkapkan apa masalah ini.
Tapi kasus sudut mungkin.
>> Baiklah, jadi mari kita memperkenalkan hanya beberapa lainnya
fitur di sini sekarang, jadi kita bisa mulai membangun menjadi lebih
dan program yang lebih kompleks.
Jadi pertama-tama, matematika.
Jadi contoh matematika hanya agak mudah dalam minggu pertama.
Ini bukan untuk mengatakan bahwa semua program adalah tentang
matematika.
Tentu saja, memahami berbagai fitur
matematika, aljabar pada khususnya, adalah
cukup relevan di sini.
Dalam tingkat yang lebih tinggi kelas CS, aljabar linear,
kalkulus, dan sejenisnya.
Tapi menyadari sebagian besar dari apa yang akan kita lakukan semester ini mengurangi tidak
untuk matematika, dan tentunya tidak untuk aritmatika, per se, tapi benar-benar
hanya logika dan pemikiran yang cermat.
Dan sehingga hubungan ini bahwa ilmu komputer telah lama memiliki,
terutama di tingkat sekolah tinggi, dengan matematika, adalah
sedikit menyesatkan.
Karena sebagian besar program yang kita akan menulis, benar-benar, adalah
semacam tingkat yang lebih tinggi dan fokus pada pemecahan masalah yang,
yakin, mungkin menggunakan beberapa penambahan, pengurangan, dan berbagai
matematika formula atau sejenisnya,
tapi pada akhir hari, ini tentang berpikir dan tidak
hanya menerapkan apa yang Anda mungkin telah dilakukan pada seperti TI
Kalkulator di SMA.
>> Jadi dengan mengatakan bahwa, mari kita melakukan sesuatu dengan
matematika operator yang ada sehingga kita dapat perjalanan
atas beberapa aspek yang mendasari pemrograman, atau dalam
kasus ini C. Jadi ada, seperti perpustakaan CS50 disarankan,
dan hari ini kita hanya menggunakan GetString - dan dalam sekejap
mungkin fungsi yang lain -
tetapi ada data yang berbeda jenis dalam komputer.
Pada akhir hari, komputer hanya tahu 0s dan 1s.
Tapi ingat bahwa minggu lalu kami berbicara tentang sistem biner
dalam mewakili angka, seperti angka 0, dan 1, dan 2,
semua jalan pada hingga 8, seperti dalam video Nate.
Dan kemudian kita dapat menghitung jauh lebih tinggi seperti yang kita
lakukan di atas panggung di sini.
Tetapi jika Anda ingin untuk mewakili tidak hanya jumlah tetapi huruf,
kita, manusia, harus datang dengan beberapa sewenang-wenang
konvensi, dimana jika pada akhir hari semua komputer saya
telah adalah kemampuan untuk mengekspresikan 0s dan 1s, baik kita akan lebih baik
mulai standardisasi pola 0s dan 1s yang mewakili
hal yang berbeda.
Sebuah pola 0s dan 1s yang mewakili surat.
Pola 0s dan 1s yang mewakili huruf z.
Pola 0s dan 1s yang mewakili warna biru, atau
merah, atau sejenisnya.
Kita harus menggunakan semua 0s dan 1s untuk mengekspresikan diri
yang berbeda konteks, dengan cara yang berbeda yang tidak
tentu numerik.
>> Jadi dalam hal representasi, C memiliki tipe data yang berbeda,
dan kami telah melihat salah satu sejauh ini.
Kami melihat int, dan perhatikan apa yang tidak di layar
sekarang adalah string.
String tidak, pada kenyataannya, ada di C. Sekali lagi, itu adalah
penyederhanaan kami menyajikan untuk pertama
beberapa minggu.
Sebuah char adalah karakter individu.
Sebuah float adalah bilangan real, dengan titik desimal dan angka untuk
kiri dan kanan itu.
Ganda adalah apa, bagi mereka dengan latar belakang kembali sebelum?
Jadi ganda adalah dua kali sesuatu.
Menambahkan dua kali presisi banyak.
Jadi apa artinya ini?
Jadi dalam masing-masing kasus, dunia memiliki semacam standar
berapa banyak bit yang digunakan untuk mewakili
masing-masing hal.
Jadi jika Anda sudah menonton video ASCII Nate sudah untuk bagian
pset dari 0, atau akhir pekan ini Anda akan, Anda mungkin akan tahu
bahwa ASCII -
karakter representasi -
menggunakan berapa banyak bit?
Dan Anda bahkan mungkin ingat dari demo kami minggu lalu tentang bagaimana
banyak orang di atas panggung.
Jadi 7 atau 8, biasanya.
Jadi umumnya 8, dan ada sesuatu yang disebut sebagai diperpanjang
ASCII yang menggunakan semua 8 bit, bukan 7.
Tapi secara umum, kita berbicara dalam kekuatan dari 2, sehingga dalam kasus ini, 8.
Jadi char dalam bahasa pemrograman biasanya 8 bit.
Jadi int umumnya 32 bit.
Sebuah float umumnya 32 bit.
Sebuah ganda umumnya 64 bit.
Dan apa artinya itu?
Ini berarti Anda dapat mewakili angka yang lebih besar, atau dalam kasus
bilangan real, Anda dapat memiliki nomor lebih banyak setelah
desimal tempat.
Banyak yang lebih presisi, dalam kasus itu.
Sekarang lama sayangnya bernama.
Jadi ada sebuah int yang 32 bit.
Ada yang panjang, nggak, 32 bit.
Dan lama yang adalah 64 bit.
Namun beberapa dari mereka adalah konteks sensitif, itu tergantung
apa jenis komputer yang Anda miliki.
Jadi secara umum, kami akan tetapkan dalam pekerjaan atau dalam kuis ketika
itu benar-benar penting.
Tapi intinya adalah ada semua ini berbeda
representasi sini.
>> Jadi mari kita benar-benar menyelam ke dalam program.
Daripada menulis satu ini dari awal, biarkan aku pergi ke depan
dan membuka kode sumber dari hari ini - yang semuanya
online - jika Anda ingin bermain-main sekitar online, atau pengembalian
Rabu dengan alat pada komputer Anda, petunjuk
yang akan menghubungkan pada homepage kursus itu.
Berikut adalah program super sederhana.
Tapi punya sedikit sesuatu yang baru di bagian atas yang
kita tidak memiliki sebelumnya.
Banyak seluruh garis biru teks.
Jadi garis-garis biru mewakili komentar.
Jadi sangat berguna dalam program untuk dapat menulis
beberapa komentar kepada diri sendiri, atau rekan kerja, atau teman-teman, atau
fellows mengajar, semacam bahwa menggambarkan apa yang terjadi di
file ini, tapi tidak ada hubungannya dengan kode C itu sendiri.
Tidak ada hubungannya dengan program fungsional, itu hanya
estetika.
Jadi cara Anda melakukan ini dalam C adalah Anda umumnya mulai Anda
komentar dengan / *, dan Anda berakhir dengan komentar Anda
* /.
Dan jika Anda benar-benar anal dan seperti untuk menarik semacam gambar,
maka Anda akan menempatkan seluruh banyak bintang, Anda akan membuat
sedikit kotak seperti ini.
Tapi tak satu pun dari yang penting.
Satu-satunya hal yang penting adalah pertama
dan yang terakhir.
Ini adalah apa yang disebut komentar multi-line.
Dan itu hanya konvensi manusia untuk sering melakukan bintang dan kotak
hal dalam seperti ini jika Anda memiliki banyak waktu luang.
>> Jadi setelah Anda telah menulis di beberapa komentar, secara umum, datang
sebenarnya nyali program.
Berikut familiar kami # include.
Dan hanya cepat, hal ini perlu atau tidak perlu?
HADIRIN: Diperlukan.
DAVID Malan: Jadi itu sebenarnya tidak perlu.
Jadi mengapa, meskipun, itu tidak perlu?
Jadi tidak ada printf.
Memang.
Semua yang kita lakukan dalam program ini adalah matematika.
Jadi saya benar-benar dapat menghapus.
Jadi Anda tidak selalu harus memasukkan apa pun di
bagian atas dari sebuah program.
>> Jadi mari kita menyederhanakan ini sedikit.
Dan sekarang perhatikan apa program ini tidak.
Tidak banyak kepentingan.
int x = 1.
Nah, apa ini lakukan?
Nah, berpikir kembali ke model mental dari sebelumnya.
Sisi kiri dari ungkapan ini melakukan apa?
Buat ruang untuk integer.
Jadi berapa banyak ruang?
Nah, kita kebetulan tahu sekarang bahwa itu 32 bit.
Sebelumnya, string secara teknis 32 bit, tetapi lebih
pada bahwa di masa depan.
Tapi int adalah 32 bit.
Jadi ungkapan ini di sebelah kiri di sini, int x hanya mengatakan hey
sistem operasi, memberi saya 32 bit RAM -
atau dikenal sebagai 4 byte RAM -
sehingga saya dapat menempatkan integer di ruang tersebut.
Apa yang bulat kau ingin menempatkan?
Nah, hanya nomor 1.
int y mendapat 2, melakukan hal yang sama persis meskipun
jumlah lebih besar, dalam hal besarnya.
Jumlah itu sendiri masih hanya 32 bit.
Hanya saja pola bit berbeda dengan
mewakili 1 vs 2.
int z sekarang mengatakan memberi saya lagi bit 32, sebut saja z, dan menempatkan
penjumlahan dari 1 dan 2 di sana.
Sehingga sekarang z diduga menyimpan nilai 3,
dan kemudian kembali 0.
>> Sekarang program ini, apakah itu melakukan sesuatu yang menarik?
Jadi sebenarnya tidak melakukan sesuatu yang menarik, dalam setiap
akal, karena mengapa? Ini melakukan beberapa matematika.
Tapi itu tidak kembali jawabannya, benar.
Ini kembali 0.
Ini tidak mencetak jawabannya.
Jadi program ini pada dasarnya tidak berharga, karena
berdiri sekarang.
Ini melakukan beberapa pekerjaan.
Ini akan mengambil beberapa jumlah detik, atau mikrodetik, untuk
lari, tapi itu tidak benar-benar melakukan apa-apa
berguna bagi manusia.
>> Jadi mari kita benar-benar sekarang buka math2, di mana sekarang aku benar-benar
mencetak hasilnya.
Jadi ini juga dapat disimpulkan dari contoh sebelumnya.
Jika saya ingin melakukan beberapa matematika sederhana, int x = 1, y
= 2. z adalah 1 ditambah 2 sekarang.
Apa ini akan mencetak jelas?
Hanya 3.
Jadi kewarasan cepat memeriksa.
Biarkan saya pindah ke direktori ini.
Jadi cd source1m.
Biarkan aku pergi ke depan dan mengetikkan make math2.
Tidak ada pesan error keluar, jadi biar berjalan -
tidak a.out--biarkan aku jalankan math2. Enter.
Dan memang, dicetak 3.
Nah mari kita lihat varian ini.
Dalam math3.c, kita sekarang memiliki contoh ini di sini.
>> Jadi satu ini agak menarik.
Jadi dalam hal ini satu di sini, jawabannya akan mendapatkan 1 dibagi dengan 10,
dan perhatikan saya sudah menyatakan sebagai pelampung.
Mengapa saya ingin menjadi pelampung?
Yah, itu sebagian kecil.
Ini akan menjadi bilangan real.
Jadi itu akan menjadi 0,1, mudah-mudahan - 10%, dalam kasus ini.
Dan apa yang saya kemudian ingin mencetak?
Nah, jawaban ini.
Nah, mari kita menggoda ini selain pertama.
Jadi di sisi kiri, menyatakan
mengapung, menyebutnya menjawab.
Di sisi kanan, jangan 1 dibagi oleh 10 dan menempatkan bahwa
menjawab dalam variabel.
Sekarang, baris ini terlihat sedikit lebih samar.
Tapi perhatikan beberapa fitur akrab. % Berarti di sini datang
placeholder.
f berarti di sini adalah nilai floating point, hanya nyata
nomor, sesuatu dengan titik desimal.
0,2 berarti apa?
Siapapun tahu dari pengalaman sebelumnya?
Dua tempat desimal.
Jadi kita belum melihat ini sebelumnya, tapi itu hanya cara
berolahraga kontrol yang lebih sedikit di atas printf dan
Pepatah tidak memberi saya 30 poin setelah titik desimal,
bukannya memberi saya hanya 2.
>> Dan kemudian mari kita pergi ke depan dan menjalankan ini.
Jadi membuat matematika 3, dan sekarang biarkan aku jalankan matematika 3, Enter.
Dan itu tidak benar.
Kita tampaknya telah mengalami bug asli pertama kami.
Yah, mungkin aku hanya tidak melihat cukup dekat.
Jadi biarkan aku pergi di sini, dan biarkan aku menempatkan 20 desimal
Titik tempat di sana.
Dan biarkan aku mengkompilasi ini, membuat math3, jalankan.
Cukup yakin 1 dibagi dengan 10 tidak 0.
Jadi apa yang terjadi?
Nah oke, jadi sebenarnya tidak ada hubungannya dengan hal ini.
Itu pikiran yang baik.
Ini benar-benar hanya kebetulan
bahwa kita melakukan hal ini.
Tapi hanya untuk membuktikan bahwa ini bukan itu, aku akan
kembali sesuatu yang acak.
Jangan lakukan ini di rumah, karena itu hanya salah.
Tapi membuat math3, biarkan aku menjalankannya.
Jadi tidak ada hubungannya dengan apa yang saya kembali, hanya harus dilakukan
dengan apa yang saya cetak.
Tapi aku mendengarnya di sini.
Apa?
HADIRIN: Jadi kita perlu menulis angka-angka dalam
divisi sebagai -
>> DAVID Malan: Oke baik.
Jadi kita perlu menulis angka berpartisipasi dalam
Divisi sini sebagai floating point nilai sendiri.
Jadi masalahnya di sini adalah seperti sebelumnya: C, seperti dengan banyak
bahasa, memiliki tipe data yang berbeda.
Dan jenis-jenis data, misalnya, orang-sini.
Dan tipe data yang dimaksud di sini, ketika saya ketik 1 dan kemudian saya
tipe 10, mungkin data apa jenis?
Jadi itu mungkin int, kan?
Ini jelas bukan pelampung karena ada tidak ada desimal
titik atau sesuatu seperti itu.
Jadi benar-benar, saya memiliki int dibagi dengan int.
>> Jadi hal yang menarik tentang matematika dan komputer adalah bahwa
jika Anda melakukan pembagian menggunakan bilangan bulat -
1 dibagi dengan 10, ya adalah 0,1.
Namun, ketika Anda membagi integer dengan integer, yang
Jawaban harus juga menjadi integer hanya karena, untuk saat ini.
Dan apa implikasinya kemudian?
Nah, jika jawabannya adalah 1 dibagi dengan 10 sama dengan 0,1, apa yang
komputer akan lakukan adalah saya tidak tahu bagaimana untuk
mewakili 0,1, karena itulah nilai floating point, bukan
integer; itu akan memenggal semuanya setelah
titik desimal dan hanya menunjukkan 0 di awal.
Dan fakta bahwa itu mencetak sebagai floating point
nilai, itu hanya hal estetika.
Itu karena aku memaksa komputer untuk mencetak ini sebagai
nilai titik mengambang.
Dan memang saya sudah dinyatakan sebagai pelampung, tapi matematika adalah
terjadi di sini.
>> Jadi biarkan aku benar-benar memperbaiki ini dalam satu cara yang cukup mudah.
Kenapa tidak saya hanya melakukan 10,0 dan 1,0, meskipun
secara teknis saya bisa lolos dengan hanya melakukan salah satu dari mereka.
Sekarang biarkan aku pergi ke depan dan membuat math3.
Biarkan aku pergi ke depan dan sekarang menjalankan math3, Enter.
Dan sekarang, oh boy.
Sekarang kita punya masalah baru sama sekali.
Jadi lebih baik, benar, kita lebih dekat menjadi 0,1, tetapi apa yang jelas
salah di sini?
Kecuali kita telah berbohong kepada Anda selama bertahun-tahun, kan?
1 dibagi dengan 10 sebenarnya tidak cukup 0.1, jadi apa
sebenarnya terjadi di sini?
Nah Anda dapat jenis alasan logis melalui.
Jika komputer hanya memiliki jumlah terbatas RAM untuk memulai
dengan, dan memang komputer hanya menggunakan 32 bit untuk
nilai titik mengambang, maka bisa dipastikan bahwa dengan
jumlah terbatas bit, 32 dalam kasus ini, ya, Anda dapat
mewakili banyak hal.
Ini sebenarnya adalah empat miliar nilai yang berbeda dapat
diwakili dengan 32 bit, 2 ke 32, tapi masih terbatas.
Jadi masalahnya adalah ada jumlah tak terbatas yang nyata
nomor, benar.
Jika Anda memberi saya bilangan real, saya selalu bisa menemukan Anda satu
sedikit lebih besar, sedikit kurang, dengan hanya mengutak-atik
angka yang setelah titik desimal.
Jadi jika Anda tidak memiliki jumlah tak terbatas bit, Anda
tidak mungkin mewakili terbatas
jumlah bilangan real.
>> Jadi ada ketidaktepatan ini melekat dalam komputer, dan
ini akan tersandung sepanjang waktu bahkan di paling sederhana
program seperti ini.
Tapi juga di beberapa masalah dunia yang sangat nyata juga.
Bahkan, mari kita luangkan waktu untuk hanya melihat pada
sesuatu yang benar-benar terjadi dalam kenyataan.
Kami akan melihat hanya beberapa menit pertama, dan kemudian
kita akan posting secara online link.
Tapi ini adalah bukti apa yang bisa salah, cukup
jujur, dalam cara yang sangat tragis ketika hal-hal ini tidak
dihargai atau hanya kita manusia melakukan kesalahan ketika datang ke
jenis rincian implementasi komputer modern.
>> [PLAYING VIDEO]
-Kita sekarang kembali ke bencana rekayasa pada Marvels modern.
Komputer.
Kita semua telah datang untuk menerima masalah yang sering frustasi
yang pergi bersama mereka.
Bugs, virus, dan gangguan perangkat lunak adalah harga kecil untuk
membayar untuk kenyamanan.
Namun dalam kecepatan tinggi militer berteknologi tinggi dan dan ruang
aplikasi program, masalah terkecil dapat
diperbesar menjadi bencana.
Pada tanggal 4 Juni 1996, para ilmuwan siap untuk meluncurkan berawak
Ariane 5 roket.
Itu membawa satelit ilmiah dirancang untuk
menetapkan tepat bagaimana medan magnet bumi
berinteraksi dengan angin surya.
Roket ini dibangun untuk European Space Agency dan
lepas landas dari fasilitas di pantai Perancis Guyana.
>> -Pada sekitar sekitar 37 detik dalam penerbangan, mereka pertama
sesuatu yang tidak beres melihat, bahwa nozel yang
berputar dengan cara mereka benar-benar tidak seharusnya.
Sekitar 40 detik dalam penerbangan, jelas kendaraan
dalam kesulitan, dan saat itulah mereka membuat keputusan untuk
menghancurkannya.
Sebuah rentang keamanan petugas dengan nyali yang luar biasa menekan
tombol, meledakkan roket sebelum bisa menjadi
bahaya bagi keselamatan publik.
>> -Ini adalah pelayaran perdananya dari Ariane 5, dan yang
kerusakan terjadi karena cacat tertanam dalam
roket software.
>> -Masalah pada Ariane adalah bahwa ada nomor yang
membutuhkan 64 bit untuk mengekspresikan dan mereka ingin mengubahnya
ke nomor 16 bit.
Mereka beranggapan bahwa jumlah itu tidak pernah
akan menjadi sangat besar,
bahwa sebagian besar dari mereka digit di nomor 64 bit yang 0s.
Mereka salah.
>> -Ketidakmampuan satu program perangkat lunak untuk menerima
jenis nomor yang dihasilkan oleh yang lain berada di akar
kegagalan.
Pengembangan perangkat lunak telah menjadi bagian yang sangat mahal
teknologi baru.
Ariane 4 roket telah sangat sukses.
Begitu banyak perangkat lunak yang diciptakan untuk itu juga digunakan
di Ariane 5.
>> -Masalah dasar adalah bahwa Ariane 5 lebih cepat,
dipercepat lebih cepat.
Dan perangkat lunak tidak diperhitungkan untuk itu.
>> -Penghancuran roket adalah keuangan besar
bencana, semua karena kesalahan software menit.
Tapi ini bukan pertama kalinya data yang memiliki masalah konversi
terganggu teknologi roket modern.
>> DAVID Malan: Kami akan berhenti di situ.
Tapi ini adalah bukti betapa berlaku bahkan beberapa
ini rincian tingkat terendah yang kita sudah mulai
mengeksplorasi saat ini.
Jadi bahkan ketika Anda mendapatkan sedikit terganggu mungkin oleh beberapa
sintaks dan arcaneness sini, menyadari bahwa selama
Istilah kita akan terfokus hanya pada bagaimana berlaku ini adalah untuk
dunia jauh melampaui CS.
Kami akan melihat Anda pada hari Rabu.