[Музички] Дејвид Џ MALAN: Во ред. Ова е CS50 и ова е почеток на недела 2. И ќе се потсетиме дека во текот на Во изминатите неколку недели, ние сме биле воведување на компјутер науката и, пак, програмирање. И почнавме приказната по пат на Нула, дека графички јазик од лабораторијата на МИТ. А потоа и во поново време, минатата недела, почнавме воведе higher-- на јазик од пониско ниво познат како C, нешто што е чисто текстуални. И, навистина, последен пат се истражени во тој контекст голем број на концепти. Ова, се потсетиме, беше многу првата програма ние погледна. И оваа програма, едноставно, отпечатоци од "Здраво, свет". Но, има толку многу навидум магија се случува. Тука е тоа # Include со овие аглести загради. Има Инт. Има (празно). Има голема заграда, кадрави загради, полу-запирки, и многу повеќе. И така, да се потсетиме дека воведовме гребење така што би можеле, идеално, види минатото дека синтаксата, работи дека навистина не е сето она што интелектуално интересно, но на почетокот е, апсолутно, малку незгодно да се заврши вашиот ум околу. И, навистина, еден од најчестите работи на почетокот на класа програмирање, особено за оние кои се помалку удобно, е да се фрустрирани од и сопнат од страна на одредени синтаксички грешки, да не зборуваме за логички грешки. И така кај нашите цели денес, всушност, ќе е да ви овозможат со некои решавање на проблеми техники за тоа како подобро да ги реши проблемите со самите себе во форма на отстранување грешки. И што ќе се сетите, исто така, дека животната средина, кој ќе воведе последен пат беше наречен CS50 ИРО. Ова е веб-базиран софтвер кој ти овозможува да програма во облакот, така да се каже, додека чувањето на сите ваши додадени фајлови заедно, како што повторно ќе денес. И се сети дека ние ревидира овие теми тука, меѓу нив и функции, и петелки, и променливи, и Булова изрази, и услови. И всушност уште неколку кои ги превод од светот на гребење во светот на В. Но, основните градежни блокови, така да се каже, навистина се уште е иста минатата недела. Всушност, ние навистина само имаше различни загатка парче, ако сакате. Наместо тоа, виолетова спаси блок, ние наместо да го printf, што е оваа функција во C, кој ви овозможува да се печати нешто и да го форматирате на екранот. Воведовме CS50 Библиотека, каде што има сега на get_char располагање, и get_int, и get_string, и неколку други функции, како Па, преку кој може да се добие влез од сопствени тастатура на корисникот. И ние исто така се погледне на работите како these- bool, и знак, и двојно, плови, int, long_long стринг. И таму е дури и други типови на податоци во В. Со други зборови, кога ќе се прогласи променлива за чување на некои вредност, или кога ќе се спроведе функција кој се враќа некои вредност, можете да наведете што тип на вредност тоа е. Дали е стринг, како низа од карактери? Дали е тоа голем број, како цел број? Дали е тоа со подвижна запирка вредност, или слично? Значи во C, за разлика од нула, ние, всушност, почна да одредите каков вид на податоци се враќавме или користење. Но, се разбира, ние исто така, се стрча во некои основни граници на компјутерите. А особено, овој јазик C, да се потсетиме дека ние ја погледнете број претекување, реалноста дека ако имате само еден ограничен износ на меморија или, поточно, на ограничен број на битови, вие само може да се смета толку висока. И така ние погледна во овој пример тука при контра во авион,, Всушност, ако работи доволно долго ќе прелеваат и ќе резултира во софтвер вистински физички потенцијална грешка. Ние, исто така, погледна лебдечки точка непрецизност, реалноста дека со само ограничен број на битови, без разлика дали е 32 или 64, можете да наведете само толку многу броеви по децималната точка, по што почнуваат да се непрецизни. Така на пример, една третина во свет тука, во нашата човечка светот, ние знаеме, е само бесконечен број на 3s по децималната точка. Но на компјутер не мора да може да претставува бесконечен број на броеви ако само му се овозможи на некои ограничен износ на информации. Затоа, не само што ќе ви овозможат со уште поголема сила во однос за тоа како можете да го изразат себе си во тастатура во однос на програмирање, ние, исто така, она што се ограничени навистина може да се направи. И навистина, грешки и грешките може да произлегуваат од овие видови на прашања. И, навистина, меѓу темите за денес се ќе биде во теми како дебагирање а всушност во потрага под хаубата колку беа воведени работи минатата недела всушност се спроведува така што подобро се разбере и на можностите на и ограничувањата на јазик како В. И всушност, ќе лупам назад на слоеви од наједноставните на податочна структура, нешто што се нарекува низа, која Нула случува да се јавите на "листата." Тоа е малку различни во тој контекст. И тогаш или ќе се воведе еден од Првиот од нашиот домен-специфични проблеми во CS50, во светот на криптографијата, уметноста на питачи или во шифрирани информации, така кои може да се испрати тајни пораки и декодирање на тајни пораки помеѓу две лица, А и Б. Па пред да транзиција на тој нов свет, ајде да се обидеме да ви овозможат со некои техники со кои може да се елиминира или да се намалат барем некои на фрустрации што веројатно се соочиле Само во текот на изминатата недела. Всушност, пред вас се such-- некои од прва проблеми во C. И шансите се, Ако сте како мене, за прв пат ќе се обидат да напишеш на програма, дури и ако се размислува логично на програмата е прилично едноставна, вие многу добро може да удри во ѕид, и компајлерот не се случува да соработуваат. Да се ​​биде или ѕвекот не се случува за да всушност го направите вашиот наддавање. И зошто е тоа така? Па, ајде да ги разгледаме во, можеби, едноставна програма. Одам да се оди напред и да се спаси ова датотека намерно наречен buggy0.c, затоа што јас го знам тоа да Погрешно е однапред. Но, јас не би можеле да сфатат дека ако ова е во првата или втората или третата програма дека јас сум всушност се прави себе. Па јас ќе одам да се оди напред и да се тип надвор, int главната (празно). А потоа и во внатрешноста на мојата големи загради, многу познати ( "Здраво, world-- обратна коса црта, n ") - и точка-запирка. Сум зачувани во датотеката. Сега ќе одам да одат надолу на терминалот мојот прозорец и тип на шминка buggy0, затоа што, повторно, името на датотеката денес е buggy0.c. Па јас напишете направи buggy0, Enter. И, о, боже, да се потсетиме од последниот пат дека нема пораки за грешка е добра работа. Па нема излез е добра работа. Но, тука имам јасно некои број на грешки. Значи првата линија на производство по пишување направи buggy0, да се потсетиме, е прилично опширниот излез ѕвекот е. Под хаубата, CS50 IDE е конфигуриран да се користи целиот куп на опции со овој компајлер така што вие не мора да да се размислува за нив. И тоа е се што првата линија значи дека започнува со ѕвекот. Но после тоа, проблемите почнат да се направи нивниот изглед. Buggy0.c на линијата 3, карактер 5, постои голема, црвени грешка. Што е тоа? Имплицитно прогласување библиотека функција printf со тип int (const char *, ...) [-Werror]. Мислам, тоа многу брзо добива многу таинствени. И, секако, на прв поглед, ние не би се очекува да се разбере интегритет на таа порака. И така една од лекциите за денес се случува да биде да се обиде да се забележи модели, или слични работи, на грешки може да има се среќаваат во минатото. Значи, да се разграничат само оние зборови кои изгледа познато. Големите, црвени грешка е јасно симбол на нешто се биде во ред. имплицитно прогласување библиотека функција printf. Па дури и ако јас не се разбирам она што имплицитно прогласување библиотека функција средства, проблемот сигурно се однесува на printf некако. И извор на ова прашање мора да се направи со неа прогласување. За прогласување на функцијата е да се спомене тоа за прв пат. И ние се користи терминологијата минатата недела за прогласување на прототип на функцијата, или со една линија на врвот на вашиот сопствена датотека или во т.н. хедер датотека. И во она што датотеката не кажеме минатата недела дека printf е цитат, unquote, пријавена? Во она што датотеката е прототип? Значи, ако се сеќавате, многу првото нешто што напишан, речиси секоја програма последните time-- и случајно пред некој миг започна пишување myself-- беше еден here-- hash-- # Include