2 00:00:00,000 --> 00:00:02,760 >> SPEAKER 1: Mari kita menulis sebuah program yang meminta pengguna untuk nama dan 3 00:00:02,760 --> 00:00:04,700 rumah dari tiga mahasiswa. 4 00:00:04,700 --> 00:00:08,840 Sekarang, untuk menyimpan nama-nama dan rumah kita bisa menggunakan apa, enam variabel. 5 00:00:08,840 --> 00:00:12,260 Tiga string untuk nama, dan lain tiga senar untuk rumah, 6 00:00:12,260 --> 00:00:16,560 tapi kita sudah tahu bahwa kita dapat membersihkan kode dengan menggunakan array sebagai gantinya, 7 00:00:16,560 --> 00:00:20,220 misalnya array ukuran 3 untuk tiga nama, dan berbagai lain 8 00:00:20,220 --> 00:00:22,110 ukuran 3 untuk rumah. 9 00:00:22,110 --> 00:00:25,870 Tapi ternyata kita bisa membersihkan ini lebih jauh lagi, dan benar-benar menjaga mereka 10 00:00:25,870 --> 00:00:30,520 nama dan rumah bersama-sama, sehingga nama siswa dan rumah nya 11 00:00:30,520 --> 00:00:34,940 entah bagaimana dikemas, sehingga untuk berbicara, ke dalam variabel yang sama. 12 00:00:34,940 --> 00:00:39,095 >> Untuk melakukan hal ini, meskipun, kita perlu mendeklarasikan tipe data kita sendiri, jenis kita sendiri di C, 13 00:00:39,095 --> 00:00:42,660 bahwa penulis C tidak selalu memikirkan tahun yang lalu. 14 00:00:42,660 --> 00:00:45,630 Untuk melakukan hal ini kita dapat menggunakan kata kunci typedef, bersama dengan 15 00:00:45,630 --> 00:00:47,200 struct kata kunci lainnya. 16 00:00:47,200 --> 00:00:48,160 Mari kita lihat. 17 00:00:48,160 --> 00:00:50,650 Di dalam structs.h, aku sudah mendapatkan dimulai oleh 18 00:00:50,650 --> 00:00:52,560 termasuk perpustakaan CS50. 19 00:00:52,560 --> 00:00:57,640 Saya selanjutnya akan mengetik struct typedef, dan kemudian penjepit keriting. 20 00:00:57,640 --> 00:01:01,370 Di dalam struct, aku akan menentukan bahwa seorang siswa harus memiliki 21 00:01:01,370 --> 00:01:04,960 string disebut nama, dan lain string disebut rumah. 22 00:01:04,960 --> 00:01:08,430 Aku akan kemudian tutup kurung kurawal saya, dan menentukan bahwa nama 23 00:01:08,430 --> 00:01:11,420 tipe data baru akan menjadi murid. 24 00:01:11,420 --> 00:01:15,550 Dengan kata lain, melalui sintaks ini telah saya mendeklarasikan tipe data baru dari saya sendiri 25 00:01:15,550 --> 00:01:19,910 yang tidak ada saat yang lalu, dan dalam tipe data ini adalah dua data 26 00:01:19,910 --> 00:01:24,270 ladang atau anggota data, salah satu disebut nama, satu rumah yang disebut, yang keduanya 27 00:01:24,270 --> 00:01:25,630 adalah tipe string. 28 00:01:25,630 --> 00:01:27,690 >> Mari kita sekarang menggunakan jenis ini dalam sebuah program yang sebenarnya. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 Dalam structs0.c, aku sama mendapat sendiri sudah mulai dengan beberapa 31 00:01:34,090 --> 00:01:36,999 kode boilerplate, dan aku sekarang akan menggunakan data ini 32 00:01:36,999 --> 00:01:39,100 ketik mahasiswa, sebagai berikut. 33 00:01:39,100 --> 00:01:42,450 Saya pertama akan mendeklarasikan array tipe mahasiswa, aku akan 34 00:01:42,450 --> 00:01:43,920 memanggil siswa berbagai - 35 00:01:43,920 --> 00:01:44,630 jamak - 36 00:01:44,630 --> 00:01:49,360 dan saya akan menentukan bahwa ukurannya akan tiga, yang, pemberitahuan, adalah nilai 37 00:01:49,360 --> 00:01:50,880 para MAHASISWA konstan - 38 00:01:50,880 --> 00:01:51,890 di semua ibukota - 39 00:01:51,890 --> 00:01:54,930 bahwa saya telah menyatakan di sini, sebelumnya dalam file. 40 00:01:54,930 --> 00:01:58,280 Sekarang mari kita iterate atas tiga siswa, dan meminta pengguna untuk 41 00:01:58,280 --> 00:02:00,050 nama dan rumah-rumah mereka. 42 00:02:00,050 --> 00:02:05,422 >> untuk int saya mendapatkan 0, i kurang Selain itu konstan, i + +. 43 00:02:05,422 --> 00:02:08,600 Dan sekarang dalam tubuh ini untuk lingkaran, aku akan mencetak sesuatu 44 00:02:08,600 --> 00:02:11,470 seperti nama siswa. 45 00:02:11,470 --> 00:02:14,890 Saya kemudian akan benar-benar mendapatkan bahwa nama siswa dengan menentukan 46 00:02:14,890 --> 00:02:17,290 siswa braket i. 47 00:02:17,290 --> 00:02:21,550 Dengan kata lain saya ingin-i mahasiswa dalam array disebut siswa, tapi sekarang 48 00:02:21,550 --> 00:02:25,340 Saya ingin mendapatkan yang ke-i siswa nama, dan untuk melakukan hal ini, saya akan menggunakan 49 00:02:25,340 --> 00:02:30,160 tersebut. operator, dalam rangka untuk mendapatkan di dalam bidang tertentu struct. 50 00:02:30,160 --> 00:02:37,100 Jadi saya menentukan siswa braket i nama. mendapat nilai kembali dari GetString (). 51 00:02:37,100 --> 00:02:40,310 Sementara itu, aku akan mencetak sesuatu yang mirip, mengatakan siswa 52 00:02:40,310 --> 00:02:45,410 rumah, dan sekarang aku akan menentukan bahwa bidang rumah siswa-i 53 00:02:45,410 --> 00:02:49,480 akan mendapatkan nilai pengembalian panggilan lain untuk GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Sekarang mari kita melakukan sesuatu dengan tiga ini nama dan rumah-rumah siswa, 55 00:02:52,350 --> 00:02:56,230 sesuatu yang sederhana seperti pencetakan masing-masing dalam sebuah kalimat. 56 00:02:56,230 --> 00:03:07,580 untuk int i mendapatkan 0, sekali lagi saya kurang dari mahasiswa, i + +, printf "% s adalah% s. 57 00:03:07,580 --> 00:03:12,600 backslash n ", dan sekarang biarkan aku pasang di nilai-nilai dari dua bidang, 58 00:03:12,600 --> 00:03:19,055 siswa braket i nama., koma, siswa braket i. house, dekat 59 00:03:19,055 --> 00:03:21,290 paren, titik koma. 60 00:03:21,290 --> 00:03:23,020 >> Dan sekarang saya perlu melakukan satu hal lagi. 61 00:03:23,020 --> 00:03:26,600 Di bagian bawah file ini, saya perlu membebaskan memori yang dialokasikan 62 00:03:26,600 --> 00:03:30,290 di balik layar oleh GetSring (), yang tentu saja panggilan malloc, untuk 63 00:03:30,290 --> 00:03:32,500 mengalokasikan memori untuk string jenis pengguna. 64 00:03:32,500 --> 00:03:35,720 Tapi untuk ini adalah sederhana. 65 00:03:35,720 --> 00:03:42,610 untuk int saya mendapatkan 0, i kurang dari mahasiswa, i + +, dan di dalam tubuh 66 00:03:42,610 --> 00:03:48,670 ini untuk loop, aku hanya akan menyediakan gratis siswa braket i nama., 67 00:03:48,670 --> 00:03:52,300 dan siswa bebas braket i. house. 68 00:03:52,300 --> 00:03:55,620 >> Sekarang, kita sudah jelas menggunakan tiga untuk loop dalam program ini, ketika benar-benar aku 69 00:03:55,620 --> 00:03:58,800 bisa saja menggunakan satu, tapi ini hanya demi demonstrasi, sehingga 70 00:03:58,800 --> 00:04:02,850 kita dapat menentukan dalam tiga berbeda langkah apa sebenarnya yang kita lakukan. 71 00:04:02,850 --> 00:04:06,120 Kami pertama mendapatkan nama dan rumah untuk masing-masing siswa, kami kemudian 72 00:04:06,120 --> 00:04:08,900 mencetak nama dan rumah untuk masing-masing tiga siswa, dan 73 00:04:08,900 --> 00:04:11,910 maka kita akan membebaskan memori digunakan oleh masing-masing siswa. 74 00:04:11,910 --> 00:04:15,310 Tapi tentunya kita bisa saja menggabungkan ini menjadi satu besar untuk loop. 75 00:04:15,310 --> 00:04:18,650 >> Sekarang mari kita simpan, kompilasi, dan menjalankan program ini. 76 00:04:18,650 --> 00:04:26,850 membuat structs 0. / structs 0, siswa nama, mari kita menyediakan David, dia akan hidup 77 00:04:26,850 --> 00:04:31,580 di Mather House, nama siswa, mari kita Lauren mengatakan, dia akan tinggal di Leverett 78 00:04:31,580 --> 00:04:36,590 House, nama siswa, Rob, dia akan tinggal di Kirkland House. 79 00:04:36,590 --> 00:04:39,440 Dan memang, David berada di Mather, Lauren adalah di Leverett, 80 00:04:39,440 --> 00:04:40,810 dan Rob di Kirkland. 81 00:04:40,810 --> 00:04:43,425