JavaRush /Blog Jawa /Random-JV /Materi tambahan kanggo ceramah CS50: Minggu 1 (Kuliah 3 l...
Masha
tingkat

Materi tambahan kanggo ceramah CS50: Minggu 1 (Kuliah 3 lan 4)

Diterbitake ing grup
cs50 ing bahan tambahan Rusia Tugas minggu 1

Gol minggu pisanan

  • Familiarize dhewe karo printah Linux dhasar
  • Sinau sintaks C dhasar lan ngrampungake sawetara masalah
  • Mulai mikir sing luwih jelas =)
IDE CS50
Kanggo ngrampungake tugas, CS50 nawakake IDE (Integrated Development Environment) ing méga. Kanggo nggunakake, gawe akun ing platform edX lan ndhaptar kursus asli . Sawise iku:
1. Bukak cs50.io, pilih edX saka dhaptar, ketik login lan sandhi, klik Kirim 2. Ketik informasi akun edX, klik Bali menyang ID.CS50.NET . cs50.io 3. Kita ngenteni: ruang virtual sampeyan lagi digawe. ruang virtual cs50 4. Rampung! cs50 iki
Command line lan miwiti CS50 IDE
Ing sisih ngisor jendela CS50 IDE, ing tab Terminal, ana jendhela terminal utawa panel baris perintah. Sampeyan bisa ngetik perintah senar ing kene: sampeyan bisa nindakake perkara sing padha karo antarmuka jendhela, contone, mbukak aplikasi, mbusak lan nggawe file, nginstal piranti lunak. Yen sampeyan ora tau nggarap baris printah, cara iki bisa uga katon rumit: sampeyan kudu ngelingi printah lan ketik tinimbang ngeklik lambang lan tombol. Kanggo sawetara ombone iki bener, banjur antarmuka jendhela iki nemokke. Nanging, baris printah kasedhiya ing kabeh sistem operasi lan admin seneng. Lan kabeh amarga kadhangkala sampeyan ora bisa urip tanpa. Ing jendhela IDE ing terminal, sampeyan bakal weruh baris misterius: jeneng panganggo:~/workspace $ ing panggonan "jeneng panganggo" bakal ana jeneng kanthi otomatis (adhedhasar data registrasi). Klik ing jendhela terminal, ketik: update50 Pencet Enter. Printah njaluk sistem kanggo nganyari. Sampeyan bakal weruh garis katon ing terminal njlèntrèhaké proses instalasi. Aja nutup CS50 IDE nganti sampeyan ndeleng Update rampung! . Sawise iki, baris gawan bakal katon maneh, sing nganggo jeneng sampeyan.
Makarya ing IDE
Ayo nggawe folder ing ngendi file sampeyan bakal disimpen. Klik-tengen ~/ruang kerja (direktori root sampeyan) ing pojok kiwa ndhuwur CS50 IDE , pilih Folder Anyar . Ganti jeneng folder pset1 (yen sampeyan salah nulis jeneng, klik-tengen folder sampeyan banjur pilih Ganti jeneng ). cs50 ide ngganti jeneng folder Banjur klik-tengen ing folder pset1 banjur pilih File Anyar . File Untilted katon, ayo ganti jeneng hello.txt . cs50 iki Klik kaping pindho ing hello.txt. Ing CS50 IDE sampeyan bakal weruh tab anyar lan lapangan ing sisih tengen ngendi sampeyan bisa ngetik. Yen sampeyan wis nindakake iki, mbayar manungsa waé menyang simbol bintang (*) sing katon sadurunge jeneng berkas ing tab - indikator sing wis owah-owahan ing file, nanging ora disimpen. Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 1 Simpen file kanthi pindhah menyang *File> Simpen utawa nggunakake printah + S (ing mesin Apple) utawa Ctrl + S (ing PC). Tanda bintang kudu ilang. Ayo priksa manawa file kasebut ana ing ngendi. Ayo iki nggunakake baris printah, iku wektu kanggo njaluk digunakake kanggo :). Kaya sadurunge, baris aktif ing terminal katon kaya iki: username:~/workspace $ Workspace - direktori kerja saiki (sing mbukak ing lingkungan kerja). Tilde (~) nuduhake direktori root (ruang kerja dumunung ing njero). Elinga yen ruang kerja ing terminal padha karo lambang ~ / ruang kerja ing pojok kiwa ndhuwur IDE CS50. Ayo padha latihan. Klik ing ngendi wae ing terminal lan ketik baris printah ls banjur pencet Ketik. Loro huruf cilik iki - cendhak kanggo "dhaftar" - bakal mbukak dhaptar file lan folder sing ana ing direktori ruang kerja saiki. Antarane liyane, sampeyan bakal weruh pset1 sing digawe ! Saiki ayo mbukak folder kita nggunakake printah. Kita ngetik cd pset1 utawa luwih verbosely: cd ~/workspace/pset1 Printah cd (ganti direktori) ngganti direktori aktif, ing kasus kita kanggo ~/pset1 Baris aktif wis diganti dadi username:~/workspace/pset1 $ Iki nandheske yen sampeyan saiki ing direktori ~/workspace/pset1 (baris stands for "Aku ing pset1 nang ruang kerja. folder, kang ana ing folder ROOT, dilambangaké dening ~"). Saiki ketik ls Sampeyan bakal weruh file hello.txt ! Yen sampeyan ngeklik jeneng ing terminal, boten mengkono: iku teks, lan ora menehi aktif link, nanging nandheske sing hello.txt ing ngendi kudune.Ketik cd Yen sampeyan nulis mung printah cd dhewe, nanging ora nyedhiyani bantahan (yaiku, jeneng folder iku kudu pindhah menyang), bakal bali sampeyan menyang direktori root standar, supaya sampeyan bakal weruh gambar ing ngisor iki ing baris aktif: username:~ $ Kanggo bali menyang folder pset1, pencet cd workspace и нажмите Enter. Затем cd pset1 и снова Enter. Также вы можете заменить эти две команды одной, подлиннее: cd workspace/pset1
Hello, C!
Akhire, wayahe wis teka! Ayo miwiti program. Ing folder pset1 ing IDE, nggawe file sing diarani hello.c (ekstensi dibutuhake), bukak tab anyar (aku mikir sampeyan ngelingi carane nindakake iki saka paragraf sadurunge). PENTING! Huruf kudu huruf cilik, Linux sensitif huruf cilik. Hello.c lan hello.c iku file beda. Ing sisih tengen jendhela CS50 IDE, ketik persis teks sing padha ndeleng ing ngisor iki. Ya, sampeyan bisa nyalin, nanging luwih migunani kanggo ngetik. Huruf kasebut beda-beda warna amarga CS50 IDE nduweni panyorot sintaks. Iki nyorot blok teks kanthi warna supaya luwih gampang diwaca. Werna ora disimpen ing file kasebut, nanging mung katon ing IDE. Yen padha ana, banjur IDE mangertos C, lan sampeyan nuduhake yen iku C ing extension file (* .c). Yen sampeyan nelpon file sing padha hello.txt, teks bakal dadi siji werna. Priksa manawa sampeyan ngetik kabeh persis kaya ing conto, yen ora, sampeyan bakal nyekel bug pisanan =). Maneh kita tarik manungsa waé kanggo prabédan antarane huruf cilik lan huruf gedhe. Karakter \n mindhah kursor menyang baris sabanjure, lan teks sing diketik sabanjure ora bakal tetep bebarengan karo output program. Oh ya, lan aja lali babagan titik koma (;). Iki minangka pemisah penting kanggo pernyataan program; C ora pengin bisa digunakake tanpa kasebut. Klik File > Simpen (utawa printah- utawa Ctrl-s). Elinga yen tanda bintang ing ngarepe jeneng berkas wis ilang? Yen ya, owah-owahan wis disimpen. Klik ing ngendi wae ing jendhela terminal ing ngisor kode sampeyan lan priksa manawa sampeyan ana ing ~/workspace/pset1 (yen ora, cd-klik banjur pencet Enter, banjur cd workspace/pset1 lan Ketik maneh). Baris aktif sampeyan kudu katon kaya iki: Ayo priksa manawa file hello.c persis ing ngendi. Ketik banjur pencet Ketik. Apa sampeyan ndeleng hello.c uga? Yen ora, bali sawetara langkah lan gawe file ing direktori sing dikarepake maneh. ... Saiki teka wayahe solemn: kita nyabrang driji lan ... kita ngetik: lan karo driji kita nyabrang kita pencet Enter. Persis salam, dudu halo.c. Yen kabeh sing sampeyan deleng ing ngarep sawise tumindak iki yaiku baris aktif kapindho, sing katon persis kaya sadurunge, mula kabeh bisa digunakake! Kode sumber sampeyan wis diterjemahake menyang kode mesin utawa obyek (yaiku, ing urutan 0s lan 1s). Saiki kode iki bisa dieksekusi (yaiku, program kasebut bisa ditindakake!). Kanggo nindakake iki, ketik: ing baris printah, penet Enter. Yen sampeyan ora ngganti teks terlampir antarane "" s, sampeyan bakal weruh ing ngisor iki: Yen saiki ngetik printah banjur pencet Ketik, sampeyan bakal weruh file hello anyar, bebarengan karo hello.c lan hello.txt. Salam pisanan kudu duwe tanda bintang sawise jeneng, sing menehi tandha manawa iki minangka file sing bisa dieksekusi, yaiku, sing sampeyan miwiti program kasebut. #include int main(void) { printf("hello, world\n"); } username:~/workspace/pset1 $lsmake hello./hellohello, worldls
bug?
Yen sawise printah nggawe sampeyan ndeleng kasalahan, iku wektu kanggo debugging pisanan! Prasasti kaya "deklarasi sing dikarepake" tegese sampeyan salah ketik ing endi wae. Priksa kode ing ndhuwur maneh, mung ati-ati banget babagan kabeh rincian. manungsa waé! Katrangan kesalahan diwenehake ing basa Inggris. Yen ora jelas, gunakake mesin telusur, Google Translate, utawa takon ing komentar. Yen sampeyan wis mbenerake kesalahane, aja lali simpen kode nggunakake File> Save (utawa printah- utawa Ctrl-s), klik ing njero jendhela terminal maneh banjur ketik make hello (Cukup priksa manawa sampeyan ana ing ~ /workspace/pset1 pisanan). Yen ora ana kesalahan maneh, jalanake program kasebut kanthi ngetik printah kasebut. ./hello Ing teori, frasa sing ditresnani kudu katon ing ngarep sampeyan, dilebokake ing tanda petik operator printf, sing prentah "print". Yen jendhela terminal katon cilik banget, klik ing bunder plus (+) lambang jejere hello.c.
Priksa bener
Aplikasi check50 dibangun ing CS50 IDE. Kerjane saka baris printah lan mriksa sawetara program kanggo kasalahan. Yen sampeyan durung ana, pindhah menyang direktori ~/workspace/pset1 kanthi mbukak printah ing terminal: cd ~/workspace/pset1 Saiki mbukak ls sampeyan bakal weruh paling file hello.c. Priksa manawa jeneng berkas katon kaya iki lan ora, ngomong, Hello.c utawa hello.C. Sampeyan bisa ngganti jeneng file kanthi mbukak mv source destination sumber printah - jeneng berkas saiki, tujuan - jeneng berkas anyar. mv (saka pamindhahan Inggris) minangka sarana ganti jeneng. Yen sampeyan ora sengaja menehi jeneng file Hello.c, ketik baris: mv Hello.c hello.c Sawise nggawe manawa file kasebut persis diarani hello.c, ayo nelpon program mriksa check50. Elinga yen 2015.fall.pset1.hello minangka pengenal unik kanggo masalah "hello world". check50 2015.fall.pset1.hello hello.c Yen program wis kaleksanan bener, sampeyan bakal weruh: Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 2 Green smiley pasuryan tegese test liwati. Sampeyan uga bisa ndeleng URL ing ngisor output check50, nanging mung kanggo karyawan (Nanging, yen sampeyan kasengsem, mriksa metu!). check50 mbukak 3 tes: apa file hello.c ana, apa hello.c kompilasi, lan apa aplikasi mrodhuksi baris sing ngandika "hello, donya \ n". Yen sampeyan ndeleng emoticon abang sedih, tegese sampeyan duwe bug. :( 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 Ing kene check50 ora nemokake hello.c, lan smiley abang nuduhake yen sampeyan salah ing jeneng utawa ngunggah file menyang panggonan sing salah. Emoticon kuning "netral" tegese tes ora mlaku. Lan ing ngendi bisa diwiwiti yen program ora nemokake file sing kudu dipriksa? Punika pilihan liyane sing bakal pop munggah yen sampeyan ngganti teks sing printf () fungsi kudu output: :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" check50 laporan sing baris hello, donya \ n iki samesthine, nanging liyane katon. check50 ora count TCTerms kanggo ngrampungake mesthi, nanging mriksa apa kasil saka assignment beda-beda saka apa samesthine. Lan ngidini sampeyan verifikasi iki sadurunge ngonfirmasi kabeneran tugas sajrone kursus kasebut (kita bakal menehi pitutur marang kowe carane nindakake iki mengko).
Dasar C: Perbandingan karo Scratch
Hello donya ing Scratch lan C:
Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 3 #include int main(void) { printf("hello, world\n"); }
  • Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 4nggantosi fungsi sing prints "tembung" saka sprite menyang gelembung komik ing Scratch, ana fungsi printf ing C sing nindakake bab sing padha, mung tanpa kartun.
  • utama - ing basa Inggris - "utama". Titik entri menyang program. Podho karo Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 5.
Siklus tanpa wates
Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 6 diterjemahake menyang C: while (true) { printf("hello, world\n"); } nalika (bener) nindakake perkara sing padha: loop terus kerjane nalika (nalika) nilai kasebut bener (ekspresi Boolean "bener" utawa "siji"). Loop iki bakal mbukak endlessly.
Daur ulang sing nampilake frasa ing layar kaping 10
Scratch Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 7 C for (int i = 0; i < 10; i++) { printf("hello, world!\n"); } i minangka variabel counter; nilai kasebut diganti dening operator increment i++, nambah 1 ing saben pengulangan loop. Kaping pisanan, i diwenehi nilai 0 nggunakake operator assignment =. manungsa waé! Kaya ing Jawa, ing kesetaraan C dilambangake karo ==, operator penugasan =. Tegese, a = 5 tegese variabel a wis diwenehi nilai 5, lan (a= =5) tegese ekspresi Boulogne (yen a padha karo 5, mula ekspresi kasebut bener, yen ora padha, banjur salah) . Daur ulang bakal mandheg nalika aku "tuwuh" dadi 9. Iku gampang kanggo ngetung, daur ulang bakal kaleksanan 10 kaping. Dadi, yen sampeyan kudu mbaleni soko kaping pirang-pirang, ing C sampeyan nemtokake kanggo daur ulang (int i = 0; i <10; i++). Conto liyane: Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 8 Lan bab sing padha diterjemahake menyang C: int counter = 0; while (true) { printf("%i\n", counter); counter++; }
  • nilai toko counter ing C lan Scratch. Ing C kita nyetel int counter = 0 tinimbang Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 9.
  • We menehi tandha jinis variabel minangka int kanggo klarifikasi: i minangka integer (saka integer Inggris, wutuh).
  • Tandha %i sing kita gunakake ing printf ing baris papat minangka placeholder sing ngandhani kita kanggo nyithak integer desimal, kaya sing kita pitutur marang printf kanggo ngganti placeholder karo nilai sing dijupuk variabel counter.
Ekspresi Boolean
Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 10 Iku padha karo (x < y) ((x < y) && (y < z))
kahanan
Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 11 Lan padha karo "telek": Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 12 Kepiye babagan frasa pisanan sing ora bisa dingerteni? Liyane babagan iki mengko, ing bagean "Perpustakaan". #include
Pranyatan kondisional
Wong lanang iki mriksa apa sawetara kondisi (ekspresi logis, pitakonan sing mung bisa dijawab kanthi "ya" utawa "ora") bener, lan yen ya, banjur nindakake sawetara tumindak sing ana gandhengane karo kondisi kasebut. Tuladha saka urip: yen udan (anggap yen udan) lan aku ana ing njaba (aku ana ing njaba nalika udan), aku mbukak payung. if (condition) { //исполнить, если meaning истинно } Opsi sing luwih rumit: yen kondisi kasebut wis ditemtokake, tumindak, yen ora, tumindak liyane. if (condition) { //выполнить действие } else { //выполнить другое действие, если condition ложно } Conto: yen sampeyan luwih saka 18, sarujuk akses. Yen kurang, ora sarujuk. Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 12
Operator pilihan
switch (n) { case const1: // если n equals const1, выполнить break; // condition совершилось — выйти из выбора case const2: // если n equals const2, выполнить break; ... default: // если n не equals ни одной из констант, выполнить break; } Conto: yen n = 50, print "CS50 punika Pengantar Ilmu Komputer I", yen n = 51, print "CS51 iku Pengantar Ilmu Komputer II", digunakake print "Nuwun sewu, Aku ora menowo kelas sing!" 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; }
Siklus
nalika: mriksa kawontenan, banjur nglakokaké tumindak nalika kawontenan bener while (condition) { // выполнять, пока истина } do / nalika iku beda ing sing pisanan nindakake tumindak tanpa mriksa kondisi, lan mung mriksa iku. Yen kondisi bener, iku mbaleni tumindak nganti kondisi dadi palsu. do { ) // выполнять, пока истина } while (condition); Daur ulang kanggo mbaleni tumindak kaping pirang-pirang sing ditemtokake. Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 13 Daur ulang bisa disusun ing saben liyane. Ing kasus iki, ing saben langkah saka daur ulang njaba, daur ulang njero bakal rampung rampung. Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 14
Jinis Data Dasar ing C
jinis data dhasar ing C
Pustaka C
Sampeyan bisa uga wis kepingin weruh apa baris pisanan program C tegese: Apa peran lan bisa kanggo nindakake tanpa iku? Baris #include nindakake perkara sing penting banget: kalebu perpustakaan kode sing wis ditulis ing program sampeyan. Jeneng perpustakaan sing disambungake dilampirake ing kurung sudut (<>) lan duwe ekstensi (.h). Yen ora ana perpustakaan, mula apa wae, sanajan tumindak sing paling dhasar, kudu dicritakake bola-bali saben wektu. Pustaka kita sambungake#include ngandhut fungsi input / output. Iki ngidini kita nggunakake fungsi printf () kanggo print menyang layar. Yaiku, yen kita durung nulis baris #include , nanging ninggalake fungsi printf () ing awak program; nalika kita nyoba kanggo mbukak, kita bakal nampa kesalahan! Amarga tanpa perpustakaan iki compiler ora ngerti apa printf (). Ana perpustakaan standar, padha nggawe kosakata basa. Fungsi printf () ora dibangun ing komputer, nanging kalebu ing perpustakaan standar basa C. Sing, sawetara programmer sadurunge wrote lan klebu ing perpustakaan. Saiki wong liya bisa nggunakake tanpa reinventing setir. Kanggo compiler kanggo "ngerti" iku, kita nyambung . Ana perpustakaan standar liyane sing digunakake ing proses CS50. Contone, perpustakaan strings, sing njlèntrèhaké operasi karo strings (panentu dawa, tambahan, etc.). Dibandhingake karo basa pamrograman populer liyane, jumlah perpustakaan C standar sithik banget. Nanging ana perpustakaan sing ditulis dhewe, paling asring luwih khusus. Ya, perpustakaan digawe khusus kanggo siswa CS50. Wektu kanggo nggawe cathetan penting: saliyane nulis program lan ngrampungake masalah nggunakake kode sampeyan dhewe, pangembang sing apik duwe katrampilan penting liyane: kawruh babagan alat sing wis ditulis lan kemampuan kanggo nggunakake (perpustakaan wong liya) ora kanggo sampah wektu reinventing "wheel". Dadi, yen sampeyan lagi ngrampungake masalah sing angel utawa rumit sing katon umum, sinau kanggo takon dhewe: "Apa wong liya nulis solusi kasebut?" Kemungkinan apik sing iki cilik, lan sampeyan bisa nemokake fungsi iki ing perpustakaan ana. Ing istilah teknis, perpustakaan minangka file binar sing diprodhuksi kanthi nggabungake koleksi file obyek nggunakake linker. File obyek yaiku file kanthi ekstensi (*.o) sing sampeyan entuk nalika sampeyan ngumpulake aplikasi.
Struktur perpustakaan C
Когда программист пишет библиотеку, code распределяется по двум типам файлов — заголовочный файл (header, расширение *.h) и файл реализации (implementation, расширение *.c). Заголовочный файл содержит code, описывающий ресурсы библиотеки, которые вы можете использовать. То есть описания переменных, функций, структур, типов и прочее. Если вам интересно, что содержит та or иная библиотека, нужно заглянуть именно в заголовочный файл. В терминале CS50 IDE (и других средах Linux) вы можете вызвать приложение less для просмотра файлов и открыть с его помощью интересующую вас библиотеку: less /usr/include/stdio.h Файл откроется прямо в терминале. Правда, для новичков он будет очень трудночитаемым. Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 15 Whatбы выйти из less, нажмите q на клавиатуре. Заголовочный файл не содержит code функций, что служит примером очень важного понятия — сокрытия данных or инкапсуляции. Пользователю системы незачем знать «внутренности» библиотек, ему достаточно, чтобы она работала. Если вы прошерстите stdio.h, то не найдете там реализации printf(), хотя How её использовать, вы уже знаете. Это сделано для того, чтобы защитить данные от вмешательства, которое порой может плохо отразиться на системе. Так, если кто-то изменит реализацию функции printf() в библиотеке, это отразится на всех тех программах, которые её используют. Любознательным будет интересно, где спрятана реализация. Согласно конвенции (соглашения, принятые в мире программирования) такой code хранят в файле с расширением (*.c). После компиляции библиотеки на основе двух файлов с одинаковым именем, но разным расширением создается an objectный файл, который собран так, чтобы создать файл с двоичным codeом библиотеки. Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 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); Давайте перепишем нашу программу так, чтобы пользователь сам вводил число, которое нужно возвести в квадрат. Materi tambahan kanggo ceramah CS50: Minggu 1 (kuliah 3 lan 4) - 17
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION