[MIZIK jwe] DAVID J. Malan: Tout dwa, sa se CS50. Lè sa a se semèn yon sèl. Se konsa, sonje ke, dènye fwa nan semèn zewo, nou konsantre sou panse enfòmatik. Apre sa, nou favorize tranzisyon soti nan ke yo Grafouyen, yon pwogram grafik lang nan men zanmi nou an nan Laboratwa Media MIT nan. Se avèk grafouyen, t 'nou eksplore lide tankou fonksyon, ak kondisyon, ak pasan, ak varyab, e menm evenman yo, ak fil, ak plis ankò. Ak jodi a, nou ap ale nan kontinye lè l sèvi avèk lide sa yo, ak reyèlman pran yo pou akòde, men tradui yo nan yon lòt lang ke yo rekonèt kòm C. Koulye a, C se yon lang plis tradisyonèl. Li se yon pi ba nivo lang, si ou pral. Li nan piman textuelle. Se konsa, nan premye gade, li nan tout pral gade olye skre si ou pa janm te pwograme anvan. Nou ap ale nan gen semi-kolon, ak parantèz, ak aparèy òtopedik Curly, ak plis ankò. Men, reyalize ke menm menm si sentaks la se sou yo gade yon ti kras abitye nan pi fò nan ou, gade sot pase sa. Epi eseye wè lide yo ki, tout bon, yo konnen yo, paske isit la nan semèn youn sa nou pral kòmanse fè se yo konpare, okòmansman, Grafouyen kont C. Se konsa, pou egzanp, sonje ke lè nou aplike premye a nan pwogram nou dènye fwa, nou te gen yon blòk ki te yon ti kras yon bagay tankou sa a men lè drapo vèt klike, ak Lè sa a nou te gen youn oswa plis moso devinèt anba a li, nan ka sa a, di, alo nan lemonn. Se konsa, tout bon, nan grafouyen, lè m 'klike sou ki drapo vèt nan kouri pwogram mwen, se konsa konsa pale, sa yo, se blòk yo ki jwenn egzekite, oswa kouri. Epi, espesyalman, Scratch te di, hello, nan lemonn. Koulye a, mwen te kapab espesifye mo diferan isit la. Men, nou ap wè ke, tout bon, anpil nan blocks-- sa yo ak tout bon, nan C anpil functions-- kapab parametrized oswa Customized fè bagay sa yo diferan. An reyalite, nan C si nou vle konvèti, kounye a, pwogram reyur sa a nan lòt lang sa a, nou ap ale nan ekri yon ti kras yon bagay tankou sa a. Se vre, gen kèk abitye sentaks gen gen plis chans, int, ak parantèz, epi revoke. Men, printf menm si ou ta panse ke li ta jis pou ekri an lèt detache. Men, ekri an lèt detache vle di ekri an lèt detache fòma, menm jan nou pral byento wè. Sa a literalman pral enprime nan ekran an tou sa se andedan nan tout sa yo parantèz, ki nan kou nan ka sa a se, alo nan lemonn. Men, ou pral avi kèk lòt sentaks, gen kèk quotes doub, ki parantèz yo nan fen a, semi-kolon an ak renmen an. Se konsa, gen nan yon ti jan nan sou tèt li, se konsa pale, tou de konesan ak syntactically, ki nou ap ale fè yo sonje anvan lontan. Men, reyalize ke ak pratik, sa a ap kòmanse so soti nan ou. An reyalite, se pou yo konsantre sou ke yon moun fonksyon specifically-- nan ka sa a, di alo nan lemonn. Se konsa, di se fonksyon an. Alo lemonn yo se paramèt li yo, oswa agiman, personnalisation li yo. Apre sa, ekivalans la nan C se jis pral fè liy sa a yon sèl isit la, kote printf ki ekivalan a, di, doub te site fisèl la, alo lemonn yo se ekivalan, nan kou, nan sa a nan ti bwat la blan la. Apre sa, n nan antislach, menm si yon ti kras etranj yo ak absan nan grafouyen, tou senpleman ki pral gen efè a nou pral wè nan yon òdinatè, tankou Mac mwen oswa yon PC, nan jis k ap deplase nan kurseur nan liy kap vini an. Se tankou frape Antre nan sou klavye ou. Se konsa, nou pral wè sa ankò anvan lontan. Men, anvan, kite a pran yon gade nan sa a lòt egzanp nan ka a nan pasan. Nou te gen sa a pou tout tan bouk dènye fwa, ki te yon seri de moso devinèt ki te fè yon bagay literalman forever-- nan ka sa a, di, alo mond, alo mond, alo mond, alo nan lemonn. Se konsa, li yon riban enfini pa konsepsyon. Nan C, si nou vle aplike sa a lide menm, nou ta ka tou senpleman fè sa. Pandan ke vre, printf alo world-- kounye a pandan y ap, jis Semantics, kalite konjur moute lide a nan fè yon bagay ankò, e ankò, e ankò, ak pou konbyen tan? Oke, true-- sonje ke vre se jis sou oswa yon sèl. , Se verite se, nan kou, toujou vre. Se konsa, li nan kalite yon san sans deklarasyon jis vle di vre. Men, tout bon, sa a se ekspre, paske si vre se jis toujou vre, pase pandan y ap vre jis implique, si yon ti kras endirèkteman, ki liy ki vin apre nan kòd nan ant sa yo aparèy òtopedik Curly ta dwe jis egzekite ankò, e ankò, e ankò, epi pa janm aktyèlman sispann. Men, si ou vle ou bouk yo sispann, menm jan nou te fè dènye fwa ak yon bagay tankou sa a, repete yo 50 fwa yo, nan C nou ka fè menm bagay la ak sa ki nan rele yon pou loop-- mo kle a pa ke yo te ti tan, men pou. Lè sa a, nou gen kèk sentaks nouvo isit la, ak int mwen egal 0, mwen mwens pase 50, mwen ++. Epitou, n ap tounen vin jwenn sa. Men, sa a se tou senpleman ki jan nou ta tradui mete nan nan blòk Scratch nan yon seri C liy nan kòd. Pandan se tan, konsidere varyab. Epi, an reyalite, nou jis te wè yon yon ti moman de sa. Ak nan ka a nan grafouyen, si nou te vle deklare yon varyab rele mwen pou mwen ke yo te nonb antye relatif, jis yon nimewo, e nou vle mete l 'nan kèk valè, nou ta sèvi ak sa a zoranj bloke isit lan-- mete m nan 0. Epitou, n ap wè jodi a ak pi lwen pase, jis tankou semèn pase a, pwogramasyon fè prèske toujou kòmanse konte soti nan zewo, reyèlman pa konvansyon. Men tou, paske sonje soti nan diskisyon nou an binè, nimewo ki pi piti ou kapab reprezante ak nenpòt ki kantite Bits se jis pral fè 0 tèt li. Se konsa, nou pral jeneralman kòmanse inisyalizin menm varyab nou an nan 0. Ak nan C rive nan fè menm bagay la, nou ap ale nan di Int pou nonb antye relatif, mwen jis pa konvansyon. Mwen te kapab yo te rele sa a varyab anyen mwen vle, jis tankou nan grafonyen moun. Lè sa a, egal 0 jis mandatè valè a 0 de dwat la epi mete an l 'nan varyab la, oswa depo veso a, sou bò gòch la. Ak semi-kolon an menm jan nou pral see-- ak nou te wè yon kèk nan sa yo deja- jis vle di fen nan panse. Kontinye nan fè yon lòt bagay sou liy ki ki swiv. Koulye a, sa ki sou ekspresyon Boolean? Sonje byen, nan grafouyen, sa yo te ekspresyon ki yo se swa vre oswa kesyon false--, reyèlman, ki yo se swa vre oubyen fo. Se konsa, nan ka a nan grafouyen, nou ta ka poze yon kesyon senp tankou sa a, se mwen mwens pase 50? Se konsa, mwen, ankò, se yon nonb antye relatif. Petèt nou ap sèvi ak li nan yon pwogram Scratch nan kenbe tras nan yon nòt oswa yon bagay tankou sa. Se konsa, sa sentaks isit la nan Grafouyen jis vle di, se mwen mwens pase 50? Oke, Erezman, yon bagay ki senp nan C. Men, tradui, sa a nou ta tou senpleman di mwen mwens pase 50, lè l sèvi avèk kle a abitye sou klavye ou. Pandan se tan, si ou te vle di yon bagay ki pi jeneral, tankou, byen, se x mwens pase y kote chak nan x ak y yo se tèt yo varyab? Nou ka fè menm bagay la nan C, toutotan nou te kreye sa yo varyab deja. Epitou, n ap wè ki jan yo fè sa anvan lontan. Nou ta tou senpleman di x mwens pase y. Se konsa, ou ap kòmanse wè kèk resanblans. Ak moun ki jan ki te fè Grafouyen te sètènman enspire pa kèk nan lide debaz sa yo. Men, ou pral wè sa a kalite sentaks nan anpil languages-- pa sèlman Grafouyen, pa jis C, men Piton, ak JavaScript, ak lòt lang toujou. Se pou nou konsidere yon lòt konstwi soti nan C, nosyon de yon kondisyon, fè yon bagay kondisyon. Si gen yon bagay se vre, fè sa. Si gen yon bagay lòt bagay se vre, fè sa. Li nan sòt de pwogram lan ekivalan nan yon fouchèt nan wout la. Petèt li nan yon fouchèt de-fason, yon fouchèt twa-fason sa a, oswa pi plis. Apre sa, nan grafouyen, nou ka gen wè yon bagay konsa. Se konsa, yon sèl sa a nan yon yon sèl gwo. Men, konsidere relatif nan senplisite nan lojik la. Si x se mwens pase y, Lè sa a, di x se mwens pase y, lòt bagay si x gen plis pouvwa pase y, Lè sa a, di x gen plis pouvwa pase y. Lè sa a,, lojikman, si ou panse tounen nan grafouyen oswa jis pwòp ou a entwisyon imen, byen, si x se janm pi grannèg pase y, ak x se pa mwens pase y, Lè sa a, nan kou x a pwal egal a y. Se konsa, nan ka sa a, pa nidifikasyon moun blòk grafouyen, nou kapab reyalize yon twa fason fouchèt nan wout la? Pandan se tan, si nou vle fè sa nan C, li joui sanble yon simpler-- ti kras omwen yon fwa ou jwenn abitye ak sentaks la. Si x se mwens pase y, printf x se mwens pase y. Lòt Bagay si x gen plis pouvwa pase y, printf x gen plis pouvwa pase y. Lòt Bagay printf x egal a y--, epi, ankò, ak sa yo antislach fini jis pou moun ki nouvo liy se konsa ke si ou aktyèlman kouri sa a kalite pwogram li ta jis deplase kurseur ou finalman nan liy nan pwochen nan ekran an. Koulye a, pandan se tan Scratch te fè lòt karakteristik pi plis sofistike, se sèlman kèk nan yo ki nou ap ale nan okòmansman deplase sou nan mond lan nan C. Yonn ladan yo te rele yon lis nan grafonyen moun. Lè sa a te yon espesyal di ki kalite varyab ki pèmèt ou nan magazen miltip bagay nan l 'tounen, nan do, nan do, nan do. Nan C, li pa gen lis, se pou chak, men yon bagay ki gen plis jeneralman rele ranje, byenke nou pral tounen vin pita sa a semès gade nan yon bagay rele yon lis, oswa reyèlman yon lis lye. Men, pou kounye pi pre a, ekivalan nan C pou nou a pwal yon bagay rele yon etalaj. Ak yon etalaj se tou senpleman yon kalite espesyal nan varyab ki pèmèt ou nan magazen done tounen, nan do, nan do, nan do. Epi, tout bon, nan grafouyen, si nou te vle jwenn aksè nan eleman an premye nan yon etalaj oswa yon list-- ak mwen pral rele l ', pa konvansyon, argv, agiman vektè, men plis sou sa anvan lontan. Si m 'vle jwenn nan eleman nan premye nan argv, nan mond lan nan Scratch ou aktyèlman fè tipikman kòmanse konte soti nan 1. Se konsa, mwen ta ka jwenn atik 1 nan argv. Se jis ki jan MIT aplike nosyon de lis. Men, nan C, mwen pral plis tou senpleman jis di, argv, ki ankò se non an nan m ' list-- oswa yo dwe klè, yon etalaj. Men, si mwen vle premye a eleman, mwen pral yo sèvi ak parantèz kare, ki ou pa ta ka souvan itilize anba yon klavye. Men, 0 jis vle di, jwenn m 'premye a. Se konsa, sou okazyon ak jan tan pase, nou ap ale yo kòmanse yo wè dikotomi sa yo ant Scratch ak C, kijan Scratch sèvi ak yon sèl. Nou nan C sèvi ak 0 isit la. Men, ou pral byen vit wè yon fwa ou konprann fondasyon yo nan chak lang, ki bagay sa yo kòmanse jwenn tout pi plis nan abitye nan pratik ak pratik. Se konsa nou aktyèlman gade kounye a nan yon pwogram. Isit la va pran devan nan C nou an kòd sous pou pwogram konplè. Ak pwogram nan nou ap ale yo ofri pou konsiderasyon se youn nan sa a, se ekivalan ak sa yo ki moso Scratch pi bonè. Se konsa, nan isit la, nou gen sa ki nan joui C pwogram la ki pi senp ou ka ekri ki aktyèlman fè yon bagay. Koulye a, nou pral gade sot pase yo, pou kounye a, te enkli ladan yo, estanda io.h, ak sa yo ang parantèz, ak int, ak anile, ak aparèy òtopedik yo Curly, ak renmen an. Li kite yo jis konsantre sou sa, omwen entwitif, ta ka sote soti nan ou deja. An reyalite, prensipal yo, mwen pa fè sa nesesèman konnen ki sa sa a se, men anpil tankou Grafouyen te gen ke lè vèt drapo klike moso devinèt, pou fè C kòm yon lang programmation gen yon moso prensipal la kòd ki vin egzekite pa default. Epi, tout bon, li nan literalman ale nan dwe rele prensipal la. Se konsa, prensipal la se yon fonksyon. Lè li nan yon fonksyon espesyal ki egziste nan C ke lè ou kouri nan yon pwogram, li se prensipal ki vin kouri pa default. Nan mond lan nan grafouyen, li te anjeneral lè vèt drapo klike ki te resevwa kouri pa default. Pandan se tan, nou te wè sa a anvan, printf oswa ekri an lèt detache fòma, sa se pral gen yon fonksyon ki vini ak C, ansanm ak yon pakèt antye nan lòt moun, ki volonte de tan ak tan ankò, yo nan lòd yo fè egzakteman kòm non li sijere, enprime yon bagay. Ki sa nou vle enprime? Bon, nou ap wè ke pa jwen karaktè tankou mond these-- hello, antislach n nan quotes doub, nou ka di printf egzakteman sa yo dwe enprime sou ekran an. Men, nan lòd yo fè sa, nou malerezman bezwen pran yon bagay ki se deja skre yo ban nou moun, men omwen li a yon ti jan readable-- byen file enkli ladan yo, estanda io.h, int, prensipal yo, anile, printf, nan tout majik la enkantasyon nou jis te wè sou ekran an. Men, nou gen aktyèlman yo ka ale pi plis Esoteric toujou. Nou premye bezwen tradui kòd la , ann ekri nan kòd machin. Apre sa, sonje soti nan semèn pase a ke machin, omwen yo menm ki nou konnen isit la, nan fen jou a sèlman konprann zewo ak inite. Apre sa, Bondye mwen, si nou te gen yo ekri sa yo zewo ak moun yo ki aktyèlman pwogram, li ta trè, trè byen vit pran plezi a soti nan anyen. Men, li vire soti, pou chak semèn pase a, ke sa yo modèl nan zewo ak moun yo jis gen siyifikasyon espesyal. Nan sèten kontèks, yo ta ka vle di chif yo. Nan kèk kontèks, yo ta ka vle di lèt, oswa koulè, oswa nenpòt ki kantite nan lòt Abstraksyon gen sou li. Men, menm jan òdinatè ou a gen yon CPU, Central otomatik Inite, oswa sèvo yo andedan nan òdinatè w lan. Li nan anjeneral Intel andedan, paske se sa youn nan konpayi yo pi gwo ki fè proseseur pou òdinatè. Oke, Intel proseseur ak lòt moun tou senpleman te deside an avanse ke modèl sèten nan zewo ak yo menm dwe vle di espesifik bagay sa yo. Sèten modèl nan zewo ak moun yo pral vle di, enprime sa a nan ekran an, oswa ajoute de nonb sa yo, oswa fè soustraksyon de nimewo sa yo, oswa deplase pyès sa a nan done ki sòti nan memwa òdinatè mwen an sou isit la, oswa nenpòt ki kantite lòt nivo ki ba anpil, men finalman itil, operasyon yo. Men, Erezman, nou moun yo pa pral nan bezwen konnen nivo sa a nan detay. Vreman vre, jis tankou dènye fwa, kote nou distrè ankò, e ankò, e ankò, bilding nan nivo ki ba anpil primitif tankou zewo ak moun yo nan pi wo konsèp nivo tankou nimewo, ak lèt, ak koulè, ak plis ankò, pou nou kapab kòm pwogramasyon kanpe sou zepòl yo nan lòt moun ki te vin jwenn mwen anvan nou epi sèvi ak lojisyèl ki lòt moun ki te ekri anvan nou ki sètadi pwogram rele konpilateur. C se yon lang ki se anjeneral konpile, ki vle di konvèti soti nan kòd sous nan kòd machin. An patikilye, sa sa vle di se ke si ou te gen sous ou Kòd ke ou tèt ou ekri, menm jan nou byento pral nan jis yon ti moman sou ekran an, , epi ou vle konvèti li finalman nan machin code-- moun zewo ak moun yo ki sèlman Mac ou a oswa PC ou understands-- ou te gen yon premye manje ki kòd sous nan kòm D 'nan yon espesyal pwogram yo rele yon du, pwodiksyon an nan nou pral wè se kòd machin. Epi, tout bon, ki dènye fwa nou te pale sou, reyèlman, nan fen jounen an, pou rezoud pwoblèm. Ou te gen entrain. Apre sa, ou te gen rezilta. Apre sa, ou te gen kèk kalite nan algorithm nan mitan yo. Algoritm ka siman dwe aplike nan lojisyèl, kòm nou te wè ak pseudocode semèn pase a ak jan nou pral wè ak aktyèl Kòd semèn sa a. Se konsa, yon du vrèman jis gen yon seri algoritm andedan nan li ki konnen ki jan yo konvèti mo kle sa yo espesyal, tankou prensipal yo, ak printf, ak lòt moun ki nou jis wè nan modèl yo nan zewo ak menm ki Intel andedan ak lòt proseseur aktyèlman konprann. Se konsa, kouman nou fè sa? Ki kote nou jwenn yon du? Pifò nan nou isit la gen yon Mac oswa yon PC. Apre sa, w ap kouri Mac OS, oswa Windows, oswa Linux, oswa Solarin, oswa nenpòt ki kantite lòt opere sistèm yo. Epi, tout bon, nou te kapab ale soti sou entènèt la ak download yon du pou Mac ou a oswa PC ou pou sistèm patikilye opere ou. Men, nou ta tout dwe sou paj diferan, se konsa pale. Nou ta gen yon ti kras konfigirasyon diferan. Apre sa, bagay sa yo pa ta travay tout menm bagay la. Epi, tout bon, jou sa yo anpil nan nou pa sèvi ak lojisyèl ki kouri sèlman sou laptops nou an. Olye de sa, nou itilize yon bagay tankou yon navigatè ki pèmèt nou jwenn aksè nan ki baze sou wèb aplikasyon pou nan nwaj la. Epi pita sa a semès, nou pwal fè egzakteman sa. Nou pral ekri aplikasyon oswa lojisyèl lè l sèvi avèk code-- pa C, men lòt lang tankou Piton ak JavaScript ki kouri nan nwaj la. Men, fè sa, nou tèt nou pandan semès la pral aktyèlman sèvi ak yon nwaj ki baze sou anviwònman li te ye tankou CS50 IDE. Sa a se yon pwogram ki baze sou wèb anviwònman, oswa entegre devlopman anviwònman, IDE, ki nan bati anlè kèk lojisyèl sous louvri rele Cloud 9. Apre sa, nou te fè kèk pedagojik senplifye nan li konsa tankou kache karakteristik sèten nan premye semèn yo ke nou pa bezwen, apre yo fin ki ou kapab revele yo, li fè pi fò nenpòt sa ou vle avèk anviwònman an. Epi, se pèmèt nou, tou, nan pre-enstale sèten lojisyèl. Bagay sa yo tankou yon CS50 sa yo rele bibliyotèk, ki nou pral byento wè bay nou nan C ak kèk plis fonctionnalités. Se konsa, si ou ale nan, finalman, CS50.io, ou pral pouse ou kapab konekte nan, ak yon fwa ou fè ak kreye yon kont pou gratis, ou yo pral kapab jwenn aksè nan yon anviwònman ki sanble byen tankou sa a. Koulye a, sa a se nan mòd nan default. Tout se bèl ak klere sou ekran an. Anpil nan nou gen yon abitid nan ap travay sou moso CS50 sa a, se byen byen ta nan nwit la la. Se konsa, kèk nan ou ta ka pito vire l 'nan mòd mitan lannwit, se konsa pale. Men, finalman, sa w ap pral wè nan CS50 IDE se twa distenk areas-- yon zòn sou kote a kite dosye ou yo ale nan dwe nan la nwaj, yon zòn sou bò dwat nan tèt kote kòd ou a a pwal editabl. Ou pral kapab yo louvri onglè endividyèl pou nenpòt ki pwogram ke ou ekri sa a semès andedan nan ki kwen tèt men dwat. Lè sa a, pi arcanely, e ankò pwisan, a pwal bagay sa a nan la anba li te ye tankou yon fenèt tèminal. Sa a se yon lekòl fin vye granmoun Kòmandman Liy Entèfas, oswa kote klima a leplisouvan, ki pèmèt nou al touye kòmandman sou computer-- an nan ka sa a, òdinatè a nan cloud-- la fè bagay sa yo tankou konpile kòd ou a nan kòd sous nan kòd machin, nan kouri pwogram ou an, oswa yo kòmanse ou sèvè wèb, oswa jwenn aksè nan baz done ou, ak nenpòt ki kantite lòt teknik ke nou pral kòmanse yo sèvi ak anvan lontan. Men, yo ka resevwa gen, nou ap ale nan gen aktyèlman yo ale sou entènèt ak kòmanse jwe. Ak fè sa, se pou yo premye kòmanse brikolaj ak prensipal yo, ak ekri pati prensipal la nan yon pwogram. Li kite yo sèvi ak sa fonksyon printf, ki nou itilize pi bonè, tou senpleman vle di yon bagay. Se konsa, isit la mwen menm deja andedan nan CS50 IDE. Mwen te louvri sesyon an davans. Apre sa, mwen plen tès depistaj fenèt la. Se konsa, finalman, ou twò nan pwoblèm vini pral swiv etap ki sanble ke ap bay sou entènèt kopi dokiman yo. Se konsa, ou pa bezwen enkyete sou absòbe tout ti etap teknik ke mwen fè isit la jodi a. Men, ou pral jwenn yon ekran tankou sa a. Mwen rive yo dwe nan mòd mitan lannwit. Epi ou ka egeye tout bagay moute pa enfimite mòd mitan lannwit. Apre sa, nan fen a jou, w ap ale nan wè sa yo twa prensipal areas-- dosye a navigatè sou bò gòch, onglè yo Kòd moute tèt, ak fenèt la tèminal nan fon. Kite m 'ale pi devan epi ekri pwogram premye fwa mwen. Mwen pral preemptively ale nan File, Save, epi sove dosye mwen kòm hello.c. Vreman vre, pa konvansyon, nenpòt nou pwogram ekri ki nan ekri nan lang nan C ta dwe yo te rele yon bagay dot c, pa konvansyon. Se konsa, mwen ale nan non li hello.c, paske Mwen jis vle di alo nan mond lan. Koulye a, mwen pral rale deyò epi yo klike sou Save. Apre sa, tout mwen gen isit la kounye a se yon tab nan kote mwen ka kòmanse ekri kòd. Sa a se pa ale nan konpile. Sa vle di pa gen anyen. Se konsa, menm si mwen konvèti sa a zewo ak moun yo, CPU a ki pral pa gen okenn lide sa k ap pase alantou. Men, si mwen ekri liy ki koresponn ak moute ak conventions-- C ke yo te C a, ankò, sa a language-- ak sentaks tankou sa a, printf alo world-- ak mwen te vinn konfòtab ak fè sa sou tan. Se konsa, mwen pa panse mwen te fè nenpòt ki erè tipografik. Men, toujours, trè premye nan fwa ou fè sa, ou pral. Ak sa ki mwen menm ki pral fè ta ka trè byen pa travay pou ou premye fwa. Epi sa a, parfe OK, paske kounye a ou ta ka jis wè yon anpil tout nouvote, men sou fwa yon fwa ou jwenn abitye ak anviwònman sa a, epi sa a lang, ak lòt moun, ou pral kòmanse wè bagay sa yo ke yo se swa kòrèk oswa kòrèk. Lè sa a se ki sa a zanmi ansèyman ak kou asistan jwenn se konsa bon nan sou tan, se survèyans erè oswa pinèz nan kòd ou a. Men, mwen reklamasyon ke gen gen okenn pinèz nan kòd sa a. Se konsa, mwen kounye a ou vle kouri pwogram sa a. Koulye a, sou pwòp Mac mwen an oswa PC, mwen se nan abitid la nan ikon klike doub lè m 'vle kouri kèk pwogram nan. Men se pa sèlman modèl la isit la. Nan ka sa anviwònman, ki se CS50 IDE. Nou ap itilize yon opere sistèm yo rele Linux. Linux se okoumansman de yon lòt sistèm opere, jeneralman li te ye kòm UNIX. Ak Linux se patikilyèman li te ye pou li te gen yon Kòmandman Liy Anviwònman, kote klima a leplisouvan. Koulye a, nou ap itilize yon espesifik gou nan Linux rele Ubuntu. Apre sa, Ubuntu se tou senpleman yon sèten vèsyon an Linux. Men, sa yo Linux nan jou sa yo fè aktyèlman vini ak grafik interfaces itilizatè. Apre sa, yonn nan nou rive lè l sèvi avèk isit la se ki baze sou wèb. Se konsa, sa ta ka gade menm yon ti kras diferan soti nan yon bagay ou tèt ou ka gen wè oswa kouri nan tan lontan an. Se konsa, mwen pral ale pi devan kounye a epi yo fè sa ki annapre yo. Mwen te sove sa a ranpli kòm hello.c. Mwen pral ale pi devan epi kalite clanghello.c Se konsa, rezone pou lang lan C se yon du. Li nan pre-enstale nan CS50 IDE. Epi ou ka absoliman download yo ak enstale sa a sou pwòp Mac ou a oswa PC. Men, ankò, ou ta pa gen tout pre-configuration la, te fè pou ou. Se konsa, pou kounye a, mwen se jis ale nan kouri clanghello.c. Epi, koulye a remake sentaks sa a isit la pral evantyèlman reyalize jis vle di ke mwen se nan yon katab oswa anyè rele buro. Sa a siy dola se jis konvansyon pou siyifikasyon, tape kòmandman ou isit la. Li nan sa ki rele yon èd memwa, jis pa konvansyon se siy dola. Men, si mwen ale pi devan kounye a, epi klike Antre nan, pa gen anyen sanble yo te ki te pase. Men, sa a aktyèlman yon bon bagay. Mwens nan sa ki ap pase sou ekran ou a, gen plis chans a kòd ou a se yo dwe kòrèk, omwen syntactically. Se konsa, si mwen vle kouri sa a pwogram, ki sa mwen fè? Oke, li sanble ke nan Non default pa konvansyon pou pwogram lè ou pa presize yon non pou pwogram ou se jis a.out. Apre sa, sentaks sa a tou, ou pral jwenn abitye ak anvan lontan. Dot koupe jis vle di, hey, CS50 IDE, kouri yon pwogram ki rele a.out sa a, se andedan anyè mwen ye kounye a. Sa dot vle di anyè aktyèl la. Epitou, n ap wè sa ki lòt sekans sa yo nan karaktè vle di anvan lontan. Se konsa, isit la nou ale, Antre, alo nan lemonn. Apre sa, ou pral avi, ki sa ki te pase? Pa sèlman te fè li enprime alo nan lemonn. Li te tou te deplase nan kurseur nan liy kap vini an. Epi poukisa te sa? Ki sa ki te kòd la ke nou te ekri anvan ki asire ke kurseur a ta ale sou liy vin apre a? Komik bagay sou yon òdinatè se li nan sèlman pral fè literalman sa ou di l 'bay fè. Se konsa, si ou di l 'bay printf hello, vigil, espas, mond, fèmen quote, li nan literalman sèlman pral ekri ak lèt ​​detache karaktè sa yo. Men, mwen te gen sa a karaktè espesyal nan fen, sonje, antislach n nan. Epi sa a, sa asire ke ki karaktè a te ale nan liy nan pwochen nan ekran an. An reyalite, kite m 'ale ak fè sa. Kite m 'ale pi devan epi efase sa a. Koulye a, remake ke nan tèt nan ekran m 'gen nan yon ti kras limyè wouj nan tab la ki endike, hey, ou pa te sove dosye ou. Se konsa, mwen pral ale pi devan ak kontwòl S oswa lòd S, sove dosye a. Koulye a, li goes-- te ale pou yon vèt moment--. Epi, koulye a li nan tounen nan jis ke yo te yon icon fèmen. Si m 'kounye a kouri clanghello.c ankò, Antre nan, dot koupe, a.out, Antre, ou ap wè ke li toujou te travay. Men, li la joui yon ti kras buggy. Dwa koulye a, vorkspas prompt-- mwen, ak Lè sa a ke a an dola siy, ak Lè sa a prompt-- reyèl mwen fè se tout sou liy la menm. Se konsa, sa a sètènman yon ensèk ayestetik, menm si li nan pa reyèlman yon ensèk lojik. Se konsa, mwen ale nan defèt sa mwen jis te fè. Mwen pral relance a.out. Avi Mwen te ajoute nan newline pèsonaj tounen. Mwen te sove dosye a. Se konsa, mwen ale nan relance a.out, and-- dammit, yon ensèk, yon ensèk sa vle di erè. Se konsa, pinèz la se ke menm si Mwen te ajoute antislach n a, re-sove, re-kouri pwogram nan, konpòtman an te menm bagay la. Poukisa ta ki ta dwe ye? Mwen manke yon etap, dwa? Sa etap kle pi bonè te ke ou gen to-- lè ou chanje kòd sous ou, li vire soti tou kouri li nan du a ankò pou ou jwenn nouvo Kòd machin. Ak kòd la machin, zewo yo ak moun yo, yo ale nan dwe prèske ki idantik, men pa parfe sa, paske nou bezwen, nan kou, ke nouvo liy. Se konsa, yo ranje sa a, mwen ale nan bezwen yo relance clanghello.c, antre nan, dot koupe, a.out. Epi, koulye a, alo lemonn yo se tounen nan kote mwen ap atann li yo dwe. Se konsa, sa a se tout bon epi li bon. Men, a.out se yon non bèl estipid pou yon pwogram, menm si li k ap pase yo, pou rezon istorik, nan default-- sa vle di rezilta asanble. Men, kite m 'ale pi devan isit la ak fè sa yon lòt jan. Mwen vle pwogram mond alo mwen ki aktyèlman dwe rele hello. Se konsa, si li te yon icon sou mwen Desktop, li pa ta dwe a.out. Li ta ka rele hello. Se konsa, yo fè sa, li vire soti ki rezone, tankou anpil pwogram, sipòte liy lòd agiman, oswa drapo, oswa switch, ki tou senpleman enfliyanse konpòtman li yo. Espesyalman, rezone sipòte yon o priz drapo, ki Lè sa a pran yon mo dezyèm fwa. Nan ka sa a, mwen pral abitrèman, men rezonab, rele l 'hello. Men, mwen te kapab rele l 'anyen Mwen vle, eksepte a.out, ki ta dwe olye san konte pwen an. Lè sa a, jis presize non an nan dosye a mwen vle konpile. Se konsa, kounye menm si nan kòmansman an kòmandman an mwen toujou gen rezone, nan fen yo lòd, ki Mwen toujou gen fichier a, Mwen kounye a gen sa yo liy lòd agiman, sa yo drapo ki ap di, oh, nan chemen an, pwodiksyon-o, yon dosye rele hello, pa a.out nan default. Se konsa, si mwen frape Antre kounye a, pa gen anyen sanble yo te ki te pase. Epi, ankò, kounye a mwen kapab fè dot koupe hello. Se konsa, li pwogram nan menm. zewo yo ak moun yo yo ki idantik nan fen a nan jounen an. Men, yo ap an de diferan a.out files--, ki se vèsyon an premye ak jis tankou moun fou nonmen non li, e kounye a, hello, ki se yon anpil plis Non impérieux pou yon pwogram. Men, onètman, se mwen menm pa janm ale nan sonje sa a ankò, e ankò, e ankò. Epi, aktyèlman, menm jan nou ekri pwogram pi konplike, kòmandman yo w ap pral fè yo ekri yo ale nan jwenn menm plis konplike toujou. Se konsa, pa enkyete. Li sanble ke moun anvan nou te reyalize yo menm tou te gen egzak pwoblèm sa a menm. Yo menm tou pa t 'jwi gen tape san patipri lontan, kòmandman Esoteric, se pou kont li sonje yo. Se konsa, moun devan nou te fè lòt pwogram ki fè li pi fasil yo konpile lojisyèl ou. Epi, tout bon, yon sèl sa yo se pwogram yo rele Fè. Se konsa, mwen pral ale pi devan epi fè sa a. Mwen pral defèt tou sa m ' jis te fè nan fason ki anba la a. Kite m 'tape LS. Apre sa, ou pral avi twa things-- a.out, ak yon etwal, alo ak yon etwal, ak hello.c. Èspere ke, sa a ta dwe gen yon ti kras entwisyon, tèl degre ke pi bonè te gen pa gen anyen nan sa a vorkspas. Pa t 'gen ke mwen te gen kreye jouk nou te kòmanse klas la. Apre sa, mwen kreye hello.c. Mwen Lè sa a konpile li, li rele l 'a.out. Lè sa a, mwen konpile l 'ankò yon ti kras yon fason diferan li rele l 'hello. Se konsa, mwen gen twa dosye nan anyè sa a, nan dosye sa a yo rele buro. Koulye a, mwen ka wè ke kòm byen si mwen rale soti aktyèlman. Si m 'rale soti isit la ak gade nan ki men dwat tèt kwen, kòm te pwomèt bò gòch la bò men nan ekran ou se toujou pral montre w sa ki nan nan kont ou, sa ki nan andedan nan CS50 IDE. Apre sa, se twa dosye a. Se konsa, mwen vle debarase m de a.out ak hello. Ak jan ou ta ka imajine entwitif, ou te kapab sòt nan kontwòl klike sou oswa dwa klike sou sa a. Ak meni sa a ti kras Pops leve. Ou ka telechaje dosye a, kouri li, preview li, rafrechi, chanje non, oswa sa ki pa. Apre sa, mwen te kapab jis efase, epi li ta ale. Men, kite a fè bagay sa yo ak yon lòd liy pou kounye a, se konsa yo jwenn konfòtab ak sa a, ak fè sa ki annapre yo. Mwen pral ale pi devan epi retire a.out lè ou tape literalman rma.out. Li sanble soti, yo lòd, ki pou retire oswa efase yon bagay, se pa retire oswa efase. Li nan plis suksen RM, jis pou konsève pou ou kèk frap, ak frape Antre nan. Koulye a, nou ap ale nan yon ti jan cryptically retire regilye a.out dosye-a. Mwen pa vrèman konnen ki sa yon iregilye dosye ta dwe ankò. Men, mwen vle retire li. Se konsa, mwen ale nan tape y pou wi. Ou mwen te kapab tape li soti, ak frape Antre nan. Epi, ankò, pa gen anyen sanble rive. Men, se sa ki, jeneralman, yon bon bagay. Si m 'tape LS tan sa a, sa pou m 'wè? Nou swete ke, jis alo ak hello.c. Koulye a, kòm yon sou kote, ou pral remake zetwal sa a, asterisk, sa a, se nan fen an nan pwogram m 'yo. Apre sa, yo ap tou ki montre moute nan vèt. Sa se jis fason CS50 IDE a nan cluing nou antre nan lefèt ki sa a pa sous kòd. Sa a yon ègzèkutabl, se yon ègzekutabl pwogram ki ou ka aktyèlman kouri pa fè dot koupe, ak Lè sa li a non. Koulye a, kite m 'ale pi devan epi retire sa a, rm hello, Antre, retire regilye ranpli hello, wi. Epi, koulye a si mwen tape LS, nou ap tounen nan hello.c. Eseye pa efase ou aktyèl kòd sous. Menm si gen yo se karakteristik bati nan CS50 IDE kote ou ka ale nan istwa revizyon ou ak remonte nan tan si ou aksidantèlman efase yon bagay, fè dwe janm bliye jan tankou pou chak envit sa yo repons lan se wi oswa ki pa gen, nan sa ou aktyèlman vle fè. Lè m'a moute sou tèt la kite kwen men isit la, tout sa ki rete se hello.c. Se konsa, gen nan grap rezen lòt kòmandman ke ou ka egzekite nan mond lan nan Linux, youn nan ki se, ankò, Fè. E nou pral yo fè pwogram mwen an kounye a jan sa a. Olye pou yo fè sonnen, olye pou yo fè sonnen-o, Mwen pral tou senpleman literalman tape, fè hello. Epi, koulye a remake, se mwen menm pa sezisman fè hello.c. Mwen tape fè hello. Ak pwogram sa a Fè ki vini ak CS50 IDE, ak plis ankò jeneralman ak Linux, se yon pwogram sa a, se pral fè yon pwogram ki rele Hello. Epi, se k ap pase yo asime, pa konvansyon, ke si ka pwogram sa a dwe fèt, li pral yo dwe te fè soti nan yon sous Kòd dosye mete fen nan dot c, hello.c. Se konsa, si mwen frape Antre kounye a, remake ke yo lòd, ki ki vin egzekite se aktyèlman menm ankò anvan pase anvan. Epi sa a, paske nou te prekonfigure IDE CS50 gen kèk karakteristik adisyonèl bati nan ki nou pa bezwen jis ankò, men byen vit pral. Men, bagay la kle nan reyalize se koulye a, mwen gen yon pwogram Hello. Si m 'tape LS ankò, mwen gen yon pwogram hello. Apre sa, mwen ka kouri l 'ak dot koupe a.out, non, paske pwen an antye nan sa a fè egzèsis te dot alo koupe. Epi, koulye a mwen gen pwogram mond alo m 'yo. Se konsa, k ap deplase pi devan, nou ap prèske toujou jis ale nan konpile pwogram nou lè l sèvi avèk Fè lan lòd. Lè sa a, nou ap ale nan kouri yo pa dot koupe, ak non pwogram nan. Men, reyalize sa Asire ap fè pou ou, se li pa se tèt li yon du. Se jis nan yon pwogram konvenyans ki konnen ki jan yo deklanche yon du nan kouri pou ke ou tèt ou ka sèvi ak li. Ki lòt kòmandman egziste nan Linux, ak nan vire CS50 IDE a? Nou pral byento wè ke gen nan yon CD lòd, Chanje Anyè. Sa a pèmèt ou nan koòdone liy lòd ou pou avanse pou pi pou pi devan, ak tounen lakay ou, epi louvri moute dosye diferan san yo pa itilize sourit ou. LS nou te wè, ki vle di pou lis dosye yo nan anyè aktyèl la. Fè Dir, ou ka pwobableman kòmanse dégager sa sa yo vle di now-- fè anyè, si ou vle kreye yon katab. RM pou retire, RM Dir pou retire anyè ak sa yo, ankò, yo liy lan bay lòd ekivalan nan sa ou ta ka fè nan CS50 IDE ak sourit ou. Men, ou pral byento jwenn ke pafwa li nan jis yon anpil pi vit fè bagay sa yo ak yon klavye, epi finalman yon anpil plis pouvwa anpil. Men, li la difisil yo diskite ke anyen nou te toujou ap fè byen lwen tèlman se tout sa ki pwisan, lè tout nou ve yo te di se, se alo nan lemonn. Epi, an reyalite, mwen dur nan Mo alo mond nan pwogram m 'yo. Pa gen okenn dinamik ankò. Grafouyen te yon lòd pou nan grandè plis enteresan semèn pase a. Se konsa, kite a jwenn la. Se pou nou pran yon etap nan direksyon ki pa fason pou kèk nan fonksyon sa yo. Se konsa, pa sèlman C vini ak printf, grap rezen lòt fonksyon kèk nan yo ki nou pral wè sou tan, li pa fè sa fè l 'tout sa ki fasil dwa soti nan pòtay lavil la nan jwenn opinyon itilizatè. An reyalite, youn nan pwen fèb yo nan lang tankou C, e menm Java e ankò lòt moun, se ke li pa fè sa fè li fasil yo jis jwenn bagay sa yo tankou nonm antye relatif soti nan itilizatè, oswa strings, mo, ak fraz, kite bagay sa yo pou kont li tankou k ap flote valè pwen, oswa nimewo reyèl ak pwen desimal, ak reyèlman nimewo lontan, menm jan nou pral byento wè. Se konsa, lis sa a nan fonksyon isit la, sa yo se tankou moso Scratch devinèt lòt ke nou te pre-enstale nan CS50 IDE ke nou pral sèvi ak pou yon semèn kòm wou fòmasyon nan kalite, ak evantyèlman pran yo koupe, epi gade anba kapo a, petèt, nan ki jan bagay sa yo yo nan faz egzekisyon. Men, fè sa, se pou yo aktyèlman ekri yon pwogram. Kite m 'ale pi devan kounye a. Men, mwen pral yo kreye yon nouvo ranpli pa klike sa a plis ti kras, epi klike Nouvo File. Mwen pral pou konsève pou sa a pwochen yon sèl kòm, se pou yo di, string.c, paske mwen vle yo jwe avèk strings. Ak tout kòd nan C se jis yon sekans nan karaktè. Se konsa, kounye a kite a ale pi devan ak fè sa ki annapre yo. Mete estanda IO.h-- ak li vire soti estanda IO, IO jis vle di opinyon ak pwodiksyon. Se konsa, li sanble ke liy sa a isit la se sa se vwazen an nou itilize printf. Printf, nan kou, pwodui pwodiksyon. Se konsa, nan lòd yo sèvi ak printf, li vire soti ou gen gen liy sa a nan kòd nan tèt la nan dosye ou. Epitou, n ap tounen vin jwenn sa ki vrèman vle di anvan lontan. Li sanble ke nan nenpòt pwogram C mwen ekri, Mwen te gen yo kòmanse l 'ak Kòd ki sanble tankou sa a. Men, ou pral remake CS50 IDE, ak lòt devlopman entegre anviwònman tankou li, yo ale nan eseye pi byen kòm yo ka fini panse ou yo. An reyalite, yon ti moman de sa si mwen defèt ki sa mwen jis te fè, mwen frape Antre. Mwen Lè sa a frape louvri Curly atèl, frape Antre ankò. Epi, se fini te panse m 'yo. Li te ban m 'yon nouvo liy, dantle pa mwens pou bèl rezon stylistic nou pral wè. Lè sa a, li otomatikman te ban m ' ki atèl Curly a fini te panse m 'yo. Koulye a, li fè sa pa toujou devine ki sa ou vle fè. Men, nan gwo pati, li fè sa sove ou kèk frap. Se konsa, yon ti moman de sa, nou kouri program-- sa a hello, mond, ak Lè sa a konpile li, ak Lè sa a kouri li. Men, gen nan pa gen dynamism isit la. E si nou te vle fè yon bagay diferan? Oke, sa si mwen te vle aktyèlman jwenn yon fisèl soti nan itilizatè a? Mwen pral sèvi ak yon moso devinèt rele egzakteman that-- jwenn fisèl. Vire soti nan C ke lè ou pa vle bay opinyon nan yon moso devinèt, oswa plis byen nan yon fonksyon, ou literalman jis fè louvri parantèz, fèmen parantèz. Se konsa, li tankou si gen nan pa gen okenn bwat blan nan tape nan. Blòk la di anvan te gen yon ti bwat blan. Nou pa gen ki bwat blan kounye a. Men, lè mwen rele jwenn fisèl, mwen vle mete rezilta a yon kote. Se konsa, yon paradigm trè komen nan C se rele yon fonksyon, tankou jwenn fisèl isit la, ak Lè sa a magazen valè retounen li yo. Li nan rezilta a nan li yo efò nan yon bagay. Ak sa ki nan konstwi nan pwogram, si wi ou non nan grafouyen oswa kounye a C, ke nou ka itilize yo aktyèlman magazen yon bagay? Rele l 'yon varyab, dwa? Apre sa, nan grafouyen, nou pa fè sa vrèman swen sa ki te ale nan varyab. Men, nan ka sa a, nou aktyèlman fè. Mwen pral di fisèl. Lè sa a, mwen te kapab rele sa a anyen mwen vle. Mwen pral rele li non, vin jwenn fisèl. Epi, koulye a menm si w ap yon ti kras nouvo nan sa a, remake ke mwen manke kèk detay. Mwen bliye yon semi-kolon. Mwen bezwen fini te panse sa a. Se konsa, mwen pral pou avanse pou pi kurseur m 'yo, ak frape semi-kolon a. Ak sa ki te Mwen jis fè konsa? Nan liy sa a nan kòd, nimewo 5 nan moman sa a, M ap rele jwenn fisèl ki pa gen okenn entrain. Se konsa, gen nan pa gen blan ti kras bwat tankou blòk la Save te genyen an. Mwen jis di, hey, òdinatè, jwenn m 'yon fisèl. Siyen an egal se pa reyèlman yon siy egal, se pou chak. Li nan plasman an operatè, ki vle di, hey, òdinatè, deplase valè nan de dwat la nan men bò gòch la. Ak nan bò gòch la, mwen gen sa ki annapre yo. Hey, òdinatè, ban m 'yon string-- yon sekans nan karaktè. W'a envite ki Non fisèl. Apre sa, mwen pa menm gen yo rele li Non. Mwen te kapab rele l ', konvansyonèl, yon bagay tankou S, anpil tankou nou itilize mwen nan rele varyab la mwen. Men, koulye a, mwen bezwen fè yon bagay ak li. Li ta dwe trè estipid yo eseye konpile kòd sa a, kouri pwogram sa a, menm si Mwen ap resevwa yon fisèl, paske li nan toujou jis pral di alo nan lemonn. Men, sa ki si mwen vle chanje sa a. Poukisa nou pa mwen fè sa? Pousantaj an, vigil la. Lè sa a se yon ti kras skre toujou. Se konsa, kite m 'fè varyab mwen plis klè. Kite m 'non sa a Non varyab. Li kite yo wè si nou pa ka toumante apa sa k ap pase isit la. Se konsa, sou liy senk, Mwen ap resevwa yon kòd. Apre sa, mwen estoke ki fisèl, tou sa te itilizatè a tape nan nan klavye li, nan yon varyab rele Non. Epi li vire soti ki printf pa fè sa jis pran yon sèl agiman nan doub quotes, yon sèl D 'nan quotes doub. Li ka pran de, oswa twa, oswa plis, sa yo ki dezyèm lan, oswa yon twazyèm, oswa katriyèm, yo tout non yo nan varyab, oswa espesyalman valè, ke ou vle ploge nan, dynamique, ki fisèl nan quotes. Nan lòt mo, ki sa ta dwe mal ak sa a? Si m 'jis di alo non, antislach n, sove dosye mwen, konpile kòd m ', , li kouri al sa a, sa ki ka rive? Li nan jis pral di, alo non, literalman N-A-M-E, ki se kalite estipid paske li nan pa diferan de nan lemonn. Se konsa, anyen nan quotes se sa literalman vin enprime. Se konsa, si mwen vle gen yon kontneur a, Mwen aktyèlman bezwen sèvi ak kèk sentaks espesyal. Epi li vire soti si w li nan dokiman pou fonksyon an printf, li ap di w ke si ou itilize pousan an, ou ka ranplase yon valè jan sa a. Apre yon vigil apre sa doub quote, ou tou senpleman ekri non an nan la varyab ke ou vle ploge nan nan ki fòma kòd, oswa fòma Dvi, pousan a pou strings. Epi, koulye a si mwen te sove dosye mwen, M 'ale tounen desann nan tèminal m' yo. Apre sa, mwen tape Fè chèn, paske, ankò, non an nan sa a dosye ki mwen te chwazi anvan se string.c. Se konsa, mwen pral di Fè chèn, antre nan. Oh mwen bonte, gade nan tout nan erè sa yo nou te fè deja. Lè sa a is-- sa, sa a se reyèlman tankou yon sis, sèt pwogram liy? Se konsa, sa a se kote li kapab trè byen vit jwenn akablan yo. fenèt tèminal sa a gen kounye a jis regurgitated yon nimewo gwo mesaj erè. Se vre wi, mwen pa gen plis erè mesaj pase mwen gen liy nan kòd. Se konsa, sa k ap pase? Oke, estrateji ki pi bon fè nenpòt lè ou rankontre yon akablan lis nan erè tankou sa yo, se woulo liv tounen, gade pou yo lòd, ki ou jis kouri, ki nan ka mwen an se fè fisèl. Gade nan ki sa fè te fè, e ke sa a ki lontan lòd rezone, pa gen kontra gwo a. Men, wouj la ki mal. Green ap eseye yo dwe dou ak itil. Men, li la toujou move, nan ka sa a. Men, kote se li move? String.c, liy senk, pèsonaj senk. Se konsa, sa a se jis konvansyon komen. Yon bagay kolon yon bagay vle di Nimewo liy ak nimewo karaktè. Erè, pou sèvi ak sekrè idantifyan fisèl. Did you mean estanda nan? Se konsa, malerezman, rezone ap eseye yo dwe itil. Men, li la sa ki mal, nan ka sa a. Non, rezone, mwen pa t 'vle di estanda IO. Mwen vle di ke sou liy yon sèl, wi. Men, liy senk se yon sèl sa a isit la. Apre sa, rezone pa fè sa konprann S-T-R-I-N-G. Se yon sekrè idantifyan, se yon mo li jis pa janm te wè anvan. Epi sa a, paske C, lang nan nou ap ekri kòd nan kounye a, pa gen varyab rele strings. Li pa fè sa, pa default, sipò yon bagay yo rele yon kòd. Sa se yon moso CS50 nan jagon, men trè konvansyonèl yo. Men, mwen ka ranje sa a jan sa a. Si m 'ajoute yon sèl liy nan kòd nan tèt la nan pwogram sa a, gen ladan CS50.h, ki se yon lòt dosye yon kote andedan nan CS50 IDE, yon kote sou kondwi a difisil, se konsa pale, nan sistèm nan fonksyone Ubuntu ke mwen kouri, ki se dosye a sa a, se pral moutre opere nan sistèm ki sa yon fisèl se, jis tankou estanda io.h se dosye a nan sistèm nan fonksyone sa a, se pral moutre li sa printf se. Vreman vre, nou ta gen vinn yon mesaj trè menm jan si IO te admèt estanda Io.h ak eseye sèvi ak printf. Se konsa, mwen pral ale pi devan ak jis pran kontwòl L klè ekran m 'yo. Oswa ou ka tape klè epi li pral jis klè fenèt la tèminal. Men, ou ka toujou woulo liv tounen nan tan. Apre sa, mwen ale nan relance Fè chèn. Travèse dwèt mwen tan sa a, Antre nan. Oh Bondye mwen, li te travay. li montre m 'yon lòd lontan skre ke se sa ki Asire pwodwi atravè rezone, men pa gen okenn mesaj erè. Se konsa, reyalize, menm si ou ta ka jwenn konplètman akable ak nan kantite mesaj erè, li jis ta ka sa a kaskad anmèdan efè, kote rezone pa konprann yon sèl bagay, ki vle di li Lè sa a, pa konprann pawòl Bondye a kap vini an, oswa liy kap vini an. Se konsa, li jis trangle sou kòd ou a. Men, ranje a ta ka senp. Se konsa, toujou konsantre sou la trè premye liy nan pwodiksyon. Men, si ou pa fè sa konprann li, jis gade pou mo kle ke sa ta kapab endikasyon, ak nimewo a liy, ak karaktè a, kote ki erè te vle di. Koulye a, kite m 'ale pi devan epi tape dot koupe, fisèl, antre. Hm, li pa nan di alo anyen. Poukisa? Oke, sonje, ki kote li kouri? Li nan pwobableman kole nan moman sa a nan yon bouk, si ou pral, sou liy sis, paske Jwenn fisèl pa konsepsyon, ekri pa anplwaye CS50, se literalman vle di ke yo jis chita gen ap tann, ak ap tann, ak ap tann pou yon kòd. Tout sa nou vle di pa fisèl se opinyon moun. Se konsa, ou konnen ki sa? Kite m 'ale pi devan. Epi jis sou yon kapris, kite m ' tape non mwen, David, antre nan. Koulye a, mwen gen yon pwogram plis dinamik. Li te di ke, alo David. Si m 'ale pi devan epi kouri sa a ankò, kite m 'eseye di Zamila non, antre. Epi, koulye a nou gen yon pwogram dinamik. Mwen pa t 'difisil kode nan lemonn. Mwen pa t 'difisil kode non, oswa David, oswa Zamila. Kounye a li nan pi plis tankou pwogram yo nou konnen, kote si li pran D ', li pwodwi pwodiksyon ti kras diferan. Koulye a, sa a se pa pi bon an eksperyans itilizatè, oswa uks. Mwen kouri pwogram nan. Mwen pa konnen sa m ap sipoze fè, sof si mwen aktyèlman gade nan oswa sonje kòd la sous. Se konsa, kite a fè itilizatè a eksperyans yon ti kras pi byen ak pi senp la bagay sa yo. Kite m 'ale tounen nan sa a pwogram, epi tou senpleman di printf. Ak kite m 'ale pi devan epi di non, kolon, ak yon espas, ak lè sa a yon semi-kolon. Epi jis pou anvwaye, pa gen repèkisyon n. Epi sa a, ekspre, paske mwen pa vle èd memwa a pou avanse pou pi nan liy kap vini an. Mwen vle, olye de sa, fè sa, fè fisèl compile kòd m 'nan nouvo machin Kòd dot koupe fisèl. Ah, sa a se pi bèl pase. Koulye a, mwen aktyèlman konnen ki sa òdinatè a vle m 'fè, bay li yon non. Se konsa, mwen pral ale pi devan ak kalite nan Rob, antre nan, ak hello, Rob. Se konsa, reyalize, sa a se toujou, nan fen nan jounen an, se sèlman yon pwogram nèf liy. Men, nou te pran etap ti bebe sa yo. Nou te ekri yon sèl liy ak ki nou te yo konnen yo, printf, alo nan lemonn. Apre sa, nou undid yon ti kras nan sa. Apre sa, nou aktyèlman itilize jwenn fisèl. Apre sa, nou anlè ke valè nan yon varyab. Lè sa a, nou te ale pi devan epi amelyore li plis ak yon liy twazyèm. Lè sa a pwosesis repete nan ekri lojisyèl se vrèman kle. Nan CS50, ak nan lavi an jeneral, ou ta dwe jeneralman yo pa chita, gen yon pwogram nan tèt ou, epi eseye ekri bagay la antye modi tout nan yon fwa. Li pral, inevitableman, rezilta nan fason plis erè pase nou tèt nou wè isit la. Menm mwen menm, nan jou sa a, toujou ap fè lòt erè estipid, yo aktyèlman pi rèd erè ki pi difisil eseye figi konnen. Men, ou pral fè plis erè plis nan liy nan kòd ou ekri tout nan yon fwa. Se konsa, sa a pratik nan, ekri yon ti kras nan Kòd ke w ap konfòtab ak, konpile li, kouri li, tès li plis jeneralman, lè sa a deplase on-- Se konsa, jis tankou nou te kenbe stratifikasyon ak stratifikasyon semèn pase a, bati soti nan yon bagay trè senp yo yon bagay ki pi konplèks, fè menm bagay la isit la. pa chita, epi eseye ekri yon pwoblèm tout antye. Aktyèlman pran mezi ti bebe sa yo. Koulye a, strings yo se pa tout ki itil pou tèt yo. Nou ta aktyèlman, depreferans, tankou yo gen yon lòt bagay nan bwat zouti nou an. Se konsa nou aktyèlman fè egzakteman sa. Kite m 'ale pi devan kounye a epi yo fwe moute yon pwogram ti kras diferan. Epitou, n ap rele int.c sa a, pou nonb antye relatif. Mwen pral, Menm jan an tou, gen ladan CS550.h. Mwen pral genyen ladan yo estanda IO. Epi sa k ap pase yo dwe trè komen nan premye jou sa yo kèk nan klas la. Apre sa, mwen mwen pral pare tèt mwen ak yon fonksyon prensipal la. Epi, koulye a olye pou yo ap resevwa yon fisèl, kite a ale pi devan epi pou yo jwenn yon int. Se pou nou rele l 'mwen, ak rele li jwenn int, fèmen paran, semi-kolon. Epi, koulye a kite a fè yon bagay ak li, printf. Se pou nou di yon bagay tankou hello, antislach n, vigil mwen. Se konsa, mwen bèl anpil miman sa m 'te jis yon ti moman de sa. Mwen gen yon kontneur isit la. Mwen te vigil mwen isit la, paske mwen vle yo ploge m nan ki kontneur. Se konsa, kite yo ale pi devan epi eseye konpile pwogram sa a. Se dosye a rele int.c. Se konsa, mwen pral di, fè int, antre. Oh Bondye mwen, men gen okenn kontra gwo, dwa? Genyen yon erè. Genyen yon erè Massachusetts Institute of Technology isit la sa yo ki pwogram lan pa kapab dwe konpile andedan int.c, liy sèt, pèsonaj 27, fòma erè espesifye kalite Char zetwal, tou sa se sa ki. Men, kalite a agiman se int. Se konsa, isit la, tou, nou ap pa pral to-- menm si jodi a se yon anpil nan materyèl, nou ap ale nan sitèlman chaj ou ak absoliman tout karakteristik nan C, ak pwogramasyon plis jeneralman, nan jis premye semèn sa yo kèk. Se konsa, gen nan souvan pral fè jagon ak ki ou pa yo konnen yo. Epi, an reyalite, Char zetwal se yon bagay nou ap ale nan tounen vin jwenn nan yon semèn oswa tan de la. Men, pou kounye a, kite a wè si nou kapab analizan mo ki yo konnen yo. Formats-- se konsa nou tande fòma Dvi a, kòd fòma anvan. Sa a yo konnen yo. Type-- men agiman an gen kalite int. Tann yon minit, mwen se yon int. Petèt pousan nan aktyèlman gen kèk siyifikasyon defini. Epi, tout bon, li fè sa. Yon nonb antye relatif, si ou vle printf pran plas li, ou gen aktyèlman yo sèvi ak yon diferan fòma Dvi. Epi ou pa ta konnen sa a sof si yon moun di nou, oswa ou te fè l 'devan. Men, pousan mwen se sa ki ka souvan itilize nan printf pou rakorde nan yon nonb antye relatif. Ou kapab tou itilize pousan d pou yon nonb antye relatif desimal. Men, mwen se bèl ak senp isit la. Se konsa, nou pral ale ak sa. Koulye a, kite m 'ale pi devan epi relance fè int, Antre nan. Sa a bon, pa gen okenn erè. Dot koupe int-- OK, move eksperyans itilizatè, paske mwen pa te di tèt mwen Kisa pou fe. Men, sa a amann. Mwen pwan sou byen vit. Epi, koulye a kite m 'ale pi devan epi tape nan David, OK, Zamila, Rob. OK, se konsa sa a se yon bon bagay. Tan sa a, mwen lè l sèvi avèk yon fonksyon, yon moso devinèt, rele jwenn Int. Epi li vire out-- epi nou pral wè pita sa a nan term-- la te anplwaye nan CS50 aplike jwenn fisèl nan yon fason ke li pral sèlman fizikman jwenn yon fisèl pou ou. Li te aplike jwenn int nan yon fason ke li pral sèlman jwenn yon nonb antye relatif pou ou. Men, si ou, moun lan, pa kolabore, li nan literalman jis ale nan di rekoumanse, rekoumanse, rekoumanse, literalman chita la loupin, jouk ou oblijra ak kèk nimewo majik, tankou 50, ak alo 50. Oswa si nou kouri sa a ankò ak kalite nan 42, alo 42. Se konsa, fonksyon an jwenn int andedan nan ki moso devinèt se ase lojik, ase panse, eseye figi konnen, ki sa ki yon mo? Ak sa ki se yon nimewo? Se sèlman aksepte, finalman, chif yo. Se konsa, li sanble ke sa a se pa tout sa ki espresif. byen lwen tèlman. Se konsa, ye, dènye fwa nou te ale trè byen vit nan mete ann aplikasyon jwèt, ak animasyon, ak travay atistik nan grafonyen moun. Ak isit la, nou ap ke yo te kontni ak mond hello, ak alo 50. Li nan pa tout sa ki enspire. Epi, tout bon, sa yo premye kèk egzanp pral pran kèk tan nan ranp moute nan eksitasyon. Men, nou gen pou pi plis kontwole kounye a, an reyalite. Apre sa, nou ap ale nan trè byen vit kòmanse stratifikasyon sou tèt primitif debaz sa yo. Men, anvan, se pou yo konprann sa limit yo ye. An reyalite, youn nan bagay ki Grafouyen pa fè sa fasil se pou nou fè se reyèlman gade anba kapo a, epi mwen konprann ki sa yon òdinatè se, ki sa li ka fè, ak sa limit li yo ye. Epi, tout bon, ki mank de konpreyansyon, ki kapab, ki dire lontan ka mennen nan pwòp ekri mistakes-- nou an pinèz, ekri lojisyèl anksyeu ki vin rache nan kèk fason. Se konsa, kite a pran kèk etap nan direksyon konprann sa a yon ti kras pi byen pa fason pou, di, egzanp sa a. Mwen pral ale pi devan epi aplike reyèl rapid yon pwogram ki rele sèpan. Tankou, kite a ajoute kèk nimewo ansanm. Men, mwen pral nan kòd kèk kwen isit la, ak jis kopi ak keratin kote mwen te ye anvan an, jis pou nou ka jwenn pral pi bonè. Se konsa, koulye a, mwen te gen kòmanse yo debaz nan yon pwogram ki rele sèpan. Li kite yo ale pi devan epi fè sa. Mwen pral ale pi devan epi di, intx vin jwenn int. Epi ou konnen ki sa? Se pou yo fè yon eksperyans itilizatè pi bon. Se konsa, kite yo jis di x se, ak efikasite pouse itilizatè a ban nou x. Lè sa a, kite m 'ale pi devan epi di, printf ki jan sou y se, fwa sa a tann de valè soti nan itilizatè a. Lè sa a, kite yo jis ale pi devan epi di, printf, sòm total la nan x ak y se. Epi kounyeya, m pa vle fè pousan an. Mwen vle fè pousan mwen, antislach n, ak Lè sa a ploge nan valè sòm. Se konsa, kouman mwen ka ale sou fè sa a? Ou konnen ki sa? Mwen konnen ki jan yo sèvi ak varyab. Kite m 'jis deklare yon nouvo, int z. Apre sa, mwen pral pran yon devine isit la. Si gen siy egal nan sa a lang, petèt mwen jis kapab fè x plis y, toutotan m'a fini mwen te panse ak yon semi-kolon? Koulye a, mwen ka ale tounen desann isit la, ploge nan z, fini te panse sa a ak yon semi-kolon. Li kite yo wè kounye a, si sa yo sekans nan lines-- x se jwenn int. Y se jwenn int. Ajoute x ak y, magazen valè a nan z- se konsa, ankò, sonje siy ki egal se pa egal-ego. Li nan plasman de dwat a gòch. Li kite yo enprime soti ke sòm total la nan x ak y se pa literalman z, men sa ki nan andedan nan z. Se konsa, kite a fè sèpan - bèl, pa gen erè moman sa a. Dot koupe sèpan, antre nan, x a pwal 1. Y a pwal 2. Apre sa, sòm total la nan x ak y se 3. Se poutèt sa se tout bon epi li bon. Se konsa, ou ta imajine ke matematik ta dwe travay nan yon pwogram tankou sa a. Men, ou konnen ki sa? Se varyab sa a, liy 12, menm nesesè? Ou pa bezwen jwenn nan abitid la nan jis estoke bagay sa yo nan varyab jis paske ou kapab. Epi, an reyalite, li nan jeneralman konsidere kòm move konsepsyon si ou ap kreye yon varyab, ki rele z nan ka sa a, estoke yon bagay nan li, ak Lè sa a imedyatman lè l sèvi avèk li, men pa janm ankò. Poukisa bay yon bagay yon non tankou z si w ap literalman pral sèvi ak ki bagay yon sèl fwa, e konsa amon nan kote ou te kreye l 'nan plas an premye, konsa fèmen nan tèm de liy nan kòd? Se konsa, ou konnen ki sa? Li sanble ke C se trè fleksib. Si m 'aktyèlman vle ploge nan valè isit la, Mwen pa bezwen deklare yon varyab nouvo. Mwen te kapab jis ploge nan x plis y, paske C konprann aritmetik, ak operatè matematik. Se konsa, mwen ka senpleman di, fè matematik sa a, x plis y, tou sa valè sa yo ye a, ploge ki kapab lakòz nan nonb antye relatif nan ki fisèl. Se konsa, sa a ta kapab, menm si sèlman yon sèl liy ki pi kout, yon konsepsyon pi bon, yon pwogram pi bon, paske gen nan mwens Kòd, Se poutèt sa mwens pou mwen pou m konprann. Epitou, se tou jis cleaner, tèl degre ke nou pa entwodwi nouvo mo, senbòl nouvo, tankou z, menm si yo pa fè sa vrèman sèvi anpil nan yon rezon. Malerezman, matematik se pa tout sa ki pafwa ka fè konfyans. Se pou nou ale pi devan epi fè sa. Mwen pral ale pi devan kounye a epi yo fè sa ki annapre yo. Se pou yo fè printf, pousan mwen, plis pousan mwen lan va sèvi pousan mwen, antislach n. Apre sa, mwen pral fè xyx sa a men plis y. Se konsa, mwen jis ale nan reyekri sa a yon ti kras diferan isit la. Kite m 'jis fè yon chèk saniti rapid. Yon fwa ankò, se pou yo pa jwenn devan yo nan tèt nou. Fè koulevr, dot koupe sèpan. x se 1, y se 2, 1 plis 2 se 3. Se poutèt sa se bon. Men, kite a konplike sa a kounye a yon ti jan, ak kreye yon dosye nouvo. Mwen pral rele yon sèl sa a, di, antye, pliryèl pou nonm antye relatif. Kite m 'kòmanse kote mwen te yon ti moman de sa. Men koulye a, se pou yo fè yon kèk liy lòt. Kite m 'ale pi devan epi fè sa ki annapre yo, printf, pousan mwen, mwens pousan mwen, se pousan mwen, vigil x, vigil Yx mwens y. Se konsa, mwen fè yon ti kras diferan matematik la. Se pou yo fè yon lòt. Se konsa, pousan mwen fwa pousan mwen se pousan mwen, antislach n. Se pou nou ploge nan x, ak y, ak x fwa y. Nou pral sèvi ak asterisk la sou òdinatè w lan pou fwa. Ou pa sèvi ak x. x se yon non varyab isit la. Ou sèvi ak zetwal la pou miltiplikasyon. Se pou yo fè yon sèl plis. Printf pousan mwen, divize pa pousan mwen, se pousan mwen, antislach n. xy divize pa y-- se konsa ou itilize koupe a pi devan nan C fè divizyon. Li kite yo fè yon sèl ak lòt. Rès pousan mwen, divize pa pousan mwen, se pousan mwen. xy-- e kounye a, rès se sa ki rete yo. Lè ou eseye divize yon denominatè nan yon nimeratè, konbyen lajan ki rete sou ki ou pa t 'kapab divize soti? Se konsa, gen se pa reyèlman, nesesèman, yon senbòl nou te yo itilize nan lekòl klas yo pou sa. Men, gen nan C. Ou kapab di x modulo y, kote sa a siyen pousan nan sa a context-- konfizyon lè w ap andedan nan quotes yo doub, andedan nan printf, pousan se itilize kòm Dvi a fòma. Lè ou sèvi ak pousan deyò nan ke nan yon ekspresyon matematik, li nan operatè a modulo pou modilè arithmetic-- pou rezon nou an isit la, jis vle di, ki sa ki la rès nan x divize pa y? Se konsa, x divize pa y se x koupe y. Ki sa ki nan rès la nan x divize pa y? Li nan x mod y, kòm yon pwogramè ta ka di. Se konsa, si mwen te fè pa gen okenn erè isit la, kite m ' ale pi devan epi fè antye, pliryèl, bèl, ak dot koupe antye. Li kite yo ale pi devan epi fè, se pou yo di, 1, 10. Tout dwa, 1 plis 10 se 11, chèk la. 1 mwens 10 se negatif 9, chèk la. 1 fwa 10 se 10, chèk la. 1 divize pa 10 is-- OK, nou pral sote ke yon moun. Rès nan 1 divize pa 10 se 1. Sa a kòrèk. Men, gen nan yon ensèk nan isit la. Se konsa, yon sèl la mwen mete m ' men sou, pa kòrèk. Mwen vle di, li nan fèmen nan 0. 1 divize pa 10, ou konnen, si nou ap koupe kèk kwen, asire w, li nan zewo. Men, li ta dwe reyèlman gen 1/10, 0.1, oswa 0.10, 0,1000, oswa pou fè. Li pa ta dwe reyèlman gen zewo. Oke, li sanble ke òdinatè a se fè literalman sa nou rakonte l 'bay fè. N ap fè matematik tankou x divize pa y. Ak tou de x ak y, pou chak liy ki nan kòd pi bonè, yo nonm antye relatif. Anplis, sou liy 15, nou se di printf, hey, printf ploge nan yon nonb antye relatif, ploge nan yon nonb antye relatif, ploge nan yon integer-- espesyalman x, ak Lè sa a y, ak Lè sa a x divize pa y. x ak y yo se antye. Nou ap bon la. Men, sa ki se x divize pa x? x divize pa y ta dwe, matematik, 1/10, oswa 0.1, ki se yon nimewo reyèl, yon PO reyèl gen, ki kapab, yon pwen desimal. Li pa yon nonb antye relatif. Men, sa ki pi pre a nonb antye relatif 1/10, oswa 0.1? Yeah, li kalite se zewo. 0.1 se tankou sa a anpil. Ak 1 se sa a anpil. Se konsa, 1/10 se pi pre 0 pase sa li se nan yon sèl. Se konsa, sa C ap fè pou nou ki kalite paske nou rakonte l 'to-- se truncating ki nonb antye ki pè. Li nan pran valè a, ki ankò se sipoze yon bagay tankou 0,1000, 0 ak pou fè. Epi li truncating tout bagay apre pwen an desimal se konsa ke tout bagay sa yo bagay, paske li pa fè sa anfòm nan nosyon de yon nonb antye relatif, ki se jis yon nimewo tankou negatif 1, 0, 1, leve, li desann, li lanse lwen tout bagay apre pwen an desimal paske ou pa ka anfòm yon pwen desimal nan yon nonb antye relatif pa definisyon. Se konsa, repons la isit la se zewo. Se konsa, kouman nou ranje sa a? Nou bezwen yon lòt solisyon tout ansanm. Apre sa, nou ka fè sa, jan sa a. Kite m 'ale pi devan epi kreye yon nouvo dosye, yon sèl sa a yo rele floats.c. Epi sove l 'isit la nan la menm anyè, float.c. Ak kite m 'ale pi devan epi kopi kèk nan ki Kòd soti nan pi bonè. Men, olye pou yo ap resevwa yon int, se pou yo fè sa. Ban m 'yon valè pwen k ap flote rele x. kote yon pwen k ap flote valè jis literalman yon bagay ki gen yon pwen k ap flote. Li ka deplase li nan yon bò gòch la, sou bò dwat la. Li se yon nimewo reyèl. Ak kite m 'pa rele jwenn int, men jwenn flote, ki tou te nan mitan meni an nan opsyon nan bibliyotèk la C250. Se pou nou chanje y nan yon flote. Se konsa, sa a vin tounen jwenn flote. Koulye a, nou pa vle ploge nan antye. Li sanble nou gen yo sèvi ak pousan f pou flote, pousan f pou flote, e kounye a, sove li. Epi, koulye a, dwèt janbe lòt, fè flote, bèl, flote koupe dot. x ki pral yo dwe youn 1. y A pwal 10 ankò. Epi, bèl, OK de sa mwen an se kòrèk. Mwen te espere pou plis, men mwen bliye ekri li. Se konsa an n ale ak ranje sa a erè lojik. Se pou nou ale pi devan epi gen tan pwan sa ki annapre yo. Nou pral jis fè yon ti kras kopi ak keratin. Apre sa, mwen pral di mwens. Apre sa, mwen pral di fwa. Apre sa, mwen pral di divize. Apre sa, mwen pa pwal fè modulo, ki se pa tankou konvnabl isit la, divize pa f, ak lè plus-- OK, se pou yo fè sa ankò. Fè flote, dot flote koupe, ak 1, 10, and-- bèl, pa gen okenn, OK. Se konsa, mwen yon moun sòt. Se konsa, sa a se trè komen nan syans òdinatè fè erè estipid tankou sa a. Pou rezon pedagojik, ki sa mwen reyèlman te vle fè te chanje syans la isit la a plis, nan mwens, nan fwa, ak, fann li de, menm jan ou èspere ke remake pandan egzèsis sa a. Se konsa, kounye a kite a re-konpile sa a pwogram, fè flote koupe dot. Se pou twazyèm fwa a, se pou yo wè si li satisfè atant mwen. 1, 10, antre nan, repons lan se wi, OK, 1.000, divize pa 10.000, se 0,100000. Epi li vire soti nou ka kontwole ki jan anpil nimewo yo apre pwen sa yo desimal. Nou aktyèlman pral. Nou pral tounen vin jwenn sa. Men koulye a,, an reyalite, matematik la kòrèk. Se konsa, ankò, sa ki nan Takeaway a isit la? Li sanble ke nan C, gen pa sèlman jis strings ak, an reyalite, gen pa reyèlman, paske nou ajoute moun ki gen bibliyotèk la CS50. Men, gen pa sèlman antye. Genyen tou flote. Epi li vire soti yon pakèt moun sou lòt done kalite tou, ke nou pral sèvi ak anvan lontan. Vire soti si ou vle yon sèl pèsonaj, se pa yon afè de karaktè, ou ka itilize jis yon Char. Sanble ke si ou vle yon bouleen, se yon valè Boolean, vre oubyen fo sèlman, gras a bibliyotèk la CS50, nou te ajoute nan C kalite a done bouleen kòm byen. Men, li la tou prezante nan anpil lòt lang kòm byen. Epi li vire soti ke pafwa ou bezwen pi gwo nimewo Lè sa a, rive nan yon default ak antye ak flote. Epi, an reyalite, yon doub se yon nimewo ki sèvi ak pa 32 Bits, men 64 miyèt moso. Apre sa, yon long long se yon nimewo ki sèvi ak pa 32, Bits men 64 Bits, respektivman, pou k ap flote pwen valè ak nonm antye relatif, respektivman. Se konsa, kite a aktyèlman kounye a wè sa a nan aksyon. Mwen pral ale pi devan isit la ak fwe moute yon lòt pwogram nan. Isit la, mwen pral ale pi devan epi yo genyen ladan cs50.h. Se pou m 'ale, gen ladan yo estanda IO.h. Men, ou pral remake yon bagay Funky k ap pase isit la. Li pa nan koulè kodaj bagay sa yo nan menm jan an jan li te fè anvan. Epi li vire soti, sa se paske mwen pa te bay bagay la yon non dosye-a. Mwen pral rele yon sèl sa a sizeof.c, ak frape Save. Apre sa, remake sa k ap pase trè mwen blan Kòd kont ki seri nwa. Koulye a, omwen gen nan kèk koulè wouj violèt nan la. Epi li se sentaks make. Sa a se paske, byen tou senpleman, mwen te te di IDE a ki kalite dosye li se pa bay li yon non, ak espesyalman yon ekstansyon dosye-a. Koulye a, se pou yo ale pi devan epi fè sa. Mwen pral ale pi devan epi trè tou senpleman enprime soti bouleen nan annapre se pousan LU. Nou pral tounen vin jwenn ki nan jis yon moman. Lè sa a, mwen pral ekri an lèt detache gwosè nan bouleen. Epi, koulye a, jis pou konsève pou tèt mwen kèk tan, mwen se pral fè yon antye pakèt moun sou sa yo nan yon fwa. Epi, espesyalman, mwen pral chanje sa a nan yon Char ak Char. Yon sèl sa a, mwen pral chanje nan yon doub ak yon doub. Yon sèl sa a, mwen pral chanje nan yon flote ak yon flote. Yon sèl sa a, mwen pral chanje nan yon int ak yon int. Apre sa, yon sèl sa a, mwen pral pou chanje pou yon long lontan. Apre sa, li la toujou pran yon bon bout tan, depi lontan lontan. Lè sa a,, anfen, mwen te bay tèt mwen yon sèl twò anpil, fisèl. Li sanble ke nan C, gen nan operatè a espesyal ki rele gwosè nan sa a, se literalman ale nan, lè kouri, di nou gwosè a nan chak nan sa yo varyab. Lè sa a se yon fason, kounye a, nou ka konekte tounen nan diskisyon semèn pase a nan done ak reprezantasyon. Kite m 'ale pi devan epi konpile gwosè nan gwosè koupe dot la. Li kite yo wè. Li sanble ke nan C, espesyalman sou CS50 IDE, espesyalman sou la sistèm opere Ubuntu, ki se yon opere 64-ti jan sistèm nan ka sa a, yon bouleen ki pral sèvi ak youn multiple nan espas. Sa a ki jan gwosè se mezire, pa nan Bits, men nan bytes. Apre sa, sonje ke yon moun multiple se uit miyèt moso. Se konsa, yon bouleen, menm si ou teknikman sèlman bezwen yon 0 oswa 1, li nan yon ti kras inutil ki jan nou te aplike li. Li nan aktyèlman ale nan sèvi ak yon antye byte-- se konsa tout zewo, yo petèt tout moun, oswa yon bagay tankou sa yo, oswa jis yon sèl 1 nan mitan uit miyèt moso. Yon Char, pandan se tan, ki itilize pou yon karaktè tankou yon karaktè ASCII pou chak semèn pase a, ki pral yo dwe youn karaktè. Epi sa synchs moute ak nosyon nou an li ke yo te pa plis pase 256 bits-- olye, synchs moute ak li ke yo te pa gen okenn pi long pase 8 Bits, ki ba nou kòm anpil 256 valè. Yon doub ki pral pral 8 bytes oswa 64 miyèt moso. Yon flote se 4. Yon int se 4. Yon long, long se 8. Ak yon fisèl se 8. Men pa enkyete w sou sa. Nou pral kale tounen ki kouch. Li sanble soti, strings kapab pi long pase 8 bytes. Epi, tout bon, nou te ekri strings deja, alo mond, pi long pase 8 bytes. Men, nou pral tounen vin jwenn ki nan jis yon moman. Men, pran la lwen isit la se sa ki annapre yo. Nenpòt òdinatè sèlman gen yon fini kantite lajan nan memwa ak espas. Ou kapab sèlman magazen anpil dosye sou Mac ou a oswa PC. Ou kapab sèlman magazen pwogram anpil nan RAM kouri nan yon fwa, nesesèman, menm ak memwa vityèl, paske ou gen yon kantite lajan fini nan RAM. Epi jis yo picture-- si ou pa janm te louvri moute yon laptop oswa te bay lòd memwa siplemantè pou yon òdinatè, ou pa ta ka konnen ki andedan nan òdinatè w lan se yon bagay ki sanble yon ti kras tankou sa a. Se konsa, sa a se jis yon konpayi komen yo te rele Enpòtan ki fè RAM pou òdinatè. Apre sa, RAM se kote pwogram viv pandan ke yo ap kouri. Se konsa, sou chak Mac oswa PC, lè ou double klike sou yon pwogram, epi li ouvè, ak li ouvè kèk dokiman Pawòl oswa yon bagay tankou sa yo, li estoke li pou yon ti tan nan RAM, paske RAM se pi vit pase ki gen kapasite difisil ou a, oswa ki gen kapasite solid eta kote ou. Se konsa, li jis ki kote pwogram ale yo viv lè yo ap kouri, oswa lè dosye yo te itilize. Se konsa, ou gen bagay ki gade tankou sa a andedan nan konpitè pòtatif ou, oswa yon ti kras pi gwo bagay sa yo andedan nan Desktop ou. Men, kle a se ou sèlman gen yon Nimewo fini nan bagay sa yo. Apre sa, nan sèlman yon kantite lajan fini nan pyès ki nan konpitè chita sou biwo sa a dwa isit la. Se konsa, siman, nou pa kapab magazen nimewo enfiniman lontan. Epi, ankò, si ou panse tounen nan lekòl klas, konbyen chif kapab ou gen a dwat a nan yon pwen desimal? Pou ki matyè, konbyen chif kapab ou gen a dwat a yon pwen desimal? Vrèman, enfiniman anpil. Koulye a, nou moun ta ka sèlman konnen ki jan yo fè konnen milyon dola, ak milya dola, billions, ak kwadrilyon, ak quintillion. Apre sa, mwen pouse limit yo nan mwen understanding-- oswa my-- Mwen konprann nimewo, men mwen pwononsyasyon nan nimewo. Men, yo ka jwenn enfiniman gwo ak chif enfiniman anpil moun bò gòch la oswa sou bò dwat la nan yon pwen desimal. Men, òdinatè sèlman gen yon fini kantite lajan nan memwa, yon nimewo fini nan tranzistò, se yon Nimewo fini nan anpoul limyè anndan an. Se konsa, sa ki pase lè ou kouri soti nan espas? Nan lòt mo, si ou panse tounen nan semèn pase a lè nou te pale osijè de nimewo tèt yo ke yo te reprezante nan binè, ta kwè ke nou te gen sa a valè 8-bit isit la. Epi nou gen sèt 1 an ak yon 0. Apre sa, ta kwè ke nou vle ajoute 1 a sa a valè. Sa a se yon nimewo reyèlman gwo kounye a. Sa a se 254, si mwen sonje matematik la soti nan dènye dwat semèn. Men, e si mwen chanje ki rightmost 0 nan yon 1? Nimewo a tout antye, nan kou, vin uit 1 an. Se konsa, nou ap toujou bon. Epi sa pwobableman reprezante 255, menm si tou depann de kontèks li te kapab aktyèlman reprezante yon chif negatif. Men, plis sou sa yon lòt lè. Sa a santi l tankou li a sou kòm yon wo mwen kapab konte. Koulye a, li a sèlman 8 miyèt moso. Ak Mac mwen, siman, gen fason plis pase 8 Bits nan memwa. Men, li gen fini. Se konsa, agiman an menm aplike, menm si nou gen plis nan timoun sa sou ekran an. Men, sa ki k ap pase si w ap estoke nimewo sa a, 255, , epi ou vle konte 1 ti jan pi wo? Ou vle ale soti nan 255 256. Pwoblèm nan, nan kou, se ke si ou kòmanse konte nan zewo tankou semèn pase a, ou pa ka konte kòm yon wo kòm 256, se pou kont li 257, se pou kont li 258, m paske sa k ap pase lè ou ajoute yon 1? Si ou fè sa lekòl la fin vye granmoun klas apwòch, ou mete yon 1 isit la, ak Lè sa a 1 plis 1 se 2, men sa a reyèlman yon zewo, ou pote 1 an, pote 1 an, pote 1 an. Tout bagay sa yo, sa yo nan 1, ale nan zewo. Epi ou van moute, se wi, kòm yon moun vize deyò, yon 1 sou bò nan men gòch. Men, tout sa ou kapab aktyèlman wè ak anfòm nan memwa se jis wit 0 a, sa vle di nan kèk pwen si ou, yon òdinatè, te eseye konte wo ase moute, w ap ale nan vlope alantou li, li ta sanble, a zewo, oswa petèt menm negatif nimewo yo, ki se menm pi ba pase zewo. Epi nou ka kalite wè sa a. Kite m 'ale pi devan epi ekri yon reyèl pwogram rapid isit la. Kite m 'ale pi devan epi ekri yon pwogram ki rele Depatman. Mete CS50.h, gen ladan yo estanda IO.h-- oh, Mwen vrèman rate eklèrsisaj sentaks mwen. Se konsa nou sove sa a kòm overflow.c. Epi, koulye a int void-- prensipal ak anvan lontan, nou pral tounen vin jwenn eksplike poukisa nou kenbe ekri int anile prensipal la. Men, pou kounye a, se pou yo jis fè li, pran li pou yo akòde. Se pou nou bay tèt mwen yon int, ak inisyalize li nan 0. Se pou nou Lè sa a, fè pou int mwen jwenn zero-- aktyèlman, kite a fè yon riban enfini ak wè sa ki rive. Pandan ke vre, lè sa a se pou yo enprime soti n se pousan mwen, antislach n, ploge nan n. Men, kounye a, se pou yo fè n vin N plis 1. Se konsa, nan lòt mo, sou chak iterasyon nan riban sa a enfini, kite a pran valè N a, epi ajoute 1 nan li, ak Lè sa a magazen rezilta a tounen nan n sou bò gòch la. Epi, an reyalite, nou te wè sentaks yon ti kras tankou sa a, yon ti tan. Yon Trick fre se olye pou nan ekri tout bagay sa a soti, ou ka aktyèlman di yon n plis egal 1. Oswa si ou reyèlman vle yo dwe anpenpan, ou ka di n plis plis semi-kolon. Men, sa yo lèt de yo se jis sa nou ta rele Massachusetts Institute of Technology sik la pou premye bagay la. Premye bagay se pi plis klè, totalman amann, totalman kòrèk. Men, sa a se pi komen, mwen pral di. Se konsa, nou pral fè sa a sèlman pou moman yon. Se pou nou kounye a fè debòde, ki son olye menasan, dot koupe debòde. Ann wè, n nan ap resevwa trè gwo. Men, kite a panse, ki jan gwo ka n jwenn? n se yon int. Nou te wè yon ti moman de sa ak gwosè a nan egzanp ki yon int se kat bytes. Nou konnen soti nan semèn pase a, kat bytes se 32 Bits, paske 8 fwa 4, sa a, se 32. Sa k ap pase yo dwe 4 milya de dola. Apre sa, nou yo gen jiska 800,000. Sa a se pral pran tout tan yo konte kòm yon wo mwen kapab. Se konsa, mwen pral ale pi devan, jan ou ta ka anvan lontan, ak frape kontwòl C-- franchman, Kontwòl C, yon anpil, kote kontwòl C jeneralman vle di anile. Malerezman, paske sa a ap kouri nan nwaj la, pafwa nwaj la se voye krache deyò bagay anpil, anpil pwodiksyon, li k ap pase yo pran yon ti tan pou D 'm' pou li ale nan nwaj la. Se konsa, menm si mwen frape Kontwòl C yon kèk segond de sa, sa a se definitivman bò a efè nan yon riban enfini. Se konsa, nan ka sa yo, nou ap pral kite ki dwe. E nou pral ajoute yon lòt tèminal fenèt sou isit la ak plis nan, ki nan kou pa fè sa tankou sa yo, depi li la toujou panse. Li kite yo ale pi devan yo epi yo dwe yon ti kras plis ki rezonab. Mwen pral ale pi devan epi fè sa a sèlman fini plizyè fwa. Se pou nou sèvi ak yon pou riban, ki mwen mansyone pi bonè. Se pou yo fè sa a. Ban m 'yon lòt Int varyab mwen vin 0. mwen se mwens pase, kite a di, 64 m ++. Epi, koulye a kite m 'ale pi devan epi ekri an lèt detache soti n se pousan mwen, vigil n. Lè sa a, n-- sa a se toujou pral pran pou tout tan. Se pou yo fè sa a. N vin n fwa 2. Oubyen èske nou ta ka anpenpan ak fè fwa egal 2. Men, kite a jis di n egal tèt li, fwa 2. Nan lòt mo, nan ka sa nouvo vèsyon an pwogram nan, Mwen pa vle tann pou tout tan soti nan tankou 800,000 nan 4 milya dola. Se pou nou jis jwenn sou sa a ak. Se pou nou aktyèlman double N chak fwa. Ki, sonje, double se nan opoze a gen, nan kou. Apre sa, antan semèn pase a nou gen yon bagay ankò, e ankò, e ankò, Super vit, double pral siman jwenn nou nan 1 rive nan pi gwo posib la valè ke nou ka konte rive sou ak yon int. Se konsa nou fè egzakteman sa a. Epitou, n ap tounen nan sa a vin jwenn mwen anvan lontan. Men, sa a, ankò, se jis tankou blòk la repete nan grafonyen moun. Men, ou pral sèvi ak sa a anvan lontan. Sa a jis vle di konte soti nan zewo jiska, men se pa egal, ak 64. Yo, epi sou chak iterasyon nan sa a riban, jis kenbe incrementing mwen. Se konsa, mwen ++ - ak konstwi jeneral sa a sou liy 7 se jis yon fason super komen k ap repete kèk liy nan Kòd, gen kèk kantite fwa. Ki liy nan kòd? Sa yo aparèy òtopedik Curly, menm jan ou ka te rete ranmase grap lòj nan kounye a, vle di, fè sa ki annapre yo. Li nan nan tankou grafouyen, lè li gen blòk yo jòn ak lòt koulè ki kalite anbrase oswa anbrase lòt blòk. Sa a ki sa moun Curly aparèy òtopedik ap fè isit la. Se konsa, si mwen te resevwa sentaks mwen regleman ou ka wè senbòl la kawòt nan C vle di sa a, se konbyen fwa mwen te ap eseye rezoud pwoblèm sa a. Se konsa nou debarase m de ke yon moun nèt, epi fèmen ki fenèt. Epitou, n ap sèvi ak youn nan nouvo. Fè debòde, dot koupe debòde, Antre, tout dwa, li sanble move nan premye. Men, kite a woulo liv tounen nan tan, paske mwen te fè sa a 64 fwa. Apre sa, remake premye fwa, n se 1. Dezyèm fwa, n se 2, Lè sa a, 4, Lè sa a, 8, Lè sa a, 16. Epi li sanble ke pi vit ke Mwen jwenn yo apeprè 1 milya dola, si mwen double l 'ankò, ki ta dwe bay m '2 milya dola. Men, li vire soti, li la dwa sou Point a. Se konsa, li aktyèlman kontan yon int soti nan 1 milya dola apeprè negatif 2 milya dola, paske yon nonb antye relatif, kontrèman ak nimewo nou an te an konsideran semèn pase a, ka tou de pozitif ak negatif an reyalite ak nan yon òdinatè. Se konsa, omwen youn nan moun ki Bits se efektivman yo vòlè li. Se konsa, nou reyèlman sèlman gen 31 Bits, oswa 2 milya dola valè posib. Men, pou kounye a, Takeaway a se byen tou senpleman, tou sa nimewo sa yo, se ak tou sa matematik an se, yon move bagay k ap pase evantyèlman, paske evantyèlman ou yo ap eseye pèrmute Bits yo yon sèl twò anpil fwa. Epi ou efektivman ale nan tout 1 nan petèt tout 0 a, oswa petèt jis kèk lòt modèl ke li klèman, tou depann de kontèks, yo ka entèprete kòm yon chif negatif. Se konsa, li ta sanble mwen ki pi wo ka konte nan pwogram sa a an patikilye se sèlman apeprè 1 milya dola. Men, gen nan yon solisyon pasyèl isit la. Ou konnen ki sa? Kite m 'chanje soti nan yon int nan yon long lontan. Ak kite m 'ale pi devan isit la ak say-- mwen pral gen chanje sa a nan yon long siye. Oswa, kite a wè, mwen pa janm sonje tèt mwen. Se pou nou ale pi devan epi fè debòde. Non, sa a, se pa li, LLD, di ou mèsi. Se konsa, pafwa rezone kapab ede anpil. Mwen pa t 'sonje sa fòma a Dvi te pou yon tan long. Men, tout bon, rezone di m '. Green se kèk kalite bon, toujou vle di ou fè yon erè. Li nan devine ke mwen vle di LLD. Se konsa, kite m 'pran li nan konsèy, yon long lontan nonb desimal, sove sa. Ak kite m 'relance li, dot koupe debòde, Antre nan. Epi, koulye a sa ki nan fre se sa a. Si m 'woulo liv tounen nan tan, nou toujou kòmanse konte nan menm place-- a 1, 2, 4, 8, 16. Avi, nou jwenn tout nan fason jiska 1 milya dola. Men, lè sa a nou san danje jwenn nan 2 milya dola. Lè sa a, nou jwenn nan 4 milya dola, Lè sa a, 8 milya dola, 17 milya dola. Apre sa, nou ale pi wo, ak pi wo, ak pi wo. Evantyèlman, sa a, tou, repo. Evantyèlman, ak yon long long, ki se valè a 64-ti jan, pa se yon valè 32-ti jan, si ou konte twò wo, ou vlope toutotou 0. Ak nan ka sa a, nou rive fini ak yon chif negatif. Se konsa, sa a se yon pwoblèm. Epi li vire soti ke sa a pwoblèm se pa tout sa ki Esoteric. Menm si mwen te fè espre pwovoke l 'ak erè sa yo, li vire soti nou wè li kalite tout bò kote nou, oswa omwen kèk nan nou fè. Se konsa, nan Lego Star Lagè, si ou janm te jwe jwèt la, li vire soti ou ka ale nan kraze bagay yo nan mond LEGO, ak kolekte pyès monnen, esansyèlman. Men, si ou te janm te jwe jwèt sa a fason twò anpil tan, kòm moun sa a anonim isit la te fè, kantite total nan pyès monnen ke ou ka kolekte se, li ta sanble, 4 milya de dola. Koulye a, ak li la aktyèlman balanse. Se konsa, LEGO te ap eseye kenbe bagay sa yo itilizatè zanmitay. Yo pa t 'fè l' egzakteman 2 a pouvwa a 32, pou chak semèn pase a. Men, 4 milya de dola se yon rezon. Li sanble, ki baze sou enfòmasyon sa a, ki LEGO, ak konpayi an ki te fè lojisyèl aktyèl sa a, deside ki la pou maksimòm kantite pyès monnen itilizatè a kapab akimile se, tout bon, 4 milya dola, paske yo te chwazi nan kòd yo yo sèvi ak pa yon long long, aparamman, men jis yon nonb antye relatif, yon siye nonb antye relatif, se sèlman yon nonb antye relatif pozitif, ki gen max valè apeprè sa. Oke, isit la nan yon lòt yon sèl amizan. Se konsa, nan jwèt Sivilizasyon an, ki kèk nan ou ta ka dwe abitye, ak li sanble ke ane de sa gen te yon ensèk nan sa a annakò ak sa jwèt si ou te jwe wòl nan nan Gandhi nan jwèt la, olye pou yo l 'yo te trè pasifik, olye pou te ekstrèmman, ekstrèmman agresif, nan kèk sikonstans. An patikilye, fason ke Sivilizasyon travay se ke si ou, jwè a, adopte demokrasi, ou avantur nòt vin dekremante pa de, se konsa mwens mwens, ak Lè sa a mwens mwens. Se konsa, ou fè soustraksyon 2 soti nan iteration aktyèl ou yo. Malerezman, si ou se iteration okòmansman 1, epi ou fè soustraksyon 2 soti nan li apre adopte demokrasi kòm Gandhi isit la ta ka te fè, paske li te gen anpil passive-- 1 sou echèl la nan avantur. Men, si li adopte demokrasi, Lè sa a, li ale nan 1 rive nan negatif 1. Malerezman, yo te lè l sèvi avèk nimewo siye, ki vle di yo trete menm negatif nimewo tankou si yo te pozitif. Epi li vire soti ki nan ekivalan pozitif nan negatif 1, nan pwogram òdinatè tipik, se 255. Se konsa, si Gandhi adopte demokrasi, ak Se poutèt sa gen nòt avantur l 'diminye, li aktyèlman woulo alantou nan 255 ak fè l 'pi plis nan agresif karaktè nan jwèt la. Se konsa, ou ka Google moute sou sa a. Epi li te, tout bon, yon aksidan pwogram ensèk, men sa a te antre nan byen Fòlklò nan depi tout tan. Sa a tout plezi ak bèl. Plis pè se lè aktyèl aparèy mond reyèl, epi yo pa jwèt, gen sa yo pinèz menm. An reyalite, jis yon ane de sa yon atik rive soti sou Boeing 787 Dreamliner la. Apre sa, atik la an premye ti koutje sou li yon ti kras Esoteric. Men, li di yo sa, yon lojisyèl vilnerabilite nan Boeing a nouvo 787 Dreamliner jè gen potansyèl la yo lakòz pilòt pèdi kontwòl nan avyon an, petèt nan mid-flight, chèf yo FAA te avèti konpayi avyon dènyèman. Li te detèminasyon an ki yon modèl 787 avyon ki te mache ak pil kontinyèlman pou 248 jou ka pèdi tout aktyèl altène, AC, kouran elektrik akòz dèlko a inite kontwòl, GCUs, ansanm pral antre nan fail san danje mòd. Li nan kalite pèdi m '. Men, memo an deklare, OK, koulye a, mwen te resevwa sa, te kondisyon an ki te koze pa yon lojisyèl vann san preskripsyon entèn yo kontwòl nan dèlko inite ki pral debòde apre 248 jou ki gen pouvwa kontinyèl. Nou ap founi dokiman yo sa a remake yo anpeche pèdi nan tout AC elektrik pouvwa a, ki ka rezilta nan pèt nan kontwòl nan avyon an. Se konsa, literalman, gen kèk nonb antye relatif, oswa kèk ekivalan done kalite, te itilize nan lojisyèl nan yon avyon aktyèl ke si ou kenbe avyon ou sou lontan ase, ki aparamman kapab ka a si w ap sèlman kouri yo toujou ap epi pa janm debranche avyon ou, li sanble, oswa kite pil li yo mouri, pral evantyèlman konte moute, li leve, ak moute, li leve, li leve, li leve. Epi, pa nati, yon fini kantite lajan nan memwa pral debòde, woule tounen nan zewo oswa kèk negatif valè, yon efè segondè nan ki se nan frighteningly reyèl reyalite ke avyon an ta ka bezwen yo dwe demare, efektivman, oswa ta ka tonbe, vin pi mal, kòm li ta vole. Se konsa, sa yo kalite pwoblèm yo toujou avèk nou, even-- sa a te yon atik nan yon 2015, plis pè nan tout lè ou fè pa nesesèman konprann, apresye, oswa antisipe sa yo kalite erè. Se konsa, li vire soti gen nan yon lòt move bagay sou done reprezantasyon. Li sanble ke menm flote yo kalite defekte, paske flote, tou, Mwen pwopoze yo 32 Bits, oswa petèt 64 si ou itilize yon doub. Men, sa a toujou fini. Apre sa, trape an se ke si ou kapab mete yon nonb infini nan nimewo apre pwen an desimal, pa gen okenn fason ou ka reprezante tout sa ki posib nan nimewo ki nou te anseye nan klas lekòl ka egziste nan mond lan. Yon òdinatè, esansyèlman, te chwazi yon sou nan moun ki nimewo ki reprezante avèk presizyon. Koulye a, òdinatè a kapab wonn petèt yon ti jan, epi yo ka pèmèt ou apeprè magazen nenpòt ki kantite ou ta ka pètèt vle. Men, jis entwitif, si ou gen yon nimewo fini nan Bits, ou ka sèlman pèrmute yo nan anpil fason fini. Se konsa, ou pa kapab pètèt sèvi ak yon nimewo fini nan pèmitasyon nan Bits, modèl nan zewo ak moun yo, ki reprezante yon enfini Nimewo nan nimewo, ki sijere ke òdinatè ta ka trè byen se kouche yo ban nou pafwa. An reyalite, se pou yo fè sa. Kite m 'ale tounen nan CS50 IDE. Kite m 'ale pi devan epi kreye yon pwogram ti kras rele enpresizyon, yo montre ki òdinatè yo, tout bon, enpresizyon. Ak kite m 'ale pi devan epi kòmanse ak kèk nan ki Kòd yo devan, e kounye a, jis fè sa ki annapre yo. Kite m 'ale pi devan epi fè printf, pousan f, antislach n, 1 divize pa 10. Nan lòt mo, se pou yo plonje nan pi fon 1/10, tankou 1 ak divize pa 10. Se vre wi, yon òdinatè ka reprezante 1/10. Se konsa nou ale pi devan epi fè enpresizyon. Ann wè. Fòma espesifye tape doub. Men, agiman an gen kalite int. Sa k pase? Oh, enteresan, se konsa li nan yon leson aprann nan anvan. M ap di, hey, montre òdinatè m 'yon flote ak pousan f. Men, mwen bay li 2 antye. Se konsa, li vire soti, mwen kapab ranje sa a nan yon koup nan fason. Mwen te kapab jis vire yon sèl nan 1.0, ak 10 nan 10.0, ki ta, tout bon, gen efè a nan konvèti yo nan floats-- toujou èspere ke menm nimewo a. Oswa li vire soti gen nan yon bagay nou pral wè ankò anvan lontan. Ou te kapab jete nimewo yo. Ou ka, lè l sèvi avèk parantèz sa a ekspresyon, ou ka di, hey, òdinatè, pran sa a 10, ki mwen konnen se yon int. Men, trete li, tanpri, tankou si li nan yon flote. Men, sa a santi l san nesesite konplèks. Pou rezon nou an jodi a, kite yo jis literalman fè yo k ap flote valè pwen ak yon pwen desimal, tankou sa a. Kite m 'ale pi devan epi relance, fè enpresizyon, bon, dot koupe enpresizyon, antre nan. OK, nou ap chèche bon. 1 divize pa 10, dapre mwen Mac isit la, se, tout bon, 0,100000. Koulye a, mwen te anseye nan lekòl klas yo gen yo ta dwe yon nonb infini nan 0 a. Se konsa nou omwen eseye yo wè kèk nan sa yo. Li sanble ke printf se yon ti kras amateur toujou pase nou ve yo te lè l sèvi avèk. Li sanble ou pa bezwen presize jis pousan f, oswa jis pousan mwen. Ou ka aktyèlman presize kèk opsyon kontwòl isit la. Espesyalman, mwen pral vle di, hey, printf, aktyèlman montre m 10 pwen desimal. Se konsa, li sanble yon ti kras etranj. Men, ou di pousan, dot, nimewo konbyen ou vle wè apre a pwen desimal, ak Lè sa a f pou plat, jis paske sa a, se sa dokiman an di. Kite m 'ale pi devan epi sove sa. Apre sa, remake tou, mwen ap resevwa fatige nan retyping bagay sa yo. Se konsa, mwen jis mete kanpe la ak desann flèch sou kle m 'isit la. Men, si mwen kenbe frape moute, ou ka wè tout nan kòmandman yo ke mwen te fè, oswa mal fè fè yo. Apre sa, mwen pral ale pi devan kounye a epi yo pa aktyèlman sèvi ak sa, aparamman. Fè enpresizyon, dot koupe imprecision-- se konsa sa m 'te anseye nan lekòl klas chèk deyò. Menm si mwen enprime li a 10 desimal mete l ', tout bon, se 0,10000. Men, ou konnen ki sa? Se pou nou jwenn yon ti kras visye. Se pou nou di, tankou, montre m 55 pwen apre desimal la. Se pou nou reyèlman pran sa a pwogram deyò pou yon vire. Kite m 'renouvèlman l' ak fè enpresizyon, dot koupe, enpresizyon. Ak isit la nou ale. timoun ou te yon manti. Aparamman, 1 divize pa 10 se vre 0.100000000000000005551115123-- Ki sa ki ale sou? Oke, li vire soti, si ou kalite gade byen lwen ase soti nan kache nan reprezantasyon nan sa a nimewo, li aktyèlman se pa egzakteman 1/10, oswa 0.1 ak yon nonb infini nan zewo. Koulye a, poukisa se sa? Oke, menm si sa a se yon senp Nimewo yo ban nou moun, 1 divize pa 10, li la toujou youn nan enfiniman anpil nimewo ke nou te kapab panse moute. Men, yon òdinatè ka sèlman reprezante fini anpil nimewo sa. Se konsa, efektivman, ki sa a òdinatè ki montre nou se pi pre li yo apwoksimasyon ak kantite nou vle kwè se 1/10, oswa reyèlman 0,10000 Enfini Ad. Olye de sa, menm si, sa a se tankou fèmen ke li ka jwenn. Epi, tout bon, si ou gade anba kapo a, kòm nou yo isit la pa gade 55 chif apre desimal la, nou aktyèlman wè ke reyalite. Koulye a, kòm yon sou kote, si ou te janm wè an fim nan pi fò nan pwobableman ou have not men devni selèb 3 kèk ane de sa, Richard Pryor esansyèlman exploitées sa a reyalite nan konpayi li a yo nan vole yon anpil nan fraksyon ak fraksyon nan peni, paske company-- nan jan mwen sonje, li te gen yon while-- te esansyèlman jete nenpòt ki bagay ki pa t 'anfòm nan nosyon de santim. Men, si ou ajoute jiska tout bagay sa yo ti, ti, nimewo ti ankò, e ankò, e ankò, ou kapab, tankou nan ka l ', fè yon kantite bon lajan. Sa lide menm te chire koupe pa yon pi resan, men yo toujou kounye a ki pi gran fim, ki rele Biwo Espas, kote mesye yo nan ki fim, fè menm bagay la, vise l 'kanpe konplètman, te fini ak fason twòp lajan nan kont labank yo. Li te tout trè sispèk. Men, nan fen jounen an, enpresizyon se tout bò kote nou. Epi ki, tou, kapab frighteningly ka-a. Li sanble ke devni selèb 3 ak Biwo Espas sou kote, gen ka gen kèk anpil reyèl divizyon mond nan reyalite yo nan enpresizyon reprezantasyon nan done ke menm nou moun jòdi a fè pa nesesèman konprann osi byen ke nou ta dwe, oswa sonje osi souvan sa nou ta dwe. Epi, tout bon, clip ki anba la a se ki sòti nan yon gade nan kèk mond anpil reyèl divizyon nan sa k ap pase si ou pa apresye enpresizyon a ki ka rive nan nimewo reprezantasyon. [VIDEO lèktur] -Computers, Nou te tout vini nan aksepte pwoblèm sa yo souvan fwistre ki ale ak pinèz them--, viris, ak pepen lojisyèl, pou pri ti peye pou konvenyans nan. Men, nan teknoloji segondè, epi gwo vitès militè yo ak pwogram espas aplikasyon pou, pwoblèm ki pi piti a kapab gen gwo pouvwa nan dezas. Sou jen 4yèm, 1996, syantis prepare lanse yon sans aryan 5 fize. Li te pote syantifik satelit fèt nan etabli jisteman la ki jan mayetik reyaji jaden tè ​​a ak van solè. te fize a bati pou Ajans la Espas Ewopeyen an, ak leve li nan mitan etablisman li yo sou kòt la nan franse gwiyane. -Nan Sou 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è, machin nan te nan tray. Epi sa a, lè yo te fè yon desizyon detwi l '. Ofisye a sekirite ranje, ak entesten fòmidab, bourade bouton an, kònen moute fize a, anvan li te kapab vin yon danje nan sekirite piblik la. -Sa A te jenn fi a vwayaj nan aryan a 5. Ak destriksyon li yo te pran mete paske yo gen yon defo entegre nan lojisyèl fize la. pwoblèm -La sou aryan a te ke te gen yon nimewo ki mande 64 Bits eksprime sa yo panse. Apre sa, yo te vle konvèti li nan yon kantite 16-ti jan. Yo sipoze ke nan Nimewo pa te janm ale yo dwe trè gwo, ki pi fò nan moun chif nan yon nonb 64-ti jan te zero. Yo te mal. -La Enkapasite nan yon sèl pwogram lojisyèl aksepte ki kalite nimewo ki te pwodwi pa yon lòt te nan rasin lan nan fayit la. devlopman lojisyèl te vin yon trè koute chè yon pati nan nouvo teknoloji. te fize a aryan te trè siksè, se konsa anpil nan lojisyèl an kreye pou li te tou yo itilize nan aryan a 5. -La Pwoblèm debaz te ke aryan a 5 te pi vit, akselere pi vit. Ak lojisyèl an pa t 'gen matirite pou sa. -La Destriksyon nan fize a te yon gwo dezas finansye, tout akòz yon erè minit lojisyèl. Men, sa a pa t 'premye a tan pwoblèm konvèsyon done te gwo malè tonbe sou modèn teknoloji fize. -Nan 1991, ak nan kòmansman an nan premye Lagè Gòlf la, Patriot misil a ki gen eksperyans yon kalite ki sanble nan pwoblèm konvèsyon kantite. E kòm yon rezilta, 28 moun, 28 sòlda Ameriken yo, te mouri, ak sou 100 lòt moun blese, lè Patriot la, ki te sipoze nan pwoteje kont scuds fèk ap rantre, echwe pou pou tire yon misil. -Lè Irak anvayi Kowet, ak Amerik te lanse Tanpèt Dezè byen bonè nan mwa 1991, Patriot misil pil te deplwaye pwoteje Arabi Saoudit ak pèp Izrayèl la soti nan Irak Scud atak misil. Patriot la se yon US medyòm-ranje sifas nan sistèm lè, manifaktire pa konpayi an Raytheon. -La Gwosè nan entèrsèpsyon nan Patriot tèt li se sou apeprè 20 pye nan longè. Epi, se peze sou 2,000 liv. Apre sa, li pote yon tèt degè a sou, Mwen panse ke li apeprè 150 liv. Apre sa, tèt degè a li menm se yon eksplozif segondè, ki gen fragman fè wonn li. aman a nan tèt degè a se fèt yo aji tankou plon. misil -La yo te pote kat pou chak veso, , epi yo transpòte pa yon trelè semi. -La Sistèm Patriot anti-misil ale tounen omwen 20 ane kounye a. Li te orijinal ki fèt kòm yon misil defans lè tire desann avyon lènmi. Nan premye Lagè Gòlf la, lè ke lagè te vini ansanm, Lame a te vle sèvi ak li nan tire desann scuds, pa avyon. Fòs aeryen an Irak te pa konsa pou sa anpil nan yon pwoblèm. Men, Lame a te enkyete w sou scuds. Se konsa, yo te eseye ajou Patriot la. -Intercepting Yon lènmi misil vwayaje nan mach 5 te ale nan dwe defi ase. Men, lè Patriot la te kouri antre nan sèvis, Lame a pa t 'okouran de yon Irak modifikasyon ki te fè scuds yo prèske enposib frape. -Ki Te pase se scuds yo ki te vini nan yo te enstab. Yo te tranble. Rezon ki fè la pou sa a te Irakyen yo yo, yo nan lòd yo ka resevwa 600 kilomèt soti nan yon kilomèt 300 seri misil, te pran pwa soti nan tèt degè devan an. Yo te fè tèt degè a pi lejè. Se konsa, kounye Patriot la se ap eseye vini nan Scud a. Ak pi fò nan tan an, nan akablan majorite nan tan an, li ta jis vole pa Scud a. Yon fwa operatè yo sistèm Patriot reyalize Patriot la rate sib li yo, yo detounen tèt degè Patriot la pou fè pou evite aksidan posib si li te pèmèt li tonbe atè a. -Sa Se sa ki te pi fò moun te wè, moun fireballs gwo nan syèl la, ak konpwann kòm segman aks dèz nan Scud tèt de gè. -Although Nan mitan lannwit lan syèl, Patriyòt parèt yo dwe avèk siksè detwi Scuds, nan Dhahran, ta kapab genyen okenn erè sou pèfòmans li yo. Gen, sistèm rada Patriot la pèdi tras nan yon Scud fèk ap rantre, epi pa janm te lanse akòz nan yon defo lojisyèl. Li te Izrayelyen yo ki moun ki premye dekouvri ki pi long sistèm lan nan te sou li a, pi gwo Diferans la nan tan te vin, akòz yon revèy entegre nan òdinatè sistèm nan. -About De semèn anvan trajedi a nan Dhahran, Izrayelyen yo rapòte bay Depatman Defans lan ke sistèm lan te pèdi tan. Apre apeprè uit èdtan oswa kouri, yo remake ke sistèm lan te vin notables mwens egzat. Depatman Defans lan reponn pa di tout nan pil yo Patriot pa kite sistèm yo sou pou yon tan long. Yo pa janm di sa yon tan long was-- uit èdtan, 10 èdtan, 1,000 èdtan. Okenn moun pa te konnen. -La Batri Patriot estasyone nan kazèn lan nan Dhahran ak entèn defekte li yo te revèy te sou plis pase 100 èdtan sou nwit la la nan mwa fevriye 25th. -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 fwa se yon nimewo enteresan, paske li pa kapab eksprime nan binè egzakteman, ki vle di li pa ka eksprime egzakteman nan nenpòt òdinatè modèn dijital. Li difisil yo kwè. Men, sèvi ak sa a kòm yon egzanp. Se pou nou pran nimewo yon sèl twazyèm lan. Yon tyè pa kapab eksprime nan desimal egzakteman. Yon tyè se 0,333 ale sou pou Infinity. Pa gen okenn fason fè sa ak presizyon absoli nan desimal. Sa a egzakteman ki kalite pwoblèm ki te rive nan Patriot la. ankò sistèm lan nan kouri al nan vin pi mal erè nan tan te vin. -Apre 100 èdtan nan operasyon an, nan erè nan tan sa a te sèlman sou yon tyè nan yon dezyèm fwa. Men, nan tèm de vize yon misil vwayaje nan mach 5, li a nan yon swiv erè nan plis pase 600 mèt. Li ta yon erè fatal pou sòlda yo sou sa ki ki te pase se yon lansman Scud te detekte avèk satelit Avètisman bonè epi yo te konnen ke Scud a te vini nan yon direksyon jeneral yo. Yo pa t 'konnen kote li te vini yo. -Li Te kounye a jiska rada a eleman ki nan sistèm nan Patriot defann Dhahran jwenn epi kenbe tras nan misil a lènmi fèk ap rantre. rada -La 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 yon baryè pòte. -Lè, Yon fwa Patriot la deside ase tan gen pase bay tounen ladan l epi tcheke pwochen an kote pou sa a objè detekte, li ale tounen. Se konsa, lè li te ale tounen nan sa ki mal la plas, li Lè sa a, wè pa gen okenn objè. Epi, se deside ke pa te gen okenn objè, li te yon deteksyon fo, ak gout tras la. -La Fèk ap rantre Scud disparèt soti nan ekran an rada. Apre sa, segond apre, li te kriye byen fò nan kazèn lan. Scud a touye 28, e li te dènye a youn te tire pandan premye Lagè Gòlf la. Trajik, lojisyèl an mete ajou te rive nan Dhahran jou ki anba la a. defo nan lojisyèl te gen te fiks, fèmen youn chapit nan boulvèse a istwa nan misil a Patriot. [VIDEO lèktur] DAVID J. Malan: Se konsa, sa a se tout moun di ke pwoblèm sa yo nan debòde ak enpresizyon, yo tout twò reyèl. Se konsa, kouman t 'nou jwenn isit la? Nou te kòmanse ak jis ap pale de printf. Yon fwa ankò, sa a fonksyon ki simagri yon bagay yo ekran an, epi nou prezante apre sa yon kèk lòt fonksyon soti nan sa yo rele bibliyotèk la CS50 la. Epitou, n ap kontinye wè sa yo nan tan garanti dwa moun. Apre sa, nou, patikilyèman, yo itilize jwenn fisèl, epi pou yo jwenn int, e kounye a, tou jwenn flote, e ankò lòt moun toujou ap nou rankontre epi sèvi ak tèt nou anvan lontan. Men, sou okazyon, gen nou deja wè yon bezwen nan magazen sa ki sa yo fonksyon men tounen ankò? Yo men nou tounen yon fisèl, oswa yon int, oswa yon flote. Epi pafwa nou bezwen mete sa fisèl, oswa int, oswa flote, yon kote. Apre sa, nan magazen bagay sa yo, sonje jis tankou nan grafouyen, nou gen varyab. Men, kontrèman ak nan grafouyen, nan C nou gen kalite aktyèl nan done variables-- kalite, plis generally-- nan mitan yo, yon fisèl, yon int, yon flote, ak sa yo lòt moun toujou. Se konsa, lè nou deklare varyab nan C, nou pral gen deklare kalite done nou an. Sa a se pa yon bagay nou pral dwe fè pita nan semès la jan nou tranzisyon nan lòt lang yo. Men, pou kounye a, nou bezwen nan yon priori an avanse, eksplike nan òdinatè a ki kalite nan varyab nou vle li ba nou. Koulye a, pandan se tan, ekri ak lèt ​​detache sa yo kalite kalite done, nou dwe di printf ki sa atann. Apre sa, nou te wè nan pousan pou strings, epi pousantaj mwen pou nonm antye yo, ak kèk lòt moun deja. Ak moun ki yo se tou senpleman kondisyon pou prezantasyon an vizyèl nan enfòmasyon sa a. Epitou, chak nan sa yo ka aktyèlman ap parametrized oswa tweaked nan kèk fason, si ou vle vin genyen plis kontwòl kalite a nan pwodiksyon ke ou jwenn. Epi, an reyalite, li vire soti ki pa sèlman ki gen la antislach n pou yon liy nouvo. Genyen yon lòt bagay rele antislach r pou yon retou cha, ki se pi plis analogue nan yon fin vye granmoun typewriter lekòl la, epi tou li Windows itilize pou plizyè ane. Genyen antislach t pou onglè. Vire soti, ki si ou vle doub quote andedan nan yon fisèl, sonje ke nou te itilize doub quote doub quote sou bò gòch la ak dwa a fini nan strings nou an konsa byen lwen. Sa ta sanble yo konfonn bagay sa yo. Si ou vle mete yon quote doub nan mitan an nan yon string-- ak, tout bon, li se konfizyon yo wè. Se konsa, ou gen yo sove, se konsa yo pale, yon quote doub ak yon bagay tankou, literalman, antislach doub quote. Apre sa, nan yon lòt kèk toujou. Epitou, n ap wè plis nan tout sa yo nan itilize aktyèl anvan lontan. Se konsa, kite pou nou kounye a tranzisyon soti nan done, ak reprezantasyon, ak operatè aritmetik yo, tout nan sa ki te ba nou kèk bilding blòk ak ki yo jwe. Men koulye a, kite a aktyèlman bay nou rès la nan vokabilè a ke nou te deja gen semèn pase a ak Grafouyen lè yo pran yon gade nan kèk lòt konstwi nan C-- se pa tout nan yo. Men, lide yo nou ap sou yo wè vrèman jis mete aksan sou tradiksyon an soti nan yon sèl lang, grafouyen, nan yon lòt, C. Ak sou tan, nou pral ranmase plis zouti pou zouti nou an, se konsa pale, syntactically. Epi, tout bon, ou ap wè ke lide yo yo kounye a se olye abitye soti nan semèn pase a. Se konsa nou fè sa. Se pou nou ale pi devan epi fwe moute yon pwogram ki aktyèlman sèvi ak kèk ekspresyon, yon ekspresyon Boolean. Kite m 'ale pi devan isit la ak kreye yon dosye nouvo. Mwen pral rele condition.c sa a. Kite m 'ale pi devan epi gen ladan bibliyotèk la CS50. Ak kite m 'ale pi devan epi yo genyen ladan estanda io.h pou fonksyon nou an, ak printf, ak plis ankò respektivman. Kite m 'ba tèt mwen ke boilerplate nan int anile prensipal yo, ki gen eksplikasyon nou pral tounen nan nan tan kap vini a rive. Koulye a, kite m 'ale pi devan epi bay tèt mwen yon int atravè jwenn int. Lè sa a, kite m 'ale pi devan epi fè sa. Mwen vle di si mwen se less-- kite nan distenge ant pozitif, negatif, oswa zewo valè. Se konsa, si mwen se mwens pase zewo, kite m ' jis gen pwogram sa a tou senpleman di, negatif, antislach n, lòt moun si mwen gen plis pouvwa pase zewo. Koulye a, mwen, nan kou, pral di printf pozitif, antislach n. Lè sa a, lòt moun if-- mwen te kapab fè sa a. Mwen te kapab fè si mwen egal 0. Men, mwen ta dwe fè nan omwen yon erè deja. Sonje byen, siy ki egal se pa egal, kòm nou moun konn sa. Men, li la operatè a plasman. Apre sa, nou pa vle pran 0 sou la dwa ak mete l 'nan mwen sou bò gòch la. Se konsa, pou fè pou evite konfizyon sa a, oswa petèt move itilizasyon egal yo siyen, moun deside kèk ane de sa ke nan lang programmation anpil lè ou vle tcheke pou egalite ant kite la ak dwa a, ou aktyèlman itilize egal egal. Se konsa, ou frape egal yo siyen de fwa. Lè ou vle yo asiyen de dwat nan bò gòch la, ou sèvi ak yon sèl siy egal-ego. Se konsa, nou ta ka fè sa a men lòt moun si mwen egal egal zewo. Mwen te kapab lè sa a ale ak louvri aparèy òtopedik Curly mwen, ak di, printf 0, antislach n, fè. Men, sonje ki jan sa yo fouchèt nan wout la ka travay. Epi, reyèlman, jis panse sou lojik la. mwen se yon nimewo. Se yon nonb antye relatif, espesyalman. Lè sa vle di li pral li dwe mwens pase 0, oswa pi gran pase 0, oswa 0. Se konsa, gen se kalite sa a enplisit ka default. Se konsa, nou te kapab, jis tankou Grafouyen, dispanse avèk lòt moun nan si, ak jis di lòt bagay. Lojikman, si ou nan pwogramè konnen gen nan sèlman twa bokit nan ki yon senaryo ka fall-- premye a, dezyèm lan, oswa yon twazyèm nan nan sa a case-- pa fè sa deranje ajoute presizyon an plis ak lojik nan plis la. Jis ale pi devan ak nan ka default isit la nan lòt moun. Koulye a, kite yo ale pi devan apre ekonomize sa a, fè kondisyon dot koupe conditions-- pa yon koòdone itilizatè gwo, paske mwen pa pouse nan itilizatè, kòm mwen mansyone pi bonè. Men, sa a amann. Nou pral kenbe li senp. Ann eseye nimewo a 42. Epi sa a, pozitif. Ann eseye nimewo a negatif 42, negatif. Ann eseye valè a 0. Epi, tout bon, li fonksyone. Koulye a, ou pral wè ki gen pwoblèm anvan lontan, bagay sa yo tès twa fwa, pwobableman pa ase. Ou pwobableman vle teste kèk pi gwo nimewo, kèk ki pi piti nimewo, kèk ka kwen, kòm nou pral vini nan dekri yo. Men, pou kounye a, sa a se yon pwogram trè senp. Apre sa, mwen se trè asire w, lojikman, ke li tonbe nan twa ka. Epi, tout bon, menm si nou jis konsantre sou enkonvenyans yo potansyèl nan enpresizyon ann abondans, nan reyalite kote anpil nan pwoblèm CS50 a, nou pa yo ale nan enkyete sou, tout tan tout tan an, moun pwoblèm nan debòde ak enpresizyon, paske, an reyalite, nan C, li la aktyèlman pa tout sa ki fasil pou fè pou evite bagay sa yo. Si ou vle konte moute pi gwo, ak pi gwo, ak pi gwo, li vire soti gen teknik ou ka itilize, souvan ki enplike bagay sa yo rele bibliyotèk, koleksyon nan Kòd, ki lòt moun te ekri ke ou ka itilize, ak lòt lang tankou Java ak lòt moun, aktyèlman fè l 'yon anpil pi fasil yo konte menm pi wo. Se konsa, li vrèman se kèk nan danje sa yo yon fonksyon nan lang lan ou itilize. Ak nan semèn kap vini, nou pral wè ki jan danjere C reyèlman kapab si ou pa sèvi ak li byen. Men, soti nan gen, ak Piton, ak JavaScript, yo pral nou kouch sou kèk pwoteksyon adisyonèl, epi kouri mwens nan risk sa yo. Se konsa, kite a fè yon ti kras plis enteresan lojik nan pwogram nou an. Se pou m 'ale pi devan epi kreye yon pwogram ki rele lojik jis Se konsa, mwen ka jwe ak kèk aktyèl lojik, logical.c. Mwen pral jis kopye epi kole kèk Kòd soti nan pi bonè Se konsa, mwen jwenn tounen sa a bèl pwen depa. Kite m 'tan sa a fè Char C. mwen se pral bay li yon non nan C jis paske li nan konvansyonèl yo, jwenn yon karaktè soti nan itilizatè a. Li kite yo pretann tankou Mwen mete ann aplikasyon yon pati nan ke pwogram Rm, retire nan pwogram anvan ki te rapidman ankouraje itilizatè a yo retire yon dosye. Ki jan nou ta ka fè sa a? Mwen vle di, si C egal egal, quote unquote, y, Lè sa a, mwen pral asime ki te itilizatè a chwazi wi. Mwen jis ale nan enprime wi. Si li te aktyèlman ekri pwogram nan retire, nou te ka retire dosye a ki gen plis liy nan kòd. Men, nou pral kenbe li senp. Lòt Bagay si c egal egal n-- e kounye a, isit la, mwen pral di, dwe itilizatè a te vle di pa gen okenn. Lè sa a, lòt moun, ou konnen ki sa? Mwen pa konnen ki lòt bagay itilizatè a ki pral tape. Se konsa, mwen jis ale nan di ke ki se yon erè, tou sa li oswa li te aktyèlman tape. Se konsa, sa k ap pase sou isit la? Gen yon diferans fondamantal kont sa m 'te fè l' nan tan lontan an. Double quotes, quotes doub, doub quotes, epi, ankò, quotes sèl, quotes sèl. Li sanble nan C, ke lè ou vle ekri yon fisèl, ou fè sèvi ak quotes doub, menm jan nou te lè l sèvi avèk tout tan tout tan sa a ak printf. Men, si ou vle fè fas ak jis yon sèl karaktè, yon Char sa yo rele, lè sa a ou aktyèlman sèvi ak quotes sèl. Moun sa yo ki nan nou ki te pwograme anvan, ou pa ta ka gen te gen enkyete sou sa a distenksyon nan sèten lang. Nan C, li fè sa matyè. Se konsa, lè mwen jwenn yon Char e mwen vle yo konpare ki Char lè l sèvi avèk egal egal a kèk lèt ​​tankou y oswa n, m 'fè, tout bon, bezwen gen quotes yo sèl. Koulye a, se pou yo ale pi devan epi fè sa. Se pou nou ale pi devan epi fè dot lojik koupe lojik. Epi, koulye a mwen ke yo te pouse. Se konsa, prezimableman, yon pi bon eksperyans itilizatè ta aktyèlman di m 'sa yo dwe fè isit la. Men, mwen pral jis je fèmen di y pou repons lan se wi, OK, bèl. Se pou nou kouri l 'ankò, n pou pa gen okenn, bèl. Sipoze tankou moun sèten mwen konnen, bouchon mwen fèmen kle se sou tout twò souvan. Se konsa, mwen fè kapital Y, antre nan, erè. OK, li nan pa egzakteman sa m ap tann. Vreman vre, òdinatè a ap fè literalman ki sa Mwen te di l 'bay do-- tcheke pou miniskil y ak miniskil n. Sa a pa santi tankou bon eksperyans itilizatè, menm si. Kite m 'mande pou epi aksepte swa pi ba ka oswa ka anwo kay la. Se konsa, li vire soti, ou ta ka vle yo di yon bagay tankou nan grafouyen, tankou literalman oswa C egal egal kapital sèl y te site. Vire soti, C pa gen sa a mo kle literal oswa. Men, li fè sa ki gen de ba vètikal. Ou gen yo kenbe Shift anjeneral, si w ap itilize yon klavye ameriken, ak frape ba a vètikal kle pi wo a kle ou retounen. Men, sa a ba vètikal ba vètikal vle di oswa. Si, pa kontra, nou te vle yo di, epi, tankou nan grafouyen, nou ta ka fè comercial comercial. Sa pa fè okenn sans lojik isit la, paske yon moun pa t 'kapab pètèt te tape tou de y ak miniskil y ak kapital Y kòm karaktè a menm. Se konsa, oswa se sa nou gen entansyon isit la. Se konsa, si m 'fè sa a nan tou de kote, oswa c egal egal kapital N, kounye a relance, fè lojik, relance lojik. Koulye a, mwen ka tape y. Apre sa, mwen ka fè l 'ankò ak kapital Y, oswa N. kapital Apre sa, mwen ta ka ajoute nan plis konbinezon toujou. Se konsa, sa a se yon lojik pwogram tèl degre ke kounye a Mwen tcheke lojikman pou sa a valè oswa sa a valè. Apre sa, mwen pa bezwen, nesesèman, vini ak de plis ifs oswa lòt moun ifs. Mwen ka aktyèlman konbine kèk nan la ki gen rapò lojik ansanm nan fason sa. Se konsa, sa ta pi bon fèt ke tou senpleman di, si C egal pi ba ka y, enprime repons lan se wi, lòt bagay si c egal kapital Y, enprime repons lan se wi, lòt bagay si c egal lower-- nan lòt mo, ou pa bezwen gen pi plis ak plis branch yo. Ou ka konbine kèk nan ekivalan a branch lojikman, tankou nan fason sa a. Se konsa, kite a pran yon gade nan sèlman yon sèl engredyan final la, yon sèl final konstwi, ki C pèmèt. Epitou, n ap tounen vin nan nan tan kap vini bay lòt moun toujou. Lè sa a, nou pral konkli pa gade nan pa Correct nan code-- ap resevwa kòd nan work-- men desen an nan kòd, w'a plante moun grenn byen bonè nan. Se pou m 'ale pi devan epi louvri moute yon dosye nouvo isit la. Ou konnen ki sa? Mwen pral re-aplike ke pwogram menm, men lè l sèvi avèk yon konstwi diferan. Se pou m 'byen vit bay tèt mwen aksè a gen ladan CS50.h pou bibliyotèk la CS50, estanda io.h pou printf. Ban m 'int anile prensipal m' yo. Lè sa a, sou isit la, se pou m 'ale pi devan epi fè sa. Char c vin jwenn Char, jis tankou anvan. Apre sa, mwen pral sèvi ak yon nouvo konstwi now-- chanje, sou sa ki karaktè? Se konsa, switch se kalite tankou oblije chanje yon tren tren an. Oswa, reyèlman, li se kalite yon si lòt bagay, si lòt bagay si, men ekri yon ti jan yon lòt jan. Yon switch sanble tankou sa a. Ou gen switch, ak Lè sa a sa pèsonaj oswa nimewo ou vle fè yon gade nan, Lè sa a, kèk aparèy òtopedik Curly renmen nan Grafouyen, jis di fè bagay sa a. Lè sa a, ou gen ka diferan. Ou pa sèvi ak si ak lòt bagay. Ou literalman sèvi ak ka a mo. Epi ou ta ka di yon bagay konsa. Se konsa, nan ka a nan yon y miniskil, oswa nan ka a nan yon kapital Y, ale pi devan epi enprime soti wi. Lè sa a, kraze soti nan switch la. Sa a li. Nou ap fè. Lòt Bagay si, se konsa pale, pi ba n ka, oswa kapital N, Lè sa a, ale pi devan epi ekri an lèt detache soti pa gen okenn, ak Lè sa a kraze. Else-- ak sa a kalite se nan ka default indeed-- printf error-- ak jis pou bon mezi, menm si lojikman repo sa a se pa nesesè paske nou ap nan fen a nan switch la de tout fason, Mwen kounye a kraze soti nan switch la. Se konsa, sa sanble yon ti kras diferan. Men, lojikman, li nan aktyèlman ekivalan. Epi poukisa ou ta itilize yon sèl sou lòt la? Pafwa, jis preferans pèsonèl, pafwa estetik yo, si mwen gade nan sa a kounye a, gen nan yon bagay yo dwe te di pou la lizibilite nan kòd sa a. Mwen vle di, pa janm lide lefèt ke sa a kòd se nouvo nan anpil nan nou nan sal la. Men, li jis kalite se trè. Ou wè miniskil y, kapital Y, pi ba ka n, kapital N default, li jis kalite sote soti nan ou nan yon fason sa, joui, petèt egzanp lan anvan ak ifs yo, ak ba pou fèmen yo vètikal, ak ifs yo lòt bagay, pa ta ka genyen. Se konsa, sa a se reyèlman yon kesyon de pèsonèl chwa, reyèlman, oswa lizibilite, nan kòd la. Men, an tèm de fonksyonalite, kite m ' ale pi devan epi fè yon switch, dot koupe switch, e kounye a, tape nan miniskil y, kapital Y, miniskil n, kapital N, David, rekoumanse paske se sa pa yon karaktè sèl. Se pou yo fè x, erè, jan yo espere. Epi, logically-- ak sa a se yon bagay Mwen ta ankouraje nan general-- menm si nou ap sèlman grate a sifas nan kèk nan karakteristik sa yo. E li pa ta ka evidan lè ou tèt ou chita nan klavye a, ki jan fè travay sa a? Ki sa ki sa a ta fè? Bagay la bèl sou li te gen yon laptop, oswa Desktop, oswa aksè nan yon òdinatè ak yon du, epi ki gen yon editè Kòd tankou sa a, se ou ka prèske toujou reponn sa yo kesyon pou tèt ou jis pa eseye. Pou egzanp, si retorisyen nan kesyon nan men te, sa k ap pase si ou ta bliye deklarasyon repo ou a? Ki se aktyèlman yon trè komen bagay yo fè, paske li pa gade tankou ou reyèlman bezwen yo. Yo pa reyèlman ranpli ou te panse tankou yon parantèz oswa yon Curly atèl fè. Se pou nou ale pi devan epi compile kòd la ak wè. Se konsa, asire switch, dot koupe switch. Se pou nou tape nan pi ba ka y, ka nan tèt, Antre nan. Se konsa, mwen tape y. Pwogram nan te di repons lan se wi, non, erè, tankou si li te chanje lide li yo. Men, li kalite te, paske sa k ap pase ak yon switch se ka a premye ki matche ak esansyèlman vle di, hey òdinatè, egzekite tout nan kòd la anba li. Men, si ou pa di repo, oswa pa di repo, wi ou non di repo, òdinatè a ki pral kònen nan tout nan liy sa yo ak egzekite tout nan yo jouk li vin ak sa yo ki atèl Curly. Se konsa, fren yo yo, tout bon, sa nesesè. Men, yon Takeaway isit la se, lè gen dout, eseye yon bagay. Petèt sove kòd ou a premye, oswa sove li nan yon dosye siplemantè si w ap reyèlman enkyete w sou pitye moute epi ki gen refè travay la ke ou konnen ap travay. Men, eseye bagay sa yo. Nou pa bezwen kòm pè, petèt, nan sa ki òdinatè a ta ka fè, oswa ke ou ta ka kraze yon bagay. Ou ka toujou retounen tounen nan kèk vèsyon pi bonè. Se konsa nou fini pa gade nan desen an nan kòd. Nou gen kapasite sa a kounye a yo ekri kondisyon, ak pasan ekri, ak varyab, ak fonksyon apèl. Se konsa, franchman, nou ap kalite tounen nan kote nou te yon semèn de sa ak grafouyen, kwake ak yon textuelle mwens konvenkan anviwònman pase Scratch pèmèt. Men, remake ki jan byen vit nou te akeri ki vokabilè, menm si li nan pral pran yon ti tan koule nan, pou nou kapab kounye a itilize vokabilè sa a yo ekri pwogram plis enteresan. Li kite yo pran yon etap ti bebe nan direksyon sa, jan sa a. Kite m 'ale pi devan epi kreye yon dosye nouvo isit la. Mwen pral rele sa a prototype.c, ak prezante la pou premye fwa, kapasite nan fè fonksyon pwòp ou yo. Gen kèk nan ou ta ka genyen fè sa a ak grafouyen, kijan ou kapab kreye ou pwòp blòk koutim nan grafouyen, ak Lè sa a trennen yo nan plas tout kote ou ta renmen nan C. Ak nan pifò pwogram lang, ou ka fè egzakteman that-- fè fonksyon pwòp ou a, si yo pa deja egziste. Se konsa, pou egzanp, kite m 'ale pi devan epi yo genyen ladan CS50.h, epi yo genyen ladan estanda io.h, int anile prensipal la. Epi, koulye a nou gen yon kontneur pare yo ale. Mwen kenbe bagay sa yo enprime tankou y'ap nonmen non moun nan jodi a. Apre sa, ki santi l like-- pa ta dwe nice si gen te yon fonksyon rele ekri an lèt detache? Mwen pa gen yo sèvi ak printf. Mwen pa gen sonje tout kòd yo fòma. Poukisa pa mwen menm, oswa poukisa pa t 'yon moun devan mwen, kreye yon ekri an lèt detache fonksyon rele Non, ki bay kèk non, tou senpleman simagri li soti? Nan lòt mo, si mwen di, hey, òdinatè, ban m 'yon fisèl pa mande itilizatè a pou sa yo, via fonksyon jwenn fisèl CS50 la. Hey, òdinatè, mete sa fisèl nan varyab la nan bò men gòch, epi rele li s. Lè sa a,, hey òdinatè, ale pi devan epi enprime ke non moun nan, fè. Koulye a, li ta dwe nice, paske pwogram sa a, justesse yo te rele, di m 'ki sa li sipoze fè pa fason pou non moun fonksyon an. Kite m 'ale, epi fè pwototip, Antre nan. Epi, malerezman, sa a se pa ale nan vole. Prototype.c, liy 7, pèsonaj 5, erè, enplisit deklarasyon nan non ekri an lèt detache fonksyon se valab nan C99, C99 sa vle di yon vèsyon nan C ki te vin soti nan 1999. Sa a tout. Se konsa, mwen pa konnen ki sa tout bagay sa yo vle di ankò. Men, mwen rekonèt erè nan wouj. Sa a trè evidan. Epi li sanble ke ak pèsonaj la vèt isit la, pwoblèm nan se ak non ekri an lèt detache, louvri paren a, paren fèmen, semi-kolon. Men, enplisit deklarasyon fonksyon nou te fè wè yon ti tan pi bonè. Sa vle di, tou senpleman, ki rezone pa konnen ki sa mwen vle di. Mwen te itilize yon mo vokabilè ke li nan pa janm wè oswa te anseye anvan. Se konsa, mwen bezwen anseye li sa ki fonksyon sa a vle di. Se konsa, mwen pral ale pi devan epi fè sa. Mwen pral ale pi devan epi aplike fonksyon pwòp mwen rele Enprime Non. Apre sa, mwen pral di, jan sa a, ki li fè sa sa a, printf, hello, pousan a, antislach n, non, semi-kolon. Se konsa, sa t 'mwen jis fè? Se konsa, li vire soti, nan aplike fonksyon pwòp ou a, nou kalite prete kèk nan estrikti a menm jan ak prensipal ke nou te jis te pran pou yo akòde, epi mwen konnen jis kopye ak kole bèl anpil ki sa Mwen te ekri nan tan lontan an. Men, remake modèl la isit la. Int, Main, vid, nou pral toumante apa anvan lontan sa ki aktyèlman vle di. Men, pou jodi a, jis remake paralelis la. Vid, non ekri an lèt detache, Non fisèl, se konsa gen nan yon mo kle koulè wouj violèt, ki nou ap ale nan kòmanse rele yon kalite retou, non an nan fonksyon an, ak Lè sa a D 'a. Se konsa, aktyèlman, nou ka distile sa a kalite tankou semèn pase a kòm, sa a se non an oswa nan algorithm nan kòd la nou ap ale nan write-- la algorithm kache kòd la nou ap ale nan ekri. Sa a se opinyon li yo. Sa a se pwodiksyon li yo. Fonksyon sa a, non ekri an lèt detache, se fèt yo pran yon afè rele, oswa kèlkeswa sa, kòm D ', ak Lè sa a anile. Li pa retounen anyen, tankou jwenn fisèl oswa pou w jwenn int fè. Se konsa, li k ap pase nan men m 'yon bagay tounen. Li nan jis pral gen yon efè segondè, se konsa pale, nan enprime non yon moun nan. Se konsa, avi, liy 7, mwen ka rele ekri an lèt detache. Liy 10, mwen kapab defini oswa aplike Non ekri an lèt detache. Men, malerezman, sa a, se pa ase. Kite m 'ale pi devan epi compile sa a apre ekonomize. Whoa, kounye a, mwen te fè l ' vin pi mal, li ta sanble. Se konsa, enplisit deklarasyon Non fonksyon ekri an lèt detache se valab. Epi, ankò, gen nan plis erè. Men, jan mwen avèti pi bonè, menm si ou jwenn akable ak, oswa yon ti kras tris yo wè anpil erè, konsantre sèlman sou premye a okòmansman, paske li ta ka jis te gen yon efè kaskad. Se konsa, C, oswa rezone plis espesyalman, toujou pa rekonèt non ekri an lèt detache. Epi sa a, paske rezone, pa konsepsyon, se kalite bèbè. Li sèlman fè sa ou di l 'fè. Epi, se sèlman fè sa yo nan lòd la nan kote ou di l 'bay fè. Se konsa, mwen te defini prensipal la sou liy kat, tankou nou ve yo te fè bèl souvan. Mwen te defini Non ekri an lèt detache sou liy 10. Men, mwen ap eseye sèvi ak Non ekri an lèt detache sou liy sèt. Li nan twò bonè, pa egziste ankò. Se konsa, mwen ta ka entelijan, yo epi yo dwe tankou, OK, se konsa kite yo jis jwe ansanm, yo epi li deplase Non ekri an lèt detache moute isit la, ak re-konpile. O Bondye. Li te travay. Se te tankou senp tankou sa. Men, lojik la se egzakteman sa. Ou gen yo anseye rezone sa li se pa defini fonksyon la an premye. Lè sa a, ou ka sèvi ak li. Men, franchman, sa a santi l tankou yon pant glise. Se konsa, chak fwa mwen kouri nan yon pwoblèm, Mwen jis ale nan mete aksan sou ak fè kopi kòd la Mwen te ekri, koupe l epi kole li moute isit la. Epi, siman, nou te kapab konbine kèk senaryo kote yon fonksyon ta ka bezwen rele yon lòt. Epi ou jis pa ka mete tout fonksyon pi wo a tout lòt. Se konsa, li vire soti gen nan yon solisyon pi bon. Nou ka kite sa a dwe. Epi, franchman, li nan jeneralman bèl, ak pratik, ak bon konsepsyon yo mete prensipal premye, paske, ankò, prensipal jis tankou lè vèt drapo klike, ki se fonksyon an ki vin egzekite pa default. Se konsa, ou ta ka kòm byen mete li nan tèt la nan dosye a se konsa ke lè ou oswa nenpòt lòt moun parèt nan dosye a ou konnen ki sa k ap pase sou jis pa lekti prensipal an premye. Se konsa, li vire soti, nou ka di rezone dinamik, hey, rezone, sou liy kat, Mwen te pwomèt aplike yon fonksyon rele Enprime Non ki pran yon non fisèl rele kòm D ', epi retounen pa gen anyen, anile. Apre sa, mwen pral jwenn otou nan mete ann aplikasyon li pita. La ap vini Main. Main kounye a sou liy 9 ka itilize Ekri an lèt detache Non paske rezone se kwè ki, evantyèlman, li pral kontre definisyon an nan aplikasyon an nan Enprime Non. Se konsa, apre ekonomize dosye mwen, se pou m 'ale pi devan epi fè pwototip, sanble bon moman sa a. Dot koupe, pwototip, kite m ' ale pi devan epi tape nan yon non. David, alo David, Zamila, alo Zamila, epi, tout bon, kounye a li ap travay. Se konsa, engredyan nan isit la se ke nou te te fè yon fonksyon koutim, tankou yon koutim Grafouyen blòk nou ap rele li. Men, kontrèman ak grafouyen kote ou ka jis kreye li epi yo kòmanse lè l sèvi avèk li, kounye a nou gen yo dwe yon ti kras pi plis pedant, ak aktyèlman tren rezone yo sèvi ak, oswa ou kapab espere li. Koulye a, kòm yon sou kote, poukisa tout tan tout tan sa a gen nou te jis je fèmen sou lafwa ki gen ladan CS50.h, epi ki gen ladan estanda io.h? Oke, li vire soti, nan mitan yon kèk lòt bagay, tout sa a, se nan sa yo h dot dosye, ki rive yo dwe dosye. Yo ap header dosye, se konsa pale. Yo toujou ap ekri nan C. Men, yo ap yon kalite diferan nan dosye-a. Pou kounye a, ou ka bèl anpil asime bagay ki andedan nan CS50.h se kèk yon sèl-Materio ki kouvri tankou sa a, pa pou fonksyon rele Enprime Non, men pou Jwenn fisèl, Jwenn Flote, ak yon lòt moun kèk. E genyen anpil prototip ki similè yo, youn Materio ki kouvri, andedan nan estanda io.h pou printf, ki se kounye a nan pwòp mwen Enprime Non fonksyon. Se konsa, nan lòt mo, tan sa a tout antye nou te jis te je fèmen w kopye e kole gen ladan sa a, gen ladan yo sa, sa k ap pase sou? Moun sa yo se jis kalite endikasyon a sonnen tankou sa ki fonksyon yo, tout bon, aplike, jis yon lòt kote nan dosye diferan yon lòt kote sou sistèm nan. Se konsa, nou te aplike Non ekri an lèt detache. Li fè sa ki gen efè segondè sa a nan enprime yon bagay sou ekran an. Men, li fè sa pa aktyèlman men m 'yon bagay tounen. Ki jan nou ale sou mete ann aplikasyon yon pwogram ki men m 'yon bagay tounen ankò? Oke, kite la eseye sa a. Kite m 'ale pi devan epi aplike yon dosye rele return.c pou nou ka demontre kouman yon bagay tankou Jwenn fisèl, oswa Jwenn Int, se aktyèlman retounen yon bagay tounen nan itilizatè a. Se pou nou ale pi devan epi defini int anile prensipal la. Epi, ankò, nan tan kap vini an, nou pral eksplike ki sa sa int e ke anile se aktyèlman fè. Men, pou jodi a, nou pral pran li pou yo akòde. Mwen pral ale pi devan epi printf, pou yon eksperyans itilizatè bon, x se. Lè sa a, mwen pral rete tann pou la itilizatè yo ban m 'x ak jwenn int. Lè sa a, mwen pral ale pi devan epi enprime soti x nan kare a. Se konsa, lè ou gen sèlman yon entènèt klavye, moun souvan sèvi ak kawòt nan ti kras senbòl sou klavye a ki reprezante sou pouvwa a nan, oswa ekspozan an nan. Se konsa, x au se prezan mwen. Epi, koulye a mwen pral fè sa. Mwen te kapab jis do-- sa ki nan x okib? x au se x fwa x. Epi nou te sa a kèk tan de sa deja jodi a. Sa a pa santi tankou tout sa ki pwogrè anpil. Ou konnen ki sa? Se pou nou ogmante kèk nan lide ke soti nan dènye fwa nan distraksyon. Pa li ta dwe nice si gen nan yon fonksyon rele kare ki fè egzakteman sa? Li toujou, nan fen a jou, fè matematik la menm. Men, kite a abstrè lwen lide a nan pran yon sèl nimewo miltipliye pa yon lòt, ak jis bay li yon non, tankou kare sa a valè. Epi, nan lòt mo, nan C, se pou yo kreye yon fonksyon rele kare ki fè egzakteman sa. Li k ap pase yo dwe rele kare. Li nan pral pran yon int. Epitou, n ap pral jis rele l 'n, pa default. Men, nou te kapab rele l 'anyen nou vle. Tout moun ki li pral yo fè, literalman, se retounen rezilta a nan n fwa n. Men, paske li se retounen yon bagay, ki se mo kle a nan koulè wouj violèt nou te pa janm wè anvan, mwen menm sou liy 11, pa ka jis di anile moman sa a. Vid, nan egzanp lan nou jis te wè olye nan non ekri an lèt detache, jis vle di, fè yon bagay. Men, pa men m 'yon bagay tounen. Nan ka sa a, mwen vle retounen n fwa n, oswa kèlkeswa sa se sa ki, ki kantite. Se konsa, mwen pa ka di, hey, òdinatè, M'a tounen soti pa gen anyen, anile. Li nan ale nan retounen, pa nati, yon int. Se konsa, sa a, se tout sa ki k ap pase sou isit la. D 'nan kare a pwal yon int. Se konsa, ke nou ka sèvi ak li, li te gen yon non, pèsonaj Li nan ale nan pwodiksyon yon int ki pa bezwen yon non. Nou ka kite li nan prensipal la, oswa moun ki va se lè l sèvi avèk m 'nan sonje sa a valè si nou vle ak varyab pwòp li yo. Epi, ankò, nouvo a sèlman mo kle isit la se Retounen. Apre sa, mwen jis ap fè kèk matematik. Si m 'reyèlman te vle fè nesesè, Mwen te kapab di pwodwi int vin n fwa n. Lè sa a, mwen te kapab di, retounen pwodwi. Men, ankò, nan pwen mwen pi bonè nan sa a jis pa yo te bon design-- tankou, poukisa prezante yon non, yon senbòl, tankou pwodwi, jis imedyatman retounen li? Li se yon cleaner ti kras, yon ti kras pi sere, se konsa konsa pale, jis vle di retounen n fwa n, debarase m de liy sa a tout ansanm. Lè li nan jis mwens Kòd li, mwens opòtinite pou erè. Li kite yo wè si sa a aktyèlman kounye a ap travay. Koulye a, mwen pral ale pi devan epi fè retou. Uh-oh, enplisit deklarasyon fonksyon. Mwen te fè erè sa a anvan, okenn kontra gwo. Kite m 'jis tape, oswa mete aksan sou ak kopi, egzak menm fonksyon pwototip a, oswa siyati, nan fonksyon an moute isit la. Oswa mwen te kapab deplase fonksyon a tout antye. Men, sa a yon ti kras parese. Se konsa, nou pa pral fè sa. Koulye a, kite m 'fè retounen ankò, dot koupe retou. x se 2. x au se 4. x se 3. x au se 9. Ak fonksyon an sanble kounye a yo dwe ap travay. Se konsa, sa ki nan diferans ki genyen isit la? Mwen gen yon fonksyon ki yo rele kare, nan ka sa a, ki mwen mete nan yon opinyon. Apre sa, mwen jwenn tounen yon pwodiksyon. E ankò, deja, si Mwen louvri lòt egzanp nan soti nan pi bonè, ki te rele prototype.c, Mwen te gen Non ekri an lèt detache, ki tounen anile, se konsa pale, Oswa li tounen pa gen anyen, ak tou senpleman te gen yon efè segondè. Se konsa, sa k ap pase sou isit la? Oke, konsidere fonksyon an jwenn fisèl sèlman pou moman yon. Nou te ap lè l sèvi avèk fonksyon an jwenn fisèl nan fason sa a. Nou te gen yon fonksyon jwenn fisèl, tankou gen ladan CS50.h, gen ladan estanda io.h, int, prensipal yo, anile. Lè sa a, chak fwa mwen te rele jwenn fisèl konsa byen lwen, Mwen te di yon bagay tankou, fisèl la vin jwenn fisèl, paske jwenn string-- kite a rele sa a fisèl jwenn get.c-- tèt li retounen yon kòd ke mwen ka Lè sa a sèvi ak, ak di, hello, vigil, pousan nan, antislach n, la. Se konsa, sa a se egzanp nan menm, reyèlman, ke nou te pi bonè. Se konsa, jwenn fisèl retounen yon valè. Men, yon ti moman de sa, enprime fisèl pa retounen yon valè. Li tou senpleman gen yon efè segondè. Se konsa, sa a se yon diferans fondamantal. Nou te wè diferan kalite fonksyon kounye a, kèk nan yo ki te retounen valè, kèk nan yo ki pa fè sa. Se konsa, petèt li nan fisèl, oswa int, oswa flote. Oswa petèt li nan jis anile. Apre sa, diferans lan se ki fonksyon sa yo ki jwenn done epi retounen se yon valè yo aktyèlman pote yon bagay tounen nan tab la, se konsa pale. Se konsa nou ale pi devan epi gade nan yon sèl seri final nan egzanp ki bay yon sans, kounye a, nan ki jan nou ta ka, tout bon, abstrè pi bon, ak pi bon, ak pi bon, oswa plis, ak plis ankò, ak plis ankò, yo nan lòd yo ekri, finalman, pi bon kòd. Se pou nou ale pi devan, ak nan Lespri Bondye a nan grafouyen, fè sa ki annapre yo. Kite m 'ale pi devan epi yo genyen ladan CS50.h ak estanda IO.h. Kite m 'ale pi devan epi bay tèt mwen yon int, prensipal yo, anile. Ak kite m 'ale pi devan, rele cough.c sa a. Ak kite m 'ale pi devan epi jis tankou grafouyen, enprime soti tous / n. Apre sa, mwen vle fè sa twa fwa. Se konsa, mwen, nan kou, jis ale a kapab bay kopi ak keratin twa fwa. Mwen kounye a pral fè touse dot tous koupe. Se pou nou bay tèt mwen yon ti kras plis chanm isit la, Antre, tous, tous, tous. Genyen, evidamman, deja yon opòtinite pou amelyorasyon. Mwen te kopye ak kole yon fwa kèk jodi a. Men, sa te sèlman Se konsa, mwen pa t ' gen tape karaktè kòm anpil moun. Mwen toujou chanje sa liy sa yo nan kòd ye. Liy sa yo twa yo ki idantik, ki santi l parese ak tout bon se, se ak se pwobableman pa apwòch dwat la. Se konsa, avèk ki sa engredyan nou te ka amelyore kòd sa a? Nou pa gen a kapab bay kopi ak kòd keratin. Epi, tout bon, nenpòt ki lè ou santi ou tèt ou kopye e kole, epi yo pa menm chanje kòd, chans yo se gen nan yon fason pi bon. Epi, tout bon, gen. Kite m 'ale pi devan epi fè yon pou riban, menm si sentaks la pa ta ka vini natirèlman ankò. Fè sa twa fwa, tou senpleman pa fè annapre nan ak mwen rive konnen sa a soti nan pratik. Men, nou gen yon nimewo nan egzanp kounye a. Men, ou pral wè sou entènèt plis referans toujou. Sa a se sentaks la sou liy 6, ki anpil tankou Grafouyen ki repete blòk, repete yo twa fwa yo. Li se yon ti kras majik pou kounye a. Men, sa a pral jwenn plis, ak plis ankò yo konnen yo. Epi, se k ap pase yo repete liy uit twa fwa, se konsa ke si mwen re-konpile fè tous, dot koupe tous, tous, tous, tous. Li toujou ap travay menm jan an. Se poutèt sa se tout bon epi li bon. Men, sa a pa trè distrè. Li nan parfe kòrèk. Men, li santi l tankou gen te kapab yon opòtinite, tankou nan mond lan nan Grafouyen, nan kalite kòmanse ajoute kèk Semantics isit la se konsa ke Mwen pa jis gen kèk pou riban, ak yon fonksyon ki di touse, oswa touse. Ou konnen ki sa? Kite m 'eseye gen yon ti kras pi fre pase sa, ak aktyèlman ekri yon fonksyon ki gen kèk efè segondè, rele l 'ap touse. Epi, se pa pran opinyon, ak retounen pa gen okenn valè kòm pwodiksyon. Men, ou konnen ki sa li fè? Li fè sa ki sa a men printf, quote unquote, touse. Epi, koulye a moute isit la, mwen pral ale pi devan epi pou int, mwen vin zewo, mwen mwens pase 3, mwen plis plis. Mwen pral pa fè printf, ki se joui yon aplikasyon nivo ki ba detay. Mwen pa pran swen ki jan yo touse. Mwen jis vle yo sèvi ak fonksyon an tous. Apre sa, mwen jis ale nan rele tous. Koulye a, remake dikotomi nan. Lè ou rele yon fonksyon, si ou pa fè sa vle bay li entrain, totalman amann. Ou menm, fè paren louvri, fèmen paren, epi ou ap fè. Lè ou defini yon fonksyon, oswa deklare pwototip yon fonksyon a, si ou konnen davans li pa pral pran nenpòt agiman, di anile nan sa yo parantèz la. Epi sa fè sèten ke ou pa pral aksidantèlman sèvi mal ak li. Kite m 'ale pi devan epi fè tous. Epi, nan kou, mwen te fè yon erè. Dammit, gen nan ki enplisit deklarasyon an. Men, sa a amann. Se yon ranje fasil. Mwen jis bezwen pwototip a moute pi wo nan dosye mwen pase mwen aktyèlman lè l sèvi avèk li. Se konsa, kounye a kite m 'fè tous ankò, bèl. Koulye a, li fonksyone. Fè tous, tous, tous, tous. Se konsa, ou ta ka panse ke nou ap reyèlman jis plis pase jeni pwoblèm sa a. Epi, tout bon, nou ye. Sa a se pa yon bon kandida nan yon pwogram nan moman sa a pou rfaktorizasyon, ak fè sa ki nan rele yerarchize dekonpozisyon, ki kote ou pran kèk kòd, ak Lè sa ou kalite faktè bagay sa yo soti, se konsa yo enpute plis Semantics yo: ak jam itilize li finalman long tèm. Men, li la yon blòk bilding nan direksyon pwogram pi plis sofistike ke nou ap kòmanse ekri anvan lontan ki pèmèt nou gen vokabilè a ak ki ekri pi bon kòd. Epi, tout bon, se pou yo wè si nou pa ka jeneralizasyon sa a pi lwen. Li sanble yon ti kras moun k'ap bwete se mwen menm, prensipal yo, bezwen enkyete sou sa a reprize pou riban, ak rele tous ankò e ankò. Poukisa nou pa mwen ka jis di tous, tanpri touse twa fwa? Nan lòt mo, poukisa yo pa kapab mwen jis bay opinyon yo touse ak fè sa? Poukisa nou pa mwen ka jis di, nan tous prensipal twa fwa. Epi, koulye a, sa a se kalite majik. Li trè repete isit la. Epitou, se, tout bon, yon etap ti bebe. Men, jis kapasite nan di sou liy uit, touse twa fwa, li nan jis pou pi plis lizib. Epi, plis, mwen pa gen konnen oswa pran swen ki jan tous se aplike. Epi, tout bon, pita nan la tèm ak pou pwojè final la, si ou atake yon pwojè ak yon kondisip klas oswa de kamarad klas, ou pral reyalize ke w ap ale nan gen, oswa ou ta renmen, divize travay la. Apre sa, w ap ale nan vle deside nan avanse, ki moun ki k ap pase yo fè sa, ak nan ki moso? Li pa t 'li dwe nice si ou, pou egzanp, pran chaj nan ekri prensipal yo, fè. Apre sa, kolokasyon ou, oswa ou patnè plis jeneralman, pran swen nan mete ann aplikasyon tous. Ak divizyon sa a, sa yo mi nan distraksyon, oswa kouch nan distraksyon si ou pral, yo se super pwisan, paske espesyalman pou pi gwo, plis pwogram konplèks ak sistèm, li pèmèt moun miltip yo bati bagay sa yo ansanm, epi finalman stitched travay yo ansanm nan fason sa. Men, nan kou, nou bezwen kounye a ranje tous. Nou bezwen di tous sa, hey, ou konnen ki sa? W ap ale nan bezwen pran yon input-- Se konsa, pa anile, men int ak kounye a. Se pou nou ale pi devan epi mete nan touse int la. mwen vin zewo. mwen se mwens pase konbyen fwa. M 'te di twa anvan. Men se pa sèlman sa m 'vle. Mwen vle touse yo dwe jeneralize sipòte nenpòt ki kantite itérations. Se konsa, tout bon, li nan n ke mwen vle, tou sa itilizatè a di m '. Koulye a, mwen ka ale pi devan epi di ekri an lèt detache tous. E pa gen pwoblèm ki nimewo itilizatè a pase nan, Mwen pral repekte ke anpil fwa. Se konsa, nan fen a nan jounen an, pwogram se idantik. Men, remake tout bagay sa a te kapab menm gen nan yon lòt dosye-a. Vreman vre, mwen pa konnen nan la moman ki jan printf se aplike. Mwen pa konnen nan moman sa a ki jan jwenn fisèl, oswa pou w jwenn int, oswa pou w jwenn flote yo nan faz egzekisyon. Apre sa, mwen pa vle wè yo sou ekran m 'yo. Kòm li se, mwen kòmanse yo konsantre sou pwogram m 'yo, pa sa yo fonksyon. Se konsa, tout bon, le pli vit ke ou kòmanse faktè Kòd tankou sa a soti, te kapab nou menm deplase tous nan yon dosye apa? Yon lòt moun te kapab aplike li. Epi ou ak pwogram ou vin an bèl anpil, ak anpil lizib, joui, reyèlman kat liy pwogram la a. Se konsa, kite yo ale pi devan kounye a , epi fè yon sèl plis chanjman. Remake pwototip mwen te chanje moute tèt. Se pou m 'ranje ke se konsa Mwen pa jwenn rele nan. Fè tous, kite m 'kouri tous yon fwa plis, toujou ap fè menm bagay la. Men koulye a,, remake nou gen yon engredyan pou yon vèsyon final la. Ou konnen ki sa? Mwen pa vle jis touse, nesesèman. Mwen vle gen yon bagay ki pi jeneral. Se konsa, ou konnen ki sa? Mwen vle fè sa a. Mwen vle gen, anpil tankou Grafouyen fè sa, yon blòk di, men se pa jis di yon bagay kèk kantite fwa. Mwen vle li vle di yon fisèl trè espesifik. Epi, Se poutèt sa, mwen pa fè sa vle l 'bay jis di tous. Mwen vle li yo di tou sa se fisèl te pase nan. Se konsa, remake, mwen te jeneralize sa a pou ke kounye a di santi l tankou yon bon repitasyon pou sa a, tankou grafouyen, pran de agiman, kontrèman ak grafonyen moun. Youn nan se yon kòd. Youn nan se yon int. Apre sa, mwen te kapab chanje yo. Mwen jis kalite tankou lide a nan di fisèl la an premye, ak Lè sa a konbyen fwa pita. Anile vle di li toujou pa retounen anyen. Sa yo se sèlman bò vizyèl efè, tankou ak [? Bò larivyè Jouden,?] yon efè segondè vèbal nan tap rele ke. Li toujou kontinye fè yon bagay n fwa, 0 jiska, men se pa egal a n. Sa vle di n manm fwa. Lè sa a, jis enprime soti kèlkeswa sa ki fisèl se. Se konsa, mwen te reyèlman jeneralize liy sa a nan kòd. Koulye a, ki jan mwen aplike fonksyon an tous? Mwen kapab fè tous anile. Apre sa, mwen ka toujou pran nan ki jan anpil fwa ou vle touse. Men, ou konnen ki sa? Mwen kapab kounye a bote vle di. Mwen ka rele di ak nan mo tous, pase nan n. Men, si mwen vle tou aplike, jis pou plezi, yon fonksyon etènye, Mwen kapab etènye kèk kantite fwa. Apre sa, mwen ka kenbe resèvi n, paske remake ke m nan kontèks sa a oswa sijè ki abòde sèlman egziste nan sa a fonksyon. Ak n nan yon kontèks sa a sèlman egziste nan sa a fonksyon isit la. Se konsa, nou pral tounen nan vini pwoblèm sa yo nan sijè ki abòde. Ak isit la, mwen jis pral di, achoo, ak Lè sa n fwa, semi-kolon. Epi, koulye a, mwen jis bezwen prete sa yo fonksyon siyati moute isit la. Se konsa, tous kòrèk. Anile etènye ki kòrèk kounye a. Apre sa, mwen toujou jis bezwen di. Se konsa, mwen pral di, di fisèl la, int n, semi-kolon. Se konsa, mwen te sou-Enjenieri nan èk soti nan pwogram sa a. Lè sa a pa fè sa nesesèman vle di sa a se sa ou ta dwe fè lè li ap ekri menm pi senp la pwogram yo. Pran yon bagay ki nan evidamman vrèman senp, reyèlman ti bout tan, ak re-aplike li lè l sèvi avèk fason twòp kòd. Men, ou pral aktyèlman wè, ak nan tan tounen gade dèyè sou egzanp sa yo, ak reyalize, o, sa yo se etap sa yo nou te pran yo aktyèlman jeneralizasyon, dekonpoze an faktè yon bagay soti, jouk nan fen a nan jounen an Kòd mwen an se aktyèlman trè rezonab. Paske si mwen vle touse twa fwa Lè sa a, etènye twa fwa, Mwen tou senpleman ale nan relance sa a, pwogram fè tous, epi kouri tous. Apre sa, mwen gen twa touse ak twa estènye. Se konsa, sa a se yon debaz paradigm, si ou pral, pou konbyen nou ta ka ale sou aktyèlman mete ann aplikasyon yon pwogram. Men, kite a jis wè kounye a sa li ye nou ve yo te fè tout tan sa a, ak sa kèk nan moso yo final yo dèyè kòmandman sa a ki senp. Nan fen jounen an, nou te te lè l sèvi avèk rezone kòm du nou an. Nou te ap ekri sous Kòd, konvèti li via rezone nan kòd machin. Apre sa, nou ve yo te lè l sèvi avèk Fè jis fasilite frap nou yo ke nou pa gen sonje moun enkantasyon nan rezone tèt li. Men, sa ki fè aktyèlman ap fè? Epi, nan vire, ki sa ki Rezone aktyèlman ap fè? Li sanble, menm si nou te senplifye diskisyon jodi a lè li di, ou pran kòd sous, pase li kòm D 'nan yon du, ki ba ou pwodiksyon nan machin Kòd, vire soti gen nan yon kèk etap diferan andedan la. Ak konpile k ap pase yo parapli a tèm pou yon pakèt antye nan etap. Men, kite a jis toumante sa a soti vrèman byen vit. Li sanble ke nou ve yo te fè plis bagay chak fwa mwen kouri nan yon pwogram, oswa chak fwa mwen konpile yon pwogram jodi a. Se konsa, pretretman refere a sa a men anyen nan yon pwogram C, kòm nou pral wè ankò e ankò, ki kòmanse ak sa a senbòl regle, oswa senbòl la hashtag isit la, vle di li nan yon preproseseur direktiv. Sa vle di, nan ka sa a, hey òdinatè, fè yon bagay ak sa a ranpli anvan ou aktyèlman konpile kòd m 'pwòp. Nan ka sa a, regle gen ladan se, se esansyèlman, fason C a nan li di: hey òdinatè, ale jwenn sa ki nan CS50.h epi kole yo isit la. Hey òdinatè, ale jwenn nan sa nan estanda io.h, tout kote ki sou la kondwi difisil, kole li isit la. Se konsa, bagay sa yo rive premye pandan pretretman. Apre sa, rezone fè tout bagay sa yo pou nou. Apre sa, li fè sa li tèlman reprize vit, ou pa fè sa menm wè kat bagay distenk pase. Men, sa a premye etap la sa yo. Ki sa ki aktyèlman k ap pase answit? Oke, ofisyèl nan pwochen te etap se konpile. Epi li vire soti ki konpile yon pwogram teknikman vle di pral soti nan sous kòd, bagay la nou te te ekri jodi a, nan yon bagay rele kòd asanble, yon bagay ki sanble yon ti kras diferan. Epi, an reyalite, nou ka wè sa a reyèl vit. Kite m 'aktyèlman ale nan IDE mwen. Kite m 'ale pi devan epi louvri hello.c, ki se pwogram an trè premye ak ki nou te kòmanse jodi a. Ak kite m 'ale pi devan epi kouri rezone yon ti jan diferan, rezone-a, hello.c, ki se aktyèlman ale nan ban m 'yon lòt hello.s dosye-a. Apre sa, nou pral pwobableman pa janm ankò wè sa a kalite kòd. Si ou pran yon pi ba nivo sistèm klas tankou CS61, ou pral wè yon anpil plis nan sa a kalite kòd. Men, sa a se lang natif asanble. Sa a se x86 ak lang asanble ki CPU a ki kache CS50 IDE aktyèlman konprann. Apre sa, skre kòm li fè sa gade, li se yon bagay òdinatè a konprann trè byen. Sub q, sa a se yon soustraksyon. Genyen mouvman yo. Gen nan rele nan fonksyon isit la, x Oring, se yon mouvman, yon ajoute, se yon pòp, yon retou. Se konsa, gen nan kèk trè enstriksyon nivo ki ba ki proseseur konprann ke Mwen mansyone pi bonè. Se pou sa ke Intel Anndan. Gen modèl nan zewo ak moun yo ki kat jeyografik sa yo arcanely remak bwèf, men yon ti jan ki byen nonmen non li, enstriksyon, se konsa pale. Sa se sa ki pase lè ou konpile kòd ou a. Ou jwenn tout pèp lang soti nan li, ki vle di twazyèm etap la se yo rasanble ke kòd asanble nan, finalman, machin zewo code-- ak sa yo, pa tèks ki nou jis te wè yon ti moman de sa. Se konsa, pre-pwosesis ki jwenn epi ranplase pen ak kèk lòt bagay. Konpile pran sous ou Kòd soti nan C, kòd sous ke nou te ekri, nan reyinyon kòd ki nou jis regarda nan. Rasanble pran ki asanble kòd nan zero ak moun yo ki CPU a vrèman pral konprann nan fen a nan jounen an. Apre sa, ki lye ak se etap ki sot pase a ki k ap pase pou nou ki ankò, tèlman vit nou pa fè sa menm notice-- ki di, hey òdinatè, pran tout zewo yo ak moun yo ki lakòz soti nan konpile kòd David la, ak fonksyon prensipal li nan ka sa a. Apre sa, hey òdinatè, ale jwenn tout nan zewo yo ak moun yo ke anplwaye la CS50 te ekri andedan bibliyotèk la CS50. Melanje sa yo ki nan ak David la. Apre sa, hey òdinatè, ale jwenn tout zewo yo ak moun yo ke yon lòt moun te ekri ane de sa pou printf. Epi ajoute sa yo nan la tout bagay, se konsa ke nou te te resevwa zewo mwen ak moun yo, nan zewo anplwaye CS50 nan ak moun yo, zewo yo printf ak moun yo, ak tout lòt bagay nou ap lè l sèvi avèk. Yo tout jwenn konbine ansanm nan yon sèl pwogram yo rele, nan ka sa a, hello. Se konsa, koulye a, nou pral jis sèvi ak élaboration la mo. E nou pral pran pou yo akòde ke lè nou di, konpile pwogram ou an, sa vle di, hey fè pre-pwosesis la, rasanble, ak ki lye ak. Men, gen nan aktyèlman kèk bagay juicy ale sou gen anba kapo a. Apre sa, espesyalman si w jwenn kirye kèk tan, ou ka kòmanse poking alantou nan pi ba nivo sa a. Men, pou kounye a, reyalize ke nan mitan takeaways yo pou jodi a yo se byen tou senpleman nan kòmanse nan yon pwosesis, pou trape konfòtab ak yon bagay tankou mond hello. Vreman vre, pi fò nan sa nou te fè jodi a sètènman pa pral koule nan Super vit. Epi li pral pran kèk tan, ak kèk pratik. Apre sa, chans yo se, ou pral sòt nan vle frape klavye ou oswa rele nan ekran an. Apre sa, tout nan sa a, se OK. Menm si, petèt eseye pa fè l 'nan bibliyotèk la anpil. Epi finalman, ou pral dwe kapab menm si, yo kòmanse wè menm modèl yo, tou de nan bon Kòd ke ou te ekri ak nan erè ke ou te fè fè yo. Apre sa, anpil tankou pwosesis la nan vin tounen yon TF oswa yon CA, se tankou, ou pral kòmanse jwenn pi bon ak pi bon nan wè modèl sa yo, ak jis rezoud ou pwòp pwoblèm finalman. Nan entre-temps la, pral gen anpil nan nou prete ou sipò, epi ou jwenn nan sa a. Ak nan ekri-UPS yo pou tout moun nan pwoblèm sa yo pral fè ou dwe gide nan tout nan kòmandman yo ke mwen sètènman konnen soti nan yon anpil nan pratik pa kounye a, men ka gen vole sou tèt yon sèl la pou kounye a. Epi sa a, totalman amann. Men, finalman, w ap ale yo kòmanse yo wè modèl deyò. E yon fwa ou jwenn sot pase tout nan a detay estipid, tankou parantèz, ak aparèy òtopedik Curly, ak semi-kolon, ak lòt bagay la, franchman, ki se pa nan tout entelektyèlman enteresan. Epi li se pa objektif la nan pran nenpòt ki klas Entwodiksyon. Li nan lide yo ke yo pral gen pwoblèm. Li nan pasan yo, ak nan kondisyon, ak fonksyon yo, ak plis ankò pwisan distraksyon an, ak faktè a nan kòd, ak desen an bon, ak bon an style, epi finalman Correct nan nan kòd ou, sa a, se finalman ale nan gen pwoblèm pi plis la. Se konsa, nan semèn kap vini, nou pral pran sa yo lide ke nou te wè nan premye nan grafouyen ak gen kounye a tradui C. Epitou, n ap kòmanse prezante premye a nan la domèn mond reyèl kou a. Nou pral konsantre sou mond lan nan sekirite, ak plis espesyalman chifreman, atizay la nan eskalade enfòmasyon. , Ak nan mitan premye a pwoblèm ou tèt ou pral jwenn yo ekri pi lwen pase jwe ak kèk nan sentaks la ak rezoud kèk lojik pwoblèm, finalman anvan lontan, se yo aktyèlman goumen, oswa ankripte, epi finalman dechifre enfòmasyon. Ak tout bagay nou te fè jodi a, pral san patipri ki ba nivo, se jis ale nan pèmèt nou pran yon sèl, ak yon sèl, ak yon sèl plis etap pi wo a nan direksyon ekri kòd ki pi enteresan ankò. Se konsa, plis sou sa semèn pwochèn. [VIDEO lèktur] -Ki Ou ka di m 'sou dènye fwa ou wè l '? -Ki Mwen kapab di, vrèman? Mwen vle di, li te tankou nenpòt ki lòt pre-pwodiksyon repetisyon, eksepte te gen yon bagay li te di nan fen la anpil ki kole avè m '. -Sa A te CS50. -Sa A yon tout moun koupe, bon travay sou repetisyon. manje midi -Sa a? -Yeah, Ou menm ak mwen kapab gen tan pwan yon sandwich nan yon ti jan. Kite m 'jis enteroje ak David vrèman byen vit. David li ye? David li ye? [FEN lèktur]