JavaRush /Blog Java /Random-MS /Bahan tambahan untuk kuliah CS50: Minggu 1 (kuliah 3 dan ...
Masha
Tahap

Bahan tambahan untuk kuliah CS50: Minggu 1 (kuliah 3 dan 4)

Diterbitkan dalam kumpulan
cs50 dalam bahan tambahan Rusia Tugasan minggu 1

Matlamat minggu pertama

  • Biasakan diri anda dengan arahan asas Linux
  • Pelajari sintaks asas C dan selesaikan beberapa masalah
  • Mula berfikir dengan lebih jelas =)
IDE CS50
Untuk menyelesaikan tugas, CS50 menawarkan IDE (Persekitaran Pembangunan Bersepadu) dalam awan. Untuk menggunakannya, buat akaun pada platform edX dan daftar untuk kursus asal . Selepas itu:
1. Pergi ke cs50.io, pilih edX daripada senarai, masukkan log masuk dan kata laluan anda, klik Hantar 2. Masukkan maklumat akaun edX anda, klik Return to ID.CS50.NET . cs50.io 3. Kami sedang menunggu: ruang maya anda sedang dibuat. ruang maya cs50 4. Selesai! cs50 idea
Baris arahan dan melancarkan CS50 IDE
Di bahagian bawah tetingkap CS50 IDE, dalam tab Terminal, terdapat tetingkap terminal atau panel baris arahan. Anda boleh memasukkan arahan rentetan di sini: anda boleh melakukan perkara yang sama seperti antara muka tetingkap, contohnya, melancarkan aplikasi, memadam dan mencipta fail, memasang perisian. Jika anda tidak pernah menggunakan baris arahan, kaedah ini mungkin kelihatan menyusahkan: anda perlu mengingati arahan dan menaipnya dan bukannya mengklik pada ikon dan butang. Sedikit sebanyak ini benar, maka antara muka tetingkap dicipta. Walau bagaimanapun, baris arahan tersedia dalam semua sistem pengendalian dan pentadbir menyukainya. Dan semuanya kerana kadang-kadang anda tidak boleh hidup tanpanya. Dalam tetingkap IDE di terminal, anda akan melihat baris misteri: nama pengguna:~/workspace $ sebagai ganti "nama pengguna" akan ada nama yang dijana secara automatik (berdasarkan data pendaftaran anda). Klik pada tetingkap terminal, taip: update50 Tekan Enter. Perintah meminta sistem untuk mengemas kini. Anda akan melihat baris muncul dalam terminal yang menerangkan proses pemasangan. Jangan tutup CS50 IDE sehingga anda melihat Kemas kini selesai! . Selepas ini, baris lalai akan muncul semula, iaitu dengan nama anda.
Bekerja dalam IDE
Mari buat folder tempat fail anda akan disimpan. Klik kanan ~/ruang kerja (direktori akar anda) di penjuru kiri sebelah atas CS50 IDE , pilih Folder Baharu . Namakan semula folder pset1 (jika anda salah mengeja nama, klik kanan folder anda dan pilih Namakan semula ). cs50 idea menamakan semula folder Kemudian klik kanan pada folder pset1 dan pilih Fail Baru . Fail Untilted muncul, mari namakan semula hello.txt . cs50 idea Klik dua kali pada hello.txt. Dalam CS50 IDE anda akan melihat tab baharu dan medan di sebelah kanan tempat anda boleh menaip. Jika anda telah melakukan ini, perhatikan simbol asterisk (*) yang muncul sebelum nama fail pada tab - penunjuk yang perubahan telah dibuat pada fail, tetapi tidak disimpan. Bahan tambahan untuk kuliah CS50: Minggu 1 (kuliah 3 dan 4) - 1 Simpan fail dengan pergi ke *Fail > Simpan atau gunakan arahan + S (pada mesin Apple) atau Ctrl + S (pada PC). Asterisk sepatutnya hilang. Mari semak sama ada fail itu berada di tempat yang sepatutnya. Mari lakukan ini menggunakan baris arahan, sudah tiba masanya untuk membiasakannya :). Seperti sebelum ini, baris aktif dalam terminal kelihatan seperti ini: username:~/workspace $ Ruang kerja - direktori kerja semasa (yang terbuka dalam persekitaran kerja). Tilde (~) menunjukkan direktori akar (ruang kerja terletak di dalamnya). Ambil perhatian bahawa ruang kerja dalam terminal adalah sama dengan ikon ~/ruang kerja di sudut kiri atas IDE CS50. Mari berlatih. Klik di mana-mana di terminal dan taip baris arahan ls dan tekan Enter. Kedua-dua huruf kecil ini - singkatan untuk "senarai" - akan memaparkan senarai fail dan folder yang terletak di dalam direktori ruang kerja semasa. Antara lain, anda akan melihat pset1 yang anda buat ! Sekarang mari buka folder kami menggunakan arahan. Kami menaip cd pset1 atau lebih bertele-tele: cd ~/workspace/pset1 Perintah cd (tukar direktori) menukar direktori aktif, dalam kes kami kepada ~/pset1 Baris aktif telah bertukar kepada username:~/workspace/pset1 $ Ini mengesahkan bahawa anda kini berada dalam direktori ~/workspace/pset1 (baris bermaksud "Saya dalam pset1 di dalam ruang kerja folder, yang berada dalam folder akar, dilambangkan dengan ~"). Sekarang taip ls Anda akan melihat fail hello.txt ! Jika anda mengklik pada nama dalam terminal, tiada apa yang berlaku: ia adalah teks, dan ia tidak memberikan yang aktif pautan, tetapi ia mengesahkan bahawa hello.txt berada di tempat yang sepatutnya. Taip cd Jika anda menulis hanya arahan cd itu sendiri, tetapi tidak memberikan hujah (iaitu, nama folder yang sepatutnya dituju), ia akan mengembalikan anda ke direktori akar lalai, jadi anda akan melihat gambar berikut pada baris aktif: username:~ $ Untuk kembali ke folder pset1, dail cd workspace dan tekan Enter. Kemudian cd pset1 Masukkan lagi. Anda juga boleh menggantikan kedua-dua arahan ini dengan satu yang lebih tulen: cd workspace/pset1
Hello, C!
Akhirnya, saat ini telah tiba! Mari mulakan pengaturcaraan. Di dalam folder pset1 kami dalam IDE, buat fail yang dipanggil hello.c (sambungan diperlukan), bukanya dalam tab baharu (kami fikir anda masih ingat bagaimana untuk melakukan ini dari perenggan sebelumnya). PENTING! Huruf mestilah huruf kecil, Linux sensitif huruf besar. Hello.c dan hello.c ialah fail yang berbeza. Di sebelah kanan tetingkap CS50 IDE, taipkan teks yang sama seperti yang anda lihat di bawah. Ya, anda boleh menyalinnya, tetapi lebih berguna untuk menaipnya. Huruf adalah warna yang berbeza kerana IDE CS50 mempunyai penyerlahan sintaks. Ia menyerlahkan blok teks dengan warna untuk kebolehbacaan yang lebih baik. Warna tidak disimpan dalam fail itu sendiri; ia hanya boleh dilihat dalam IDE. Jika mereka berada di sana, maka IDE memahami C, dan anda menunjukkan bahawa ia adalah C dalam sambungan fail (*.c). Jika anda memanggil fail yang sama hello.txt, teks itu akan menjadi satu warna. Pastikan anda menaip semuanya betul-betul seperti dalam contoh, jika tidak, anda akan menangkap pepijat pertama =). Sekali lagi kami menarik perhatian anda kepada perbezaan antara huruf kecil dan huruf besar. Aksara \n menggerakkan kursor ke baris seterusnya, dan teks yang dimasukkan seterusnya tidak akan melekat bersama-sama dengan output program. Oh ya, dan jangan lupa tentang koma bertitik (;). Ini adalah pemisah penting untuk pernyataan program; C tidak akan mahu berfungsi tanpanya. Klik Fail > Simpan (atau perintah atau Ctrl-s). Perhatikan bahawa asterisk di hadapan nama fail telah hilang? Jika ya, maka perubahan telah disimpan. Klik mana-mana dalam tetingkap terminal di bawah kod anda dan pastikan anda berada di dalam ~/workspace/pset1 (jika tidak, klik cd dan tekan Enter, kemudian cd workspace/pset1 dan Enter semula). Baris aktif anda sepatutnya kelihatan seperti ini: Mari pastikan fail hello.c berada di tempat yang sepatutnya. Taip dan tekan Enter. Adakah anda melihat hello.c juga? Jika tidak, kembali beberapa langkah dan buat fail dalam direktori yang dikehendaki sekali lagi. ... Kini tiba saat yang khidmat: kita menyilang jari dan... kita menaip: dan dengan bersilang jari kita tekan Enter. Tepat hello, bukan hello.c. Jika semua yang anda lihat di hadapan anda selepas tindakan ini ialah baris aktif kedua, yang kelihatan sama seperti yang sebelumnya, maka semuanya berfungsi! Kod sumber anda telah diterjemahkan ke dalam mesin atau kod objek (iaitu, dalam urutan 0s dan 1s). Sekarang kod ini boleh dilaksanakan (iaitu, program boleh dijalankan!). Untuk melakukan ini, taip: dalam baris arahan, tekan Enter. Jika anda tidak menukar teks yang disertakan di antara "", anda akan lihat di bawah: Jika anda kini menaip arahan dan tekan Enter, anda akan melihat fail hello baharu, bersama dengan hello.c dan hello.txt. Helo pertama harus mempunyai asterisk selepas nama, yang menandakan bahawa ini ialah fail boleh laku, iaitu fail yang anda gunakan untuk melancarkan program. #include int main(void) { printf("hello, world\n"); } username:~/workspace/pset1 $lsmake hello./hellohello, worldls
pepijat?
Jika selepas arahan buat anda melihat ralat, sudah tiba masanya untuk penyahpepijatan pertama! Inskripsi seperti "pengisytiharan yang dijangkakan" bermakna anda membuat kesilapan menaip di suatu tempat. Semak kod di atas sekali lagi, cuma berhati-hati tentang semua butiran. Perhatian! Penerangan ralat disediakan dalam bahasa Inggeris. Jika tidak jelas, gunakan enjin carian, Terjemahan Google, atau tanya soalan dalam ulasan. Sebaik sahaja anda telah membetulkan ralat, jangan lupa untuk menyimpan kod anda menggunakan Fail > Simpan (atau perintah- atau Ctrl-s), klik pada bahagian dalam tetingkap terminal sekali lagi dan taip make hello (Hanya pastikan anda berada dalam ~ /ruang kerja/pset1 dahulu ). Jika tiada lagi ralat, jalankan atur cara dengan menaip arahan. ./hello Secara teorinya, frasa berharga akan muncul di hadapan anda, disertakan dalam tanda petikan operator printf, yang mengarahkan "cetak". Jika tetingkap terminal kelihatan terlalu kecil, klik pada ikon tambah (+) yang dilingkari di sebelah hello.c.
Menyemak ketepatan
Aplikasi check50 dibina ke dalam CS50 IDE. Ia berfungsi dari baris arahan dan menyemak beberapa program untuk ralat. Jika anda belum berada di sana, pergi ke direktori ~/workspace/pset1 dengan menjalankan arahan dalam terminal: cd ~/workspace/pset1 Sekarang jalankan ls anda akan melihat sekurang-kurangnya fail hello.c. Pastikan nama fail kelihatan seperti ini dan bukan, katakan, Hello.c atau hello.C. Anda boleh menamakan semula fail dengan menjalankan mv source destination sumber arahan - nama fail semasa, destinasi - nama fail baharu. mv (daripada langkah Inggeris) ialah utiliti penamaan semula. Jika anda secara tidak sengaja menamakan fail Hello.c, taip baris: mv Hello.c hello.c Selepas memastikan fail itu betul-betul dipanggil hello.c, mari panggil program semak check50. Sila ambil perhatian bahawa 2015.fall.pset1.hello ialah pengecam unik untuk masalah "hello world". check50 2015.fall.pset1.hello hello.c Jika program dilaksanakan dengan betul, anda akan melihat: Bahan tambahan untuk kuliah CS50: Minggu 1 (kuliah 3 dan 4) - 2 Wajah senyuman hijau bermakna ujian telah lulus. Anda juga boleh melihat URL di bahagian bawah output check50, tetapi ia hanya untuk pekerja (namun, jika anda berminat, semaknya!). check50 menjalankan 3 ujian: sama ada fail hello.c wujud, sama ada hello.c menyusun dan sama ada aplikasi menghasilkan baris yang menyatakan "hello, world\n". Jika anda melihat emotikon merah sedih, ini bermakna anda mempunyai pepijat. :( hello.c exists \ expected hello.c to exist :| hello.c compiles \ can't check until a frown turns upside down :| prints "hello, world\n" \ can't check until a frown turns upside down Di sini check50 tidak menemui hello.c, dan senyuman merah menunjukkan bahawa anda sama ada membuat kesilapan dalam nama atau memuat naik fail ke tempat yang salah. Emotikon "neutral" kuning bermakna ujian tidak dijalankan. Dan di mana mereka boleh bermula jika program tidak menemui fail yang perlu diperiksa? Berikut ialah pilihan lain yang akan muncul jika anda menukar teks yang harus dikeluarkan oleh fungsi printf(): :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" check50 melaporkan bahawa baris hello, world\n telah dijangka, tetapi sesuatu yang lain muncul. check50 tidak mengira mata untuk melengkapkan kursus, tetapi menyemak sama ada hasil tugasan berbeza daripada apa yang dijangkakan. Dan ini membolehkan anda mengesahkan perkara ini sebelum mengesahkan ketepatan tugasan dalam kursus (kami akan memberitahu anda cara melakukannya kemudian).
Asas C: Perbandingan dengan Gores
Hello dunia dalam Scratch dan C:
Bahan tambahan untuk kuliah CS50: Minggu 1 (kuliah 3 dan 4) - 3 #include int main(void) { printf("hello, world\n"); }
  • Bahan tambahan untuk kuliah CS50: Minggu 1 (kuliah 3 dan 4) - 4mewakili fungsi yang mencetak "perkataan" sprite ke dalam gelembung komik dalam Scratch, terdapat fungsi printf dalam C yang melakukan perkara yang sama, hanya tanpa kartun.
  • utama - dalam bahasa Inggeris - "utama". Titik masuk ke program. Sama seperti Bahan tambahan untuk kuliah CS50: Minggu 1 (kuliah 3 dan 4) - 5.
Kitaran yang tidak berkesudahan
Bahan tambahan untuk kuliah CS50: Minggu 1 (kuliah 3 dan 4) - 6 diterjemahkan ke dalam C: while (true) { printf("hello, world\n"); } while (true) melakukan perkara yang sama: gelung meneruskan kerjanya manakala (sementara) nilainya benar (ungkapan Boolean "true" atau "one"). Gelung ini akan berjalan tanpa henti.
Gelung yang memaparkan frasa pada skrin 10 kali
Scratch Bahan tambahan untuk kuliah CS50: Minggu 1 (kuliah 3 dan 4) - 7 C for (int i = 0; i < 10; i++) { printf("hello, world!\n"); } i ialah pembolehubah pembilang; nilainya ditukar oleh operator kenaikan i++, meningkatkannya sebanyak 1 pada setiap lelaran gelung. Pada mulanya, i diberikan nilai 0 menggunakan operator penugasan =. Perhatian! Seperti dalam Java, dalam kesamaan C dilambangkan dengan ==, pengendali tugasan =. Iaitu, a = 5 bermakna pembolehubah a telah diberikan nilai 5, dan (a= =5) bermaksud ungkapan Boulogne (jika a bersamaan dengan 5, maka ungkapan itu benar, jika tidak sama, maka palsu) . Gelung akan berhenti apabila saya "tumbuh" kepada 9. Ia mudah dikira, gelung akan dilaksanakan 10 kali. Jadi, jika anda perlu mengulang sesuatu beberapa kali, dalam C anda mentakrifkan gelung untuk (int i = 0; i < 10; i++). Contoh lain: Bahan tambahan untuk kuliah CS50: Minggu 1 (kuliah 3 dan 4) - 8 Dan perkara yang sama diterjemahkan ke dalam C: int counter = 0; while (true) { printf("%i\n", counter); counter++; }
  • kaunter menyimpan nilai dalam C dan Scratch. Dalam C kita tetapkan int counter = 0 dan bukannya Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 9.
  • Kami menandakan jenis pembolehubah sebagai int untuk penjelasan: i ialah integer (daripada integer Inggeris, keseluruhan).
  • Tanda %i yang kami gunakan dalam printf pada baris empat ialah pemegang tempat yang memberitahu kami untuk mencetak integer perpuluhan, sama seperti kami memberitahu printf untuk menggantikan ruang letak dengan nilai yang diambil oleh pemboleh ubah pembilang.
Ungkapan Boolean
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 10 Ia sama seperti (x < y) ((x < y) && (y < z))
syarat
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 11 Dan persamaan "sial": Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12 Bagaimana dengan frasa pertama yang tidak dapat difahami? Lebih lanjut mengenai perkara ini kemudian, dalam bahagian "Perpustakaan". #include
Kenyataan bersyarat
Lelaki ini menyemak sama ada beberapa syarat (ungkapan logik, soalan yang hanya boleh dijawab dengan "ya" atau "tidak") adalah benar, dan jika ya, maka mereka melakukan beberapa tindakan yang terikat dengan syarat ini. Contoh kehidupan: jika hujan (dengan andaian hujan) dan saya berada di luar (saya berada di luar apabila hujan), saya membuka payung saya. if (condition) { //исполнить, если meaning истинно } Pilihan yang lebih rumit: jika syarat dipenuhi, ambil tindakan; jika tidak, ambil tindakan lain. if (condition) { //выполнить действие } else { //выполнить другое действие, если condition ложно } Contoh: jika anda berumur lebih daripada 18 tahun, luluskan akses. Jika kurang, ia tidak akan diluluskan. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12
Operator pemilihan
switch (n) { case const1: // если n equals const1, выполнить break; // condition совершилось — выйти из выбора case const2: // если n equals const2, выполнить break; ... default: // если n не equals ни одной из констант, выполнить break; } Contoh: jika n = 50, cetak "CS50 ialah Pengenalan kepada Sains Komputer I", jika n = 51, cetak "CS51 ialah Pengenalan kepada Sains Komputer II", jika tidak, cetak "Maaf, saya tidak biasa dengan kelas itu!" switch (n) { case 50: printf("CS50 is Introduction to Computer Science I\n"); break; case 51: printf("CS51 is Introduction to Computer Science II\n"); break; default: printf("Sorry, I'm not familiar with that class!\n"); break; }
Kitaran
while: menyemak syarat, kemudian laksanakan tindakan semasa syarat itu benar while (condition) { // выполнять, пока истина } do/while berbeza kerana kali pertama ia melakukan tindakan tanpa menyemak syarat, dan kemudian hanya menyemaknya. Jika keadaan adalah benar, ia mengulangi tindakan sehingga keadaan menjadi palsu. do { ) // выполнять, пока истина } while (condition); Gelung for mengulangi tindakan beberapa kali tertentu. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 13 Gelung boleh bersarang antara satu sama lain. Dalam kes ini, pada setiap langkah gelung luar, gelung dalam akan dilaksanakan sepenuhnya. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 14
Jenis Data Asas dalam C
основные типы данных в C
Perpustakaan C
Anda mungkin sudah tertanya-tanya apakah maksud baris pertama program C: Apakah peranannya dan adakah boleh dilakukan tanpanya? Baris #include melakukan perkara yang sangat penting: ia termasuk perpustakaan kod yang sudah ditulis ke dalam program anda. Nama perpustakaan yang disambungkan disertakan dalam kurungan sudut (<>) dan mempunyai sambungan (.h). Jika tiada perpustakaan, maka mana-mana, walaupun tindakan yang paling asas, perlu diterangkan berulang kali setiap kali. Perpustakaan yang kami sambungkan#include mengandungi fungsi input/output. Inilah yang membolehkan kita menggunakan fungsi printf() untuk mencetak ke skrin. Iaitu, jika kita tidak menulis baris #include , tetapi meninggalkan fungsi printf() dalam badan program; apabila kami cuba menjalankannya, kami akan menerima ralat! Kerana tanpa perpustakaan ini pengkompil tidak tahu apa itu printf(). Terdapat perpustakaan standard, mereka membentuk perbendaharaan kata bahasa. Fungsi printf() tidak dibina ke dalam komputer, tetapi ia termasuk dalam perpustakaan standard C. Iaitu, beberapa pengaturcara sebelum ini menulisnya dan memasukkannya ke dalam perpustakaan. Kini orang lain boleh menggunakannya tanpa mencipta semula roda. Untuk pengkompil untuk "memahaminya", kami menyambung . Terdapat perpustakaan standard lain yang digunakan dalam proses CS50. Sebagai contoh, perpustakaan rentetan, yang menerangkan operasi dengan rentetan (menentukan panjang, penambahan, dll.). Berbanding dengan bahasa pengaturcaraan popular yang lain, bilangan perpustakaan C standard adalah sangat kecil. Tetapi terdapat perpustakaan yang ditulis sendiri, selalunya lebih khusus. Ya, perpustakaan telah dicipta khas untuk pelajar CS50. Sudah tiba masanya untuk membuat nota penting: selain menulis program dan menyelesaikan masalah menggunakan kod anda sendiri, pembangun yang baik mempunyai satu lagi kemahiran penting: pengetahuan tentang alat yang telah ditulis dan keupayaan untuk menggunakannya (perpustakaan orang lain) supaya untuk tidak membuang masa mencipta semula "roda". Jadi, jika anda sedang dalam proses menyelesaikan masalah yang membosankan atau kompleks yang kelihatan agak biasa, belajar untuk bertanya kepada diri sendiri soalan: "adakah orang lain menulis penyelesaiannya?" Kemungkinan besar perkara ini berlaku, dan anda boleh menemui fungsi ini dalam perpustakaan sedia ada. Dari segi teknikal, perpustakaan ialah fail binari yang dihasilkan dengan menggabungkan koleksi fail objek menggunakan penghubung. Fail objek ialah fail dengan sambungan (*.o) yang anda dapat apabila anda menyusun aplikasi.
Struktur perpustakaan C
Когда программист пишет библиотеку, code распределяется по двум типам файлов — заголовочный файл (header, расширение *.h) и файл реализации (implementation, расширение *.c). Заголовочный файл содержит code, описывающий ресурсы библиотеки, которые вы можете использовать. То есть описания переменных, функций, структур, типов и прочее. Если вам интересно, что содержит та or иная библиотека, нужно заглянуть именно в заголовочный файл. В терминале CS50 IDE (и других средах Linux) вы можете вызвать приложение less для просмотра файлов и открыть с его помощью интересующую вас библиотеку: less /usr/include/stdio.h Файл откроется прямо в терминале. Правда, для новичков он будет очень трудночитаемым. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 15 Whatбы выйти из less, нажмите q на клавиатуре. Заголовочный файл не содержит code функций, что служит примером очень важного понятия — сокрытия данных or инкапсуляции. Пользователю системы незачем знать «внутренности» библиотек, ему достаточно, чтобы она работала. Если вы прошерстите stdio.h, то не найдете там реализации printf(), хотя How её использовать, вы уже знаете. Это сделано для того, чтобы защитить данные от вмешательства, которое порой может плохо отразиться на системе. Так, если кто-то изменит реализацию функции printf() в библиотеке, это отразится на всех тех программах, которые её используют. Любознательным будет интересно, где спрятана реализация. Согласно конвенции (соглашения, принятые в мире программирования) такой code хранят в файле с расширением (*.c). После компиляции библиотеки на основе двух файлов с одинаковым именем, но разным расширением создается an objectный файл, который собран так, чтобы создать файл с двоичным codeом библиотеки. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 16 Author библиотеки передает программисту, который хочет её использовать, два file — с двоичным codeом, а также заголовочный файл. Таким образом, файл с исходным codeом программисту не нужен. Точнее, он может быть нужен, если программист хочет что-то поменять в самой библиотеке и перекомпorровать её под собственные нужды. Whatбы воспользоваться функциями библиотеки в своей программе нужно проделать следующее: 1. Включить заголовочный файл в программу с помощью строки #include В случае стандартных библиотек достаточно указать Name библиотеки в угловых скобках: #include <Name_библиотеки.h> Если библиотека, которую вы хотите подключить, лежит в той же папке, что и ваша программа, подключайте её следующим образом: #include “Name_библиотеки.h” 2.Присоединить бинарный файл для компиляции. Это очень важный шаг, поскольку, How мы говорor выше, заголовочный файл не содержит реализации элементов библиотеки. Whatбы это сделать, нужно вызвать компилятор clang с флагом –l и идущим непосредственно за ним названием библиотеки. Например, компонуем библиотеку cs50: clang hello –lcs50 Clang — один из компиляторов. Для компиляции можно также использовать уже знакомую вам программу make. По сути, она вызывает clang с определенными аргументами командной строки.
И снова Hello C: разбор синтаксиса простейших программ
Директива #include подключает библиотеку ввода/вывода . Программы в C состоят из функций, а те — из операторов и переменных. Функция — это кусок codeа, в котором уже есть or подаются Howие-то данные, а Howие-то данные получают в результате её исполнения. Фигурные скобки { } ограничивают тело функции — описание того, что она должна делать. printf() из стандартной библиотеки stdio выводит любую строку на экран. Строки заключаются в двойные кавычки, а символ “\n” означает перевод курсора на новую строку. Пример: функция «посчитать квадрат целого числа». Передаем функции данные, в нашем случае — число, которое нужно возвести в квадрат. Затем в ней прописывается алгоритм умножения числа на самое себя, и результат этого умножения она выдает на выходе. int sqr(int a) { return a*a; } int sqr(int a) — название функции. В скобках — её аргумент a, это то, что подается на вход функции. Это How переменная в уравнении. То есть, если мы хотим узнать квадрат числа 5, то мы вызовем нашу функцию в виде sqr(5) и получим результат 25. int — тип данных (от англ. integer — целые числа). Наша функция написана так, что мы не можем вызвать её с аргументом a = 5.5. Такая попытка выдаст ошибку, поскольку 5.5 — число дробное, а наше число должно быть целым. int перед именем функции означает тип, который должна эта функция возвращать. Он не обязательно совпадает с типом аргумента. Пример: функция, которая отнимает от целого числа 0.5: double bit_less(int a) { double b; b = a – 0.5; return b; } int main (void) — название главной функции. В одной программе может быть много функций, но, чтобы начать её выполнять, нужна функция под названием main. Слово void в скобках означает, что у этой функции нет аргументов. Внимание! main всегда возвращает int, но return для неё не обязателен. Пример функции не возвращающей значения: void sayhello(void) { printf(“hello everyone!\n”); } При вызове функции в главной программе, она выведет приветствие. Давайте напишем одну программу, в которой будет несколько функций. Тех, что мы уже создали выше. Две созданные нами функции вызовем через главную функцию main(). В C, How и любом языке, есть такой элемент, How комментарий or примечание в коле программы, предназначенное не для компьютера, а для понимания людей. Например, описание, что именно делает code. Компилятор комментариев не видит. Комментирование программ — очень важный момент, поскольку порой разобраться в чужом (и даже своем) codeе очень сложно. //пример однострочного комментария /** а это – многострочного **/ #include //функция возведения в квадрат числа a int sqr(int a) { return a*a; } //выводит приветствие void test(void) { printf ("hello everyone!\n"); } //главная функция int main(void) { test(); printf("%d\n", sqr(5)); } Почти всё, что есть в этой программе вы уже видели. Две функции — возведения в квадрат и приветствия и главная функция main, где мы последовательно вызываем эти две функции. В результате выполнения программы у нас сначала выведется приветствие, на следующей строке — квадрат 5. Обратите внимание, функция test() вызывается с пустыми скобками, потому что её аргументы определены How void.
Еще немного о вводе/выводе в C
Вы, наверное, уже успели заметить странные символы %d и %f в скобках оператора printf. Дело в том, что функция printf выводит данные в следующем обобщенном виде: рrintf ("управляющая строка", аргумент1, аргумент2,...); Управляющая строка содержит компоненты трех типов:
  • символы, которые выводятся на экран дисплея;
  • спецификаторы преобразования, которые вызывают вывод на экран очередного аргумента из последующего списка;
  • управляющие символьные константы.
Спецификатор преобразования начинается со знака % и заканчивается символом, задающим преобразование. Некоторые из таких символов:
  • с: meaningм аргумента является символ;
  • d or i: десятичное целое число;
  • f: десятичное число с плавающей точкой;
  • s: строка символов.
То есть, %d означает, что на экране появится целое десятичное, а %f — десятичное с плавающей запятой. What если нам нужно, чтобы пользователь ввёл данные с клавиатуры? Для этого можно использовать функцию scanf( ), прототип которой также лежит в библиотеке stdio. Whatбы считать с экрана вещественное число, в программе нужно написать строку scanf("%d", &a); Давайте перепишем нашу программу так, чтобы пользователь сам вводил число, которое нужно возвести в квадрат. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 17
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION