[Jwe mizik] DAVID J Malan: Tout dwa, Byenveni nan CS50. Sa a se kòmanse nan semèn de. Yon ti mo nan youn nan nou an zanmi sou lakou lekòl la - si w enterese, petèt, swa kounye a oswa nan kèk tèm lavni menm, yon fwa pi alèz, ansèyman elèv lekòl mwayen yon ti kras yon bagay sou syans òdinatè, fè tèt ak sa yo ki URL. Yo se nan bezwen patikilye kounye a nan pwofesè yo, sitou si ou gen te gen kèk ekspoze nan syans òdinatè. Se konsa, sonje ki dènye fwa a, nou prezante yon kalite done kèk moun nan C, ak ou ka yo te kòmanse jwenn ou men sal ak sa yo byen lwen konsa nan pwoblèm mete yon sèl. Men, nou te gen yon Char. Se konsa, an tèm yon ti jan teknik, sa ki se yon Char kòm ou konnen li jodi a? Se konsa, li yon karaktè, men nan kite gen plis egzak kounye a. Ki sa nou vle di pa karaktè oswa yon moun Char? Yon karaktè ki pa nimerik - Se konsa, pa nesesèman. Li sanble ke nimewo menm, menm ponktiyasyon ak lèt ​​yo reprezante ak done sa yo tape li te ye kòm yon Char. Se konsa, li pa nesesèman alfabetik. Yeah? Se konsa, li nan yon karaktè ASCII. Se konsa, si ou panse tounen nan semèn zewo, lè nou te gen multiple nou an volontè vini ak swa kenbe men yo moute oswa se pa tout, yo reprezante miyèt moso. Men, kolektivman kòm yon gwoup ki gen uit, yo reprezante yon multiple. Epi nou prezante nosyon de ASCII lè sa konferans, ki tou senpleman se yon gewografik ant nimewo ak lèt ​​yo. Epi sèvi ak ASCII, tankou moun yo moun enplisit, Bits uit ki reprezante yon karaktè. Se konsa, kòmsadwa, si uit Bits kapab chak pran sou youn nan de valè - zewo oswa yon sèl - sa vle di te gen de posiblite pou moun sa a - zewo oswa yon sèl - de pou moun sa a, de pou sa a moun, de pou yon sèl sa a. Se konsa, yon total de de fwa de fwa de fwa de fwa de - Se konsa de wityèm lan nan total. Se konsa, gen nan yon kantite total manm nan karaktè 256 posib ke ou kapab reprezante ak wit miyèt moso. Koulye a, moun nan nou ki pale Azyatik lang ta ka konnen ke gen an plis karaktè nan mond lan pase jis A ak B ak C. ak DS. Ak tout bon, ASCII pa sifi pou yon anpil nan lang nan mond lan. Men, plis sou tan sa a yon lòt. Pou kounye a, konnen ke nan C si ou vle ki reprezante yon lèt, yon moso nan tankou, ponktiyasyon, oswa jis karaktè yon bagay nan lanati, nou itilize yon Char. Lè li nan yon sèl multiple oswa uit miyèt moso. Kouman sou yon Int? Oke, yon Int se yon nonb antye. Konbyen Bits, si ou sonje, te yon nonb antye ki pè tipikman? Sonje Nenpòt moun? Se konsa, li tipikman 32. Li aktyèlman depann sou òdinatè a ke w ap lè l sèvi avèk. Men, nan aparèy la, ak nan yon anpil nan òdinatè, li nan 32 Bits oswa kat bytes - uit fwa kat. Lè antye yo se jis itilize pou estoke nimewo, swa negatif, pozitif, oswa zewo. Men, si ou te gen 32 Bits, epi ou sèlman swen sou chif pozitif, kapab ballpark nenpòt moun ki jan anpil posib nonm antye yon òdinatè ka reprezante soti nan zewo sou fè a? Se konsa, li ta dwe de a 32 an, ki se apeprè kat milya dola. Se konsa, sa yo pouvwa nan de yo ale nan dwe tèm renouvlab nan syans òdinatè. Kòm nou pral wè, yo ap byen pratik yo travay avèk menm si li pa byen fasil fè matematik la nan tèt yon moun. Se konsa, nou pral di apeprè kat milya dola. Koulye a, yon long lontan - ou kapab kalite devine. Li nan pi long pase yon Int. Konbyen Bits? Se konsa, 64 Bits oswa uit bytes. Sa a jis vle di ou ka reprezante menm pi gwo nimewo, pi gwo pozitif oswa pi gwo nimewo negatif. Ak ki jan sou flote? Sa a yon pwen k ap flote valè de 32 miyèt moso. Sa a se jis yon nimewo reyèl, yon bagay ak yon pwen desimal. Men, si ou olye pou bezwen plis kote apre pwen desimal la oswa ou vle reprezante yon kantite pi gwo ak kèk fraksyon apre li fin, ou ka itilize yon doub, ki se 64 miyèt moso. Men, gen nan yon enteresan Takeaway isit la. Se konsa, si antye yo limite pa 32 Bits ak menm voudre tan yo limite pa 64 Bits, ki sòt de amèn kesyon an, sa ki si ou aktyèlman vle konte pi wo pase 4 milya de dola pou yon Int? Oke, ou jis sèvi ak yon tan long. Men, sa ki si ou vle konte pi wo pase de a 64th an, bay oswa pran? Koulye a, sa a, se yon nimewo gwo. Men, evantyèlman, ou ta ka aktyèlman pran swen sou sa yo kalite valè yo, espesyalman si w ap itilize yon baz done ak kòmanse kolekte anpil ak anpil ak anpil done ak plase inik nimewo nan chak moso nan ki done. Se konsa, nou kalite gen yon pwoblèm. Lè Menm jan an tou, ak k ap flote pwen valè - flote oswa double - si ou te sèlman te gen yon kantite limite nan Bits, konbyen nimewo total Èske ou ta kapab petèt reprezante? Oke, li nan mwens klè lè ou enplike yon pwen desimal. Men, li la siman fini. Si ou gen yon nimewo fini nan Bits, yon kantite limite nan moun, yon fini kantite anpoul limyè, siman ou kapab sèlman reprezante yon kantite limite nan k ap flote valè pwen. Men, ki jan anpil nonm reyèl yo se yo nan mond lan? Genyen yon enfini. Se konsa, ki nan kalite yon pwoblèm paske nou pa gen yon kantite lajan enfini nan memwa oswa RAM andedan nan òdinatè nou yo. Se konsa, kèk bagay ki difisil ka rive. Se konsa, kite a ale pi devan epi eseye eksprime sa yo panse sa a isit la. Kite m 'ale pi devan epi louvri moute jdi. Mwen pral ale pi devan epi sove yon dosye yo rele "floats0.c" jis yo dwe ki konsistan avèk yon egzanp se sa ki disponib sou entènèt, si ou ta renmen. Men, mwen pral ale pi devan epi defini li jan sa a - Mwen pral ale pi devan epi di, Int prensipal anile, jan nou souvan fè. Lè sa a, nan pwogram sa a, mwen pral deklare tèt mwen yon flote, se konsa yon 32-ti jan varyab yo rele f, abitrèman. Lè sa a, mwen pral nan magazen an li Mwen pa konnen, yon dizyèm, se konsa 0.1. Se konsa, mwen pral eksprime sa yo panse ke kòm yon sèl divize pa 10, ki se parfe lejitim nan C. Lè sa a, sou liy, dezyèm lan, Mwen tou senpleman vle enprime soti ke valè. Se konsa, sonje ke nou kapab itilize abitye a printf. Nou pa vle sèvi ak% mwen pou yon Int. Nou vle sèvi ak f% pou yon flote. Lè sa a, mwen pral fè antislach n, fèmen quote, vigil, f, virgules. Se konsa, isit la nan pwogram m 'yo. Genyen deja yon sèl ensèk. Èske yon moun, sa a klike deja vle montre omwen yon sèl ensèk, mwen te fè? Yeah? Yeah. Mwen bliye "# enkli" nan a tèt yo, yo sentòm nan ki si mwen eseye konpile sa a se pral fè ki la du ki pral rele nan m ', li di endefini senbòl oswa yon bagay sou sa. Li pa konprann yon bagay renmen printf. Se konsa, mwen pral fè "# enkli ", Tanpri, delivre dosye a. Epi, koulye a li la nan pi bon fòm. Men, mwen tou ale nan pwen soti yon nouvo detay jodi a. Anplis de sa nan ki espesifye kote moun ki gen tankou% f% s% mwen, ou kapab pafwa yo enfliyanse konpòtman nan ki kontneur. Pou egzanp, nan ka a nan yon k ap flote valè pwen, si mwen sèlman vle montre yon desimal fèt apre a peryòd, mwen ka aktyèlman fè 0.1f. Se konsa, nan lòt mo, mwen separe f la ak pousan siy an ak 0.1, jis di printf, ou ka gen yon antye pakèt moun sou nimewo apre desimal la pwen pou mwen. Men, mwen sèlman vle wè youn nan yo. Se konsa, mwen pral ale pi devan koulye a, epi sove pwogram sa a, ale nan tèminal mwen fenèt, ak mwen pral ale pi devan ak kalite fè 0 flote, antre. Mwen wè ke liy yon ti jan skre ki a pral kòmanse bay fè plis sans jan nou toumante li apa semèn sa a ak pwochen. Koulye a, mwen pral ale pi devan epi kouri zewo flote. Epi, modi. Se konsa, gen nan yon lòt ensèk isit la pou kèk rezon. Mwen se trè asire w ke yon dizyèm, oswa yon sèl divize pa 10, se pa 0.0. Petèt mwen jis pa kap nan chif ase. Se konsa, poukisa pa m 'di de .2 wè de kote desimal olye pou yo jis yon sèl. Kite m 'ale tounen nan fenèt tèminal mwen isit la ak frape moute yon koup de fwa wè istwa mwen. fè flote zewo ankò, ak Lè sa a kanpe ankò. Epi, koulye a antre. Epi, koulye a mwen se trè asire w sa a se sa ki mal. Apre sa, mwen ta ka fè twa ak kat, ak mwen se pwobableman ale nan kenbe wè zewo. Se konsa, kote se pinèz la? Yon divize pa 10 yo ta dwe 0.1. Yon moun ki vle pran yon koud nan sa ki pwoblèm nan fondamantal se? Yeah? Yo ap tou de nonm antye. Se konsa, sa? Se konsa, ak yon sèl divize pa 10, sa a, se sa m 'fè nan aritmetik. Apre sa, mwen jwenn 0.1. Yeah. Se konsa, li se vre ke pwoblèm. Lè ou pran yon nonm antye nan yon òdinatè epi ou divize li pa yon lòt nonb antye ki pè, òdinatè a pa default ki pral asime ke ou vle yon nonb antye relatif. Pwoblèm nan menm si, nan kou, se ki 0.1 pa yon nonb antye. Li se yon nimewo reyèl. Se konsa, sa ki òdinatè a fè pa default se li jis lanse lwen tout bagay apre pwen desimal la. Li pa wonn desann oswa moute se pou chak. Li jis lanse lwen tout bagay apre pwen desimal la. Epi, koulye a ki fè sans. Paske kounye a nou ap byen klè kite avèk zewo. Men, tann yon minit. Mwen pa wè yon zewo Int. Mwen aktyèlman wè 0.00. Se konsa, kouman mwen rekonsilye sa a kounye a? Si youn divize pa 10 se zewo, men mwen se wè 0.00, ki kote li ap resevwa konvèti tounen nan yon kantite reyèl? Yeah. Egzakteman. Se konsa, moute isit la nan, senk liy lè mwen aktyèlman magazen ki 0.1, ki se Lè sa a, twonke a zewo, andedan nan yon flote, sa a, se efektivman ekivalan a estoke li pa kòm yon Int men, tout bon, kòm yon flote. Anplis, mwen Lè sa a, lè l sèvi avèk printf klèman enprime ladan nimewo de kote desimal menm si gen pa ta ka aktyèlman gen nenpòt ki. Se konsa, sa a kalite suk, dwa? Aparamman ou pa ka fè matematik, omwen nan nivo sa a nan presizyon, nan yon òdinatè. Men, siman gen nan yon solisyon. Ki sa ki nan ranje a ki pi senp nou te kapab petèt fè sa, menm jis entwitif isit la yo rezoud sa a? Yeah? Vire nonm antye yo nan - wi. Menm si mwen se pa byen asire ki sa ki la reyèlman ale sou isit la, si li fondamantalman te fè ak sa yo tou de yo te antye, byen, poukisa pa fè sa mwen fè ke 10.0 yo, ki fè sa a 1.0, resave dosye a. Kite m 'ale tounen desann nan la anba ak compile. Kite m 'relance. Lè sa a - kounye a, mwen te gen yon sèl dizyèm mwen reprezante kòm 0.10. Tout dwa. Se konsa, sa a, se pa move. Men, kite m 'pwen soti yon lòt fason nou te ka genyen rezoud sa a. Kite m 'aktyèlman woule tounen nan tan lè nou te gen sa a kòm youn dizyèm yon ti moman de sa. Men, kite m 'ale pi devan epi resave sa a ranpli kòm yon File name diferan, jis gen yon pòs ti kras. Se konsa, sa ki te vèsyon yon sèl. Epi, koulye a kite m 'ale pi devan epi fè yon sèl plis vèsyon. Nou pral rele vèsyon sa-a de zewo Catalogue. Men, mwen pral olye fè sa a - ou konnen ki sa? Ajoute dot zewo ap travay nan ka sa a. Men, si yon sèl te yon varyab. Sipoze 10 te yon varyab. Nan lòt mo, ann sipoze ke mwen pa t 'kapab jis difisil-Kòd .0 nan fen sa a ekspresyon aritmetik. Bon, mwen ka aktyèlman fè yon bagay nan parantèz yo rele depoze. Mwen ka jete ke nonb antye ki pè 10 nan yon flote, e mwen ka jete ke yon nonb antye ki pè nan yon flote, menm jan tou. Lè sa a, matematik la ki k ap pase yo dwe fè se efektivman 1.0 divize pa 10.0, rezilta a nan ki ale nan f tankou anvan. Se konsa, si mwen compile sa a kòm fè flote 2, e kounye a, flote 2, mwen jwenn menm bagay la tou reponn, menm jan tou. Se konsa, sa a se yon egzanp san patipri parvenus, rezoud pwoblèm sa a pa entwodwi Distribisyon. Men, an jeneral, Distribisyon k ap pase yo dwe yon bagay pwisan, sitou pou pwoblèm mete de nan tan yon semèn la, lè ou vle konvèti yon sèl done di ki kalite yon lòt ke nan fen jounen an yo reprezante nan menm fason an. Nan fen jounen an, chak yon sèl bagay nou te pale osijè de konsa byen lwen se jis antye anba kapo a. Oswa si sa a, se twò ba-nivo pou nou la a, yo ap jis nimewo anba kapo a. Menm karaktè, ankò, sonje soti nan zewo semèn, yo se chif anba kapo a. Ki vle di, nou ka konvèti ant diferan kalite nimewo si yo ap jis miyèt moso. Nou ka konvèti ant nimewo ak lèt ​​si yo ap jis Bits, ak vis vèrsa. Men, depoze nan fason sa a yon mekanis nan pwogram ki pèmèt ou lafòs chanje yon sèl done di ki kalite nan yon lòt. Malerezman, sa a se pa kòm dwat jan mwen ka gen te renmen. Mwen pral tounen nan flote 1, sa ki te pi senp, plis la dwat yonn ak .0 Te ajoute sou nan chak. Ak jis kòm yon resiklaj rapid, kite m 'ale pi devan epi compile sa a, fè flote 2 - regrèt, sa a se fè flote 1. Epi, koulye a kite a kouri cha 1. Ak nan pati anba a, remake ki Mwen menm, mwen jwenn 0.1. Se konsa, pwoblèm rezoud. Men, pa ankò. Mwen kounye a pral jwenn yon ti kras kirye, ak mwen pral tounen nan mwen printf deklarasyon ak di, ou konnen ki sa? Mwen ta renmen konfime ke sa a se reyèlman yon dizyèm. Men, mwen pral vle wè sa a a, di, senk kote desimal. Li pa yon pwoblèm. Mwen chanje de la nan yon senk, Mwen compile ak fè. Mwen relance li kòm flote 1. Looking trè bon. Chèk saniti mwen ta ka fini la, men Mwen ap resevwa yon ti kras plis avantur. Mwen pral chanje 0.5 a 0.10. Mwen vle wè 10 chif apre plas la desimal. Men, mwen pral ale pi devan epi compile sa a ak relance flote 1. Li te gen mwen kalite regrèt teste sa a plis paske matematik mwen an se pa konsa pou sa korije ankò, li sanble. Men, tann yon minit, petèt sa a, se jis yon trematòd. Petèt òdinatè a ap aji yon ti jan etranj. Kite m 'ale pi devan epi fè 20 pwen desimal ak rasire tèt mwen ke mwen konnen ki jan fè matematik. Mwen konnen ki jan yo pwogram nan. Fè flote 1, compile, ak modi li. Sa se reyèlman, reyèlman ap resevwa byen lwen soti nan make la. Se konsa, sa k ap pase sou isit la? Entwitif, ki baze sou sipozisyon nou an pi bonè sou gwosè a nan kalite done, sa yo dwe pase isit la anba kapo a? Yeah? Egzakteman. Si ou vle sa a presizyon anpil, ak sa a, se yon èk nan yon anpil nan presizyon - 20 nimewo apre pwen desimal la. Ou pa ka pètèt reprezante yon abitrè nimewo sof si ou gen yon abitrè kantite miyèt moso. Men, nou pa fè sa. Pou yon flote, nou sèlman gen 32 miyèt moso. Se konsa, si 32 Bits kapab fèt sèlman permuted nan yon fason - jis tankou moun nou yo sou li a, etap men monte oswa desann - nan yon kantite limite nan fason, gen nan sèlman yon kantite limite nonm reyèl ou ka reprezante ak sa yo miyèt moso. Se konsa, òdinatè a evantyèlman ki pral gen kòmanse koupe kwen. Òdinatè a kapab kache sa yo detay nan men nou pou yon ti kras nan tan. Men, si nou kòmanse poking nan nimewo telefòn ak kap pi lwen ak pi lwen nan la fin nimewo nan kantite a tout antye, Lè sa a, nou kòmanse wè ke li nan aktyèlman apwoksimativman la lide nan yon dizyèm. Se konsa, li vire soti, trajik, gen nan yon nonb infini nan nimewo nou pa ka reprezante jisteman nan yon òdinatè, omwen ak yon fini kantite Bits, yon fini kantite lajan pou RAM. Koulye a, malerezman, sa a pafwa gen gwo konsekans reyèl. Si moun yo pa byen apresye sa a oswa sòt de pran pou yo akòde lefèt ki òdinatè yo pral jis fè sa yo di li fè ak pa fè sa konprann sa yo kache reprezantasyon detay - ki, franchman, nan kèk lang yo kache pou itilizatè a, kontrèman ak nan C - kèk move bagay ka rive. Ak sa ki mwen te panse nou ta fè se pran yon etap tounen. Lè sa a se sou yon uit-minit videyo. Li devwale kèk ane de sa, epi li bay Sur nan aktyèlman sa ki ka ale mal lè ou anba-apresye sa yo kalite an detay nan anpil nan tout-twò reyèl nan lemonn. Si nou te ka bese limyè yo pou yon kèk minit. Oratè 1: Nou kounye a retounen nan jeni dezas sou mèvèy modèn. Odinatè - nou te tout vini nan aksepte a souvan fwistre pwoblèm ki ale avèk yo. Pinèz, viris ak pepen lojisyèl se pri ti pou peye pou la konvenyans. Men, nan wo teknoloji-yo ak segondè-vitès militè yo ak pwogram espas aplikasyon pou, pwoblèm nan pi piti ka gen gwo pouvwa nan dezas. Sou, 4 jen 1996, syantis yo prepare yo lanse yon sans aryan 5 fize. Li te pote satelit syantifik ki fèt yo etabli jisteman ki jan jaden mayetik Latè a reyaji ak van solè. Te fize a bati pou Ewopeyen an Ajans Espas ak leve koupe soti nan li yo etablisman sou kòt la nan franse gwiyane. JACK GANSSLE: Nan apeprè 37 segonn nan vòl la, yo te premye remake yon bagay te ale mal. Ajutaj yo te tournan nan yon fason yo te reyèlman pa ta dwe. Anviwon 40 segonn nan vòl la, byen klè veyikil la te nan tray la. Epi sa a, lè yo te fè yon desizyon detwi l '. Ofisye nan sekirite ranje, ak kouraz fòmidab, bourade bouton an, kònen moute fize a anvan li te kapab vin yon danje nan sekirite piblik la. Oratè 1: Sa a te vwayaj la jenn fi nan, 5 aryan an ak destriksyon li yo te pran plas paske yo te yon defo entegre nan lojisyèl fize la. JACK GANSSLE: Pwoblèm nan sou aryan la te ke te gen yon nimewo ki te mande pou 64 Bits eksprime sa yo panse. Apre sa, yo te vle konvèti nan yon kantite 16-bit. Yo sipoze ke nimewo a pa te janm pral gen anpil gwo, ki pi fò nan sa yo chif nan 64 ti jan an- nimewo te zewo. Yo te sa ki mal. Oratè 1: enkapasite a nan yon sèl lojisyèl pwogram yo aksepte ki kalite nimewo ki te pwodwi pa yon lòt te nan rasin lan nan echèk la. Te devlopman lojisyèl vin yon trè ki koute chè pati nan nouvo teknoloji. Te aryan 4 fize a te trè siksè, anpil nan lojisyèl an te kreye pou li te tou yo itilize nan aryan a 5. PHILIP COYLE: Pwoblèm nan debaz te ki aryan a 5 te pi vit, akselere pi vit. Men, lojisyèl an pa t 'gen matirite pou sa. Oratè 1: destriksyon nan fize a se te yon gwo dezas finansye, tout akòz yon erè lojisyèl minit. Men, sa a pa t 'done yo pou premye fwa pwoblèm konvèsyon te gwo malè tonbe sou modèn fize teknoloji. JACK GANSSLE: Nan lane 1991, ak kòmansman an nan premye Lagè Gòlf, Patriot la misil ki gen eksperyans yon kalite ki sanble nan yon pwoblèm konvèsyon nimewo. Kòm yon rezilta, 28 sòlda ameriken yo te mouri ak sou 100 lòt moun blese lè Patriot la, ki te sipoze pwoteje kont Scuds fèk ap rantre, echwe nan dife yon misil. Oratè 1: Lè Irak anvayi Kowet ak Amerik te lanse Tanpèt Dezè nan 1991 byen bonè, pil misil Patriot yo te deplwaye nan pwoteje Saudi Arabia ak pèp Izrayèl la soti nan Irak Scud misil atak. Patriot la se yon US medyòm-ranje sifas-a-lè sistèm manifaktire pa Raytheon konpayi an. THEODORE POSTOL: Gwosè a nan Patriot la entèrsèpsyon tèt li se apeprè 20-pye nan longè. Men, li peze sou 2000 liv. Epi li pote yon tèt degè nan sou - Mwen panse ke li nan apeprè 150 liv. Men, tèt degè a li menm se yon segondè eksplozif ki te gen fragman fè wonn li. Se bwat la nan tèt degè a fèt yo aji tankou plon. Oratè 1: misil yo yo te pote kat pou chak veso, epi yo transpòte pa yon trelè semi. PHILIP COYLE: Patriot la anti-misil sistèm ale tounen nan omwen 20 ane kounye a. Li te orijinèlman fèt kòm yon misil defans lè yo tire desann avyon lènmi. Nan premye Lagè Gòlf la, lè lagè sa a te vini ansanm, Lame an te vle sèvi ak li tire desann Scuds, pa avyon. Fòs nan lè irakyen pa t ' anpil nan yon pwoblèm. Men, te Lame enkyete w sou Scuds. Se konsa, yo te eseye mete yo ajou Patriot la. Oratè 1: entèrsèptan yon misil lènmi vwayaje a mach senk te yo pral difisil ase. Men, lè yo te Patriot la kouri antre nan sèvis, Lame a pa t 'okouran de yon Irak modifikasyon ki te fè yo Scuds prèske enposib frape. THEODORE POSTOL: Kisa ki te pase se Scuds ki te vini nan te enstab. Yo te tranble. Rezon ki fè la pou sa a te Irakyen yo yo, nan lòd jwenn 600 kilomèt soti nan yon 300-kilomèt-ranje misil, te pran pwa soti nan tèt degè devan an. Yo te fè tèt degè a pi lejè. Se konsa, koulye Patriot la ap eseye vini nan Scud la. Ak pi fò nan tan an, akablan nan majorite nan moman an, li ta jis vole pa Scud la. Oratè 1: Yon fwa Patriot sistèm nan operatè yo reyalize Patriot la rate sib li yo, yo detounen Patriyòt yo tèt degè pou fè pou evite posib viktim si li te pèmèt tonbe atè a. THEODORE POSTOL: Sa ki te sa ki pi moun te wè kòm fireballs gwo nan syèl la ak konpwann kòm segman aks dèz nan Scud tèt de gè. Oratè 1: Malgre ke nan syèl la lannwit Patriyòt yo parèt devan yo dwe avèk siksè detwi Scuds, nan Dhahran gen ta ka pa gen okenn erè sou li yo pèfòmans. Gen, sistèm rada Patriot la pèdi swiv nan yon fèk ap rantre Scud epi pa janm te lanse akòz yon defo lojisyèl. Li te Izrayelyen yo ki moun ki premye dekouvri ki pi long la sistèm nan te sou, pi gwo a erè nan tan te vin akòz yon revèy entegre nan òdinatè sistèm nan. JACK GANSSLE: Enfòmasyon sou de semèn anvan an trajedi nan Dhahran, Izrayelyen yo rapòte bay Depatman Defans la ke sistèm lan te pèdi tan. Apre apeprè uit èdtan nan kouri, yo remake ke sistèm nan se vin notables mwens egzat. Depatman defans reponn pa di tout pil yo Patriyòt pa kite sistèm yo sou pou yon tan long. Yo pa janm di sa ki yon bon bout tan te ye a. Uit èdtan? 10 èdtan? 1,000 èdtan? Okenn moun pa te konnen. Oratè 1: batri a Patriyòt estasyone nan kazèn lan nan Dhahran epi ki te defekte li yo entèn revèy te sou plis pase 100 èdtan sou nwit la la nan 25 fevriye a. JACK GANSSLE: Li Suivi tan nan yon presizyon nan sou yon dizyèm nan yon dezyèm fwa. Koulye a, yon dizyèm nan yon dezyèm se yon enteresan nimewo paske li pa kapab ki eksprime nan binè egzakteman, ki vle di li pa ka eksprime egzakteman nan nenpòt ki modèn òdinatè dijital. Li difisil yo kwè, men sèvi ak sa a kòm yon egzanp. Ann pran nimewo nan yon sèl twazyèm. Yon tyè pa kapab eksprime nan desimal egzakteman. Yon tyè se 0,333 pral sou pou Infinity. Gen nan pa gen fason yo fè sa ak absoli presizyon nan desimal. Se egzakteman kalite la menm nan pwoblèm ki te rive nan Patriot la. Pi long la sistèm nan kouri, la pi move erè a tan te vin. Oratè 1: Apre 100 èdtan nan operasyon an, erè a nan tan te sèlman sou yon tyè nan yon dezyèm fwa. Men, an tèm de vize yon misil vwayaje a mach senk, li te lakòz yon erè swiv nan 600 sou mèt. Li ta yon erè fatal pou sòlda yo nan Dhahran. THEODORE POSTOL: Kisa ki te pase se yon Scud lansman te detekte pa byen bonè avètisman satelit. Apre sa, yo te konnen ke Scud a te vini an jeneral direksyon yo. Yo pa t 'konnen kote li te ap vini an. Oratè 1: Li te kounye a jiska rada a eleman nan sistèm nan Patriot defann Dhahran jwenn epi kenbe tras de misil la lènmi tap rantre. JACK GANSSLE: rada a te trè entelijan. Li ta aktyèlman swiv pozisyon nan Scud a ak Lè sa a, predi ki kote li pwobableman ta dwe tan kap vini an rada a voye yon batman kè deyò. Sa te rele bò pòtay lavil la pòte. THEODORE POSTOL: Lè sa a, yon fwa Patriot la deside gen ase tan pase yo ale tounen epi tcheke kote nan pwochen pou sa a objè detekte yo, li ale tounen. Se konsa, lè li tounen al jwenn sa ki mal la kote, li Lè sa a, wè pa gen okenn objè. Epi li deside ke pa te gen okenn objè, li te yon deteksyon fo, ak gout tras la. Oratè 1: Scud a fèk ap rantre disparèt soti nan ekran an rada, ak segonn pita li te kriye byen fò nan kazèn lan. Scud a touye 28 ak se te youn ki sot pase a yo te tire pandan Lagè nan premye Gòlf la. Trajik, lojisyèl an mete ajou te rive nan Dhahran jou sa a. Te defo nan lojisyèl te fiks, fèmen yon sèl chapit nan boulvèse a istwa nan misil a Patriyòt. Patriyòt se aktyèlman yon akwonim pou pwogresivman swiv Array Entèsepsyon sib. DAVID J Malan: Tout dwa, se konsa yon pridans egzanp, yo dwe asire. Men, erezman, sa yo pi ba nivo pinèz yo pa yon bagay ki nou pral Anjeneral, gen apresye, sètènman pa yo avèk kèk nan nou an pi bonè nan pwogram yo. Olye de sa, pi fò nan pinèz yo ou pral rankontre yo pral lojik nan lanati, Massachusetts Institute of Technology nan lanati kijan la Kòd jis pa travay dwat. E ou konnen li trè vit. Men, patikilyèman lè nou jwenn yo a nan fen semès la, li ale nan vin pi plis ak plis nan yon posibilite yo vrèman panse di sou konsepsyon an nan pwogram ou ak kache nan reprezantasyon gen, tou, nan done yo. Pou egzanp, nou pral prezante miskl, ki se yon motè baz done popilè ke ou ka itilize ak sou sit entènèt nan magazen done sou fen a tounen. Men, ou pral gen kòmanse deside nan fen semès la pa sèlman sa ki kalite done ansanm liy sa yo yo sèvi ak men egzakteman konbyen Bits yo sèvi ak, si ou pa ou vle nan magazen dat kòm dat ak lè kòm fwa, epi tou li bagay sa yo tankou ki jan gwo ou vle a idantite ki inik yo dwe pou, di, itilizatè yo nan baz done ou. An reyalite, si kèk nan ou gen te gen Facebook kont pou kèk tan, epi ou konnen ki jan yo jwenn aksè User ID ou - ki pafwa montre moute nan ou URL pwofil la sof si ou te chwazi yon tinon pou URL la, oswa si ou te abituèl Facebook a pou graf API la, piblikman disponib API pa kote ou ka mande Facebook pou done anvan tout koreksyon - ou ka wè sa ki ID nimerik ou a. Se konsa, kèk ane de sa, Facebook esansyèlman te chanje soti nan lè l sèvi avèk ekivalan a nan antye lè l sèvi avèk long lontan paske sou tan kòm itilizatè yo vin epi ale ak kreye anpil nan kont ak kont fo, yo menm trè fasil yo te kapab itilize yon bagay tankou yon 4 milya dola posib valè tankou yon Int. Se konsa, plis sou sa yo kalite pwoblèm desann wout la, menm jan tou. Tout dwa, se konsa ke yo te depoze. Sa ki te enpresizyon. Yon koup la anons rapid. Se konsa, seksyon fòmèlman kòmanse sa a ap vini Dimanch, Lendi, Madi. Ou pral tande via imel pita semèn sa a kòm plasman seksyon ou. Epi ou pral yo isit la tou nan ki pwen ki jan chanje seksyon ou a si ou orè gen kounye a chanje oswa ou te nivo konfò kounye a chanje. Pandan se tan P-seri yon sèl ak HACKER yon sèl yo akòz sa a Jedi ak opsyon a pwolonje dat limit la pou chak nan espesifikasyon a Vandredi nan yon fason nòmal pou li. Reyalize ki enkli ak pwoblèm nan espesifikasyon seri yo enstriksyon sou kouman yo sèvi ak aparèy la CS50, fè, kòm byen ke kèk CS50 zouti espesifik tankou, 50 style ki kapab ba ou ak tout fidbak dynamique sou la bon jan kalite nan style Kòd ou epi tou li tcheke 50, sa ki ka ofri ou ak dinamik fidbak kòm ou Correct Kòd la. Padonnen ke nou ap toujou planch soti yon kinks kèk avèk chèk 50. Yon kèk nan kamarad klas ou yo ki t 'kòmanse alantou kat AM Vandredi swa lè espèk la, moute remake gen depi lè sa a yon pinèz kèk ki nou yo ap travay nan, ak ekskiz pou nenpòt moun ki te eksperyans fristrasyon soufwans. Fòt la se pou mwen. Men, nou pral swiv moute sou CS50 nan diskite sou lè ki rezoud. Se konsa, yon mo sou nòt tèt yo. Se konsa, li pral yon oubyen de semèn anvan ou kòmanse jwenn fidbak sou kouche pwoblèm paske ou poko gen yon parèy nan ansèyman an. Men, menm lè sa a, n ap kòmanse evalye pwoblèm nan C kouche anvan nou tounen ladan l epi evalye grate se konsa ke ou jwenn plis enpòtan fidbak pi vit. Men, an jeneral pou chak progranm a, CS50 ansanm pwoblèm yo evalye ansanm nan swiv kat aks - sijè ki abòde, Correct, konsepsyon, ak style. Dimansyon ki pral gen yon nimewo tipikman ant zewo ak senk ki kaptire ki jan anpil nan la moso ke ou mòde an. Tipikman, ou vle sa a yo dwe senk. Ou omwen yo te eseye tout bagay. Ak Avi li nan yon faktè miltiplikasyon se konsa ke fè sèlman yon pati nan la seri pwoblèm se pa estrateji a pi byen. Pandan se tan, plis evidan se nan enpòtans nan Correct - jis se pwogram ou an kòrèk ak respekte spesifikasyon la? Sa a se filaplon fè espre plis lou pase de aks yo lòt pa yon faktè nan twa paske nou rekonèt ki tipikman w ap ale nan depanse yon anpil plis tan kouri dèyè desann kèk pinèz, ap resevwa Kòd ou nan travay, lè sa a ou yo indenting li epi li chwazi apwopriye non yo varyab ak renmen, ki se sou fen nan lòt nan spectre an nan style. Sa a pa vle di style se pa ki enpòtan yo, epi nou pral anonse li sou tan tou de nan konferans ak nan seksyon. Style refere a estetik yo nan kòd ou a. Eske ou te chwazi ki byen yo te rele varyab ki kout men yon ti jan deskriptif? Se kòd ou dantle jan ou te wè nan konferans ak nan yon fason ki konsistan ak style 50? Anfen se konsepsyon dwa gen nan mitan yo. Design se youn nan pi rèd mete yon dwèt sou paske li nan pi plis subjectif. Men, li la petèt ki pi enpòtan an nan aks yo twa an tèm de pedagojik valè sou tan e ke sa a pral opòtinite parèy nan ansèyman nan ofri ou ak fidbak kalitatif. Vreman vre, nan CS50 menm si nou fè gen sa yo fòmil ak nòt, nan fen nan jounen an sa yo, se trè fè espre anpil ti bokit - valè pwen ant zewo ak twa ak zewo ak senk. Nou pa eseye trase liy trè koryas ant kouche pwoblèm oswa ant elèv yo men pito konsantre kòm anpil jan nou kapab sou kalitatif, lonnd fidbak, swa tape oswa vèbal ki soti nan patikilye parèy ansèyman ou, ou pral jwenn yo konnen trè byen. Men, an jeneral, sa yo se pwa yo ki aks yo divès kalite yo ap gen. Pandan se tan, tou, li la vo kenbe nan tèt ou ke ou pa ta dwe asime ke yon twa nan senk a se yon% 60 ak Se poutèt sa, apeprè li pap resevwa. Twa se fè espre vle di yo dwe sòt de mitan wout la bon. Si w ap vin threes nan la kòmansman semès la, ki nan tout bon vle di ke yo gen yon bon mete yo kòmanse. Si w ap vin Twos, fwa, gen nan definitivman kèk travay yo peye yon ti kras plis atansyon, pran avantaj nan seksyon ak lè biwo yo. Si w ap vin four ak Fives, gwo. Men, reyèlman, nou espere wè parcourt nan mitan elèv yo - trè endividyalize pou chak elèv, men kòmanse semès la isit la nan sòt de de nan seri a twa men ki fini Moute bò isit nan seri a kat a senk. Sa a ki sa nou ap reyèlman chèche. Epi nou kenbe nan tèt ou delta a ki ou montre ant zewo semèn ak semèn 12 lè m ap fè klas. Li pa enpòtan yo ban nou absoliman ki jan ou jis nan kòmansman an si ou trajectoire se vre anwo nan syèl epi fò. Akademik onètete - Se konsa, kite m 'mete yo sou mwen ki pi grav vwa sèlman pou moman yon. Se konsa, kou sa a gen distenksyon an pou voye plis elèv pase nenpòt ki lòt nan istwa sou tablo a anons, mwen kwè. Nou gen sòt de pèdi konte sa a nan pwen nan konbyen fwa sa rive. Epi sa a, se pa paske elèv ki nan 50 yo nenpòt ki plis malonèt pase yo kamarad klas yon lòt kote. Men, reyalize, tou, ke nou se trè bon nan detekte sa a sòt de bagay. Apre sa se avantaj nan ke yon òdinatè klas syans gen nan ke nou yo kapab e yo nou konpare tout elèv pwoblèm kouche pè-ki gen bon konprann kont chak lòt, se pa sèlman ane sa a men tout ane anvan. Nou gen kapasite a, tankou elèv ki nan klas la, nan Google ak jwenn Kòd sou sit tankou github ak diskisyon fowòm. Gen yo se absoliman yon solisyon ak nan CS50 p-kouche waf alantou la. Men, si ou ka jwenn yo, nou ka jwenn yo. Men, tout bagay sa yo se anpil otomatik ki fonksyone ak fasil ak tris pou nou jwenn. Men, mwen vle mete aksan sou, tou, ke a politik akademik kou a onètete se anpil vle di yo dwe anpil opoze a ou gen lespri. Vreman vre, ane sa a nou te rephrased bagay sa yo nan progranm la yo dwe sa a, dot dot dot, ak plis detay nan progranm la. Men, tèm nan toupatou nan kou a vrèman se yo dwe rezonab. Nou rekonèt ke gen yon siyifikatif kantite lajan pou pedagojik valè nan Kolabore, nan yon sèten mezi, ak elèv nan klas la, kote ou de oswa ou twa oswa ou ap gen plis kanpe nan yon tablo blan whiteboarding, se konsa yo pale, ide w yo - ekri soti pseudocode nan foto, diagramming sa ki ta dwe Mario dwe si ou te ekri li premye nan pseudocode. Ki sa ki ta dwe algorithm nan visye - ki jan yo ta dwe li konpòte yo pou chak pwoblèm kouche youn? Se konsa, reyalize ke konpòtman ki nou ankouraje se yon bagay ki anpil ansanm liy sa yo. Ak nan progranm a, ou ap wè yon tout pakèt moun sou bal anba yon rezonab kategori ak yon pa rezonab kategori ki ede nou ede ou vlope tèt ou otou kote nou trase ke liy. Men, an jeneral, yon règ nan gwo pous desan se ke si ou yo ap konbat yo rezoud kèk ensèk ak zanmi ou oswa kondisip klas ki chita kap vini jwenn ou, li se rezonab pou ou pou w montre l 'oswa li Kòd ou ak di, hey, èske ou kapab ede m 'konnen sa k ap pase sa ki mal isit la? Nou pa tipikman anbrase bò opoze. Li se pa yon repons kòrèk pou ou zanmi oswa yon kondisip klas isit la vle di, oh, jis gade nan m 'ak figi li soti nan sa. Sa se sòt de rezonab. Men, li te gen yon lòt moun, yon lòt nan sèvo, yon lòt pè je gade nan ekran ou a oswa gade nan Kòd ou W'a di yo, se ou sèten ou vle gen yon bouk isit la? Oswa yo se ou sèten ou vle ki virgules isit la? Oswa oh, ki mesaj erè vle di sa a. Moun sa yo ki yo trè rezonab ak ankouraje konpòtman. Ka nan ki mwen te ou evoke pi bonè bouyi desann nan lè elèv yo anreta nan mitan lannwit fè pòv jijman desizyon ak Hamelin Kòd yo nan yon lòt moun oswa jis li di yo: isit la, li la nan Dropbox oswa Googling anreta nan mitan lannwit. Se konsa, mwen ta ankouraje ak Tanpri, si ou gen moun ki inevitab moman estrès, w ap eurt moute kont dat limit la, ou pa gen okenn reta jou depi li nan deja Vandredi nan ki pwen, voye yon imèl tèt kou a oswa tèt mwen dirèkteman. Di, koute, mwen se nan mwen kraze pwen isit la. Se pou yo gen yon konvèsasyon ak figi li soti. Recourir nan entènèt la oswa kèk lòt pa konpòtman rezonab se pa janm la solisyon, ak tou anpil nan ou kamarad klas yo pa isit la sou lakou lekòl la paske yo te ke jijman pòv yo. Men, li la trè fasil jip ki liy. Ak isit la se yon foto ti aplodi ou leve soti nan Reddit se konsa ke kounye a tout bagay pral vin OK. Se konsa, yon Rekapitilasyon rapid, lè sa a, nan kote nou te kite la. Se konsa, semèn pase a, sonje ke nou prezante kondisyon yo, pa nan scratches men nan C tan sa a. Se konsa te gen kèk sentaks nouvo men pa reyèlman nouvo lide se pou chak. Nou te gen ekspresyon Boolean ke nou te kapab oswa ansanm ak de vètikal ba oswa epi ansanm ak de ampersands, ki di ke tou de bò gòch la e yo gen dwa a fèt pou laverite pou sa a egzekite. Lè sa a, nou te gen switch, ki nou gade nan yon ti tan, men mwen pwopoze yo se reyèlman jis diferan sentaks pou reyalize nan menm kalite objektif si ou konnen nan avanse sa ki ka ou yo pral yo dwe. Nou te gade pasan. A pou bouk se petèt pi komen an, oswa omwen youn nan ke gen moun ki tipikman rive pou ensten. Menm si li sanble yon ti kras skre, ou pral wè anpil moun, anpil egzanp de sa a anvan lontan, jan ou gen deja byen ta nan semèn pase a. Pandan ke pasan kapab Menm jan an tou reyalize menm bagay la. Men, si ou vle fè nenpòt ki incrementation oswa travay pou mete ajou valè varyab la, ou gen fè li plis manyèlman pase a pou bouk anvan pèmèt. Lè sa a, gen nan bouk la fè-pandan y ap, ki pèmèt nou fè yon bagay nan omwen yon fwa pandan y ap yon bagay lòt bagay se vre. Lè sa a se patikilyèman bon pou pwogram oswa pou jwèt kote ou vle rapid itilizatè a pou yon bagay omwen yon fwa. Lè sa a, si li pa kowopere, ou ta ka vle fè l ' ankò e ankò. Avèk varyab, pandan se tan, nou te gen liy nan kòd tankou sa a, sa ki kapab gen de liy yo. Ou te kapab deklare yon Int rele vann san preskripsyon, virgules. Oswa ou ka jis deklare ak defini li, se konsa pale. Ba li yon valè nan menm tan an. Lè sa a, alafen, nou te pale sou fonksyon. Lè sa a te yon egzanp bèl nan sans ke li montre de kalite fonksyon. Youn nan se GetString (), ki, ankò, vin yon fisèl soti nan itilizatè a. Men, GetString () se kalite ki enteresan, byen lwen tèlman kòm nou te itilize li, paske nou te toujou itilize li ak yon bagay ki sou bò gòch-men nan yon egal siy. Sa se yo di ke GetString () retounen yon valè. Li retounen, nan kou, yon kòd. Lè sa a, ki sou bò gòch-men, nou ap tou senpleman ekonomize ki fisèl andedan yon varyab rele. Sa a se diferan, nan yon sans, ki soti nan printf paske printf, nan omwen nan nou an l 'isit la, pa retounen anyen. Kòm yon sou kote, li fè yon bagay retou. Nou jis pa pran swen sa li ye. Men, li gen sa ki rele yon efè segondè. Ak sa ki se ke efè segondè nan chak ka nou te wè konsa byen lwen? Ki sa ki printf fè? Li simagri yon bagay yo ekran an, montre tèks oswa nimewo oswa yon bagay sou ekran an. Men, sa se sèlman konsidere kòm yon efè segondè paske li pa vrèman Distribiye li tounen nan m '. Li pa yon repons andedan nan yon bwat nwa ki mwen kapab Lè sa a, rive jwenn nan ak pwan. Li nan jis ap fè l 'sou anpil pwòp li yo, tankou Holton te konekte nan sa a nwa bwat semèn pase a, epi li yon jan kanmenm maji te desen sou tablo a san yo pa m 'aktyèlman enplike nan sa. Sa ta dwe yon efè segondè. Men, si mwen aktyèlman te gen yo rive jwenn tounen nan isit la ak di, o, isit la se fisèl la soti nan itilizatè a, ki ta gen yon valè retou. Se konsa byen lwen nou te sèlman itilize fonksyon ke lòt moun yo te ekri. Men, nou ka aktyèlman fè sa yo kalite bagay tèt nou. Se konsa, mwen pral ale nan la CS50 aparèy ankò. Kite m 'fèmen tab la ke nou te louvri yon ti moman de sa. Men, kite m 'ale pi devan epi kreye yon dosye nouvo. Men, mwen pral ale pi devan epi rele sa positive.c yon sèl. Se konsa, mwen vle fè yon bagay ki gen chif pozitif isit la. Se konsa, mwen pral ale pi devan epi fè Int - regrèt - # Genyen ladan. Se pou yo pa fè ke menm erè tankou anvan. Int prensipal (san valè), louvri Curly atèl, fèmen Curly BRACE-ou. Epi, koulye a mwen vle fè sa ki annapre yo. Mwen vle ekri yon pwogram ki ensiste moun ki nan itilizatè a bay m 'yon nonm antye ki pozitif. Se konsa, pa gen okenn fonksyon GetPositiveInt nan bibliyotèk la CS50. Genyen sèlman GetInt (). Men, sa a OK paske mwen gen nan konstwi ak ki mwen ka enpoze yon ti kras pi plis contrainte sou ki valè. Mwen te kapab fè yon bagay tankou sa a. Se konsa, Int n - ak si w ap tape ansanm, jis reyalize Mwen pral tounen ladan l epi chanje kèk bagay nan yon moman - se konsa Int n egal GetInt (). Epi sa a, pral mete yon andedan Int n. Men, kite m 'gen yon pi plis deskriptif. Kite m 'di yon bagay tankou mwen mande ke ou ban m 'yon nonm antye ki pozitif. Tout dwa. Se konsa, jis yon ti kras nan enstriksyon yo. Koulye a, kisa mwen kapab fè? Bon, mwen deja konnen soti nan senp mwen kondisyon oswa branch, jis tankou mwen te gen nan grafouyen, mwen te kapab di yon bagay renmen si n se mwens pase oswa egal a zewo, Lè sa a, mwen vle fè yon bagay renmen, se sa ki pa pozitif. Lè sa a, mwen te kapab fè - OK, men mwen reyèlman vle jwenn ki Int. Se konsa, mwen t 'ka ale moute isit la epi mwen te kapab kalite nan kopi sa a ak indent sa a. Lè sa a,, OK. Se konsa, si n se mwens pase oswa egal a zewo fè sa. Koulye a, sa ki si itilizatè a pa kowopere? Oke, Lè sa a, mwen pral prete sa a isit la. Lè sa a, m 'ale nan isit la ak isit la ak isit la. Se konsa, sa a se klèman pa solisyon an, dwa? Paske gen nan pa gen fen nan je. Si m 'vle mande ki itilizatè a bay m 'yon nonb antye ki pè pozitif, mwen kapab aktyèlman jwenn Int la. Mwen ka Lè sa a, tcheke pou ki Int. Men, Lè sa a, mwen vle tcheke li ankò, li tcheke l 'ankò epi tcheke l' ankò. Se konsa, evidamman, sa ki nan pi bon an konstwi yo dwe lè l sèvi avèk isit la? Tout dwa, se konsa kèk kalite bouk. Se konsa, mwen pral debarase m nan prèske tout bagay sa yo. Apre sa, mwen vle jwenn sa a Int omwen yon fwa. Se konsa, mwen pral di fè - epi mwen pral tounen vin jwenn nan pandan ke yo nan jis moman sa a - kounye a, fè sa? Mwen pral fè GetInt Int n vin (). OK. Se konsa, sa a, se trè bon. Epi, koulye a konbyen fwa fè Mwen vle fè sa? Kite m 'mete anndan an printf nan bouk la Se konsa, mwen ka mande ankò e ankò, si yo bezwen. Men, sa m 'vle sa a pandan y ap kondisyon fè? Mwen vle kontinye ap fè sa pandan y ap sa se ka a? Yeah. N a se mwens pase oswa egal a zewo. Se konsa, deja, nou te anpil netwaye sa a Kòd yo. Nou te prete yon trè senp konstwi - bouk la fè-pandan y ap. Mwen te yo vòlè li jis liy ki enpòtan nan kòd ki mwen te kòmanse kopye ak kole, ki pa t 'gen bon konprann. Se konsa, kounye a mwen pral aktyèlman kole li nan isit la ak jis fè l 'yon fwa. Koulye a, kisa mwen vle fè a fen nan anpil nan pwogram sa a? Mwen pral jis di yon bagay senp renmen, mèsi pou a - ak Mwen pral fè% mwen pou Int - antislach n, vigil, ak Lè sa a, ploge nan n, virgules. Tout dwa. Se konsa, kite a wè sa ki rive koulye a lè m 'kouri pwogram sa a. Mwen pral ale pi devan epi fè pozitif. Modi. Yon erè kèk. Se konsa, kite m 'woulo liv tounen moute ak premye yo. pa travay nan yo bak. Travay nan yo soti nan tèt desann pou yo Cascade ak sèlman yon sèl bagay gen sa ki mal. Enplisit deklarasyon GetInt fonksyon (). Yeah. Se konsa, li pa t 'ase. Mwen kalite te fè erè nan menm, men yon ti kras diferan tan sa a. Mwen bezwen pa sèlman gen ladan stdio.h men tou cs50.h, ki gen ladan an sa yo rele deklarasyon nan jwenn Int, ki anseye aparèy la, oswa anseye C sa GetInt () se. Se konsa, kite m 'resave. Mwen pral inyore erè yo ki lòt paske mwen pral espere ke yo ap yon jan kanmenm ki gen rapò ak erè a Mwen deja fiks yo. Se konsa, kite m 'ale pi devan epi compile ak fè pozitif, Antre. Modi. Twa erè, toujou. Kite m 'woulo liv jiska premye a. Itilize n varyab. Nou pa te wè sa a anvan. Lè sa a, tou, se yon ti kras skre. Sa a se pwodiksyon an nan du a. Ak sa ki ki liy make gen - positive.c :9:13 - ap di, li la di sou liy nèf nan positive.c, nan pèsonaj la 13th, 13 kolòn, ou te fè sa a erè. Men, an patikilye, li la di m 'rès n varyab. Se konsa, kite a wè - liy nèf. Mwen lè l sèvi avèk n nan sans ke Mwen bay li yon valè. Men, sa ki du a pa renmen se ki mwen pa w pèdi lè l sèvi avèk li. Men, tann yon minit, Mwen lè l sèvi avèk li. Nan liy 11, mwen sèvi ak li isit la. Men, si mwen desann plis nan positive.c :11 - se konsa nan la, 11 liy karaktè 12, du a di m ', pou sèvi ak sekrè idantifyan n. Se konsa, sekrè vle di mwen gen pa espesifye li kòm yon varyab ak yon kalite done. Men, tann yon minit. Mwen te fè egzakteman sa nan liy nèf. Se konsa, gen yon moun ki vrèman konfonn isit la. Li nan swa mwen oswa du a paske nan liy nèf, ankò, mwen deklare yon Int n, epi mwen voye nan li retounen valè de GetInt (). Lè sa a, mwen lè l sèvi avèk ki n varyab nan liy 11 epi tyeke si valè li yo ki pi piti a pase oswa egal a zewo. Men, sa a aparamman se move ak kase poukisa? Di l 'ankò? Ah, mwen gen deklare n anvan k ap antre nan bouk la. Men, poukisa? Mwen vle di, nou jis pwopoze yon ti jan de sa ki li nan amann deklare varyab tout sou yon sèl liy ak Lè sa a, ba yo kèk valè. Yon varyab mondyal - kite a tounen vin ak sa yo ki lide nan jis moman sa a. Poukisa nou vle m 'mete li deyò nan bouk la? Li se. Egzakteman. Se konsa, kwake, yon ti jan counterintuitive, kite m 'rezime. Lè ou deklare n andedan nan blòk la fè la - espesyalman andedan nan sa yo aparèy òtopedik Curly - ki n varyab gen sa ki rele yon sijè ki abòde - gen rapò ak sistèm ki fè nòt nou yo nan la kou - men gen yon sijè ki abòde sa a, se limite a sa sèlman sa yo aparèy òtopedik Curly. Nan lòt mo, tipikman si ou deklare yon varyab andedan yon seri aparèy òtopedik Curly, varyab sa a sèlman ki egziste andedan nan sa yo aparèy òtopedik Curly. Se konsa, pa ki lojik pou kont li, menm si Mwen te deklare n nan liy nèf, li esansyèlman disparèt soti nan sijè ki abòde, disparèt soti nan memwa, se konsa pale, pa tan an mwen frape liy 11. Paske liy 11, malerezman, se deyò nan sa yo aparèy òtopedik Curly. Se konsa, mwen malerezman pa ka ranje sa a pa pral tounen nan sa m 'te fè l' anvan an. Ou ta ka nan premye fè sa. Men, sa ki moun ou ye kounye a pa fè siklik? Ou ap evidamman pa resevwa Int a siklik. Se konsa, nou ka kite GetInt la (), epi nou ta dwe kite GetInt la () andedan kay la bouk paske se sa nou vle enportune itilizatè a pou ankò e ankò. Men, li fè sa sifizan ale jiska liy, di, sis. Int n, virgules. pa bay li yon valè ankò paske ou pa bezwen jis ankò. Men koulye a, desann isit la, avi - sa a ta yon erè trè fasil. Mwen pa vle swiv anvan yo mwen deklarasyon n. Mwen vle sèvi ak n a ki aktyèlman egziste. Se konsa, kounye a nan liy 10, Mwen asiyen n yon valè. Men, nan liy sis, Mwen deklare n. Se konsa, mwen ka oswa ka mwen pa sèvi ak li nan liy 12 kounye a? Mwen kapab paske ant ki Curly aparèy òtopedik ki n te deklare kounye a? Yon sèl nan moute isit la sou liy senk. Nan yon sèl isit la sou liy 14. Se konsa, si mwen kounye a rale soti, sove sa a ranpli, ale tounen nan epi kouri fè pozitif, sa konpile tan sa a. Se konsa, sa a, se deja pwogrè. Koupe. . / Pozitif, Antre. Mwen mande ke ou ban m ' yon nonm antye ki pozitif. Negatif 1. Negatif 2. Negatif 3. Zewo. Yon. Men, mèsi pou yon sèl la se sa ki kounye a enprime. Kite m 'eseye yon lòt bagay, soti nan kiryozite. Mwen te di yo opinyon yon nonb antye relatif. Men, sa ki si mwen olye pou tape nan ti mouton? Se konsa, ou wè koulye a yon èd memwa diferan - rekoumanse. Men, okenn kote nan Kòd mwen mwen te ekri rekoumanse. Se konsa, kote, prezimableman, se sa a rekoumanse rapid vini soti nan, ou ta di? Yeah, ki soti nan GetInt () tèt li. Se konsa, youn nan bagay ki anplwaye CS50 nan fè sa ki pou ou, omwen nan sa yo kèk premye semèn, se nou te ekri nan Liv la kèk kantite lajan nan erè tcheke asire ke si ou rele GetInt (), ou pral omwen jwenn tounen yon Int soti nan itilizatè a. Ou pa pral resevwa yon kòd. Ou pa pral jwenn yon Char. Ou pa pral jwenn yon bagay lòt tout ansanm. Ou pral jwenn yon Int. Koulye a, li pa ka pozitif. Li pa ta ka negatif. Nou fè okenn garanti nan sa. Men, nou pral enportune itilizatè a rekoumanse, rekoumanse, rekoumanse jiskaske li aktyèlman kowopere. Menm jan tou, si m 'fè 1.23, ki pa yon Int. Men, si mwen tape nan, di, 50, ki ki ban m 'yon valè ke mwen te vle. Tout dwa. Se konsa, pa move. Nenpòt kesyon sou ki sa nou te jis fè konsa? Takeaway a kle ke yo te, yo dwe klè, pa anpil bouk la, ki nou te wè anvan menm si nou gen pa reyèlman itilize li, men li pwoblèm lan nan sijè ki abòde, kote varyab kapab fèt sèlman ka dwe itilize sèlman nan kèk sijè ki abòde espesifye. Tout dwa, kite m 'adrese sijesyon an ou te fè pi bonè, sa yo ki an yon mondyal varyab. Kòm yon sou kote, li vire soti ke yon lòt solisyon a pwoblèm sa a, men Anjeneral, yon solisyon kòrèk oswa yon solisyon mal fèt, se deklare varyab ou tankou ou sa ki nan rele yon varyab mondyal la. Koulye a, mwen se kalite vyole definisyon mwen nan sijè ki abòde paske gen pa gen okenn aparèy òtopedik Curly nan tèt la anpil ak anba a anpil nan yon dosye. Men, enplikasyon sa a nan se ke kounye a nan liy kat, n se yon varyab mondyal la. Men, kòm non an implique, li nan jis aksesib toupatou. Grafouyen aktyèlman gen sa yo. Si ou itilize yon varyab, ou ta ka sonje ou te gen yo chwazi si li la pou sa a luten oswa pou tout sprites. Oke, tout sprites se jis pi klè nan fason pou li di mondyal la. Yeah? Ah, reyèlman bon kesyon. Se konsa, sonje ki nan vèsyon an trè premye nan kòd m 'yo, lè m' mal te deklare ak defini n nan liy nèf - Mwen te deklare li kòm yon varyab ak mwen te bay li yon valè ak plasman operatè a - sa a te ban m 'de erè. Youn, lefèt ke n pa te itilize, ak de, ki nan liy 11 li jis pa te deklare. Se konsa, premye yon sèl la mwen pa t ' adrès la nan moman an. Li se pa entèdi yon erè deklare yon varyab pa men sèvi ak li. Men, yonn nan bagay sa yo nou te fè nan aparèy la CS50, fè espre, pedagojik, se nou te cranked la moute atann nan du a fè asire w ke ou ap fè bagay sa yo pa sèlman kòrèkteman men vrèman kòrèkteman. Paske, si w ap deklare yon varyab tankou n epi pa janm sèvi ak li, oswa lè l sèvi avèk li kòrèkteman, Lè sa a, sa ki se li fè a? Li vrèman pa sèvi yon bi. Epi li trè fasil sou tan, si ou pa configured òdinatè pwòp ou a nan fason sa a, jis gen kòd ki gen sold ti kras isit la, sold la. Lè sa a, mwa pita ou gade retounen lakay yo epi w ap tankou, poukisa se liy sa a nan Kòd la? Men, si gen nan pa gen bon rezon, li pa benefisye oumenm oswa kolèg ou yo desann wout la gen yo bite sou li lè sa a. Kòm yon sou kote, kote se ki vini soti nan? Oke, sonje ke chak fwa nou konpile pwogram yo, tout nan bagay sa a se ke yo te enprime. Se konsa, nou pral tounen vin jwenn sa a. Men, ankò, fè se yon sèvis piblik ki automatise pwosesis la nan konpile pa kouri du aktyèl la rele sonnen. Sa a bagay, nou pral evantyèlman wè la a, gen fè ak debogaj ak yon espesyal pwogram yo rele debugjeur la. Sa a te fè ak optimize a Kòd - plis sou sa nan tan kap vini. STD = c99 - sa a jis vle di sèvi ak vèsyon an 1999 nan C. C te alantou menm pi long pase ki yo, men yo te fè kèk bèl chanjman 10 plis ane de sa. Men, isit la nan yo menm ki enpòtan. Nou ap di fè nenpòt ki bagay ki deja ta gen yon avètisman yon erè anpeche elèv la soti nan konpile. Ak mwayen miray fè sa pou yon tout pakèt moun sou bagay sa yo, pa jis ki gen rapò ak varyab. Lè sa a, kite m 'woulo liv nan fen liy sa a. Lè sa a, tou, n ap pètèt tounen vin jwenn. Sa a se evidamman non an nan dosye a mwen konpile. Sa a raple non an nan dosye a Mwen sorti kòm non an nan ègzekutabl pwogram m 'yo. Sa a lcs50-jis vle di sèvi ak CS50 nan bibliyotèk, ak nenpòt zewo ak moun yo ki anplwaye a te ekri ak konpile pi bonè ane sa a, entegre yo nan pwogram m 'yo. Men, nenpòt moun ki konnen ki sa-LM se? Li nan bibliyotèk la matematik, ki se jis gen menm si ou pa fè nenpòt matematik. Li nan jis otomatikman bay nou pa fè. Oke, kite m 'fè yon lòt egzanp isit la pa louvri moute yon dosye nouvo. Men, kite m 'sove yon sèl sa a kòm string.c. Li sanble ke kòm nou pale sou done kalite jodi a, gen nan menm plis ale sou anba kapo a pase nou te wè konsa byen lwen. Se konsa, kite m 'byen vit fè yon pwogram rapid. Mete stdio.h. Apre sa, mwen pral delivre sa. E ou konnen, kite m 'pa fè a menm erè ankò e ankò. Mete cs50.h. Men, kite m 'ale pi devan koulye a ak fè Int prensipal (san valè). Koulye a, mwen tou senpleman vle fè yon pwogram ki fè sa a - deklare yon fisèl rele nan epi pou yo jwenn yon kòd soti nan itilizatè a. Men, kite m 'fè yon ti kras enstriksyon isit la - tanpri, ban m 'yon kòd - Se konsa, itilizatè a konnen sa yo dwe fè. Lè sa a, desann isit la anba a sa a, Mwen vle fè sa ki annapre yo - pou Int mwen vin zewo. Yon fwa ankò, syantis konpitè tipikman kòmanse konte nan zewo, men nou te kapab fè ke yon moun si nou reyèlman te vle. Koulye a, mwen pral fè mwen ki pi piti a pase longè fil nan s. Se konsa, strlèn - S-T-R-L-E-N - ankò, li nan kout paske li pi fasil kalite, menm si li nan yon ti kras skre. Sa se yon fonksyon nou pa te itilize anvan, men literalman fè sa - tounen vin jwenn mwen yon nimewo ki reprezante longè a nan fisèl la ki itilizatè a tape. Si yo tape nan hello, li ta retounen senk paske gen nan senk lèt nan hello. Lè sa a, sou chak iteration nan sa a bouk, mwen plis plis. Se konsa, ankò, pou yon estanda ki konstwi menm si ou pa byen twò konfòtab oubyen ki abitye avèk li ankò. Men koulye a, sou chak iteration sa a bouk, remake ki sa mwen pral fè. Mwen vle ale pi devan epi enprime soti yon karaktè yon sèl - se konsa% c antislach n sou yon liy nouvo. Lè sa a, ou konnen ki sa mwen vle fè? Kèlkeswa sa mo a se ke itilizatè a kalite nan, tankou hello, mwen vle ekri ak lèt ​​detache H-E-L-L-O, yon karaktè pou chak liy. Nan lòt mo, mwen vle jwenn nan a karaktè moun nan yon fisèl, kijan moute jouk jòdi a, yon kòd gen jis te yon sekans nan karaktè. Men, li vire soti mwen kapab fè a, bracket, mwen, fèmen bracket, fèmen parantèz, virgules. Apre sa, mwen dwe fè yon sèl plis bagay. Li nan nan yon dosye rele string.h ki strlèn se te deklare. Se konsa, si mwen vle sèvi ak sa fonksyon, Mwen bezwen di du a, atann yo sèvi ak li. Koulye a, kite m 'ale pi devan epi fè pwogram lan te rele fisèl. Dot, koupe, fisèl. Tanpri, ban m 'yon kòd. Mwen pral ale pi devan epi tape li. Hello, nan tout kaskèt, Antre. Epi, koulye a remake mwen te enprime sa a yon karaktè apre lòt la. Se konsa, detay nan nouvo isit la se ke yon kòd, nan fen jounen an, yo ka jwenn aksè pa fason pou endividyèl li yo karaktè pa entwodwi kare a notasyon bracket. Epi sa a, paske yon kòd anba kapo a se vre yon sekans karaktè. Men, sa ki nan pwòp sou yo se nan RAM òdinatè w lan an - Mac, PC, tou sa li se - yo ap literalman tounen nan do nan do - H-E-L-L-O - nan moun adjasan, bytes nan memwa. Se konsa, si ou ta vle jwenn nan sa yo nan wityèm multiple, ki nan sa a bouk ta dwe bracket zewo, bracket yon sèl, bracket de, twa bracket, bracket kat - ki nan zewo Catalogue jiska senk - ki pral enprime soti H-E-L-L-O sou pwòp liy li yo. Koulye a, kòm yon kol, se pou la m 'montre w kalite bagay sa yo ou pral evantyèlman gen kapab konprann, omwen ak kèk fèmen kap. Pou yon sèl, ki sa nou enkli nan jodi a egzanp, si ou ta renmen, se aktyèlman youn nan jailbreaks yo trè premye pou iPhone a. Jailbreaking vle di bravo telefòn nan konsa ou ka aktyèlman sèvi ak li sou yon diferan konpayi asirans oswa enstale lojisyèl pwòp ou yo. Men, ou pral avi sa a sanble konplètman skre, gen plis chans. Men, gade nan sa a. Te iPhone a aparamman fann ak yon pou bouk, yon kondisyon si, yon lòt moun kondisyon, yon pakèt moun sou fonksyon nou pa te wè. Li di ankò, ou pral pa nan premye gade pwobableman konprann ki jan sa a ap travay. Men, tout bagay ke nou sòt de pran pou yo akòde nan lavi modèn nou an aktyèlman gen tandans diminye menm nan kèk nan sa yo fondamantal nou te te gade nan. Kite m 'ale pi devan epi louvri yon sèl lòt pwogram, holloway.c. Se konsa, sa a, tou, se yon bagay ou pa ta dwe vrèman konnen. Menm pa youn nan anplwaye a oswa mwen te kapab pwobableman figi sa a soti nan gade li paske sa a te kòd yon moun nan ki te soumèt nan sa ki nan istorikman li te ye kòm yon obfuscated C konpetisyon, kote ou ekri yon pwogram ki compiles epi kouri men se konsa modi skre pa gen okenn moun ka konprann ki sa li pral fè jouk yo aktyèlman kouri li. Se konsa, tout bon, si ou gade nan sa a Kòd, mwen wè yon switch. Mwen wè prensipal la. Mwen wè sa yo parantèz kare qui kèk kalite yon etalaj. nenpòt moun ki vle devine kisa pwogram sa a aktyèlman fè si mwen kouri Holloway? Wi. OK. Oke fè. Se konsa, sèlman anplwaye a ak mwen pa kapab konnen konnen ki sa ki tout bagay sa yo fè. Epi, koulye a Anfen, kite m 'ale pi devan epi louvri moute yon lòt pwogram nan. Sa a yon sèl - ankò, nou pral fè kòd la sous disponib sou entènèt - yon sèl sa a jis kalite bèl gade nan. Tout yo te fè ki frape a espas bar byen yon ti jan. Men, sa a se kòd reyèl. Se konsa, si ou panse ke trè, si nou aktyèlman kouri sa a nan èd memwa a, evantyèlman ou pral wè ki jan nou ta kapab fè bagay sa yo tankou sa a. Se konsa, nou pral kite ou sou sa nòt ak wè ou nan Mèkredi. [Jwe mizik] Oratè 2: Nan CS50 kap vini an, TFs nan etap yon rebelyon. Oratè 3: Gen se li ki. Jwenn l '! [Jwe mizik]