JavaRush /Java блогы /Random-KK /Дәрістерге арналған қосымша материалдар CS50: 1-апта (3 ж...
Masha
Деңгей

Дәрістерге арналған қосымша материалдар CS50: 1-апта (3 және 4-дәрістер)

Топта жарияланған
cs50 орыс тілінде қосымша материалдар 1-аптаның тапсырмалары

Бірінші аптаның мақсаттары

  • Негізгі Linux командаларымен танысыңыз
  • Негізгі C синтаксисін үйреніп, бірнеше есептерді шешіңіз
  • Анық ойлауды бастаңыз =)
IDE CS50
Тапсырмаларды орындау үшін CS50 бұлтта IDE (Біріктірілген әзірлеу ортасы) ұсынады. Оны пайдалану үшін edX платформасында тіркелгі жасаңыз және бастапқы курсқа тіркеліңіз . Осыдан кейін:
1. cs50.io сайтына өтіңіз, тізімнен edX таңдаңыз, логин мен құпия сөзді енгізіңіз, Жіберу түймесін басыңыз 2. edX тіркелгі ақпаратын енгізіңіз, ID.CS50.NET сайтына оралу түймесін басыңыз . cs50.io 3. Біз күтеміз: виртуалды кеңістік құрылуда. cs50 виртуалды кеңістік 4. Дайын! cs50 ide
Пәрмен жолы және CS50 IDE іске қосу
CS50 IDE терезесінің төменгі жағында, Терминал қойындысында терминал терезесі немесе пәрмен жолы тақтасы бар. Мұнда жол пәрмендерін енгізуге болады: терезе интерфейсімен бірдей әрекетті орындауға болады, мысалы, қолданбаларды іске қосу, файлдарды жою және жасау, бағдарламалық құралды орнату. Егер сіз ешқашан пәрмен жолымен жұмыс істемеген болсаңыз, бұл әдіс қиын болып көрінуі мүмкін: пәрмендерді есте сақтау және белгішелер мен түймелерді басудың орнына оларды теру керек. Бұл белгілі бір дәрежеде дұрыс, содан кейін терезе интерфейсі ойлап табылды. Дегенмен, пәрмен жолы барлық операциялық жүйелерде қол жетімді және әкімшілер оны жақсы көреді. Мұның бәрі кейде онсыз өмір сүре алмайтындықтан. Терминалдағы IDE терезесінде сіз жұмбақ жолды көресіз: username:~/workspace $ «пайдаланушы аты» орнына автоматты түрде жасалған атау болады (тіркеу деректеріне негізделген). Терминал терезесін басыңыз, теріңіз: update50 Enter пернесін басыңыз. Пәрмен жүйені жаңартуды сұрайды. Терминалда орнату процесін сипаттайтын жолдарды көресіз. Жаңарту аяқталғанын көрмейінше CS50 IDE жаппаңыз ! . Осыдан кейін, сіздің атыңыз жазылған әдепкі жол қайтадан пайда болады.
IDE-де жұмыс істеу
Файлдарыңыз сақталатын қалтаны жасайық. CS50 IDE жоғарғы сол жақ бұрышындағы ~/workspace (түбірлік каталог) түймесін тінтуірдің оң жақ түймешігімен басып , Жаңа қалта таңдаңыз . Pset1 қалтасының атын өзгерту (егер атауды қате жазсаңыз, қалтаны тінтуірдің оң жақ түймешігімен басып, Атын өзгерту опциясын таңдаңыз ). Содан кейін pset1 қалтасын тінтуірдің оң жақ түймешігімен басып , Жаңа файлды таңдаңыз . Untilted файлы пайда болады, оның атын hello.txt өзгертейік . hello.txt файлын екі рет басыңыз. CS50 IDE бағдарламасында сіз жаңа қойындыны және теруге болатын оң жақтағы өрісті көресіз. Егер сіз мұны жасасаңыз, қойындыдағы файл атауының алдында пайда болатын жұлдызшаға (*) назар аударыңыз - файлға өзгерістер енгізілген, бірақ сақталмаған көрсеткіш. Файлды *Файл > Сақтау тармағына өту немесе + S (Apple құрылғыларында) немесе Ctrl + S (компьютерлерде) пәрменін пайдалану арқылы сақтаңыз. Жұлдызша жоғалып кетуі керек. Файлдың болуы керек жерде екенін тексерейік. Мұны пәрмен жолын қолданып көрейік, оған үйренетін уақыт келді :). Бұрынғыдай, терминалдағы белсенді жол келесідей көрінеді: Жұмыс кеңістігі - ағымдағы жұмыс каталогы (жұмыс ортасында ашық). Тильде (~) түбірлік каталогты көрсетеді (жұмыс кеңістігі онда орналасқан). Терминалдағы жұмыс кеңістігі CS50 IDE жоғарғы сол жақ бұрышындағы ~/workspace белгішесімен бірдей екенін ескеріңіз. Жаттығу жасайық. Терминалдың кез келген жерін басып, пәрмен жолын теріп , Enter пернесін басыңыз. Бұл екі кіші әріп – «тізім» сөзінің қысқасы – ағымдағы жұмыс кеңістігі каталогында орналасқан файлдар мен қалталардың тізімін шығарады. Басқа нәрселермен қатар, сіз жасаған pset1 параметрін көресіз ! Енді пәрмен арқылы қалтаны ашайық. Біз немесе нақтырақ тереміз: cd (каталогты өзгерту) пәрмені белсенді каталогты өзгертеді, біздің жағдайда Белсенді жол болып өзгерді. Бұл сіздің қазір каталогта екеніңізді растайды (жол «Мен жұмыс кеңістігінде pset1 ішіндемін» дегенді білдіреді. қалта, ол түбірлік қалтада, ~" белгісімен белгіленеді). Енді теріңіз hello.txt файлын көресіз ! Терминалдағы атауды бассаңыз, ештеңе болмайды: бұл мәтін және ол белсенді бермейді. сілтеме, бірақ ол hello.txt болуы керек жерде екенін растайды.Түріңіз Егер сіз тек cd пәрменінің өзін жазсаңыз, бірақ дәлел келтірмесеңіз (яғни ол баратын қалтаның атауы), ол сізге қайтарады. әдепкі түбірлік каталогқа апарыңыз, осылайша белсенді жолда келесі суретті көресіз: pset1 қалтасына оралу үшін теріңіз. cs50 ide қалтасының атын өзгертуcs50 ideДәрістерге арналған қосымша материалдар CS50: 1-апта (3 және 4-дәрістер) - 1username:~/workspace $lscd pset1cd ~/workspace/pset1~/pset1username:~/workspace/pset1 $~/workspace/pset1lscdusername:~ $cd workspace және Enter пернесін басыңыз. Содан кейін cd pset1 қайтадан енгізіңіз. Сондай-ақ, осы екі пәрменді бір, анағұрлым түпнұсқасымен ауыстыруға болады: cd workspace/pset1
Сәлем, C!
Ақыры, осы сәт келді! Бағдарламалауды бастайық. IDE ішіндегі pset1 қалтасында hello.c деп аталатын файлды жасаңыз (кеңейтім қажет), оны жаңа қойындыда ашыңыз (бұны алдыңғы абзацтан қалай жасау керектігін есте қалдырамыз деп ойлаймыз). МАҢЫЗДЫ! Әріптер кіші әріп болуы керек, Linux регистрді ескереді. Hello.c және hello.c әртүрлі файлдар. CS50 IDE терезесінің оң жағында төменде көрсетілгендей дәл сол мәтінді теріңіз. Иә, оны көшіруге болады, бірақ оны теру пайдалырақ. Әріптердің түстері әртүрлі, себебі CS50 IDE-де синтаксистік бөлектеу бар. Ол жақсы оқу үшін мәтін блоктарын түспен бөлектейді. Түстер файлдың өзінде сақталмайды, олар тек IDE ішінде көрінеді. Егер олар бар болса, онда IDE C тілін түсінеді және сіз файл кеңейтімінде (*.c) оның C екенін көрсеттіңіз. Егер сіз бірдей файлды hello.txt деп атасаңыз, мәтін бір түсті болады. Барлығын мысалдағыдай тергеніңізге көз жеткізіңіз, әйтпесе сіз бірінші қатені ұстайсыз =). Тағы да назарларыңызды кіші және бас әріптердің айырмашылығына аударамыз. \n таңбасы курсорды келесі жолға жылжытады және келесі енгізілген мәтін бағдарламаның шығысымен бірге жабыспайды. Иә, нүктелі үтір (;) туралы ұмытпаңыз. Бұл бағдарлама мәлімдемелері үшін маңызды бөлгіш; С оларсыз жұмыс істегісі келмейді. Файл > Сақтау (немесе пәрмен немесе Ctrl пернелері) түймешігін басыңыз . Файл атауының алдындағы жұлдызша жоғалып кеткенін байқадыңыз ба? Егер иә болса, өзгертулер сақталған. Кодыңыздың астындағы терминал терезесінің кез келген жерін басып, ~/workspace/pset1 ішінде екеніңізді тексеріңіз (егер олай болмасаңыз, cd пернесін басып, Enter пернесін басыңыз, содан кейін cd workpace/pset1 және Enter пернесін қайта басыңыз). Сіздің белсенді жолыңыз келесідей болуы керек: hello.c файлының дәл қай жерде екеніне көз жеткізейік . Теріп , Enter пернесін басыңыз. Сіз де hello.c сайтын көресіз бе? Олай болмаса, бірнеше қадам артқа оралып, файлды қажетті каталогта қайтадан жасаңыз. ...Енді салтанатты сәт келеді: саусақтарымызды айқастырамыз және... тереміз: саусақтарымызды айқастырып Enter пернесін басамыз. Дәл сәлем, hello.c емес. Егер осы әрекеттен кейін сіздің алдыңызда бұрынғыға ұқсайтын екінші белсенді сызық болса, онда бәрі жұмыс істейді! Сіздің бастапқы codeыңыз машинаға немесе нысан codeына аударылды (яғни, 0 және 1 тізбегі бойынша). Енді бұл codeты орындауға болады (яғни, бағдарламаны іске қосуға болады!). Бұл әрекетті орындау үшін пәрмен жолында теріңіз: Enter пернесін басыңыз. Егер сіз «» таңбаларының арасына қойылған мәтінді өзгертпесеңіз, төменде көресіз: Енді пәрменді теріп , Enter пернесін бассаңыз, hello.c және hello.txt файлдарымен бірге жаңа hello файлын көресіз. Бірінші сәлемдесуде атаудан кейін жұлдызша болуы керек, ол бұл орындалатын файл, яғни бағдарламаны іске қосатын файл екенін білдіреді. #include int main(void) { printf("hello, world\n"); } username:~/workspace/pset1 $lsmake hello./hellohello, worldls
Қателер?
Егер make пәрменінен кейін қателерді көрсеңіз, бірінші жөндеудің уақыты келді! «Күтілетін мәлімдеме» сияқты жазулар бір жерде қате жібергеніңізді білдіреді. Жоғарыдағы codeты қайта тексеріңіз, жай ғана барлық мәліметтерге өте сақ болыңыз. Назар аударыңыз! Қате сипаттамалары ағылшын тілінде берілген. Егер түсініксіз болса, Google Translate іздеу жүйесін пайдаланыңыз немесе түсініктемелерде сұрақ қойыңыз. Қателерді түзетіп болғаннан кейін, файл > Сақтау (немесе пәрмен немесе Ctrl пернелері) арқылы codeты сақтауды ұмытпаңыз , терминал терезесінің ішкі жағын қайтадан басып, теріңіз make hello (тек ~ ішінде екеніңізді тексеріңіз. /workspace/pset1 бірінші ). Басқа қателер болмаса, пәрменді теру арқылы бағдарламаны іске қосыңыз.Теориялық ./hello тұрғыдан, «басып шығару» пәрменін беретін printf операторының тырнақшасына алынған құнды сөз тіркесі сіздің алдыңызда пайда болуы керек. Терминал терезесі тым кішкентай болып көрінсе, hello.c жанындағы дөңгелектелген плюс (+) белгішесін басыңыз.
Дұрыстығын тексеру
check50 қолданбасы CS50 IDE ішіне салынған. Ол пәрмен жолынан жұмыс істейді және кейбір бағдарламаларда қателерді тексереді. Егер сіз әлі жоқ болсаңыз, терминалдағы пәрменді іске қосу арқылы ~/workspace/pset1 каталогына өтіңіз: cd ~/workspace/pset1 Енді іске қосыңыз, ls сіз кем дегенде hello.c файлын көресіз. Файл атауы Hello.c немесе hello.C емес, осылай көрінетініне көз жеткізіңіз. Пәрмен көзін іске қосу арқылы файлдың атын өзгертуге болады mv source destination - ағымдағы файл атауы, тағайындалған орын - жаңа файл атауы. mv (ағылшынша move) — атауды өзгертуге арналған қызметтік бағдарлама. Егер сіз кездейсоқ Hello.c файлын атасаңыз, жолды теріңіз: mv Hello.c hello.c Файлдың дәл hello.c деп аталатынына көз жеткізгеннен кейін check50 тексеру бағдарламасын шақырайық. 2015.fall.pset1.hello «сәлем әлем» мәселесінің бірегей идентификаторы екенін ескеріңіз. check50 2015.fall.pset1.hello hello.c Егер бағдарлама дұрыс орындалса, мынаны көресіз: Дәрістерге арналған қосымша материалдар CS50: 1-апта (3 және 4-дәрістер) - 2 Жасыл смайликтер сынақтан өткенін білдіреді. Сондай-ақ, URL мекенжайын check50 шығысының төменгі жағында көруге болады, бірақ ол тек қызметкерлерге арналған (бірақ, егер сізді қызықтырса, оны тексеріңіз!). check50 3 сынақты орындайды: hello.c файлы бар ма, hello.c құрастырады ма және қолданба "сәлем, әлем\n" деген жолды шығарады ма. Егер сіз қайғылы қызыл смайликтерді көрсеңіз, бұл сізде қате бар дегенді білдіреді. :( 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 Мұнда check50 hello.c таба алмады және қызыл смайлик атауда қате жібергеніңізді немесе файлды дұрыс емес жерге жүктеп салғаныңызды білдіреді. Сары «бейтарап» эмотикондар сынақтардың орындалмағанын білдіреді. Бағдарлама тексеруді қажет ететін файлды таппаса, оларды қайдан бастауға болады? Printf() функциясы шығаруы тиіс мәтінді өзгертсеңіз, қалқымалы басқа опция мынада: :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" check50 hello, world\n жолы күтілгенін хабарлайды, бірақ басқа нәрсе пайда болды. check50 курсты аяқтау үшін ұпайларды санамайды, бірақ тапсырманың нәтижесі күтілгеннен ерекшеленетінін тексереді. Және бұл курстағы тапсырманың дұрыстығын растамас бұрын оны тексеруге мүмкіндік береді (мұны қалай орындау керектігін кейінірек айтамыз).
C Негіздері: Scratch көмегімен салыстыру
Scratch және C жүйесіндегі сәлем әлемі:
Дәрістерге арналған қосымша материалдар CS50: 1-апта (3 және 4-дәрістер) - 3 #include int main(void) { printf("hello, world\n"); }
  • Дәрістерге арналған қосымша материалдар CS50: 1-апта (3 және 4-дәрістер) - 4Scratch бағдарламасында спрайттың "сөздерін" күлкілі көпіршікке басып шығаратын функцияны білдіреді, C тілінде бірдей әрекетті тек мультфильмдерсіз орындайтын printf функциясы бар.
  • негізгі – ағылшын тілінде – “main”. Бағдарламаға кіру нүктесі. Сол сияқты Дәрістерге арналған қосымша материалдар CS50: 1-апта (3 және 4-дәрістер) - 5.
Шексіз цикл
Дәрістерге арналған қосымша материалдар CS50: 1-апта (3 және 4-дәрістер) - 6 C тіліне аударылған: while (true) { printf("hello, world\n"); } while (true) бірдей әрекетті жасайды: мән ақиқат болғанда цикл жұмысын жалғастырады («шын» немесе «бір» логикалық өрнегі). Бұл цикл шексіз орындалады.
Экранда сөз тіркесін 10 рет көрсететін цикл
Scratch Дәрістерге арналған қосымша материалдар CS50: 1-апта (3 және 4-дәрістер) - 7 C for (int i = 0; i < 10; i++) { printf("hello, world!\n"); } i санауыш айнымалы болып табылады, оның мәні циклдің әрбір итерациясында оны 1-ге арттыра отырып, i++ өсу операторы арқылы өзгертіледі. Бастапқыда i тағайындау операторының = көмегімен 0 мәні тағайындалады. Назар аударыңыз! Java тіліндегідей, С тілінде теңдік ==, тағайындау операторы = арқылы белгіленеді. Яғни, a = 5 a айнымалысына 5 мәні берілгенін, ал (a= =5) Булон өрнегін білдіреді (егер a 5-ке тең болса, онда өрнек ақиқат, тең болмаса, жалған болады) . i 9-ға «өскенде» цикл тоқтайды. Есептеу оңай, цикл 10 рет орындалады. Сонымен, бір нәрсені белгілі бір рет қайталау қажет болса, C тілінде for циклін анықтайсыз (int i = 0; i < 10; i++). Тағы бір мысал: Дәрістерге арналған қосымша материалдар CS50: 1-апта (3 және 4-дәрістер) - 8 C тіліне аударылған бірдей нәрсе: int counter = 0; while (true) { printf("%i\n", counter); counter++; }
  • есептегіш мәнді C және Scratch тілінде сақтайды. Си тілінде біз орнына int counter = 0 орнаттық Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 9.
  • Айнымалының түрін түсіндіру үшін int деп белгілейміз: i – бүтін сан (ағылшын тілінен integer, бүтін).
  • Төртінші жолдағы printf бағдарламасында қолданатын %i таңбасы бізге ондық бүтін санды басып шығаруды айтатын толтырғыш болып табылады, біз printf-ге толтырғышты санауыш айнымалы қабылдайтын мәнмен ауыстыруды айтқанымыздай.
Логикалық өрнектер
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 10 Бұл бірдей (x < y) ((x < y) && (y < z))
Шарттар
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 11 Ал «боқ» баламасы: Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12 бірінші түсініксіз фраза туралы не деуге болады? Бұл туралы кейінірек «Кітапханалар» бөлімінде. #include
Шартты сөйлемдер
Бұл балалар қандай да бір шарттың (логикалық өрнек, тек «иә» немесе «жоқ» деп жауап беруге болатын сұрақ) ақиқаттығын тексереді, егер солай болса, олар осы шартқа байланысты кейбір әрекеттерді орындайды. Өмірден мысал: жаңбыр жауса (жаңбыр жауады деп есептеп) мен сыртта болсам (жаңбыр жауса даладамын), қолшатырымды ашамын. if (condition) { //исполнить, если meaning истинно } Күрделі нұсқа: егер шарт орындалса, әрекет жасаңыз, егер орындалмаса, басқа әрекет жасаңыз. if (condition) { //выполнить действие } else { //выполнить другое действие, если condition ложно } Мысал: 18 жастан асқан болсаңыз, кіруге рұқсат беріңіз. Егер ол аз болса, ол бекітілмейді. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12
Таңдау операторы
switch (n) { case const1: // если n equals const1, выполнить break; // condition совершилось — выйти из выбора case const2: // если n equals const2, выполнить break; ... default: // если n не equals ни одной из констант, выполнить break; } Мысал: егер n = 50 болса, "CS50 - информатикаға кіріспе I", n = 51 болса, "CS51 - информатика II-ге кіріспе", әйтпесе "Кешіріңіз, мен бұл сыныппен таныс емеспін!" деп басып шығарыңыз. 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; }
Циклдер
while: шартты тексереді, содан кейін шарт ақиқат болғанда әрекетті орындайды while (condition) { // выполнять, пока истина } do/while шартты тексермей әрекетті бірінші рет орындауымен ерекшеленеді, содан кейін ғана тексереді. Шарт ақиқат болса, шарт жалған болғанша әрекетті қайталайды. do { ) // выполнять, пока истина } while (condition); for циклі әрекетті белгілі бір рет қайталайды. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 13 Циклдерді бір-бірінің ішіне салуға болады. Бұл жағдайда сыртқы циклдің әрбір қадамында ішкі цикл толығымен орындалады. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 14
Си тіліндегі негізгі деректер түрлері
основные типы данных в C
Кітапханалар C
Сіз C бағдарламасының бірінші жолы нені білдіретінін ойлаған боларсыз: оның рөлі қандай және онсыз істеу мүмкін бе? #include жолы өте маңызды нәрсені жасайды: ол сіздің бағдарламаңызға бұрыннан жазылған codeтың кітапханаларын қамтиды. Қосылған кітапхананың атауы бұрыштық жақшаға (<>) алынған және кеңейтімі (.h) бар. Егер кітапханалар болмаса, кез келген, тіпті ең негізгі әрекетті де әр жолы қайта-қайта сипаттау керек еді. Біз қосылған кітапхана#include енгізу/шығару функцияларын қамтиды. Бұл экранға басып шығару үшін printf() функциясын пайдалануға мүмкіндік береді. Яғни, #include жолын жазбағанымызда , бірақ printf() функциясын бағдарламаның негізгі бөлігінде қалдырдық; біз оны іске қосуға тырысқанда, қате алған болар едік! Өйткені бұл кітапханасыз компилятор printf() не екенін білмейді. Стандартты кітапханалар бар, олар тілдің сөздік қорын құрайды. printf() функциясы компьютерге салынбаған, бірақ ол стандартты Си кітапханасына енгізілген.Яғни оны әлдебір программист бұрын жазып, кітапханаға қосқан. Енді басқалар оны дөңгелекті қайта ойлап таппай-ақ пайдалана алады. Компилятор оны «түсінуі» үшін біз қосыламыз . CS50 процесінде пайдаланылатын басқа стандартты кітапханалар бар. Мысалы, жолдармен операцияларды сипаттайтын жолдар кітапханасы (ұзындықты анықтау, қосу және т.б.). Басқа танымал бағдарламалау тілдерімен салыстырғанда стандартты Си кітапханаларының саны өте аз. Бірақ өздігінен жазылған, көбінесе жоғары мамандандырылған кітапханалар бар. Иә, кітапхана CS50 студенттері үшін арнайы жасалған. Маңызды ескертпе жасаудың уақыты келді: жақсы әзірлеуші ​​​​бағдарламаларды жазудан және өзіңіздің codeыңызды пайдаланып мәселелерді шешуден басқа, тағы бір маңызды дағдыға ие: бұрыннан жазылған құралдарды білу және оларды (басқа адамдардың кітапханаларын) пайдалану мүмкіндігі. «дөңгелекті» қайта ойлап табуға уақытты жоғалтпау. Сондықтан, егер сіз өте қарапайым болып көрінетін жалықтыратын немесе күрделі мәселені шешу процесінде болсаңыз, өзіңізге сұрақ қоюды үйреніңіз: «шешімін басқа біреу жазды ма?» Мүмкіндігі жақсы және бұл функцияны бар кітапханадан таба аласыз. Техникалық тілмен айтқанда, кітапхана - бұл байланыстырғышты пайдаланып an objectілік файлдар жинағын біріктіру арқылы жасалған екілік файл. Нысандық файлдар - бұл қолданбаларды құрастыру кезінде алатын кеңейтімі (*.o) бар файлдар.
Си кітапханаларының құрылымы
Когда программист пишет библиотеку, 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
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION