[Powered by Google Translate] ZAMYLA CHAN: Dobre, všetci. Vitajte Návod 1. Tento návod bude na PSet 1, čo je C. Dúfam, že vás všetci mali pobaviť so svojimi Scratch projekty. Takže teraz v tomto návode, budeme vlastne bude schopný sa dostať do C, dostať sa do písania nejaký strojový kód. Takže ak ste neboli na Walkthrough 0, potom sa jedná návody naozaj - Ideme na prechádzku Problém set, hovoriť cez niektoré bežné tipov a techník ktoré môžete použiť. Budeme rozbiť priradenie až do zvládnuteľných uhryznutie, takže vy môžete začať a dúfajme, že pochopiť, ako to urobiť. Dobre. Tak Pset 1. The psets tento rok bude mať štruktúru, kde prvý - tam to bude časť otázky, séria otázky, ktoré sa naozaj tiež pomôžu začať s Pset, vám pomôže cvičiť niektoré techniky, ktoré budete potrebovať. A tak sa tieto otázky, nebudem na pokrytie návod, pretože v časti, ktorá vám bola pridelená výučba kolega je vlastne chodiť cez tie otázky s vami. Na konci svojho oddielu, budete odísť s Odpovede na tieto otázky, ale aj s istotou, že môžete implementovať niektoré funkcie, ktoré budete potrebovať Posledne menovaná častí PSet. Pset 1 predstavuje Mario. A to je trochu zábavy program, kde v podstate sme napísať a vytlačiť polovice pyramídu v typickom scéne Mario. A potom druhá časť PSet sa nazýva Greedy. A tak sa v Greedy sme v podstate fungovať ako chamtivý pokladničné, kde, ak niekto dáva nám sumu peňazí že chceme, môžeme spočítať minimálne množstvo mincí, ktoré môžeme sa k nim vracať, aby ešte dať im túto sumu. Dobrá. Takže každý návod bude mať nástrojov. A opäť, možno nebudete môcť používať všetky nástroje, ktoré v tomto Panel nástrojov alebo môžete použiť všetky z nich. V každom prípade, je to naozaj dobré vedieť, čo ste vybavený. Takže máme CS50 Appliance, ktoré som vám ukážem, chlapci a Predstavujeme Vám, že. Potom tiež všeobecne, dobrý štýl je určite jeden z našich najdôležitejšie nástroje. Štýl v podstate týka toho, ako čitateľný, je váš kód? Keď niekto ide a prečíta kód, oni majú Easy Time? Môžu pochopiť? Je to elegantné? Potom si pohovoríme o tom, ako sa dostať platný užívateľský vstup vo vašom program, pretože v oboch Mario a Greedy, budete musieť požiadať užívateľa na vstup a dá vám nejaké číslo. Takže chceme, aby sa ubezpečil, že číslo je platné. Potom nezabudnite na Scratch, sme mali bloky, ako sú Repeat, Opakujte, kým, alebo počkaj, alebo navždy. Takže budeme druhu preložiť do C teraz pozrite sa na slučkách, ako for, while, a do-while. Potom tiež budeme tiež musieť zobrazovať hodnoty späť na obrazovke, či už je to v Mario alebo Greedy. A tak budeme hovoriť o tom, ako sme sa tlačiť veci z reťazcov celé čísla a plaváky. A potom konečne, budeme hovoriť o pseudokódu, naozaj dôležitý koncept pamätať v tomto kurze. To, čo som tu mi pomáha najviac problémových súborov je myslieť a popísať, čo chcem urobiť, než premýšľať o nejakom C. Ale len popisovať dej. Takže pseudokód je tak trochu medzi angličtinou a C, druh popisujúci procesy bez správnu syntax, ale ktorý poskytuje dobrý dosť štruktúru. A tak budem mať nejaké príklady pseudokódu pre vás rovnako v tomto návode. Dobre. Takže to, čo bude pracovať s je CS50 spotrebiča. Je to v podstate virtuálny stroj, ktorý druh beží Počítač vo vnútri vášho počítača. A to má veľa výhod. Jedným z nich je, že je to nastavenie s mnohými nástrojov, ktoré budete potreba CS50. Rovnako tak, to znamená, že každý je na rovnakom základe, či Mac alebo PC alebo iný operačný systém. Všetci môžeme spustiť virtuálny stroj. A tak tam sú inštrukcie na manual.cs50.net/appliance. A tak ak idete na tento odkaz a postupujte podľa pokynov, potom dúfajme, že budete môcť nainštalovať spotrebič. Takže prvé, budete musieť nainštalovať aplikáciu, Vlastnú žiadosť, aby mohli spustiť virtuálny stroj. A potom si stiahnite prístroj. Ale zase, tam sú návody na manual.cs50.net/appliance. Takže som už stiahli svoje zariadenie, a Nainstaloval som to v VMware Fusion. A tak keď som stiahol spotrebič, šiel som do súboru. Išiel som otvoriť a potom zistil, kde som uložené na CS50 Appliance. A odtiaľ, bežal som ho tu. Ale mám to už tu, takže sa poďme bližšie pozrieť. Dobrá. Takže teraz sme v CS50 Appliance. Urobil som ju celú obrazovku. Môžete si vybrať k tomu, že ak si budete priať, alebo len mať ako menšie okno na ploche. Tu máme len jednoduchý desktop s domov a odpadky. Ale keď idete do Menu a potom do programovania, potom uvidíte že máme niečo tzv Terminal. A tak tu, môžeme plávať okolo nášho počítača. Môžeme písať kód. Ale v skutočnosti, budeme používať program s názvom gedit, alebo "g upraviť, "podľa toho, čo ten, ktorý je. Takže budeme používať, že jeden písať kód. Takže budete mať tieto dva nástroje, ktoré budete používať predovšetkým písať kód. Potom okrem toho, že je to rovnako ako pravidelné počítača. Máme prehliadač. Vybrali sme si Google Chrome. Čo som urobil je, že som si nastaviť Dropbox obsahovať všetky dokumenty. A tak to je niečo, čo veľmi odporúča. Dropbox používa cloud synchronizáciu a tak ak - tak napríklad, čo náhodou - dúfajme, že nie - sa stane s vaším spotrebiča, potom to bude všetko bude synchronizované na oblaku. Dobrá. Takže to sú aplikácie, ktoré budete používať v CS50 spotrebiča. Teraz k navigácii v príkazovom riadku. Terminál môže skutočne pôsobiť ako akéhosi spôsob, ako skutočne zadajte príkazy do - ako, ak ste Mac, Finder. Alebo, ak ste v systéme Windows, som presvedčený, že je "preskúmať moju dušu počítač "alebo niečo také. Takže ak by sme sa vrátiť k zariadeniu, poďme otvoriť okno terminálu. Tak to má táto výzva, jharvard @ zariadenia. Povedzme, aby to väčšie. Dobre. Takže ak by sme zadajte príkaz ls, potom, že sú uvedené všetky Súbory v našom počítači, v našom aktuálnom adresári. Adresáre sú rovnako ako zložky. Používame tieto termíny zameniteľne. Dobre, takže sme uvedené súbory ktoré sú v tomto adresári. Teraz, ak chceme, aby prístup, povedzme, naše Dropbox, potom môžeme Zmena adresára. Takže cd a potom Dropbox. My ls znovu, a potom vidíme zoznam súborov, ktoré sú v táto zložka. Toto je analogické sa mi ísť do môjho domu, a potom kliknutím na tlačidlo Dropbox, a keď videl, zoznam tu. Dobrá. Takže povedzme, že - keď vy sa chystáte urobiť si PSet 1, urobme adresár nazvaný pset1. Takže sme v Dropbox práve teraz, ako môžete vidieť z tohto vyzve tu. Takže poďme sa adresár. Takže mkdir, nazvime to pset1. A tak teraz, keď my ls znovu, potom sme vidieť, že pset1 objaví. A tak ak chceme ísť dovnútra pset1, potom môžeme ísť dovnútra že zložka s príkazom cd. Dobrá. Takže znova, uvidíme, či môžeme - hovoria, poďme to urobiť iným spôsobom. Toto je analogické s len hovorím "Vytvoriť Nová zložka, pset1. Ale ako si nájsť, budete interakciu s terminálu veľa. Takže niekedy je to oveľa jednoduchšie, rýchlejšie stratil len práce v termináli robiť tie druhy vecí. Dobre. A potom tieto ďalšie príkazy. Je tu rm pre odstránenie súboru. Takže stačí napísať rm a meno súbor zmazať. Pôjdeme do niektorých príkladov, ktoré neskôr. A potom máme niečo ako man príkaz, ktorý prináša vytvoriť príručku pre typ funkcie. Opäť budem vychovávať skutočné príklad, ktorý neskôr. Takže ďalšie naozaj dôležitým nástrojom, ako som sa zmienil stručne skôr, je štýl. Takže v podstate, štýl má čo do činenia s čitateľnosti. Bude niekto iný schopný čítať, sledovať, a pochopiť svoj kód? To je dôležité najmä pre vás, sami, v skutočnosti. Ak ste zostať až neskoro kódovanie, a neskôr na vás vrátiť a ty si ako, čo to znamená premenná? Povedzme, že pracujete na skupinovom projekte s niekým, a vy ako sa na to pozerať navzájom kódu. Je naozaj dôležité, aby ste pomenovať premenné správne a aby to vyzeralo pekne, pretože to je celý rozdiel. Ale potom predovšetkým, sme v priebehu práve teraz. Takže v záujme CS50 a najmä pre vašu výučby chlapíci a grejdre, ktorí budú pri pohľade na svoj psets, prosím, použite správny štýl. A vaše výučby chlapi budú veľmi šťastní. Takže znova, štýl zahŕňa odsadenie veci správne, najmä pomocou rovnátka a odsadenie ty. Pomenovanie premenných niečo, čo má zmysel. Práve teraz sledujeme konvencii, keď máte viac slov vo vašom názve premennej, potom prepojiť ich s podčiarknikom, ako vidíte v tom, že meno príklad tu. Potom konečne, niečo, čo nazýva magická čísla. V podstate, keď čítate pomocou kódu a povedať máte premennú - povedzme, nemáte premennú, ale stačí povedať v poriadku, kým sa taká a taká je menej ako 10. Potom Vám porovnávač pôjde dobre, počkajte, kde sa to 10 pochádzajú? Takže naozaj vysvetľovať yourself veciach veľa. Aby sme vám pomohli vysvetliť sám seba komentáre. Komentáre sú pravdepodobne najdôležitejšie zahrnúť do vaše programy. A to vám pomôže nielen skutočne vysvetliť - to vám pomôže trochu vysvetliť svoje úvahy ako idete ďalej. A tak ak to urobíte, znovu, to bude oveľa jednoduchšie sa vrátiť do kódu a druh pochopiť, čo ste tam robí. Opäť, grejdre páči komentáre. Takže komentár, a - niečo ako voľné bodov. A kto nemá rád voľné body? Môžete tiež multi-line komentáre. A tak som do akejsi šablóny až tu. V podstate, zvyčajne sú používané v hornej časti Program na druhu vysvetliť, všeobecne to, čo tvoj problém set robí. Uveďte svoje meno, dátum, a tak ďalej. A tak, ako som uviedol v tomto multi-line komentár, manual.cs50.net/style_guide má ďalšie tipy a pravidlá o štýl slučiek, et cetera. Dobre. Takže teraz, že som vám povedal, niečo o štýle, uvidíme to v akcii. Dobrá. Tak tu, Tommy napísal nám nádherne hrozné príklad štýlu v programe. Tak tu vidíte, v poriadku. To je vlastne v poriadku. Vidíte multi-line komentár tu. Začnete s lomítkom a potom dvoma hviezdičkami. Môžete pokračovať ďalej, vyrovnajte hviezdičky pozdĺž línie a potom končí s hviezdičkou a lomka. Dobrá. Tak to je v poriadku. Toto je v poriadku. On vrátane jeho knižnice. Ale potom je tu má pripomienky zahŕňajúcich viac riadkov. Existuje veľa vecí zle s tým. Komentáre kostry viac riadkov, tu ju využíva Syntax pre práve jednu riadku komentáre. On je tiež splynutie všetko do rovnakého komentármi. Takže chceme, aby sa zabránilo, že. Potom tu vidíme, že sa tieto zátvorky, napríklad, sú všetky nad miestom. Odsadenie je zle. To naozaj nie je ukázať vám s konečnou platnosťou, kde sa niečo štartov a ďalšia vec končí. Potom tiež, vidíme, že má definované premenné i = 5 tu. Ale potom to štyri prichádza odnikiaľ, a nie je komentár k naozaj vysvetliť, kde sa to. Dobre. Takže teraz sa poďme pozrieť na niečo, čo je vlastne rovnako Kód s výnimkou lepší štýl. Takže znova, to je dobrý štýl príklad, multi-line príklad. A potom je tu to celkom čistý. Vidíme, že sa začína if tu, vstúpi nový linka, má otvorenú ortézu. Potom má odsadenie. Stále tento odsadenie - stále Táto indikácia uniformu naprieč celou Program a naozaj ukazuje, kedy jeden blok kódu sa spustí, keď jeden blok kódu končí. To sa môže zdať trochu nitpicky z našej strany začať s, ale uvidíte, ako píšete svoj kód. To je skutočne užitočné, aby mohli oddeliť to. A opäť, vaše grejdre naozaj rád, že. A tak vidíte, namiesto toho, aby len uvedenie čísla v tam, on vlastne volal premenné iterácie. A tak sme to vlastne pri pohľade na tento kód teraz ale tak nejako vidieť príklad dobrý proti zlej štýl. A tak, keď sa pozriete na ne vedľa seba tu, že nie rozhodne radšej prečítať ku strane, na pravej strane. Dobrá. Takže posledná vec, ako sme sa ponoriť do skutočného mäsa Pset je, ako skompilovať a spustiť svoj kód. A tak v podstate, keď píšete C, to je v skutočnosti nie je preložené do skutočného strojového kódu, Nuly a tie, ktoré stroj môže skutočne čítať a interpretovať. Takže máme niečo - Rinčanie je kompilátor, ktorý používame pre C. Existuje mnoho prekladača. Ale v CS50, budeme používať rinčať. A tak zvonenie v podstate prekladá z C na stroji Kód pre vás. Tak sa poďme pozrieť na príklad - ponoriť sa do spotrebiča tu. Dobrá. Takže teraz sme v našom domovskom adresári. Sme vlastne nie sú prípady, kedy je kód. Takže poďme zmeniť náš adresár Dropbox/walkthrough1, kde Ja si uložili nejaký kód. Takže ak stlačíme ls, potom vidíme, že mám pár súborov v tu. Dobrá. Takže som už napísal hello.c, takže sa poďme skompilovať a potom, čo to robí. Takže základný príkaz kompilácia by rinčať potom hello.c, v podstate hovorí poriadku, zostaviť hello.c pre mňa. Aj kliknite na tlačidlo Enter, sa zdá k išli doprava. Poďme kliknite ls znova. Tento súbor a.out teraz ukázal. A tak a.out je spustiteľný súbor. Tak ho spustiť, robíte. / A.out. A tak vidíme, že tento hello.c programu zrejme vytlačí ahoj päťkrát. Dobrá. Ale povedz nechceme používať názov a.out. Napríklad, chceme spustiť Hello program, pretože to uľahčuje pochopenie. Takže povedzme, že rinčať hello.c, a potom v podstate budete potrebovať odovzdať v niektorých veciach tzv flags. Takže hovoriť v poriadku, aj ja chcem pomenovať niečo iné. Môžete tiež odovzdať v mnohých rôznych vlajok, ktoré uvidíte. Takže vlajka pre pomenovanie programu, niečo, čo ste Chcem sa-o. Po-o, môžete napísať názov programu. Povedzme, hovoria ahoj. Takže teraz vidíme, že skutočne ahoj spustiteľný súbor. Takže môžeme spustiť, a to robí to isté ako predtým. Takže teraz, že máme ahoj, môžeme tiež odstrániť, pre inštancie, naše a.out. Takže rm pre odstránenie a.out, bude váš terminál vyzve, opýtajte sa pre potvrdenie, či naozaj chcete odstrániť alebo nie. Hovoríme y pre áno. A tam ideme. A.out je preč. Dobrá. Ale niekedy sa mätúci zapamätať si všetky príznaky, ktoré musíme zahrnúť a zadajte out rinčanie. A ako vidíme, keď používate zložitejšie programy, zídeme sa byť vrátane rôznych knižníc. A tak naše povely Clang dostane dlhšie a dlhšie. Takže súčasťou CS50 Appliance je príkaz make. Takže stačí napísať, aby ahoj. Chybička sa vlúdila. Sme už tento spustiteľný súbor. Dovoľte mi teda len odstrániť rýchlo. Teraz sa poďme písať, aby ahoj. A vidíte, v tomto riadku sem, že v podstate hovorí, aby ahoj zahŕňa všetky tieto príkazy, ktoré ísť do toho pre vás. Takže súčasťou CS50 Appliance je značka súbor. Takže jednoducho, keď máte súbor name.c, potom všetko, čo urobiť, je povedať, aby názov súboru. A potom budete mať spustiteľný súbor s týmto názvom. Áno? SPEAKER 1: Pre môjho počítača, namiesto toho, aby Clang hovorí GCC. Je to ako - ZAMYLA CHAN: Jo. Takže počítač by sa povedať, GCC oproti Clang, pretože GCC je iný typ kompilátora. Ak ste v CS50 Appliance keď, potom to by mal byť pomocou rinčať. Ak tomu tak nie je, potom možno príde so mnou hovoriť neskôr, alebo písať na CS50 Diskutujte a môžeme triediť, že von. Dobrá. Takže teraz, že máme takú základných nástrojov dole, potom sme môže ponoriť do Mario. Dobre. Takže Mario je program, kde v podstate budeme mať Vďaka našej vlastnej druh primitívnej verzii Mario Hra na pozadí. Vieš, Mario zvyčajne má fajku a strom a niektoré bloky. A potom je tu druh polovice pyramídy. Takže sme len tak bude zameriavať na tejto polovice pyramídy, takže kód tak, že vytlačí hashe pre druh blokov v tomto formáte. Takže to, čo sa stane, je užívateľ bude vstup určité výška pyramídy, a potom budete tlačiť, že z také, že dolný ľavý hash - tak na samom dne tu - že raz bude zladiť s dolnom rohu vášho terminálu. Dobre. Takže prvá vec, ktorú budete potrebovať - prvý malý mini problém, ktorý musíme riešiť, je, ako získať vstup od užívateľa. Takže musíme konať s tým, čo užívateľské vstupy a potom druh výstupných veci tam. Tak sa poďme pozrieť na vyzerať súbor s názvom apples.c, že ​​som napísal , Ktorá sa zaoberá vstupy a výstupy. Dobre. Tak tu hore, som zahŕňal niektoré z knižníc že musím. Naozaj dôležitá je tu štádiách (štandard I / O). , Ktorá sa zaoberá so štandardnými vstupmi a výstupmi, pretože budeme jednať s používateľskými vstupmi. Dobrá. Takže začnem hlavnú funkciu. A potom som sa opýtať používateľa poriadku, koľko jablká máte? Potom tu, čo tento riadok robí - Aj priradiť premennú i na hodnotu GetInt. Takže GetInt je funkcia, ktorá je zahrnutá v štádiách. A tak v podstate, bude to riešiť s ním pre vás. To vyzve užívateľa k int. Nech sa vráti, bude to byť priradená premenné i A tak potom je to len malý program, ktorý znižuje hodnota aj o 1 a potom vytlačí novú hodnotu. Pekná vec, o gedit je vlastne, že tam je mini terminál priamo tu. Takže namiesto toho, aby musel prepínať dopredu a dozadu medzi gedit a terminál, môžete skutočne stačí spustiť tu. Takže poďme sa najprv dostať do správnej adresára. Takže poďme zmeniť naše adresára Dropbox/walkthrough1. Dobrá. Takže teraz poďme urobiť jablká, zostavuje sa pre nás. A tak teraz poďme bežať jablká. Koľko jabĺk máme? Hovorím, že som sa 3. A hovorí, že "mwahaha budem jesť jeden z nich" a hovorí, že "Teraz máte 2 jablká". Dobrá. Takže poďme spustiť to znovu. A povedzme, že mám 1 jablko. Teraz mám 0 jablká. Dobre. Takže tento program zdá sa, pracuje podľa očakávania. My vstup číslo, znižuje to o 1, a potom sa vytlačí to znova. Ale čo keď, napríklad, mám -1 jablká? To nie je úplne zmysel. Ale stále je to číslo, tak program prijíma ju. A tak to vráti vám ešte ďalšie negatívne číslo. Takže to je jedna lekcia pre nás, že aj keď GetInt Funkcie a ďalšie príbuzné tie, ako GetFloat alebo GetString - aj keď tie nás dostanú správny dátový typ, pre Napríklad, ak som práve povedal, [k určovanie], potom by mi to skúste znova. Takže to bude riešiť, čo dátový typ zadania je ale v skutočnosti kontrolovať, dobre, je to vlastne druh hodnota, ktorá chcem? Takže jedna časť Mario je, že používateľ je vstup číslo, ktoré predstavuje výšku polovice pyramídy že robíš. A potom sa, či sme výzvy tohto užívateľa na výšku, a potom by mali existovať dva odhady na to. Je to tak? V spec, hovorí, že by nemal byť väčší ako 23 znakov, pretože to je niečo normy výška terminálu. Ale potom, čo ostatní viazaný, snáď dolná hranica, mohol chceme zahrnúť? Ak sme skutočne kreslenie pyramídy, druh myslenia späť ako vysoká pyramída môže byť, môže to niekedy byť nižšia ako určitý počet? SPEAKER 2: Väčší ako tri. ZAMYLA CHAN: Hmm? SPEAKER 2: Väčší ako tri. ZAMYLA CHAN: To je dobrý postreh. Mohlo by to byť - by sme mohli chcieť obmedziť ju len na tri úrovne pyramídy. Ale poďme si - Povedzme, že ako jednu hašovacia tabuľky sa počíta ako pyramídy príliš. Tak čo by náš aktuálny dolná hranica byť? Keď spomínam na jablká, nechceme negatívny výška pyramídy. Je to tak? Dobre. Takže keď sa spýtate na vstupe užívateľa, potom budete musieť zahŕňajú nejaký spôsob, ako zabezpečiť, aby celé číslo, ktoré poskytnúť vám nie je negatívne, pretože nemôžete nakresliť negatívny pyramídu. Dobre. Takže existuje niekoľko spôsobov, ako to urobiť. V podstate, akonáhle sa požiadať o vstup užívateľa, ktorý chcete požiadať že vám poskytne správny vstup. Takže chcete požadovať, aby tieto vám s radom že nie je negatívny, ale aj menej ako 24 rokov. Takže máme čo do činenia s nulovým až 23 vrátane. Dobrá. Takže chceme neustále požadovať - ak to nie je vzhľadom k nám platné celé číslo, ktoré chcete neustále vyžadujú nie. Daj mi platný vstup. Daj mi platný výšku. Tak spomínam staré Scratch, sme mali opakovať, kým bloku alebo Navždy Ak blok. To sú slučky, ktoré sú veľmi podobné while a robiť, keď slučka, ktorá dostaneme do len v druhej. Takže zatiaľ čo slučka má v podstate stav, ktorý kontrolu to Boolean hodnota, ktorú dal tam vnútri, rovnako ako bloky Scratch s uhlami. To je to, čo sa deje vo vnútri zátvorke while. Takže budete mať nejaké podmienky tam. A ako sme práve diskutovali skôr, bude táto podmienka majú čo do činenia s medziach celé číslo, ktoré bolo zadáva. Takže podmienka by mať niečo do činenia s tým, či číslo je v rámci príslušných medziach. Tak to je while. Napríklad, môžete vyzvať k celé číslo, a potom priebežne kontrolovať, keď tento vstup nie je platný. Napríklad, majte na opätovné výzve, majte na kladenie užívateľ pre celé číslo. Tak, aby mohol byť jedným zo spôsobov. Ďalší spôsob, ako by mohla byť Do While slučka, ktorá je veľmi podobný cyklu while, s výnimkou toho, čo robiť, keď robí, je - môžete trochu vidieť v syntaxi - je to, že má robiť, a potom skutočné slučky telo ako prvý. Potom to má pritom podmienky. Tak čo, zatiaľ čo slučky - čo sú užitočné, je, že sa v skutočnosti vykonať Kód aspoň raz a potom skontrolujte, či je podmienka splnená, alebo nie. Takže ak by ste chceli urobiť urobiť while, potom vo vnútri vašej Vyhlásenie si môže vyžiadať integer, pretože budete na Aspoň sa opýtať používateľa raz. A potom po prinútili ich, potom si môžete povedať v poriadku, raz dobre som urobil, je to platné? Ak je, potom stačí pokračovať ďalej. Ale ak to nie je, potom to jednoducho fungovať ako pravidelný kým slučka a potom ďalej pýtať. Dobre. Takže sme späť s Mariom. Takže vieme, ako sa výzva pre správne užívateľské vstup, ktorý je v rámci správnych medziach. Takže teraz sme skutočne potrebujú k tomu tento polovice pyramídy. Vyzerá to, že jednoduchých textových znakov. Takže poďme skutočne otvorené - povedzme, otvoriť okno a povedať jo, dobre, čo keby som bol vlastne bude robiť to ručne, zadajte jeden sám? Dobre. Tak uvidíme. Povedzme, napríklad, chceme, aby sa pyramídy, ktorá je zarovnaný na ľavej strane, potom by jednoducho - v Mario, najvyššiu úroveň má dva bloky namiesto jedného. Takže začneme s dvomi. My kliknite na tlačidlo Enter. Robíme tri, a potom štyri, Enter, päť. Dobre. Tak to je celkom jednoduché. Okrem tohto problému sade, chceme ho skutočne zladiť s pravej strane našej obrazovky. Dobrá. Tak, možno, ako jeden z vás skutočne zadajte toto taký, že to zarovnaný pozdĺž pravej? Namiesto uvedenia hash prvý, možno, ako tak nejako pohybovať po? SPEAKER 3: Napíšte linku? ZAMYLA CHAN: Hmm? SPEAKER 3: Napíšte linku? ZAMYLA CHAN: Jo. Jo. Dalo by sa písať ako podčiarknutie alebo niečo podobné , Ale môžeme len povedať, použiť medzeru. Poďme dať do podobnej tromi medzerami tu. Potom ďalší riadok, dobre, mali by sme dať dve medzery. Na ďalší riadok, sme len dať jednu medzeru. A potom pre našu posledný riadok, by sa nás netýkala žiadne medzery. A tam máme pyramídu. Takže to je niečo - nezabudnite, že druh logiky. A pokúsiť sa zistiť, nejaký vzor, ​​ktorý je v našich silách potom preložiť do C a zapojiť do nejakej slučky. Dobrá. Takže povedať, máme výšku osem, potom naše prvý riadok bude mať dva hashes. Ale dostať tie hashe, mali by ste písať niektoré priestory vopred. Je to tak? Čo som urobil, je, že som práve prešiel. Nakreslil som to sám, pyramídy v mojom textovom editore, ihlan s výškou osem a potom vypočíta koľko priestory, ktoré som potreboval, aby sa. Tak som povedal: v poriadku, dobre prvý riadok je budem mať dva hashe. Ale predtým, než to, že musím zadať sedem medzery. Budúci má šesť medzery a potom tri hashe, et cetera. Takže poďme pokúsiť priviesť to ďalšou vrstvou abstrakcie. Čo keď sme mali pre n-tý riadok, koľko hashe a ako veľa miesta, potrebovali by sme? Má niekto vidieť vzor? Takže prvý riadok má dva hashe. Druhý má tri. Tretí má štyri. Takže nth riadok by mal - SPEAKER 4: N plus 1? ZAMYLA CHAN: Jo. N plus 1. Exactly. Takže vidíme, že počet hash bude - ak budeme počítať prvý riadok byť jeden, potom sa počet hash je len to bude jeden viac než to. Dobre. Tak čo o počte miest? Tak poďme skúsiť a vyjadriť to, pokiaľ ide o výšku. Ak je výška osem, potom prvý r má sedem miest. Takže druh zodpovedá 8 mínus 1. Je to tak? Takže druhý riadok bude mať šesť miest, ktorá je 8 mínus 2. Takže budem to nechať na vás druhu prísť na to, vzor pre to. Dobre. Ale v programovaní, niekedy sme vlastne index na nulu. Takže začneme od nuly namiesto jednej. Takže miesto prvého riadku sa nazýva prvý riadok, budeme sa volať to 0-tý riadok. Takže v závislosti na spôsobe, akým chcete vykonávať, je veľmi opatrní, či už začínajú nulou, či začať jeden, váš vzor ich bude kompenzovať jeden. Dobre. Takže teraz, že sme trochu prišiel na programe, sme musím povedať poriadku. Takže pre všetky druhy úrovne schodov, budem tlačiť taký a taký počet medzier a potom taký a ako počet hash. To závisí od modelu, ktorý sme založili pred. Dobre. Takže jeden spôsob iterácie a druh ísť cez stanovený počet vecí je pre slučky, niečo ako opakovanie 10 blok alebo ako opakovanie a ste zadali číslo pre Scratch. Takže v podstate, pre každú úroveň schodov, budeme chcieť, aby vytlačiť priestory ako prvý. Potom vypíše počet hash. A potom budeme chcieť zadať nový riadok a potom opakovať znovu nasledujúceho bloku. Dobre. Tak sa poďme pozrieť na pre slučky na chvíľku na druhu prezrieť jednu cestu že by sme mohli ísť cez stanovený počet, prejsť číslo krokov v tejto polovice pyramídy. Takže pre vedenie sa skladá z troch častí. Po prvé, máte inicializáciu. Takže v podstate nastaví premennú. Bude to byť nastavená na túto hodnotu zakaždým že pre slučky štartov. Potom budete mať podmienku. Vaša cyklu for sa vykoná iba tak dlho, ako podmienka vyhodnotená ako true. A potom budete mať aktualizácie stavu. Tak to má čo robiť s premennou, ktorú inicializovaný. Takže nejaký spôsob, ako z v podstate zabezpečiť, aby sa môžeme vymaniť zo slučky, ktoré nemáme ďalej vykonávanie to na veky vekov. Vzhľadom k tomu, na rozdiel od Scratch, sme vlastne nemajú len holý Forever slučky. V jazyku C, program musí skončiť nakoniec. Takže musíme zabezpečiť, aby nejaký spôsob, ako sme sa to zastaviť. Dobre. Takže príklad pre vedenie, ktoré budete chcieť použiť pre Mario je to. Takže máte integer aj spustenie na 0. Ako dlho, ako to je menej ako výška, spustenie telo zo slučky vnútri tu. Potom telo slučky sa vykoná, potom by ste zvýšiť aj o 1. Potom váš program by znovu kontrolu - v poriadku, dobre, je aj menej ako výška? Ak je to, potom bude pokračovať. Takže tu je príklad nula indexovanie, kde sme začať na nula a potom sme - si všimnúť, že naša podmienka je menšia ako výška. Tak že naša výška je štyri, napríklad, aj začne v 0. Bude to 1. Bude to 2. Bude to 3. A potom akonáhle aktualizuje, keď pre slučky aktualizácie, bude aj potom byť nastavená na 4. Ale 4 je menšia ako 4, a preto potom by naďalej zvyšok našej slučky. Dobre. Takže to začína na nule. Ale my sme mohli tiež začať u jedného, ​​napríklad. Ale pretože začneme u jedného, ​​to sa nám ísť ešte raz doba na konci. Takže to je dôvod, prečo sme pridali menšie alebo rovné. Takže jedna z najväčších vecí, ktoré sa mi páčia o počítači Programovanie je to, že je to proste tak mnoho spôsobov, ako robiť veci. Takže si môžete vybrať, či začať od nuly, či už kto v jednom. Tiež, ak by ste chceli, môžete len použiť while, napríklad. Takže by ste mohli - Poďme skutočne otvorené hello.c. Takže máme pre sláčiky tu. To začína na i = 0, i <5. Mám poznámku tu hovoriť nám, čo to robí. Tlačí ahoj päťkrát pomocou slučky for. Ale my sme mohli tiež urobiť pomocou slučky while rovnako. Tak sa poďme pozrieť na to, ako by sme mohli urobiť, že. Takže ak budeme napodobňovať pre sláčiky, potom chceme tiež napodobňujú inicializácia, podmienka a aktualizácie. Takže stav by mal byť pomerne jednoduchý, pretože v syntaxe while, keď sa pozriete na to, že hovorí, že zatiaľ čo (podmienka). Takže poďme stačí zadať podmienku tam. i <5. Dobre. Takže vieme, že chceme tlačiť na rozlúčku. Vieme, že je to telo našej slučky. Ale nám chýba inicializácia a aktualizácie, nie? Pretože nemôžeme mať navždy slučku. Má sa ukončí. Takže poďme pridať nejaký inicializácia sa tu pomocou rovnaký, ktorý sme použili v našom pre sláčiky, int i = 0. Dobre. Takže začneme s int i Opakujeme tento while tak dlho, ako som ich menej ako 5. Takže nám chýba jednu vec, ktorá je aktualizácia. Takže to, čo aktualizácia museli by sme použiť, ak sme boli v podstate obnovovať pre sláčiky vyššie? Máme inicializácii aj sa rovná 0. Máme stav i je menšie ako 5 mm. A potom je tu aktualizácia, nie? Takže chceme kopírovať, že. Chceme povedať poriadku, i + +. To je to isté ako povedať, že som = i + 1. Ale pretože je to používa tak často, skratka pre ktoré je práve povedať, že som + +. Great. Dobre. Tu som vlastne nevystúpil z môjho jablka programu. Tak som len tak kliknúť na Control-C a bezprostredne topánky ma z môjho programu a prináša ma späť k terminálu. Takže, napríklad, ak sa dostanete do chyby, kde sa zabudli aktualizovať while taká, že by ukončiť, a zadáte nekonečnú slučku, potom môžete použite Control-C, aby sa vymanili z toho. Dobrá. Takže sme na správnom adresári. Takže poďme sa ahoj. A potom, keď sme sa spustiť ahoj, vidíme, že slučka zbohom robí presne to isté ako naše pre sláčiky robí. Takže je to len náznak. Či už ste viac vyhovuje pre slučky alebo s while, môžu byť zameniteľné. Takže podľa toho, čo ten, ktorý chcete použiť na iteráciu - v tomto prípade - výška Mario pyramídy. A tak opäť, je to len pripomienka, keď začnete od nuly pre premenné, potom budete chcieť mať rôzne stav, ako keď ste začali na jednom. Takže túto tabuľku tak nejako ukazuje pripomenutie. Ak chcete opakovať 10 krát, napríklad, potom môže buď začať premenné na nulu. A váš stav môže byť menší ako 10. A tak tento druh zobrazuje maticu, ktorá. Dobre. Takže sme prešli Mario. Sme povedali, Dobre, dobre musíme skontrolovať správny vstup, nula a 23 vrátane. Ideme nájsť nejaký vzor, ​​akýsi spôsob vyjadrenie n-tého riadku alebo i-tej riadok. A budeme sa rozhodnúť, Dobre, že budeme tlačiť veľa priestory, tento mnoho krížiky nový riadok. Dobrá. Tak sme si to. Takže teraz môžeme prejsť k Greedy. Greedy je program, kde užívateľ zadá vám sumu hotovosti, ktorá v podstate ste ako pokladničné musieť vrátiť. Ale chcete použiť ako malé mince ako je to možné. A tak to je miesto, kde Greedy algoritmus príde, ak budeme chcieť použiť minimálne množstvo mincí možné takú sumu zmeny. Dobre. Takže príklad tohto vo vašom riešenie môže vyzerať niečo také. Spustenie. / Chamtivý. Budete vyzvaní k hovoriť v poriadku, dobre, ako veľmi je zmena dlhuje? Táto hodnota sa bude hodnota v dolároch. Takže to bude float. Váš program potom vypočíta minimálne množstvo mincí potrebných, aby sa v tomto prípade, 0,32 dolárov. A tak minimálny počet sú štyri. Takže ako sme sa prísť na to, čo robiť, poďme trochu chôdze prostredníctvom procesu, ktorý by sa Vám mohol ísť okolo. Takže ak vstup je 32, potom v podstate budem používať najmenšie množstvo mincí, ak môžem použiť toľko veľké mince čo najviac. Je to tak? Takže je to oveľa jednoduchšie použiť štvrtiny as proti piatim Nickels. Takže povedzme, musíte sa vrátiť 0,32 dolárov. No, môžem použiť štvrtiny v tomto? Jo, môžete. A potom by sa znížil na 0,07 dolárov. Poďme sa pozrieť, či môžem použiť ďalšie štvrťroku zaplatiť späť. No, no. Ja nezmestí štvrtina v tom. Takže budem pohybovať na ďalšie najväčšie mince. Môžem použiť desetník? 0,07 dolárov, nie nemôžete použiť desetník platiť 0,07 dolárov. Takže hovoríš nie. Prechod na ďalšie, čo je nikel. Môžete použiť nikel? Áno. Sedem je väčší ako 0,05 dolárov, takže môžeme použiť nikel. A potom máme dva centy zostane. Môžeme použiť penny? Áno, môžeme. Môžeme použiť iný penny? Áno. Môžeme použiť iný penny? Nie, pretože teraz máme úspešne zaplatil užívateľa chrbát. A tak, aby súčty použité štyri mince. Takže premýšľať o tomto procese, sme každý čas rozhodnúť v poriadku, Čo je najväčší mince, ktoré môžeme použiť? Akonáhle budeme používať, že sme trochu udržiavať duševné vedomie o tom, koľko viac peňazí musíme vrátiť užívateľa, rovnako ako to, koľko Mince sme používali. Dobre. Tak ale zase, prvý krok - rovnako ako Mario - je podnietiť užívateľ na peňažnú sumu. A tak je táto čiastka bude - to bude mať desatinnou hodnotu, pretože budeme Spýtajte sa ich na doláre. Tak, že dátový typ nebude celé číslo. Ale to bude - jo, float. Ale rovnako ako jablká, môže plaváky byť pozitívne alebo negatívne. Takže keď potom skontrolujte, či hodnoty, budete chcieť zabezpečiť, aby vaše float - vstup užívateľa - je non-negatívne. Dobre. Mohli by sme riešiť s plavákmi v našom celom programe, predstavujú štvrťrok od 0,25, desaťhalierniky o 0,1, et cetera. Ale pre mňa je oveľa jednoduchšie riešenie, v pouhých čistých centov. Tiež - a budeme hovoriť o tom trochu neskôr - v C, plávajúce body majú niečo ako nepresnosť. Takže, keď vstúpi do 0,12, napríklad, počítač vlastne obchody ako napríklad 0.1111119, alebo niečo také. Takže je to oveľa jednoduchšie previesť na centy. Tak ako sme sa previesť dolárovú hodnotu k centov? SPEAKER 5: Občas to od 100? ZAMYLA CHAN: Jo. Jo. Takže by sme časy to o 100. Ale jedna ošemetná vec, o plávajúcich bodov je to, že je nejaká nepresnosť. Takže poďme stačí sa pozrieť na príklad, že. Takže budem otvoriť imprecision.c. Dobre. To je veľmi jednoduchý program. To žiada o plaváka, a to vytlačí ju späť. Jedna pekná tip v termináli je stačí napísať jasné a potom máte jasnú obrazovku. A tak nemusíte pozerať na akúkoľvek predchádzajúcu výstupu alebo chyby alebo správy o chybách, niečo ako, že. Dobre. Takže poďme sa nepresnosť. Poďme ho spustiť. Tak som Nenašli - v mojom kóde, nechcel som vytlačiť akýkoľvek dotaz alebo niečo také. Tak to jednoducho je blikajúci kurzor. Takže je to len na mňa čaká na vstup float. Takže rokov 's - náhodné float. A vidíte, že tlačí ju späť, ale má niečo navyše čísla, ktoré sme rozhodne neobsahovalo. Takže chceme, aby sa ubezpečil, že to nie je v sa stalo v našom programe. Takže to, čo chceme urobiť, je uistiť, že sme skutočne druh zaokrúhlená na zodpovedajúcu hodnotu. Je to tak? A tak našťastie máme funkciu nazvanú kolo v cene v Appliance. Je to v matematickej knižnici. Ak chcete vedieť, ako používať bicykel, potom skutočne používať manuál. Môžete kliknúť man koleso. Potom tu to prináša up - môže byť trochu ťažké rozlúštiť, ale nakoniec dostanete na kĺb. Je to druh ukazuje, čo funkcia robí a potom niektoré Možno využitie, ktoré. Takže keď sa nakoniec dostať správne, platné vstup od užívateľ, potom chcete previesť na centy. Uistite sa, že ste okolo hodnotu tak, aby sa tomu zabránilo plávajúce bod nepresnosť. Dobre. Takže sme vyzvaní užívateľa pre peňažné čiastky. Teraz to, čo chceme urobiť, je v podstate zistiť, že jo? Dobre, takže ja používam najvyššej mincu čo? Ak je to možné, potom ho použiť. Môžete sledovať, koľko mincí ste používal doteraz a tiež klesajúci množstvo. Je to tak? A potom budete kontrolovať. Akonáhle ste druh vyčerpal štvrťroku, chceš ísť na ďalšie možnú vec. Takže, aké štruktúry alebo aký druh slučky môžeme chcete použiť pre neustále kontrolovať, či môžeme naďalej používať štvrtina, napríklad? SPEAKER 6: Kým hodnota väčšia ako? ZAMYLA CHAN: Jo, perfektné. Exactly. Takže, keď je hodnota väčšia ako. Takže, keď sa hodnota, ktorá sa má vrátiť je stále väčší než štvrtina, zatiaľ čo stále ešte môžeme použiť štvrtiny, použiť štvrtiny. Sledujte to. A potom pokračovať ďalej. Perfect. Dobre. Oh, tu som len súčasťou len niekoľko tipov, ako tlačiť z hodnoty. Takže vo vašom funkcii printf, sme zvyčajne boli práve rokovania s reťazcami. Ale keď chcete vytlačiť int alebo len akýkoľvek druh číslice, budete musieť trochu napísať akúsi zástupnú. Takže je zastúpená percent,% d pre celé čísla. Budete písať, že, potom potom budete skutočne - po čiarkou - dať do toho, čo hodnota skutočne ide tam. Právo. Dobre. Takže sme dospeli k záveru, že chceme zistiť, či - jedným zo spôsobov, ako to dosiahnuť, by bolo neustále kontrolovať, či môžeme naďalej používať štvrťroku, a potom použite štvrťroku, majte sledovať, a potom sa presunúť na ďalšie najväčšie hodnoty. Teraz iný druh čistej tak, že by ste mohli urobiť, je pomocou ovládacieho modulo. Takže už máme plus, mínus, násobenie a delenie ktoré máme k dispozícii. Ale operátor modulo je trochu poriadok. Čo to urobí, je to vlastne sa vrátime zvyšok delenie dvoch čísel. Takže ak si spomeniete na dlhú divízii, keď by, povedzme, to 74 deleno 3, by ste napísať, prevádzať, odpočítať, a potom sa na konci číslo v dolnej časti je zvyšok. No, čo modulo to vlastne len vám, že. Takže 74 modulo 3 by vám 2. Podobne, 10 modulo 2 vám 0, pretože tam nie je žiadny Zvyšok pri delení 10 od 2. 6 modulo 5, dobre 5 ide do 6 Jeden krát a potom to 1 zostane. Potom, ak máte 7 modulo 9, a 9 je väčšia ako 7. Takže to nemôže ísť žiadne iné časy. Tak to dáva zmysel, že návratová hodnota je 7. Takže ak si myslíte, že o tom modulo, ako to vám dáva zvyšok Po rozdeliť niečo, môžete trochu vidieť, ako sa by mohol byť schopný použiť v Greedy, že jo? Takže ak ste typ kombinovať modulo snáď s rozdelením Prevádzkovateľ, niečo také, potom by ste mali mať v pohode druh math spôsob, ako pristupovať k problému sadu. Takže teraz, keď vieme, že tam je niekoľko rôznych spôsobmi, ktoré by sme mohli urobiť toto - tam sú určite veľa rôzne spôsoby, ako ešte písať while. Tak som napísal nejaké pseudokódu tu. To nemusí byť totožný s druhom kostry Vášho kód, ktorý napíšete. Ale v podstate, proces a spôsob myslenia je rovnako ako sme diskutovali. Takže prvý, prvý riadok hovorí sa dostať určitú v dolároch. A potom implicitné tam je previesť na centy. Potom, zatiaľ čo štvrtiny môžu byť použité, chceme zvýšiť počet. A potom chceme znížiť sumu, hodnotu, ktorá vraciame späť. Ako vidíte tu, to nie je tak celkom C. Ale ja som tiež členité veci, dal som svoje podmienky vo vnútri zátvorky. Takže tento druh dostane ma začalo. A potom o niečo neskôr, môžem len pozrieť do syntaxe. Často najťažšie skutočne o problém, je pochopiť, čo presne musíte urobiť. Takže akonáhle sa to zapísať, potom je to oveľa jednoduchšie, aby potom preložiť do pseudokódu. A potom z pseudokódu, syntax je celkom jednoduché. Takže vidíme, zatiaľ čo štvrti, môžu byť použité, zvýši počet, znížiť množstvo. Kým desaťhalierniky môže byť použitý, potom vykonať ho tak ďalej a tak ďalej, kým ste vyčerpali všetky vaše haliere. Môžete vytlačiť počet mincí použité, ktorý bude minimálna suma, aby si užívateľ zadáva hodnotu. A tu máte Greedy algoritmus. A potom raz skončíte, že ste tiež skončil PSet 0. Má niekto nejaké otázky o čomkoľvek? Dobrá. No, budem držať okolo trochu po, ak máte akékoľvek otázky. To bolo návod 1. Vďaka, že ste prišli.