[MUSIC JOC] DAVID MALAN: Bine este CS50 iar acesta este sfârșitul de săptămână o. Așa că mi-ar plăcea să introducă fostul meu advisee, Andel Duff, care face nu numai iPhone 5 se află, precum și acest lucru pupitru, el face, de asemenea masini. Ansel DUFF: Cum merge, toată lumea? Vreau doar să vă spun un pic bit despre Formula SAE, de care am Sunt căpitanul. Este o echipă MIT. Vreau doar să-ți spun baieti un pic despre asta și sperăm genera un oarecare interes. Deci, permiteți-mi să treacă printr-o câteva lucruri despre echipa noastră. Deci suntem complet alerga elev, în care toate de proiectare membri, simula, de testare, și producător un subsistem a masinii. Avem propriile noastre magazin mașină și garaje, și N52-- sau rău, N51-- care este în aceeași clădire ca Muzeul de Știință MIT. Și noi suntem oameni care conduce masina. Există o competiție națională la începutul verii, și apoi există un schimb de focuri mici concursuri pe tot parcursul anului. Și apoi vom face instruirea conducătorilor auto zile pentru a obține noi membri cunoștință. Zilele noastre sunt construi pe Sâmbăta de la ora 11 la 20. Masa de prânz și cina sunt grija de, de la a Bertucci și Beantown respectiv. Avem o întâlnire săptămânală și seminar, care este de credit curs. Ceea ce este nou ca din acest semestru, și ea va fi, de asemenea, pentru semestrul următor, astfel încât să puteți trece-reg pentru asta. Și apoi ne-am proiectarea, magazin, și zile de CAD în timpul săptămânii, în timp ce membrii voința în mod independent Piese CAD, pentru stoc et cetera. Deci, pentru electric inginerie la echipa avem de tracțiune noastre, sistem de înaltă tensiune, care se desfășoară la un nominal 300 volți, care include motoare, controlorii de motoare, și baterii. Apoi, avem un mic sistem de tensiune, care se desfășoară la 12 volți, care include controale, CAN noduri, creierul box, și tabloul de bord. În ceea ce CS merge, ce facem au întreținere site-ul că avem nevoie de facut pentru evenimente, calitatea de membru modificări, noi imagini și materiale de PR. Și apoi ne-am cod care controlează masina de nostru de control al tractiunii, lansare control, control bord, Vectorizare cuplu, și sisteme de frânare regenerative, care rula în mod obișnuit în MATLAB, Simulink, LabView și. Spune-i tu un pic despre masina. Deci, este de aproximativ 500 de lire sterline. Este reguli limitate la 85 de kilowați. Acesta are 2 EMRAX 207 motoare în înapoi, unul pentru fiecare roata din spate. Ea are pachete de baterii construit la comandă de la celule A123 husă prismatice, în valoare totală de 300 de volți și 5,6 ore de kilowati. Și e acționare directă cu un raport de 2.64-1 unitate. Iată câteva imagini noi a luat de el la concurs. Iată conul spate, nas, și aici sunt motoarele, aceste discuri mari negre sub et mens manus. Iată un diapozitiv pe care am tras din schema noastră concurență. Și aceasta este doar compararea masina noastra la un două mașini disponibile în comerț, ca KTM XBOW, Ariel Atom, iar Caterha M 7-280. Dacă sunteți familiarizat cu preț, putere trage greutate, de dolari per cai putere, de dolari pe cuplu, și mașina noastră le suflă afară din apă. Dacă aveți întrebări, noteze această adresă de e-mail. Trage-ne un e-mail la fsae@mit.edu. Suntem fericiți să vorbească despre ceva ce ai vrea. Studenții de la Harvard sunt un fel a minorității în echipă. Dacă aveți întrebări cu privire la care vă rugăm să trage-ne un e-mail, fericit să vorbesc, și am de gând să se întoarcă pe la David. Multumesc. Apreciez, băieți. [Aplauze] DAVID MALAN: Ansel a petrecut vara de lucru cu noi aici, în campus, în CS50 în această vară. Și, în plus față de lucru pe lucruri cum ar fi becurile binare, de fapt, el într-adevăr a deschis noastră eyes-- și a mea în particular-- la ceea ce într-adevăr intersecția nu de hardware și software-ul poate fi. De fapt, o mulțime de lucruri pe care le doar turneu ce prin sunt în cele din urmă a creat pentru prima dată în software-ul, și apoi în cele din urmă fabricate în lumea reală în hardware. Deci, dacă sunteți interesat în explorarea că intersecție, poate dura până acest grup. Acum între timp, cei care sunt fani ai tehnologiei, și produse Apple din special știți că există fost câteva anunțuri ieri. Dar ne-am gândit să arate tu unul care a venit din câteva zile înainte ca nu s-ar fi văzut. JORGEN EGHAMMER: Stii, o dată în ceva vreme vine de-a lungul care schimbă modul în care trăim. Un dispozitiv atât de simplu și intuitiv folosindu-l simte aproape familiar. Introducerea 2015 catalog IKEA. Nu este o carte digitală sau un e-book, este o carte-carte. Primul lucru de remarcat este nici o cabluri, nu chiar un cablu de alimentare. 2015 Catalogul IKEA este complet încărcat, și de viață a bateriei este veșnică. Interfața este de 7,5 de 8 inch, dar se poate extinde la 15 de 8 inch. Navigarea se bazeaza pe simtul tactil Tehnologia pe care o puteți simți de fapt. Conținutul vine pre-instalat prin 328 de pagini de înaltă definiție de a inspira idei de mobilier acasă. Pentru a începe navigarea, pur și simplu atingeți și trageți. La dreapta la stânga pentru a merge mai departe, la stânga la dreapta pentru a muta înapoi. Observați altceva? Asta-i drept. Nu lag. Fiecare pagină de cristal sarcini instantaneu, indiferent de cât de repede va derula. Dacă doriți să obțineți o privire de ansamblu, doar țineți-l în palma ta, și folosind doar degetul mare, Viteza parcurge conținutul. Dacă ați găsit ceva pe care doriți să salvați pentru mai târziu, puteți pur și simplu un semn de carte. Și chiar dacă închideți aplicația, puteți găsi cu ușurință marcajul din nou. Amazing. [Râsete] [Aplauze] Așa că ne aduce la la sfârșitul săptămânii unul. Câteva anunțuri acum. Deci, de secționare este acum în curs de desfășurare. Du-te la acest URL aici cândva între acum și vineri la prânz pentru a specifica de fapt, dacă sunteți printre cei mai puțin confortabil, mai mult confortabil, sau undeva în între. Aceasta este de obicei una dintre cele lucruri pe care le doar un fel de știu. Și, de fapt, cei care sunt mai puțin confortabil, probabil, știți la fel de mult, aceia dintre voi care sunt mai mult confortabil știu la fel de mult, și din nou, dacă nu sunteți destul de sigur care din aceste cupe se încadrează în esti probabil undeva la mijloc. Dar fiți siguri, puteți schimba după câteva săptămâni dacă va fi nevoie. Între timp, pentru săptămâna viitoare nu începem secțiuni per se, dar super-secțiuni, care sunt deschise pentru toți studenții. Acest lucru vine duminică la o locație la fi anunțate pe site-ul curs vom avea unul pentru cei mai puțin confortabil, precum și unul pentru cei mai confortabil. Iar cei undeva în între Puteți alege care dintre cei doi, sau ambele, dacă doriți, să stea în pe. Iar accentul de cele va fi în cele din urmă pe C, care vom continua nostru conversație de azi. Problema stabilit între timp este 0 sperăm că în mâinile tale. Oficial până mâine, Joi, la prânz. Dacă nu bani într-o singură de dvs. de 5 zile de întârziere, care ar aduce până vineri la prânz. Problema set 1 între timp va fi postate pe site-ul cursului. Și acest lucru va fi primul nostru incursiune ca o clasă în C. Și că spec problema setat va umbla printr-o mulțime de mecanicii de ce Am început să vorbim despre luni, și vom continua vorbim despre ziua de azi. C, Linux, CS50 aparat, toate acestea va va astepta in caietul de sarcini. Orele de lucru între timp sunt în curs de desfășurare, în sala de mese de licență. Mergeți la această adresă URL aici pentru a vedea programa pentru seara asta și mâine, dacă doriți să se împărtășească. Întrebări Intre timp, astfel încât să au posibilitatea de a pune întrebări asincron, 24/7, dai seama că ești nu se limitează la secțiuni și birou ore, ci mai degrabă acest instrument aici, CS50 Discutați la care URL va fi cursului on-line software-ul de bord buletin, prin care puteți pune întrebări de colegii de clasă și, de asemenea, personal. Deci, ține cont de faptul că a resurselor, precum. Între timp, o tradiție începe această vineri. Așa cum poate ați zărit de la video de teaser de miercurea trecută, avem o tradiție mai în fiecare vineri în timpul mandatului de a lua aproximativ 50 de elevi și personal la un restaurant local, numit Foc și gheață, la care suntem de obicei, sa alăturat de către unii absolventi sau prieteni din industrie la general aspire pentru a face o mare clasă simt mai mic. Deci, este un prânz complet casual. O grămadă de noi, personalul mai ales, va juca scaune muzicale și chat-ul cu elevii despre 50, viata in afara de 50, viață în viitor, în lumea reală, Vorbesc despre oportunitățile de angajare cu prietenii din industrie. Deci, dacă doriți să vă alăturați nouă vineri, cap la acest URL aici. Spațiul este limitat, dar vom face acest lucru recurringly pe întreaga durată. Mergeți acolo pentru cs50.harvard.edu/rsvp. Și dacă nu te în de data aceasta, pentru a nu vă faceți griji. Vom face acest lucru din nou în săptămânile următoare, de asemenea. Deci, aceasta este imaginea am pictat săptămâna trecută, și tu ai fost, probabil, a abuza de până acum. Dar să încercați să vă conectați acest lucru acum la ceea ce vom face azi și mai departe. Aș putea avea un voluntar? În regulă, sau mai multe. Ce zici de aici cu privire la sfârșit, în tricoul albastru. Hai sus, care e numele tău? ALANA: Alana. DAVID MALAN: Alana. Deci, Alana, pentru doar un moment-- nice to meet tu-- este de gând să joace rolul din această funcție aici. Blocul violet care le-am numit până acum o funcție. Deci, ce am de gând să merg înainte aici și de a oferi Alana este un ecuson mic, pentru a face clar ce rol joci. Deci, va fi blocul zicem. Dacă doriți să mergeți mai departe și a pus asta pe. Și vom păstra această super-simplu. În cazul în care obiectivul la îndemână este pur și simplu acum să pună în aplicare cu Alana, acest așa-numitele spun bloc, aici e cum o să funcționeze. Am avem-- să-i zicem un argument sau parametru, este într-adevăr doar o foaie albă de hârtie. Și e alb la fel de fi o reminiscență din caseta de alb, în ​​care vă pot scrie cuvinte. Între timp, am de gând să merg aici. Am de gând să merg mai departe și scrie H-E-L-L-O virgulă lume. Și acum, după cum spun programator, nu face de fapt, știu cum să spun ceva. Pot veni cu cuvintele, dar eu nu fac neapărat știu cum să mă exprim verbal sau de pe ecran. Și așa cum am de gând să faceți este să luați această piesă de funcționalitate, a căror input-- sau argument, așa cum o vom numi, Am scris pe această bucată de paper-- și am de gând să-l externalizeze. Și într-adevăr, asta e rolul pe care funcționează într-un limbaj de programare poate juca. Ceva de genul cuvânt bloc pot fi externalizate pentru cineva care stie cu adevarat ceea ce ea sau el este vorba. Deci, dacă vei trece peste aici pentru o clipă, Am de gând să treacă această intrare pentru Alana, și vă rugăm să spun acest lucru de intrare. ALANA: Buna ziua, lume. DAVID MALAN: Asta este. Astfel încât să existe o funcție. Acum putem lua un pic mai mult, putem face un pas înainte aici. Pentru că a fost în mod clar underwhelming. Deci, hai sa acum converti acest lucru ceva un pic mai sofisticat. Deci, aceasta este, desigur, versiunea C. Deci, acum, dacă doriți să luați că un off, care eticheta cu numele off, și hai să te pun pe un nume nou. Dar fundamental esti joacă același rol, doar așa se întâmplă la fi numit printf acum. Povestea este, desigur, O să fi-- probabil la fel cum este underwhelming-- Va fi următoarele. Acum sunteți funcția printf. Eu sunt apelantului, sau programator, care vrea a sta pe umerii oameni în trecut ca tine, care au dat deja seama cum a de fapt scrie ceva jos. Și astfel această dată, mai degrabă decât spun că sa folosi de fapt ecran nostru aici. Deci, dacă doriți să-și intensifice pe aici, am de gând pentru a trece din nou acest drept de intrare la prietenul meu printf. Daca ai putea merge mai departe și imprima că pe ecran, pur și simplu prin tragere cu dumneavoastră degetul pe ecran negru. Excelent. Bine, deci o mulțime de suspans pentru cum că a fost de gând să se joace afară. Deci, acum, să luăm lucrurile unul notch finală, dacă am putea, după cum urmează. Deci, acesta este un program C așa cum am spus și data trecută. Și aceasta doar face ceea ce ai făcut, l afiseaza la ecran, salut, lume. Chiar dacă există în mod clar o mult de lucruri distrag atenția acolo. Dar să luăm lucrurile la un alt nivel și introduce această versiune, care amintesc a fost a treia versiune care am ajuns cu ultima dată. Și acum nu e clar două utilizări ale printf. Există două apeluri la Alana în acest caz pentru printf, dar există, de asemenea, un apel la o altă funcție. Ce este această funcție în mod clar? GetString. Putem obține mai mult de un voluntar? OK, hai sus. Care e numele tău? JAVIER: Javier. DAVID MALAN: Javier, haide sus. Deci, rolul lui Javier este pe această bucată de hârtie. Ceea ce am de gând pentru a apela generic uri. Acum, aceasta este o variabilă, este de tip șir, așa cum rezultă prin care a doua linie în mijloc acolo. Și aș vrea să te duci adu-mi un șir. În mod specific capul în jos pentru orchestra secțiune și adu-mi numele cuiva, și reveni cu o variabilă care conține această valoare. Acesta poate fi oricine vrei. Aici vom merge. În regulă, Javier este scriind numele. În regulă. Putem ghici, probabil, tot cum acest lucru se întâmplă pentru a juca. Poate că te belaboring punctul de ceea ce o funcție este de a face, dar cu toate acestea, vă mulțumesc foarte mult. Deci, Javier a revenit acest șir aici, care, nu se poate vedea destul, Jonathan este șirul pe care le-am primit. Deci, acum ce am de fapt de gând pentru a oferi la Alana, deși este ceva un pic diferit. Pentru că în această versiune a Programul, primul e precizați numele tău. Deci, primul argument Am nevoie pentru a oferi Alana cu va fi literalmente de stat numele. În regulă, atât de simplu ca și Mi-ar preda asta. Și, după cum am scrie în sus argument următor, dacă vreau să merg mai departe și de a scrie acest pe placa, să mergem mai departe și de a face exemplul finală aici pentru a face clar ce în cele din urmă trebuie să se întâmple. Deci spuneti numele tău, scrie-l spre partea de sus dacă nu te superi, doar pentru ca Avem loc pentru o linie secundă. Pentru ca ultimul lucru pe care am de gând pentru a vă oferi acum cu nu este una, dar două bucăți de hârtie. În regulă. H-E-L-L-O virgulă și apoi o linie goală. Deci, ceea ce am la îndemână Alana acum este ceva un pic diferit. Nu numai ca este ea obtinerea acest lucru, în cazul în care completați în gol reprezintă că percent-- ceea ce a fost înlocuitor ne-am folosit? Da, așa e la sută. Între timp, am de gând să treacă ei într-un al doilea argument, care este exact ceea ce Javier recuperate de la Jonathan. Deci, permiteți-mi să vă dau aceste două. Dacă doriți să, merge mai departe și de imprimare în acest sens. Ce se întâmplă în cele din urmă acum este, Alana din nou joacă rolul de printf. Javier se juca rolul getString. Așa că va fi suvenir dumneavoastră. Și în cele din urmă ce se întâmplă, în ciuda acest hello-- merge Da mai departe și virgulă. ALANA: am primit acest dar sau nu? DAVID MALAN: Da, tu amândoi au primit-o dată. Deci, ideea este că poate răsturna acum pagina să se ocupe de-al doilea de cele două intrări. Deci, aceasta este doar pentru ciocan acasă punctul că în timp ce Alana executat această linie verde aici, și apoi Javier a făcut asta pentru noi și să se întoarcă la mine ceva vom suna s, dar a fost într-adevăr doar că bucată de hârtie de propriul său. Iar acum Alana a făcut această a treia linie. Și chiar dacă toate acestea arată atât de incredibil de criptic, probabil, la prima vedere, într-adevăr este la fel de simplu ca asta. Trecerea intrări în jurul, obtinerea rezultatelor, fie fiind predat fizic înapoi ceva, sau de a vedea un efect secundar ca asta. Ceva vizual scris pe ecran. Deci, să mergem mai departe și mulțumesc Alana și Javier, care a fost aici, pentru alături de noi aici. [Aplauze] Deci, acum, să luăm de la sine cat de directă toate acestea ar putea fi. Și să procedeze la realitate face ceva în codul actual. Deci, pe ecran aici este un screenshot de așa-numitul aparat CS50. Și dacă ar fi să la, ca o 02:00, miercuri după-amiază, explica într-o oarecare prieten ce aparatul este CS50, cum l-ai defini într-o propoziție? Orice propoziție? Da? STUDENT: E ca un program de care face calculator toată lumea rula cu același sistem. DAVID MALAN: Buna! Este un program care permite tuturor calculator pentru a rula cu același sistem. Este un fel de ta copie a unei funcționare sistem ce se întâmplă la fi numit Ubuntu Linux. Și ruleaza în mod eficient în interiorul o fereastră pe cont propriu Mac sau PC, astfel încât în ​​acest fel drept din poarta în săptămâna 1, toată lumea aici, în clasa are acces la aceleași instrumente, aceeași configurație, și nu există nici un specific curbă de învățare la un Mac sau un PC, în special. Acum ne-am deschis, în interiorul CS50 aparat, luni, acest program aici. Se întâmplă să fie numit gedit. Dar asta e de fapt doar un editor grafic. E ceva de genul Notepad sau Text Editează pe Windows sau Mac OS, respectiv. Și mi-am propus că au existat într-adevăr trei părți importante la acest ecran. Partea de sus este în cazul în care ar scrie codul. Și asta e în cazul în care ne-am petrecut o mare parte din nostru trei exemple în curs de luni. Partea de jos am numit ceea ce, această fereastră negru, da? STUDENT: Compiler? DAVID MALAN: Compiler noi accesat prin fereastra. Dar, în general. Da, a fost doar o fereastră de terminal. Acesta este un termen limită de vârstă care doar descrie, în esență, o clipire prompte, care ani în urmă folosit pentru a fi pe unul dintre aceste monitoare mari de stil CRT. Dar în zilele noastre e un fel de virtuale în software-ul. Și Windows Terminal să-i ne scrieți comenzi. Este un fel de versiune simplificată a interfeței cu utilizatorul sau interfața cu utilizatorul. Nu este un grafic interfață de utilizator sau GUI, este o interfață bazată pe text sau o interfață linie de comandă. Și într-adevăr acolo în cele din urmă Am fost în stare să scrie un cod. După ce am scris un cod, deși, amintesc că am folosit această comandă. Și, după cum se nume cam sugerează, această mi permite să fac o program numit Buna ziua. Dar ceea ce a fost el de fapt face? Ei bine, make fost de a lua meu de intrare, codul sursa mea, și convertirea la ce, în cele din urmă? Cod obiect. Și cod obiect este doar o fantezie fel de a spune zero si unu. Și apoi, o dată mi-am dorit pentru a rula acest cod obiect, o dată am vrut să treacă drept de intrare pe cei zero si unu in a mea calculator creier, așa-numitul CPU sau unități centrale de procesare, Am avut de a rula programul. Dar nu a fost destul de simplu pe luni ca doar dublu clic pe pictograma ceva. Ce loc aveam să face în scopul de a rula un program? Ce a fost asta doilea comanda? Am auzit un pic slash-uri? Da, da? STUDENT: Dot slash și numele programului. DAVID MALAN: Exact. Dot slash și numele programului. Acum, ce a vrut să spună asta? Ei bine, punct este doar un mod arcane de a spune directorul curent. Orice dosar sunteți în este menționate ca, este reprezentată ca punct. Slash este doar ceea ce ai văzut în Mac OS și Windows de ani, este un separator între un director sau dosar și restul de un nume. În Windows se întâmplă să meargă înapoi, în Linux și Mac OS se întâmplă să mergi înainte. Dar e doar separatorul, asa ca este doar un detaliu sintactic neinteresant. Partea suculent este, desigur, numele programului, Buna, ziua. Și asta e ceea ce fac creat pentru noi. Este scoasă acest fișier pentru noi. Dar cum am ajuns la acest punct? Să acum ask întrebare, ceea ce a fost într-adevăr întâmplă pe aici, cel puțin cu privire la unele dintre sintaxa? Deci, într-o propoziție sau așa, cum ne-am explica aceasta prima linie care este evidențiate în verde? Care a fost prima linie a face, cu privire la programul meu? Da? STUDENT: [inaudibil]. DAVID MALAN: Spune-o din nou? STUDENT: Inclusiv și descărcarea Funcții anterioare [neauzit]. DAVID MALAN: Bine. Inclusiv, nu voi spune descărcarea, dar sa zicem inclusiv funcțiile pe care oamenii s-au scris în trecut. Și aceste funcții sunt puse în aplicare undeva în computerul meu. Cineva a scris un fișier cu ani în urmă, și care fișier este undeva în interiorul CS50 aparat, sau pe hard-disk mai general. Și astfel, această linie este în esență spune, du-te găsi acel fișier, I / O standard dot h, iar copia și lipiți conținutul său chiar aici, pe partea de sus a dosarul meu așa că nu trebuie să face acest lucru manual eu. Iar printre juiciest piese din interiorul acel fișier am pretins a fost ce funcție? Ce funcție am spus a fost declarată sau menționat în I / O standard dot h cel mai probabil? Printf, nu? Noi nu a scris printf pe Luni, el doar a existat. La fel ca Alana venit pe scenă și ea doar a existat și a știut cum să atragă ceva pe ecran, deci nu există printf pentru mulți ani. Și astfel încât acesta este modul în care am acces. Acum, dacă ne mișcăm pe aici, principal a fost ne-analog a declarat la piesa de puzzle numit când flag verde clic în lumea de Scratch. Este un fel doar a Numele implicit că oamenii a decis ar reprezenta implicit punct de intrare pentru un program. Bucată de cod de programare care este executat primul. Între timp, aceste acolade sunt un fel de forma curbată de o mulțime de aceste piese de reîncărcare galben. Ei au un fel de a îngloba un întreg grămadă de instrucțiuni împreună. Deci, doar un fel de se leagă împreună a putea funcționa aferente. printf, desigur, este o funcție care imprimă pe ecran, așa cum ne-am făcut-o. Ce despre aceste paranteze? Cum te-ai define-- chiar dacă ai nu programat înainte, dar numai pe bază de acum pe o creștere sperăm intuiție, ceea ce sunt paranteze fac pentru noi aici? Sau ceea ce sunt ei din jur? Da? STUDENT: Spun ceea ce ai de gând să imprimați cu printf. DAVID MALAN: Da, ei spun ceea ce ai de gând să imprimați cu printf. Sau, mai general, ele sunt înconjurător intrările la funcția. Deci, vă puteți gândi aproape dintre aceste paranteze ca fiind ca metalul clip pe acest clipboard. Este ceea ce ține, e ceea ce-i vor fi folosite pentru a oferi argumente în funcție, care, în acest caz se numește printf. Deci, în general, aproape orice timp ce numim o funcție, vom vedea o pereche de paranteze. Poate cu ceva în ea, ca acum, poate că nimic din ea. Dar asta e în cazul în care v-ar pune intrările sau așa-numitele argumente la o funcție. Iată un astfel de argument. Am subliniat totul între ghilimele, pentru că se pare că în acest limbaj numit C, atunci când doriți să reprezinte o string-- că este un cuvânt sau o expresie sau chiar un paragraph-- trebuie să înconjoară-o cu ghilimele duble. Citate Nu simple, ghilimele duble. Și asta este exact ceea ce am făcut aici. În același timp există un funky, Simbolul spre sfârșitul acolo. Backslash n. Ce am spus că a reprezentat? Da? STUDENT: O nouă linie. DAVID MALAN: linie nouă. Corect, tu nu faci în general lovi Enter când Dacă doriți ca programul să scuipe o nouă linie. Mai degrabă l-ai spune în mod explicit cu această piesă, desigur, arcane de sintaxă, backslash n, care Vrei o noua linie pentru a merge acolo. În cele din urmă punct și virgulă. Noi nu am vorbit într-adevăr prea mult despre acest lucru, și, de departe, acest lucru va fi otrava de unele de existență pentru prima problema set, atunci când doar nu a reușit să realizeze ai uitat ceva la fel de prost ca un punct și virgulă. Și, în general, se pune nu va rezolva această problemă. Dar ceea ce o face pentru noi, ați spune? STUDENT: [inaudibil]. DAVID MALAN: Imi pare rau? STUDENT: [inaudibil]. DAVID MALAN: finisaj o declarație. Este un fel de perioada de la la sfârșitul anului o propoziție limba engleză, întrucât, în acest limbă C se încheie o declarație. O instrucțiune de programare cod pe care doriți doar să spun, Am terminat cu asta. Acum, observați că e singurul de aici. Deci, nu doriți să obțineți în un obicei de punct și virgulă punerea după fiecare paranteză închisă. De exemplu, nu e nici unul următor de a anula, și vom reveni în viitor a ceea ce înseamnă nule. Dar, în acest caz printf este o funcție, sau o declarație a fi utilizate, și așa vrem să avem că terminal la sfârșitul de ea. Și eu iau în mod intenționat pe C. Și sincer o mulțime de limbi, cum ar fi C, C ++, Java, JavaScript, și orice număr de alte limbi au o mulțime de acestea un fel de detalii sintactice. Asta cu siguranță dacă sunteți nou la programare puteți excursie cu adevărat în sus. Și va, marca mea cuvinte, unii dintre voi va au această experiență în ore de birou sau cu întârziere pe timp de noapte de lucru la unele p-set, în cazul în care programul naibii doar nu compila, ea nu se execută, aveți nici o idee despre ceea ce sa întâmplat, se pare complet logic corect pentru tine. Și pentru că ai uitat ceva de genul lovind punct și virgulă la sfârșitul unele linii. Dar acestea sunt tipurile de lucruri pe care le de gând să învețe imediat pentru a vedea. Și într-adevăr, acestea sunt lucrurile pe care le că și TF lui CA au a fost un fel de instruiți pentru a vedea mult mai repede decât tine. Și astfel aceasta este doar de a spune, în timp ce se arunca cu capul în problema set 1 mai ales, Nu te frustrat de chestia asta. După ce fel de aclimatiza a lumii, tu începe să vadă lucruri pe care nu s-ar putea a se vedea la prima vedere aceasta prima saptamana. Deci, codul sursă este ceva de genul asta. Vrem să-l treacă în așa-numitul compilator. Și compilator ca am spus oferă ieșire cunoscut sub numele de cod obiect, așa-numitele zero si unu. Dar de acolo, ce ne da? Ei bine, ne dă aceste modele. Și din nou computerul, Intel în interiorul, înțelege aceste modele de zero si unu. Și, uneori, modelul reprezintă un număr zecimal real așa cum am văzut săptămâna trecută, uneori ea reprezintă o scrisoare cum am văzut săptămâna trecută, uneori reprezintă o instrucțiune, cum ar fi imprimarea ceva pe ecran. Deci, printf pentru instance-- ci, mai degrabă, lasă-mă înapoi. Ne-am luat de la sine că acele zerouri și cele care sunt produse de acest make comanda. Dar face nu este un compilator. Asigurați nu este un lucru la mijloc care este producătoare de zerouri și cele. Mai degrabă face este doar un foarte convenabil program numit al căror scop în viață este, în esență, să ne dăm seama cum de a compila programul. Și l-am folosi în aceste Primele săptămâni, pentru că doar ne salvează o mulțime de probleme. Dar ceea ce face este cu adevărat face atunci când compilați salut, este, așa cum am spus și data trecută, este cauta pe hard disk sau în dosarul curent, pentru fișier numit ceea ce, aparent? Hello.c, corect? Asta e doar un fel de convenție. Este arbitrar, ci că așa stau lucrurile. A face, dacă specificați doar numele de un program care nu există încă, o să se uite la codul sursă într-un fișier, în mod implicit înseamnă hello.c. Și în cazul în care se constată, mare. Se va converti sursa cod în cod obiect pentru tine. Dar de fiecare dată m-am lovit Enter după rularea face salut, Îți amintești văzut ultima dată un destul de mult timp și secvență criptic de alte litere albe și caracterele de pe ecran? Ei bine, asta a fost comanda real, compilator real, care a fost difuzate. Deci, compilatorul actual vom folosi de cele mai multe semestru este ceva numit zăngănit. Unii dintre voi s-ar putea s-au folosit Visual Studio înainte, sau GCC, sau orice număr de alte compilatoare. Vom folosi zăngănit. Și zăngănit ne permite de a converti de fapt că codul sursă de codul obiect. Ce face de fapt acest lucru înseamnă în practică? Ei bine, lasă-mă să merg într-unul din Dosarele mele din ultimul timp. În interiorul aparatului CS50. Și lasă-mă să mergeți mai departe și de a crea această același fișier, includ standard de I / O dot h. Void main Int. Și ne vom întoarce în viitor la ce int mijloace și ce înseamnă nule. Dar pentru acum hai sa facem salut backslash lume n, doar ca am facut pe bord. Lasă-mă să salvați acest fișier numit hello.c. Și acum, dacă vreau să compileze acest Am putea-- să-mi mări alerga in-- face salut intra. Și acest lucru a fost din nou care linie foarte criptic. Dar acum, cel puțin un cuvânt probabil sare la tine. Zăngănit este acea linie am văzut înainte. Acum, există o mulțime de alte lucruri sincer că ne vom flutura mâinile noastre la ziua de azi. Dar există câteva subgrupuri, câteva personaje din aici care sunt de interes. Dar am de gând să mergeți mai departe și de a face acest lucru. Mă duc la primul termen salut, doar pentru a dovedi că acest lucru este de lucru așa cum a fost luni. Dar acum am de gând pentru a șterge programul. Și la fel ca am avut aceste nume scurte ultimul timp, comanda pentru îndepărtarea ceva este rm, elimina, introduceți. Vei obține unele întrebări destul de criptic. Greu de crezut că se poate face chiar această întrebare greu de înțeles. Dar îndepărta salut fisier obisnuit doar mijloace nu doriți să ștergeți salut. Și eu pot merge mai departe și de tip y pentru da, Enter, iar acum a dispărut. Ce înseamnă acest lucru acum, dacă am șterge ecranul, este că în loc de face face hello-- tine Știi ce, mă pricepi la asta. Am de gând să ruleze compilatorului eu. Nu am nevoie de ceva program pentru a dau seama ce dosarul meu se numește. I-am scris hello.c, am Știi ce se numește, Sunt clar capabil de dactilografiere care. Așa că am de gând să merg mai departe și nu zăngăni hello.c Enter. Pare să funcționeze. Și nu există nici o ieșire suplimentară, deoarece zăngănit este compilator. Este ceea ce conversia Codul sursă pentru zero si unu. Deci, dacă eu fac acum dot slash salut Enter, hm. Noul mesaj de eroare de astăzi. Deci, bash este doar numele de clipește prompte pe care le utilizați. Aceasta este o simplificare brut, dar de acum asta e tot ce este, este prompt clipește. Și de aceea e tipa la noi. Nu există un astfel de fișier sau director este un pic mai simplu. Dar cu siguranță am făcut asta de cod obiect. Dar captura este, că dacă tastați comanda pentru a lista conținutul acestui director, care este ceea ce? E pentru listă. Există o grămadă de lucruri în aici, unele dintre care a venit cu aparatul, ca dosarul meu Desktop, Descărcări dosar, dosarul Dropbox, și toate chestia asta. Dar ceea ce este interesant este hello.c, care Am creat un moment în urmă cu gedit. Și ceea ce este cel mai ciudat caută nume aici, Poate că nu am făcut-o a se vedea ultimul timp, la toate? a.out, corect? Deci, înapoi în a doua zi, ea că a fost doar atunci când a decis compilați un program pentru prima dată, și nu se specifică numele a unui fișier, hai să o numim. Și a.out înseamnă doar acest lucru a fost ieșirea compilatorului. Deci e un nume oribil pentru un program. Dar, prin faptul că logica, dot slash pentru directorul curent, slash a.out, ar trebui să însemne că este, de fapt, mi salut program de lume. Acum, un pic de warm up exercițiu, de asemenea. Dacă vreau să redenumi acest fișier, se dovedește că muta un fișier de la un nume la altul. A.out Deci mv, și apoi am poate numi salut Enter. Deci, aceasta este o comandă Linux. DOS a avut cu ani în urmă, Windows are o fereastră de terminal de un anumit fel, care arată în acest fel, Linux și Mac computere au acest prompt să clipească. Chiar dacă cele mai multe dintre noi, probabil, foarte rar, dacă vreodată, utilizați-l. Dar ceea ce am făcut este rulat un Programul, al cărui nume este mv, și l-am prevăzut cu două argumente, ca să spunem așa. Două intrări. a.out este numele original. Bună ziua este noul nume. Deci, dacă eu fac acum slash punct Salut, Enter, care există. Și dacă eu fac dot a.out slash, la ce te astepti eu ar trebui să vedeți? Bash, nu un astfel de fișier sau director. Pentru că tocmai am redenumit. Deci, acest lucru are un pic de Noțiuni de bază utilizate pentru. Dar problema set 1 caietul de sarcini va fi cu adevărat țin de mână prin o parte din această minutae. Deoarece aceasta este o complet distragere a atenției intelectuală de la cele mai interesante idei de la mână, care este de fapt crearea ceva din cod. Dar hai sa facem o modificare acum la acest program. Reamintim că ultima dată când am făcut ceva în acest fel, afirma printf numele. Și într-adevăr, tocmai am făcut acest pe marele ecran de acolo. Și apoi am făcut șir s se GetString Paranteză deschisă, aproape paren. Și paren doar stenografie notație pentru paranteză. Deci, nu getString ia nici un argument? Nu intrări Nu, dar are nevoie de paranteze, pentru că asta e ceea ce delimitează chemarea de o funcție. Așa că am de gând să mergeți mai departe și să încerce să rula compilatorul pe acest program acum. Zăngănit hello.c, pentru că eu nu s-au schimbat numele său de acum. Și am o grămadă de erori. Să micșora aici. Dacă aș defila din nou, cum am spus data trecută, la primul aceeași eroare, că am luat ultima dată. Pe linia 6 din hello.c am avut o șir identificator nedeclarate, am să spun standard? Nu am făcut. Pentru că ceea ce greșeală au făcut eu în acest programul, dacă vă amintiți de la ultima dată? Da, avem nevoie de așa-numita formare roți că vom folosi doar pentru câteva săptămâni. Dar am nevoie să se precizeze că, de asemenea, undeva în interiorul aparatului, este un fișier care am scris doar câțiva ani în urmă. In interiorul care sunt funcții ca aparent getString. Deci, acum, dacă mă întorc aici, zoom in, și re-rula zăngănit hello.c. La naiba, o altă eroare. Dar noi nu am mai văzut asta înainte. Asta e un pic mai mult ezoteric să dau seama. Dar acest lucru este în mod deliberat pe ecran, pentru că am vrut să spun această poveste. Când compilați hello.c, la fel ca imaginea de la înainte de a sugerat, sunteți de conversie numai că Codul sursă pentru zero si unu. Acum, personal CS50 în urmă cu câțiva ani a scris CS50.h, și un fișier corespunzător, CS50.c. Și noi, în urmă cu câțiva ani, compilat aceste fișiere într-un fișier care se întâmplă să fie numit CS50.o. Sau poate fi redenumit-o câteva lucruri diferite. Dar asta e un mod simplu de gândire despre el. Așa că ne-am compilat de CS50 bibliotecă în zero si unu. Dar nicăieri am specificat care doresc să combine zerouri mele și cele pentru lumea mea salut program cu zerouri și cele că personalul CS50 creat de câțiva ani în urmă într-un singur program complet. Tot ce am specificat de scris hello.c zăngănit este compila hello.c. Eu nu am spus zăngănit de link-ul în zerouri și cele că personalul CS50 creat pentru tine ceva timp în urmă. Deci, este un fix simplu, lovești l pentru link-ul, CS50. Și vom vedea din nou acest Înainte de mult timp din nou și din nou. Dar observați acum nu a existat nici o plângere. Deci, acum, dacă am alerga slash dot salut, acum e de lucru. Cu toate că este un pic înșelătoare din moment ce am recreat ce dosar? a.out. Așa că lasă-mă înapoi pentru o clipă. Programul ne-am compilat are trei linii de cod. Când am fugit salut lume, salut o clipă acum, eu nu am văzut de stat numele. Și asta pentru că am fugit versiune veche a programului. Dar dacă se execută într-adevăr punct a.out slash Introduceți, precizați numele tău, Rob, salut, lume. Hm. Asta e un fel de bug. Probabil a vrut să spună Rob, nu? Deci, care este fix aici în cod. STUDENT: [inaudibil]. DAVID MALAN: Exact. Asa ca am nevoie doar pentru a face ca tweak finală așa că am trece la un substituent, ca o completați în gol, cum am facut-o acum o clipă. Dar la sută s este acum că completați în gol. Deci, în cele din urmă să dezvăluie ultima detaliu, astfel încât nu există nici o magie. Am de gând să merg mai departe și de a scăpa de Hellow. Am de gând să merg mai departe și de a scăpa de a.out. Deci, acum nu am nici programe, doar codul sursă. Și am de gând să ruleze un comandă ceva mai lung, zăngănit lovești o salut hello.c bord LCS50. Acum, acest lucru este incepand de la un fel de a merge într-o ureche și a ieșit pe cealaltă, probabil. Dar tachineze pe langa ce acest este de a face. Zăngănit este compilator, linie LCS50 în mod deliberat la sfârșitul face ceea ce într-o propoziție? Link-uri către biblioteca CS50. Apucă zerouri și cei care personalul făcute și le crams în propriul meu program de. Deci, ultima întrebare la îndemână este, ceea ce este o liniuță salut, probabil, face, chiar dacă nu ați mai văzut această sintaxă înainte? Scoate un program care este nu numit implicit a.out. Mai degrabă este numit salut. Deci, acum nu există nici a.out. Nu există un astfel de fișier sau director, pentru că i-am spus în mod explicit numesc acest program de salut, astfel încât Acum am posibilitatea să tastați un nume de genul asta și l-au comporte. Acum sincer, băiat este că neinteresant pentru a avea să-și amintească toate că mic punct caracteristic, corect? Deci, să mergem mai departe și scăpa de salut din nou. Și să se întoarcă acum la o lume în care este suficient să spun face salut. Dar asta e magia care face este de a face pentru tine, asta e plictiseala asta se face pentru tine. Și, ca programele noastre și problemele devin mai complexe, face va fi cu adevărat prietenul tău. Pentru că nu prea mult timp de acum ne vom de a avea programe care sunt scrise nu cu un fișier, dar mai multe fișiere, și să va automatiza procesul de compilarea toate acestea pentru noi împreună. Deci, acum a imprima. printf este în interiorul acestui fișier, standard, I / O dot h, pe care le-am văzut înainte, dar e mai mult decât atât printf. Există n backslash, dar există, de asemenea, o grămadă de alte secvențe escape. Și secvență de evadare este doar un mod fantezist de a spune ceva care începe cu un backslash, nu o bară oblică, un backslash, și face ceva special. Și nu vom insista pe cele mai multe dintre acestea, dar de ce este acolo backslash citat dublu, crezi? De ce există această secvență ciudat de caractere, citat dublu backslash, de ce s-ar putea ca fi util? STUDENT: [inaudibil]. DAVID MALAN: Exact, corect? Gandeste-te la programul nostru hello world pe care le-am văzut de câteva ori acum, de fiecare dată când am văzut că hello world Programul care le-am avut ghilimele în interiorul de care este salut virgulă backslash lume n. Dar gandeste-te la tine, Ce se întâmplă dacă de fapt a vrut să imprime un ghilimele? Primul instinct ar fi, eu nu fac știu de ce s-ar putea dori să facut-- aici, putem fi un pic pasiv agresiv, salut prietene. S-ar putea dori să facă așa ceva. Dar de ce este acest lucru acum problematic? Ignorarea citatele buclat deoparte ca keynote făcut pentru noi în mod automat. De ce este aceasta o problemă? Exact. Pentru ca avem ca 4 ghilimele. Ei bine primul probabil merge cu al doilea strat, și, poate, al patrulea merge cu al treilea, sau, vreau să spun că nu sunt chiar sigur, nici nu este computerul va fi. Calculatoare din nou, compilatoare din nou, sunt destul de prost. Ei vor face doar ceea ce spune-le să facă. Și dacă nu ești lipsit de ambiguitate ei sunt, probabil, va arunca o eroare. Dacă nu ești lipsit de ambiguitate cu privire la modul de face un sandwich cu unt de arahide si jeleu lucruri ciudate s-ar putea ajunge. Este aceeași idee. Acum este suficient să spunem că este alte secvențe escape, dar vom veni cu cele înainte de mult timp. În esență, acestea evadare secvențe reprezintă ceva care s-ar putea să nu fie în măsură prea ușor de la tastatura, fără a confunda calculator. Acum, între timp ne-am substituenți în printf. Procent d, care poate fi de asemenea scrisă în aproape toate cazurile, ca la sută i, este un substituent pentru ce tip de date? Ce tip de valoare? Un număr zecimal. Deci, de fapt, vom începe folosind procente i că este mai simplu, ca un întreg. I la sută. Un întreg care se întâmplă să fie zecimal. La sută s-am spus deja a fost un substituent pentru un șir. Ceea ce este doar un cuvânt, o frază, un paragraf, un eseu, indiferent de. Este o secvență de caractere de unele lungime. Și vom vedea în scurt timp unele dintre aceste altora. Dar la sută c este pentru un singur caracter. Procentul f este o plutitoare număr punct, ca un număr real care are un punct zecimal în ea, care este, desigur, nu un întreg. Și există un întreg grămadă de alții, de asemenea. Intre timp în C, și într-o mulțime de limbi, Avem diverse tipuri de date. Diferite tipuri de sticlă boluri dacă vrei. Bolul am folosit ultima dată a fost de mingi de ping-pong, dar putem stoca, de asemenea, diferite valori, cum ar fi caractere și șiruri și numere întregi într-un recipient, ca o variabilă, iar C are acestea. Char este tipul de date, tipul de variabile, în care puteți stoca un caracter. Float este un tip de variabilă în care se pot stoca un număr real. Int este, desigur, pentru un int. Și destul de ridicol numit un lung lung este locul unde se pot stoca în esență, un număr foarte lung, cu mai mai multe cifre apoi un tipic poate stoca int. Dar vom reveni la asta înainte de mult timp. În CS50 dot h între timp cealaltă fișierul header că am văzut un cuplu ori în utilizare, există alte două tipuri de date care nu există în C tipic. Una dintre ele este șir, și vom vedea în câteva săptămâni ce sfori într-adevăr sunt sub capota. Și una este bool. Și o bool este o variabilă care poate lua doar pe anumite valori. Și doar pe baza de săptămâna trecută explicație de Scratch, și, mai recent, C, ce-ai ghici sunt cele două valori posibile pentru unii container care este de tip bool? Da și nu. Unul și zero. Adevărat sau fals. Și într-adevăr, este ultimul care tinde a fi convențional într-o programare limbă, spune ceva cum ar fi adevărat sau fals. Între timp, biblioteca CS50 vine cu un buchet de funcționalitate că personalul a scris pentru tine, în afară de doar obtinerea unui șir. Am scris în funcții de avans care poate obține un număr întreg de la utilizator, obține un singur caracter, obține un flotor, care este doar un număr cu virgulă. Ia un lung lung, un adevărat valoare mare din partea utilizatorului. Așa că ne-am văzut doar acest lucru în acțiune sub formă de getString. Dar prin aceste funcții va fi în curând posibilitatea de a scrie programe care primesc input de la utilizator. Între timp, ia în considerare acest Programul, și ia în considerare cum am putea începe acum pentru a adăuga a acesteia cu noi constructe. Un tur rapid vârtej de vânt si apoi ne vom uita la un scris ceva programe de manual noi înșine. De acum înainte, dacă vrem să pună în aplicare o condiție, ea nu va arăta ca o drăguț piesa de puzzle frumos. O să arate un pic mai mult arcane. Dar acest lucru este canonice Structura unei afecțiuni în C. Cuvântul dacă, două paranteze, în interiorul căreia Va fi un fel de expresie booleană. Acum slash slash la mijloc, aceasta este la momentul fel de cod pseudocod înlocuitor. Dar, mai corect, orice linie de cod în C, care începe cu slash slash este un comentariu. E ca o notă de lipicios pe care le-ar putea pune pe un eseu, tipărită pe hârtie. Este o notă de tine. Nu are funcțională impact asupra programului. Este un fel de memento, e propriul tău documentație cu privire la ceea ce se întâmplă. Deci, face acest lucru în acest moment este un fel de înlocuitor pentru orice e înăuntru din aceste acolade în cele din urmă este de gând să facă ceva. Între timp, aveți două furculițe în rutier, o dacă mai construi asa. Poți dacă, elseif, altfel. Acum e demn de remarcat, mai ales dacă ați căutat pe Google în jurul on-line pentru resurse din curiozitate, sau dacă te iau una dintre cursului carti recomandate pe C, veți vedea că oamenii au o mulțime preferințele de diferite de modul în care de a se exprima în cod. Unii oameni le place să pună acolade cum am făcut aici. Unii oameni le place să pună cret se pregătește de exemplu aici. Unii oameni le place să pună elses aici și apoi aceasta pe aici. Există un număr de moduri de a Codul de scriere, și nici unul dintre ei au dreptate în sine. Deși există câteva care sunt destul de greșit. Dar există nu-- dacă acest lucru este în cele din urmă o dezbatere foarte religios. De fapt, una dintre cele mai enervante lucruri despre informatica este modul dogmatic oamenii de stiinta de calculator poate fi. Și veți găsi în timp ce chiar voi dezvolta preferințele personale ca la cum ar trebui să arate codul. Nu doar se comporta, nu creează doar ieșire, dar cum ar trebui să arate estetic. Deci, ce vom face este a vă ghida de-a lungul drumul spre, cel puțin pentru moment, un stil CS50 standard care cel puțin păstrează lucrurile uniform și ușor de citit. Dar mai mult pe cei distincții înainte de mult timp. O expresie booleană în C, dacă a vrut să spună dacă această condiție este adevărată și această altă condiție este adevărat, nu scrie cuvântul și, așa cum ați face în limba engleză. Utilizați în schimb ampersand ampersand, pentru motive pe care le vom întoarce la. Dacă vrei să spui sau să utilizați două bare verticale, care pe o tastatură US este în general mai sus Enter lângă cheie la backslash. Iar acest lucru înseamnă doar dacă această condiție sau această altă condiție este adevărat acest lucru. În același timp există această nebunie, care veți avea ocazia de a folosi din cand in cand. Dar este doar o alternativă modalitate de a te exprima. Acest lucru, de acum, să stipulează, că e doar un alt mod de a exprima funky, în cazul în care, elseif, elseif, elseif, elseif. E doar formatat din punct de vedere din cazuri, în cazul în care pur și simplu enumera valorile care ar putea să doriți să verificați. Între timp, bucle. Am văzut o comparație a Scratch cu o buclă. Și am de gând să facă cu mâna mea la ceea ce înseamnă că fiecare din aceste lucruri. Dar observați că o buclă va foarte de multe ori începe cu cuvântul cheie pentru. Sau se va începe cu acest timp de cuvinte cheie. Sau se va începe cu cuvântul cheie face, și se încheie cu acest timp de cuvinte cheie. Dar ceea ce suntem pe cale de a vedea este mai multe lucruri de genul asta. Aici este, în general, în C, cum s-ar putea declara o variabilă și da o valoare. În C nu este suficientă, cum ar fi în Scratch, tu doar spune-mi o variabilă numită ceva. Trebuie să-i spun C, și spune- compilator ta, mai precis, ce tip de valoare nu voi doresc să pună în castron de sticlă. Este un întreg? Dacă este așa, va trebui să spune literal int și apoi numele variabilei, apoi un punct și virgulă. Dacă ați fi dorit în loc de coarde și numit ea e ca am facut codul meu aici, astăzi, v-ar spune și virgulă șir uri. Dacă doriți să-i dea o valoare puteți utiliza apoi semnul egal, altfel cunoscut sub numele de operator de atribuire. Și observați cum fiecare din aceste linii de cod are virgulă la sfârșitul acesteia. Dar sincer acest lucru doar arată un pic urât. De ce nu pot să spun la calculator, da mi-o variabilă și inițializa-l la zero. Asta este, da-mi un castron de sticlă gol. În timp ce puteți. Și astfel unul din hotărârea va cheama sa trebuie să facă stilistic în timp este, scrii codul ca aceasta, sau ai un fel de-l curețe și impresiona oameni de scris două linii ca doar unul. Și acest lucru ar fi considerat în general, un mod mai elegant de a scrie codul stilistic. Funcții noi suntem desigur văzut. Ei au de gând să ia acest format. Numele unei funcții, unele paranteze, iar apoi poate că unele chestii interior. Sau s-ar putea vedea utilizări ale lateral funcții multiple by-side, cum ar fi ceva de genul asta. Acum, ca o tangentă, nu această glumă face acum sens? [Râsete] Asta nu înseamnă că e amuzant, dar ea poate are un sens mai puțin. Deci, acum, să mergem în Aparat CS50 pentru o clipă. Și lasă-mă să deschid un teaser aici. Și într-adevăr, unul din motivele pentru introducerea catalog IKEA și clipește imaginea de iPhone un pic în urmă a fost de a lega de fapt împreună fapt care în urmă cu doar câțiva ani, în 2007, această bucată de cod a fost eliberat, care a fost una dintre prima implementare de o bucată de software care face ceea ce se numește jailbreaking. Pentru cei nefamiliarizati, jailbreaking ceva de genul un telefon sau un iPhone înseamnă, în esență, imaginind cum să facă lucruri cu ea că societatea care a făcut-o nu a intenționat. Ca doriți să instalați anumite software-ul care nu este în App Store, jailbreaking telefon care faci lucruri de genul asta si mai mult. Dar ceea ce a fost distractiv în 2007-- și acolo a fost zeci de versiuni diferite de aceste lucruri de atunci, în tot felul de languages-- este că acest program de aici, numit iUnlock, a fost scris de fapt în C. Și așa am tras în sus codul sursă pentru acest lucru, doar la fel de a vă arăta o parte din similitudinile cu construcțiile am discutat până acum. Acum e mult mai complexitate aici decât am văzut deja în clasă. Lasă-mă să derulați în sus doar un pic aici. Dar observați these-- bine observăm câteva lucruri-- dar observați aceste rânduri aici, inclusiv standard de I / O dot h. Și all-- linia 24, te rog observa I / O standard dot h și o grămadă de alte Fișierele care se pare că alte persoane s-au scris. Și dacă ne-am defila în jos, prin acest, mic arbitrar, observa eu ​​nu știu cum să scrie toate acestea eu neapărat încă, dar nu e cazul. Deci, se pare că aceasta are o sucursală. Și dacă am defila în jos un pic în continuare există un alt dacă. Dacă am derulați în sus, cred în jurul linia 100 am vazut pentru. Deci, eu nu sunt destul de sigur cum funcționează încă, dar aceasta este o buclă pentru care se va lasă-mă repeta un numar de ori. Și dacă am derula toate drumul spre partea de jos Văd că există o funcționa aici numit principal, iar unele credite suplimentare pentru plăcerea dvs. de lectură. Deci, aceasta este doar pentru spun-- și vom pune acest online, printre sursă cursului cod astazi-- că chiar unii dintre aceștia Dispozitivele pe care le iau pentru a acordat, la sfârșitul zilei ești încă utilizarea acestor constructe de bază pe care le-am fost introducerea deja până acum. Asta e destul de asta. Bine, deci acum hai construi ceva. Să mergem dincolo de așa ceva hello.c, și să deschidă acest lucru, să scrie acest program aici. Am de gând să merg mai departe și Trimite un program numit adder.c, al cărui scop în viață va fi ca primul meu calculator super-simplu care adaugă doar o pereche de numere. Nu pentru că este un greu problemă, dar pentru că mi permite de a lega acum împreună o serie de lucruri. Așa că am de gând să merg mai departe și să includă I / O standard dot h și CS50 punct de ore. Am de gând să spun void main int. Și, din nou în viitor vom reveni la ea în acest context și în mijloace nule. Și acum am de gând să spun ceva ca printf, da-mi un întreg. Și acum pe a doua linie mea, cum pot exprima eu astfel de că vreau să declare o variabila care va stoca un int? Literalmente ce tip I dacă vreau să crea o variabilă care păstrează un int ai spune? int un egal getint. Sigur, astfel încât funcționează. Și doar pentru consistență cu codul veți a se vedea on-line, lasă-mă să schimbare aceasta a x, doar pentru că x este un nume de variabilă comună de a utiliza, cel puțin în algebra. Acum, lasă-mă să merg mai departe și nu printf din nou. Dă-mi un alt număr întreg. Și acum am de gând să fel a învăța de la acel model, Am de gând să spun int y ajunge la getint. Iar noi nu am folosit Getint înainte, dar doar ca getString merge și devine un șir, ca Javier făcut de public, nu la fel de getint începe să clipească prompt. Și în mod eficient de așteptare pentru utilizator să-i dea un întreg, prin tastarea în și apăsarea Enter. Acum, în cele din urmă am de gând să fac aceasta, printf suma de-- și lasă-mă să acum-- de lux sută la sută și i i este prezent i exclamare punct backslash n. Și ce crezi că am de gând să pune în prezent ca intrări suplimentare la printf? Nu vreau să spun literalmente citez x încheiat citatul. Vreau sa clasă în x și atunci, iar acum sa trecem de lux și hai să presupunem putem face ceea ce ne dorim. Ce vrei să spui mai departe? x plus y. Și într-adevăr, care va lucra. Este limbajele de programare minim nu înțeleg aritmetică de bază, și astfel aceasta ar trebui, de fapt, locul de muncă. Așa că lasă-mă să merg mai departe și fac vipera în fereastra mea alb-negru aici, Enter. Linie Cryptic dar nici o eroare mesaj, așa că e bine. Dot slash vipera, da-mi un număr întreg, 1. Dă-mi un alt număr întreg, 2. Suma de 1 și 2 este 3. Bine, deci o destul de banal Programul, dar ceea ce a facut-o? Mi-a permis să folosească o funcție numesc aici, suna o altă funcție aici, două apeluri la getint, o al treilea apel la printf, și apoi utilizarea acestor substituenți. Deci, e un pic mai mult sofisticat decât data trecută. Dar dacă vreau să a obține un pic crescator? Lasă-mă să mergeți mai departe și acum face acest lucru. Lasă-mă să mergeți mai departe și de a crea o nou fisier numit condițiile de la zero. Și am de gând pentru a salva de ceva timp, de dragul clase și doar lipiți în care cod ca punct de plecare. Și acum eu sunt doar de gând să pună ceva nou aici, în mijloc. Deci, printf Aș dori un întreg vă rog. Și tot acest cod este disponibil pe site-ul cursului, nu ai nevoie de toate de tip afară în clasă, dacă nu ar fi mai degrabă. int, iar acum am de gând să folosi, în loc de x și y, Am de gând să utilizeze n, care este probabil cel mai comun nume pentru un întreg într-un program de calculator. Și acum vreau să fac o mic judecata aici. Mă duc să văd dacă n este mai mare decât 0, atunci Am de gând să spun Hopa printf--, printf-- ai ales un număr pozitiv, exclamare punct backslash n. Închide asta. Altfel am de gând să imprima printf ai ales un număr negativ. Acum, înainte de a țipa la mine, Să rula acest program. Lasă-mă să plec de aici. Și cum pot compila un program de denumit condiții liniuță 0? Asigurați condiții de bord 0. Un fel de nume stupid, dar-- la naiba. OK, clipă de predare bine. De ce a rupt asta? Ce am numi accidental acest dosar? Puteți fel de deduce din fila aici. Deci, nu e rău că am a făcut acest lucru, deoarece aceasta se va întâmpla, probabil, pentru unii dintre voi. Așa că am numit accidental meu Codul sursă stare 0. Dar codul sursă de convenție ar trebui fie într-un fișier numit condiție 0 liniuță c, sau orice punct c. Așa că lasă-mă să repar asta. La fel ca Microsoft Word pot merge în sus la Salvare ca și condiție face 0 puncte c. Acum, doar pentru a fi îngrijit eu sunt O să mergeți mai departe și scoate stare 0, care era vechiul meu versiune. Și acum să facem stare 0, Enter. OK, se pare bun. Stare 0, Enter. Aș dori un întreg vă rog, 50, ai ales un număr pozitiv. Acum, ce zici de negativ 50? Ai ales un număr negativ. Dar acum, 0. Destul de sigur 0 nu e negativ. Deci, aceasta este un fel de eroare logică. Cum pot remedia acest lucru? Altfel, dacă n este mai mic decât 0, face acest lucru, altfel putem avea o filială trei căi aici, printf ai ales 0. Deci, acum, dacă am rulați din nou acest Programul, după compilarea ea din nou cu marca, iar acum rulați din nou stare 0, ceea ce voi vedea aici este 0 îmi dă ca ieșire. Deci, unde mergem cu asta? Ei bine, e foarte ușor să piardă din vedere din pădurea de copaci. Și astfel ne permit să încheie cu acest video 2 și jumătate minut care în cele din urmă este un pic de un anunț de la Google, dar că este într-adevăr o dovadă a ceea ce chiar folosind aceste clădire de bază Blocuri care le putem face în cele din urmă dată avem un pic de programare savvy sub centurile noastre. [MUSIC JOC] SAROO Brierley (voce): A fost acum 26 de ani, și am fost doar pe cale de a transforma 5. Am ajuns la gară și ne-am urcat trenul nostru împreună. Fratele meu tocmai a spus că voi stai aici, și mă voi întoarce. Și m-am gândit, bine știți, Am putea la fel de bine du-te la culcare și el va trezi doar mă. Și când m-am trezit următoare zi, întreaga transportul era gol pe un tren fugar, o fantomă tren-mi iau nu stiu unde. Am fost adoptat la Australia, la o familie australian. Și mama a decorat mea cameră cu harta de India, care și-a pus lângă patul meu. M-am trezit în fiecare dimineață văzând că harta, și, prin urmare, Într-un fel păstrat amintirile în viață. Oamenii ar spune, tu ești încercarea de a găsi un ac in carul cu fan, Saroo nu vei găsi. Aș fi străfulgerat de locurile pe care le folosit pentru a merge, se aprinde intermitent de familia mea se confruntă. Nu a fost imaginea mamei mele, a sta jos cu picioarele încrucișate, uitam doar să plângă. Viața este atât de greu. Asta a fost comoara mea. Și mă uitam la harta Google și dat seama că este Google Earth, de asemenea. Într-o lume în care te-ar putea mări în, Am început să avem toate aceste gânduri și ce posibilități că acest lucru ar putea face pentru mine. Mi-am spus, știi, ai Are toate aceste amintiri fotografice și repere de unde ești, și Știi ce orasul arata. Acest lucru ar putea fi o aplicație care puteți folosi pentru a găsi drumul înapoi. M-am gândit, bine voi pune un punct pe stație tren Calcuta, și o linie de rază, tu știi, că tu Trebuie căutarea în jurul acestei zone. Am un fel de dat peste aceste piese de tren. Și am început ca urmare, și Am venit la o stație de tren care reflectat aceeași imagine care a fost în amintirile mele. Totul potrivit. M-am gândit Da, am știu unde mă duc. Mă duc să lase Harta pe care o am în cap mă duc și să mă ia înapoi la orașul meu natal. Am ajuns la pragul de casa în care m-am născut. Și am plimbat aproximativ 15 de metri în jurul valorii de colț, exista trei femei în picioare exterior, adiacente. Și cea de mijloc a pășit în față, și M-am gândit, aceasta este mama ta. A venit înainte, ea ma îmbrățișat, și noi am fost acolo pentru aproximativ cinci minute. Ea a luat mâna și ea ma dus la casa și a luat la telefon, în cazul în care ea sunat sora mea și fratele meu să spun că, știți, fratele tău are doar toate dintr-o dată a apărut ca o fantomă. Și apoi familia sa reunit din nou. Totul e bine, I-am ajutat pe mama, ea nu trebuie să fie sclavii. Ea poate trăi restul de viața ei în pace. A fost un ac in carul cu fan, dar acul a fost acolo. Totul e acolo. Tot ceea ce avem în lume este de la robinet a unui buton. Dar trebuie să aibă voința și determinarea de a-l doresc. [MUSIC JOC] DAVID MALAN: Minunat recomandare dulce la doar ceea ce se poate acum face cu tehnologia. Ne vedem săptămâna viitoare.