HLAS 1: Hovorme o vode. V tomto probléme, žiadame užívateľov, aby oznámiť nám, ako dlho v niekoľkých minútach ich sprchy boli a potom počítame ekvivalent počet fliaš vody že ich sprcha použiť. Takže aké sú naše na-do je Pre tento problém? Po prvé, budeme chcieť výzvu a potvrďte vstup, ktorý nám dáva užívateľovi. Potom, čo sme zistili, že sme majú platné vstup užívateľa, ideme pre výpočet prepočítaný počet fliaš vody že používateľ mal v priebehu Ich sprcha, a potom sme bude im to podľa vytlačiť toto číslo. Takže poďme riešiť naše prvé úloha, pobádať a overovanie vstup užívateľa. Za týmto účelom sme napísala Funkcie pre vás zavolal get_int nachádza v CS50 knižnice. get_int zaisťuje, že používateľ vstupy celé číslo, takže akékoľvek kladných čísiel záporné čísla, alebo nula sú prijímané. Ale v prípade, že používateľ zadá niečo iné, takže ľubovoľná kombinácia písmen alebo číslic alebo desatinné čísla, potom sa Používateľ bude vyzvaný, aby znovu a funkcia nebude nič akceptovať kým im užívateľ dáva celé číslo. Tak ako používame get_int? Ak otvoríte svoj pracovný priestor a vytvoriť súbor s názvom integer.c poďme zadajte nasledovné. Hashtag patrí cs50.h. To je nutné, pretože get_int je funkcia CS50 knižnica, takže musíme hashtag zahŕňať jeho vyhlásenie za účelom používať funkciu. A potom v mojom hlavnom fungovali Práve idem jednoducho volanie funkcie get_int. Takže poďme bežať to a uvidíte, ako to funguje. Už som zostavil to, tak poďme jednoducho ísť dopredu a spustiť tento program, ./integer. Tu mám výzva a Tu je miesto, kde som vstupná hodnota. Povedzme, že som dal len niektoré integer, 50, program excepts a ukončí a to je to. Ale povedať, že som ho spustiť znova a Aj vstup niečo iné. Možno, hello world. To nie je celé číslo, takže Program ma vyzve na opakovanie. Skúsime to znova s snáď desiatkovej tentoraz. 0,5, opäť, nie je celé číslo, takže program nebude prijímam ho a to mi povie k opakovaniu. Takže dajme tomu iné číslo. Program akceptuje to, ukončí, a my sme urobili. Takže teraz máme funkciu že nám umožňuje a zaisťuje že používateľ zadá integer, ale ako môžeme v skutočnosti sledovať z celé číslo zadaných užívateľom? No, to všetko budeme robiť, je obchod táto hodnota v premennej, povedzme n. Takže ak Prehlasujem celé číslo n, I a nastaviť túto hodnotu na get_int, potom n potom uložiť čokoľvek cení užívateľa privedený. Dobre, takže teraz máme zabezpečené, že Užívateľ nám dá celé číslo a vieme, ako sledovať o celé číslo, ale pamätajte, čísla sú pozitívne aj negatívne. Takže to nie je naozaj zmysel V súvislosti s týmto problémom že používateľ má sprchu povedzme negatívne 12 minút. Takže potrebujeme, aby sa ubezpečil, že používateľ v skutočnosti nám dáva kladné celé číslo. Teraz nemáme len single funkcie za to, takže budeme mať k vytvoreniu že sami. Takže chceme neustále vyzve užívateľa kým sa nám kladné celé číslo. V prípade, že robím niečo nepretržite po tom to je podobný slučky, opakovanie. Takže jedným z konštruktov, ktoré používame vc realizovať opakovanie a slučky Je while. Takže while, as Tu je ukázané, vykoná čo je v tele slučky ako Kým daných podmienka vyhodnotená true. Akonáhle je táto podmienka vyhodnocuje ako nepravdivý, potom Program bude pokračovať na čokoľvek prichádza po tela slučky. Takže zatiaľ čo slučky budú bolo naozaj užitočné v CS50. Ale v tomto konkrétnom Prípad, vieme, že sme chystá vyzvať užívateľa prinajmenšom raz a to iba slučky v prípade potreby. Tak tu sa dostávame k Špeciálna konštrukcia a to je veľmi podobný chvíľu slučka volal do-while slučku. Takže do-while vykonáva telo slučky aspoň raz a potom skontroluje či by mal vykonať, na rozdiel od while, ktorý bude kontrolovať stav a potom spustiť telo. Takže v do-while, čo by sme mohli urobiť, je vyzve užívateľa k celé číslo, a potom skontrolovať, či je to neplatný alebo nie je. Ak je to neplatné, potom budeme opakujte postup s dotazom užívateľa aby nám dal ďalšie číslo, a potom iba v prípade, že číslo je platný, budeme aj naďalej čo nastane neskôr. Teraz si všimnite si, že Vyhlásenie o celé číslo n sa mierne líši od toho, čo sme predtým v predchádzajúcom príklade a to preto, že rozsah. Keby sme vyhlásená Číslo n vnútri z tela do-while slučky, potom by sme neboli schopní získať prístup že hodnota n mimo tých Kučeravým traky uvedením tela slučky. Ale my v skutočnosti chcú prístup k Hodnota n neskôr v našom programe. OK, takže teraz poďme hovoriť o čo táto podmienka mala byť. Chceme reprompt len Užívateľ tak dlho, kým n je neplatný. Takže myslíte, že na seba, čo je neplatný celočíselná hodnota bude vyzerať a potom vytvoriť logickú Výraz, ktorý má vyjadriť, že. Sme takmer na konci s našou Podúlohy podnecovať a overovanie užívateľského vstupu. Takže poďme urobiť to trochu trochu viac užívateľsky prívetivé a dať užívateľovi trochu bit viac informácií z toho, čo sme im výzvy na. Takže poďme vyzve užívateľa, podľa spec, s reťazcom minút. Takže pomocou svojej printf vyhlásenie, aby Uistite sa, že zápas to presne. Dobre. Takže teraz máme platného užívateľa vstup, kladné celé číslo Hodnota za koľko minút strávili v sprche. Takže čo ďalej je vypočítať ekvivalentný počet fliaš. Čo budeme robiť tu mohol bude pre vás úplne zrejmá na prvý pohľad, a to je v poriadku. To, čo chceme urobiť, je, že sme chcú začať cvičiť Myšlienka odhaľovať a rozvíjanie vzorca pre výpočet tohto problému. Takže nám bolo povedané na spec že jedna minúta v sprche zodpovedá približne 12 fliaš s vodou. Tak dve minúty by sa rovná 24, a päť minút by sa rovná 60. Takže teraz, ak si myslíte, máte to a potom Nechal uvidíme, či môžete prísť sa vzorom alebo všeobecného vzorca vyjadriť, či sme povedať, n minút, koľko fľaše s vodou by to byť vyjadrená z hľadiska n? Opäť platí, že aj keď táto môže byť jednoduchý na prvý, neskôr, keď sa dostaneme do zložitejšie problémy budeme chcieť dostať do praxe identifikácia vzory a rozvojových formula vyriešiť tieto veci von. Vc máte prístup k štandardné aritmetické operácie, sčítanie, odčítanie, násobenie a delenie. Takže nechám to na Teraz sa prísť na to, ako vyjadriť prepočítaný počet fliaš že užívateľ spotrebuje počas ich sprchou. Dobre, my sme skoro hotoví. Máme výzva užívateľovi pre ich vstup, máme zabezpečené, že je to platný vstup, a potom sme zistili, ako pre výpočet ekvivalentu počet fliaš, ktoré konzumovali. Takže posledná vec, ktorú musíte urobiť, je výstup ekvivalentný počet získaných fliaš a snáď podnieti aby šetriť vodu. Výstup hodnoty budú byť vyhlásenie printf. Ak by som vám chcel povedať, že som tri zvieratá, napríklad, Mohol by som použiť príkaz printf ktorá vyzerá nejako takto. Mám tri zvieratá, a nová linka pre pekné formátovanie. Teraz nechceme, aby jednoducho pevný kód veci. Povedzme, že počet my domáce zvieratá sa mení v priebehu času. Potom budem využívať zástupné symboly v mojom vyhlásení printf. Tak tu moje číslo je celé číslo. Takže idem robiť zástupný symbol predstavuje celé číslo s použitím% i. Idem písať reťazec, a potom po reťazec Píšem čiarku a potom sa premenná, ktorá Chcem vytlačiť. Takže hodnota bude vytlačený namiesto toho zástupný,% i. Môžete použiť zástupné symboly, as No, plaváky s% F. Môžete mať tiež viacnásobné zástupné symboly v reťazci. Napríklad, keď mám určitý počet psov a mačiek určitý počet, Dal som dva zástupné symboly sem a potom moje dve premenné v danom poradí. Takže teraz, keď vieme, ako vytlačiť hodnoty uložené v premenných, tá posledná vec, urobiť, je zabezpečiť, aby sme vytlačiť hodnotu v presnom formáte je uvedené v špecifikácii. S tým sme prinútili Užívateľ a overený ich vstup. My sme potom vypočíta ekvivalent počet fliaš vody že spotrebujú počas ich sprchovacím kútom, a my sme túto hodnotu na výstupe k nim. A tak sme dokončili vodu. Moje meno je [? Zamil ,?] a to je CS50.