[Powered by Google Translate] ZAMYLA CHAN: Сите во право, сите. Добредојдовте на можи 1. Ова можи ќе биде на 1 pset, кој е В Се надевам дека сите се забавуваше со вашиот Скреч проекти. Така, сега во оваа Walkthrough, ние всушност ќе биде може да се влезе Ц, влезе во пишувањето на некои машински код. Па ако не беа на можи 0, тогаш овие walkthroughs навистина - we're ќе прошетка низ проблем во собата, зборува преку некои општи совети и техники дека можете да го користите. Ќе се скрши задача нагоре во податлив каснувања, така што вие момци можат да добијат започна и се надевам дека се разбере како да го направи тоа. Во ред. Значи pset 1. На psets оваа година ќе имаат структура каде што првиот - таму ќе биде дел од прашањата, серија на прашања кои ќе навистина, исто така, да ви помогне да започнете со на pset, да ви помогне да се практикуваат некои техники кои ви се потребни. И така овие прашања, јас не одам да се покријат во можи затоа што во вашиот дел, вашиот доделен настава колеги се всушност ќе прошетка низ тие прашања со вас. На крајот на вашиот дел, ќе одиме подалеку со одговорите на тие прашања, но, исто така, со уверување дека Вие можете да извршите некои од карактеристиките кои ќе треба за вториот дел од pset. Pset 1 претставува Марио. И тоа е забавно малку програма, каде што во суштина ние пишуваат и печати пол пирамида во типичен Марио сцена. И потоа вториот дел од pset се нарекува алчен. И така во Алчните ние во суштина дејствува како алчен касиерот, каде што ако некој ни дава сума на пари што го сакаме, ние се пресмета минимална сума на пари кои можеме да се вратат во нив се уште им даде таа сума. Во ред. Така што секој можи ќе има алатникот. И повторно, не можете да го користите сите алатки во овој Лента со алатки или можете да го користите сите од нив. Во секој случај, тоа е навистина добро да се знае што сте опремени со. Значи имаме CS50 апарати, кои ќе ви покаже момци и ве запознаам со тоа. Потоа, исто така, во целина, добар стил е дефинитивно еден од нашите најважните алатки. Стил суштина се однесува на тоа како може да се чита е кодот? Кога некој друг оди и чита вашиот код, имаат ли тие лесен пат? Тие може да го разбере? Тоа е елегантен? Тогаш ќе разговараме за тоа како да се добие валидна корисник влез во програма, бидејќи во двете Марио и алчен, ќе треба да побара од корисникот да го внесете и да ви даде некој вид на број. Па тогаш ние сакаме да бидете сигурни дека бројот е валидна. Тогаш се сеќавам во нула, имавме блокови како повторување, Повторете се додека, или Чекај, или засекогаш. Па ние ќе вид на преведе дека во C сега и погледнете петелки како на, време, и не-време. Потоа, исто така, ние исто така ќе треба да се прикаже вредности назад на екранот, без разлика дали тоа е во Марио или алчен. И така ние ќе зборуваме за тоа како ние печати работи од стрингови за да се броеви и плови. А потоа конечно, ние ќе зборуваме за pseudocode, навистина важен концепт е да се запамети во текот на овој курс. Што најдам ми помага најмногу со проблемот поставува е да се размислува и опише она што сакате да го направите пред размислување за било C. Но, само се опише акција. Значи pseudocode е вид на меѓу англиски и Ц, вид на опишување на процесите, без точни синтакса, но обезбедување доволно добар структура. И така јас ќе имаат некои примери на pseudocode за вас, како и во оваа Walkthrough. Во ред. Значи она што ние ќе се работат со е CS50 апаратот. Тоа е суштина на виртуелната машина тој вид на работи на компјутер во вашиот сопствен компјутер. И ова има многу придобивки. Една од нив е дека тоа е дефиниција со голем број на алатки што ќе треба за CS50. Исто така, тоа значи дека секој е на иста земја, дали Mac или PC или друг оперативен систем. Сите ние може да работи на виртуелна машина. И така постојат инструкциите на manual.cs50.net/appliance. И така, ако одите на што водат и следете ги инструкциите, тогаш се надевам дека ќе бидете во можност да се инсталира апаратот. Значи прво, ќе треба да инсталирате апликација, актуелните примена да биде во можност да се кандидира на виртуелната машина. И тогаш ќе преземете на уредот. Но, повторно, постојат инструкциите на manual.cs50.net/appliance. Па јас веќе преземале мојот апарат, и јас го инсталирале тоа во VMware фузија. И така еднаш јас ја преземале на апаратот, отидов на датотека. Отидов да се отвори, а потоа се најде каде што чуваат CS50 апаратот. И од таму, ми се стрча овде. Но тоа го имаат до веќе тука, па ајде да донесе поблиски изглед. Во ред. Па сега ние сме внатре CS50 апаратот. Јас направив тоа на цел екран. Можете да изберете да го стори тоа ако сакате или само да го имаат како помал прозорец на вашиот десктоп. Тука имаме само еден едноставен десктоп со дома и ѓубре. Но ако одите во менито, а потоа кон програмирање, тогаш ќе видите дека имаме нешто што се нарекува терминал. И така овде, можеме да се движите низ нашиот компјутер. Ние може да напише код. Но, всушност, ќе биде со користење на програма наречена gedit, или "g уредување ", кое што е. Па ние ќе биде со користење дека еден да се напише код. Па имате овие две алатки кои ќе биде со користење првенствено да се напише код. Тогаш во тоа, тоа е само како обичен компјутер. Имаме пребарувач. Избравме Google Chrome. Она што го направив е што сум формира Dropbox да ги содржи сите од на документите. И така тоа е нешто што е многу охрабрени. Dropbox користи облак синхронизирање и така ако - така на пример, нешто случајно - да не се надеваме - се случува со вашиот уред, тогаш сите ќе бидат синхронизираат на облак. Во ред. Значи тоа се апликации кои ќе биде со користење на CS50 апаратот. Сега да се движите низ командната линија. На терминалот всушност може да дејствува како еден вид на начин да се всушност тип команди во - допаѓа, ако сте Mac, Пронаоѓач. Или ако сте во Windows, верувам дека е "истражуваат моето компјутер "или нешто слично. Значи, ако ние се вратиме на апаратот, да се отвори терминален прозорец. Така што има оваа брза, jharvard @ апаратот. Ајде само го прават овој поголем. Во ред. Значи, ако ние напишете ја командата ls, тогаш тоа списоци на сите слики во нашиот компјутер, во нашата тековниот директориум. Директориуми се само како папки. Ние ги користиме овие термини мешаат. Добро, така што се наведени датотеки кои се во овој директориум. Сега, ако сакаме да пристапите, да речеме, нашите Dropbox, тогаш можеме да промена директориуми. Значи CD и потоа Dropbox. Ние ls, повторно, и тогаш можеме да видиме листа на фајлови кои се во оваа папка. Ова е аналогно на мене ќе ми дома, потоа кликнете Dropbox, а потоа се види листата тука. Во ред. Па да речеме - кога вие момци се случува да се направи вашиот pset 1, да се направи директориумот наречен pset1. Значи ние сме во Dropbox токму сега, како што може да се види од овој поттикне тука. Значи, да се направи директориумот. Значи mkdir, ајде да го наречеме pset1. Па сега ако ние ls повторно, тогаш види дека pset1 појавува. И така, ако сакаме да одиме внатре pset1, тогаш можеме да оди во внатрешноста таа папка со командата cd. Во ред. Значи, повторно, ајде да видиме дали можеме - велам, ајде да го сториме тоа друг пат. Ова е аналогно на само велејќи "Креирај нова папка, pset1. Но, како што ќе најдете, ќе биде во интеракција со на терминалот многу. Па понекогаш тоа е многу полесно, изгубена побрзо да се само работат во терминал за да направите оние видови на нештата. Во ред. А потоа овие други команди. Има РМ за отстраните некоја датотека. Па можете едноставно внесете РМ, а потоа името на датотека за да ја избришете. Ќе одиме во некои примери за тоа подоцна. И тогаш имаме нешто што се нарекува човек команда, која носи до прирачник за еден вид на функција. Повторно, јас ќе донесе до вистински пример за тоа подоцна. Значи уште една навистина важна алатка, како што споменав накратко пред тоа, е стилот. Значи во суштина, стил има врска со читливост. Некој друг ќе можат да читаат, следат, и се разбере вашиот код? Ова е особено важно за вас, се, всушност. Ако сте престојуваат до крајот кодирање, а потоа подоцна ќе врати и да сте како, она што го прави оваа променлива значи? Кажи, си работат на група на проектот со некој, а вие и треба да се погледне во секоја друга код. Тоа е навистина важно да се именува вашиот променливи правилно и го направите да изгледа убаво, бидејќи тоа го прави сите разликата. Но, тогаш над се, ние сме на курс во моментов. Значи во интерес на CS50, а особено за настава другарите и грејдери кои ќе бидат во потрага на вашиот psets, ве молам, Ве молиме да користите точни стил. И вашата настава фаци ќе бидат доста задоволни. Значи, повторно, стил вклучува вовлекување работи правилно, особено го користите вашиот загради и вовлекување оние. Именување променливи нешто што има смисла. Токму сега ние ја следиме конвенцијата кога имате повеќе зборови во вашиот името на променливата, тогаш поврзете ги со потцртичка, како што гледате во тој именува пример таму. Тогаш, конечно, нешто што се нарекува магија броеви. Во суштина, кога ќе ја читаш преку кодот и да каже имате променлива - да речеме, вие не мора променлива, но само велат во ред, до и како што е помалку од 10. Тогаш твојата човек кој степенува ќе одат добро, чекај, каде што 10 доаѓаат од? Значи, навистина објаснувајќи себе, работи многу. Да ви помогне да се објасни е коментари. Коментари веројатно најважното нешто да се вклучат во вашите програми. И тоа им помага не само што всушност се објасни - Тоа ви помага да вид на објаснат вашиот расудување како сте ќе заедно. И така ако го правиш тоа, повторно, тоа ќе биде многу полесно да се врати во вашиот код и вид разбере она што сте прави таму. Повторно, одделение навистина ми се допаѓа коментари. Така да коментираат добро и - нешто како бесплатен поени. И кои не му се допаѓа бесплатен поени? Можете исто така да имаат мулти-линија коментари. И така јас се вклучени еден вид на дефиниција се тука. Во суштина, обично тие се користат на врвот на вашиот програма за вид објасни воопшто што вашиот проблем сет го прави тоа. Вклучуваат вашето име, датум, итн. И така, како што реков во овој мулти-линија коментар, manual.cs50.net/style_guide има повеќе совети и правила за стил за петелки, и така натаму. Во ред. Па сега дека сум ви кажал малку за стил, ајде да видиме ова во акција. Во ред. Па еве, Томи ни напишано пријатни ужасна пример за стилот во програмата. Така што гледате овде, во ред. Ова всушност е во ред. Гледаш мулти-линија коментар тука. Ќе започне со коса црта, а потоа две звезди. Ќе продолжи заедно, порамнување на звезди по должината на линијата а потоа заврши со ѕвездичка и коса црта. Во ред. Па тоа е добро. Ова тука е во ред. Тој вклучувајќи ја и неговата библиотеки. Но, тогаш тука тој има коментари опфаќајќи повеќе линии. Постојат многу работи во ред со тоа. Коментари опфаќа повеќе линии, токму тука тој е користење на синтаксата за само една линија коментари. Тој, исто така, го споиле сè во ист коментар. Значи, ние сакаме да се избегне тоа. Потоа тука можеме да видиме дека овие загради, на пример, сите се над местото. Вовлекувањето е во ред. Тоа навистина не ви покаже дефинитивно кога нешто почнува и друга работа завршува. Тогаш, како и, можеме да видиме дека има дефинирани променлива i = 5 тука. Но, тогаш ова четири доаѓа од никаде, и нема коментира навистина да објаснат каде што доаѓа. Во ред. Па сега ајде да погледнеме нешто што е всушност исто кодот освен со подобра стил. Значи, повторно, ова е добар стил пример, на мулти-линија пример. А потоа тука е сосема чист. Гледаме дека тој почнува ако изјава тука, влегува во нова линија, има отворен голема заграда. Тогаш тој има порамнување. Тој ја чува оваа вовлекување - тој го задржува оваа индикација униформа на целата програма и навистина покажува кога еден блок од код започнува кога еден блок од код завршува. Ова може да изгледа малку nitpicky од наша страна да започне со тоа, но ќе видите како сте пишување вашиот код. Тоа е навистина корисно да се биде во можност да одвојат ова. И повторно, вашите одделение навистина ми се допаѓа. И така што гледате, наместо само ставање на број во таму, тој, всушност, наречен променлива повторувања. И така ние не сме всушност бараат во овој код во моментов но само вид на гледање на пример на добри наспроти лоши стил. И така, ако се погледне во нив рамо до рамо тука, ќе дефинитивно преферираат да го прочитате на десната страна. Во ред. Значи едно последно нешто пред да нурне во вистинскиот месо на pset е како да се собере и да ја стартувате вашиот код. И така во суштина, кога ќе напишете C, тоа не е всушност преведени во вистинска машина код, нули и оние кои на машината, всушност може да се читаат и интерпретираат. Значи имаме нешто - Ѕвекот е компајлер кој ние ги користиме за C. Постојат многу компајлери. Но, во CS50, ние ќе биде со користење ѕвекот. И така ѕвекот основа Преведува од C до машина кодот за вас. Значи, да погледнеме еден пример - нурне во апаратот тука. Во ред. Па сега ние сме во нашиот дом директориум. Ние всушност не се, каде што било кодот е. Значи, да ги смениме нашите директориум за Dropbox/walkthrough1, каде Сум се чуваат некои код. Значи, ако ние притиснете ls, тогаш можеме да видиме дека имам неколку датотеки тука. Во ред. Па јас веќе напишано hello.c, па ајде да го компајлирате а потоа да видиме што тоа го прави. Значи основен компајлирање команда ќе биде ѕвекот тогаш hello.c, суштина велејќи ред, состави hello.c за мене. Јас кликнете Enter, се чини дека се качил во ред. Да кликнете ls повторно. Ова a.out датотека сега е прикажано. И така a.out е извршна датотека. Така да се кандидира, ќе се направи. / A.out. И така ние се види дека ова hello.c програмата очигледно отпечатоци од здраво пет пати. Во ред. Но велат дека ние не сакаме да го користи името a.out. На пример, ние сакаме да се кандидира на здраво програма, бидејќи тоа го прави полесно да се разбере. Па да речеме ѕвекот hello.c, а потоа во суштина треба да помине во некои нешта наречени знамиња. Така велејќи ред, и јас сакам да го именува нешто друго. Вие исто така може да помине во многу различни знамиња, кој ќе видите. Па знаме за именување програма нешто што сакам е-o. По-o, можете да го напишете името на програмата. Ајде само да го наречеме здраво. Па сега можеме да видиме дека ние всушност имаат здраво извршна датотека. Значи можеме да се стартува, а тоа го прави истото како и досега. Па сега дека имаме Здраво, Ние, исто така, може да се отстрани, за пример, нашата a.out. Значи РМ за отстранат, a.out, вашиот терминал ќе каже, прашајте за да потврди дали навистина сакате да избришете или не. Велиме y за да. И таму ќе одиме. A.out е нема. Во ред. Но, понекогаш станува збунувачки да се сетам на сите знамиња кои ние треба да ги вклучи и тип надвор ѕвекот. И како што гледаме кога сме со користење на повеќе комплексни програми, ние ќе биде вклучувајќи различни библиотеки. И така нашите команди за да ѕвекот ќе добие повеќе и повеќе. Така вклучени во CS50 апарати е марка команда. Па можете едноставно внесете направи здраво. Упс. Ние веќе го направи овој извршна датотека. Па дозволете ми да го отстраните брзо. Сега ајде да напишете направи здраво. И ќе видите во оваа линија тука дека во суштина велејќи направи Здраво вклучува сите овие команди кои оди во неа за вас. Така вклучени во CS50 апарати е направи датотека. Толку едноставно, кога имаш датотека name.c, тогаш сите што прават е да се каже направи името на датотеката. И тогаш ќе имаат извршна датотека со тоа име. Да? ЗВУЧНИК 1: За мојот компјутер, наместо ѕвекот вели GCC. Е дека како - ZAMYLA Чан: Да. Па вашиот компјутер може да се каже GCC наспроти ѕвекот, бидејќи GCC е друг вид на компајлерот. Ако сте во CS50 апарати иако, тогаш тоа треба да се користи ѕвекот. Ако не е, тогаш можеби дојде да разговара со мене потоа или пост на CS50 Дискутирај и ние да ги сортирате тоа. Во ред. Па сега дека имаме вид на основните алатки надолу, тогаш ние може да се нурне во Марио. Во ред. Значи Марио е програма, каде што во суштина ние се случува да бидат правењето на нашите сопствени вид на примитивни верзија на Марио игра позадина. Знаеш, Марио обично има цевка и дрво и некои блокови. А потоа, тука е еден вид на половина пирамида. Значи, ние сме само ќе се фокусира на тоа половина пирамида, правење код како што тоа отпечатоци од хашови за вид на блокови во овој формат. Значи она што ќе се случи е корисникот ќе внесе одредени висината на пирамидата, а потоа ќе печати дека од така што долниот лев хаш - па на самото дно, токму тука - дека еден ќе ги усогласат со дното лево на вашиот терминал. Во ред. Така првото нешто што ви треба - првиот малку мини проблем кој треба да се справи е како за да го добиете корисник влез. Значи ние треба да се занимаваат со она што корисникот влезови и потоа вид на излез работи таму. Па ајде да погледнеме погледнете фајл наречен apples.c што сум го напишала која се занимава со влезови и излези. Во ред. Значи тука на врвот, јас сум вклучени некои од библиотеки што ми треба. Навистина важно тука е stdio (стандардна I / O). Која се занимава со стандардна влезови и излези, бидејќи ние ќе се занимаваат со корисник влезови. Во ред. Па тогаш почнам мојата главна функција. И тогаш јас побара од корисникот во ред, колку јаболки имаш? Тогаш токму тука, она што оваа линија не - Јас му ја додели на променлива i за вредноста на GetInt. Значи GetInt е функција која е вклучена во stdio. И така во суштина, кои ќе се занимаваат со тоа за вас. Тоа ќе го извести корисникот за Инт. Што и да се вратат, дека ќе бидат доделени на променлива i. И така, тогаш тоа е само малку програма која ја намалува вредноста на i за 1, а потоа печати на нова вредност. А убаво нешто за gedit е, всушност, дека постои мини терминал во право тука. Така, наместо да се префрлат на напред и назад меѓу Зачувувањето и на терминалот, можете да всушност само ја стартувате од тука. Значи ајде прво да се влезе во право директориум. Значи, да ги смениме нашите директориуми да Dropbox/walkthrough1. Во ред. Па сега ајде да се направи јаболка, компајлира тоа за нас. И така сега нека се кандидира јаболка. Колку јаболка имаме? Велам јас имам 3. И тој вели: "mwahaha јас ќе одам да јадам еден од нив" и вели "Сега го имате 2 јаболка". Во ред. Значи, да се кандидира повторно. И да речеме јас имам 1 јаболко. Сега имам 0 јаболка. Во ред. Значи оваа програма изгледа да се работи како што се очекуваше. Ние внесување на број, го намалува за 1, а потоа печати ја надвор повторно. Но, што ако, на пример, имам -1 јаболка? Тоа сосема не се направи смисла. Но, тоа е уште еден број, па на програмата се прифаќа. И така тоа ви враќа уште повеќе негативен број. Значи тоа е една лекција за нас, кои иако GetInt функција и други поврзани оние како што се GetFloat или GetString - иако тие ќе ни го добиете вистинскиот тип на податоци, за пример, ако имав само рече [пишување] тогаш тоа ќе ми каже да се обидете повторно. Па ова ќе се справи со сите податоци напишете ја вашата влез е но нема да всушност се провери, добро, тоа е всушност еден вид на вредност што сакам? Па тогаш еден дел од Марио е дека корисникот мора да го внесете број што ја претставува височината на половина пирамида дека сте одлуки. И така тогаш ако ние сме поради корисников за висината, тогаш треба да има две граници за ова. Нели? Во спецификации, таа вели дека не треба да биде повеќе од 23 карактери, бидејќи тоа е вид на стандард висината на терминалот. Но, тогаш, она што другите врзани, можеби пониски врзани, може ние сакаме да го вклучите? Ако ние сме всушност цртеж на пирамида, вид на размислување назад на колку високо пирамидата може да биде, може некогаш да биде помал од одреден број? ЗВУЧНИК 2: Поголема од три. ZAMYLA CHAN: Хм? ЗВУЧНИК 2: Поголема од три. ZAMYLA CHAN: Тоа е добра точка. Тоа може да биде - ние би сакале да го ограничи на само три ниво пирамида. Но, ајде да мислам - да речеме како една хаш табелата се брои како пирамида премногу. Тогаш што нашите вистински пониски врзани треба да биде? Размислување назад на јаболка, ние не сакаме негативни висина пирамида. Нели? Во ред. Па кога ќе прашате за корисникот влез, тогаш ќе мора да вклучуваат некој начин за правење на сигурни дека цел број кој тие ви обезбеди не е негативна, бидејќи не можете да подготви негативни пирамида. Во ред. Па постојат неколку начини да го направите тоа. Во суштина, кога еднаш ќе ве прашам за корисникот влез, сакате да побараат дека тие ви овозможи со точни влез. Значи сакате да побараат тоа што тие ви обезбеди со голем број тоа не е негативен, но, исто така, помалку од 24. Значи ние сме се занимаваат со нула до 23, инклузивна. Во ред. Затоа сакаме постојано да бараат - ако тие не ни даде валиден број, тие сакаат да постојано бараат бр. Дај ми валидна влез. Дај ми валидна висина. Значи се сеќавам назад во нула, имавме Повторете се додека блок или на Засекогаш Ако блок. Тоа се јамки, кои се многу слични на време јамка и на направи додека јамка, која ќе се влезе само во една секунда. Па додека јамка суштина има услов да проверите тоа е Булова вредност што ќе се стави внатре таму, како блокови во гребење со агли. Тоа е она што се случува во внатрешноста на заградата на време јамка. Па ќе мора да имаат некој вид на состојба таму. И како ние само што беше порано, таа состојба ќе треба да направите со границите на цел број кој е inputted. Значи состојбата ќе мора нешто да се направи со тоа дали на број е во рамките на соодветни граници. Значи тоа е време јамка. На пример, можете да прашува за цел број, а потоа постојано да проверите, додека оваа Внесеното не е валидно. На пример, да ги задржи на повторно прашува, да ги задржи на барање на корисникот за цел број. Така што може да биде еден начин. Друг начин може да биде направите додека јамка, што е многу слични на време јамка освен она што го стори додека не е - можете вид на може да се види од страна на синтаксата - е тоа што има направи и тогаш вистински јамка тело во прв план. Тогаш тоа има време услови. Па што додека петелки - она што тие се корисни за е дека тие всушност извршување на код најмалку еднаш и потоа проверете дали состојбата е исполнети или не. Значи, ако сте во ситуација да направи направите додека јамка, внатре тогаш вашата изјава може да се прашува за цел број, бидејќи ќе во најмалку треба да побара од корисникот еднаш. А потоа, откако ќе ги побараат, тогаш може да се каже во ред, и еднаш јас го направив тоа, тоа е валидна? Ако е така, тогаш само може да ги задржи за да навлегуваме. Но ако не е, тогаш тоа само ќе дејствува како редовни додека јамка, а потоа продолжи прашувам. Во ред. Значи ние сме назад кон Марио. Па знаеме како да прашува за точниот корисник влез што е во право границите. Па сега ние всушност треба да се подготви оваа половина пирамида. Тоа изгледа како едноставен текст карактери. Па ајде всушност отворени - ајде да се отвори прозорецот и да каже во ред, добро, што ако јас се всушност ќе го направи тоа рачно, напишете еден себе? Во ред. Дали ќе видиме. Да речеме, на пример, ние сакаме да се направи пирамида која е подредени по левата страна, тогаш само ќе го направи - во Марио, највисоко ниво има два блока, наместо еден. Значи ние започнуваме со два. Ние кликнете Enter. Ние го правиме три, а потоа четири, Enter, пет. Во ред. Значи тоа е прилично едноставна. Освен во овој проблем во собата, што сакаме ние, всушност, да се усогласи со на десната страна од вашиот екран. Во ред. Значи, како може еден од вас всушност напишеш ова, како што тоа е подреден во средина заедно нели? Наместо да се стави хаш прво, како може да ви вид на преместите заедно? ЗВУЧНИК 3: Напишете линија? ZAMYLA CHAN: Хм? ЗВУЧНИК 3: Напишете линија? ZAMYLA Чан: Да. Да. Можете да напишете како црта или нешто слично тоа, но ние само може да се каже користете празно место. Ајде стави во како три простори тука. Тогаш следната линија, добро, ние ќе треба да се стави две празни места. Следната линија, ние едноставно се стави еден простор. А потоа за нашата последна линија, ние не би се стави било која простори. И таму имаме пирамида. Значи тоа е вид на - се сеќавам дека вид на логика. И се обиде да дознаам некој вид на шема која можеме да потоа се претвори во Ц и да се вклучат во некој вид на јамка. Во ред. Така велат имаме височина од осум, а потоа нашиот прв ред ќе имаат две хашови. Но да се добијат овие хашови, вие ќе треба да напишете некои простори однапред. Нели? Она што го направив е Јас само помина низ. Ми се извлече себеси, пирамида во мојот текст едитор, еден пирамида со височина од осум и потоа се пресметува колку простори ми требаше да се направи. Па јас реков во ред, и првиот ред е ќе имаат два хашови. Но, пред тоа, јас треба да го внесете седум места. Следниот има шест места и потоа три хашови, итн. Па тогаш ајде да се обидеме и да ја доведе оваа уште еден слој на апстракција. Што ако ние имавме за енти ред, колку хашови и како многу места ние ќе треба? Дали некој ја видите шемата? Па првиот ред има две хашови. Вториот има три. Третиот има четири. Па енти ред ќе има - ЗВУЧНИК 4: N плус 1? ZAMYLA Чан: Да. N плус 1. Точно. Па тогаш можеме да видиме дека бројот на хашови ќе биде - ако ние сме пребројување на првиот ред да биде една, а потоа бројот на хашови е само ќе биде еден повеќе од тоа. Во ред. Па тогаш што е со бројот на празни места? Значи, да се обиде и да ги изразат оваа во однос на висината. Ако висината е осум, тогаш првиот ред има седум места. Така што вид на соодветствува на 8 минус 1. Нели? Па тогаш вториот ред ќе има шест места, кој е 8 минус 2. Па тогаш јас ќе одам да го оставиме тоа на вас останува да вид на фигура од моделот за тоа. Во ред. Но, во програмирање, понекогаш и ние всушност индекс на нула. Значи ние почнуваме од нула, наместо еден. Така, наместо на првиот ред се нарекува првиот ред, ние ќе се нарекувајќи го 0-ти ред. Па во зависност од начинот на кој сакате да се имплементира, да биде многу внимателни дали ќе почнете од нула, без разлика дали со почеток во еден, вашиот шема се случува да се надомести со еден. Во ред. Па сега дека ние вид на сфатиле програмата, треба да се каже во ред. Значи за секој вид на ниво на скалите, јас одам да се печати таков и таков бројот на празни места и потоа како и како број на хашови. Тоа зависи од моделот кој ние воспоставени пред. Во ред. Значи еден од начините за процесирањето преку и вид на одење преку одреден број на нештата е за телефонска линија, нешто како повторување 10 блок или како повторување и ќе влезе во број во за гребење. Значи во суштина, за секое ниво на скалите, ќе сакате да го печати простори во прв план. Потоа печати бројот на хашови. И тогаш ќе сакате да внесете нова линија и потоа се повторува тоа повторно за следниот блок. Во ред. Па ајде да погледнеме за јамки за секунда да се вид на се види еден начин дека би можеле да поминат низ собата број, одат преку бројот на чекори во оваа половина пирамида. Значи за петелки се состои од три дела. Прво, имате иницијализација. Така што во суштина поставува променлива. Тоа се случува да се постави на таа вредност во секое време дека за јамка започнува. Тогаш ви се случува да имаат состојба. Вашиот за јамка само ќе го изврши како што долго како што состојба се евалуира до вистина. А потоа ќе имаат надградба состојба. Така што мора да се направи со варијабилен дека иницијализиран. Значи на некој начин на основа обезбедувајќи дека можеме да се пробие на јамка, дека ние не се задржи на извршување тоа засекогаш и секогаш. Бидејќи за разлика од нула, ние всушност не треба само обичен Засекогаш јамка. Во C, програмата мора да заврши на крајот. Значи ние треба да се осигура дека на некој начин ние го запре. Во ред. Па пример за за телефонска линија кои можеби ќе сакате да ја користите за Марио е ова. Значи мора да стои цел број јас дека ќе почнете на 0. Колку што е помалку од висина, ќе се изврши на телото на јамка внатре тука. После тоа тело на јамка се изврши, тогаш ќе зголемување јас од 1. Тогаш вашата програма ќе провери повторно - Добро, е i помалку од висината? Ако е така, тогаш ќе продолжи. Па еве еден пример на нула индексирање, каде што со почеток во нула и потоа - забележите дека нашата состојба е помала од висината. Така велат нашите висина е четири, на пример, јас ќе започне во 0. Тоа ќе биде 1. Тоа ќе биде 2. Тоа ќе биде 3. А потоа, откако таа надградби, кога за јамка надградби, јас ќе потоа да се постави на 4. Но, 4 не е помал од 4, и така тогаш ние би продолжи со остатокот од нашите јамка. Во ред. Значи тоа е почеток на нула. Но, ние исто така може да почне во една, на пример. Но бидејќи ние на проектот на еден, ние вид на мора да одат уште една време на крајот. Па тогаш тоа е причината зошто ние го додадете помал или еднаков на. Значи еден од големите нешта што ми се допаѓа во врска со компјутер програмирањето е дека постои само толку многу начини да се прават работите. Значи можете да изберете дали ќе почнете од нула, без разлика дали со почеток во една. Исто така, ако сака, вие само може да се користи додека јамка, на пример. Па можете да - ајде всушност отворен hello.c. Значи имаме за јамка тука. Таа започнува во i = 0, I <5. Имам коментар тука да ни кажува она што го прави. Тоа отпечатоци здраво пет пати со користење на за телефонска линија. Но, ние исто така може да го направи тоа со помош додека јамка, како и. Па ајде да погледнеме како да го направите тоа. Значи, ако ние се случува да се имитираат за телефонска линија, тогаш ние исто така сакаме да имитираат иницијализација, состојбата и ажурирање. Па состојба треба да биде прилично едноставен, бидејќи во додека синтакса, кога ќе се погледне во него, тој вели: додека (состојба). Па ајде само внесување на состојбата таму. з <5. Во ред. Па знаеме што сакаме да се печати збогум. Ние знаеме дека тоа е телото на нашиот јамка. Но, ние сме недостасува иницијализација и ажурирање, нели? Затоа што не можат да имаат засекогаш јамка. Таа треба да се прекине. Значи, да додадете некој вид на иницијализација тука употребувајќи го истиот оној што се користи во нашите за телефонска линија, int i = 0. Во ред. Значи ние започнуваме со int i. Го повторуваме тоа додека јамка се додека i е помал од 5. Па тогаш ние сме недостасува една работа, која е ажурирање. Значи она што ажурирање ние ќе треба да се користи ако бевме во суштина Пресоздавањето за телефонска линија погоре? Имаме иницијализација i е еднаква на 0. Имаме состојба i е помал од 5. И тогаш тука е надградба, нели? Значи, ние сакаме да го копирате тоа. Ние сакаме да се каже во ред, i + +. Тоа е истото како вели i = i + 1. Но, бидејќи тоа е се користи толку често, стенографија за тоа е само велејќи i + +. Велики. Во ред. Еве јас всушност не излезете од моите јаболка програма. Па јас сум само ќе кликнете Control-C и дека веднаш чизми ме од мојата програма и носи ме врати во терминал. Така што, на пример, ако извршувате во грешка каде што Заборавив да го обновите вашиот додека јамка како што тоа би прекине, и внесете бесконечна јамка, тогаш можете да користете control-C да се пробие на тоа. Во ред. Значи ние сме во право директориум. Значи, да се направи здраво. А потоа ако трчаме здраво, можеме да видиме дека јамка збогум не иста работа како што е нашата за јамка прави. Значи тоа е само навестување. Без разлика дали сте повеќе чувствуваме удобно со јамки или со додека петелки, тие може да се менливи. Значи без разлика кој оној што сакате да ги користите за да iterate преку - во овој случај - висината на Марио пирамида. И така, повторно, ова е само за потсетување, ако почнете од нула за вашиот променлива, тогаш ќе сакате да имате различни состојба отколку ако сте почнале во еден. Значи оваа табела само вид на ви покажува потсетник. Ако сакате да се повторува 10 пати, на пример, тогаш или да ја стартувате вашиот променлива на нула. И вашата состојба може да биде помал од 10. И така тој вид на ви покажува матрицата на тоа. Во ред. Значи ние сме го преживеале Марио. Што рековме, Океј, и ние треба да се провери за правилно внесување, нула и 23 инклузивна. Одиме да се најде некој вид на шема, некаков начин за изразување на енти ред или о ред. И ние ќе одлучи, Океј, тоа ние ќе печати ја оваа многу простори, ова многу хашови, нова линија. Во ред. Значи имаме тоа. Па сега можеме да се движат за да алчен. Алчните е програма каде што корисникот ви дава износот на готовина која во суштина вие како вработен треба да се вратат. Но сакате да го користите како малку пари што е можно. И така ова е местото каде алчен алгоритам доаѓа во, каде што ќе сакате да го користите на минималниот износ на пари е можно да се направи таа сума на промени. Во ред. Па пример за ова во вашето решение може да изгледа нешто како ова. Ќе се кандидира. / Алчен. Ти си побарано да се каже во ред, и колку промена се должи? Таа вредност ќе биде вредноста во долари. Така што ќе биде со подвижна запирка. Вашата програма потоа ќе го пресмета минимален износ на монетите потребно да се направи, во овој случај, $ 0,32. И така минималниот број е четири. Па пред да дознаам што да правам, ајде вид на прошетка преку процес кој може да се обратите за. Значи, ако влезот е 32, тогаш во суштина јас одам да се користи најмалку износот на монети ако јас го користам како многу голема монети, како е можно. Нели? Така, тоа е многу полесно да се користи една четвртина како за разлика од пет nickels. Па да речеме, ти треба да се вратат 0,32 $. Па, можам да користам една четвртина во ова? Да, можеш. И тогаш ќе се намали на 0,07 $. Ајде да видиме дали можам да користам друг квартал да ви се оддолжи. Па, бр. Јас не може да се вклопат една четвртина во тоа. Па ќе одам да се движи кон следниот најголем паричка. Може ли да користам пара? 0,07 $, без не можете да користите пара да плати $ 0,07. Така да се каже не. Се движи кон следниот, што е никел. Можете да го користите никел? Да. Седум е поголема од 0,05 $, па ние може да се користи никел. И тогаш имаме две центи останати. Можеме да го користиме еден денар? Да, ние можеме. Можеме да го користиме друг денар? Да. Можеме да го користиме друг денар? Не, бидејќи сега имаме успешно платени на корисникот назад. И така што изнесува четири монети користи. Така размислува за тој процес, ние секој Времето одлучи во ред, што е најголемата монета дека можеме да го користиме? Откако ние ги користиме тоа, ние вид на води ментална забелешка на тоа колку повеќе пари ние треба да се вратат на корисникот, како и колку монетите ние сме биле користење. Во ред. Значи, но повторно, првиот чекор - исто како Марио - е да се поттикне на корисникот за паричен износ. И така оваа сума ќе биде - тоа се случува да имаат децимална вредност, бидејќи ние ќе замолете ги за долари. Така што тип на податок нема да биде цел број. Но, тоа нема да биде - Да, плови. Но, исто како јаболка, плови може да биде позитивна или негативна. Па тогаш кога ќе провериш за вредности, ви се случува да сакаат да се осигура дека вашиот плови - корисникот влез - не е негативен. Во ред. Ние може да се справи со присутна во целата наша програма, претставуваат четвртини од 0,25, dimes за 0,1, итн. Но сметам дека е многу полесно да се справи во само чиста центи. Исто така - и ние ќе зборуваме за ова малку подоцна - во C, лебдечки точки имаат нешто што се нарекува непрецизност. Значи, кога ќе влезе во 0,12, на пример, компјутерот всушност продавници, како како 0.1111119 или нешто слично. Така, тоа е многу полесно да се претворат во центи. Така како ние да се конвертира еден долар вредност центи? ЗВУЧНИК 5: тајмс тоа од 100? ZAMYLA Чан: Да. Да. Значи ние би моменти од 100. Но, едно слабо нешто за лебдечки точки е дека постојат некои непрецизност. Па да погледнеме еден пример за тоа. Па ќе одам да се отвори imprecision.c. Во ред. Ова е многу едноставна програма. Таа прашува за плови, и тоа отпечатоци назад. Еден убав врвот во терминалот е едноставно можете да напишете јасни, а тогаш имате јасна екранот. И така не треба да се погледне во сите претходни излез или било грешки или извештаи за грешки, нешто слично. Во ред. Значи, да се направи непрецизност. Да ја стартувате. Па јас haven't - во мојот код, јас не печати линија или нешто слично. Па тоа само има трепне курсорот. Така, тоа е само чека за мене да внесувате плови. Значи let's - случаен плови. И ќе видите дека тоа отпечатоци назад, но има некои дополнителни броеви кои ние дефинитивно не се вклучат. Значи, сакаме да бидете сигурни дека тоа не се случи во нашата програма. Па тогаш што сакаме да направите е да бидете сигурни дека ние всушност вид на заокружена до соодветната вредност. Нели? И така, за среќа, имаме функција наречена круг вклучени во апаратот. Тоа е во математика библиотека. Ако сакате да знаете како да се користи круг, тогаш всушност употреба во упатството. Можете да кликнете на човекот круг. Потоа тука се носи до - може да биде малку тешко да се дешифрира, но на крајот ќе го добиете висат од него. Тој вид на ви покажува она што функција го прави, а потоа некои можните примени на тоа. Значи, кога сте на крајот се добие соодветен, валидна влез од корисникот, тогаш ќе сакате да го конвертирате центи. Бидете сигурни дека ќе околу вредност, така што ќе се избегне овој подвижна запирка непрецизност. Во ред. Значи ние сме поттикнати на корисникот за паричен износ. Сега она што сакате да го направите е суштина се провери, нели? Океј, па можам да користам најголемите монета е можно? Ако можеш, тогаш ќе ја користите. Можете да ги пратите на тоа колку пари сте користеле досега и исто така, намалувањето на износот. Нели? А потоа ви се случува да се провери. Откако ќе вид на исцрпени квартали, сакате да одите на следната е можно нешто. Значи каков вид на структура или каков вид на јамка може ние сакате да го користите постојано да се провери дали се уште може да се користи една четвртина, на пример? ЗВУЧНИК 6: Додека вредност поголема од? ZAMYLA Чан: Да, совршено. Точно. Така, додека вредноста е поголема од. Така, додека вредноста што ние треба да даде назад е уште поголема од една четвртина, додека ние се уште може да се користи една четвртина, користете четвртини. Пратете на тоа. А потоа продолжи да оди. Совршена. Во ред. О, еве јас сум само вклучени само некои совети за тоа како да се печати од вредности. Значи во вашиот printf функцијата, ние обично се само кои се занимаваат со жици. Но, кога ќе сакате да испечатите еден int или само било кој тип на цифра, ќе мора да се вид на пишувам еден вид на место носителот. Значи тоа е претставена со процент,% d за цели броеви. Ќе напишам тоа, а после вие ​​ќе всушност - по запирката - стави во она што вредност, всушност, оди таму. Право. Во ред. Значи ние утврди дека сакаме да се провери дали - еден начин да се направи ова ќе биде постојано се провери дали ние се уште може да се користи четвртини, а потоа користете четвртини, да ги задржи следи, а потоа се движи кон следниот најголемата вредност. Сега друг вид на уредни начин на кој можете да го направите ова е Употреба на операциониот модул. Значи ние веќе имаат плус, минус, множат и делат достапни за нас. Но оператор модул е ​​вид на уредни. Што го прави тоа е тоа всушност се враќа сте остатокот од поделба два броја. Значи, ако се сеќавате во долга поделба кога сакате, да речеме, направи 74 поделено со 3, ќе го напишам, носат над, одземе, а потоа на крајот бројот на дното е остатокот. Па, она модул прави тоа, всушност, само ви дава тоа. Значи 74 modulo 3 ќе ви даде 2. Слично на тоа, 10 modulo 2 ви дава 0, бидејќи не постои остатокот кога ќе подели 10 со 2. 6 модул 5, и 5 оди во 6 едно време и потоа Тој има 1 останати. Потоа ако имате 7 модул 9, добро 9 е поголем од 7. Така што не може да оди било други времиња. Па тоа го прави смисла дека вратената вредност е 7. Значи, ако мислите дека за modulo, како тоа ви дава остатокот откако ќе се делат нешто, можеш вид на се види како ќе може да биде во можност да го користат во Алчните, нели? Значи, ако сте вид на комбинираат модул можеби со поделба оператор, нешто слично, тогаш можеби ќе имаат кул вид на mathy начин да им пријде на проблемот во собата. Па сега дека знаеме дека има неколку различни начини на кои би можеле да го сторат тоа - таму се дефинитивно многу различни начини да се дури и пишуваат додека петелки. Па јас сум напишал некои pseudocode тука. Тоа не може да биде идентична со вид на скелет на вашиот код што ќе пишувам. Но, во суштина, процесот и начинот на размислување е како што се дискутира. Значи прво, на првата линија е велејќи дека за да се добие одредена сума во долари. И тогаш имплицитно не е да го конвертирате центи. Потоа, додека четвртини може да се користи, ние сакаме да зголеми брои. А потоа ние сакаме да се намали износот, вредност која се ние сме се враќаат назад. Како што гледате тука, тоа не е сосема C. Но јас сум исто така, требуван работи, јас ја ставам услови внатрешноста на загради. Па тогаш тој вид на добива ме започна. А потоа подоцна, јас само може да се погледне до синтакса. Често најтешкиот дел навистина за проблем е да се се разбере што точно ви треба да се направи. Значи еднаш ти пишувам дека надолу, тогаш тоа е многу полесно да потоа се претвори во pseudocode. А потоа од pseudocode, синтакса збор за прилично лесно. Па ќе видиме додека квартали, може да се користи, да се зголеми бројот, намали износот. Додека dimes може да се користи, а потоа ќе го спроведе така натаму и така натаму, се додека не се исцрпени сите ваши пени. Можете печати бројот на монетите се користи, што ќе биде минимален износ да се направи на корисникот внесуваат вредност. И таму имаш Алчните алгоритам. А потоа, откако ќе заврши тоа, исто така, заврши pset 0. Дали некој има било какви прашања во врска со ништо? Во ред. Па, јас ќе се држи околу за малку по ако имате било какви прашања. Ова беше можи 1. Ви благодариме за кои доаѓаат.